2013年全国大学生电子设计竞赛C题题目,(简易旋转倒立摆)
2013年全国电子设计大赛题目简易频率特性测试仪(E题)

2013年全国大学生电子设计竞赛试题参赛注意事项(1)9 月4 日8:00 竞赛正式开始。
本科组参赛队只能在【本科组】题目中任选一题;高职高专组参赛队在【高职高专组】题目中任选一题,也可以选择【本科组】题目。
(2)参赛队认真填写《登记表》内容,填写好的《登记表》交赛场巡视员暂时保存。
(3)参赛者必须是有正式学籍的全日制在校本、专科学生,应出示能够证明参赛者学生身份的有效证件(如学生证)随时备查。
(4)每队严格限制3 人,开赛后不得中途更换队员。
(5)竞赛期间,可使用各种图书资料和网络资源,但不得在学校指定竞赛场地外进行设计制作,不得以任何方式与他人交流,包括教师在内的非参赛队员必须迴避,对违纪参赛队取消评审资格。
(6)9 月7 日20:00 竞赛结束,上交设计报告、制作实物及《登记表》,由专人封存。
简易频率特性测试仪(E 题)【本科组】一、任务根据零中频正交解调原理,设计并制作一个双端口网络频率特性测试仪,包 括幅频特性和相频特性,其示意图如图1 所示。
图1 频率特性测试仪示意图二、要求 1.基本要求制作一个正交扫频信号源。
(1)频率范围为1MHz~40MHz ,频率稳定度≤10-4;频率可设置,最小设置单位100kHz 。
(2)正交信号相位差误差的绝对值≤5º,幅度平衡误差的绝对值≤5%。
(3)信号电压的峰峰值≥1V,幅度平坦度≤5%。
(4)可扫频输出,扫频范围及频率步进值可设置,最小步进100kHz;要求连续扫频输出,一次扫频时间≤2s。
2.发挥部分(1)使用基本要求中完成的正交扫频信号源,制作频率特性测试仪。
a.输入阻抗为50Ω,输出阻抗为50Ω;b.可进行点频测量;幅频测量误差的绝对值≤0.5dB,相频测量误差的绝对值≤5º;数据显示的分辨率:电压增益0.1dB,相移0.1º。
(2)制作一个RLC 串联谐振电路作为被测网络,如图2 所示,其中R i 和R o 分别为频率特性测试仪的输入阻抗和输出阻抗;制作的频率特性测试仪可对其进行线性扫频测量。
2013年全国大学生电子设计大赛论文 本科组 简易旋转倒立摆及控制装置(C题)

2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【本科组】2013年9月6日摘要本系统采用XS128单片机最小系统作为控制中心、与电机驱动模块,减速直流电机、旋转臂、摆杆、反馈装置一起构成摆杆角度和电机角速度的双闭环调速系统。
由于直流电机属于一阶惯性,经分析在控制周期远小于电机时间常数的情况下建立电压与加速度的近似比例关系模型。
选择减速直流电机带动旋转臂旋转,采用增量式旋转编码器测量摆杆的角度,单片机输出占空比可变的PWM波控制电机角加速度,从而控制电机的加速度和给摆杆固定轴心的扭矩,实现控制摆杆的摆动幅度并达到和保持平衡状态。
控制方式采用PID控制,比例环节进行快速响应,积分环节实现无静差,微分环节减小超调,加快动态响应。
从而使该系统具有良好的性能,能很好的实现起振、圆周运动、倒立、360度倒立旋转,同时具有很好的抗扰动性能。
关键词:XS128 直流电机加速度倒立平衡目录1系统方案 (1)1.1 角度传感器模块的论证与选择 (1)1.2电机的论证与选择 (1)1.3 电机驱动模块的论证与选择 (1)2理论分析与计算 (2)2.1 机械结构设计的分析 (2)2.1.1 摆杆 (2)2.1.2 底座 (2)2.2电机物理模型的分析与计算 (2)2.2.1 直流电机的机械特性 (2)2.2.2 直流电机的动态特性分析 (2)2.2.3 直流电机加速度分析与计算 (3)2.3摆杆运动状态的分析及控制思路 (4)2.3.1摆杆起振 (4)2.3.2摆杆做圆周运动 (4)2.3.3摆杆达到倒立平衡状态 (4)2.4 摆杆控制量的分析与计算 (4)2.4.1 摆杆起振状态分析 (4)2.4.2 摆杆进入开始调整倒立平衡的角度范围 (5)3电路与程序设计 (6)3.1电路的设计 (6)3.1.1系统总体框图 (6)3.1.2 系统电路原理图 (6)3.1.3 电机驱动模块的电路设计 (6)3.2程序的设计 (7)3.2.1程序功能描述与设计思路 (7)3.2.2程序流程图 (7)4测试方案与测试结果 (11)4.1测试方案 (11)4.2 测试条件与仪器 (11)4.3 测试结果及分析 (11)4.3.1测试结果(数据) (11)4.3.2测试分析与结论 (12)5总结 (12)附件1:系统电路原理图 (14)附件2:电机控制源程序 (15)简易旋转倒立摆及控制装置(C题)【本科组】1系统方案本系统主要由主控模块、角度传感器模块、机械结构模块、电源模块等几部分组成,下面分别论证这几个模块的选择。
全国电子设计大赛题目简易旋转倒立摆及控制装置C题

2013 年全国大学生电子设计竞赛试题参赛注意事项(1)9 月4 日8:00 竞赛正式开始。
本科组参赛队只能在【本科组】题目中任选一题;高职高专组参赛队在【高职高专组】题目中任选一题,也可以选择【本科组】题目。
(2)参赛队认真填写《登记表》内容,填写好的《登记表》交赛场巡视员暂时保存。
(3)参赛者必须是有正式学籍的全日制在校本、专科学生,应出示能够证明参赛者学生身份的有效证件(如学生证)随时备查。
(4)每队严格限制3 人,开赛后不得中途更换队员。
(5)竞赛期间,可使用各种图书资料和网络资源,但不得在学校指定竞赛场地外进行设计制作,不得以任何方式与他人交流,包括教师在内的非参赛队员必须回避,对违纪参赛队取消评审资格。
(6)9 月7 日20:00 竞赛结束,上交设计报告、制作实物及《登记表》,由专人封存。
简易旋转倒立摆及控制装置(C 题)【本科组】一、任务设计并制作一套简易旋转倒立摆及其控制装置。
旋转倒立摆的结构如图1 所示。
电动机A 固定在支架B 上,通过转轴F 驱动旋转臂C 旋转。
摆杆E 通过转轴D 固定在旋转臂C 的一端,当旋转臂C 在电动机A 驱动下作往复旋转运动时,带动摆杆E 在垂直于旋转臂C 的平面作自由旋转。
二、要求图1 旋转倒立摆结构示意图1.基本要求(1)摆杆从处于自然下垂状态(摆角0°)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60°~ +60°;(2)从摆杆处于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;(3)在摆杆处于自然下垂状态下,外力拉起摆杆至接近165°位置,外力撤除同时,启动控制旋转臂使摆杆保持倒立状态时间不少于5s;期间旋转臂的转动角度不大于90°。
2.发挥部分(1)从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立状态时间不少于10s;(2)在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s 内恢复倒立状态;(3)在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过360°;(4)其他。
2013年全国大学生电子设计大赛本科C题倒立摆程序

