STM32F103C8T6开发笔记1:有线陀螺仪二自由度机械臂

经过之前几天的快速学习,今日尝试组装一款基于MPU6050陀螺仪控制的二自由度机械臂,本文对其使用器材以及基本原理进行介绍~

STM32F103C8T6开发笔记1:有线陀螺仪二自由度机械臂_第1张图片

组装效果图:

STM32F103C8T6开发笔记1:有线陀螺仪二自由度机械臂_第2张图片

主要元器件如下:

器件 个数
15 KG以上 舵机 3
适合舵机的金属夹爪 1
18650电池电源12V 1
云台支架 2
云台底座 1
zigbee  DL_20无线模块 2
LM2596S 直流稳压模块 1
STM32 F103 C8T6最小系统板 2
杜邦线 若干
螺丝 若干

原理介绍:

原理我只讲框架了,因为具体内容在之前的STM32F103C8T6     相关的文章都有讲过

 所用知识主要有:

1.舵机旋转角度的控制:

单片机定时器三个通道输出PWM控制舵机旋转,PWM频率固定,通过改变占空比来调整角度

2.俩片单片机通过无线模块进行通信:

单片机A搭载了MPU6050六轴加速度角度传感器,负责解算人手握其的姿态角,并传数据给单片机B,单片机B负责获取数据控制机械臂旋转角度,俩者串口上都连接有Zigbee DH_20无线通信模块,本质也就是串口通信。

3.MPU6050六轴加速度角度传感器:

为消除错误,提升测量数据可置信度,使用一阶互补滤波,短时角加速度数据置信度高,长时角度数据置信度高,俩组数据互补,相辅相成。

遇到的困难:

1.串口通信:

串口通信是最大的困难,串口能正常配通是极其不容易的事情,会受各种干扰因素影响,相关文章也有所提及:STM32 F103C8T6学习笔记7:双机无线串口通信_

 STM32 F103C8T6学习笔记7:双机无线串口通信_NULL指向我的博客-CSDN博客

2.MPU6050姿态角的解算:

难点在数据抖动,数据置信度提升,读懂IIC通信地址,移植IIC软件模拟时序代码,这都十分耗费时间:STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波_

STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波_NULL指向我的博客-CSDN博客

3.PWM配置:

主要是理解频率与占空比,定时器时钟树配置,定时器选择时钟源,定时器分频重载值的选定,计算定时器定时溢出频率:

STM32 F103C8T6学习笔记5:定时器输出不同占空比PWM驱动舵机旋转角度_NULL指向我的博客-CSDN博客

STM32 F103C8T6学习笔记4:时钟树、滴答计时器、定时器定时中断_NULL指向我的博客-CSDN博客

 设计思路:

分为俩个STM32F103C8T6的单片机系统来讲:

单片机A负责对接MPU6050模块,通过IIC通信获取传感器数据来解算姿态角,通过一阶互补滤波提升信息置信度,保证传出的数据是比较正确的。这个传输速率为5Hz,每秒5组数据。

单片机B接收单片机A传回的数据,俩者通过Zigbee DH_20模块进行无线通信,获取数据局后使得机械臂对应部件转过相应角度即可:

后来由于无线通信5Hz回传出现莫名其妙卡顿,便放弃了无线通信的想法,改为有线控制,可能是C8T6不太行。

实测视频演示:

STM32F103C8T6开发笔记1:有线陀螺仪二自由度机械

你可能感兴趣的:(STM32,F103,C8T6笔记,stm32,笔记,嵌入式硬件)