导航:首页 > 知识科普 > 舵机控制激光定位方法有哪些

舵机控制激光定位方法有哪些

发布时间:2022-08-15 06:39:46

1. 请教360度舵机具体控制方法

360度舵机,可调速,可控制转向,但是不能定角度控制。
说白了就跟直流减速电机一个样。
建议重买舵机。最便宜的辉盛sg90就可以。

2. 如果控制舵机

利用单片机PWM信号进行舵机控制
[日期:2005-10-15] 来源:今日电子 作者:北京交通大学 时玮 [字体:大 中 小]

基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用。

在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。

舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

图1 舵机的控制要求

舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图1所示。

单片机实现舵机转角控制
可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。

也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。

单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。

当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。

具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动。

为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms。软件流程如图2所示。

如图2 产生PWM信号的软件流程

如果系统中需要控制几个舵机的准确转动,可以用单片机和计数器进行脉冲计数产生PWM信号。

脉冲计数可以利用51单片机的内部计数器来实现,但是从软件系统的稳定性和程序结构的合理性看,宜使用外部的计数器,还可以提高CPU的工作效率。实验后从精度上考虑,对于FUTABA系列的接收机,当采用1MHz的外部晶振时,其控制电压幅值的变化为0.6mV,而且不会出现误差积累,可以满足控制舵机的要求。最后考虑数字系统的离散误差,经估算误差的范围在±0.3%内,所以采用单片机和8253、8254这样的计数器芯片的PWM信号产生电路是可靠的。图3是硬件连接图。

图3 PWA信号的计数和输出电路

基于8253产生PWM信号的程序主要包括三方面内容:一是定义8253寄存器的地址,二是控制字的写入,三是数据的写入。软件流程如图4所示,具体代码如下。
//关键程序及注释:
//定时器T0中断,向8253发送控制字和数据
void T0Int() interrupt 1
{
TH0 = 0xB1;
TL0 = 0xE0;
//20ms的时钟基准
//先写入控制字,再写入计数值
SERVO0 = 0x30; //选择计数器0,写入控制字
PWM0 = BUF0L; //先写低,后写高
PWM0 = BUF0H;
SERVO1 = 0x70; //选择计数器1,写入控制字
PWM1 = BUF1L;
PWM1 = BUF1H;
SERVO2 = 0xB0; //选择计数器2,写入控制字
PWM2 = BUF2L;
PWM2 = BUF2H;
}

图4 基于8253产生PWA信号的软件流程

当系统的主要工作任务就是控制多舵机的工作,并且使用的舵机工作周期均为20ms时,要求硬件产生的多路PWM波的周期也相同。使用51单片机的内部定时器产生脉冲计数,一般工作正脉冲宽度小于周期的1/8,这样可以在1个周期内分时启动各路PWM波的上升沿,再利用定时器中断T0确定各路PWM波的输出宽度,定时器中断T1控制20ms的基准时间。

第1次定时器中断T0按20ms的 1/8设置初值,并设置输出I/O口,第1次T0定时中断响应后,将当前输出I/O口对应的引脚输出置高电平,设置该路输出正脉冲宽度,并启动第2次定时器中断,输出I/O口指向下一个输出口。第2次定时器定时时间结束后,将当前输出引脚置低电平,设置此中断周期为20ms的1/8减去正脉冲的时间,此路PWM信号在该周期中输出完毕,往复输出。在每次循环的第16次(2×8=16)中断实行关定时中断T0的操作,最后就可以实现8路舵机控制信号的输出。

也可以采用外部计数器进行多路舵机的控制,但是因为常见的8253、8254芯片都只有3个计数器,所以当系统需要产生多路PWM信号时,使用上述方法可以减少电路,降低成本,也可以达到较高的精度。调试时注意到由于程序中脉冲宽度的调整是靠调整定时器的初值,中断程序也被分成了8个状态周期,并且需要严格的周期循环,而且运行其他中断程序代码的时间需要严格把握。

在实际应用中,采用51单片机简单方便地实现了舵机控制需要的PWM信号。对机器人舵机控制的测试表明,舵机控制系统工作稳定,PWM占空比 (0.5~2.5ms 的正脉冲宽度)和舵机的转角(-90°~90°)线性度较好。

参考文献
1 胡汉才.单片机原理及接口技术.清华大学出版社.1996
2 王时胜,姜建平.采用单片机实现PWM式D/A转换技术.电子质量.2004
3 刘歌群.卢京潮.闫建国.薛尧舜.用单片机产生7路舵机控制PWM波的方法.机械与电子.2004

舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

3. arino舵机控制问题

舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。
舵机有很多规格,但所有的舵机都有外接三根线,分别用棕、红、橙三种颜色进行区分,由于舵机品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线。
舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms 之间,但是,事实上脉宽可由0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。
用Arino 控制舵机的方法有两种,一种是通过Arino 的普通数字传感器接口产生占空比不同的方波,模拟产生PWM 信号进行舵机定位,第二种是直接利用Arino 自带的Servo 函数进行舵机的控制,这种控制方法的优点在于程序编写,缺点是只能控制2 路舵机,因为Arino 自带函数只能利用数字9、10 接口。Arino 的驱动能力有限,所以当需要控制1 个以上的舵机时需要外接电源。
方法一:

将舵机接数字 9 接口上。
编写一个程序让舵机转动到用户输入数字所对应的角度数的位置,并将角度打印显示到屏幕上。

int servopin=9;//定义数字接口9 连接伺服舵机信号线
int myangle;//定义角度变量
int pulsewidth;//定义脉宽变量
int val;
void servopulse(int servopin,int myangle)//定义一个脉冲函数
{
pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值
digitalWrite(servopin,HIGH);//将舵机接口电平至高
delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
digitalWrite(servopin,LOW);//将舵机接口电平至低
delay(20-pulsewidth/1000);
}
void setup()
{
pinMode(servopin,OUTPUT);//设定舵机接口为输出接口
Serial.begin(9600);//连接到串行端口,波特率为9600
Serial.println("servo=o_seral_simple ready" ) ;
}
void loop()//将0 到9 的数转化为0 到180 角度,并让LED 闪烁相应数的次数
{
val=Serial.read();//读取串行端口的值
if(val>'0'&&val<='9')
{
val=val-'0';//将特征量转化为数值变量
val=val*(180/9);//将数字转化为角度
Serial.print("moving servo to ");
Serial.print(val,DEC);
Serial.println();
for(int i=0;i<=50;i++) //给予舵机足够的时间让它转到指定角度
{
servopulse(servopin,val);//引用脉冲函数
}
}
}
方法二
先具体分析一下 Arino 自带的Servo 函数及其语句,来介绍一下舵机函数的几个常用语句吧。
1、attach(接口)——设定舵机的接口,只有数字9 或10 接口可利用。
2、write(角度)——用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°。
3、read()——用于读取舵机角度的语句,可理解为读取最后一条write()命令中
的值。
4、attached()——判断舵机参数是否已发送到舵机所在接口。
5、detach()——使舵机与其接口分离,该接口(数字9 或10 接口)可继续被用作PWM 接口。
注:以上语句的书写格式均为“舵机变量名.具体语句()”例如:myservo.attach(9)。
仍然将舵机接在数字9 接口上即可。
参考源程序B:
#include <Servo.h>//定义头文件,这里有一点要注意,可以直接在Arino 软件菜单栏单击Sketch>Importlibrary>Servo,调用Servo 函数,也可以直接输入#include <Servo.h>,但是在输入时要注意在#include 与<Servo.h>之间要有空格,否则编译时会报错。
Servo myservo;//定义舵机变量名
void setup()
{
myservo.attach(9);//定义舵机接口(9、10 都可以,缺点只能控制2 个)
}
void loop()
{
myservo.write(90);//设置舵机旋转的角度
}

4. 怎样控制舵机,用什么控制舵机

舵机一般用单片机或者数字电路控制。
舵机工作主要跟控制线的高电平持续时间有关系,一般按0.5ms(毫秒)划分,如果持续时间为0.5ms,1ms,1.5ms,2ms,2.5ms时,舵机会转过不同的角度。
不过具体控制起来非常复杂,教学书里对舵机的控制能写上10来页,而且有图,这么多的东西,要在这里说清楚,不太可能。还是建议你去网络文库里找找,也可以去找找图书馆或者书店。
《新概念51单片机C语言教程:入门、提高、开发、拓展全攻略》
郭天祥
电子工业出版社
(2009-01出版),这本书里我记得有。
舵机的控制不简单,一般的话属于大学二、三年级的水平了,电子电气专业的问题。

5. 模拟舵机和数字舵机的使用方法

一、舵机的原理
标准的舵机有3条导线,分别是:电源线、地线、控制线,如图2所示。

以日本FUTABA-S3003型舵机为例,图1是FUFABA-S3003型舵机的内部电路。

3003舵机的工作原理是:PWM信号由接收通道进入信号解调电路BA6688的12脚进行解调,获得一个直流偏置电压。该直流偏置电压与电位器的电压比较,获得电压差由BA6688的3脚输出。该输出送入电机驱动集成电路BAL6686,以驱动电机正反转。当电机转动时,通过级联减速齿轮带动电位器Rw1旋转,直到电压差为O,电机停止转动。
舵机的控制信号是PWM信号,利用占空比的变化,改变舵机的位置。