#include<stc/STC12C5A60S2.h>#include <math.h>#include <stdio.h>#include <INTRINS.H>typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned int uint;sbit bmq=P1^5;sbit sn=P1^2;sbit l1=P1^0;sbit l2=P1^1;sbit j1=P0^0;sbit j2=P0^1;sbit j3=P0^2;sbit j4=P0^3;sbit j5=P0^4;sbit j6=P0^5;sbit j7=P0^6;sbit j8=P0^7;unsigned char tttt=0;unsigned char step=0;#define unchar unsigned char#define unint unsigned int#define clear 0x01#define home 0x02#define f_set 0x30#define dis_on 0x0f#define in_mode 0x06sbit P_RS=P2^2;sbit P_RW=P2^1;sbit P_E= P2^0;sbit SCL=P1^6; //IIC时钟引脚定义sbit SDA=P1^7; //IIC数据引脚定义char s[15];//****************************************// 定义MPU6050内部地址//****************************************#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)#define ACCEL_XOUT_H 0x3B#define ACCEL_XOUT_L 0x3C#define ACCEL_YOUT_H 0x3D#define ACCEL_YOUT_L 0x3E#define ACCEL_ZOUT_H 0x3F#define ACCEL_ZOUT_L 0x40#define TEMP_OUT_H 0x41#define TEMP_OUT_L 0x42#define GYRO_XOUT_H 0x43#define GYRO_XOUT_L 0x44#define GYRO_YOUT_H 0x45#define GYRO_YOUT_L 0x46#define GYRO_ZOUT_H 0x47#define GYRO_ZOUT_L 0x48#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取//****************************************//函数声明//****************************************//MPU6050操作函数void InitMPU6050(); //初始化MPU6050void Delay5us();void I2C_Start();void I2C_Stop();void I2C_SendACK(bit ack);bit I2C_RecvACK();void I2C_SendByte(uchar dat);uchar I2C_RecvByte();void I2C_ReadPage();void I2C_WritePage();uchar Single_ReadI2C(uchar REG_Address); //读取I2C数据void Single_WriteI2C(uchar REG_Address,uchar REG_data); //向I2C写入数据//**************************************//延时5微秒(STC90C52RC@12M)//不同的工作环境,需要调整此函数//当改用1T的MCU时,请调整此延时函数//**************************************void Delay5us(){unsigned char i;i = 22;while (--i);}//**************************************//I2C起始信号//************************************** void I2C_Start(){SDA = 1; //拉高数据线SCL = 1; //拉高时钟线Delay5us(); //延时SDA = 0; //产生下降沿Delay5us(); //延时SCL = 0; //拉低时钟线}//**************************************//I2C停止信号//************************************** void I2C_Stop(){SDA = 0; //拉低数据线SCL = 1; //拉高时钟线Delay5us(); //延时SDA = 1; //产生上升沿Delay5us(); //延时}//**************************************//I2C发送应答信号//入口参数:ack (0:ACK 1:NAK)//************************************** void I2C_SendACK(bit ack){SDA = ack; //写应答信号SCL = 1; //拉高时钟线Delay5us(); //延时SCL = 0; //拉低时钟线Delay5us(); //延时}//**************************************//I2C接收应答信号//**************************************bit I2C_RecvACK(){SCL = 1; //拉高时钟线Delay5us(); //延时CY = SDA; //读应答信号SCL = 0; //拉低时钟线Delay5us(); //延时return CY;}//**************************************//向I2C总线发送一个字节数据//**************************************void I2C_SendByte(uchar dat){uchar i;for (i=0; i<8; i++) //8位计数器{dat <<= 1; //移出数据的最高位SDA = CY; //送数据口SCL = 1; //拉高时钟线Delay5us(); //延时SCL = 0; //拉低时钟线Delay5us(); //延时}I2C_RecvACK();}//**************************************//从I2C总线接收一个字节数据//**************************************uchar I2C_RecvByte(){uchar i;uchar dat = 0;SDA = 1; //使能内部上拉,准备读取数据, for (i=0; i<8; i++) //8位计数器{dat <<= 1;SCL = 1; //拉高时钟线Delay5us(); //延时dat |= SDA; //读数据SCL = 0; //拉低时钟线Delay5us(); //延时}return dat;}//**************************************//向I2C设备写入一个字节数据//**************************************void Single_WriteI2C(uchar REG_Address,uchar REG_data)I2C_Start(); //起始信号I2C_SendByte(SlaveAddress); //发送设备地址+写信号I2C_SendByte(REG_Address); //内部寄存器地址,I2C_SendByte(REG_data); //内部寄存器数据,I2C_Stop(); //发送停止信号}//**************************************//从I2C设备读取一个字节数据//**************************************uchar Single_ReadI2C(uchar REG_Address){uchar REG_data;I2C_Start(); //起始信号I2C_SendByte(SlaveAddress); //发送设备地址+写信号I2C_SendByte(REG_Address); //发送存储单元地址,从0开始I2C_Start(); //起始信号I2C_SendByte(SlaveAddress+1); //发送设备地址+读信号REG_data=I2C_RecvByte(); //读出寄存器数据I2C_SendACK(1); //接收应答信号I2C_Stop(); //停止信号return REG_data;}//**************************************//初始化MPU6050//**************************************void InitMPU6050(){Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态Single_WriteI2C(SMPLRT_DIV, 0x07);Single_WriteI2C(CONFIG, 0x06);Single_WriteI2C(GYRO_CONFIG, 0x18);Single_WriteI2C(ACCEL_CONFIG, 0x01);}//**************************************//合成数据//**************************************int GetData(uchar REG_Address){char H,L;H=Single_ReadI2C(REG_Address);L=Single_ReadI2C(REG_Address+1);return (H<<8)+L; //合成数据}void bit8_serial_input(unchar ix){unchar i;P_E=0;for(i=0x80;i>=0x01;i=i>>1){if((ix&i)==0) P_RW=0; else P_RW=1;P_E=1;P_E=0;}}void instruct(unchar dat){unchar ch;P_RS=1;ch=0xf8;bit8_serial_input(ch);ch=dat&0xf0;bit8_serial_input(ch);ch=dat<<4;bit8_serial_input(ch);P_RS=0;}void write_abyte(unchar dat){data unchar ch;P_RS=1;ch=0xfa;bit8_serial_input(ch);ch=dat&0xf0;bit8_serial_input(ch);ch=dat<<4;bit8_serial_input(ch);P_RS=0;}void dis_str(unchar x, unchar y, unchar *str) {unchar loc,*p;unchar xline[5]={0,1,3,2,4};p=str;x=xline[x];instruct(home);loc=(16*(x-1)+y-1);if(loc&0x01){loc/=2;instruct(loc|0x80);write_abyte(' ');}else{loc/=2;instruct(loc|0x80);}while(*p){write_abyte(*p++);}}void initial(void){data unchar i,j;P_RS=0;P_E=0;instruct(f_set);for(i=0;i<30;i++){}for(i=0;i<250;i++){}for(i=0;i<250;i++){}instruct(f_set);for(i=0;i<30;i++){}for(i=0;i<250;i++){}for(i=0;i<250;i++){}instruct(0x0c);for(i=0;i<30;i++){}instruct(clear);for(j=0;j<10;j++){for(i=0;i<250;i++){} }instruct(in_mode);for(i=0;i<30;i++){}instruct(home);}int gx,gy,gz,wy;unsigned char PWM1,PWM2,PWM3;unsigned char l;//unsigned int idata atab[91]={0,2,11,26,47,74,107,146,190,241,297,360,428,502,582,668,759,857,959,1068,1182,130 2,1428,1559,1695,1837,1984,2137,2295,2459,2627,2801,2980,3164,3353,3547,3745,3949,4157,4 370,4588,4810,5037,5269,5504,5744,5988,6237,6489,6745,7006,7270,7538,7809,8084,8363,864 5,8931,9219,9511,9806,10104,10405,10709,11015,11324,11635,11949,12266,12584,12905,1322 7,13552,13878,14207,14537,14868,15201,15535,15870,16207,16545,16883,17223,17563,17903, 18245,18586,18928,19271,19613};void Delay50m() //@20.000MHz{unsigned char i, j, k;i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);}void Delay50ms(unsigned char aa){while(aa--)Delay50m();}unsigned char input();void inputstep(){char s[]=" ";unsigned char f=0,num;while(1){initial();dis_str(1,1,"选择\xb9\xfd程");sprintf(s,"%d",(int)step);dis_str(2,1,s);Delay50ms(1);num=input();switch(num){case 16:f=1;break;default:step=num;case 0:break;}if(f)break;}}void saveint(int d){IAP_DATA=d>>8;IAP_TRIG=0x5A;IAP_TRIG=0xA5;IAP_ADDRL++;IAP_DATA=d&0xff;IAP_TRIG=0x5A;IAP_TRIG=0xA5;}void savechar(unsigned char d) {IAP_DATA=d;IAP_TRIG=0x5A;IAP_TRIG=0xA5;}unsigned char readchar(){IAP_TRIG=0x5A;IAP_TRIG=0xA5;return IAP_DATA;}int readint(){int d;IAP_TRIG=0x5A;IAP_TRIG=0xA5;d=IAP_DATA;d<<=8;IAP_ADDRL++;IAP_TRIG=0x5A;IAP_TRIG=0xA5;d+=IAP_DATA;return d;}unsigned char pa1,ps1,pa2,ps2;int getangle();void Delay50us();void inputmode(){char s[]=" ";unsigned char num,t;while(1){initial();dis_str(1,1,"当前角度");sprintf(s,"%d",getangle());dis_str(1,9,s);dis_str(3,1,"角速度");sprintf(s,"%d",GetData(GYRO_YOUT_H)/100-wy);dis_str(3,9,s);Delay50ms(1);if(input()==15)break;}t=PWM1>>4;while(1){initial();while(input()==15);Delay50ms(2);dis_str(4,1,"输入PWM1高四位");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num;}if(num==16)break;}PWM1&=0x0f;PWM1+=t<<4;t=PWM1&0x0f;while(input()==16);Delay50ms(2);while(1){initial();dis_str(4,1,"输入PWM1低四位");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num;}if(num==16)break;}PWM1&=0xf0;PWM1+=t;while(input()==16);Delay50ms(2);t=PWM2>>4;while(1){initial();dis_str(4,1,"输入PWM2高四位");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num;}if(num==16)break;}PWM2&=0x0f;PWM2+=t<<4;t=PWM2&0x0f;while(input()==16);Delay50ms(2);while(1){initial();dis_str(4,1,"输入PWM2低四位");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num;}if(num==16)break;}PWM2&=0xf0;PWM2+=t;while(input()==16);Delay50ms(2);t=PWM3>>4;while(1){initial();dis_str(4,1,"输入PWM3高四位");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num-1;}if(num==16)break;}PWM3&=0x0f;PWM3+=t<<4;t=PWM3&0x0f;while(input()==16);Delay50ms(2);while(1){initial();dis_str(4,1,"输入PWM3低四位");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num-1;}if(num==16)break;}while(input()==16);Delay50ms(2);PWM3&=0xf0;PWM3+=t;t=pa1;while(1){initial();dis_str(4,1,"输入一加速时间");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num-1;if(num==16)break;}while(input()==16);Delay50ms(2);pa1=t;t=ps1;while(1){initial();dis_str(4,1,"输入一减速时间");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num-1;}if(num==16)break;}while(input()==16);Delay50ms(2);ps1=t;t=pa2;while(1){initial();dis_str(4,1,"输入二加速时间");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num-1;if(num==16)break;}while(input()==16);Delay50ms(2);pa2=t;t=ps2;while(1){initial();dis_str(4,1,"输入二减速时间");sprintf(s,"%d",(int)t);dis_str(1,9,s);Delay50ms(1);num=input();switch(num){case 16:case 0:break;default:t=num-1;}if(num==16)break;}while(input()==16);Delay50ms(2);ps2=t;gx=GetData(ACCEL_XOUT_H)/100-164; IAP_CONTR=0x83;IAP_ADDRH=0;IAP_ADDRL=0;IAP_CMD=3;IAP_TRIG=0x5A;IAP_TRIG=0xA5;IAP_CMD=2;saveint(gx);gy=GetData(ACCEL_YOUT_H)/100; IAP_ADDRL++;saveint(gy);gz=GetData(ACCEL_ZOUT_H)/100; IAP_ADDRL++;saveint(gz);wy=GetData(GYRO_YOUT_H)/100;IAP_ADDRL++;saveint(wy);IAP_ADDRL++;savechar(PWM1);IAP_ADDRL++;savechar(PWM2);IAP_ADDRL++;savechar(PWM3);IAP_ADDRL++;savechar(pa1);IAP_ADDRL++;savechar(ps1);IAP_ADDRL++;savechar(pa2);IAP_ADDRL++;savechar(ps2);initial();return;}int x,y,z;int getangle(){x=GetData(ACCEL_XOUT_H)/100+164-gx;y=GetData(ACCEL_YOUT_H)/100-gy;z=GetData(ACCEL_ZOUT_H)/100-gz;if(z<0)x=-x;return x;}void Delay50us() //@20.000MHz{unsigned char i, j;_nop_();_nop_();i = 1;j = 245;do{while (--j);} while (--i);}unsigned char input(){unsigned char state,ps; P0=0xff;while(1){j1=0;Delay50us();state=P0;state=state>>4;ps=0;if(state<15)break;j1=1;j2=0;Delay50us();state=P0;state=state>>4;ps++;if(state<15)break;j2=1;j3=0;Delay50us();state=P0;state=state>>4;ps++;if(state<15)break;j3=1;j4=0;Delay50us();state=P0;state=state>>4;ps++;if(state<15)break;j4=1;break;}switch(state){case 15:return 0;case 14:return 1+4*ps;case 13:return 2+4*ps;case 11:return 3+4*ps;case 7:return 4+4*ps;}return 0;}void rd(){l1=1;l2=0;Delay50ms(pa1);l1=0;Delay50ms(ps1);}unsigned char a;float b;unsigned char reset=0;unsigned char xd,xa;int angle;void main(){InitMPU6050(); //初始化MPU6050IAP_CONTR=0x83;IAP_ADDRH=0;IAP_ADDRL=0;IAP_CMD=1;gx=readint();IAP_ADDRL++;gy=readint();IAP_ADDRL++;gz=readint();IAP_ADDRL++;wy=readint();IAP_ADDRL++;PWM1=readchar();IAP_ADDRL++;PWM2=readchar();IAP_ADDRL++;PWM3=readchar();IAP_ADDRL++;pa1=readchar();IAP_ADDRL++;ps1=readchar();IAP_ADDRL++;pa2=readchar();IAP_ADDRL++;ps2=readchar();TMOD=0X20;TH1=0xfb;TL1=0xfb;SCON=0x50;TR1=1;ES=1;CCON=0;CL=0;CH=0;CMOD=0x02;CCAP0H=CCAP0L=0x20; CCAPM0=0x42;CR=1;EA=1;TI=0;RI=0;/*gx=0;gy=0;gz=0;wy=0;*/initial();dis_str(1,1,"预处理");l=20;initial();dis_str(3,1,"按功能键校准重力"); dis_str(1,2,"3秒后启动……"); for(a=1;a<=20;a++){Delay50ms(1);if(input()==16)inputmode(); }dis_str(1,2,"2秒后启动……"); for(a=1;a<=20;a++){Delay50ms(1);if(input()==16)inputmode(); }dis_str(1,2,"1秒后启动……"); for(a=1;a<=20;a++){Delay50ms(1);if(input()==16)inputmode();}reset=0;step=1;inputstep();if(step==1)rd();if(step==2){l1=1;l2=0;Delay50ms(pa2);l1=0;Delay50ms(ps2);}xa=1;while(1){/*initial();sprintf(s,"%d",GetData(ACCEL_XOUT_H)-gx);dis_str(1,1,s);Delay50ms(1);*//*angle=GetData(ACCEL_XOUT_H);sprintf(s,"%d",angle);dis_str(1,1,s);angle=GetData(ACCEL_YOUT_H);sprintf(s,"%d",angle);dis_str(2,1,s);angle=GetData(ACCEL_ZOUT_H);sprintf(s,"%d",angle);dis_str(3,1,s);angle=getangle();sprintf(s,"%d",angle);dis_str(4,1,s);sprintf(s,"%d",GetData(ACCEL_XOUT_H));dis_str(1,1,s);sprintf(s,"%d",GetData(GYRO_YOUT_H));dis_str(2,1,s);sprintf(s,"%d",GetData(ACCEL_ZOUT_H));dis_str(3,1,s);Delay50ms(1);*/switch(step){case 1:CCAP0H=CCAP0L=PWM1;if(GetData(ACCEL_XOUT_H)-gx>0)if(GetData(GYRO_YOUT_H)-wy>0&&getangle()>0){l1=1;l2=0;}else if(GetData(GYRO_YOUT_H)-wy<0&&getangle()<0){l1=0;l2=1;}else{}else{l1=0;l2=0;}break;case 2:CCAP0H=CCAP0L=PWM2;angle=getangle();if(GetData(GYRO_YOUT_H)-wy>0&&angle>150){l1=1;l2=0;xd=0;}else if(GetData(GYRO_YOUT_H)-wy<0&&angle<-150){l1=0;l2=1;xd=0;}else if(angle<70&&angle>-70){l1=0;l2=0;if(angle>0)xd|=2;else xd|=1;if(xd==3){while(1);}}break;case 3:CCAP0H=CCAP0L=PWM3;if(getangle()<0){l1=1;l2=0;}else{l1=0;l2=1;}break;}if(reset){initial();dis_str(1,1,"\xd5\xfd在烧写程序……");IAP_CONTR=0x60;Delay50ms(40);}}}unsigned char cmd;void RSINTR() interrupt 4{if(RI==1){cmd=SBUF;cmd=cmd<<4;cmd=cmd>>4;if(cmd==0x0e){reset=1;}RI=0;}}。
2013年全国大学生电子设计大赛(L题)杨

