电机速度与舵机转向的控制算法

电机速度与舵机转向的控制算法
电机速度与舵机转向的控制算法

第二届全国大学生“飞思卡尔”杯

智能汽车竞赛

技术报告

学校:大连民族学院

队伍名称:民院二队

参赛队员:聂志戎易弓张新秀

带队教师:陈兴文

关于技术报告和研究论文使用授权的说明

本人完全了解第二届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。

参赛队员签名:聂志

戎易弓

张新秀

带队教师签名:陈新文

日期:2007-8-20

第一章引言 (1)

第二章智能车寻迹的硬件系统设计 (2)

2.1.电源管理电路 (2)

2.2.电机驱动电路 (4)

第三章系统软件设计 (7)

3.1.软件主流程 (7)

https://www.360docs.net/doc/6c5890553.html,D图像信息的采集与特征的提取 (8)

3.3.电机速度与舵机转向的控制算法 (9)

3.3.1.当前赛道信息的识别与控制 (9)

3.3.2.对未来赛道信息的预测与控制 (10)

第四章模型车机械安装及主要技术参数说明 (11)

4.1.智能车机械部分的安装及改造 (11)

4.2.智能车的主要技术参数说明 (11)

第五章开发工具与调试 (12)

5.1.开发工具、安装 (12)

5.2.调试过程 (12)

参考文献 (13)

附录A 程序源代码 (14)

附录B基于CCD图像的分析方法及预测算法 (22)

第一章引言

全国大学生“飞思卡尔”智能汽车竞赛的比赛规则是:使用大赛组委会统一提供的竞赛车模,采用飞思卡尔的16位单片机MC9S12DG128 作为核心控制单元,自主构思控制方案及系统设计,包括路径信息的采集与处理、控制算法及执行、电机驱动、舵机转向控制等,以比赛完成的时间短者为优胜者。其中赛道为在白色底板上铺设黑色引导线。制作智能车,需要参赛队员学习并应用嵌入式开发工具CodeWarrior和在线开发与在线调试。自行设计并制作硬件电路板,设计自动识别路径的方案,学习微控制器的MC9S12DG128的软件编程。其专业知识涉及控制、模式识别、检测技术、汽车电子、计算机和机械等多个学科,对学生的知识的融合和实践动手能力的培养,有很大的推动作用。

本队以单片机MC9S12DG128 作为核心,使用CodeWarrior 软件开发工具,充分利用单片机各功能模块设计制作了本智能车控制系统。根据赛道特点,主要有三种方案:光电传感器方案,摄像头方案,光电传感器与摄像头融合控制方案。

本方案采用CCD摄像头对道路信息进行检测,可以从图像中提取较多的有用信息,其中包括小车前视方向与道路方向的斜率和道路的曲率等。提前判断道路弯道、直道的路况信息,从而实现安全过弯,快速通过直道,在保证稳定的条件下追求行使时间最短。

第二届全国大学生智能汽车竞赛技术报告

第二章智能车寻迹的硬件系统设计

本方案采用组委会提供的核心9S12DG128电路板,自行设计了核心板以外的驱动系统。利用CCD采集路径信息,传给单片机,对图像信号进行处理,从而控制舵机转向和直流电机调速。整个系统的硬件结构框图如图 2.1所示。

图2.1 系统硬件结构框图

整个系统的主要单元电路包括电源管理电路、电机驱动电路、视频同步分离电路、转速测量电路。下面将各电路简要介绍如下:

2.1.电源管理电路

电源的管理在整个电路中起着很重要的作用,工作电压的稳定性直接关系着系统的稳定性,关系着系统能否正常工作。它不仅为单片机提供工作电压,而且为各个控制芯片提供电压,为CCD提供工作电压。

本智能车系统中,我们选择了一款低差压芯片TPS7350,该芯片的优点是当输出电流为100mA时,最大差压只有35mV。为了减小系统运行过程中电机波纹对电源的干扰,设计了大电容与大电感组成的LC滤波电路,对电源管理芯片的电源进行滤波,保证电源芯片的正常工作电压。

第二章智能车寻迹的硬件系统设计

整个智能车系统所需的+5V的工作电压是使用一片TPS7350提供的。原理图如图2.2所示。

图2.2 TPS7350工作原理图

为了提高舵机的响应时间,我们将舵机的工作电压提高到+6V。仍然使用低差压电源芯片TPS7350。由于TPS7350的输出电压是+5V,为了得到+6V的工作电压,我们通过提高芯片地电位的方式,即,将芯片的地通过两个二极管接至供电电源的地,这样就可以为舵机提供+6V的工作电压。原理图如图2.3所示。

图2.3 舵机工作电压原理图

第二届全国大学生智能汽车竞赛技术报告

CCD摄像头的工作电压要求比较高,我们使用升压模块将电压提高到+9V,从而保证CCD能够正常工作。原理图如图2.4 所示。

图2.4 CCD工作电压原理图

2.2.电机驱动电路

直流电机的转速控制采用PWM控制。由于单片机输出的脉宽无法驱动竞赛用的直流电机,因此需要通过驱动电路才能驱动电机,设计中采用组委会提供的MC33886 芯片。为增强其驱动能力,可以将芯片两个输入引脚并联使用,接到单片机PWM引脚,并将两个输出并联接电机,增强电机带负载能力。此芯片具有短路保护、欠压保护与过温保护功能,将芯片的FS引脚接一信号灯,对异常情况进行报警。原理图如图2.5所示。

第二章智能车寻迹的硬件系统设计

图2.5 电机驱动原理图

2.3.视频同步分离电路

