標(biāo)題: STM32簡(jiǎn)陋舵機(jī)云臺(tái)控制系統(tǒng)制作 附源程序 [打印本頁(yè)]

作者: 小哦噢    時(shí)間: 2019-7-21 13:34
標(biāo)題: STM32簡(jiǎn)陋舵機(jī)云臺(tái)控制系統(tǒng)制作 附源程序
1.舵機(jī)云臺(tái)
   功能實(shí)現(xiàn):STM32F103單片機(jī)芯片調(diào)整云臺(tái)的傾斜角度,使其保持水平
                                                           
3D打印的兩軸云臺(tái)模型

2.MPU6050傳感器測(cè)量?jī)A斜角度
3.OLED顯示傳感器狀態(tài)(三軸角度)
                                                

4.使用STM32F103C8T6系統(tǒng)板
                                                  
云臺(tái)水平狀態(tài)(約0度)

5.云臺(tái)狀態(tài)展示
         
45度角調(diào)整(MPU6050為-45度)

6.主函數(shù)如下
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "ioi2c.h"
  5. #include "MPU6050.h"
  6. #include "pwm_output.h"
  7. #include "oled.h"


  8. int main(void)
  9. {        
  10.         float Pitch,Roll,Yaw;
  11.         
  12.         delay_init();
  13.         IIC_Init();
  14.         NVIC_Configuration();            
  15.   uart_init(9600);                     //串口顯示
  16.         DMP_Init();                           //DMP初始化
  17.   TIM_Init();                           //定時(shí)器初始化
  18.   delay_ms(8000);
  19.         OLED_Init();                        //OLED初始化
  20.   OLED_Clear();
  21.         
  22.         delay_ms(10000);
  23.         OLED_Clear();                    //OLED清屏
  24.         
  25. //界面顯示
  26.         OLED_ShowCHinese(16,0,1);
  27.         OLED_ShowCHinese(30,0,2);
  28.         OLED_ShowCHinese(44,0,3);
  29.         OLED_ShowCHinese(58,0,4);
  30.         OLED_ShowCHinese(72,0,5);
  31.         OLED_ShowCHinese(86,0,6);
  32.         OLED_ShowCHinese(100,0,7);
  33.         
  34.         OLED_ShowChar(0,3,'X',13);
  35.         OLED_ShowChar(0,5,'Y',13);
  36.         OLED_ShowChar(0,7,'Z',13);
  37.         
  38.         OLED_ShowChar(14,3,':',13);
  39.         OLED_ShowChar(14,5,':',13);
  40.         OLED_ShowChar(14,7,':',13);
  41.         OLED_ShowChar(56,3,'.',13);
  42.         OLED_ShowChar(56,5,'.',13);
  43.         OLED_ShowChar(56,7,'.',13);
  44.         
  45. //不斷讀取MPU6050數(shù)據(jù)
  46.         while(1)
  47.         {                           
  48.                 MPU_DMP_GET_DATA(&Pitch,&Roll,&Yaw); //獲取角度值
  49.                
  50.                 if(Pitch<0)
  51.                 {
  52.                         OLED_ShowChar(28,3,'-',13);
  53.                         Pitch=-Pitch;
  54.                         OLED_ShowNum(36,3,(int)Pitch,3,13);          //x軸
  55.                         OLED_ShowNum(62,3,(int)(Pitch*10)%10,1,13);
  56.                         TIM_SetCompare1(TIM3,180+Pitch);
  57.                 }
  58.                 else
  59.                 {
  60.                         OLED_ShowChar(28,3,' ',13);
  61.                         OLED_ShowNum(36,3,Pitch,3,13);                              
  62.                         OLED_ShowNum(62,3,(int)(Pitch*10)%10,1,13);
  63.                         TIM_SetCompare1(TIM3,180-Pitch);
  64.                 }
  65.                
  66.                 if(Roll<0)
  67.                 {
  68.                         OLED_ShowChar(28,5,'-',13);
  69.                         Roll=-Roll;
  70.                         OLED_ShowNum(36,5,(int)Roll,3,13);            //y軸
  71.                         OLED_ShowNum(62,5,(int)(Roll*10)%10,1,13);
  72.                 }
  73.                 else
  74.                 {
  75.                         OLED_ShowChar(28,5,' ',13);
  76.                         OLED_ShowNum(36,5,(int)Roll,3,13);
  77.                         OLED_ShowNum(62,5,(int)(Roll*10)%10,1,13);
  78.                 }
  79.                
  80.                 if(Yaw<0)
  81.                 {
  82.                         OLED_ShowChar(28,7,'-',13);
  83.                         Yaw=-Yaw;
  84.                         OLED_ShowNum(36,7,(int)Yaw,3,13);               //z軸
  85.                         OLED_ShowNum(62,7,(int)(Yaw*10)%10,1,13);
  86.                         TIM_SetCompare4(TIM3,180+Yaw);
  87.                 }
  88.                 else
  89.                 {
  90.                         OLED_ShowChar(28,7,' ',13);
  91.                         OLED_ShowNum(36,7,(int)Yaw,3,13);
  92.                         OLED_ShowNum(62,7,(int)(Yaw*10)%10,1,13);
  93.                         TIM_SetCompare4(TIM3,180-Yaw);
  94.                 }         
  95.         }
  96. }
