全国电子设计大赛报告一等奖

发布时间:2020-08-02 07:11:40

2013年全国大学生电子设计竞赛

简易旋转倒立摆及控制装置(C题)

【本科组】

摘要

通过对该测控系统结构和特点的分析,结合现代控制技术设计理念实现了以微控制器MC9S12XS128系列单片机为核心的旋转倒立摆控制系统。通过采集的角度值与平衡位置进行比较,使用PD算法,从而达到控制电机的目的。其工作过程为:角位移传感器WDS35D通过对摆杆摆动过程中的信号采集然后经过A/D采样后反馈给主控制器。控制器根据角度传感器反馈信号进行PID数据处理,从而对电机的转动做出调整,进行可靠的闭环控制,使用按键调节PD的值,同时由显示模块显示当前的PD值。

关键字

倒立摆、直流电机、MC9S12XS128单片机 、角位移传感器WDS35DPD算法

一、设计任务与

1 设计任务

计并制作一套简易旋转倒立摆及控制装置。旋转倒立摆的结构如图1所示。电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。摆杆E通过转D固定在旋转臂C的一端,当旋转臂C电动机A驱动下作往复旋转运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。如下图所示

2 设计要求

基本要求:①摆杆从处于自然下垂状态开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过﹣60°~+60°;②从摆杆处于下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;③在摆杆处于自然下垂状态下,外力拉起摆杆至接近165°位置,外力撤出同时,启动控制旋转臂使摆杆保持倒立状态时间不少于5s;期间旋转臂的转动不大于90°。

发挥部分:①从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立时间不少于10s;②在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s内回复倒立状态;③在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过360°。

系统方案

1 系统结构

系统包括MC9S12XS128单片机;直流电机和电机驱动模块;角位移传感器。由直流电机来控制旋转臂转动从而来使摆杆摆动,在摆杆的转轴处加上角位移传感器,使摆杆一开始能快速得摆动出来,并且能保持倒立的状态,框图如下:

2 方案比较与选择

1 角度传感器方案比较与选择

方案①选择角位移传感器:角位移传感器它采用非接触式专利设计,与同步分析器和电位计等其他传统的角位移测量仪相比,有效地提高了精度。

方案②选择陀螺仪:陀螺仪传感器最主要的特性是它的稳定性和进动性。它是用来感测和维持方向的装置,主要用在航空来判断方向,在此次设计中想到用陀螺仪来控制摆杆角度,但判断比较复杂,不实用。

因此我们选择角位移传感器。

2 驱动器方案比较与选择

方案①选择L298L298工作电压为12V,电流到2A但是它的驱动能力弱,不满足我们的需求。

方案②选择BTN7971:相对于L298,这款驱动器有着跟强大得驱动能力。它与单片机5V隔离保护单片机;它的PWM1PWM2最高支持15V,此驱动集成的模块反应迅速,发热量小。

因此我们选择BTN7971

理论分析与计算

1 电机的选型

一开始我们选择步进电机:步进电机可以实现开环控制,即通过驱动器信号输入的脉冲数量和频率实现步进电机的角度和速度控制,无需反馈信号。它可以旋转极小的角度,从而实现倒立摆的功能。但我们实际操作起来转速比较慢,加上旋转臂等后速度缓慢

后来选择直流电机:通过直流电机来带动旋转臂,从而带动摆杆。直流电机控制简单,只要加上合适的电压就会转,转速相比步进电机更快,比较适合本题的要求,而且更适用于PD算法,便于摆杆保持倒立状态。

2 摆杆状态检测

摆杆状态的检测主要要用角位移传感器,然后通过芯片内置AD每隔0.5ms读取到数据,再将数据转化成角度,通过PID算法调节电机直立效果。假如当摆杆在倒立状态时,然后用手往右旋转一个角度后松手(采用PD算法,当偏离平衡角度越大,则PD反馈给电机占空比的值就越大),角位移传感器则将角度信号传给AD,再通过PID算法给芯片,让电机向右旋转,使摆杆能保持倒立的状态。

3 驱动与控制算法

摆杆的运动时一个连续变化的过程,旋转的变化也是一个连续渐变的过程。在连续的闭环控制系统中,按偏差,比列,微分,积分进行的PID控制技术一种应用最广泛的控制方式。他具有庞简单,易于实现,适用面广等一系列优点。

连续PID控制器也称比列—积分—微分指控器,即过程控制是按误差的比列,积分和微分对系统进行控制。

PID算法的控制数学模型为:

本程序采用PD控制,能够加大系统的反应速度。

电路与程序设计

1 电路设计

1)最小系统模块电路

此次设计我们采用MC9S12XS128单片机,它是一款增强型16位单片机,该单片机采用CPU12X V2内核,可运行在40MHz总线频率上。存储器:128KB FLASH2KB EEPROM;8KB RAM A/D:16通道模数转换器;可选8位,10位和12位精度。PWM89通道或164通道PWM。所有考虑用此芯片为最小系统。

25110显示模块电路设计

5110显示屏是一款经典的机型,它的性价比高,可以显示15个汉字,30个字符。价格便宜。接口就四根I/O即可驱动,速度快。用它来显示PIDPD的数值。其按键1为选择参数,按键2为增加参数值,按键3为减少参数值,按键4为启动键,如下图所示。