2013年全国大学生电子设计大赛(L题)杨摘要本设计为直流稳压电源及漏电保护装置,系统主要由MSP430-149单片机、升压电路、直流稳压电路、LCD显示电路及漏电保护装置四部分组成。
电路系统设计中以硬件电路为主体,实现了整机系统设计,达到设计任务书要求。
在电路中以电感升压后提供给稳压电路,使输出电压稳定为5V、电流恒定为1A;通过取样电阻对输出电压、电流采样后送入单片机进行A/D转换与计算,将输出功率在1062液晶进行实时显示输出功率;通过取样电阻的来比较电压,使关断元件继电器动作,从而达到漏电保护的目的。
本直流稳压电源及漏电保护装置具有电路结构简单、稳定度好、指标精度高等优点。
关键词:升压;稳压;MSP430单片机;继电器目录1系统方案 (1)1.1直流稳压电源方案论证与选择 (1)1.2升压电路方案论证与选择 (2)1.3电流取样及放大电路方案论证与选择 (4)1.4显示模块方案论证与选择 (5)1.5漏电保护装置实现方案论证与选择 (5)1.6 单片机系统方案论证与选择 (6)2系统理论分析与计算 (6)2.1直流稳压电源电路分析及设计 (6)2.2 漏电保护装置电路分析及设计 (8)2.3电路与程序设计 (9)3程序的设计 (13)3.1程序功能描述与设计思路 (13)3.2程序流程图 (13)4测试方案与测试结果 (14)4.1测试方案 (14)4.2 测试条件与仪器 (14)4.3 测试方法及结论 (15)总结 (16)附录:总电路原理图 (18)1系统方案设计并制作一台线性直流稳压电源和一个漏电保护装置,电路连接如图所示。
图中RL为负载电阻、R为漏电电流调整电阻、A为漏电流显示电流表、S为转换开关、K 为漏电保护电路复位按钮图1 直流稳压电源及漏电保护装置根据设计任务的要求,按图1所示系统结构,直流稳压电源及漏电保护装置主要由直流稳压电源、漏电保护装置、单片机系统控制及显示电路等几部分组成,为突出设计思路,这里分模块、分单元进行方案设计论述。
2013年全国电子设计大赛C题设计报告.doc

