这是一个关于使用 PSoC 通过生成 PWM、调整频率和占空比来控制伺服的讲解!
本项目中用到的硬件部件:
赛普拉斯 PSoC 4开发套件 × 1
舵机(Tower Pro MG996R)× 1
项目详情:
使用 Arduino 控制伺服非常简单!有库可以做事,你不需要知道命令伺服的控制信号发生了什么。对于可能需要的人,有一个 Arduino 教程。
但是如何使用 PSoC 4 做到这一点呢?
根据SG90 Micro Servo datasheet,你必须像这样制作PWM信号来控制Servo
配置 PWM 模块
当然是选用 TCPWM 组件,但是等等!如何制作 50 Hz 信号 (20 mS) 并在 5% (1mS) 到 10% (2mS) 之间改变占空比?
- 通过将周期值从“1 更改为 65535”,我们可以改变 PWM 频率。
- 通过将比较值从“1 更改为周期值”,我们可以改变占空比。
- 通过更改 fclk 的值(时钟信号到 PWM 组件),我们可以改变频率范围。
- fclk 越大,最大频率越高。
配置频率和占空比的公式:
此 PWM 配置的公式(中心对齐,即对称 PWM)
- 周期 = Fclk /(2 X 所需频率)
- 比较值 = 期间 - (期望值 X 期间)
频率和占空比的计算:
此处,PWM 组件的 Fclk 选择为 480 kHz, 我们需要一个 50 Hz 的 PWM 信号(我们所需的频率)
所以,周期 = 480000 / ( 2 X 50 ) = 4800
比较值(最小) = 4800 - ( 10% X 4800 ) = 4320
比较值(最大) = 4800 - ( 5% X 4800 ) = 4560
在 4320 到 4560 之间改变比较值,我们可以控制伺服,因为它将产生完成工作所需的所需信号!PWM0_WriteCompare(value) API(或Function)用于从C代码改变占空比,控制舵机的位置!
重要提示:PWM 引脚必须作为硬件连接进行检查! 内部硬件驱动的引脚 否则,将没有输出!
评论