帆板控制系统设计(F题)摘要:本系统以单片机STC12C5A48S2为控制核心及数据处理核心,采用加速度传感器MMA7260作为角度检测的核心器件,设计并制作了一个帆板控制系统。
以L293构成电机的电路,通过对风扇转角的控制,调节风力的大小,改变帆板的转角θ。
可以通过键盘设置帆板转角0~60o,并在LCD上实时显示θ。
使用了PID算法,使系统能快速达到稳定。
由于采用了低功耗单片机,并且使用了一些高性价比、低功耗的器件去设计电路,因此本放大器具有成本低,功耗小,性价比高的优点。
关键词:控制系统;角速度传感器;单片机;PID;一、方案比较与选择题目分析:综合分析题目要求,转动帆板时,实现实时显示角度,且能够通过键盘控制风力,是本题的最大难点,也是设计的重点之一。
另一难点是使帆板转角达到60o。
要得到更好的性能指标,放大电路的零点漂移也是一个很难解决的问题。
此外,在整个电路的设计中,要考虑其成本。
1、数据处理和控制核心选择方案一:采用DSP最小系统板。
即由DSP来实现电机的控制、传感器信号采集和人机界面控制等功能。
方案二:采用单片机STC12C5A48S2最小系统板。
即由单片机STC12C5A48S2实现整个系统的统一控制和数据处理。
本系统不涉及大量的数据存储和复杂处理,虽然方案一控制更灵活更方便,但DSP的资源得不到充分利用,且系统规模大,成本高。
而单片机STC12C5A48S2是一种8位低功耗微、高性能处理器,具有丰富的片上外设和较强的运算能力,且可串口编程,使用十分方便,性价比高。
综上所述,故采用方案二。
2、角度传感器的比较与选择方案一:角度传感器KMZ41与信号调理芯片UZZ9001组成的角度采集模块。
KMZ41与信号调理芯片UZZ9001一起,能够对180°范围内的角度信号进行测量,并利用SP I方式提供11位的角度信号输出。
调试繁琐,且电路稳定性差。
方案二:采用MMA7260三轴加速度传感器。
这个三轴加速度计用的是Freescale (飞思卡尔)公司生产性价比高微型电容式加速度传感器MMA7260芯片。
用三轴加速度计利用重力分量换算原理,来测量角度与其他数字量倾角传感器相比自然要精准许多,因为模拟量的,可将电压值换算对应倾斜角度值,所以在许多需要测量角度的场合,非运动的条件下,不妨可以试试使用加速度计。
综上所述,采用方案二,电路集成度高、控制方便、易于用单片机处理。
3、显示系统的比较与选择方案一:用数码管进行显示。
数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用。
但是由于本题中要同时显示两个方向的倾斜角度,用数码管无法显示如此丰富的内容。
方案二:用LCD液晶进行显示,由于其显示清晰,内容丰富、清晰,信息量大,使用方便。
综上所述,本系统要显示的内容较丰富,采用方案二。
二、总体方案设计及系统方框图本设计由角度传感器,经单片机控制器采集角度信息,再由单片机控制信号到驱动板,以调节风扇的转速,从而控制帆板的角度。
根据设计要求,此系统难点在于角度传感器的选取,及对于流体力学控制。
因此,为能够检测到角度,本系统采用加速度传感器,利用重力分量,从而得到帆板的角度。
对于自动调节帆板的角度,是由风扇的转速决定,而风扇是直流电机,对于直流电机的调速,本设计的驱动方式采用双H桥并联,控制信号上采用了PWM的调节方式,并可以调节电机运行在四象限。
由于系统设计各数据的难以测量,如风叶片与风流大小,风向的扩散性等因数。
为了能够在自动稳定在设定的角度内,本设计采用PID的算法,通过试验方法,可以从采样频率,及调节PID 三个参数中,方便找到合适的值,以快速控制帆板到达设定的值。
图2-1 系统总体框图三、理论分析与计算帆板系统控制算法采用了PID 算法,包括3个部分:测量、比较和执行,即把测量得到的量与期望值相比较,然后用合格误差纠正调节控制系统的响应。
PID 控制算法是建立在经典控制理论上的一种控制策略。
PID 控制算法能够在保证基本不影响系统稳定精度的前提下提高系统的稳定性,并很好的改善系统的动态性能。
PID 控制器原理框图如图3所示。
图3-1 PID 控制器原理框图系统主要由PID 控制器和被控对象组成。
它根据给定值)(t r 与实际输出值)(t m 构成控制偏差,将偏差按比例、积分和微分通过线性组合构成控制量,对被控对象进行控制。
PID 的图形表达式:⎥⎦⎤⎢⎣⎡++=⎰dt t de T dt t e T t e K t u Dti p )()(1)()(0上式中i T 为积分时间常数,d T 为微分时间常数,p K 为比例系数,)(te 为误差项,)(t u 为控制量。
若令采样时间为T ,离散控制算法为:[]⎭⎬⎫⎩⎨⎧--++=∑=)()()()()(0T kT E kT e T T jT E T TkT e K kT u dkj ip 上式中T 是采样周期,必须足够小,以保证系统有一定的精度,i T 为调节器的积分时间,d T 为调节器微分时间,p K 为调节器的比例系数,)(k e 为第k 次采样时的偏差值,)(k u 为控制量。
采用增量式PID 进行控制,由)()()(T kT u kT u kT u --=∆,可得到如下式子:[][])2()(2)()()()()(T kT e T kT e kT e K kT e K T kT e kT e K kT u d i p -+--++--=∆上式中)(kT e 为第k 次与中心位置的偏差程度,)(T kT e -、)2(T kT e -分别为1-k 、2-k 次误差项,以此算法为基础,很容易用C 语言编写出控制算法程序。
图4-2 MMA7260三轴加速度计的结构图G1和G2两位数字量输入4种组合代表4中量程。
G1 G2 量程选择灵敏度选择0 0 1.5g 800mV/g0 1 2g 600mV/g1 0 4g 300mV/g0 1 6g 200mV/g通过实验,可以输出测得的模拟值,然后通过将模拟值转换成电压值再参考MMA7260芯片手册就可以得知物体的姿态或者角度了。
将X、Y、Z三接口分别接到单片机的模拟0、1、2接口,EN使能和3.3V短接。
3、控制电路本设计采用的单片机为STC公司型号为:STC12C5A48S2的单片机,其中35个IO口分配为:P0与P4.4-P4.6为1602液晶显示的接口,P2接4*4的矩阵键盘,接角度五、程序设计本系统设计可分为四种模式:1,风扇不转,调节帆板,可以显示角度;2,控制风扇转动,调节风扇量,实时显示角度;3,输入一个设定的角度;4,根据设定角度,由系统自动调节风扇,把帆板吹动到设定角度,并保持平衡。
因此,为系统设计的4*4矩阵键盘,4种模式,分别由键盘上的“A”,“B”,“C”,“D”。
设计程序入口。
图5-1 主程序流程图六、测试数据与结果分析1、测试仪器及型号数字示波器Tektronix TDS 1002;直流稳压电源CALTEK-CA17303D;三位半万用表UT33D;量角器;秒表2、测试方案安装好硬件,接通电源,风扇开始以小转速转动,此时,帆板角度几乎不变化,然后,按下加速键,调整帆板的角度,帆板实际转角与液晶显示的角度进行比较,得出实验数值。
3、测试结果①基本要求测试当风扇页面与帆板的距离d=10cm 时,通过键盘控制风力大小,使帆板转角 在60范围内变化,实际值、测量值和偏差如下表:0~0②发挥部分测试60当间距d在7~15cm范围内任意选择,通过键盘设定帆板转角,范围在0~0变化,测试结果如下表:⑴d=7cm时的测试结果⑵d=11cm时的测试结果⑶d=15cm时的测试结果3、测试结果分析从测试数据结果来看,所有测试结果精度都较高,误差极小。
在d=15cm时,误差只有。
本系统能够达到这样的高精度,首先是由于本系统PID自动调节功能功能,在很大程度上减小了误差。
七、总结本帆板控制系统完成了题目中所有的基本要求和发挥部分的要求,本设计的亮点是在设计中运用到了PID调控方法,此方法在系统中能很好的消除系统性的误差,使得精确度更高。
同时本设计的另一个亮点是在控制风力方面,运用键盘控制的同时辅助以电位器控制,这样在调节范围方面更加精确。
整个系统的设计成本较低,性价比高。
八、参考文献[1] 曹宇;翁惠辉;陈永军;冯定;. 基于dsPIC30F4013控制器旋转角度检测系统的研究 [J]. 长江大学学报(自然科学版), 2011.01[2] 余梦迪,董明亮,马彦文,孙立. IAM-1智能测角仪的研制 [J]. 矿冶工程, 1994.03[3] 邓宏贵;吴让亮;施佳佳;. 数字角度传感器在建筑角度测量仪中的应用 [J]. 传感技术学报, 2010.08[4] 王启东,陈纯坤. 激光动态角度测量系统研究 [J]. 光子学报, 1995.01[5] 夏晓晶. 单片机实现的仿人智能PID控制器[D]大连海事大学, 2004 .[6] 李名慧. 智能PID控制器的设计与应用[D]天津大学, 2006 .[7] 纪佳彤. PID自整定控制仪的研制与开发[D]大连理工大学, 2008 . 附录12、主程序include<STC12C5A.h>#include"1602.h"#include"AD_UART.h"#include<math.h>#include <string.h>#include <stdio.h>#include"keyboard.h"#include<math.h>double SetPoint; // 设定目标 Desired Value double Proportion; // 比例常数 Proportional Const double Integral; // 积分常数 Integral Const double Derivative; // 微分常数 Derivative Const double LastError; // Error[-1]double PrevError; // Error[-2]double SumError; // Sums of Errorsint pre_speed=0;int pre_angle=0;float M_pid=0;sbit EN1=P3^3; //与驱动板的接线,对应L293驱动板上的6个信号sbit IN1=P3^4;sbit IN2=P3^5;sbit LED=P3^6;sbit beed=P3^7; //定义了蜂鸣器与单片机的连接sbit GS1=P1^3;sbit GS2=P1^4;sbit SLEEP=P1^5;int speed_R=0; //定义电机的速度,有正负之分,为正是,正转。