3)电机驱动模块电路设计

此次倒立摆的旋转臂由直流电机控制旋转,通过BTN7971驱动器来驱动。BTN7971内部包含2通道逻辑驱动电路,可以方便的驱动直流电机。BTN7971的供电电压典型值为7.2V,电流为1ABTN7971驱动模块连线为:VCC5V给芯片供电;EN端接高电平使能;P1/P5PWM占空比控制与单片机连接;OUT1/2连接直流电机。

4)角位移传感器模块电路设计

WDS35D传感器采用特殊形状的转子和绕线线圈,模拟线性可变差动传感器的线性位移,有较高的可靠性和性能,转子轴的旋转运动产生线性输出信号,围绕出厂预置的零位移动±60度。此输出信号的相位指示离开零位的位移方向。转子的非接触式电子耦合使传感器具有无限的分辨率,即绝对测量度可达到零点几度。

用高精度角位移传感器WDS35D来采集摆杆的运动信号,本系统采用一个角度传感器装在转轴上。这样可以控制电机精确的转动。只需给传感器一个5V的电压,当使摆杆摆动时,转轴会转动,传感器也会随着转轴转动并且输出一系列连续变化的模拟值。可以将该模拟值直接送给单片机内部的AD进行采样再用数学拟合算法曲线处理之后控制电机转动。

采集电压:。由这两个公式推算出

5)电源稳压模块设计

如下图为电源稳压模块,可以产生稳定的5V的电压来供电。

2 程序结构与设计

系统测试与误差分析

5.1 测试方案

①硬件检测:采用数字万用表对电路板连接情况测试。

②基础部分检测:基础部分的三个要求。

③发挥部分检测:发挥部分的三个要求。

5.2 测试使用仪器

量角器,数字万用表VC890D,示波器DS2101,秒表

5.3 测试结果与误差分析

1 摆杆处于自然下垂状态,观察摆角到达60°和时间。

次数

1

2

3

4

时间

2s

1.9s

1.89s

1.94s

2 摆杆处于自然下垂状态,观察摆杆完成圆周运动时间

次数

1

2

3

4

时间

3.5s

3.2s

3.5s

3.5s

3 摆杆处入自然下垂状态,外力拉起摆杆接近165°,摆杆保持倒立不少于5s,观察旋转臂的转动角度。

次数

1

2

3

4

角度

0.5

0.6

失败

0.5

失败原因:电机马力不足,pd值未调好。

4 摆杆处入自然下垂状态,然后尽快让摆杆倒立并保持10s以上,观察所需时间。

次数

1

2

3

4

时间

失败

失败

失败

失败

失败原因:电机马力不足,摆杆头重脚轻而且调试时间不足,导致PD值未调好

6

结论

本系统以单片机为核心部分,根据角度传感器采集来的信息,经计算得出数据来控制直流电机转动,从而达到系统的基本要求。在系统设计中,力求硬件线路简单,充分发挥软件编程灵活的特点,来满足系统设计的要求。因为时间有限,该系统还有许多值得修改的地方;比如对此系统来讲,PID算法并不是最优算法;硬件电路的设计还需优化,以减小系统的阻力等等。因此,系统还有待改进。

在这段时间内的试验过程中,我们遇到过许多的问题,需要我们自己去考虑,去动手,去解决。平时我们多是时间只是在学习理论知识,在准备比赛和进行比赛这段时间内,我们将平时课本上学习的知识真正的运用到实践中,经过此次竞赛我们认识到了团队合作的重要性,充分领会了大赛的精神,全队每个成员均得到宝贵的创作经验。

参考文献

[1]大学生电子设计竞赛组委会.《第五届全国电子设计竞赛获奖作品编选》.北京:北京理工大学出版社,2003

[2]何立民.《单片机高级教程应用设计》.北京:北京航空航天大学出版社,2000

[3]朱定华.《单片机原理与接口技术》.电子工业出版社,2006

[4]吴建平.《传感器原理及应用》.北京:机械工业出版社,2009

[5]郁有文.《传感器原理及工程应用》.西安:西安电子科技大学出版社,2008



附录1 程序清单(部分)

//主函数

#include .h> /* common defines and macros */

#include "derivative.h" /* derivative-specific definitions */

#include "init.h"

#define PITTIME 800 //定时,,1000*5us

int PJT=478; //平衡位置角度传感器Ad

void PLL(void) //48MHz 外部时钟16MHz

{

CLKSEL=0X00; //禁止使用锁相环,系统频率=外部晶振,总线频率=系统频率/2

PLLCTL_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);

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。即5us

PITLD0=PITTIME-1; //16位定时器初值设定。10ms

PITINTE_PINTE0=1; //定时器中断通道0中断使能

PITMUX_PMUX0=0; //通道016位定时器与微时基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();

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);

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 OutData[4];

extern void UART_Init(void);

extern void OutPut_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 主要元器件清单

序号

名称

数量

备注

1

MC9S12XS128芯片

1

最小系统版

2

直流电机驱动BTN7971

1

驱动直流电机

3

直流电机

RS-380SH

1

控制旋转臂

4

角位移传感器WDS35D

1

旋转角度测量

5

5110显示屏

1

显示PID

6

主板

1

放置单片机

全国电子设计大赛报告一等奖

相关推荐