实验环境
Matlab版本: 2021b
操作系统 :Win10专业版
硬件平台 :YF-STM32-ALPHA 1R4
实验内容 :硬件在环修改参数控制舵机转动
模型与原理图
STM32 simulink驱动舵机效果如图5.1所示,本次实验用到的Simulink简易模型如图5.2所示,电路图接法如图5.3所示,YF-STM32-ALPHA开发板舵机接口位置如图5.4所示,通过改变“Constant”的值实现舵机不同角度转动,数值2.5~12.5对应0°~180°(或-90°~90°)。
图5.1 硬件在环舵机转动效果
图5.2 PWM 驱动simulink模型
图5.3 STM32舵机驱动电路图
图5.4 舵机接口位置
基础模型介绍与分析
PWM简介
PWM的全称是脉冲宽度调制(Pulse-width modulation),是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式;所以根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效的获得所需要合成的相应幅值和频率的波形;
PWM实现不是单片机的专属,使用信号发生器产生的锯齿波结合LM393比较器,然后用一个可调电阻输出的电压作为参考电压,可以得到一个脉冲宽度可以调节的电路,如图5.5所示。
图5.5 信号发生器与比较器组成PWM电路
但是实际使用过程中,读者朋友不可能带着信号发生器走,所以实际电路中一般使用555定时器来产生脉冲宽度可调电路,如图5.6所示。
图5.6 555定时器PWM可调电路
专用名词解释
频率: 是指每秒钟信号从高电平到低电平再回到高电平的次数,为一个PWM波周期的倒数。如图5.7和图5.8所示,频率=1/(高电平时间+低电平时间)。
图5.7 单个脉冲周期
图5.8 1S内相同脉冲的个数代表频率
占空比 :是指高电平持续时间占比一个周期持续的时间。如图5.9所示,占空比=高电平时间/(高电平时间+低电平时间),可以通过控制占空比,来控制输出的等效电压。
图5.9 同频率下不同占空比波形等效电压
SG90舵机外观实物与引脚定义如图5.10所示,其本质是一个脉宽控制的伺服电机,通过接收不同占空比脉冲从而实现不同角度转动,其固有驱动频率为50Hz(周期20ms),脉冲占空比与角度对应关系为5ms(2.5%)->-90°,1ms(5%)->-45°,1.5ms(7.5%)->0°,2ms(10%)->45°,2.5ms(12.5%)->90°,括号里面内容对应实际“Constant”变量值,百分百表示高电平占空比,对应的角度如图5.11所示。
图5.10 SG90舵机实物与引脚定义
图5.11 SG90舵机脉冲宽度对应的角度
注 意 :实际使用中建议使用时电压不低于5V,并确保电流是否可以满足舵机驱动,≥500mA为宜,使用多个舵机同时工作时,确保足额的电流供给。
表5.1 SG90舵机参数表
产品型号 | 使用电压 | 工作扭矩 | 反应转速 | 使用温度 | 转动角度 |
---|---|---|---|---|---|
SG90 | 3~7.2V | 1.6kg/cm | 0.12-0.13秒/60° | -30℃~60℃ | 180° |
“PWM Output”STM32专用模块与参数设置如图5.12所示,“Pin”参数栏用于配置PWM引脚,示例中使用"PA_7"对应到STM32的PA7引脚,“Initial frequency”用于设置初始频率,“Initial duty cycle”用于设置初始占空比。
图5.12 “PWM Output”模块
STM32F103RBT6在simulink模型中有多个引脚支持PWM脉冲输出,可以采用图5.13所示方式同时测试或使用多个PWM脉冲控制舵机或其他脉冲设备,表5.2为该芯片的PWM脉冲具体对应的引脚和通道,内容来参考自“Pinmap_NUCLEO_F103RB”图,表中已标示的证明已经测试过,其他的由于本开发板限制,请读者朋友自行测试。
图5.13 同时多个PWM工作简易模型
注 意:此表主要针对型号为STM32F103RBT6整理,其它芯片请参考此表自行测试或参考Pinmap图
表5.2 PWM对照表(F103RBT6)
STM32引脚编号 | 通道 |
---|---|
PA1 | PWM2/2 |
PB0 | PWM3/3 |
PA15 | PWM2/1 |
PC9 | PWM3/4 |
PC8 | PWM3/3 |
PC6 | PWM3/1 |
PA11 | PWM1/4 |
PB11 | PWM2/4 |
PA6 | PWM3/1 |
PA7 | PWM3/2 |
PC7 | PWM3/1 |
PA9 | PWM1/2 |
PA8 | PWM1/1 |
PB10 | PWM2/3 |
PB4 | PWM3/1 |
PB5 | PWM3/2 |
PB3 | PWM2/2 |
PA10 | PWM1/3 |
PA2 | PWM2/3 |
PA3 | PWM2/4 |
PB1 | PWM3/4 |
PB15 | PWM1/3N |
PB14 | PWM1/2N |
PB13 | PWM1/1N |
图5.14~图5.16是作者输入不同值通过示波器测量到的实际脉冲占空比,供读者朋友参考。
图5.14 50Hz-5%占空比PWM模型与示波器实际显示波形
图5.15 50Hz-10%占空比PWM模型与示波器实际显示波形
图5.16 50Hz-15%占空比模型与示波器实际显示波形
总结
本节实验通过一个简单的PWM模型驱动舵机旋转,并验证多通道情况下PWM脉冲输出控制的可行性,为读者朋友下一步使用舵机驱动提供参考价值,大家可以思考下通过多个舵机的组合可以实现哪些好玩的东西?为使用舵机驱动的场合,其中好几个制作纯使用舵机完成,大家结合已有设备自行去实现下。
拓展延申
本节其实只使用到简单的PWM脉宽调制方式,其实在生活中还有一种用的非常广泛的脉冲电机也是使用PWM来控制的,那就是步进电机,只不过该电机接收的不是脉宽控制而是脉冲控制,即每接收一个脉冲,步进电机转动固定的角度,图5.21为工业常用步进电机参考测试电路,有条件的读者朋友可以结合本节内容实现下如何控制步进电机转动固定步数。另外读者朋友还可以结合前面小节学到的A/D采集知识或I/O输入知识制作一些好玩的东西,例如“追光向日葵”,“数字可调电源”等。
图5.21 步进电机驱动测试电路