久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4699|回復: 2
打印 上一主題 下一主題
收起左側

飛思卡爾K60dz電磁直立車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:483530 發表于 2019-3-3 10:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
別人的程序分享一下
電磁直立省二完整程序,預賽發揮失常,開源散經驗,僅供參考,大神勿噴。芯片K60dz,程序基于野火5.0庫,control.c:直立環、速度環、方向環的控制與整合、電機控制; tiaocan.c:按鍵調參、可設置所有PID參數、陀螺儀中值、設定速度、電感歸一化; main.c:藍牙發送數據、oled顯示電感值、干簧管停車、5次1毫秒中斷

單片機源程序如下:
  1. /*
  2. *     底層庫:基于野火5.0庫開發
  3. *     作者:北華航天工業學院 秋明山車神隊
  4. *     注意:未經作者允許,請勿用于商業,可以任意轉載,但請保留作者原創
  5. *     
  6. */

  7. /***************************************************************/
  8. #include "common.h"
  9. #include "include.h"
  10. /**************************************************************/

  11. extern float Gyro_Now,g_fCarAngle;
  12. extern float OutData[4];                                                    //SCI示波器參數
  13. extern float Gyro_Now,angle_offset_vertical;                                //陀螺儀轉化后的角速度,轉化后的加速度角度
  14. extern float g_fCarAngle,g_fGyroscopeAngleIntegral;                         //融合后的角度
  15. extern volatile int     MMA7361 ,ENC03,real_angle;                          //加速度計AD ,陀螺儀AD,模塊輸出的角度
  16. extern void PIT0_IRQHandler(void);
  17. extern   void OutPut_Data(void);                                             //SCI采參數


  18. void main()
  19. {
  20.     DisableInterrupts;                                                        //禁止總中斷
  21.     LCD_Init();                                                               //顯示屏初始化
  22.     GYRO_VAL=flash_read(255, 0, uint16);
  23.     GYRO2_VAL=flash_read(254, 0, uint16);
  24.     led_Init();                                                               //LED初始化
  25.     adc_Init();                                                               //ad采集初始化
  26.     QD_Init();                                                                //編碼器初始化
  27.     uart_init (UART1, 115200);                                                //藍牙初始化
  28.     Key_Init();                                                               //按鍵初始化
  29.     //flash_init();                                                           //FLASH不要初始化
  30.     gpio_init (PTA4, GPI,0);                                                  //PTA4設置下拉
  31.     port_init (PTA4, PULLDOWN );
  32.     FTM_PWM_init(FTM0, FTM_CH1,10000,0);
  33.     FTM_PWM_init(FTM0, FTM_CH2,10000,0);
  34.     FTM_PWM_init(FTM0, FTM_CH3,10000,0);
  35.     FTM_PWM_init(FTM0, FTM_CH4,10000,0);
  36.     FTM_PWM_Duty(FTM0,FTM_CH1,0);
  37.     FTM_PWM_Duty(FTM0,FTM_CH2,0);
  38.     FTM_PWM_Duty(FTM0,FTM_CH3,0);
  39.     FTM_PWM_Duty(FTM0,FTM_CH4,0);
  40.     pit_init_ms(PIT0, 1);                                                    //初始化PIT0,定時時間為: 5ms
  41.     set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler);                       //設置PIT0的中斷復位函數為 PIT0_IRQHandler
  42.     enable_irq (PIT0_IRQn);                                                  //使能PIT0中斷
  43.     DELAY_MS(1000);
  44.     EnableInterrupts;                                                        //中斷允許
  45.    
  46.     while(1)
  47.    {
  48.      Key();
  49.      
  50.        /*#if 1
  51.         OutData[0] = g_fDirectionControlOut;
  52.         OutData[1] = g_fCarSpeednew;
  53.         OutData[2] = g_fCarSpeedleft;
  54.         OutData[3] = g_fCarSpeedright;*/
  55.      
  56.      
  57. /*        #if 1
  58.         OutData[0] = 1000*(AD[0]-AD[3])/(AD[0]+AD[3]);
  59.         OutData[1] = 1000*(AD[1]-AD[2])/(AD[1]+AD[2]);
  60.         OutData[2] = 1000*(AD[0]-AD[3]);
  61.         OutData[3] = 1000*(AD[0]+AD[3]);
  62.         
  63.         OutPut_Data();
  64.         #endif
  65. */      
  66. /*        
  67.         #if 1     //直立角度
  68.         OutData[0] = ENC03;
  69.         OutData[1] = MMA7361;
  70.         OutData[2] = angle_offset_vertical ;
  71.         OutData[3] = g_fCarAngle;
  72.         OutPut_Data();
  73.         #endif
  74. */        
  75.         
  76. /*       #if 1     //車速
  77.         OutData[0] = g_fSpeedControlIntegral;
  78.         OutData[1] = (g_fSpeedControlOutNew-g_fSpeedControlIntegral);
  79.         OutData[2] = g_fCarSpeednew ;
  80.         OutData[3] = 10*CAR_SPEED_SET;
  81.         OutPut_Data();
  82.         #endif
  83.       */  
  84.         
  85.         /*#if 1     //車速
  86.         OutData[0] = g_fSpeedControlIntegral;
  87.         OutData[1] = bianhualeft;
  88.         OutData[2] =  bianhuaright;
  89.         OutData[3] = g_fCarSpeednew;
  90.         OutPut_Data();
  91.         #endif*/
  92.         

  93.       if(Star_flag==0&&g_nInterrupt_Count==2)  
  94.       {
  95.      LCD_Fill(0x00);  //初始清屏
  96.      LCD_PrintU16(0,0,AD_average[0]);
  97.      LCD_PrintU16(32,0,AD_average[1]);
  98.      LCD_PrintU16(64,0,AD_average[2]);
  99.      LCD_PrintU16(96,0,AD_average[3]);
  100.      LCD_PrintU16(0,2,AD[0]);
  101.      LCD_PrintU16(32,2,AD[1]);
  102.      LCD_PrintU16(64,2,AD[2]);
  103.      LCD_PrintU16(96,2,AD[3]);
  104.      LCD_PrintFloat(50,4,g_fCarAngle);
  105.       }

  106.    }
  107. }

  108. /**********************中斷服務程序*******************/
  109. void PIT0_IRQHandler(void)
  110. {

  111.   DisableInterrupts;

  112.   if(jishu>=8000)                                                            //干簧管檢測延時
  113.   {
  114.     jishu=8000;
  115.     led(LED5,LED_ON);      
  116.     if(key_check(KEY_STOP) ==  KEY_DOWN)                                     //干簧管停車
  117.     {
  118.       KEY_START_flag=0;                                                      //調參界面復位
  119.       Star_flag=50;                                                          //電機停轉
  120.       led(LED4,LED_ON);        
  121.     }   
  122.   }
  123.   
  124.   if(KEY_START_flag>=5)                                                      //調參界面5開始中斷計數,干簧管延時
  125.   {jishu++;
  126.   }
  127.   
  128.   g_nInterrupt_Count++;                                                       //一堆計數
  129.   g_nSpeedControlPeriod++;
  130.   SpeedControlOutput();                                                       //一堆平滑輸出
  131.   g_nDirectionControlPeriod++;
  132.   DirectionControlOutput() ;
  133.   
  134.   if(g_nInterrupt_Count>=5)                                                   //三個環控制
  135.   {
  136.     GetMotorPulse();
  137.     g_nInterrupt_Count=0;
  138.   }
  139.   else
  140.     if(g_nInterrupt_Count==1)
  141.     {
  142.       Get_AD_data();
  143.       Rd_Ad_Value();
  144.     }
  145.   else
  146.     if(g_nInterrupt_Count==2)
  147.     {
  148.       AngleCalculate();
  149.       AngleControl(g_fCarAngle,Gyro_Now);
  150.       MotorOutput();
  151.       led_turn (LED1);
  152.     }
  153.   else
  154.     if(g_nInterrupt_Count==3)
  155.     {
  156.       g_nSpeedControlCount++;
  157.       if(g_nSpeedControlCount>=20)
  158.       {
  159.         led_turn (LED2);
  160.         SpeedControl();
  161.         g_nSpeedControlCount=0;
  162.         g_nSpeedControlPeriod=0;
  163.       }
  164.     }
  165.   else
  166.     if(g_nInterrupt_Count==4)
  167.     {
  168.       g_nDirectionControlCount++;
  169.       DirectionVoltageSigma();
  170.       if(g_nDirectionControlCount>=2)
  171.       {
  172.         DirectionControl();
  173.         g_nDirectionControlCount=0;
  174.         g_nDirectionControlPeriod=0;
  175.       }
  176.    
  177.     }
  178.     PIT_Flag_Clear(PIT0);                                                    //清中斷標志位
  179.     EnableInterrupts;
  180. }
