軟件:磁懸浮功能實現的主要代碼與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附件中可下載工程文件)
51hei.png (107.25 KB, 下載次數: 0)
下載附件
2025-11-29 01:08 上傳
51hei.png (133.68 KB, 下載次數: 0)
下載附件
2025-11-29 01:09 上傳
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)
2025-11-29 01:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|