2013年全国大学生电子设计竞赛题目:简易旋转倒立摆及控制装置(C题)参赛学校:江苏师范大学队伍编号:XZ 015参赛队员:徐园明、刘海腾、黄波指导教师:朱士虎、王立巍2013年9月7日目录摘要 (1)Abstract (1)1方案论证与比较 (2)1.1电机类型的论证与选择 (2)1.2单片机的论证与选择 (2)1.3电机驱动电路的论证与选择 (2)1.4角度传感器的论证与选择 (3)2系统实现方框图和电路设计 (4)2.1系统总体框架图和实物构架图 (4)2.2硬件电路设计 (5)2.2.1电位器电路 (5)2.2.2显示模块的电路 (5)2.2.3电机驱动电路 (6)3系统软件设计 (7)3.1精密电位器误差计算 (7)3.2倒立摆控制策略 (7)3.3系统流程图 (9)4测试方案与测试结果 (10)4.1测试仪器 (10)4.2测试结果 (10)4.3测试结果分析 (11)参考文献 (12)摘要本文以STC12C5A60S2单片机为控制核心,通过角度传感器实时检测出倒立摆的位置并由单片机计算,计算PID控制算法,实现对直流电机转速的控制,达到倒立摆的动态平衡。
同时系统可以通过键盘设定运行模式和相关角度值,倒立摆运行角度和运行时间由液晶显示,具有较好人机界面。
系统设计结构简单,制作成本低,控制精度高。
关键字:STC12C5A60S2 倒立摆 PIDAbstractThis paper takes STC12C5A60S2 single chip as the control core,Through the real-time detection of the inverted pendulum's position and angle sensor is composed of a single chip computer calculation,Calculation of PID control algorithm,Control the speed of the DC motor,To achieve the dynamic balance of the inverted pendulum.At the same time the system can be set through the keyboard operation mode and related anglevalues.Inverted pendulum movement angle and running time by the liquid crystal display,With good man-machine interface.The system has the advantages of simple structure design,Low production cost,High control precision.Keyword: STC12C5A60S2 level inverted pendulum PID1 方案论证与比较1.1电机类型的论证与选择方案一:采用步进电机。
2013年全国大学生电子设计竞赛综合测评题

