[新人求助]关于使用360度舵机的程序问题
因为各种原因,需要使用360度舵机来实现类似于步进电机的功能。恩,说白了就是,想写个程序让360度舵机连续旋转。
不罗嗦,代码如下:
#include <Servo.h>
Servo myservo;// create servo object to control a servo
int pos = 0;
void setup()
{
myservo.attach(9);
}
void loop()
{
for(pos = 0; pos < 360; pos += 1)
{
myservo.write(pos);
delay(25);
}
}
然后就说下问题了:
这个是给360舵机写的代码,烧进arduino后,舵机只是一顿一顿地转,
然后测试我的普通航模用9克舵机,把360换成180,表示正常工作,delay也能正常用。
360舵机是X宝上买的MG995。
arduino uno用的是5V,1A的外置电源,
求大神指点....................急用................
(PS:看过论坛里类似的帖子,表示没弄好..) 传说改了360度就不能顺利控制了 本帖最后由 绿林网页 于 2013-10-24 08:08 编辑
360°舵机和180舵机是不一样的,和步进电机也不一样,是不能控制舵机角度的,只是控制正反转和转动速度~~
转:
360°舵机亦称伺服电机,他本身就是一个小的伺服系统,对输出的转速转角有着闭环调控作用,控制信号为50HZ的方波信号,当方波输出为1.5ms的方波时,电机不转,当大于1.5ms时,电机正转,反之,相反,而且当给定信号的脉冲宽度与1.5ms之差越大,其转速越大,二者有近似的线性关系 绿林网页 发表于 2013-10-24 08:06 static/image/common/back.gif
360°舵机和180舵机是不一样的,和步进电机也不一样,是不能控制舵机角度的,只是控制正反转和转动速度~~
...
那这个程序应该怎样写呢?新人表示压力山大.... 舵機型號是??
這個程式不難寫,如下:#include <Servo.h>
Servo myservo;// create servo object to control a servo
void setup()
{
myservo.attach(9);
}
void loop()
{
myservo.write(180);
}360度旋轉的伺服馬達不用累加角度,所以只用給一個定值就好,角度值影響的是轉速快慢與正轉反轉。 TTTTTTT33 发表于 2013-10-24 22:31 static/image/common/back.gif
舵機型號是??
這個程式不難寫,如下:360度旋轉的伺服馬達不用累加角度,所以只用給一個定值就好,角度值影 ...
表示这个样子还是不行,他也是一顿一顿地转,然后试了下传统的PWM控制
void setup()
{
pinMode(13, OUTPUT);//设定13号端口为输出
}
void loop()
{
digitalWrite(13, HIGH);
delayMicroseconds(100); // 大约10%占空比的1KHz方波
digitalWrite(13, LOW);
delayMicroseconds(900);
}
这个是可以的 然后就是不明白这样子的缺点 意思是CPU在处理中断的时候无法处理其他事情了比如我在loop里面写一个超声波测距的程序是不是就工作不了了 同求。。。。。如何利用arduino控制360度舵机啊???? 爱的步伐XY 发表于 2013-10-26 16:45 static/image/common/back.gif
同求。。。。。如何利用arduino控制360度舵机啊????
见楼上表示这个可以用但是这样子arduino貌似就只能控制舵机了 我也写超声波程序不能用............. 小伙,别忘了, myservo.write(x)函数的x只能是0到180度,所以说360是么没用的,x为180是360度舵机反转速度最快的值,你把 for(pos = 0; pos < 360; pos += 1) 这句去掉,myservo.write(pos); 中pos直接填0到180,注意了,对于360舵机,0到180就不是角度了而是速度。试试吧,小伙 不知道楼主是不是还纠结这个问题。我说说我的发现吧,我用跟楼主差不多的程序去驱动360舵机,使用2560的arduino,现象跟楼主一样。换了UNO之后,完全就是连续旋转了。
页:
[1]