软件:磁悬浮功能实现的主要代码与STM32F103CBT6可执行文件 电路:原理图与PCB文件 模型:3D模型文件与3D打印机可执行文件
1.霍尔传感器中,立插式的使用的是DRV5053VAQLPG / TO-92S,卧贴式的使用的是DRV5053VAQDBZR / SOT-23,原理图和PCB中霍尔传感器显示的是HX6286UA,实际并没有使用HX6286UA,只是使用了HX6286UA的封装。
2.立插式的霍尔传感器焊接高度,尽量在电磁线圈的中间高度,可以尽可能减小电磁线圈对霍尔传感器的影响。
本代码根据RT-Thread操作系统风格编写,可直接移植到RT-Thread工程上,使用的RT-Thread操作系统的dsp工程涉及到一些不便透露的内容,所以就没有附带开源,这里深感抱歉。我将磁悬浮功能实现的源码公开,相信作为资深工程师或者未来将成为资深工程师的你,一定可以理解代码内容并移植到其他的工程上。
magnetic_levitation.c:磁悬浮功能实现,对GPIO、ADC、PWM、UART、TIMER外设的初始化,电磁线圈驱动函数实现,以及PID控制实现,重要数据的打印和vofa建图数据输出。
magnetic_levitation.h:GPIO、ADC、PWM、UART、TIMER等外设的宏定义和各类参数的宏定义。
main.c:LED灯驱动。
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
STM32单片机源程序如下:- #include <board.h>
- #include "usrdef.h"
- #include "app_version.h"
- #include "git_version.h"
- #include "sys_gpio.h"
- #include "sys_dev.h"
- #define LED GPIO_GET_PIN(C, 13)
- static int ota_app_vtor_reconfig(void)
- {
- SCB->VTOR = (uint32_t)((uint32_t)0x08000000 | ((uint32_t)0x5000 & (uint32_t)0x1FFFFF80));
- return 0;
- }
- //INIT_BOARD_EXPORT(ota_app_vtor_reconfig);
- static void LED_Init(void)
- {
- gpio_pin_mode(LED, PIN_MODE_OUTPUT);
- gpio_pin_write(LED, PIN_LOW);
- }
- int main(void)
- {
- uint8_t led_state = 0;
- uint64_t led_timeout = sys_absolute_time();
- LED_Init();
- while(1)
- {
- if(sys_elapsed_time(led_timeout) > 100000)
- {
- led_timeout = sys_absolute_time();
- if(led_state == 0)
- {
- gpio_pin_write(LED, PIN_LOW);
- }
- else
- {
- gpio_pin_write(LED, PIN_HIGH);
- }
- led_state = ~led_state;
- }
- task_delay_ms(50);
- }
- }
复制代码
下载:
magnetic-levitation-main.7z
(14.45 MB, 下载次数: 0)
|