2013年全国大学生电子设计竞赛综合测评题综合测评注意事项(1)综合测评于2013年9月16日8:00正式开始,9月16日15:00结束。
(2)本科组和高职高专组优秀参赛队共用此题。
(3)综合测评以队为单位采用全封闭方式进行,现场不能上网、不能使用手机。
(4)综合测评结束时,制作的实物及《综合测评测试记录与评分表》由全国专家组委派的专家封存,交赛区保管。
波形发生器使用题目指定的综合测试板上的555芯片和一片通用四运放324芯片,设计制作一个频率可变的同时输出脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ的波形产生电路。
给出设计方案、详细电路图和现场自测数据波形(一律手写、3个同学签字、注明综合测试板编号),与综合测试板一同上交。
设计制作要求如下:1、同时四通道输出、每通道输出脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ中的一种波形,每通道输出的负载电阻均为600欧姆。
2、四种波形的频率关系为1:1:1:3(3次谐波):脉冲波、锯齿波、正弦波Ⅰ输出频率范围为8kHz—10kHz,输出电压幅度峰峰值为1V;正弦波Ⅱ输出频率范围为24kHz—30kHz,输出电压幅度峰峰值为9V;脉冲波、锯齿波和正弦波输出波形应无明显失真(使用示波器测量时)。
频率误差不大于10%;通带内输出电压幅度峰峰值误差不大于5%。
脉冲波占空比可调整。
3、电源只能选用+10V单电源,由稳压电源供给。
不得使用额外电源。
4、要求预留脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ和电源的测试端子。
5、每通道输出的负载电阻600欧姆应标示清楚、置于明显位置,便于检查。
注意:不能外加555和324芯片,不能使用除综合测试板上的芯片以外的其他任何器件或芯片。
说明:1、综合测评应在模数实验室进行,实验室应能提供常规仪器仪表、常用工具和电阻、电容、电位器等。
2、综合测评电路板检查后发给参赛队,原则上不允许参赛队更换电路板。
3、若综合测评电路板上已焊好的324和555芯片被损坏,允许提供新的324和555芯片,自行焊接,但要记录并酌情扣分;4、提供324和555芯片使用说明书。
全国大学生电子设计大赛论文