復(fù)制代碼
全部程序51hei下載地址:
舵機(jī)云臺(tái).7z (250.03 KB, 下載次數(shù): 526)

作者: 564654654    時(shí)間: 2019-8-5 04:33
您好,做完了,不顯示呢

作者: YLLDX    時(shí)間: 2019-8-5 13:58
請(qǐng)問(wèn)舵機(jī)需要驅(qū)動(dòng)嗎
作者: 戈子45532    時(shí)間: 2019-8-5 19:08
感謝分享
作者: 遷就    時(shí)間: 2019-8-5 20:01
謝謝大神分享
作者: 張海龍05288    時(shí)間: 2019-8-6 00:05
云臺(tái)用51單片機(jī)可以有效控制嗎??

作者: yhaabb    時(shí)間: 2019-8-6 10:56
樓主你好,為什么我的OLED不亮 0 0 和你一樣的接法
作者: mengmeng90    時(shí)間: 2019-8-8 00:40
照片的是3D打印機(jī)打的嗎?
作者: 8686kaixin    時(shí)間: 2019-8-8 09:16
為什么我下載了好幾次,總是解壓的時(shí)候顯示找不到壓縮包
作者: 荊棘鳥(niǎo)1996    時(shí)間: 2019-8-8 13:54
TIM_SetCompare4(TIM3,180+Yaw)  這個(gè)180是怎么算的不太懂   這個(gè)不應(yīng)該是和定時(shí)器里面的2000-1比較嗎
作者: 黑衣MAN    時(shí)間: 2020-2-8 21:58
學(xué)習(xí)了!感謝樓主分享!
作者: 潘志豪    時(shí)間: 2020-3-3 19:02
感謝分享。參考一下
作者: EPWJZ    時(shí)間: 2020-4-5 17:53
謝謝分享
謝謝分享
作者: 渡邊寒    時(shí)間: 2020-4-10 19:08
不好意思,能麻煩樓主發(fā)一下接線方式嗎,這個(gè)實(shí)在看不清楚
作者: ReLIFE9527    時(shí)間: 2020-5-2 17:20
樓主可以分享一下這些器材都是在哪買(mǎi)的嗎?我打開(kāi)那個(gè)寶都不知道該搜索什么關(guān)鍵詞QAQ
作者: 071ya    時(shí)間: 2020-10-4 21:59
請(qǐng)問(wèn)樓主,能不能介紹一下這份代碼所能實(shí)現(xiàn)的功能是什么嗎?如果我在云臺(tái)安裝個(gè)激光筆,那么這份代碼能不能控制激光點(diǎn)按照一定斜率進(jìn)行直線運(yùn)動(dòng)?
作者: damopiaoyan    時(shí)間: 2021-3-29 08:57
有云臺(tái)的3D打印文件嗎?

作者: Highnose    時(shí)間: 2021-4-10 10:15
舵機(jī)的信號(hào)機(jī)理決定 分辨率不高,只能堪用


作者: cooleaf    時(shí)間: 2021-4-26 18:29
這里可能需要一種控制算法才好,不然可能舵機(jī)會(huì)不停地來(lái)回調(diào)整!
作者: 雪之下鹿乃    時(shí)間: 2021-5-24 18:32
你好,請(qǐng)問(wèn)一下你程序里的pb13是什么作用
作者: 陸飛    時(shí)間: 2023-11-28 16:37
OLED不會(huì)亮
作者: zx131    時(shí)間: 2023-11-28 21:29
很棒,很棒的作品




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