標(biāo)題: 旋轉(zhuǎn)倒立擺自動(dòng)起擺stm32源碼 [打印本頁(yè)]

作者: ltt123456789    時(shí)間: 2017-8-10 10:58
標(biāo)題: 旋轉(zhuǎn)倒立擺自動(dòng)起擺stm32源碼
很有用 測(cè)試成功
所有資料51hei提供下載:
STM32旋轉(zhuǎn)倒立擺自動(dòng)起擺源碼.rar (213 KB, 下載次數(shù): 48)


stm32單片機(jī)主源程序如下:
  1. #include "sys.h"
  2. u8 Flag_Stop=0,delay_50,delay_flag,Flash_Send,Way_Turn;         //停止標(biāo)志位 50ms精準(zhǔn)演示標(biāo)志位
  3. int Encoder=10000,Position_Zero=10000,Velocity;            //編碼器的脈沖計(jì)數(shù)
  4. int Moto=0;                                   //電機(jī)PWM變量 應(yīng)是Motor的 向Moto致敬        
  5. int Voltage,Data_Show,Data_Show2;                                //電池電壓采樣相關(guān)的變量
  6. float Angle_Balance,Last_Angle_Balance,D_Angle_Balance;                        //角位移傳感器數(shù)據(jù)
  7. float Balance_KP=50,Balance_KD=244,Position_KP=25,Position_KD=600;  //PID系數(shù)
  8. float Menu=1,Amplitude1=1,Amplitude2=10,Amplitude3=1,Amplitude4=10; //PID調(diào)試相關(guān)參數(shù)
  9. u16 PID_Parameter[10],Flash_Parameter[10];  //Flash相關(guān)數(shù)組
  10. u8 Flag_OLED,State,Balance_Ratio=0;  //State是倒立擺狀態(tài) 1:倒立狀態(tài)  0:非倒立狀態(tài)
  11. int main(void)
  12. {
  13.         Stm32_Clock_Init(9);            //=====系統(tǒng)時(shí)鐘設(shè)置
  14.         delay_init(72);                 //=====延時(shí)初始化
  15.         JTAG_Set(JTAG_SWD_DISABLE);     //=====關(guān)閉JTAG接口
  16.         JTAG_Set(SWD_ENABLE);           //=====打開(kāi)SWD接口 可以利用主板的SWD接口調(diào)試
  17.         delay_ms(1000);                 //=====延時(shí)啟動(dòng),等待系統(tǒng)穩(wěn)定
  18.         delay_ms(1000);                 //=====延時(shí)啟動(dòng),等待系統(tǒng)穩(wěn)定 共2s
  19.         LED_Init();                     //=====初始化與 LED 連接的硬件接口
  20.         EXTI_Init();                    //=====按鍵初始化(外部中斷的形式)
  21.         OLED_Init();                    //=====OLED初始化
  22.         uart_init(72,128000);           //=====初始化串口1
  23.   MiniBalance_PWM_Init(7199,0);   //=====初始化PWM 10KHZ,用于驅(qū)動(dòng)電機(jī)
  24.         Encoder_Init_TIM2();            //=====初始化編碼器(TIM2的編碼器接口模式)
  25.         Angle_Adc_Init();               //=====角位移傳感器模擬量采集初始化
  26.         Baterry_Adc_Init();             //=====電池電壓模擬量采集初始化
  27.         Flash_Read();                   //=====從Flash里面讀取參數(shù)
  28.         Timer1_Init(49,7199);           //=====定時(shí)中斷初始化
  29.         while(1)
  30.                 {      
  31.                                 DataScope();                    //===上位機(jī)
  32.                                 delay_flag=1;                    //===50ms中斷精準(zhǔn)延時(shí)標(biāo)志位
  33.                                 oled_show();              //===顯示屏打開(kāi)                  
  34.                                 while(delay_flag);        //===50ms中斷精準(zhǔn)延時(shí)  主要是波形顯示上位機(jī)需要嚴(yán)格的50ms傳輸周期                                          
  35.                                 if(Flash_Send==1)         //===寫(xiě)入PID參數(shù)到Flash,由按鍵控制該指令
  36.                                 {
  37.                                         Flash_Write();                //===把參數(shù)寫(xiě)入到Flash
  38.                                         Flash_Send=0;                  //===標(biāo)志位清零
  39.                                         Flag_OLED=1;            //===顯示標(biāo)志位置1 在顯示屏上面顯示Data Is Saved的字樣
  40.                                 }                                                        
  41.                 }
  42. }
復(fù)制代碼





作者: audia8    時(shí)間: 2019-3-15 00:44
請(qǐng)問(wèn)能自動(dòng)起擺嗎?
作者: audia8    時(shí)間: 2019-3-15 01:24
給你點(diǎn)個(gè)贊




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1