通常的机械臂都是由多路舵机组成,我使用的是某宝上(并不)常见的五自由度机械臂。尽管商家称它为六自由度。
这里使用STM32F407VGT6的6路PWM输出通道来控制6个舵机的运动,树莓派(上位机)通过USB转TTL模块与STM32进行串口通讯
PWM舵机控制原理
标准的 PWM 舵机有三条控制线,分别为:电源、地及信号线。
1_meitu_1.jpg (37.71 KB, 下载次数: 2)
2020-9-22 09:53 上传市面上大多数180°舵机需要的PWM波周期通常为20ms,高电平接收时间通常为0.5 ~ 2.5ms,对应舵机旋转角度为0 ~ 180°。用PWM波控制舵机时,只需将时钟的周期设置为20ms(50Hz),并且通过改变比较值pulse改变PWM波的高电平时间来控制舵机旋转的角度.
STM32CubeMx主要配置
对于STM32,我使用的是STM32CubeIDE + Mx 进行开发。时钟框图为默认配置,如图。
2_meitu_2.jpg (114.98 KB, 下载次数: 1)
2020-9-22 09:53 上传TIMER
由于需要控制6个舵机,我选择了TIM3(4路PWM输出)和TIM9(2路PWM输出)。
PWM输出的频率由时钟APB2决定,由时钟框图可知此处的APB2频率为16MHz;PWM波频率计算公式为:
W = APB2 / (PSC + 1)(ARR + 1)
其中PSC为分频系数,ARR为自动重装载值。这里我将PSE设置为39,ARR设置为7999。
3_meitu_3.jpg (17.75 KB, 下载次数: 2)
2020-9-22 09:53 上传注意,这里的计数模式