视频同步分离电路主要采用视频同步分离芯片LM1881,直接对视频信号进行同步分离,准确地获得所需的视频图像信号,将视频信号通过一个电容接到LM1881的2脚,即可得到控制单片机进行A/D采集的控制信号:一行同步CSO,一场同步VS与奇偶场同步O/E。原理图如图 2.6所示。

图2.6 视频同步分离原理图

2.4.转速测量电路

小车转速的检测是对车速进行闭环控制的基础,直接影响到将来控制效果的好坏。本设计采用光电码盘测速法。把分度盘安装在小车的后轴,随电机驱

第二届全国大学生智能汽车竞赛技术报告

动后轴转动使分度盘随之等速转动。利用红外透射式传感器检测到的通断个数就能检测到小车后轮转速。速度传感器采用红外投射式传感器,利用发射管发出红外光线,透过分度盘的缺口照射光敏三极管,使其迅速由截至状态变为导通。随着分度盘转动,反复形成脉冲信号,利用脉冲累加对脉冲信号进行计数,在一选定的时间内读出脉冲总数,从而计算出小车的当前速度。传感器结构原理图如图2.7 所示。

图2.7 转速测量原理图

第三章系统软件设计

本设计系统中采用的是CCD摄像头对道路信息进行采集,得到实时图像数据后,对图像进行处理,提取赛道中的引导黑线的位置,从而以此作为改变舵机转向和控制电机转速的理论依据。

本方案中,以CodeWarrior4.1为开发工具,系统的软件设计包括:系统的初始化,视频图像信号采集及处理程序,以及对小车电机、舵机的控制程序。具体实现以下的功能:系统初始化、视频图像信号的采集、视频图像的分析及处理、电机控制、舵机的控制。

3.1.软件主流程

小车系统软件的运行主流程是:采集程序在PJ口中断服务程序中对CCD 摄像头的场视频信号进行控制,在外中断服务程序中采集每行信息,每13行读取一行信息。主程序交替对数据进行处理和计算并给出控制量,控制周期为20ms。主程序检测到完成一场采集数据结束的标志后,对相应的数据进行处理并计算控制量,控制舵机转向以及电机的转速,清除数据结束标志位,同时等待下一场数据的到来。软件的主流程如图 3.1 所示。程序见附录A。

第二届全国大学生智能汽车竞赛技术报告

3.2.C CD图像信息的采集与特征的提取

CCD摄像头输出的是标准的视频复合信号,利用同步信号分离芯片LM1881 和S12单片机的A/D转换器可以对视频信号进行采集,从而得到CCD的灰度图像数据,经二值化处理就可以得到跑道黑线轨迹在图像上的点阵。单片机总线

第三章系统软件设计

频率超频到32MHz ,每行最多能够采集42 个点,前10个数据为行消隐,共采集32个有效数据点,采集20行信息。

CCD黑线中心坐标的提取大致的思想如下。首先判断图像采集是否完成,完成了才开始下面的处理。从最近一行图像开始检测,设定检测的左右边界位置。根据本行获得的黑线左右边界来确定下一行的左右边界值。如此循环直到处理完整幅图像。另外,可能会有异常信息,全黑或者检测不到黑线,此时作为异常情况,置一个异常标志位,对其进行单独处理。

3.3.电机速度与舵机转向的控制算法

3.3.1.当前赛道信息的识别与控制

一场图像数据处理结束后,赛道的路径信息会清晰的再现出来。根据整幅图像黑线的有效起点和有效终点的斜率和偏离图像中心位置的偏移量,就可以判断当前赛道是直道还是弯道。

根据这些信息给定舵机的控制量。此方案获的主要思想如下:首先找到图像数据最近位置的第一个有效行,同时记录黑线的中心位置信息,定义为(X0,Y0 )。然后再找最远位置的第一个有效行,以及其黑线中心位置,定义为(X1,Y1 )。据此算出黑线的斜率(Y1 - Y0 )/ (X1 - X0 ),和黑线偏离图像中心位置的偏移量| X0 |。其示意图如图3.2所示。

第二届全国大学生智能汽车竞赛技术报告

其计算公式为:

舵机控制量 = K0*X0 + K1* (X1 - X0 )/(Y1 -Y0 )(4)

根据不断的调试和经验数据得到比例系数 K0,K1 的确切的值。

3.3.2.对未来赛道信息的预测与控制

单纯的判断当前赛道的信息,不能十分准确地给出舵机转角的控制量。小车在高速运行时,遇到比较急的弯道,容易出现差错。经常出现转角控制量滞后而冲出跑道。鉴于此,我们在原方案的基础上添加了预测算法。

根据CCD视频图像的扫描特点,前视距离较远处扫描到的图像含有信息较多,所以根据一幅图像的前视距离最远处1/4段曲线的切线可以预测到未来赛道的信息。在曲线的前面1/4处取一点(X2,Y2),其示意图如图3.1所示。舵机转向的计算公式为:

舵机控制量 = K0*X0 + K1*(X1 - X0)/(Y1 -Y0)+K2 *(X1-X2)/(Y1-Y2) (5)

根据点(X2,Y2)和点(X1,Y1)段曲线的弯曲程度,可以预测出下一段道路的走向。调解系数K2,控制舵机转向的角度,降低舵机转向滞后的机率。可以使小车不完全按照黑线走,走内道,灵活,连续地行使。

电机的控制速度采用闭环控制,根据速度反馈和弯道信息给定当前电机的速度,直道上加速,进弯道时减速,由于CCD摄像头看的比较远,可以提前看到弯道,减速,进弯道后看到另一场图像,再进行下一次处理,根据控制策略,进行加减速。同时结合速度反馈,当速度超过某标定值时,减速处理,低于标定值时,加速处理。

