PWM开发SG90
-
简介
PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及赋值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%。
- 脉冲宽度调制
- 通过占空比编码模拟信号
- 占空比一个周期内,高电平占据时长的百分比
控制舵机
-
什么是舵机
如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制。
用处:垃圾桶项目开盖、只能小车的全比例转向、摄像头云台、机械臂等
常见的有0-90°、0-180°、0-360°
-
怎么控制舵机
向黄色信号线输入PWM信号。
PWM波的频率不能太高,大约59Hz,即周期=1/频率=1/50=0.02s=20ms
数据:
0.5ms-------------0度;2.5% 对应函数中占空比为250
1.0ms------------45度;5.0% 对应函数中占空比为500
1.5ms------------90度;7.5% 对应函数中占空比为750
2.0ms-----------135度;10.0% 对应函数中占空比为1000
2.5ms-----------180度;12.5% 对应函数中占空比为1250
0.5为最大公约数,设置定时器为0.5ms,40个0.5ms为20ms一个周期
-
编程实现
#include "reg52.h" #include <intrins.h> sbit pwm = P1^1; int cnt = 0; int jd = 0; void time0_init()//定时器初始化函数 { //1.选择定时器模式 TMOD &= 0xF0; TMOD |= 0x01; //2.给定定时器初值 0.5ms溢出 TL0 = 0x33; TH0 = 0xFE; //3.开启定时器 TR0 = 1; TF0 = 0; //开启中断 EA = 1; ET0 = 1; } void time0_inter() interrupt 1 { //4.溢出后cnt++,同时还原初值 cnt++; TL0 = 0x33; TH0