復制代碼

所有資料51hei提供下載:
smart_car-16.7.20.7z (785.66 KB, 下載次數: 88)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:484376 發表于 2019-3-5 09:29 | 只看該作者
這個黑科技不錯,如果能把硬件材料明細標出來就完美了
回復

使用道具 舉報

板凳
ID:467749 發表于 2019-3-8 14:18 | 只看該作者
不錯,下下來學習一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕1区 | 久久免费香蕉视频 | 午夜视频免费在线观看 | 夜夜爽99久久国产综合精品女不卡 | 亚洲国产精品一区在线观看 | 国产清纯白嫩初高生在线播放视频 | 激情伊人网 | 久久久www成人免费无遮挡大片 | 国产日韩欧美一区二区 | 99在线免费观看视频 | 男女网站视频 | 伊人狠狠干 | 亚洲欧美精品在线观看 | 一级特黄视频 | 久久亚 | 国产精品视频 | 亚洲中午字幕 | 欧美精品一区二区三区在线播放 | 狠狠骚 | 这里只有精品99re | 色99视频 | 韩国久久| 国产精品一区二区久久 | 日本精品一区二区在线观看 | 在线免费黄色 | 国产成人精品一区二区三区在线 | 国产精品一区二区三区四区 | 91免费观看国产 | 久久黄网 | 日韩精品一区二区三区在线观看 | 一区二区三区电影网 | 99re视频在线免费观看 | 欧美日高清 | 国产在线精品一区二区三区 | 黄色大片视频 | 亚洲电影一区二区三区 | 国产成人精品一区二三区在线观看 | 久久久无码精品亚洲日韩按摩 | 久久国产亚洲 | 日韩精品在线视频 | 日韩国产欧美一区 |