第四章模型车机械安装及主要技术参数说明整个智能车主要由车模、舵机、直流电机、 S12核心电路板、驱动电路板、CCD摄像头、电池等组成。智能车的安装包括电池部分的安装、最小系统电路板的安装、舵机的安装、驱动电路板的安装及摄像头的安装。

4.1.智能车机械部分的安装及改造

电池固定在智能车自带的电池槽上,为了加大力臂,增强舵机转向的灵活性,缩短其响应时间,我们将舵机安装在车身前部,并将高度提高。电机安装在车身后部,用来驱动后轮控制小车的前进、后退、加速或减速及刹车。S12 核心板与驱动板安装在车身中间。

CCD的位置、高度、俯仰角度很重要,直接影响CCD的视场。CCD的安装采用门形,架在小车的前身。通过校准板,利用小电视观察,对CCD的位置、高度和角度进行调解,以得到最好的效果,找到CCD的最佳位置、高度及角度并将其固定。

4.2.智能车的主要技术参数说明

1)改造后的车模总体重量,长28 cm 、宽17 cm 、高35 cm尺寸等基本参数。

2)平均电路功耗,电容总容量1990uF;

3)传感器共有2个:CCD视频传感器1个,光电传感器1个。

4)除了车模原有的驱动电机、舵机之外无伺服电机。

5)赛道信息检测精度18.75mm ,频率为50Hz

第二届全国大学生智能汽车竞赛技术报告

第五章开发工具与调试

5.1.开发工具、安装

开发工具使用的是CodeWarrior4.1的开发环境,该开发环境包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、链接器以及调试器。它能够为单片机MC9S12DG128提供与之配套的应用程序开发模块。下载程序时,可以利用串口, 也可以利用调试器BDM与单片机之间的连接下载程序。

5.2.调试过程

下面具体介绍智能车的制作与调试过程。

(1)熟悉S12 单片机与开发环境。为了能够迅速的掌握MC9S12DG128型单片机各个模块及CodeWarrior4.1开发环境的应用,队员们各自查找资料,翻阅书籍,上网查询等,并进行交流,分别对各个模块进行调试。(2)完成小车的各个基本模块,画版图。包括电源模块、电机驱动模块、视频采集、舵机控制等。

(3)完成硬件安装。PCB板完成后,根据模型车说明,将小车装好,将各部分硬件安装好,包括核心板、驱动板的安装、CCD的安装。

(4)CCD摄像头的标定,小车整体调试。调试过程记录经验数据,据此优化速度,优化资源。

第二届全国大学生智能汽车竞赛技术报告

参考文献

[1] Motorola. “MC9SDG128B Device User Guide V1.09 ”. 2005.11

[2] Motorola. “S12 VREG Block User Guide V01.01 ”. 2005.5

[3] Motorola. “S12 ATD_10B8C Block User Guide V02.12 ”. 2005.11

[4] Motorola. “S12 PWM_8B8C Block User Guide V01.17 ”. 2005.5

[5] Motorola. “S12 ECT_16B8C Block User Guide V01.06 ”. 2005.5

[6] Motorola. “S12 INT Block User Guide V01.06 ”. 2005.5

[7] Motorola. “S12 MEBI Block User Guide V01.06 ”. 2005.5

[8] Motorola. “Codewarrior 使用指南” . 2005. 10

[9] Freescale. “MC33886 User Guide”. 2005.7

[10]National. “LM1881 User Guide”. 2006.3

[11] TI. “TPS7350 User Guide”. 2005.7

[12] 清华大学. “BDM_forS12_TBDML_用户手册V31 ”. 2005.12

[13] 卓晴黄开胜邵贝贝主编.学做智能车[M],北京航空航天大学出版社

2007.3

[14] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,

2004.

[15] 谭浩强.C程序设计[M].北京:清华大学出版社,1999.

第二届全国大学生智能汽车竞赛技术报告

附录A 程序源代码

#include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

/********** Variables Definition *********************/ uint uiVideo_line_count;

uint uiVideo_line_flag;

uint uiVideo_Data[20][32];

uint uiVideo_over_flag;

uint uiVideo_line;

uint uiVideo_AD_Data[20][32];

uint uiVideo_Limen[20][6];

uint uiVideo_Ava_Limen[20];

uint uiVideo_Field_uicount;

uint uiVideo_init_flag;

uint uiVideo_Center[20][6];

uint uiVideo_Center_Count;

uint uiVideo_Continuous_Line[20];

uint uiVideo_Continuous_Count;

uint uiLine_First_Place;

uint uiLine_Last_Place;

uint uiRow_First_Place;

uint uiRow_Last_Place;

int iRow_First;

int iRow_Last;

int iLine_First;

int iLine_Last;

int iPlace_first;

int iPlace_last;

uint Video_Place_flag;

第二届全国大学生智能汽车竞赛技术报告

uint uiSpeed;

uint uiflag;

uint uiOdd;

uint uiSpeed_Flag;

uint uiSpeed_Tbl[900];

ST_PID pst_pid;

/********PWM Initial***********/

void PWM_init(void)

{ PWMCTL = 0X80;

PWMPOL = 0X02;

PWMCAE = 0x00;

PWMCLK = 0X00;

PWMPRCLK = 0x36;

PWMSCLA = 0X00;

PWMSCLB = 0X00;

PWMPER67 = 30000;

PWMDTY67 = 6600;

PWMPER0 = 200;

PWMPER1 = 200;

PWMDTY0 = 0;

PWMDTY1 = 0;

PWME = 0X83;

}

