1、2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】摘要: 通过对该测控系统结构和特点的分析,结合现代控制技术设计理念实现了以微控制器MC9S12XS128系列单片机为核心的旋转倒立摆控制系统。通过采集的角度值与平衡位置进行比较,使用PD算法,从而达到控制电机的目的。其工作过程为:角位移传感器WDS35D通过对摆杆摆动过程中的信号采集然后经过A/D采样后反馈给主控制器。控制器根据角度传感器反馈信号进行PID数据处理,从而对电机的转动做出调整,进行可靠的闭环控制,使用按键调节P、D的值,同时由显示模块显示当前的P、D值。 关键字:倒立摆、直流电机、MC9S12XS128单片
2、机 、角位移传感器WDS35D、PD算法目录一、设计任务与要求31 设计任务32 设计要求3二 系统方案41 系统结构42 方案比较与选择4(1) 角度传感器方案比较与选择4(2) 驱动器方案比较与选择5三 理论分析与计算51 电机的选型52 摆杆状态检测53 驱动与控制算法5四 电路与程序设计61 电路设计6(1)最小系统模块电路6(2)5110显示模块电路设计7(3)电机驱动模块电路设计8(4)角位移传感器模块电路设计8(5)电源稳压模块设计82 程序结构与设计9五 系统测试与误差分析105.1 测试方案105.2 测试使用仪器105.3 测试结果与误差分析106 结论11参考文献11附录
3、1 程序清单(部分)12附录2 主板电路图15附录3 主要元器件清单16一、设计任务与要求1 设计任务设计并制作一套简易旋转倒立摆及控制装置。旋转倒立摆的结构如图1所示。电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。摆杆E通过转轴D固定在旋转臂C的一端,当旋转臂C在电动机A驱动下作往复旋转运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。如下图所示2 设计要求基本要求:摆杆从处于自然下垂状态开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过60+60;从摆杆处于下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;在摆杆处于自然下垂状态下,外力拉起摆杆至接近165位
4、置,外力撤出同时,启动控制旋转臂使摆杆保持倒立状态时间不少于5s;期间旋转臂的转动不大于90。 发挥部分:从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立时间不少于10s;在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s内回复倒立状态;在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过360。二 系统方案1 系统结构系统包括MC9S12XS128单片机;直流电机和电机驱动模块;角位移传感器。由直流电机来控制旋转臂转动从而来使摆杆摆动,在摆杆的转轴处加上角位移传感器,使摆杆一开始能快速得摆动出来,并且能保持倒立的状态,框图如下
5、:MC9S12XS128单片机BTN7971驱动直流电机角位移传感器摆杆内置AD2 方案比较与选择(1) 角度传感器方案比较与选择 方案选择角位移传感器:角位移传感器它采用非接触式专利设计,与同步分析器和电位计等其他传统的角位移测量仪相比,有效地提高了精度。 方案选择陀螺仪:陀螺仪传感器最主要的特性是它的稳定性和进动性。它是用来感测和维持方向的装置,主要用在航空来判断方向,在此次设计中想到用陀螺仪来控制摆杆角度,但判断比较复杂,不实用。因此我们选择角位移传感器。(2) 驱动器方案比较与选择 方案选择L298:L298工作电压为12V,电流到2A。但是它的驱动能力弱,不满足我们的需求。方案选择B
6、TN7971:相对于L298,这款驱动器有着跟强大得驱动能力。它与单片机5V隔离保护单片机;它的PWM1,PWM2最高支持15V,此驱动集成的模块反应迅速,发热量小。因此我们选择BTN7971。三 理论分析与计算1 电机的选型一开始我们选择步进电机:步进电机可以实现开环控制,即通过驱动器信号输入的脉冲数量和频率实现步进电机的角度和速度控制,无需反馈信号。它可以旋转极小的角度,从而实现倒立摆的功能。但我们实际操作起来转速比较慢,加上旋转臂等后速度缓慢。后来选择直流电机:通过直流电机来带动旋转臂,从而带动摆杆。直流电机控制简单,只要加上合适的电压就会转,转速相比步进电机更快,比较适合本题的要求,而
7、且更适用于PD算法,便于摆杆保持倒立状态。2 摆杆状态检测 摆杆状态的检测主要要用角位移传感器,然后通过芯片内置AD每隔0.5ms读取到数据,再将数据转化成角度,通过PID算法调节电机直立效果。假如当摆杆在倒立状态时,然后用手往右旋转一个角度后松手(采用PD算法,当偏离平衡角度越大,则PD反馈给电机占空比的值就越大),角位移传感器则将角度信号传给AD,再通过PID算法给芯片,让电机向右旋转,使摆杆能保持倒立的状态。3 驱动与控制算法摆杆的运动时一个连续变化的过程,旋转的变化也是一个连续渐变的过程。在连续的闭环控制系统中,按偏差,比列,微分,积分进行的PID控制技术一种应用最广泛的控制方式。他具
8、有庞简单,易于实现,适用面广等一系列优点。连续PID控制器也称比列积分微分指控器,即过程控制是按误差的比列,积分和微分对系统进行控制。PID算法的控制数学模型为:本程序采用PD控制,能够加大系统的反应速度。四 电路与程序设计1 电路设计(1)最小系统模块电路此次设计我们采用MC9S12XS128单片机,它是一款增强型16位单片机,该单片机采用CPU12X V2内核,可运行在40MHz总线频率上。存储器:128KB FLASH;2KB EEPROM;8KB RAM 。 A/D:16通道模数转换器;可选8位,10位和12位精度。PWM:8位9通道或16位4通道PWM。所有考虑用此芯片为最小系统。(
9、2)5110显示模块电路设计5110显示屏是一款经典的机型,它的性价比高,可以显示15个汉字,30个字符。价格便宜。接口就四根I/O即可驱动,速度快。用它来显示PID的P和D的数值。其按键1为选择参数,按键2为增加参数值,按键3为减少参数值,按键4为启动键,如下图所示。(3)电机驱动模块电路设计此次倒立摆的旋转臂由直流电机控制旋转,通过BTN7971驱动器来驱动。BTN7971内部包含2通道逻辑驱动电路,可以方便的驱动直流电机。BTN7971的供电电压典型值为7.2V,电流为1A。BTN7971驱动模块连线为:VCC接5V给芯片供电;EN端接高电平使能;P1/P5为PWM占空比控制与单片机连接
10、;OUT1/2连接直流电机。(4)角位移传感器模块电路设计该WDS35D传感器采用特殊形状的转子和绕线线圈,模拟线性可变差动传感器的线性位移,有较高的可靠性和性能,转子轴的旋转运动产生线性输出信号,围绕出厂预置的零位移动60度。此输出信号的相位指示离开零位的位移方向。转子的非接触式电子耦合使传感器具有无限的分辨率,即绝对测量度可达到零点几度。 用高精度角位移传感器WDS35D来采集摆杆的运动信号,本系统采用一个角度传感器装在转轴上。这样可以控制电机精确的转动。只需给传感器一个5V的电压,当使摆杆摆动时,转轴会转动,传感器也会随着转轴转动并且输出一系列连续变化的模拟值。可以将该模拟值直接送给单片
11、机内部的AD进行采样再用数学拟合算法曲线处理之后控制电机转动。传感器A/D转换控制器角度信号电压信号数字信号采集电压:;。由这两个公式推算出(5)电源稳压模块设计如下图为电源稳压模块,可以产生稳定的5V的电压来供电。2 程序结构与设计显示P,D值开始超频,初始化端口5110初始化,清屏For(;)按键扫描参数修改五 系统测试与误差分析5.1 测试方案硬件检测:采用数字万用表对电路板连接情况测试。基础部分检测:基础部分的三个要求。发挥部分检测:发挥部分的三个要求。5.2 测试使用仪器量角器,数字万用表VC890D,示波器DS2101,秒表。5.3 测试结果与误差分析 摆杆处于自然下垂状态,观察摆
12、角到达60和时间。次数1234时间2s1.9s1.89s1.94s 摆杆处于自然下垂状态,观察摆杆完成圆周运动时间次数1234时间3.5s3.2s3.5s3.5s 摆杆处入自然下垂状态,外力拉起摆杆接近165,摆杆保持倒立不少于5s,观察旋转臂的转动角度。次数1234角度0.50.6失败0.5失败原因:电机马力不足,pd值未调好。 摆杆处入自然下垂状态,然后尽快让摆杆倒立并保持10s以上,观察所需时间。次数1234时间失败失败失败失败失败原因:电机马力不足,摆杆头重脚轻而且调试时间不足,导致PD值未调好6 结论本系统以单片机为核心部分,根据角度传感器采集来的信息,经计算得出数据来控制直流电机转
13、动,从而达到系统的基本要求。在系统设计中,力求硬件线路简单,充分发挥软件编程灵活的特点,来满足系统设计的要求。因为时间有限,该系统还有许多值得修改的地方;比如对此系统来讲,PID算法并不是最优算法;硬件电路的设计还需优化,以减小系统的阻力等等。因此,系统还有待改进。在这段时间内的试验过程中,我们遇到过许多的问题,需要我们自己去考虑,去动手,去解决。平时我们多是时间只是在学习理论知识,在准备比赛和进行比赛这段时间内,我们将平时课本上学习的知识真正的运用到实践中,经过此次竞赛我们认识到了团队合作的重要性,充分领会了大赛的精神,全队每个成员均得到宝贵的创作经验。参考文献1大学生电子设计竞赛组委会.第
14、五届全国电子设计竞赛获奖作品编选.北京:北京理工大学出版社,20032何立民.单片机高级教程应用设计.北京:北京航空航天大学出版社,20003朱定华.单片机原理与接口技术.电子工业出版社,20064吴建平.传感器原理及应用.北京:机械工业出版社,20095郁有文.传感器原理及工程应用.西安:西安电子科技大学出版社,2008附录1 程序清单(部分)/主函数#include /* common defines and macros */#include derivative.h /* derivative-specific definitions */#include init.h #define
15、 PITTIME 800 /定时,1000*5usint PJT=478; /平衡位置角度传感器Ad值void PLL(void) /48MHz 外部时钟16MHz CLKSEL=0X00; /禁止使用锁相环,系统频率=外部晶振,总线频率=系统频率/2PLLCTL_PLLON=1; /打开锁相环 SYNR =0x40 | 0x03; /PLLclock=2*osc*(1+SYNR)/(1+REFDV)=96M; REFDV=0x80 | 0x01; POSTDIV=0x00; _asm(nop); /当POSTDIV=0x00时,BUS CLOCK=PLLclock/2=48M_asm(nop
16、);while(!(CRGFLG_LOCK=1); /等待锁相环初始化完成CLKSEL_PLLSEL =1; /使用锁相环频率作为系统频率void PIT_init(void) /定时中断初始化函数5uS定时中断设置 PITCFLMT_PITE=0; /PIT禁止PITCE_PCE0=1; /定时器通道0使能PITMTLD0=199; /8位定时器初值设定,240分频,在48MHzBusClock下,为0.2MHz。即5usPITLD0=PITTIME-1; /16位定时器初值设定。10msPITINTE_PINTE0=1; /定时器中断通道0中断使能PITMUX_PMUX0=0; /通道0的
17、16位定时器与微时基0连接 PITCFLMT_PITE=1; /PIT使能 void main(void) /* put your own code here */ DisableInterrupts; IRQCR=0x00; /关闭PE0 1中断 ECLKCTL=0XC0; /关闭PE4 ECLOCK PLL(); INIT_PWM(); INIT_AD(); PIT_init(); UART_Init (); DDRA=0xFF; PORTA=0x00; PORTB=0x00; DDRB=0x00; LCD_init(); /初始化LCD模块 LCD_clear(); /清屏幕 xian(
18、);EnableInterrupts; for(;) keyscan(); canshuxiugai(); jdp(KKK); jdd(KKP); /初始化头文件#ifndef _INIT_H_#define _INIT_H_extern void INIT_AD(void) ;extern unsigned int AD_capture(unsigned char s);extern void INIT_PWM(void);extern void MOTOR_set(int LL); extern void speedout(void);extern void LCD_init(void);
19、extern void LCD_clear(void);extern void xian(void);extern void LCD_write_zimu(unsigned char row, unsigned char page,unsigned char c);extern void jdp(int number0);extern void jdd(float number1);extern int PJT,KKK;extern int leftout,KAI;extern float OutData4;extern void UART_Init(void);extern void Out
20、Put_Data(void);extern void uart_putchar(void);extern void keyscan(void);extern void canshuxiugai(void);extern void delayms(unsigned int x);extern float KKP,ZZ;#endif附录2 主板电路图附录3 主要元器件清单序号名称数量备注1MC9S12XS128芯片1最小系统版2直流电机驱动BTN79711驱动直流电机3直流电机RS-380SH1控制旋转臂4角位移传感器WDS35D1旋转角度测量55110显示屏1显示PID值6主板1放置单片机第 16 页 共 16 页