2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)【1101003组】2013年9月7日简易旋转倒立摆及控制装置(C题)摘要本系统采用自制的简易旋转倒立摆及控制装置,以16 位单片机(STC89C51)作为旋转倒立摆的检测和控制核心,以额定电压12V的步进电机驱动,通过加速度传感器(ADXL345)转变的角度传感器测定摆杆角度变化来定位摆杆的位置。
系统采用角度传感器(ADXL345)探测在摆杆保持倒立状态的前提下,旋转臂作圆周运动前进;同时通过编码器及PID控制算法实现了步进电机的转速和转向进行调节,以准确找到平衡点位置。
控制器的设计是倒立摆系统的核心内容,主要用到典型的控制器设计理论有PID控制、根轨迹以及频率响应法、状态空间法、最优控制理论等。
本系统可在较短时间内完成摆杆从自然下垂状态,驱动电机带动旋转臂作往复旋转使摆杆摆动,寻找平衡点等任务。
关键词:角度传感器;旋转倒立摆;模糊控制;最优控制理论;目录1系统方案......................................................................................... 错误!未定义书签。
1.1电机方案的论证与选择 (1)1.2 控制系统方案的论证与选择 (2)1.3 角度测量方案的论证与选择 (2)2系统理论分析与计算 (2)2.1 角度检测模块的分析 (2)2.2 控制方法的理论 (3)2.3 设计思想理论分析 (4)2.4 理论计算 (4)3电路与程序设计 (6)3.1电路的设计 (6)3.1.1系统总体框图 (6)3.1.2 电机驱动模块设计 (7)3.1.3 角度传感器模块 (7)3.1.4电源模块 (7)3.2程序的设计 (7)3.2.1程序功能描述与设计思路 (7)3.2.2程序流程图 (8)4测试方案与测试结果 (8)4.1硬件测试 (8)4.2 测试条件与仪器 (9)4.3 测试结果 (9)4.3.1不同脉冲时间间隔对应速度测试 (9)4.3.2摆杆达到指定高度往复运动的时间测试 (10)4.3.3摆杆达到指定度数的测试 (10)4.3.4摆杆选择和配重平衡测试 (10)4.3.5摆杆完成圆周运动测试 (11)4.3.6基本功能(3)测试 (11)4.3.7测试分析与结论 (12)5结束语 (12)6参考文献 (12)附录1:电路原理图 (13)附录2:电机驱动原理图 (14)附录3:稳压模块原理图 (15)附录4:主程序 (16)附录5:角度传感器子程序 (18)简易旋转倒立摆及控制装置(C 题)【本科组】1系统方案本系统主要由系统模块、角度检测模块、电机驱动模块、电源模块组成。
2013电赛报告

2013年全国大学生电子设计竞赛设计报告题目名称:简易旋转倒立摆及控制装置【本科组C题】参赛队号:201302092013年9月7日2013年“瑞萨杯”全国大学生电子设计竞赛摘要:本系统以STC12C5A60S2单片机最小系统为核心,辅以角度传感器、姿态传感器、开关控制电路、LCD1602显示、电机驱动电路等组成。
该设计利用PWM 调制来控制旋转臂转速的变化,通过角度传感器和姿态传感器检测摆杆角度偏转信号,并将检测到的数值A/D转换后送入调速系统,经LCD1602显示屏进行显示。
也可通过拨码开关控制旋转臂的转速,从而改变摆杆的状态。
该系统实现了通过操作拨码开关控制旋转臂转速的大小,使摆杆状态按要求变化。
关键词:单片机最小系统角位移传感器 A/D转换2013年“瑞萨杯”全国大学生电子设计竞赛目录1.作品简介 (1)2.系统方案论证和比较 (1)2.1系统方案整体实验框图 (1)2.2方案论证与比较 (1)2.1.1输入模块选择 (1)2.1.2调制方式的选择 (2)2.1.3角度传感器的选择 (2)2.1.4显示系统的选择 (2)2.3理论分析与参数计算 (2)2.3.1控制电路 (2)2.3.2角度测量原理与控制算法 (3)3.电路与程序设计 (3)3.1硬件设计 (3)3.1.1角度传感器的设计 (3)3.2软件设计 (3)3.1.1软件主程序流程图 (3)3.1.2程序算法理论分析 (4)4.系统调试与结果分析 (5)4.1系统调试的方法与仪器 (5)4.2系统电路的调试 (5)4.2.1电机的性能测试 (5)4.2.2角度传感器的性能测试 (5)4.3注意事项及解决方案 (6)4.4调试结果分析与总结 (6)5.实验结果的分析与总结 (6)6.参考文献 (6)附录一:部分电路原理图 (1)附录二:程序源代码 (4)1.作品简介本次设计作品以单片机最小系统和角度传感器、姿态传感器为制作核心,同时运用A/D模数转换,PWM调制旋转臂转速、LED声光显示,拨码开关控制等,从摆杆方向上的角位移传感器接收到摆杆角度偏转的信号,经A/D模数转换后,LED显示器进行声光显示。
全国大学生电子设计竞赛历届赛题分类汇总