/**************AD Initial ****************/

void AD_init(void)

{

ATD0CTL2=0xC0;

ATD0CTL3=0x08;

ATD0CTL4=0x81;

ATD0CTL5=0xA0;

ATD0DIEN=0x00;

第二届全国大学生智能汽车竞赛技术报告

}

/**************CCD Initial ****************/ void Video_Init(void)

{ uint i, j;

HPRIO = (unsigned char)(Virq & 0xff);

INTCR |= INTCR_IRQE_MASK;

PIEJ = 0x02;

PPSJ = 0X02;

INTCR_IRQEN = 0;

uiVideo_line_count = 0;

DDRA = 0X00;

DDRB = 0XFF;

for(i = 0; i < 20; i++)

{ for(j = 0; j < 6; j++)

{ uiVideo_Center[i][j] = 255;

}

uiVideo_Continuous_Line[i] = 255;

}

/**********Get Image Information **********/ void Video_Get_Image(void)

{if(1 == uiVideo_line_flag)

{ Video_transform_Line();

uiVideo_line_flag = 0;

}}

void Video_transform_Line(void)

{ uint i, j;

uint uiVideo_flag;

uint uiVideo_count;

uint uiVideo_count1;

uint uiVideo_count2;

uiVideo_flag = 0;

智能车舵机PD运算

/**********************舵机增量式PID算法*********************** double ref = 0;//设置参数设定值 double feb = 0;//采样反馈过程值 int pwm_var = 0; //PID调整量 int PWM_out = 0; //PWM输出量 double Uo = 0; double Ek = 0; double Ei = 0; double Ed = 0; #define Kp 8 //PID调节的比例常数 #define Ti 0.05 //PID调节的积分常数 #define Td 0.02 //PID调节的微分时间常数 #define T 0.02 //采样周期 #define Kpp Kp * ( 1 + (T / Ti) + (Td / T) ) #define Ki (-Kp) * ( 1 + (2 * Td / T ) ) #define Kd Kp * Td / T //#define Kpp 4 //#define Ki 0.8 //#define Kd 20 //误差的阀值,小于这个数值的时候,不做PID调整,避免误差较小时频繁调节引起震荡 #define Emin 3 //调整值限幅,防止积分饱和 #define Umax 100 #define Umin -100 //输出值限幅 #define Pmax 15500 #define Pmin 200 /////////////////////////////////////////////////////////////////// ////// PID运算 ///////

详细的舵机控制原理资料

目录 一.舵机PWM信号介绍 (1) 1.PWM信号的定义 (1) 2.PWM信号控制精度制定 (2) 二.单舵机拖动及调速算法 (3) 1.舵机为随动机构 (3) (1)HG14-M舵机的位置控制方法 (3) (2)HG14-M舵机的运动协议 (4) 2.目标规划系统的特征 (5) (1)舵机的追随特性 (5) (2)舵机ω值测定 (6) (3)舵机ω值计算 (6) (4)采用双摆试验验证 (6) 3.DA V的定义 (7) 4.DIV的定义 (7) 5.单舵机调速算法 (8) (1)舵机转动时的极限下降沿PWM脉宽 (8) 三.8舵机联动单周期PWM指令算法 (10) 1.控制要求 (10) 2.注意事项 (10) 3.8路PWM信号发生算法解析 (11) 4.N排序子程序RAM的制定 (12) 5.N差子程序解析 (13) 6.关于扫尾问题 (14) (1)提出扫尾的概念 (14) (2)扫尾值的计算 (14)

一.舵机PWM 信号介绍 1.PWM 信号的定义 PWM 信号为脉宽调制信号,其特点在于他的上升沿与下降沿之间的时间宽度。具体的时间宽窄协议参考下列讲述。我们目前使用的舵机主要依赖于模型行业的标准协议,随着机器人行业的渐渐独立,有些厂商已经推出全新的舵机协议,这些舵机只能应用于机器人行业,已经不能够应用于传统的模型上面了。 目前,北京汉库的HG14-M 舵机可能是这个过渡时期的产物,它采用传统的PWM 协议,优缺点一目了然。优点是已经产业化,成本低,旋转角度大(目前所生产的都可达到185度);缺点是控制比较复杂,毕竟采用PWM 格式。 但是它是一款数字型的舵机,其对PWM 信号的要求较低: (1) 不用随时接收指令,减少CPU 的疲劳程度; (2) 可以位置自锁、位置跟踪,这方面超越了普通的步进电机; 其PWM 格式注意的几个要点: (1 ) 上升沿最少为0.5mS ,为0.5mS---2.5mS 之间; (2) HG14-M 数字舵机下降沿时间没要求,目前采用0.5Ms 就行;也就是说PWM 波形 可以是一个周期1mS 的标准方波; (3) HG0680为塑料齿轮模拟舵机,其要求连续供给PWM 信号;它也可以输入一个周 期为1mS 的标准方波,这时表现出来的跟随性能很好、很紧密。

舵机工作原理

控制思想 该模块的程序框图如图4.5 所示。车模在行驶过程中不断采样赛道信息,并通过分析车模与赛道相对位置判断车模所处赛道路况,是弯道还是直道,弯道时是左转还是右转。直道时小车舵机状态保持不变,弯道时左转或右转,计算转弯半径。我们所用舵机的标准PWM 周期为20ms,转动角度最大为左右90度,PWM调制波如图7.2所示。

当给舵机输入脉宽为0.5ms,即占空比为0.5/20=2.5%的调制波时,舵机右转90度;当给舵机输入脉宽为1.5ms,即占空比为1.5/20=7.5%的调制波时,舵机静止不动;当给舵机输入脉宽为2.5ms,即占空比为2.5/20=12.5%的调制波时,舵机左转90度。可以推导出舵机转动角度与脉冲宽度的关系计算公式为: 注:其中t为正脉冲宽度(ms);θ为转动角度;当左转时取加法计算,右转时取减法计算结果。 当我们根据赛道弯度计算出转动角度以后便可以根据舵机的参数计算出脉冲宽度,控制舵机转动,舵机转角与PWM脉宽关系如表4-1所示。

在具体操作中PWM调制波的周期可以设置在20ms左右一定范围内,比如设置为10ms 或是30ms均可以使舵机正常转动,但是设置周期较长时,系统延迟时间较多,舵机转向会出现滞后,导致赛车冲出跑道;设置周期如果过短,系统输出PWM 调制波不稳定,舵机转动也会受影响,不能实现赛车的精确转向。经过反复测试,最终把输出PWM 调制波周期设定为13ms (用计数器实现)。 运行电机的转速以及舵机的转角,在软件上都是通过对PWM 波占空比进行设置来相应控制的。前面提到,舵机转角控制需要将两个

八位寄存器合成为一个十六位寄存器。程序中的舵机位置信号,当PWM调制波周期设为13ms时,因为总线频率为24MHz,用时钟SB,可计算得到16进制参数为9870H,舵机中间位置时占空比16进制参数为1680H,要分配给PWM6和7,分配时这2个端口的赋值必须是16进制,那么PWM模块初始化赋值为 PWMPER6= 0x98,PWMPER7= 0x70,PWMDTY6= 0x16,PWMDTY7= 0x80,因此这就牵涉到如何将1个十进制数分配为2个十六进制数问题。有2种方案,一种是除法取余,另一种是移位操作,前者编译生成的代码比后者要多,所以采用移位操作来实现,即取高位时与0xFF00先作“&”计算,然后将所得到的数向右移8位(>>8),即可取得高8位;同理,取低8位时只要与0x00FF作“&”计算即可(算法)。 2、结构和控制 一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。 工作原理:控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

舵机控制程序

舵机控制程序 Final revision on November 26, 2020

在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,

获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信

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

远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。 也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。 单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程: 例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms- 2ms=18ms,所以开始时在控制口发送高电平,然后

舵机控制程序

在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,

获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占

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

电路的精度难以达到舵机的控制精度要求。 也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。 单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程: 例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为 20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在

飞思卡尔 智能车舵机控制

智能车的制作中,看经验来说,舵机的控制是个关键.相比驱动电机的调速,舵机的控制对于智能车的整体速度来说要重要的多. PID算法是个经典的算法,一定要将舵机的PID调好,这样来说即使不进行驱动电机的调速(匀速),也能跑出一个很好的成绩. 机械方面: 从我们的测试上来看,舵机的力矩比较大,完全足以驱动前轮的转向.因此舵机的相应速度就成了关键.怎么增加舵机的响应速度呢?更改舵机的电路?不行,组委会不允许.一个非常有效的办法是更改舵机连接件的长度.我们来看看示意图: 从上图我们能看到,当舵机转动时,左右轮子就发生偏转.很明显,连接件长度增加,就会使舵机转动更小的转角而达到同样的效果.舵机的特点是转动一定的角度需要一定的时间.不如说(只是比喻,没有数据),舵机转动10度需要2ms,那么要使轮子转动同样的角度,增长连接件后就只需要转动5度,那么时间是1ms,就能反应更快了.据经验,这个舵机的连接件还有必要修改.大约增长0.5倍~2倍. 在今年中,有人使用了两个舵机分别控制两个轮子.想法很好.但今年不允许使用了.

接下来就是软件上面的问题了. 这里的软件问题不单单是软件上的问题,因为我们要牵涉到传感器的布局问题.其实,没有人说自己的传感器布局是最好的,但是肯定有最适合你的算法的.比如说,常规的传感器布局是如下图: 这里好像说到了传感器,我们只是略微的一提.上图只是个示意图,意思就是在中心的地方传感器比较的密集,在两边的地方传感器比较的稀疏.这样做是有好处的,大家看车辆在行驶到转弯处的情况: 相信看到这里,大家应该是一目了然了,在转弯的时候,车是偏离跑道的,所以两边比较稀疏还是比较科学的,关于这个,我们将在传感器中在仔细讨论。 在说到接下来的舵机的控制问题,方法比较的多,有人是根据传感器的状态,运用查表法差出舵机应该的转角,这个做法简单,而且具有较好的滤波"效果",能够将错误的传感器状态滤掉;还有人根据计算出来的传感器的中心点(比

51控制舵机程序大全

#include void InitTimer0(void) { TMOD = 0x01; TH0 = 0x0B1; TL0 = 0x0E0; EA = 1; ET0 = 1; TR0 = 1; }void delay(1)(void) { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void main(void) { InitTimer0(); P1_2=0; while(1); } void Timer0Interrupt(void) interrupt 1 { //20ms中断 TH0 = 0x0B1; TL0 = 0x0E0; P1_2=1; delay(1); P1_2=0; }

#include #include #include #define uchar unsigned char #define uint unsigned int sbit IN1=P0^0; sbit IN2=P0^1; sbit EA1=P0^5; sbitdj=P0^7; //舵机口 uint t=0;//中断次数 ucharzk;//高电平中断次数uchar p=0;//定义pwm占空比void delay(uint z) { uinti,j; for(i=0;i>8;//100us一次中断TL0=-100%256; if(t==0)zk=p; if(t=zk) dj=0; t++; if(t>=200) t=0;//20mspwm周期 } void turn_left() { IN1=1;IN2=0;EA1=1;//电机工作p=5;//0.5ms delay(600); } void turn_right() { IN1=1;IN2=0;EA1=1;//电机工作p=25;//2.5ms delay(600);

舵机控制C程序

舵机控制C程序 #include #defineucharunsignedchar #defineuintunsignedint /* 变量定义 */ ucharkey_stime_counter,hight_votage=15,timeT_counter; bitkey_stime_ok; /* 引脚定义 */ sbitcontrol_signal=P0^0; sbitturn_left=P3^4; sbitturn_right=P3^5; /***************************************************************** 名称:定时器0初始化 功能:20ms定时,11.0592M晶振 初值20ms 初值0.1ms *****************************************************************/ voidTimerInit() { control_signal=0; TMOD=0x01;//设置定时器0为工作方式1 EA=1;//开总中断 ET0=1;//定时器0中断允许 TH0=0xFF;//定时器装初值 TL0=0xA3; TR0=1;//启动定时器0 } /********************************************** 定时器0中断服务函数 ***********************************************/ voidtimer0(void)interrupt1using0 { TH0=0xFF; TL0=0xA3;//定时器0重新装入数值

舵机工作原理要点

舵机工作原理 标准的舵机有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来表示。 可变脉宽输出试验(舵机控制) 原创:xidongs 整理:armok / 2004-12-05 / https://www.360docs.net/doc/6c5890553.html,

舵机控制型机器人设计要点

课程设计项目说明书 舵机控制型机器人设计 学院机械工程学院 专业班级2013级机械创新班 姓名吴泽群王志波谢嘉恒袁土良指导教师王苗苗 提交日期 2016年4 月1日

华南理工大学广州学院 任务书 兹发给2013级机械创新班学生吴泽群王志波谢嘉恒袁土良 《产品设计项目》课程任务书,内容如下: 1. 题目:舵机控制型机器人设计 2.应完成的项目: 1.设计舵机机器人并实现运动 2.撰写机器人说明书 3.参考资料以及说明: [1] 孙桓.机械原理[M].北京.第六版;高等教育出版社,2001 [2] 张铁,李琳,李杞仪.创新思维与设计[M].国防工业出版社,2005 [3] 周蔼如.林伟健.C++程序设计基础[M].电子工业出版社.北京.2012.7 [4] 唐增宏.常建娥.机械设计课程设计[M].华中科技大学出版社.武汉.2006.4 [5] 李琳.李杞仪.机械原理[M].中国轻工业出版社.北京.2009.8 [6] 何庭蕙.黄小清.陆丽芳.工程力学[M].华南理工大学.广州.2007.1 4.本任务书于2016 年2 月27 日发出,应于2016 年4月2 日前完 成,然后提交给指导教师进行评定。 指导教师(导师组)签发2016年月日

评语: 总评成绩: 指导教师签字: 年月日

目录 摘要 (1) 第一章绪论 (2) 1.1机器人的定义及应用范围 (2) 1.2舵机对机器人的驱动控制 (2) 第二章舵机模块 (3) 2.1舵机 (3) 2.2舵机组成 (3) 2.3舵机工作原理 (4) 第三章总体方案设计与分析 (6) 3.1 机器人达到的目标动作 (6) 3.2 设计原则 (6) 3.3 智能机器人的体系结构 (6) 3.4 控制系统硬件设计 (6) 3.4.1中央控制模块 (7) 3.4.2舵机驱动模块 (7) 3.5机器人腿部整体结构 (8) 第四章程序设计 (9) 4.1程序流程图 (9) 4.2主要中断程序 (9) 4.3主程序 (11) 参考文献 (13) 附录 (14) 一.程序 (14) 二.硬件图 (17)

舵机原理及其使用详解

舵机的原理,以及数码舵机VS模拟舵机 一、舵机的原理 标准的舵机有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。注意,给舵机供电电源应能提供足够的功率。控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20ms(即频率为50Hz)。当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。某型舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用围3来表示。

舵机算法

根据前面介绍的CMOS图像传感器采集处理得到的只是40行中每一行的黑线坐标。 并没有得出赛道的具体形状,到底是直道还是弯道,是大弯还是急弯,是偏向一个方向的弯道还是“S型”弯道,是“大S型”弯道还是“小S型”弯道。这就可以通过曲率的计算来得出。下面给出曲率的具体计算方法。 首先,将扫描到的40行中每9行分为一组,而且彼此交叉,也就是说,在能扫描到的情况下,划分为从第0行到第8行,从第1行到第9行,从第2行到第10行,依此类推,最后从21行到第29行,一共可以划分为22段,分别计算每一段的曲率,以第一段为例,计算的方法为:将第i行的坐标定义为coordinate[i],将CMOS图像传感器的中心坐标定义为middle,那么每一行相对于中心坐标的偏差就为 ek[i]=coordinate[i]-middle (4.1) 再乘以每一行各自的校正值emendation[i],计算公式为 ek[i]=ek[i]*emendation[i] (4.2) 就得到了各行实际偏离中心位置的距离。然后用第0行的偏差加上第8行的偏差之和除以2再减去第4行的偏差,得出一个相对偏差ek_comparatively。ek_comparatively的计算公式为 ek_comparatively=(ek[8]+ek[0])/2-ek[4] (4.3) 然后计算出该段曲线对应的直道,即将第0行的黑点与第8行的黑点直接相连的直线的长度计算出来,计算公式为 distance_beeline=sqrt((ek[8]-ek[0])*(ek[8]-ek[0])+48*48) (4.4) 最后将公式(4.3)除以公式(4.4),得到最后曲线的弯曲度为curve_degree。计算公式为 curve_degree=ek_comparatively/ distance_beeline (4.5) 就得出了曲线的弯曲程度,然后根据每一段的弯曲程度,最终得出所扫描到的全部道路的形状。 4.2.2 道路形状精确识别算法 利用4.1.3中对道路弯曲程度的计算,根据扫描到的道路每段的弯曲程度,可以对道路形状进行较为精确的识别,在进行具体的道路识别之前,先给出几个比较模糊的概念,这是描述弯道的弯曲程度的,弯曲程度非常小,比较小,比较大,非常大。这几个概念在下面对于赛道具体识别时有提及。 (1)直道的识别

PWM控制舵机 C程序

#include "reg52.h" sbit control_signal=P0^0; sbit turn_left=P3^0; sbit turn_right=P3^1; unsigned char PWM_ON=15 ;//定义高电平时间 /******************************************************************/ /* 延时函数 */ /******************************************************************/ void delay(unsigned int cnt) { while(--cnt); } void display() { if(PWM_ON>=5&&PWM_ON<=7) P1=0xFD; //1灯亮,舵机接近或到达右转极限位置if(PWM_ON>7&&PWM_ON<=10) P1=0xFB; //2灯亮 if(PWM_ON>10&&PWM_ON<=13) P1=0xF7; //3灯亮 if(PWM_ON>13&&PWM_ON<=16) P1=0xEF; //4灯亮,舵机到达中间位置 if(PWM_ON>16&&PWM_ON<=19) P1=0xDF; //5灯亮 if(PWM_ON>19&&PWM_ON<=22) P1=0xBF; //6灯亮 if(PWM_ON>22&&PWM_ON<=25) P1=0x7F; //7灯亮,舵机接近或到达左转极限位置} /******************************************************************/ /* 主函数 */ /******************************************************************/ void main() { //bit Flag; TMOD |=0x01; //定时器设置 0.1ms in 11.0592M crystal TH0=(65536-78)/256; TL0=(65536-78)%256; //定时0.1mS ET0=1;//定时器中断打开 EA=1;//总中断 //IE= 0x82; //打开中断 TR0=1; // PWM_ON=15 //的取值范围是6-25 while(1) { if(turn_left==0) { delay(1000); if(turn_left==0) { while(!turn_left){}

关于舵机的控制

电子科技大学:(清晰明了,代码看不懂) 其实在车速不快的情况下只用车前40cm 内的黑线偏差就可以让赛车沿黑线行驶,问题是在赛车高速行驶时需要对前方 更远的赛道信息进行预判,例如控制赛车入弯前减速、使赛车走最优路径等。因此我们使用距离车前第21 行、22 行、23 行的黑线平均位置计算赛车离黑线 的偏差控制舵机拐向,用更远端的黑线来进行赛道预判。计算相邻两段黑线的 斜率还可以判断出小S 弯,让赛车在小S 弯直冲。 如图5.5.3.1 所示,Mid_Erro 为赛车当前的方向偏差,用于控制舵机当前时 刻的转向。Top_Erro 为图像最远端离中线的偏差,用于进行赛车前方赛道预判,Top_Erro 越大,减速越大 如图5.5. 3.2 所示,只要计算相隔S_Row 行的黑线的相对斜率Up_Erro 和Down_Erro ,如果Up_Erro 和Down_Erro 方向相反而且大于预设的阈值就可 以判定出小S 弯,让输出的偏移量Erro 缩小,减小舵机的转向,使小车减小 抖动。 桂林理工: D_zhongxin DJ_chu+ (D_Kp = + + xiu_D_Kp) (error dd_error)/ 10 - * error/10 D_Kd * 其中,D_zhongxin是车模前轮摆正时的参数,为1460;D_Kp是舵机PD控制的P值;xiu_D_Kp 是舵机P值的修正值;error是当前图像的黑线中心的偏差;D_Kd是舵机PD控制中的D值;dd_error是上次图像黑线中心的偏差。DJ_chu是输出给舵机的PWM值。 军械工程:斜率做赛道判断(同桂林) void Direction_Control(void) { Control_Row = Good_Road_End-1; if(Control_Row_Far == 1) //40 行控制

舵机及转向控制原理

舵机及转向控制原理 1、概述 2、舵机的组成 3、舵机工作原理 4、舵机选购 5、舵机使用中应注意的事项 6、辉盛S90舵机简介 7、如何利用程序实现转向 8、51单片机舵机测试程序 1、概述 舵机也叫伺服电机,最早用丁船舶上实现其转向功能,由丁可以通过程序连续控制其转角,因而被广泛应用智能小车以实现转向以及机器人各类关节运动中,如图1、图2所示。

舵机是小车转向的控制机构,具有体积小、力矩大、外部机械设计简单、稳定性高等特点,无论是在硬件设计还是软件设计,舵机设计是小车控制部分重要的组成部分,图3为舵机的外形图。 2、舵机的组成 一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等,如图4、图5所示。

变速齿轮组 诃调电位器小型宜流电机 fff 图4舵机的组成示意图 图5舵机组成 舵机的输入线共有三条,如图6所示,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。电源有 两种规格,一是4.8V, 一是6.0V,分别对应不同的转矩标准,即输出力矩不同, 6.0V 对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。另外要注意一点,SANW曲某些型号的舵机引线电源线在边上而不是中间,需要辨认。但记住红色为电源,黑色为地线,一般不会搞错。

输出转轴 电源线知 地线GND 控制线 图6舵机的输出线 3、舵机工作原理 控制电路板接受来自信号线的控制信号, 控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘 转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进 行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到 目标停止。其工作流程为:控制信号T控制电路板T电机转动T齿轮组减速T舵盘转动T位置反馈电位计T控制电路板反馈。流,才可发挥舵机应有的性能。 舵机的控制信号周期为20MS的脉宽调制(PWM信号,其中脉冲宽度从0.5-2.5MS,相对应的舵盘位置为0—180度,呈线性变化。也就是说,给他提供一定的脉宽,它的输出轴就会保持一定对应角度上,无论外界转矩怎么改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应位置上如图7所求。舵机内部有一个基准电路,产生周期为20MS宽度1.5MS的基准信号,有一个比出较器,将外加信号与基准信号相比较,判断出方向和大小,从而生产电机的转动信号。由此可见,舵机是一种位置伺服驱动器,转动范围不能超过180度,适用丁那些需要不断变化并可以保持的驱动器中,比如说机器人的关 节、飞机的舵面等。

舵机控制

利用单片机PWM信号进行舵机控制(图) 基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵 活应用。 在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。 图1舵机的控制要求 舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图1所示。 单片机实现舵机转角控制 可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。 也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。 单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设

舵机详解

舵机详解 舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。 舵机的形状和大小多的让人眼花缭乱,大致可以分为下面这几种(如图所示) 最右边的是常见的标准舵机,中间两个小的是微型舵机,左边魁梧的那个是大扭力舵机。图上这几种舵机都是三线控制。 制作机器人常用的舵机有下面几种,而且每种的固定方式也不同,如果从一个型号换成一个型号,整个机械结构都需要重新设计。 第一种是MG995,优点是价格便宜,金属齿轮,耐用度也不错。缺点是扭力比较小,所以负载不能太大,如果做双足机器人之类的这款舵机不是很合适,因为腿部受力太大。做做普通的六足,或者机械手还是不错的。

第二种是SR 403,这款舵机是网友xqi2因MG995做双足机器人抖动太厉害,摸索找到的,经过测试。制作双足机器人不错~~~至少不抖了。优点是扭力大,全金属齿轮,价格也还算便宜。缺点嘛。。。做工很山寨。。。其他缺点等待反馈

第三种就是传说中的数字舵机AX12+,这个是久经考验的机器人专用舵机。除了价格高,使用RS485串口通信(控制板就得换数字舵机专用控制板),其他都是优点。

下图是一个普通模拟舵机的分解图,其组成部分主要有齿轮组、电机、电位器、电机控制板、壳体这几大部分。 电机控制板主要是用来驱动电机和接受电位器反馈回来的信息。电机嘛,动力的来源了,这个不用太多解释。电位器这里的作用主要是通过其旋转后产生的电阻的变化,把信号发送回电机控制板,使其判断输出轴角度是否输出正确。齿轮组的作用主要是力量的放大,使小功率电机产生大扭矩。

MG996R舵机控制

MG996R舵机控制方法 红:+5v,棕:GND,黄:信号 基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用 在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。 图1 舵机的控制要求 舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图1 所示。 单片机实现舵机转角控制 可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。

也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。 单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。 当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18m,s 所以开始时在控制口发送高电平,然后设置定时器在 2ms 后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动。 为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms。 软件流程如图2 所示。

舵机控制详解

舵机控制详解 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】

本人学习了一段时间的舵机,将自己所遇到的问题与解决方案和大家分享一下,希望对初学者有所帮助!!!! 一、舵机介绍 1、舵机结构 舵机简单的说就是集成了直流电机、电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元。 舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达,英文 servo。 舵机组成:舵盘、减速齿轮、位置反馈电位计、直流电机、控制电路板等。 舵盘 上壳 齿轮组 中壳 电机 控制电路 控制线 下壳 工作原理:控制信号控制电路板电机转动齿轮组减速 舵盘转动位置反馈电位器控制电路板反馈 简单的工作原理是控制电路接收信号源的控制信号,并驱动电机转动; 齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍 数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角 度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动 到目标角度或保持在目标角度。 舵机接线方法:三线接线法:(1)黑线(地线) 红线(电源线)两个标准:和6V 蓝线/黄线(信号线) (2)棕线(地线) 红线(电源线)两个标准:和6V

黄线(信号线) 二、舵机PWM信号介绍 1、PWM信号的定义 PWM信号为脉宽调制信号,其特点在于他的上升沿与下降沿之间的时间宽度。具体的时间宽窄协议参考下列讲述。我们目前使用的舵机主要依赖于模型行业的标准协议,随着机器人行业的渐渐独立,有些厂商已经推出全新的舵机协议,这些舵机只能应用于机器人行业,已经不能够应用于传统的模型上面了。 关于舵机PWM信号的基本样式如下图 其PWM格式注意的几个要点: (1)上升沿最少为,为之间; (2)控制舵机的PWM信号周期为20ms; 2.PWM信号控制精度制定 1 DIV = 8uS ; 250DIV=2mS PWM上升沿函数: + N×DIV 0uS ≤ N×DIV ≤ 2mS ≤ +N×DIV ≤ 3、舵机位置控制方法 舵机的转角达到185度,由于采用8为CPU控制,所以控制精度最大为256份。目 8位AT89C52CPU,其数 据分辨率为256,那么经过 舵机极限参数实验,得到应 该将其划分为250份。 那么的宽度为2mS = 2000uS。 2000uS÷250=8uS 则:PWM的控制精度为8us 我们可以以8uS为单位 递增控制舵机转动与定位。 舵机可以转动185度, 那么185度÷250=度, 则:舵机的控制精度为度

相关文档
最新文档