新人求教,如何用单片机控制舵机教程,该怎样连线

查看: 864|回复: 15
寄存器的 pwm输出控制舵机,舵机一直抖,求教错哪了?拜托
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
#include&stm32f10x.h&
#include&delay.h&
#include&mokuai.h&
#include&usart.h&
void TIM1_PWM_Init(u16 arr,u16 psc)& & & & //&&周期&&分频
{& & & & & & & & & & & & & & & & & & & & & & & & & & & & //定时器1 的CH2PWM输出初始化
& & & & RCC-&APB2ENR|=1&&11;&&& & & && && && &//定时器1使能
& & & & RCC-&APB2ENR|=1&&2;& & & & & & & & //IO口A时钟使能
& & & & GPIOA-&CRH&=0XFFFFFF0F;& & & && && && &//设置A9为推挽复用输出
& & & & GPIOA-&CRH|=0X;
& & & & GPIOA-&ODR=1&&9;
& & & & TIM1-&ARR|=
& & & & TIM1-&PSC|=
& & & & TIM1-&CCMR1=6&&12;& & & & //PWM& & & & 模式1
& & & & TIM1-&CCMR1=1&&11;& & & & //预装载使能
& & & & TIM1-&CCER|=1&&4; //CO1输出使能
& & & & TIM1-&CR1=0x0080;& & & & & & & & //设置第7位 使能缓冲器
& & & & TIM1-&CR1|=0x01;
int main(void)
& & & & Stm32_Clock_Init(9);
& & & & delay_init(72);
& & & & TIM1_PWM_Init(14400,99);& &//周期20ms
& & & & while(1)
& & & & & & & & delay_ms(500);
& & & & & & & & TIM1-&CCR2=1080;
& & & & & & & & delay_ms(500);
& & & & & & & & TIM1-&CCR2=1700;
& & & & & & & & delay_ms(500);
& & & & & & & & TIM1-&CCR2=500;
麻烦帮我看看我错哪了,我查了网上别人写的,没什么不一样的啊,帮我看一下吧,谢谢了
有可能频率不对吧。你看看舵机说明书,你定时器配置的频率是50Hz,这个频率要和舵机工作频率一致才行。
主题帖子精华
高级会员, 积分 964, 距离下一级还需 36 积分
在线时间167 小时
舵机连线没有问题,我用别人写的库函数的程序可以运行,程序中我倒是看到了个错误,
TIM1-&CCMR1=6
有可能频率不对吧。你看看舵机说明书,你定时器配置的频率是50Hz,这个频率要和舵机工作频率一致才行。
主题帖子精华
中级会员, 积分 414, 距离下一级还需 86 积分
在线时间51 小时
舵机用的是模拟舵机吗?模拟舵机用久了都会抖,容易坏。12个模拟角度舵机已经坏了2个了。你可以用示波器测试波形或者软件仿真,如果准确的话有可能就是舵机的问题,换一个舵机插上去试试看。
Try again and there is nothing left to say.
主题帖子精华
中级会员, 积分 414, 距离下一级还需 86 积分
在线时间51 小时
还有,哥们,你这么操作舵机的方式不太科学啊。舵机的PWM值不能瞬间跳变的,容易搞坏舵机。要用for循环一次改变一点点占空比平滑变动。
Try again and there is nothing left to say.
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
还有,哥们,你这么操作舵机的方式不太科学啊。舵机的PWM值不能瞬间跳变的,容易搞坏舵机。要用for循环一次 ...
舵机是盛辉的9g很常见的那种,PWM值需要一点点改吗?我以前用51的时候一直都是这么用,应该没事吧,在网上看他们写的程序也有这么干的~~~,我这程序里有什么错误吗?到底错哪了我怎么没找到~~~~~
主题帖子精华
中级会员, 积分 414, 距离下一级还需 86 积分
在线时间51 小时
舵机是盛辉的9g很常见的那种,PWM值需要一点点改吗?我以前用51的时候一直都是这么用,应该没事吧,在网 ...
以我用CYS-S0090模拟舵机的经验来说,是这样的。小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需要更快速的反应,就需要更高的转速了。&&可以参考下这个博客
Try again and there is nothing left to say.
主题帖子精华
高级会员, 积分 964, 距离下一级还需 36 积分
在线时间167 小时
看看舵机的地线和板子的地线是不是相连的。
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
看看舵机的地线和板子的地线是不是相连的。
舵机连线没有问题,我用别人写的库函数的程序可以运行,程序中我倒是看到了个错误,
TIM1-&CCMR1=6&&12;& && &&&//PWM& && &&&模式1
TIM1-&CCMR1=1&&11;& && &&&//预装载使能
其中应该是|=,我写成 = 了,现在程序是
#include&stm32f10x.h&
#include&delay.h&
#include&mokuai.h&
#include&usart.h&
void TIM1_PWM_Init(u16 arr,u16 psc)& & & & & & & & //&&周期&&分频
{& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //定时器2 的CH1 PWM输出初始化
& & & & RCC-&APB1ENR|=1&&0;&&& & & & //定时器2使能
& & & & RCC-&APB2ENR|=1&&2;& & & & & & & & & & & & //IO口A时钟使能
& & & & GPIOA-&CRL&=0XFFFFFFF0;& & & & //设置A9为推挽复用输出
& & & & GPIOA-&CRL|=0X0000000B;
& & & & GPIOA-&ODR=1&&0;
& & & & TIM2-&ARR|=
& & & & TIM2-&PSC|=
& & & & TIM2-&CCMR1|=6&&4;& & & & //PWM& & & & 模式1
& & & & TIM2-&CCMR1|=1&&3;& & & & //预装载使能
& & & & TIM2-&CCER|=1&&0;& &//CO1输出使能& &低电平有效
& & & & TIM2-&CR1|=0x0080;& & & & & & & & //设置第7位 使能缓冲器
& & & & TIM2-&CR1|=0x01;
int main(void)
& & & & int a=5;
& & & & Stm32_Clock_Init(9);
& & & & delay_init(72);
& & & & TIM1_PWM_Init(199,7199);& &//周期20ms
& & & & while(1)
& & & & & & & & for(a=5;a&25;a++)
& & & & & & & & {
& & & & & & & & & & & & TIM2-&CCR1=a;
& & & & & & & & }
& & & & & & & & if(a==25)
& & & & & & & & {
& & & & & & & & & & & & a=5;
& & & & & & & & }
用软件模拟端口是有输出的,但连上舵机,舵机不动~~~~~,帮我看一下吧
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
有可能频率不对吧。你看看舵机说明书,你定时器配置的频率是50Hz,这个频率要和舵机工作频率一致才行。
好像不是这个问题,舵机也是50HZ的,GPIOA-&CRL|=0X0000000B,我看别人也是这么设置的,~~~
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
原子哥能不能帮我看看错哪了,实在是找不到~~~~
主题帖子精华
金钱105398
在线时间664 小时
原子哥能不能帮我看看错哪了,实在是找不到~~~~
用示波器看看波形
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
本帖最后由 厄尔尼诺 于
15:08 编辑
用示波器看看波形
C:\Users\wang\Desktop\PWM舵机
(15.14 KB, 下载次数: 0)
15:08 上传
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
用示波器看看波形
我没有示波器,用软件模拟的,波形看上去很正常啊,但好像下载到板子里就不对了,舵机也是好的,没有问题~~~~
主题帖子精华
金钱105398
在线时间664 小时
我没有示波器,用软件模拟的,波形看上去很正常啊,但好像下载到板子里就不对了,舵机也是好的,没有问题 ...
改成一个固定脉冲输出看还抖不?
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间20 小时
改成一个固定脉冲输出看还抖不?
改成固定脉冲也还是不会固定在一个位置,并且也是每隔上6,7秒舵机动一下,期间舵机没有力,
后来在别人的提醒下,我把arr和psc从199,7199改成19999,71就可以了,我现在只是知道怎么改了,但不知道为什么,这是什么原因呢?是因为这种计时会有误差?把arr改大,误差相对小了,就可以了?是这个原因吗?
主题帖子精华
金钱105398
在线时间664 小时
改成固定脉冲也还是不会固定在一个位置,并且也是每隔上6,7秒舵机动一下,期间舵机没有力,
后来在别人 ...
这个,不知道你的舵机有多灵敏.
我觉得如果固定CCRx的话,PWM脉宽肯定是固定的.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
Powered by查看: 573|回复: 12
关于51单片机控制舵机的问题,求教!
出现的问题是,每次用单片机驱动舵机时,舵机还没有旋转到程序设置的角度,就回到初始位置了,这个时候我发现单片机里的程序也从头开始了,请教大神这是什么原因!舵机和单片机公用的一个电源,都是从USB驱动接出来的
 是断电复位吗
 应该是单片机复位了。
把舵机的电源和单片机分开就行啦,舵机的电流大,已启动单片机就复位。
舵机的功耗比较大,注意一下电源部分
程序贴出来看看
估计电流不够大
可能是电源容量不够,舵机运行电流比较大。
可能是单片机的电源驱动不了吧
舵机电流过大拉低了电源电压导致单片机复位。
分开供电试试
分开供电试试
我用电脑的USB口供电时也出现了舵机运转单片机不断复位的情况,用万用表测量发现是舵机启动时把电压拉低了,后改用开关电源供电就正常了,供参考。
Powered by

我要回帖

更多关于 arduino中舵机连线 的文章

 

随机推荐