有个很有趣的技术话题可以稍微提一下,就是BA6688是有EMF控制的,主要用途是控制在高速时候电机最大转速。
原理是这样的:

收到1个脉冲以后,BA6688内部也产生1个以5K电位器实际电压为基准的脉冲,2个脉冲比较以后展宽,输出给驱动使用。当输出足够时候,马达就开始加速,马达就能产生EMF,这个和转速成正比的。
因为取的是中心电压,所以正常不能检测到的,但是运行以后就电平发生倾斜,就能检测出来。超过EMF判断电压时候就减小展宽,甚至关闭,让马达减速或者停车。这样的好处是可以避免过冲现象(就是到了定位点还继续走,然后回头,再靠近)

一些国产便宜舵机用的便宜的芯片,就没有EMF控制,马达、齿轮的机械惯性就容易发生过冲现象,产生抖舵

电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源.电压通常介于4~6V,一般取5V。注意,给舵机供电电源应能提供足够的功率。控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20 ms(即频率为50 Hz)。当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。某型舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用围3来表示。

二、数码舵机 VS 模拟舵机
数码舵机比传统的模拟舵机,在工作方式上有一些优点,但是这些优点也同时带来了一些缺点。
传统的舵机在空载的时候,没有动力被传到舵机马达。当有信号输入使舵机移动,或者舵机的摇臂受到外力的时候,舵机会作出反应,向舵机马达输出驱动电压。由第一节的电路分析我们知道——马达是否获得驱动电压,取决于BA6688的第3脚是否输出一个电压信号给BAL6686马达驱动IC。
数码舵机最大的差别是在于它处理接收机的输入信号的方式。相对与传统的50脉冲/秒的PWM信号解调方式,数码舵机使用信号预处理方式,将频率提高到300脉冲/秒。因为频率高的关系,意味着舵机动作会更精确,“无反应区”变小。
以下的三个图表各显示了两个周期的开/关脉冲。

图1是空载的情况;图2是脉冲宽度较窄,比较小的动力信号被输入马达;图3是更宽,持续时间更长的脉冲,更多的输入动力。

您可以想象,一个短促的脉冲,紧接着很长的停顿,这意味着舵机控制精度是不够高的,这也是为什么模拟舵机有“无反应区”的存在。比如说,舵机对于发射机的细小动作,反应迟钝或者根本就没有反应。
而数码舵机提升了脉冲密度,轻微的信号改变都会变的可以读取,这样无论是遥控杆的轻微变动,或者舵机摇臂在外力作用下的极轻微变动,都会能够检测出来,从而进行更细微的修正。
三、数码舵机的缺点:
以上我们已经知道数码舵机会更精确这个优点,那么我们来看数码舵机的缺点
1、数码舵机需要消耗更多的动力。其实这是很自然的。数码舵机以更高频率去修正马达,这一定会增加总体的动力消耗。
2、相对教短的寿命。其实这是很自然的。马达总在转来转去做修正,这一定会增加马达等转动部位的消耗。
四、拟人化比喻
技术性的东西说了这么多,也许很多对电路原理不熟悉的朋友还是不明白,呵呵,举个简单的例子来说明吧!
比如遥控器是老师,舵机控制电路是家长,舵机的马达是小孩
现在的任务是老师要求家长辅导孩子做一个动作,比如倒立
以数字舵机而言,家长自主地给这个动作设置了非常非常严格的标准,他要求孩子倒立时在鞋面上摆一个竖立的硬币,然后盯着硬币,硬币向左一震动他在右边给孩子一鞭子,硬币向右一震动他在左边给孩子一鞭子.........总之他要求的不再是老师要求的“倒立”,而是倒立以后顶一枚不倒的硬币..........
模拟舵机的家长部分则是柔和派,老师要求倒立是吧?他忠实地按老师的要求,让孩子倒立起来,孩子身体的轻微调整他不去关注了,他只关心是不是偏移了老师的标准,呵呵
五、实际应用选择
我们已经知道模拟舵机对于极轻微的外力干扰导致舵机盘移位的敏感度,和舵机执行命令的精确度,是不如数码舵机的了,那么我们是不是应该尽量使用数码舵机呢???我个人而言不是这么认为。
首先——舵机的素质,其实不单纯是电路决定的,还有舵机的齿轮精度,还有非常非常关键的舵机电位器的精度。一颗质量上乘的模拟舵机,往往比电路虽然是数码但是零件却是普通货色的数码舵机更准确,更不会抖舵。
其次,要知道我们在模型车上应用的时候,很多时候太高的精度并不是好事!比如你玩1/8的车,特别是大脚车和越野车,那么烂的路面导致车时而滑动适合腾空,动不动就是零点几秒、N公分的偏差,舵机的微秒级别敏感、微米级别精度对整个事件能起怎么改善??那叫神经质的舵机反应...........
其实应用在1/8车辆上,一颗0.1秒反应的模拟舵机是更合适的搭配。它会更省电,更顺滑,不会那么神经质。而且最重要的——它不会在一台转向虚位有几毫米的1/8越野车上,去不停地吱吱叫着去找那0.1毫米的居中(其实你即使把舵机连杆给它拆掉,让舵机空转,它也往往找不到那0.1毫米的居中,只是自己不停地吱吱叫着折腾自己而已,哈哈)
实际的应用上,我建议是1/10的竞赛级别房车,暴力型的飞机,可以选用数码舵机。所谓神经质配神经质,呵呵。
其实我个人选择舵机,更看重的是品牌和玩家反响,而不是某些山寨工厂一力鼓吹的什么狗屁数码........
下面这篇文章,我大致看过,是符合科学原理的,想学习知识的可以看看。
注意吸收知识,要由根本上去分析,而不是以讹传讹!否则你必定就象很多人一样去坚守“数码舵机比模拟舵机快”这个完全错误的观点,呵呵,那会被真正掌握知识的人暗地里面耻笑的

