风板控制装置
全国大学生电子设计竞赛
风 帆 控 制 装 置
摘 要
本系统采用STC90C516RD+系列单片机作为控制核心,包括角度传感器、L298N 电机驱动模块、液晶显示、独立键盘控制、声光报警等电路模块。单片机以PWM 方式控制电机工作。安装在帆板上的SCA100T-D02角度传感器将检测信号传送至单片机,由ADC0809将模拟信号转换为数字信号,计算出偏转角度并显示,同时单片机将采集的角度信号经处理后输出相应的PWM 信号,PWM 信号经L298N 驱动,控制直流轴流风扇转速,达到控制风板角度的目的。测试结果证明,系统运行稳定可靠,可以准确快速地调整运转角度,液晶显示角度准确,声光提示信息齐全,完全达到题目所有规定的基本及发挥部分的要求。
关键词:角度传感器;PWM ;STC 单片机;L298N 电机驱动模块
Abstract
This system adopts STC90C516RD+ series single chip microcomputer as control core, including the Angle sensor, L298N motor driver module, liquid crystal display, keyboard control, sound and light alarm circuit module independently. Single chip microcomputer control motor working in PWM manner. Installed in the panels on the Angle of the sensor will detect signals to single chip microcomputer, from the SCA100T-D02single Angle sensor with AD converter converts analog signals to digital signals, calculate the rotation Angle and show the result, then computer calcute the singal of collecting and outputs the PWM. PWM signal by L298N drive, control dc axial flow fan speed, achieve the goal of controlling wind plate Angle.
Test results proved that the system runs stable and reliable, and can be quickly and accurately adjust running Angle, Angle of LCD display accurate, acousto-optic hint information is complete, fully meet the basic of the requirements in the subject, and exerting requirements.
Keyword:Angle sensor; PWM. On STC microcontroller; L298N motor driver module
目录
1 系统方案 . .................................................................................................................................................. 1
1.1 总体设计 . ..................................................................................................................................... 1
1.2 单片机控制模块 . ......................................................................................................................... 1
1.3 角度传感器 . ................................................................................................................................. 1
1.4 风板材料的选择 . ......................................................................................................................... 2
1.5 风量控制方式的论证与选择 . ..................................................................................................... 2
1.6 风扇驱动模块 . ............................................................................................................................. 2
1.7 键盘输入模块 . ............................................................................................................................. 2
1.8 显示模块 . ..................................................................................................................................... 2
1.9 声光报警模块 . ............................................................................................................................. 3
2 理论分析与计算 . ...................................................................................................................................... 3
2.1 角度控制分析 . ............................................................................................................................. 3
2.2 风板控制分析 . ............................................................................................................................. 4
2.3 电源模块设计分析 . ..................................................................................................................... 4
3 系统软件设计 . .......................................................................................................................................... 4
3.1 程序流程分析 . ............................................................................................................................. 4
3.2 主程序结构与部分控制代码 . ..................................................................................................... 7
4 系统测试 . .................................................................................................................................................. 7
4.1 测试仪器清单和元器件清单 . ..................................................................................................... 7
4.2 度传感器模块测试与校正 . ......................................................................................................... 7
参考文献 . ...................................................................................................................................................... 9
附录一电路原理图 . .................................................................................................................................... 10
附录二 源程序(仅核心部分) ............................................................................................................... 12
1 系统方案
1.1 总体设计
本系统以单片机STC90C516RD+为核心,电路包括液晶模块、键盘控制模块、角度传感器模块、L298N 电机驱动模块、声光报警模块、电源模块。系统功能原理如图1所示。 角度传感
器按键控制
直流电源单片机最小系
统声光报警
电机驱动
模块1602显示
图1系统功能原理框图
1.2 单片机控制模块
方案一:采用AT89S52单片机。AT89S52是一款低功耗、高性能的8位微控制器,具有8K 在线编程(ISP)的FLASH 存储器,256*8位内部RAM ,32个I/O端口。缺点是处理速度较慢,而且片上资源较少。
方案二:采用STC90C516RD+单片机。STC90C516RD+系列单片机是宏晶科技推出的新一代超**/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz 以下时,复位脚可直接接地。
综合考虑采用方案二。
1.3 角度传感器
方案一:采用旋转编码器。常用的旋转编码器有ANGTRON 系列,通常采用正5V 供电,大量应用于精密机械、智能机器人、航空等高精尖领域,精度远超过大赛题目要求,但价格也相对较高。
方案二:采用角度传感器。具体型号为SCA100T-D02。这款角度传感器有模拟量和数字量的输出,数字量的输出需采用SPI 通讯,编程比较复杂。采用模拟量的输出,编程简单,通过采集X 或Y 轴上的角度模拟量,通过AD 转化角度输出。AD 转化采用ADC0809,精度基本满足需要。
考虑到编程的复杂程度,最终采用方案二。
1.4 风板材料的选择
风板质量决定系统控制载荷的大小,风板材料是确定直流风机功率大小的最重要的条件,经过参考资料,借鉴以前大赛的经验,系统决定采用质量小,不易产生变形,加工简单方便的泡沫贴纸薄板。
1.5 风量控制方式的论证与选择
本题的关键是轴流风扇稳定,有足量的风力输出,所以对轴流风扇的电机控制变得尤为重要,针对本题的要求,初步考虑两种方案可以实现。
方案一:在直流轴流风扇正前方设置一档板,风扇以额定功率工作,通过单片机控制步进电机,带动档板移动,来改变风力的大小,以达到题目的要求。此方案不需要PWM 控制,比较简单,而且通过实践证明,挡板移动的距离与风力基本成正比,与帆板偏转角度也呈线性关系,角度控制方便。但是风扇一直保持满负荷工作,系统的
方案二:通过单片机调节PWM 控制直流电机的转速来改变风力的大小,以改变帆板偏转的角度。这样既方便操控,也有利于节能,系统结构也变得简单。采用12V1.5A 的直流风扇,就可以有足够的风量,吹动帆板,以达到题目的要求。
结合风扇风量、帆板偏转的稳定度和控制难易等因素,我们选择方案二。
1.6 风扇驱动模块
方案一:分立元件法。采用晶体管分立元件构建H 桥驱动电路。
方案二:采用集成驱动电路芯片如L298N 、LG9110、L293等。L298构成的驱动模块具有操作方便,集成度高,响应频率快,而且稳定性好,性能优良。H 桥集成芯片具有体积小,可靠性高,抗干扰能力强等特点,可以方便地实现风扇的动作。采用普通IO 口产生PWM 实现风扇对帆板的控制。
综合考虑,选择L298N 作为电机驱栋模块。
1.7 键盘输入模块
采用键盘输入,有独立式和矩阵式可供选择。在本系统中只设计了4个按键,单片机I/O口资源较富余,因此采用独立式按键。
1.8 显示模块
方案一:采用数码管显示。通过串行扩展技术,占用的I/O口少,操作控制简单,亮度高,并且成本低廉,但是功耗较高,并且只能显示数字和部分字符,显示内容单一。
方案二:采用1602液晶显示。液晶显示内容比较全面,可以包含字母、数字,程序简单,价格低廉,能够满足系统的需要。
考虑到编程简单、显示效果等因素,最终选用方案二。
1.9 声光报警模块
采用经济实用的发光二极管和蜂鸣器对当前工作状态进行声光报警提示,电路图如下图所示。
图2声光报警电路
2 理论分析与计算
2.1 角度控制分析
根据题目的要求,所以采用Y 轴倾斜计算法来计算帆板的偏转角度。风板倾斜角变化范围是45~1350,而SCA100T-D02显示的角度范围是±90,因此在采集的角度基础上增加90。由于风板的倾斜方向,决定了角度传感器采用Y 轴加速度测得模拟量数据,安装角度是与风板垂直,安装原理和实物图如下图3和图4所示。
000
图3角度传感器Y 轴的安装示意图
图4角度传感器安装实物图
由于采集的数据存在误差,我们采用多次采集信号,去掉极大值与极小值,再取平均值数据算法,所应用的角度转化公式为:
p=(asin(((float)AD0809/256*5-2.5)/2)/3.14*180)+90
题目要求帆板能在极短时间内转动到预定角度,这就涉及到自动控制算法中的PID 控制等多种方法。帆板角度控制是一个非常实际的问题,通过不断的实验,优化控制策略与控制参数,比较PWM 输出信号变化快慢对风板转动效果的影响,使得帆板角度得到最优控制。
2.2 风板控制分析
本系统采用了“粗调+微调”纠错调节的方式来完成风板要求的角度设定功能。该方法调节效率高,绝对误差较小。
根据控制的角度范围,和风板的预置角度,按照所需要的角度设定一个初始转速,然后,在单个粗调范围内设定微调的最小步进,改变PWM 波高电平的占空比,微调转速,从而使风板能够停留在规定的角度。
2.3 电源模块设计分析
在本系统中,不但具有单片机及其外围芯片电路,还有电机驱动模块。电源除了为数字电路供电外,还要为电机驱动模块供电,驱动模块工作电压为12V 。单片机及外围芯片电路的工作电压为5V ,电流0.2A ,作电压相差较大,如果采用双电源6V 和18-20V ,可以满足需要,但需要分别整流、滤波、稳压。综上所述,本电路采用带有电源适配器电源供电,可以满足不同电压等级的工作需要
3 系统软件设计
3.1 程序流程分析
软件采用模块化程序设计方法构建。下面分述两个单元的主程序的架构及两个中断服务子程序的作用。
⑴角度检测单元
角度检测单元主程序流程图下图所示,主要包括引脚初始化、采集判断、数据处理、累计判断和生产PWM 信号。
图5角度检测单元主程序流程图
⑵控制单元
控制单元流程图如图6所示,主要包括系统初始化、启动按键判断处理、PWM 控制、声光报警判断与处理、设置参数判断与处理等。
3.2 主程序结构与部分控制代码
4 系统测试
4.1 测试仪器清单和元器件清单
测试仪器:万用表UT39A 、SW-ZLYW 电源、示波器、量角器检测、直尺 元器件清单:最小单片机系统STC90C516RD+ 传感器SCA-100T ADC0809
电机驱动模块L298N
4.2 角度传感器模块测试与校正
不同的角度传感器的输出电压略有不同,采取实际标定法,程序中利用查表的方法进行取值,可以快速的得到角度值。
.
参考文献
[1]黄智伟 全国大学生电子设计竞赛训练教程[M]. 电子工业出版社,2010 [2]刘建清 轻松玩转51单片机C 语言 北京航空航天大学出版社2011 [3]邓立新 单片机原理及应用(C51语言) 清华大学出版社2012 [4]2011年全国大学生电子设计竞赛获奖作品选编 北京理工大学出版社2012
附录一电路原理图
附图1-1单片机最小系统
附图1-2 1602显示电路
附图1-3 L298N电机驱动电路
附图1-4按键控制电路图
附图1-5声光报警电路
附录二 源程序(仅核心部分)
void main() {
unsigned int n,m; LCD_Init(); DelayMs(20); LCD_Clear();
TMOD=0x20; TH1=1; TL1=1; TR1=1; ET1=1; EA=1;
PWM_T=1; PWM_T2 = 2; BEEP(); date=100;
xianshi();
for(n=0;n
for(m=0;m
date=150; BEEP();
LCD_Write_String(0,0,""); xianshi();
for(n=0;n
for(m=0;n
LCD_Write_String(0,0,""); xianshi();
if(!go) {
TR1=1; ET1=1;
//PWM_T=1; //PWM_T2 = 2;
EA=1;
s5s();
PWM_T=0;
PWM_T2=3;
BEEP();
s5s();
PWM_T=1;
PWM_T2=1;
{
for(n=0;n
for(m=0;n
s5s();
PWM_T=0;
PWM_T2=0;
BEEP();
s5s();
step = 1; }
else {
PWM_T=10;
PWM_T2=10;
TR1=0; ET1=0;
EA=0; right = 0; left = 0;
if (step ==1) { BEEP();
if(!up1){ date++;}
if(!down1){ date--;}
if(!up2){ date2++;} if(!down2){ date2--;}
step = 0; }
if (date > 135) date =45; if (date2 > 135) date2 =45; if (date
}
if(!c7||!c6||!c5||!c4||!c3)
{
if(!c7) PWM_T=0;
else if(!c6) PWM_T=1;
else if(!c5) PWM_T=3;
else if(!c4) PWM_T=6;
else if(!c3) PWM_T=8;
//else if(!c2) PWM_T=10; }
}
}
void dsq_t1() interrupt 3
{
static uchar t ;
static uchar t2 ;
t++;
15
t2++;
if(t2==10) {
t2=0; left = 0; }
if(PWM_T2==t) {
left=1; }
if(t==10) {
t=0;
right = 0; }
if(PWM_T==t) { // P1=0xff; right=1; }
}
16
17