找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14463|回复: 21
收起左侧

STM32简陋舵机云台控制系统制作 附源程序

  [复制链接]
ID:303544 发表于 2019-7-21 13:34 | 显示全部楼层 |阅读模式
1.舵机云台
   功能实现:STM32F103单片机芯片调整云台的倾斜角度,使其保持水平
                                                           

3D打印的两轴云台模型

3D打印的两轴云台模型

3D打印的两轴云台模型

2.MPU6050传感器测量倾斜角度
3.OLED显示传感器状态(三轴角度)
                                                

OLED/MPU6050

OLED/MPU6050


4.使用STM32F103C8T6系统板
                                                  

STM32F103C8T6

STM32F103C8T6

云台水平状态(约0度)

5.云台状态展示
   

云台水平状态(约0度)

云台水平状态(约0度)
     

45度角调整(MPU6050为-45度)

45度角调整(MPU6050为-45度)

45度角调整(MPU6050为-45度)

6.主函数如下
  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();                           //定时器初始化
  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数据
  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. }
复制代码
全部程序51hei下载地址:
舵机云台.7z (250.03 KB, 下载次数: 518)

评分

参与人数 2黑币 +62 收起 理由
叽叽叽叽计 + 12 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:212343 发表于 2019-8-5 04:33 | 显示全部楼层
您好,做完了,不显示呢
回复

使用道具 举报

ID:308666 发表于 2019-8-5 13:58 | 显示全部楼层
请问舵机需要驱动吗
回复

使用道具 举报

ID:595742 发表于 2019-8-5 19:08 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:484435 发表于 2019-8-5 20:01 | 显示全部楼层
谢谢大神分享
回复

使用道具 举报

ID:586422 发表于 2019-8-6 00:05 | 显示全部楼层
云台用51单片机可以有效控制吗??
回复

使用道具 举报

ID:479909 发表于 2019-8-6 10:56 | 显示全部楼层
楼主你好,为什么我的OLED不亮 0 0 和你一样的接法
回复

使用道具 举报

ID:84982 发表于 2019-8-8 00:40 | 显示全部楼层
照片的是3D打印機打的嗎?
回复

使用道具 举报

ID:581789 发表于 2019-8-8 09:16 | 显示全部楼层
为什么我下载了好几次,总是解压的时候显示找不到压缩包
回复

使用道具 举报

ID:258924 发表于 2019-8-8 13:54 | 显示全部楼层
TIM_SetCompare4(TIM3,180+Yaw)  这个180是怎么算的不太懂   这个不应该是和定时器里面的2000-1比较吗
回复

使用道具 举报

ID:482966 发表于 2020-2-8 21:58 | 显示全部楼层
学习了!感谢楼主分享!
回复

使用道具 举报

ID:320566 发表于 2020-3-3 19:02 | 显示全部楼层
感谢分享。参考一下
回复

使用道具 举报

ID:9469 发表于 2020-4-5 17:53 | 显示全部楼层
谢谢分享
谢谢分享
回复

使用道具 举报

ID:712281 发表于 2020-4-10 19:08 | 显示全部楼层
不好意思,能麻烦楼主发一下接线方式吗,这个实在看不清楚
回复

使用道具 举报

ID:742908 发表于 2020-5-2 17:20 | 显示全部楼层
楼主可以分享一下这些器材都是在哪买的吗?我打开那个宝都不知道该搜索什么关键词QAQ
回复

使用道具 举报

ID:648123 发表于 2020-10-4 21:59 | 显示全部楼层
请问楼主,能不能介绍一下这份代码所能实现的功能是什么吗?如果我在云台安装个激光笔,那么这份代码能不能控制激光点按照一定斜率进行直线运动?
回复

使用道具 举报

ID:897874 发表于 2021-3-29 08:57 | 显示全部楼层
有云台的3D打印文件吗?
回复

使用道具 举报

ID:830831 发表于 2021-4-10 10:15 | 显示全部楼层
舵机的信号机理决定 分辨率不高,只能堪用

回复

使用道具 举报

ID:430492 发表于 2021-4-26 18:29 | 显示全部楼层
这里可能需要一种控制算法才好,不然可能舵机会不停地来回调整!
回复

使用道具 举报

ID:854861 发表于 2021-5-24 18:32 | 显示全部楼层
你好,请问一下你程序里的pb13是什么作用
回复

使用道具 举报

ID:797581 发表于 2023-11-28 16:37 | 显示全部楼层
OLED不会亮
回复

使用道具 举报

ID:1101644 发表于 2023-11-28 21:29 | 显示全部楼层
很棒,很棒的作品
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表