6. 怎样才能控制舵机旋转

控制舵机旋转方法:
1、控制信号(如图H)是一种脉宽调制(PWM)信号,凡是微控制器能轻松的产生这种信号。在此文中,我用的是常用的Arino开发环境下的微控制器。
2、 脉冲的高电平持续1到2毫秒(ms),也就是1000到2000微秒(µs)。在1000µs时,舵机左满舵。在2000µs时,右满舵。不过你可以通过调整脉宽来实现更大或者更小范围内的运动。
3、控制脉冲的低电平持续20毫秒。每经过20毫秒(50次每秒),就要再次跳变为高电平,否则舵机就可能罢工,难以保持稳定。不过你要是想让它一瘸一拐的跳舞,倒可以采取这种方法。

7. 如何控制舵机旋转

控制舵机旋转方法:
1、控制信号(如图H)是一种脉宽调制(PWM)信号,凡是微控制器能轻松的产生这种信号。在此文中,我用的是常用的Arino开发环境下的微控制器。
2、 脉冲的高电平持续1到2毫秒(ms),也就是1000到2000微秒(µs)。在1000µs时,舵机左满舵。在2000µs时,右满舵。不过你可以通过调整脉宽来实现更大或者更小范围内的运动。
3、控制脉冲的低电平持续20毫秒。每经过20毫秒(50次每秒),就要再次跳变为高电平,否则舵机就可能罢工,难以保持稳定。不过你要是想让它一瘸一拐的跳舞,倒可以采取这种方法。

8. 如何控制舵机啊

船上的舵机有多种控制方法“
小船直接由舵手转动舵轮带动链轮通过链条来操纵舵机。
较大的船舶就有电气或液压操舵仪:1)手动操舵---手动接通开关,使舵转动,舵的转动角度由舵角指示仪反馈到操舵手面前,当舵转到需要的角度时,操舵手断开电源,舵停止;
2)随动舵---操舵手将舵轮转动一个角度,舵就在随动系统的控制下转到所需要的角度才停下来;
3)自动舵---舵自动转动,使船舶在预定的方向直线前进,不管风浪和潮流;

阅读全文

与舵机控制激光定位方法有哪些相关的资料

热点内容
如何用最快的方法打气球 浏览:817
绿建三星计算方法 浏览:591
正确汽车打蜡方法图解 浏览:10
周长有哪些混合运算方法 浏览:375
毛细管方法检测HbA1c优点 浏览:655
清洗冰箱方法和步骤 浏览:587
如何制作直播的方法 浏览:975
腰间盘锻炼的方法 浏览:996
缓解疲劳的方法都有哪些 浏览:850
民间投篮训练方法 浏览:955
哪些方法可以捕捉文案创作灵感 浏览:189
手机肌肉训练方法 浏览:719
功能失效路径分析方法 浏览:531
玻璃上油漆怎么洗掉最简单方法 浏览:124
新冦病毒有哪些检测方法 浏览:698
教儿童记数字简单方法图 浏览:548
联想增霸卡安装方法 浏览:937
手机照片定制方法 浏览:249
人正确的呼吸方法 浏览:144
常用肌松检测方法 浏览:839