历届国赛出现过的赛题(1994~2011)控制类赛题(12题):水温控制系统(1997年C题)自动往返电动小汽车(2001年C题)简易智能电动车(2003年E题)液体点滴速度监控装置(2003年F题)悬挂运动控制系统(2005年E题)电动车跷跷板(2007年F题本科组)电动车跷跷板(2007年J题高职高专组)声音引导系统(2009年B题)模拟路灯控制系统(2009年I题高职高专组)基于自由摆的平板控制系统(2011年B题)智能小车(2011年C题)帆板控制系统(2011年F 题)仪器仪表类赛题(14题):简易电阻、电容和电感测试仪(1995年D题)简易数字频率计(1997年B题)数字式工频有效值多用表(1999年B题)频率特性测试仪(1999年C题)简易数字存储示波器(2001年B题)低频数字式相位测量仪(2003年C题)简易逻辑分析仪(2003年D题)集成运放参数测试仪(2005年B题)简易频谱分析仪(2005年C题)音频信号分析仪(2007年A题本科组)数字示波器(2007年C题本科组)积分式直流数字电压表(2007年G题高职高专组)简易数字信号传输性能分析仪(2011年E题)简易自动电阻测试仪(2011年G 题)信号源类赛题(5题):实用信号源的设计和制作(1995年B题)波形发生器(2001年A题)电压控制LC振荡器(2003年A题)正弦信号发生器(2005年第七届A题)信号发生器(2007年H题高职高专组)电源类赛题(8题):简易数控直流电源(1994年A题)直流稳压电源(1997年A题)数控直流电流源(2005年F题)三相正弦波变频电源(2005年G题)开关稳压电源(2007年本科组E题)光伏并网发电模拟装置(2009年A题)电能搜集充电器(2009年E题)开关电源模块并联供电系统(2011年A题)高频无线电类赛题(7题):简易无线电遥控系统(1995年C题)调幅广播收音机(1997年D题)短波调频接收机(1999年D题)调频收音机(2001年F题)单工无线呼叫系统(2005年D题)无线识别装置(2007年B题本科组)无线环境监测模拟装置(2009年D题)放大器类赛题(10题):实用低频功率放大器(1995年A题)测量放大器(1999年A题)高效率音频功率放大器(2001年D题)宽带放大器(2003年B题)程控滤波器(2007年D题本科组)可控放大器(2007年I题高职高专组)数字幅频均衡的功率放大器(2009年F题)低频功率放大器(2009年G题高职高专组)宽带直流放大器(2009年C题)LC 谐振放大器(2011年D 题)数据采集与处理类赛题(5题):多路数据采集系统(1994年B题)数字化语音存储与回放系统(1999年E题)数据采集与传输系统(2001年E题)LED点阵书写显示屏(2009年H题高职高专组)波形采集、存储与回放系统(2011年H题)。
2013简易旋转倒立摆

本方案采用单回路PID控制方案,选取摆杆角度作为反馈信号,此方案间接对摆杆进行控制,系统结构框图如下图所示。
[7]《单片机原理及应用》,李建忠著,西安:西安电子科技大学,2002年;
附录
一.元器件及材料清单
1
单片机最小系统
2
L298N驱动模块
3
ADXL345角度传感器
4
旋转臂
5
摆杆
6
木板支架结构
二.主要程序
#include <REG51.H>
#include <math.h> //Keil library
硬件电路部分主要由单片机控制模块、电机驱动模块、角度传感器检测模块、电源模块等部分组成,系统原理图如下图所示:
3.1.1 单片机最小系统电路图
图10单片机最小系统图
3.1.2 L298N电机驱动模块电路图
图11电机驱动图
3.1.3 角度传感器
图12角度传感器
角度传感器测得X、Y轴方向的重力加速度,通过IIC通信将信号输入单片机,单片机合成数据,得到X、Y轴方向加速度的值,从而计算得出角度值,然后利用屏幕将角度值实时显示出来。
/*********************电机驱动管脚定义****************************/
sbit en=P1^0;
sbit s1=P1^1;
sbit s2=P1^2;
2013年全国大学生电子设计竞赛综合评测题

2013年全国大学生电子设计竞赛综合评测题综合测评注意事项(1)综合测评于2013年9月16日8:00正式开始,9月16日15:00结束;(2)本科组和高职高专组优秀参赛队共用此题。
(3)综合测评题以对为单位采用全封闭方式进行,现场不能上网、不能使用手机。
(4)综合测评结束时,制作的实物及《综合测评测试记录与评分表》,有全国专家组委派的专家封存、交赛区保管。
波形发生器使用题目指定的综合测试板上的555芯片和一片通用四运放324芯片,设计制作一个频率可变的同时输出脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ的波形产生电路。
给出方案设计、详细电路图和现场自测数据波形(一律手写、3个同学签字、注明综合测试版编号),与综合测试版一同上交。
设计制作要求如下:1、同时四通道输出、每通道输出脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ中的一种波形,每通道输出的负载电阻均为600欧姆。
2、四种波形的频率关系为1:1:1:3(3次谐波);脉冲波、锯齿波、正弦波Ⅰ输出频率范围为8KHz——10KHz,输出电压幅度峰峰值为1V;正弦波Ⅱ输出频率范围为24KHz——30KHz,输出电压幅度峰峰值为9V。
脉冲波、锯齿波和正弦波输出波形应无明显失真(使用示波器测量时)。
频率误差不大于10%;通带内输出电压幅度峰峰值误差不大于5%。
脉冲波占空比可调整。
3、电源只能选用+10V单电源,由稳压电源供给,不得使用额外电源。
4、要求预留脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ和电源的测试端子。
5、每通道输出的负载电阻600欧姆应标清楚、至于明显位置,便于检查。
注意:不能外加555和324芯片,不能使用除综合测试板上的芯片以外的其它任何器件或芯片。
说明:1、综合测评应在模数实验室进行,实验室能提供常规一起仪表、常用工具和电阻、电容、电位器等。
2、综合测评电路板检查后发给参赛队,原则上不允许参赛队更换电路板。
………………….…….…..….。
2013年全国电子设计大赛(c题)报告

