标题:
通过三个按键PWM控制舵机程序 正点原子stm32 mini板
[打印本页]
作者:
liushuiwuqing
时间:
2017-9-30 19:30
标题:
通过三个按键PWM控制舵机程序 正点原子stm32 mini板
我也来发一个,正点原子stm32 mini板通过三个按键PWM控制舵机的程序。
根据工作原理,舵机的具体控制方法就是需要一个20ms左右的时基脉冲,
该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。
脉冲宽度从0.5ms~2.5ms,相对应舵盘的位置为0~180度,呈线性变化。
***************一般舵机脉冲宽度20ms,高电平宽度与角度对应关系***********
0.5ms————0度;
1.0ms————45度;
1.5ms————90度;
2.0ms————135度;
2.5ms————180度;
根据上面的原理,我们知道单片机只要产生20ms的脉冲信号,通过改变高电平时间从0.5ms到2.5ms变化,就能使舵机转动到对应的角度
单片机源程序如下:
/*
此程序是从网上找到的,本人修改了下
程序小白,如有错误,请见谅^_^
*/
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "key.h"
#define key1 PCin(5)
#define key2 PAin(15)
#define key3 PAin(0)
u16 cout;
int main(void)
{
cout=1850;
KEY_Init();
delay_init(); //延时函数初始化
LED_Init(); //初始化与LED连接的硬件接口
TIM1_PWM_Init(1999,719); //PWM频率===(2000*720)/72000000=0.02=20ms
while(1)
{
if(key3==0&&key1==0) //key1按下,舵机缓慢正向转动
{
if(key1==0)
{
delay_ms(5);
cout+=1;
}
}
else if(key3==1&&key1==0) //key1、key3同时按下,舵机加速转动
{
delay_ms(5);
cout+=5;
}
if(key1==1&&key2==1&&key3==0) //舵机回到90度(起始位置)
{
cout=1850;
}
if(key3==0&&key2==0) //key2按下,舵机缓慢反向转动
{
delay_ms(5);
cout-=1;
}
else if(key3==1&&key2==0) //key2、key3同时按下,舵机加速转动
{
delay_ms(5);
cout-=5;
}
TIM_SetCompare1(TIM1,cout); //PWM输出
delay_ms(50);
}
}
复制代码
0.png
(45.01 KB, 下载次数: 178)
下载附件
2017-9-30 20:49 上传
所有资料51hei提供下载:
PWM控制舵机.rar
(395.65 KB, 下载次数: 498)
2017-9-30 20:49 上传
点击文件名下载附件
正点原子stm32 mini板通过三个按键PWM控制舵机程序
下载积分: 黑币 -5
作者:
孤独求败
时间:
2018-4-26 22:15
收下了
作者:
一波三折
时间:
2018-5-13 16:04
谢谢楼主
作者:
WJHBCCM
时间:
2018-5-18 09:26
谢谢楼主
作者:
老规矩
时间:
2018-10-1 15:08
感谢感谢
作者:
h348463963
时间:
2019-3-8 15:42
谢谢楼主
作者:
sa549236986
时间:
2019-5-11 20:08
请问楼主方不方便加个QQ 我有许多地方请教一下 就差个主程序不会编了
作者:
sa549236986
时间:
2019-5-11 20:09
QQ是549236986
作者:
JamesGordan
时间:
2019-6-15 20:57
高手 感谢
作者:
18239311863
时间:
2019-8-2 10:09
好资料。值得学习
作者:
4591314
时间:
2019-12-7 15:35
f4的板子可以用么?
作者:
委曲求全
时间:
2019-12-18 08:46
请问舵机用什么型号的
作者:
fatee
时间:
2023-4-25 00:43
太棒了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1