基于单片机的快速位置伺服系统的设计
O 引言
本设计要求对某火炮的水平和高低角进行控制,达到快速位置伺服系统的要求。而这个火炮角度控制系统首先要求有快速性,它的反应时间大于或等于12°/s;角度转动控制精度小于或等于1’,水平角转动范围从一120°~+120°,高低角转动范围从0°~+85°;最后系统要有很好的稳定性和动态性能。
由于位置伺服系统一般是以足够的位置控制精度、位置跟踪精度和足够快的跟踪速度作为它的主要控制目标,系统运行时要求能以一定的精度随时跟踪指令的变化。所以对于这种快速位置伺服系统,要求整个系统各部分配合良好,其中的关键是控制器的选择,综合考虑高精度、抗干扰能力、灵活性、可靠性、实时性、性价比等各因素的情况下。选择了Frees—cale公司的MC9Sl2DGl28B作为控制器。MC9Sl2DGl28B芯片是一款16位的单片机,功能强大,性能优越。本文采用该型号的单片机保证了所设计系统的稳定可靠。
1 系统控制方案
由于设计的角度伺服系统的负载比较大,而且相对于工业控制要求而言系统精度和快速性要求高,所以整个系统采用混合闭环的控制结构,所谓混合闭环的控制结构,就是系统内同时存在半闭环和闭环。半闭环起到控制作用,而全闭环只用于稳态误差补偿,两者相结合可获得较高的位置控制精度和跟踪速度。包括:MJX40—14型光电编码器、90LCX一3直流伺服电机、12A8型PWM直流伺服电机驱动器、单片机控制系统。单片机控制系统由MC9Sl2DGl28B单片机实现,使用Code Warrior for HCl2 V4.6编译器,采用C语言编程。由于水平角和高低角的控制是一样的,而且共用一个单片机,以角度控制方框图(图1)来说明。
如图1所示,系统的任务是使光电编码器测得的炮架转动角度θ2与给出的指令θ1相等。当θ1≠θ2时,θ1一θ2的偏差信号在单片机里进行处理,放大后输入到PWM直流伺服电机驱动器,由PWM驱动器驱动直流伺服电机,伺服电机带动减速器,驱动炮架向着减少偏差的方向移动,直到θ1=θ2,电机停止转动,达到目标。同时,炮架要准确的跟踪目标,必须减少在跟踪过程中可能出现的速度变化(如风速等原因),因为直流伺服电机本身带有测速机端,可以把速度反馈信号进行负反馈输入到PWM伺服电机驱动器,这样使转动机械的转速度变化很小,起着稳速的作用。
2 硬件系统设计
2.1 总体设计
整个硬件系统采用模块化思想设计,硬件系统框图如图2所示,分为单片机CPU最小系统、键盘/显示控制模块、直流伺服电机驱动电路、系统输入模块、光电编码器等。设计时,各个模块可相对独立设计调试,最后集成为整个系统。
2.2 模块结构和功能简要说明
CPU最小系统:系统的主控模块,用以控制和协调其它模块工作。
键盘/显示控制:由键盘及LED管理芯片CH451控制。系统输入模块:用通用8155芯片做数据采集,获取光电编码器所测得的火炮当前角度(位置)值,并传给主控芯片。伺服电机驱动电路:用带有缓冲基准输入的双路12位电压输出数字一模拟转换器(TLC5618)作为单片机的一个外围的D/A接口;当系统把偏差值算好后,利用PID算法得出的数据量输出到两路TLC5618,再通过驱动器去驱动水平和高低角的伺服电机,精确控制火炮的高低角和水平角位置和速度。
SCI通信:通过串行通信模块。系统可以与上位机连接,方便对系统软件的更新和升级,且可通过上位机进行控制角度控制,监视单片机的输入与输出。光电编码器:用于得到炮架的转动角度。
2.3 主要模块设计 2.3.1 单片机CPU最小系统
HCSl2系列MCU的硬件结构中仅有一个MCU(微控制器)是无法工作的,它必须结合其它相应的外围电路(即MCU支撑电路),才能构成一个最小系统。HCSl2系列MCU的最小系统一般包括电源电路、时钟电路、复位电路、BDM调试头电路,MC9Sl2DGl28芯片最小系统支撑电路示意图如图3所示。其中各个部分功能如下:
(1)电源电路主要给MCU提供+5V,+12V和+3.3V电源。
(2)时钟电路给MCU提供一个外接的石英晶振。
(3)复位电路主要完成系统上电复位和系统在运行时用户按键复位。
(4)BDM接口电路主要完成与BDM调试工具相连,向MC9S12单片机写入和调试程序。
2.3.2 键盘/显示控制电路
键盘控制模块采用键盘及LED管理芯片CH451。CH45l是一个整合了数码管显示驱动和键盘扫描控制以μP监控的多功能外围芯片。CH451内置RC振荡电路,可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位等功能;同时还可以进行64键的键盘扫描;CH451通过可以级联的串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。该芯片支持SPI同步串行通讯方式,可以与MC9S12DGl28B单片机的SPI通讯口进行告诉数据通讯,控制方便。键盘采用4×4矩阵式键盘,系统共使用16个按键。显示数据用数码管,由键盘输入火炮要旋转的水平和高低角度值,并显示出来,系统第一次采集来的角度值也是通过它显示的。
2.3.3 系统输入模块
从光电码盘中输出的数据有15位,要是单一的用单片机去读取光电码盘的数据,一个光电码盘就会用到15个数据线,占用了单片机的大量资源。利用8155的丰富的I/O口资源,可以减少对单片机资源的占用。单片机给光电编码器一个读取信号脉冲,8155的PA和PB口立即得到光电编码器的数据,并存到了PA和PB寄存器中,此时单片机只要读取8155的PA和PB寄存器就能得到光电码盘的数据,通过计算就能获得此时炮架的方位角和高低角。
2.3.4 伺服电机驱动电路
对于一般的D/A转换器的输入端都用并行输入,但是前面的芯片已经占用了单片机大量的接口,为了系统的输入输出能同步进行,本设计选用了串行输入的TLC5618,它是一种快速带缓冲基准输入(高阻抗)的双路12位电压输出数字一模拟转换器(DAC),弥补了串行输出的速度慢的不足,TLC5618具有1.21 MHz的输入数据更新速率,DACA和DACB两路同时更新,O.5LSB的建立时间为2.5 ms,它的最大串行时钟速率为20 MHz,转换速度达到要求;且它有两路12位CMOS电压输出,精度符合设计要求;高阻抗基准输入使输出有很强抗干扰能力。TLC5618在+5V单电源工作,其输出电压范围为基准电压的两倍,因此,电路设计采用2.5V基准电压。通过CMOS兼容的3线串行总线,可对TLC5618实现数字控制,单片机串行数据通过PTl输入TLC5618,串行时钟通过PT2输入,PTO接片选端,TLC5618接收到数据后,经过数模转换,产生O~5V的模拟信号,经过减法器,得到一2.5~2.5的模拟信号,只有达到一1OV~10V的模拟信号才能更精确的控制电机,所以用高速放大器LM318进行两级两倍放大,就可以达到设计的要求。
MC9S12DGl28 快速位置伺服系统 相关文章:
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)