2014年8月30日旋转倒立摆简易及控制装置(C题)【本科组】参赛队号:20130297简易旋转倒立摆及控制装置(C题)摘要倒立摆的控制是控制理论研究中的一个经典问题,是理想的自动控制教学实验设备,使用它能全方位满足自动控制教学要求,具有模块好和品种多样化等优点。
本组旋转倒立摆系统的稳定性较好,抗干扰能力较强。
机械部分包括旋转臂、摆杆、电动机、转轴、支架。
控制系统设计包括系统硬件电路及软件设计。
硬件部分采用角速度传感器与主控芯片相连,通过角度的测算实时向MCU发送摆杆的状态,MCU通过控制LM298进而控制电机的转向,进而控制摆杆的状态。
主控芯片采用STC12C5A60S2,通过LM298电机驱动与减速直流电机进行通信,并实时用LCD1602液晶显示参数。
软件部分根据最基本的PID算法,给出了程序设计流程图并用C语言编写了控制程序。
关键词:STC12C5A60S2 角速度传感器 LM298AbstractChuangyi Jane round the Chinese dragon light and archaic wall great the Great Wall of the song typeface do regular script variety of body control of inverted pendulum is a classical problem in the study of control theory, is an ideal automatic control teaching experiment equipment, the use of it can meet the requirements of automatic control teaching in all directions, has the advantages of good module and species diversity. This group of rotational inverted pendulum system is of good stability, strong anti-jamming capability. Mechanical parts including rotating arm, swinging rod, motor, shaft and support. Control system design including the system hardware circuit and software design. Hardware part adopts angular velocity sensor is connected to the main control chip, through the Angle of the measured real-time send MCU state of swinging rod, MCU by controlling LM298 and steering control motor, and control the state of the swinging rod. Master control chip USES STC12C5A60S2, through LM298 motor driver communicate with dc motor slowdown, and real-time use LCD1602 LCD display parameters. Software part according to the basic PID algorithm, and gives the flow chart of program design using C language to write the control program.Keywords:STC12C5A60S2 LM298 angular velocity transducer目录一、系统方案 (3)1、总体设计方案 (3)2、方案的比较 (3)2.1 电机的选择 (3)2.2 传感器的选择 (3)2.3 控制系统 (3)二、理论分析与计算 (4)1、理论分析 (4)1.1 角度传感器 (4)1.2 PWM脉冲宽度调制 (4)2、PID算法 (4)三、电路与程序设计 (4)1、电路 (5)1.1 系统总体框图 (5)1.2 最小系统框图 (5)1.3 电源 (5)2、程序流程图 (5)2.1 主程序流程图 (5)2.2 电机驱动子程序流程图 (5)2.3 角度传感器子程序流程图 (5)四、测试方案与测试结果 (6)1、测试方案 (6)1.1 硬件测试 (6)1.2硬件软件联调 (6)2、测试结果及其分析 (6)五、结论 (6)附录:附一:最小系统电路图 (7)附二:程序清单 (8)一、系统方案1、总体设计方案本系统主要由角速度传感器模块、单片机最小系统模块、电机模块、电源模块组成。
2013年电子大赛获奖名单

附录1
2013年全国大学生电子设计竞赛山西赛区国家奖获奖名单
本届大赛题目:
A题:单相AC-DC变换电路(本科组)
B题:四旋翼自主飞行器(本科组)
C题:简易旋转倒立摆及控制装置(本科组)
D题:射频宽带放大器(本科组)
E题:简易频率特性测试仪(本科组)
F题:红外光通信装置(本科组)
G题:手写绘图板(本科组)
J题:电磁控制运动装置(专科组)
K题:简易照明线路探测仪(专科组)
L题:直流稳压电源及漏电保护装置(专科组)
附录2
2013年全国大学生电子设计竞赛山西赛区参赛队获奖情况
(本科组)
附录3
2013年全国大学生电子设计竞赛山西赛区参赛队获奖情况
(高职高专组)。
2013年全国大学生电子设计竞赛(C题)

2013年全国大学生电子设计竞赛简易旋转倒立摆及控制装置(C题)2013年9月7日摘要旋转倒立摆是一个非线性、强耦合、多变量和自然不稳定系统。
通过它能有效地反映控制过程中诸如镇定性、鲁棒性、随动性以及跟踪等多种关键问题,是检验各种控制理论的理想模型。
对倒立摆的研究不仅具有深远的理论意义,而且在航天科技和机器人学领域中也有现实指导性意义。
本作品是基于STC89C52单片机作为核心控制器,以L298N作为驱动电路芯片,利用直流电机PWM调速原理,控制旋转臂的转速,从而控制摆杆的频率和振幅,当二者共振时就实现了摆杆在某一固定角度往复运动,能够实现倒立摆的基本功能。
利用加速度传感器获取摆杆的状态,实现摆杆在固定角度摆动,最终实现在竖直方向倒立,即小范围内摆动而不倒下。
关键词:旋转倒立摆,STC89C52,PWM调速,共振目录1系统方案------------------------------------------------ 1 1.1 设计要求 ------------------------------------------1 1.1.1 任务----------------------------------------1 1.1.2 要求----------------------------------------2 1.1.3 说明----------------------------------------2 1.2 总体设计方案---------------------------------------3 1.2.1 设计思路-------------------------------------3 1.2.2 方案论证与比较-------------------------------5 2单元硬件电路设计-----------------------------------------6 2.1 单片机控制系统设计---------------------------------7 2.1.1 STC89C52最小系统-----------------------------6 2.1.2 AD采集模块电路设计---------------------------6 2.1.3 显示模块电路设计-----------------------------7 2.2 加速度传感器的应用---------------------------------7 2.2.1 MMA7361L原理及应用---------------------------7 2.3 电机驱动模块---------------------------------------7 2.3.1 L298N驱动电路设计----------------------------8 3程序结构与设计-------------------------------------------8 3.1 程序流程图-----------------------------------------9 3.1.1 主程序流程图及算法分析-----------------------9 3.1.2 显示程序设计--------------------------------10 4系统测试------------------------------------------------11 4.1 实验摆角测试-------------------------------------114.2 实验结果分析-----------------------------------11 5参考文献----------------------------------------------12 附录1 总程序附录2 电路原理图简易旋转倒立摆及控制装置(C题)【XX组】1系统方案本系统主要由电机驱动模块、显示模块、加速度传感器模块,下面详细介绍各模块的选择与特点。
2013年全国大学生电子设计竞赛 综合测评题目

2013年全国大学生电子设计竞赛综合测评题目
用线路板上提供的555芯片和四运放324芯片,设计制作一个频率可变的同时输出脉冲波、锯齿波、正弦波1,正弦波2的波形产生电路。
给出方案设计,详细电路图和现场实测波形。
要求:
1:四通道同时输出,每通道输出脉冲波形,锯齿波,正弦波1,正弦波2的一种波形,每通道输出的负载电阻均为600欧姆;
2.四种波形的频率关系为1:1:1:3(3次谐波);脉冲、锯齿、正弦波1输出频率为8KHz~10KHz,输出电压幅度峰峰值为1V;正弦波2输出频率范围24KHz~30KHz,输出电压峰峰值为9V。
输出波形无明显失真。
频率误差不大于10%,通带内输出电压幅度峰峰值误差不大于5%。
脉冲波占空比可调。
3.电源只能选用+10V单电源。
4.每通道输出的负载电阻600欧姆应标示清楚。
5.预留测试端子。