兰博

  • 2019-08-12
  • 发表了主题帖: 2019年TI电赛测评表

      A    电动小车动态无线充电系统   D    简易电路特性测试仪 G    双路语音同传的无线收发系统 H    模拟电磁曲射炮   此内容由EEWORLD论坛网友兰博原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-08-07
  • 发表了主题帖: LED电子点阵屏控制卡的设计与制作(给I题提供点思路)

  • 2019-08-01
  • 发表了主题帖: 电磁控制运动装置(J题)

    任务与要求     设计并制作一套电磁控制运动装置,该装置由电磁控制装置、摆杆等部分构成。 (1)按下启动按钮,由静止点开始,控制摆杆摆动。 (2)由静止点开始,控制摆杆在指定的摆角(10°~45°范围内)连续摆动,摆动摆角绝对误差≤5°,响应时间≤15s。 (3)由静止点开始,按指定周期(0.5s~2s 范围内)控制摆杆连续摆动,摆动周期绝对误差值≤0.2s,响应时间≤15s。 (4)在摆杆连续摆动的情况下,按下停止按钮,控制摆杆平稳地停在静止点上, 停止时间≤10s。  (5)摆杆摆角幅度能在 10°~45°范围内预置,预置步进值为 5°,摆角幅度绝对误差值≤3°,响应时间≤10s。 (6)摆杆的周期能在 0.5s~2s 范围内预置,预置步进值 0.5s,周期绝对误差值≤0.1s,响应时间≤10s。 (7)摆杆摆角幅度和周期在上述范围内可同时预置,由静止点开始摆动,摆角幅度值和周期相对误差要求均和发挥部分中的(1)、(2)相同。当摆杆稳定运 行20秒后发出声、光提示,并在 5s 内平稳停在静止点上。   1.系统方案比较和选择     本次实验利用MSP430单片机接收按键采集信号,通过控制电磁铁的磁性有无以及强弱是摆杆摆动所要求的角度,通过角度传感器MMA7361L将实时采集到的角度数据以模拟电压的形式传递给模数转换器,经由单片机处理使电磁铁吸引摆杆在规定的角度内控制摆杆的运转角度。 总体方案设计 根据实际的要求,系统可分为控制模块、电源模块、角度检测模块、电磁驱动模块、按键及显示模块、声光提示模块五部分组成。根据要求,我们对以下三部分进行了方案论证与比较: 1.1 控制模块的比较与选择     方案一:选用FPGA作为核心控制器,采用光电计数器作为角度检测传感器,对光电计数器的输出进行计数,确定摆杆摆动角度并进行实时检测。电机驱动采用PWM控制方式。     优点:资源丰富,接口众多,运算速度快,控制精度高     缺点:价格较高、程序编写复杂,同时因随机摆动的可能会造成光电计数器读值不准而造成控制误差     方案二:采用普通51单片机作为核心控制器,采用精密单圈电位器作为角度检测传感器,经过ADC转换之后送人MCU,采用控制输出电压的方式控制电机输出速度。     优点:成本低、程序编写简单     缺点:控制精度低、处理速度较慢、功耗高。     方案三:采用TI公司的MSP430作为核心控制器,它是一个16位的功能强大的超低功耗微处理器,特别适合于电池应用的场合,而且其集成度高,不需要加入其他的芯片进行辅助,就能完成本次设计的各项要求,同时MSP430有丰富的不同类型器件可供选择,给我们的设计带来了很大的灵活性,而且其性价比高。      优点:处理能力强、运算速度快、超低功耗、片内资源丰富、方便高效的开发环境 综和上比较以上三种方案中控制器的优缺点,第三种方案具有更大的优越性,我们选择方案三进行设计。   1.2显示模块的比较和选择     方案一:采用LED数码管显示,利用74HC373驱动数码管动态显示,控制比较简单,但占用较多I/O口,不能实现资源的有效利用,而且只能显示一些简单的字符,显示信息量有限且不能达到题目要求。     方案二:采用Cry12864LCD液晶显示,LCD微功耗、超薄轻小,可以灵活显示图片文字、字迹清晰,因此具有友好的人机交流显示界面,特别适合智能系统的可编程人性化显示。 综合以上论述,选择方案二。   1.3按键模块的比较和选择     方案一:采用行列式键盘,这种键盘的特点是行线、列线分别接输入线、输出线。按键设置在行、列线的交叉点上,利用这种矩阵结构只需m根行线和n根列线就可组成m×n个按键的键盘,因此矩阵式键盘适用于按键数量较多的场合。但此种键盘的软件结构较为复杂。 方案二:采用独立式键盘,这种键盘硬件连接和软件实现简单,并且各按键相互独立,每个按键均有一端接地,另一端接到输入线上。按键的工作状态不会影响其它按键上的输入状态。但是由于独立式键盘每个按键需要占用一根输入口线,所以在按键数量较多时,I/O口浪费大,故此键盘只适用于按键较少或操作速度较高的场合。 根据上面两种方案的论述,由于本次设计的系统硬件只需要五个按键,所以采用方案二独立键盘进行设计。   1.4 角度检测模块的比较和选择 方案一:采用光电编码器,它是一种角度检测装置,将角度变化量,利用光电转换原理转换成相应的电脉冲或数字量,具有体积小、工作可靠、接口数字化等优点;其缺点是无法输出轴转动的绝对位置信息,达不到所需精度。 方案二:采用高精度单轴SCA61T倾角传感器,它具有双输出接口;模拟电压输出和数字接口SPI接口。还内置了温度传感器和EEPROM存储器,用于给倾角传感器做温度补偿和存储补偿数据使用;此外它还具有自我检测/验证引脚的功能,能通过此引脚(SELF TEST)检测传感器是否正常工作。此外SCA61T倾角传感器,具有分辨率高、噪声低、抗冲击能力强、反应迅速等等优点。但是本次设计是要精准的监测单摆所转动的角度,如若选用该传感器,并不能很好的完成本次实验。 方案三:采用高精度的模拟三轴加速度传感器MMA7361L,MMA7361L是一种超低功耗、小型电容式的微机械加速度传感器。一种可以对物体运动过程中的加速度进行测量的电子设备,典型互动应用中加速度传感器可以用来对物体的运动方向进行监测,根据物体运动和方向改变输出信号的电压值。精密多圈电位器直接把角度变化转化为电阻值的变化,控制器利用其内部AD转换将其转化为数字量,通过计算得出角度值,软件编程灵活,硬件电路简单,实现比较容易。 综合以上论述,选择方案三。   1.5电磁驱动模块的比较和选择     方案一:采用伺服电机控制滚珠丝杠使电磁铁在规定的位置范围内滑动,滚珠丝杠具有很小的摩擦阻力、具高精度、可逆性和高效率的特点。传动的原理就是通过伺服马达的带动,丝杆做高速运动,通过螺母来带动固定在螺母上面的电磁铁,特点是滚珠丝杆的精度比较高,误差小。由于伺服电机的灵敏度太高不易控制,磁铁摆杆摆动的角度范围有限,因此不能完成此次实验的要求。 方案二:采用自制电磁铁,在磁铁摆杆正下方排成一排,通过对单个或多个电磁铁通电起到吸引或者排斥的作用,控制摆杆摆动,由MMA7361L角度传感器实时检测磁铁摆杆摆动的角度以达到之前摆杆摆动设定的角度以及周期,电磁铁的磁性可通过PWM(脉冲宽度调制)来调节,控制起来方便简洁,易实现。  综合以上论述,选择方案二。   1.6电源模块的比较和选择     方案一:采用+5V和+24两个电源供电。将伺服电机驱动电源与处理器以及其周电路电源完全隔离,利用三极管9013传输PWM信号。这样可以使直流轴流风扇驱动所造成的干扰彻底消除,但是电路复杂,容易造成短路。     方案二:采用单一电源供电。电源直接给伺服电机供电,因伺服电机启动瞬间电流较大,会造成电源电压波动,因而控制与检测等其他部分电路通过集成稳压块供电。其供电电路比较简单,但干扰太大,不易提高精度。 方案三:采用开关电源,开关电源开关电源一般由脉冲宽度调制(PWM)控制IC和MOSFET构成,体积小、重量轻,由于没有工频变压器,所以体积和重量只有线性电源的20~30%,功耗小、效率高,功率晶体管工作在开关状态,所以晶体管上的功耗小,转化效率高,继电器易选择,电路构成简单,集成度高。 综合以上论述,选择方案三。 系统各模块的最终方案     经过仔细分析和论证,决定了系统各模块的最终方案如下: (1)控制模块:采用TI公司的MSP430 (2)显示模块:采用Cry12864LCD液晶显示 (3)按键模块:采用独立式键盘 (4)角度检测模块:采用高精度的模拟三轴加速度传感器MMA7361L (5)电磁驱动模块:采用自制电磁铁 (6)电源模块:采用开关电源 2.系统理论分析与参数计算 2.1 PWM驱动的基本原理及特点     PWM(Pulse Width Modulation,脉冲宽度调制)技术是利用半导体开关器件的导通和关断,把直流电压变成电压脉冲列,并通过控制电压脉冲宽度和脉冲列的周期来达到变压、变频目的的一种控制技术[2]。也就是用脉冲宽度不等的一系列等幅值的矩形脉冲去逼近一个所需要的电流或电压信号。   PWM驱动电路,是广泛应用于高精度控制系统的驱动形式。这种电路能够实现宽范围的速度和位置控制,较之常规驱动方式具有无可比拟的优点。 PWM驱动电路线路简单、快速性好、线性度好、效率高的优点,使其广泛应用于测量、通信、功率控制与变换的许多领域中。本设计利用PWM驱动电路所需大功率可控器件少、调速范围宽、快速性好、效率高,功耗低的特点,用C8051F005单片机直接输出的PWM信号经过驱动电路,然后配合合适的控制算法(PID算法或模糊控制算法等)去控制比例电磁铁,可实现离合器的精确控制,对于电控离合器控制系统的研究有很好的参考价值。   2.2 大幅度摆动单摆的高精度周期     一个质量为m 的小球由一根轻质的长度为L的刚性细绳悬挂在一个固定的支架上(小球半球远远小于细绳长度),小球在重力的作用下可在垂直平面内来回摆动(不考虑空气阻力),如图2-2所示,根据受力分析重力对该系统提供外力矩作用,由转动定律可得小球运动的微分方程为:           图2-2单摆任意角圆周运动示意图            式(1)中θ为离开平衡位置的角位移、g为重力加速度。若给定初始条件,式(1)的任意精度的数值解是可以求出来的,但要求出单摆周期的解析解还应采取一些近似处理。如果我们采用小角度近似θ<5° ,sinθ≌θ,式(1)便成为一个线性微分方程,相应的摆动便是简谐振动。在这个角度限制下单摆振动周期为T0=2π 。事实上,T0并不能表示任意摆动幅度的周期,由于在小角度近似条件下我们几乎觉察不到周期有什么不同。超出这个小角度限制,随着摆角增大T 0越来越不能描述单摆的精确周期,这时式(1)可以通过数值模拟求解。      当单摆的摆动角度>5° ,由于系统的机械能守恒,从能量的观点出发也可以求解单摆周期的精确解,这样就不需要详细讨论式(1)非线性微分方程。给出非常简单的单摆周期T3 的公式,      (2) 式(2)简单实用,由式(2)可以计算出,当摆角为57° 左右,其相对误差为0.1%,摆角为90° 相对误差还不到0.75%。 2.3 角度测量原理 角度测量采用倾角传感器MMA7361L的传感轴安装在与摆杆同一平面内,采用双轴测量值合成来计算倾斜角,在小倾角测量时,具有高分辨率和高精度的特点。 图2-3角度测量原理图 由于加速度传感器在静止放置时受到重力作用,因此会有1g的重力加速度。利用这个性质,通过测量重力加速度在加速度传感器的X轴和Y轴上的分量,可以计算出其在垂直平面上的倾斜角度。如上图所示。有 这样,根据以上原理一个2轴加速度传感器可以测量在X-Y 平面上的倾斜角度。这个公式就是本文中用来测量物体倾斜角度的基本原理。需要说明的是,这里利用的是物体在静止时受到重力的性质,如果物体同时也有运动加速度的话,那么这个公式将不再准确。所以必须为公式增加一个限制条件,即   角度测量模块采用角度传感器MMA7361L,利用了电阻分压原理。当帆板带动传感器转动时,角度的变化使得传感器内部电阻的阻值发生变化,从而导致电压值的变化,控制器对电压信号进行采集,通过AD转换,将其变换成数字量,经过内部计算,转化成角度值。 2.4电磁铁磁性控制     控制器从角度传感器采集到角度值,和预设的角度值作比较,经过运算,调整PWM脉宽,PWM调速是使加在直流电机两端的电压为方波形式,通过改变方波占空比实现对电机转速调节。     在自动控制系统中,PID算法使用比较广泛。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活。本系统中,摆杆的角度要比较稳定,这就需要将角度传感器检测的值与设定值比较,然后调整占空比控制电磁铁磁力,从而调整摆杆角度。 3.电路设计与程序设计    根据题目要求,将角度检测信号送入单片机进行数字化处理,键盘进行设定值输入,显示其作为各种信息如设定值、操作界面等的显示。经过数字化处理的角度值由单片机与设定值进行比较,控制风扇转速达到控制摆杆角度的目的。同时,单片机可完成一些其他功能。 3.1 硬件电路的设计     由TI公司的MSP430单片机作为整个系统的控制核心。采用独立式键盘:使用角度传感器采集摆杆转角大小,使用伺服电机控制滚珠丝杠达到电磁铁的滑动。各个检测信号、控制信号、显示信号等由单片机的I/O口进行控制,同时可以方便直观的进行系统设置,并由程序保证系统抗干扰的能力。 传感器采集到信号后,送人单片机内进行A/D转换,使用键盘设定摆杆摆角,通过PWM驱动伺服电机转动及调速,此时摆杆摆角会相应变化,角度传感器继续采集信号至达到键盘设定的摆动角度为止。 硬件设计框图如下图3-1所示:                                     3.1.1主控电路 以MSP430为控制核心,P1.0、P1.1、P1.3口作为按键中断所用,P1.2作为PWM电机转速控制,P2口控制Nokia5110lcd显示,P3口作为声光提示所用,实现帆板控制系统的自动控制。原理图如下图: 图3-1-1主控电路 3.1.2 角度检测子系统框图与电路原理图     为了实现帆板倾斜角度的精确测量,设计中选用飞思卡尔MMA7361L三轴加速度传感器作为角度测量的核心器件,MMA7361L具有三路模拟量输出信号,Xout、Yout、Zout脚分别是X轴、Y轴和Z轴方向倾角的模拟电压输出脚,该设计仅测量一个方向的的倾角,因此仅需用ADC0804对一个输出脚的数据进行模数转换,将测得的数字量回传到单片机经过计算即可得到一个方向的倾斜角度 图3-1-2(a)是角度检测模块的系统框图,图3-1-2(b)是角度检测模块的硬件电路设计。         图3-1-2(a)角度检测模块的系统框图 图3-1-2(b)角度检测模块的硬件电路设计 3.1.3按键及显示电路 由按键设定单片机的工作模式及帆板转动角度,并由液晶显示,液晶采用Cry12864LCD,其微功耗、超薄轻小,具有强大的显示功能。 图3-1-3(a)为显示与声光控制的子系统框图,图3-1-3(b)为液晶显示接口电路原理图       图3-1-3(a)显示与声光控制的子系统框图 图3-1-3(b)液晶显示接口电路原理图 3.1.4总体电路图 见附录一 3.2 软件程序设计 3.2.1程序功能描述与设计思路    1)按下启动按钮,由静止点开始,控制摆杆摆动。     2)可以在固定摆角、摆动周期。     3)提供12864液晶显示和5位独立按键提供人机交互。 设计思路: 根据摆杆上的角度传感器接收角度信号并传送给单片机进行信号处理,通过处理后的信号对电磁线圈进行控制,从而控制摆杆的摆动。 3.2.2程序流程图 4.系统测试及结果分析 4.1 测试方案 4.1.1硬件测试 1)硬件调试时,可先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。然后用万用表检测,检查无误后,可通电检查数码管以及键盘电路的好坏。     2)电磁驱动电路的测试,用数字示波器检测PWM信号是否正常,占空比是否可调,是否和轴流风扇转速相对应。 3)角度检测电路的测试,当转动角度传感器时,用数字示波器检测其输出是否有方波脉冲。  4.1.2软件测试 软件调试是在Keil 编译器下进行,源程序编译及仿真调试应分段或以子程序为单位逐个进行,最后结合硬件实时调试。子程序调试包括:PWM脉宽调制子程序,角度检测子程序,显示电路子程序,键扫描子程序等。 4.2测试条件与仪器 4.2.1测试条件    检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。 4.2.2测试仪器 本系统需要使用以下仪器进行功能调试与性能测试。如下表4.2.2所列: 表4.2.2测试使用仪器 仪器名称 用途 数量 备注 数字万用表 检查电路是否短路 1   数字示波器 检查输出波形是否正确 1   量角器 测量角度 1   直尺 测量距离 1 量程0—30cm 秒表 测量时间 1   4.3 测试结果与分析 4.3.1测试结果(数据) 测试数据如下表4.3.1(a)(b)所列(角度设以及摆动周期为随机值): 表4.3.1(a)摆杆在指定的摆角摆动 设置角度大小(单位:度) 10 13 19 21 30 35 40 42 45 实际角度大小(单位:度) 10 13 19 21 30 36 41 43 46 摆角绝对误差 0 0 0 0 0 +1 +1 +1 +1 响应时间(单位:秒) 5 6 6 6 9 9 10 10 12 表4.3.1(b)摆杆在指定的摆角摆动 设置周期值(单位:秒) 0.5 0.8 1.2 1.6 1.8 2 实际周期值(单位:秒) 0.8 0.13 1.5 1.9 2 2.5 摆动周期绝对误差 +0.3 +0.5 +0.3 +0.3 +0.2 +0.5 响应时间(单位:秒) 8 9 7 10 10 12   4.3.2测试分析     误差分析:通过以上两张表格的数据分析可知,输入的角度与实际测出的角度存在一定的误差,但误差的大小控制在范围之内。产生误差的可能因素存在很多,可能是人为产生的误差,可能是转轴与横杠之间的摩擦,也可能是整体系统构架上存在误差。 结论:本控制系统的基本部分和发挥部分的要求都能够实现,测出的实际数据与理论值存在误差,误差的范围在要求之内。通过系统的整体分析,难点在于对帆板实际偏转的角度反馈给单片机,然后单片机再分析,从而控制电磁铁的磁性大小。这部分的程序设计需要用到PID算法,PID算法的实现对PWM的调制起着关键的作用,PID程序算法与PWM的结合是完成系统设计的难点,通过这几天的调试,软件程序与硬件系统达到了很好的结合,所以也就比较顺利完成了系统设计要求。 测试结果与分析如表4.3.2所列。   表4.3.2测试结果与分析 调试项目 调试结果 由静止点开始,控制摆杆在指定的摆角(10°~45°范围内)连续摆动,摆动摆角绝对误差≤5°,响应时间≤15s。 能够在指定的摆角内摆动,摆动摆角绝对误差均在允许范围内 在摆杆连续摆动的情况下,按下停止按钮,控制摆杆平稳地停在静止点上,停止时间≤10s。 可以在10 s内平稳地停在静止点

  • 2019-07-26
  • 发表了主题帖: 智能电动车跷跷板

    1.系统方案选择与论证 1.1系统基本方案 根据题目要求,有两种解决方案。   方案一:精确定时法 这种方案主导思想是:由题目要求可知电动车的运行轨道比较固定,因此可以通过不断的调试最终可以得到各阶段行驶的时间,得以通过定时方法到达平衡点C,终点B和返回起始点A。 缺点:供电电压不稳定,易导致小车车速不稳定,则距离不好控制;另外路线固定不变,不能应对意外事件,而且想要准确跑完全程需要对电动车的起始位置、直线行进参数、进行精密测量和计算,智能化差,容易跑偏坠落。   方案二:传感器引导法 这种方法核心是单片机通过对传感器信号检测来控制步进电机转速和转向,智能化大大增强。可以用下图形象的表示出来: 比起前一种方案来说,这种方案应用面更广,也更接近实用化,智能化。重要的是单片机可以通过传感器检测到的信号来精确控制电机运转,从而大大提高了运行过程中的实时性、准确性,使得电动车能够轻松的完成整个过程。因此我们选用方案二 。系统框图如图1所示: 图1 系统总体结构框图 1.2各模块方案选择与论证 1.2.1单片机最小系统的选择 方案一: 单片机选用89C51。其内部有4K字节的Flash Rom,电路设计简单,价格便宜。但时钟频率低、运行速度慢,功能不够齐全。 方案二:选用ARM单片机为控制核心。频率高、运行速度快、容量大、I/O口资源丰富,但价格较高。 方案三:选用SPCE061A单片机为控制核心。频率较高、响应快、有14个中断源,两个定时器,7路A/D转换,两路D/A转换,并且有丰富的语音资源、电路设计简单、价格便宜。 综合考虑我们选用方案三 。   1.2.2导航电路方案选择 方案一:用光电传感器采用循迹的方式保证电动车的直线行走。此方案简单可行,但通用性差,有一定的局限性。 方案二:用红外测距传感器测量跷跷板的两个边缘,当电动车发生偏转时,红外测距传感器变为检测地面与车体的距离,输出电压会急剧下降,单片机接到信号会及时控制电机的转动状态做出相应的调整。该方案没有对题目要求做任何限制就能实现其功能,因此本设计选用方案二。   1.2.3角度测量电路设计     方案一:使用铅垂线+光折断器。市售的光折断器的尺寸小的在5mm左右,也就是说,能检测到5mm的尺寸变化,按照大赛对平衡要求,平衡时平衡夹角Υ正切值为40/1600=1/40,也就是说,如果需要达到5mm的检测精度,需要使用200mm高的铅垂线,如需要更高的精度,可以通过提高铅垂线的长度来实现。此方案虽然可行,但体积较大,不便于安装。 方案二:采用光电编码器。光电编码器具有精度高、体积小、重量轻、安装方便、抗干扰强等特点。因此本设计选用方案二。这里采用的是ZSP3.806系列的光电编码器。   1.2.4电机的选择 方案一:采用直流电机做小车的动力。直流电机驱动电路设计简单,易于控制,但是直流电机惯性大、响应慢、不便于精确控制转速,根据题目要求的精度直流电机部容易实现,故不宜采用。 方案二:采用步进电机做动力。步进电机精度高、惯性小、响应快便于精确控制转速和转向,适合该题目的控制,因此本设计采用方案二。   1.2.5步进电机驱动电路的设计     方案一:使用多个功率放大器件驱动电机 通过使用不同的放大电路和不同参数的器件,可以达到不同的放大要求,放大后能够得到较大功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。 方案二:使用L298N芯片驱动电机 L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;也可以直接用单片机的IO口提供信号;而且电路简单,使用起来比较方便。 通过比较,使用L298N芯片能充分发挥它的功能,能稳定地驱动步进电机,且价格不高,故我们选用L298N驱动电机。   1.2.6显示电路的选择 方案一:根据题目要求,需要显示的内容只有数字或字母,因此可以选用LED数码管显示。但显示容量有限,且动态扫描需要占用大量单片机时间,无法做到实时显示。 方案二:具有显示容量大、内容丰富、占用单片机口线少、节省单片机时间、功耗低等优点,完全符合本系统要求。   1.2.7电源部分 方案一:采用自制的直流稳压电源。 自制电源功率大,绿色环保,电压稳定,但携带不方便,使电动车的运动受到限制,因此不宜采用。 方案二:采用镍氢蓄电池给系统供电,由于步进电机工作电压为9V,单片机工作电压为5V,根据系统要求,我们选择7809稳压管和7805稳压管将12V的电池组转成9V 和5V输出。该方案电压稳定,电池可重复利用,且携带方便,小车运动不受限制,可以方便快捷的完成任务,因此,我们选用方案二。   1.3 系统各模块的最终方案 经过上述的分析论证,系统各模块采用的最终方案如下: (1)、控制核心:选用SPCE061A单片机; (2)、导航电路: 用红外测距传感器测量跷跷板的边缘; (3)、角度测量: 采用光电编码器; (4)、动力模块:选用步进电机作为小车的动力装置; (5)、步进电机驱动模块:使用L298N芯片驱动电机 ; (6)、显示电路:用LCD液晶显示; (7)、电源部分:采用镍氢蓄电池给系统供电;   2. 系统硬件设计与实现   2.1导航电路设计 为了保证小车沿直线行走,以及准确判断是否到达跷跷板的两端,本设计在车体的前端和后段各装一只红外测距模块,在前端的左右两侧和后端的左右两侧分别装有两只红外测距模块。     2.2角度测量电路设计 为了让小车尽快找到平衡点,我们采用光电编码器精确测量跷跷板的倾角。具体电路见附录图b、图e、图j。   2.3步进电机驱动电路设计 为了保证步进电机能够平稳高效运转,本设计采用L298N芯片驱动电机,并用光电耦合器进行隔离防止烧坏单片机。具体电路如图2所示: 图2 步进电机驱动电路 2.4显示电路设计 基于LCD具有显示容量大、内容丰富、占用单片机口线少、节省单片机时间、功耗低等优点,我们采用液晶显示。电路连接见附录图c 2.5 电源电路设计 为了给系统提供一个高效稳定可靠的工作电压,我们对电池组进行稳压措施。电路原理如图3所示: 图3电源电路设计     3. 系统软件功能设计、理论分析和计算、各程序框图 从题目的要求角度来看,本程序用各个阶段调用子程序的方法,思路简单易于思考,因为采用了步进电机,对小车的行进易于精确控制,但是由于步进电机的单步性使小车有了难以消除的突变性,程序采用渐进的方式使速度缓慢改变,寻找平衡时采用动态平衡比较现实 也比较容易控制。 根据题目要求平衡的定义为跷跷板的两端上下波动不超过2cm,由此可以计算出平衡时允许波动的最大偏角:ɑ=±ractan1/40≈±1.43°因此当角度传感器检测到偏角为零或正负摆动不超过1.43°且大小相等的角度时就可以认为处于平衡状态了。另外,为防止小车从跷跷板上掉下来我们采用红外线测边沿距离来进行模糊控制。 主要程序流程图见附录图e、图f、图g。   4. 系统测试 4.1测试仪器:YB4328双踪示波器(20Hz~20MHz)、4位半数字万用表、游标高度尺、计算器、秒表、水平仪、卷尺等。   4.2指标测试: 基 本 部 分   A点到C点附近时间 找到平衡点所需时间 平衡点到终点所需时间 保持平衡时间 终点返回起始点所需时间 平衡时上下波动差 秒表显示 5.19s 23.32s 4.31s 5.63s 9.67s 14.33mm  小车显示 5s 23s 4s 6s 10s 14s 秒表显示 5.14s 25.17s 4.22s 5.72ss 9.61s 15.56mm  小车显示 5s 25s 4s 6s 10s 16s   发挥部分   上板所用时 A点到C点时间 调平时间 保持平衡时间 配重物用时间 再次平衡耗时 保持时间 平衡点到终点时间 返回时间 秒表测得 17.21s 7.09s 28.06s 5.54s 4.59s 17.74s 6.01s 4.73s 10.03s 小车显示 18s 7s 28s 6s 5s 18s 6s 5s 10s 秒表测得 19.33s 6.03s 27.01s 5.67s 4.65s 18.22s 5.82s 4.56s 9.79s 小车显示 20s 6s 27s 6s 5s 18s 6s 5s 10s   由表格可看出基本部分所需最长时间为49.86s,发挥部分所需最长时间为101.17s,平衡时跷跷板两端上下波动最大距离为16.71mm,完全符合系统要求。   4.3调平测试 (1)将小车放在有重物的一端,打开开关,小车停止时跷跷板B端底部与水平状态的偏移量为16.71mm且能保持6.01秒,在平衡时能发出声光提示,完成全过程用时101.17秒,完全符合要求。 (2)改变重物位置重复(1),跷跷板平衡时的偏移量基本保持不变,用时103.24秒。 4.4角度测量 起始点处的倾角理论计算值为:ɑ=±ractan7/80=5°,平衡点处理论值为0°。 测量次数 起始点 平衡点 终点 1 4.8° 1.2° -5.2° 2 5.2° 0.9° -4.4° 3 5.0° 1.4° -5.0° 4.5实现功能: 经过测试系统的各参数都在题目要求范围内。本系统在完成了题目要求的基本部分和发挥部分外,还增加了测温装置,有效防止电机因温度过高而烧坏的现象。此外,小车在跷跷板上保持平衡时可以在上面原地旋转。

  • 2019-07-19
  • 发表了主题帖: 水库控制系统资料

    本帖最后由 兰博 于 2019-7-19 14:30 编辑 摘  要   在水资源利用方面,对流量、水质等参数的测量非常重要,但很多水库资源在高山地区,难以对其进行实时监测。无线通讯技术的迅速发展和普及,为远程监控系统的实现提供了理想的平台,因此越来越多的水文站把基于无线通讯技术的监控系统作为水利系统自动化管理的新手段。而随着水利自动化技术不断发展,水利系统的自动化水平逐步提高,各水库都能通过远程监控系统逐渐实现少人、无人监管的管理模式,以提高生产效益。 本文主要探讨了基于无线通讯的模拟水库监测系统的设计问题。该系统要求对水库的水位,流量等参数进行远程实时监测,能控制阀门开/关,调节水位的高度,保证水库的安全。设计思路是在下位端利用单片机将传感器采集的水库信息进行处理,将处理好的数据通过CC1100无线模块传送到上位机端,在上位机上可以清楚地观察水库的实时情况。上位机对信息进行监测分析,并将分析后的信息反馈回到下位端,通过单片机控制步进电机正反转,模拟阀门开/关,来控制水库水位和流量,保证水库的安全。近年来,本课题在国内外已受到非常多的关注与研究,并且不断地得到改进,在实际应用中也取到了较好的效果,具有非常好的应用推广价值。   引言  水库是我国防洪和蓄水广泛采用的工程措施之一。随着计算机及无线通信技术的发展,水库自动监测的信息采集、处理及发布已完成手工方式向自动方式的转变。通过建设水文站实时监控系统,利用先进的无线通讯监控手段对水库信息实施监测。采用CC1100无线网络实时网上传输水文数据,能实现对水库及其附属建筑物及管理区进行全面视频监控。 长期以来,水文工作者都是,靠手测、目测收集水文信息。直接影响到测报的精度和成果质量。利用无线监控系统采集数据,不但可提高精确度,还可以使水文工作者告别传统的工作方式。 在通常情况下,由于水文站点在地理位置上分布较广或位置较偏僻。并且与监控中心的距离较远,利用传统的有线连接方式,线路铺设成本高昂,而且施工周期长,同时,因为物理因素如河流山脉等障碍而难以架设线缆。而且水文信息安全防范要求高,采用有线通讯在遇到刮风、暴雨、决口等灾害时,线路一断,水文信息就无法及时传递上去,因此有线传输的抗灾性比较差,难以适应高可靠性要求,加之流域地形复杂、偏僻,铺设光纤成本也比较高。相比之下,无线通信布线简单、方便,抗灾性比较好,成本也比较低,可大量节省投资。 本文中提到的CC1100水文数据无线监控解决方案可很好地解决上述问题。用户采用无线水库监测系统,无需铺设网络电缆,可迅速方便地采集各种需要的实时数据资料,建立新的无线监控系统或对现有的无线监控系统进行扩展,具有很强的灵活性和可扩充性。可实现真正意义的实时水文信息的采集和监控、统一管理。 本课题所研究的水库监测系统采用了自动控制、计算机网络和无线通讯新技术,具有实时信息自动采集、传输、视频监控、远程数据和图像传输、信息、查询等功能。系统应用了单片机,传感器,CC1100无线模块,步进电机等元器件。可实时监控管理区水库的实时参数。该监控系统采用无线传送,传递速度快,系统结构简单。被监控点实时采集的数据文件通过无线网络通信线路及时地传输给监控中心,实时动态地报告被监测点的情,及时发现问题并进行处理,既方便又简捷。并可确保系统在各种恶劣天气情况下,都能正常运行,满足系统各种信号相互传输的准确性。可全面实现水文信息采集自动化、数字化和网络化。大大提高了水库了安全系数和水资源利用率。 1  绪论 1.1 本课题的发展现状   当前,我国水资源的短缺已严重影响了经济的可持续发展,可以说已经成为社会经济稳定增长的瓶颈。水资源时空分布严重不均,人口众多和传统工业经济发展速度较快等因素加剧了缺水问题;严重的水污染又使缺水问题日益突出,随着流域内经济的快速增长和人口的增加,水资源的供需矛盾将越发急剧。因此,充分利用水资源,防治水污染已成当务之急!在大力加强节水、保护水质,实现水资源的可持续利用的前提下,如何提高现有水资源的管理水平就显得尤为重要,是一直困扰我们的难题。在很多偏远山区或河流的峡道口,都建立了各型的水库,它们的作用毋庸置疑。通过水库的作用,可以充分合理地利用水资源。 有了水库的蓄水功能,我们就可以充分地将水能转化为所需的能源,对社会经济的发展有着很深远的影响。但福兮祸所依,水库同时存在很严重的隐患。如若控制不当,其结果必导致巨大的灾难。因此,在大力加强节水、保护水质,实现水资源的可持续利用的前提下,如何提高现有水库的管理水平就显得尤为重要。长期以来,水文工作者都是靠手测、目测收集水文信息。直接影响到测报的精度和成果质量。利用无线监控系统采集数据,不但可提高精确度,还可以使水文工作者告别传统的工作方式。 在通常情况下,由于水文站点在地理位置上分布较广或位置较偏僻。并且与监控中心的距离较远,利用传统的有线连接方式,线路铺设成本高昂,而且施工周期长,同时,因为物理因素如河流山脉等障碍而难以架设线缆。而且水文信息安全防范要求高,采用有线通讯在遇到刮风、暴雨、决口等灾害时,线路一断,水文信息就无法及时传递上去,因此有线传输的抗灾性比较差,难以适应高可靠性要求,加之流域地形复杂、偏僻,铺设光纤成本也比较高。 1.2 本课题的发展趋势 CC1100模块的无线通讯性能非常好,可以高效稳定地完成信息传输任务,而且操作简单,能克服复杂的环境,传送的数据不容易受到外界的干扰,使得上位机能接收到水库完整的信息,以对其进行准确地监测分析。 随着我国社会经济的快速发展,对水资源的需求越来越大,换言之,水库的重要性越来越显著,对水库的管理力度必须加大。我国山区多,极易发生自然灾害,合理地控制水库的参数,可以减少很多损失。本课题所研究的模拟水库监测系统采用的是无线远程监测,它的实用性非常强,能有效地监测建在偏远山区人力难至的水库的实时参数,而且在原设备老化的情况下,能够轻松地进行更新和扩展,省却了大量的人力物力,工作效率也大大提高。 在要求全球自动一体化的现代社会,它是相当有研究价值的。因此,该系统有着很大的发展潜力,基于无线通讯的水库监测系统定会得到非常广泛的应用。 1.3 本课题的研究意义和目的 在通常情况下,由于水库在地理位置上分布较高或位置较偏僻。并且与监控中心的距离较远,利用传统的有线连接方式,线路铺设成本高昂,而且施工周期长,同时,因为物理因素如河流山脉等障碍而难以架设线缆。长期以来,水文工作者都是靠手测、目测收集水库水文信息,直接影响到测报的精度和成果质量。 利用模拟水库无线监控测系统采集数据,不但可提高精确度,还可以使水文工作者告别传统的工作方式。而且水文信息安全防范要求高,采用有线通讯在遇到刮风、暴雨、决口等灾害时,线路一断,水文信息就无法及时传递上去,因此有线传输的抗灾性比较差,难以适应高可靠性要求,加之水库区域地形复杂、偏僻,铺设光纤成本也比较高。相比之下,无线通信布线简单、方便,抗灾性比较好,成本也比较低,可大量节省投资。 用户采用无线监控解决方案,可迅速方便地在采集水库各种需要的实时数据,而且可以对现有的无线监控系统进行扩展升级,具有很强的灵活性和可扩充性。可实现真正意义的实时水文信息的采集和监控、统一管理。 本课题中,利用自动控制、计算机网络和无线通讯新技术来构成无线监测系统,采用CC1100无线模块来进行无线传送,具有实时信息自动采集、传输、无线监控、远程数据和图像传输、信息、查询等功能,可实时监控管理区水库的情况。该系统信息传递速度快,结构简单,全面实现了水文监测自动化。 1.4 本课题的主要研究工作和各章节内容安排    本课题主要研究如何设计模拟水库监测系统的问题。由于关键在于数据的无线通讯传输上,所以必须对CC1100模块等硬件特性要有一定的研究,要设计好功能实现的过程,实际上,整个课题的难点就在于调试上。 各章内容安排:第一二章两章主要是基础理论知识的介绍。主要有本课题的研究意义、模拟水库监测系统的相关理论知识以及简要的分析了一下所用到芯片相关理论及应用;第三章主要从总体方面分析系统的设计思路以及用到的相关原理;第四章是本次系统设计的硬件电路设计部分,详细分析了每一模块的原理、功能、相关原理图以及元件和参数的选择;第五章阐述了系统的软件部分,介绍了各模块软件的编译流程图,并对部分程序进行了分析;第六章和第七章主要讲述了系统的干扰和调试情况;最后是主要是总结和参考的文献及附录,在附录中介绍采集部分程序,CC1100无线模块通讯代码, 步进电机控制程序,串口通讯程序及上位机的VC监测界面的编译程序。 2  相关技术和基本理论介绍 2.1 CC1100无线模块的相关特性                          图2.1 CC1100无线模块轮廓图 2.1.1 CC1100无线模块接口电路 图2.2 CC1100无线模块的接口电路图 CC1100 单片无线收发器工作在433/868/915MHZ 的ISM 频段由一个完全集成的频率调制器一个带解调器的接收器一个功率放大器一个晶体震荡器和一个调节器组成。工作特点是自动产生前导码 和CRC 可以很容易通过SPI 接口进行编程配置,电流消耗低。 表2.1  CC1100接口电路的引脚特性 引脚编号 引脚名 引脚类型 描述 1,2 VCC 电源输入 1.9V-3.6V之间  3 SI 数字输入 连续配置接口,数据输入  4 SCLK 数字输入 连续配置接口,时钟输入 5 SO(GD01) 数字输出 连续配置接口,数据输出 当CSn为高时为可选的一般输出脚   6   GDO2 数字输出 一般用途的数字输出脚: 测试信号,FIFO状态信号, 时钟输出,从XOSC向下分割 连续输入TX数据 7 CSn 数字输入 连续配置接口,芯片选择     8     GDO0   一般用途的数字输出脚: 􀀀 测试信号 􀀀 FIFO状态信号 􀀀 时钟输出,从OSC向下分割 􀀀 连续输入TX数据   9,10 GND 地(模拟) 模拟接地 2.1.2 CC1100无线模块的特性与应用 (1) CC1100无线模块的特性 ① VCC脚接电压范围为 1.9V-3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。推荐电压3.3V左右。 ② 除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需电平转换。当然对3V左右的单片机更加适用了。 ③ 硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以了。 ④ 9脚,10脚为接地脚,需要和母板的逻辑地连接起来 ⑤ 排针间距为100mil,标准DIP插针,如果需要其他封装接口,比如密脚插针,或者其他形式的接口,可以联系我们定做。 ⑥ 与52系列单片机P0口连接时候,需要加10K的上拉电阻,与其余口连接不需要.其他系列的单片机,如果是5V的,请参考该系列单片机IO口;输出电流大小,如果超过10mA,需要串联电阻分压,否则容易烧毁模块! 如果是3.3V的,可以直接和CC1100模块的IO口线连接。 (2) CC1100模块的应用 在本系统中,采用的CC1100无线模块的工作电压是3.3V,频率波段为300-348 MHz、400-464 MHz和800-928 MHz,有很高的灵敏度(1.2kbps,1%数据包误差率),可编程控制的数据传输率可达500kbps,有较低的电流消耗(RX中15.6mA,2.4kbps,433MHz),有可编程控制的输出功率,其所有的支持频率可达+10dBm,有优秀的接收器选择性和模块化性能。 ① CC1100无线模块中有极少的外部元件:芯片内频率合成器,不需要外部滤波器或RF转换,可编程控制的基带调制解调器;有理想的多路操作特性,有可控的数据包处理硬件,可快速频率变动合成器带来的合适的频率跳跃系统,有可选的带交错的前向误差校正,有单独的64字节RX和TX数据FIFO高效的SPI接口:所有的寄存器能用一个“突发”转换器控制,有数字RSSI输出与遵照EN 300 220(欧洲)和FCC CFR47 Part 15 标准的系统相配,还有自动低功率RX拉电路的电磁波激活功能,并拥有许多强大的数字特征,使得使用廉价的微控制器就能得到高性能的RF系统。 ② CC1100无线模块还包含集成模拟温度传感器,及能自由引导的绿色数据包,能对数据包导向系统的灵活支持:对同步词汇侦测的芯片支持,地址检查,灵活的数据包长度及自动CRC处理。还有可编程信道滤波带宽OOK和灵活的ASK整型支持2-FSK,GFSK和MSK支持自动频率补偿,可用来调整频率合成器到接收中间频率对数据的可选自动白化处理;对现存通信协议的向后兼容的异步透明接收/传输模式的支持可编程的载波感应指示器 ,可编程前导质量指示器及在随机噪声下改进的针对同步词汇侦测的保护,支持传输前自动清理信道访问(CCA),即载波侦听系统 ,支持每个数据包连接质量指示。 ③ CC1100无线模块是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。电路主要设定为在315、433、868和915MHz的ISM和SRD(短距离设备)频率波段,也可以容易地设置为300-348 MHz、400-464 MHz和800-928 MHz的其他频率。RF收发器集成了一个高度可配置的调制解调器。这个调制解调器支持不同的调制格式,其数据传输率可达500kbps。通过开启集成在调制解调器上的前向误差校正选项,能使性能得到提升。 ④ CC1100无线模块为数据包处理、数据缓冲、突发数据传输、清晰信道评估、连接质量指示和电磁波激发提供广泛的硬件支持。CC1100的主要操作参数和64位传输/接收FIFO(先进先出堆栈)可通过SPI接口控制。 本课题通过实验验证,系统中使用的CC1100无线模块的功效距离大约1.2公里,只要再对其进行一些技术上的改进,可以确定地说,在以后对水库无线远程监控的应用中,它会起到非常大的作用。 2.2  串口通讯应用 串行通信是指数据的各位是一位一位得按顺序传送的通讯方式。它的突出优点是只需要一根传输线,甚至可以利用电话线作为传输线,这样就大大降低了传输成本,特别使用于远距离通讯。其缺点是传送速度较低。假如并行传送N位数据所需要的时间为T,那么串行传送的时间至少为NT,而实际上总是大于NT。 (1) 串行通讯的两种基本方式 围绕着当两个设备进行串行通讯时,如何才能保证接受机接受到正确的字符这个问题,通常采用通讯双方都认可的两种传送方式(即通信方式)。 ① 异步传送方式 在异步传送方式中,字符是按帧格式进行发送的。在帧格式中,先是一个起始位“0”,然后是5至8位数据。异步传送方式规定低位在前,高位在后;接下来是奇偶校验位(可略);最后一位是停止位“1”。异步通信的帧格式如图2.3所示。   n-1                第N个字符(一串行帧)         n+1  P  1 0 D0 D1 D2 D3 D4 D5 D6 D7 P 1 0 D0    起始位        数  据   位            校验位      停止位                      图2.3 异步通信的帧格式 这种传送方式利用每一顿的起、止信号来建立发送与接收之间的同步。其特点是:每一帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的。接收机完全靠每一个帧的起始位与停止位来识别字符传送是正在进行还是已经结束,或是一个新的字符。这也就是“异步”的涵义所在。必须指出,在异步传送时,同步时钟脉冲并不传送到接收方,即双方各用自己的时钟源来控制发送和接收。本系统中所用到的串口通讯程序,就是采用了异步传送方式。 ② 同步传送方式 同步传送方式是一种连续传送的方式,它不必像异步传送方式那样要在每个字符都加上起止位,而是在要传送的数据块前加上同步字符SYN,而且数据没有间隙,如图2.4所示,使用同步传送方式,可以实现高速度,大容量的数据传送。 开始                                                         终止 同步字符 同步字符 数据段 CRC字符#1 CRC字符#2 图2.4  串行通讯的同步传送方式 在同步传送中,为了保证接收正确无误,发送方除了传送数据外,还要将时钟信号同时传送。 在串行通讯中有一个重要的指标叫做波特率。它定义为每秒钟传送的二进制数码的位数,以位/秒作为单位。波特率反映了串行通讯的速率,也反映了对传输通道的要求,波特率越高,要求传输通道的频带就越宽。在异步通讯中,波特率为每秒传送的字符数和每个字符位数的乘积。 (2) 串行口的工作方式 串行口控制寄存器SCON格式如下:              D7   D6    D5    D4    D3    D2   D1   D0 SM0 SM1 SM2 REN TB8 RB8 TI RI SCON   图2.5串行口控制寄存器SCON格式 SM0,SM1为串行口工作方式选择位。可选择四种工作方式,如表2.2所示。表中f为单片机时钟频率。  表2.2 串行口工作方式选择   SM0 SM1 方 式 功   能 波特率 0 0 0 同步移位寄存器    f/12 0 1 1 10位异步收发   可变 1 0 2 11位异步收发 F/64或 f/32 1 1 3 11位异步收发 可变 由于本设计中只用到方式1,故在此详细介绍工作方式1。 在方式1状态下,串行口为8位异步通信接口。一帧信息位10位:1位起始位(0),八位数据位(低位在前)和1位停止位(1)。TXD位发送端,RXD为接收端,波特率可变。 ① 发送  串行口以方式1发送时,数据由TXD端输出,CPU执行一条写入SBUF的指令后,便启动串行口发送,发送完一帧信息时,将发送中断标志TI置1。 方式1发送时的定时信号,即发送移位脉冲,是由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值)而取得的,因此其波特率是可变的。 ② 接收  方式1接收是在REN位置1的前提下,从搜索到起始位而开始的,在无信号时,RXD的线的状态为1,当检测到存在由1到0的变化时,即认为收到个字符的起始位,接收过程随即开始,在接受移位脉冲的控制下,把接受到的数据一位一位地移入接收寄存器,直到9位数据(包括1位停止位)全部收齐。在9位数据收齐之后,还必须同时满足以下两个条件,这次接收才能被真正确认: RI=0;SM2=0或接收到地停止位为1。 当满足这两个条件时,便将接收移位寄存器中的8位数据存入串行口数据缓存器SBUF,收到的停止位则进入RB8,并使接收中断标志RI置1。若这两个条件不满足,则所接收的数据无效,串行口接着又开始寻找下一个起始位,准备接收下一帧数据。 2.3  传感器应用 2.3.1 水流量传感器的应用 (1) 流量传感器的基本特性 流量范围是1-30L/MIN,工作电压范围是3.5-24VDC,脉冲特性F=(8.5Q-3)(Q=L/MIN),误差为5%,该水流量传感器与相关电路配合可监测实时流量或计算累计流量,输出信号为脉冲信号。   图2.6 流量传感器轮廓图 该水流量传感器是利用霍尔元件的霍尔效应来测量磁性物理量。在霍尔元件的正极串入负载电阻,同时通上5V的直流电压并使电流方向与磁场方向正交。当水通过涡轮开关壳推动磁性转子转动时,产生不同磁极的旋转磁场,切割磁感应线,产生高低脉冲电平。由于霍尔元件的输出脉冲信号频率与磁性转子的转速成正比,转子的转速又与水流量成正比。其脉冲信号频率的经验公式见式 (1)。                     f=8.1q-3                                   (1) 式中:f—脉冲信号频率,H2;q—水流量,L/min 由水流量传感器的反馈信号通过控制器判断水流量的值。 (2) 水流量传感器的构造     水流量传感器主要由铜阀体、水流转子组件、稳流组件和霍尔元件组成。它装在模拟水库中,用来测量水流量。当水流过转子组件时,磁性转子转动,并且转速随着流量成线性变化。霍尔元件输出相应的脉冲信号反馈给控制器,由控制器判断水流量的大小,调节控制比例阀的电流。水流量传感器从根本上解决了压差式水气联动阀启动水压高以及翻板式水阀易误动作等缺点。它具有反映灵敏、安全可靠、连接方便利启动流量超低(1.5L/min)等优点。 水流转子组件主要由涡轮开关壳、磁性转子、制动环组成。使用水流开关方式时,其性能优于机械式压差盘结构,且尺寸明显缩小。当水流通过涡轮开关壳,推动磁性 子旋转,不同磁极靠近霍尔元件时霍尔元件导通,离开时霍尔元件断开。 (3) 水流量传感器的工作原理     在本系统中,利用水流量传感器的特性,设计了一个小型的模拟水库。用一般用于给金鱼供氧的小型抽水换氧机作为抽水机,抽动水流运动,使水流通过水流量传感器的涡轮,水流量传感器开始采集数据.通过调整连接在抽水机与水流量传感器间的导水管的高度来调整水流量大小;下位端数码管显示所测水流量值。测得的流量值相当好,可以精确到毫秒,误差几乎可以忽略不计。 2.3.2 超声波传感器的应用                         图2.7 超声波传感器 本系统设计中,使用了一对超声波传感器,配置相应的电路,来实现对模拟水库水位的测量。 (1) 超声波传感器包括发送和接收两部分,电路图介绍如下:                         图2.8 超声波发送电路 由三个NPN三极管构成差动放大电路,其放大倍数由电阻R7,R8和R9等电阻决定,所采集的信号波从J6口输入,经由NPN管级数放大,在消除共模干扰后,从J6口发送出去。                           图2.9  超声波接收电路 超声波换接收电路所接收到的从发送端传来的微弱信号,要经过LM358芯片进行放大,使得所采集的信号足够大,然后通过J2口送到单片机上,信号经AT89S52单片机处理后,由数码管显示出来。 (2) 超声波的接收与处理     接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大器放大后,作为中断请求信号,送至单片机处理。 (3) 测试中所遇到的干扰信号 超声波测量水位时,需要测的是开始发射到接收到信号的时间差,需要检测的有效信号为反射物反射的回波信号,故要尽量避免检测到余波信号,这就要求对接收头收到的波束进行处理,这也是超声波检测中存在最小测量盲区的主要原因。在软件中的处理方法就是,当反射头发出脉冲,计时器同时开始记时。我们在记时器开始记时后再开启检测回波信号,可以消除余波信号的干扰,等待的时间可以为1MS左右,更精确的等待时间可以大大地减少最小测量盲区。 2.4 步进电机的控制原理 (1) 步进电机的概念 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。 (2) 步进电机的一些特点:  ① 一般步进电机的精度为步进角的3-5%,且不累积; ② 步进电机外表允许的最高温度。步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点。 ③ 步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。  ④ 步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。 (3) 步进电机控制原理  ① 步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。  ② 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。  ③ 步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:      通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。  控制步进电机的转向。如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。  控制步进电机的速度      如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。但脉冲形式的电机控制,使控制端容易受到干扰,所以必须在电机驱动电路中加入光耦电路来减少干扰。 电机的正反转是由单片机来控制的。当单片机的一个口发出1或者0的时候来决定正反转,也可以两个口来决定。电机的启动我们选择用LM298。本文中,主要应用到步进电机的换相功能,通过单片机控制步进电机正反转动,来模拟实现阀门的开/关。 2.5 主要器件和应用 2.5.1 AT89S52 单片机 图2.10  AT89S52单片机 AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。     AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口和外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 表2.3 主要功能特性     · 兼容MCS-51指令系统 · 8k可反复擦写(>1000次)ISP Flash ROM   · 32个双向I/O口 · 4.5-5.5V工作电压   · 3个16位可编程定时/计数器 · 时钟频率0-33MHz   · 全双工UART串行中断口线 · 256x8bit内部RAM   · 2个外部中断源 · 低功耗空闲和省电模式   · 中断唤醒省电模式 · 3级加密位   · 看门狗(WDT)电路 · 软件设置空闲和省电功能   · 灵活的ISP字节和分页编程 · 双数据寄存器指针 AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。     P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入.当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。     P1口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P2口:P2口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口:送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。     P3口:P3口是一个具有内部上拉电阻的8 位双向I/O 口,p2口输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。 引脚号第二功能     RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。     在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过.如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。     PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。     EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。     XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。     XTAL2:振荡器反相放大器的输出端。     AT89S52 特殊寄存器映象及复位值特殊功能寄存器特殊功能寄存器(SFR)的地址空间映象。并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。 2.5.2 TLC549 A/D转换器 (1) TLC549的原理 如图2.11,作为数据采集芯片,TLC549均有片内系统时钟,该时钟与I/O CLOCK是独立工作的,无须特殊的速度或相位匹配。当CS为高时,数据输出(DATA OUT)端处于高阻状态,此时I/O CLOCK不起作用。这种CS控制作用允许在同时使用多片TLC549时,共用I/O CLOCK,以减少多路(片)A/D并用时的I/O控制端口。TLC549可方便地与具有串行外围接口(SPI)的单片机或微处理器配合使用,应用接口及采样程序。 该芯片有一个模拟输入端口,3态的数据串行输出接口可以方便地和微处理器或外围设备连接。TLC549仅仅使用输入/输出时钟(I/CLOCK)和芯片选择(CS),就能够正常启动。 图2.11   TLC549  A/D转换器 (2) TLC549的特点 表2.4 TLC549基本特性   CMOS技术 低功耗数据采集系统 8位转换结果 电池供电系统 与微处理器或外围设备接口 工业控制 差分基准电压输入 工厂自动化系统等 转换时间:最大17us     每秒访问和转换次数:达到40000     片上软件控制采样和保持功能     全部非校准误差:±0.5LSB 宽电压供电:3~6V 封装及引脚 低功耗:最大15mW 5V供电时输入范围:0~5V 输入输出完全兼容TTL和CMOS电路 全部非校准误差:±1LSB 工作温度范围:0℃~70℃(TLC549); -40℃~85℃(TLC549I) TLC549可方便地与具有串行外围接口(SPI)的单片机或微处理器配合使用,也可与52单片机连接使用,实际应用程序清单如下: ;初始化:     SETB P1.2   ;置CS为1。     CLR P1.0    ;置I/O CLOCK为零。     MOV R0,#00H ;移位计数为零。;A/D过程: A/DP: CLR P1.2     NOP ;等待1.4μs,nop数根据晶振情况选择。 NXT: SETB P1.0    MOV C, P1.1    RLC A    CLR P1.0    INC R0    CJNE R0,#8,NXT    MOV R0,#00    SETB P1.2    MOV DTSVRM,A ;DTSVRM:DATA SAVE RAM.    RET TLC549片型小,采样速度快,功耗低,控制简单。适用于低功耗的袖珍仪器上的单路A/D或多路并联采样。 2.5.3 MAX232 芯片     MAX232芯片是MAXIM 公司生产的低功耗、单电源双RS232发送/接收器。适用于各种EIA-232E 和V.28/V.24 的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源变换成RS-232C输出电平所需±10V电压,所以采用此芯片接口的串行通信系统只要单一的+5V电源就可以。 MAX232 外围需要4个电解电容C1 、C2 、C3 、C4 ,是内部电源转换所需电容。其取值均为1μF/25V。宜选用钽电容并且应尽量靠近芯片。C5为0.1μF的去耦电容。 MAX232的引脚T1IN、T2IN、R1OUT、R2OUT为接TTL/ CMOS 电平的引脚。引脚T1OUT、T2OUT、R1IN、R2IN 为接RS - 232C电平的引脚。因此TTL/ CMOS 电平的T1IN、T2IN引脚应接MCS- 51 的串行发送引脚TXD; R1OUT、R2OUT 应接MCS-51的串行接收引脚RXD。与之对应的RS -232C电平的T1OUT、T2OUT 应接PC 机的接收端RD; R1IN、R2IN应接PC机的发送端TD。 MAX232的用法如下: (1) 在C1+和C1-两端、C2+和C2-两端、V+和地两端、V-和地两端分别接一个0.1μf(105)电容。 (2) 可以将两路RS-232C电平转换成两路TTL电平。分别从R1IN和R2IN输入,对应从T1OUT和T2OUT输出。注意,输入和输出的逻辑值保持一致,如输入-5V,即逻辑1,输出也是逻辑1,TTL电平为高电平,即3.6V左右。 (3) 可以将两路TTL电平转换成两路RS-232C电平,分别从T1IN和T2IN输入,对应从R1OUT和R2OUT输出。同样输入和输出的逻辑值保持一致。     图2.12 MAX232芯片 2.5.4 七段数码管 LED数码管多段发光二极管组成,其形状有7段8字形的、14段米字形等。根据接法不同又可分为共阴极和共阳极两类。每一段由一个引脚控制,根据要求,对各个引脚加上不同的电压,使其显示需要的数字或字符。如果是一个共阴极数码管,则要显示0时就要给a、b、c、d、e、f、g七只发光二极管加高电平,给g管加低电平,十六进制数为7E。从0~9的十六进制显示码分别为3F,06,5B,4F,66,6D,7D,07,7F,6F。 在该单片机系统中,使用了LED数码显示器来显示采集到的水库水位和流量。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 八段LED显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。如2.5.4图所示。本系统中使用了一块四位七段数码管。    图2.13  数码管原理图 2.5.5 LM298芯片 LM298是四路输出的电机驱动芯片,每路大概500毫安,其本身有压降,随输出电流的变化而变化。它可以同时控制两个直流电机,可以驱动一个步进电机。LM298的管脚我们已经知道,它的作用是控制电机的正反转和驱动电机。下位端单片机与LM298连接(管脚如下图),但电机脉冲会对下位机产生很强的干扰,所以必须在单片机和LM298之间加上一个光耦电路来隔离,减少干扰影响。本系统只用到LM298的部分功能。 图2.14  LM298驱动芯片 3  系统设计 3.1 系统要求 本系统要求对水文站的雨量,流量进行监测,自动控制阀门开/关。利用超声波传感器和流量传感器采集水位、流量等信息,利用CC1100无线模块实现上位机与下位机之间无线通信。上位机存储数据,并通过编译VC界面实时显示水库的参数变化情况。 (1) 水位和流量的监测 能够对水库水位、流量等参数进行数据采集。并且精度需要达到0.5CM,数据用无线传送。采集到的水位、流量等数据需要从下位机传输到上位机。为了完成这一过程,本系统采用了CC1100无线传输模块,利用其无线通讯技术,把上位机与下位机联系起来,实现数据的无线传送。在传输的过程当中不能够出现误码,或者尽可能让误码降到最小。 (2) 闸门的控制 水文站的控制最重要的一点就是:让水位保持在一定的范围内。当水位过高时,需要放水。当水位过低时,则需要蓄水。这个过程中,由传感器传输的数据经A\D转换送入单片机处理,相应发出控制信号来控制闸门的开与关。这个过程可以由下位机单片机端直接控制。系统中通过单片机控制步进电机正反转,来模拟阀门开关的运转情况。所采集到的数据在PC机上采用图形或者例表的形式显示,来直观地监测水库的实时参数。 3.2 系统总体方案   该水库监测系统结构主要由四部分组成:数据的采集、单片机运算控制、数据的无线收发、上位机端的监测分析。设计思路是将传感器所采集到的水库参数,经A/D转换送入单片机进行处理,然后将处理的结果,经CC1100无线模块传输到上位机端,再通过串口通讯技术,利用MX232芯片将数据传到上位机上,在上位机上通过编译的界面可以清楚地知道水库的情况,然后对所监测到的数据进行分析,将分析结果反馈到下位端,下位机端接收到反馈信息后,由单片机输出脉冲,来控制步进电机正反转(相当于控制阀门开/关),从而实现对水库的流量和水位的适时控制,保证水库的安全。 为了提高系统的可靠性,本方案中,进行的是双保险.系统分两个部分,一个是单片机独立控制,二是人为的远程控制。整个过程完全自动运行,不需要人为地实地监控,这样就保证了控制速度和精确度.采用远程控制,可以容易地对硬件设备进行更换扩展,这样就避免了因系统的老化而可能产生的系统损坏或无法正常工作等问题,从而使系统能持续地正常运转,减少了系统故障的发生。 4  硬件原理与设计 4.1 步进电机的控制电路 利用AT89S52单片机和LM298驱动芯片构成步进电机的控制系统,控制电机正反转。在该电路设计中,加入了TLP521_4光耦电路,使单片机与步进电机的驱动电路完全隔离,以减少电机脉冲对单片机的干扰;电路图中还包括单片机外接的四个插槽,方便对单片机上的各个接口的使用,它们通过网络标志分别和各相关电路元件连接。步进电机接收的是脉冲信号,所以极容易受到干扰。       图4.1  步进电机的驱动电路 4.2 单片机工作电路 AT89S52单片机是模拟水库监测系统的核心部分,用它来控制整个系统的运行,下面是它的电路图及相应配备电路,本系统中,共用到两块AT89S52单片机,上下位端各一块,下位端即CC1100模块无线发送端,这一块单片机有三个作用,一是对传感器所采集的信息进行处理;二是将处理好的数据信息送入到CC1100模块中进行发送;三是根据信息处理结果,控制步进电机正反转。上位端的AT89S52单片机主要是用来承载CC1100模块所接收到的信息,实现串口通讯,将数据传到上位机上去。要对AT89S52单片机进行保护,在XTAL1和XTAL2间要加入晶振电路来保证单片机的正常运行。 图4.2  单片机工作电路 4.3 数码管显示电路 显示模式采用的是四位七段LED数码管显示,如同单片机的使用一样,该系统电路中也使用了两块数码管,它们的功能分别是:下位端的数码管是用来显示传感器所采集的信号,通过其显示的方波信号来计算时间差,求出水位,以及显示由流量传感器所采集的水流量的大小;上位端的数码管用来监测CC1100模块无线通讯是否成功,如果它显示的数字和下位端数码管一样,就证明无线发送/接收成功。 图4.3  数码管显示及其驱动电路 4.4 电源模块设计 由于本系统中CC1100的工作电压是3.3V,为了给其提供稳定的电压,使用了LM1117电压调节器,它能产生3.3V的稳压;该电源模块中还包括上电显示,给步进电机和单片机供电的电压块。 图4.4  电源模块 4.5 CC1100无线模块及串口通讯电路 在下面电路图中,只显示了上位端的CC1100接收模块,因为发送模块的连接方法是一样的,为了避免重复,所以没有给出。上位端接收从CC1100无线发射模块传来的信号,再将收集的信号传送到单片机上。由MX232串口通讯电路,把单片机中的数据信号传到上位机中去,通过上位机显示水库的实时参数,并对数据进行分析反馈。 图4.5  CC1100接收模块及串口通讯电路 5  软件设计 5.1 程序流程图 在本系统中,程序流程图可分为上位机端和下位机端两部分。   在本系统中,程序流程图分为上位机端程序流程图和下位机端程序流程图两大部分。在上位机端,是编译程序来完成上下位机之间的串口通讯,以及实现数据在上下位机间的传送;而下位机端的程序流程图可以实现以下系统功能:一是实现传感器对模拟水库的实时参数的采集,如水位,流量等;二是实现CC1100无线模块的无线通讯;三是实现AT89S52单片机对步进电机的控制。 5.2 CC1100模块发送和接收部分程序分析 在这里介绍CC1100模块的部分通讯代码。由于CC1100无线模块的源代码非常多,下面只介绍CC1100无线模块发送/接收部分的程序代码。程序分析如下: //函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size) //输入:发送的缓冲区,发送数据个数 //输出:无 //功能描述:CC1100发送一组数据 void halRfSendPacket(INT8U *txBuffer, INT8U size) { halSpiWriteReg(CCxxx0_TXFIFO, size); halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据 halSpiStrobe(CCxxx0_STX);                 //进入发送模式发送数据     // Wait for GDO0 to be set -> sync transmitted     while (!GDO0);     // Wait for GDO0 to be cleared -> end of packet     while (GDO0); halSpiStrobe(CCxxx0_SFTX); } void setRxMode(void) { halSpiStrobe(CCxxx0_SRX);                        //进入接收状态 } INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length) {     INT8U status[2];     INT8U packetLength; INT8U i=(*length)*4;        // 具体多少要根据datarate和length来决定 halSpiStrobe(CCxxx0_SRX);                        //进入接收状态 delay(2); while (GDO0) { delay(2); --i; if(i<1)    return 0;     } if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0 {         packetLength = halSpiReadReg(CCxxx0_RXFIFO); //读出第一个字节,此字节为该帧数据长度         if (packetLength <= *length)  //如果所要的有效数据长度小于等于接收到的数据包的长度 { halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength);     //读出所有接收到的数据             *length = packetLength; //把接收数据长度的修改为当前数据的长度   // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)             halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);  //读出CRC校验位 halSpiStrobe(CCxxx0_SFRX);                 //清洗接收缓冲区             return (status[1] & CRC_OK); //如果校验成功返回接收成功         }  else {             *length = packetLength;             halSpiStrobe(CCxxx0_SFRX);                 //清洗接收缓冲区             return 0;         }     } else  return 0; } 6  误差与干扰分析 6.1 干扰因素及解决方法 在模拟水库监测系统的设计中,由于系统所涉及面广,需要解决的问题就相对比较多,自然会出现不少误差,干扰等情况,影响系统的操作。这些误差干扰主要来自一下几个方面。 (1) 环境和自身性能的影响 由于系统硬件设计中所用到的流量传感器,超声波传感器,CC1100模块等都是比较精密的器件,水流量过大,室内温度过高,或者外界电磁波的干扰等都会影响这些器件的正常工作。比如CC1100模块,假如在其工作的环境中有不协调的磁频电波,就会严重影响系统的无线通讯,使上位端收集的信号产生误码,导致所监测值与水库的实际情况不相符,会导致严重后果。所以在使用CC1100无线模块前,必须使用场强仪对现场环境进行电测,使无线发送信号避开外界的干扰频率。根据系统的实际要求,要选择适合CC1100无线模块无线收发的频率,以减少误差。还有部分元器件自身性能存在不足,如对步进电机的控制,步进电机计算步数时,由于不可避免的自身因素干扰,导致所测量的值往往出现偏差。 (2) 脉冲干扰 下位机端,将采集到的数据信号处理好,通过单片机编译分析后,控制步进电机运转。在这个过程中,步进电机接收到的控制信号是以脉冲形式发出的,很容易引起脉冲干扰。为此,必须在单片机和电机驱动芯片LM298间加入光耦电路,隔离驱动电路和单片机,来减少因脉冲而带来的干扰。 (3) 无线通讯距离的影响 本系统中,CC1100模块的作用距离可达1.2公里,但由于信号波在传播介质中受空气热对流扰动以及尘埃吸收的影响,接收回的幅值随传播距离的增加成指数规律的衰减,使得远距离回波检测误差较大。特别是对接收信号的起始阶段影响较大,增加了检测数据信号起始点的难度。由于基于CC1100无线模块的开发板是固定的,无发再加入运算放大器来缓解干扰,为了控制精度,该系统的无线传输距离实际上是非常有限的。 (4) 测量的随机性 干扰信号多呈毛刺状,作用时间短且具有随机性。对于一次监测的结果,其受到干扰信号影响的几率比较大,可能造成监测结果具有较大的误差。对于这些干扰所造成的影响,本文采用求平均值的方法解决:即连续监测多次,去掉监测结果中的最大值和最小值,再对其余监测结果求平均值,将其作为最终的监测结果,用于分析,这样就减少了随机干扰对监测结果造成的影响。 例如在本系统中,超声波采集水位时,需要测的是开始发射到接收到信号的时间差,测量方法是将测量所得的时间差,乘以314,再除以2,结果就是要检测的水位值。在这个过程中,需要检测的有效信号为反射物反射的回波信号,故要尽量避免检测到余波信号,这就要求对接收头收到的波束进行处理,这也是超声波检测中存在最小测量盲区的主要原因。除此之外,还可以通过软件来处理余波信号。当反射头发出脉冲,计时器同时开始记时;在记时器开始记时后再开启检测回波信号,来减少余波信号的干扰,等待的时间可以为1MS左右。等待时间越精确,最小测量盲区就越少,以此来得到更精确的水库水位信息。 6.2 硬件系统设计的抗干扰技术 电路板设计是从电路原理图变成一个具体产品的必经之路,电路板设计的合理性与产品的生产及质量密切相关。在本课题中,系统牵涉的硬件设计非常多,画图时,硬件布局和走线非常重要,图画的好,画的简便,硬件调试工作就能很容易地进行,系统性能也会提升。因此,必须解决抗干扰问题,在系统电路板的设计过程中,主要采用了以下的抗干扰措施。 (1) 电路板的抗干扰措施 为增加系统抗电磁干扰能力应该采取以下措施: ① 选用时钟频率低的微控制器。只要控制器性能能够满足要求,时钟频率越低越好,低的时钟可以有效降低噪声和提高系统的抗干扰能力。 ② 减小信号传输中的畸变。当高速信号(信号频率高、上升沿和下降沿快的信号)在铜膜线上传输,由于铜膜线电感和电容的影响,会使信号发生畸变,当畸变过大时,就会使系统工作不可靠。一般要求,信号在电路板上传输的铜膜线越短越好,过孔数目越少越好。典型值:长度不超过25cm,过孔数不超过2个。 ③ 减小来自电源的噪声。电源向系统提供能源的同时,也将其噪声加到所供电的系统中,系统中的复位、中断以及其它一些控制信号最易受外界噪声的干扰,所以,应该适当增加滤波电容来滤掉这些来自电源的噪声。 ④ 元件布置要合理分区。元件在电路板上排列的位置要充分考虑抗电磁干扰问题。原则之一就是各个元器件之间的铜膜线要尽量的短,在布局上,要把模拟电路、数字电路和产生大噪声的电路(继电器、大电流开关等)合理分开,使它们相互间的信号耦合最小。 ⑤ 处理好地线。将模拟地、数字地、大功率器件地分开连接,再汇集到电源的接地点。对噪声和干扰非常敏感的电路或高频噪声特别严重的电路应该用金属屏蔽罩屏蔽。 ⑥ 去耦电容。去耦电容以瓷片电容或多层陶瓷电容的高频特性较好,设计电路板时,集成电路的电源和地线之间都要加一个去耦电容。去耦电容有两个作用,一方面是集成电路的蓄能电容,提供和吸收该集成电路开门和关门瞬间的充放电电能,另一方面旁路掉该器件产生的高频噪声,一般情况下,选择0.01uF-0.1uF 的电容都可以。一般要求每10 片左右的集成电路增加一个10uF 的充放电电容。另外在电源端、电路板的四角等位置应该跨接一个10-100uF 的电容。 (2) 应刷电路板的地线布置 合理接地是系统抑制干扰的重要方法之一。印刷线路板(PCB)的地线主要指TTL,CMOS 集成电路的接地线。印刷板中的地线应成网状,而且,其它布线不要形成环路,特别是外周若形成环路,将产生较大的噪声干扰。印刷电路板上的接地线,根据电流通路最好逐渐加宽。使用了大规模集成电路芯片的电路板,要让芯片跨越平行的地线和电源线,这样可以减少干扰。另外,在数字、模拟混合电路板中,同时存在数字地和模拟地。为了不产生相互串扰,在PCB制板布局时,要尽量将数字电路与模拟电路分开,最后选择一点连通。 因为该水库监测系统基本上是在高频环境下运行,所以设计PCB时,制作好的PCB图必须铺成网格形式,板的四周还需加上四个大焊孔,这样就可以避免一些来自板面的内在干扰,使硬件部分稳定。 7  系统调试 7.1 软件调试 首先,必须要将程序调试成功,这是关键的一步,没有内核的调用无法实现系统功能,单纯的硬件无法实现电路的录放。因此,程序的编译就变的特别重要,设计中注重软件的编译仿真,其中采用Keil C51 软件编辑、编译、仿真。对于各个模块,进行一个个子程序分别调试。采用单步运行方式和断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检测程序执行结果是否符合设计要求。通过检测,可以发现程序中的死循环错误、机器码错误及转移地址的错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误。在这阶段发生过的故障包括子程序在运行时破坏现场,缓冲单元发生冲突,零位的建立和清除在设计上有失误,堆栈区域有溢出等问题。 单步和断点调试后,再进行连续调试,这是因为单步运行只能验证程序的正确与否,而不能确定定时精度、CPU的实时响应等问题。待全部完成后,应反复运行多次观察。 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM 语言和C 语言的程序设计。 程序编译、调试的基本过程如下: (1) 建立一个新的工程文件New Project。 (2) 保存文件,选择保存路径,输入工程文件的名字。 (3) 选择设计使用的单片机的型号。 (4) 建立一个新的源程序文件。 (5) 在弹出的程序文本框中输入设计的程序,然后以后缀扩展名为.asm 保存。 (6) 回到编辑界面后,用右键单击Sourece Group 1,在弹出的快捷菜单中选择Add Files to Group’Sourece Group 1’选项,选择设计汇编文件。 (7) 然后对目标进行一些设置,在Options for Target’ Target 1’中进行相应参数的设置。 (8) 编译程序,选择【Project】/【Rebuild all target files 】选项,开始编译程序。 (9) 编译完毕后,选择【Debug】/【Start/Stop Debug Session】 选项,进入仿真环境。 在调试程序过程中,并不是一次性成功的,编辑中出现过好几次错误,经过修改、编译才最后调试成功的。最初调试时,出现采集部分的定义错误,即系统重复定义,经过认真仔细的查找,在程序中对其进行了两次定义,使得程序无法调试成功。 编译成功后,在上面的第(9)步的仿真也是非常重要的,进行检测编译好的程序能否实现硬件电路功能,是否能够实现数据的采集与传送等功能,如果不能实现要继续编写,检查什么地方的功能不能实现等等,反反复复地编辑、调试,直至功能得以实现。程序的编译、调试的工作量比较大,是设计的灵魂,所以在系统的设计中占用了很多时间,要对单片机语言进行深入而细致的学习与思考,它的中断/定时、上电、延时以及数据的写入等等软件设计调试,从而成为设计的重中之重。 其次,将编译调试好的程序下载到单片机中,进行硬件系统的调试,实现设计功能。由于CC1100无线模块占用的单片机存储量非常大,所以下载前需要检测,在CC1100模块中加入采集信号后的编译程序是否超过单片机的容量,AT89S52的容量是256K,如果超过,就难以生成工程文件。在该系统中,采集程序,步进电机控制程序,CC1100源代码,串口通讯程序等都用到了全局变量,占用空间很大,所以要特别注意。 在对系统采集部分进行调试时,要特别注意传感器的工作频段和电压。在模拟水库和传感器之间必须加入一个比较器,控制电压,使传感器能稳定地采集水库信息,减少误差。当接收到的采集数据经单片机处理后,能在数码管上稳定准确地显示时,证明采集部分已经调试成功。 7.2 硬件调试 (1) 脱机调试 在电路板加电之前,先用万用表等工具,根据硬件电路原理图仔细检查电路板线路的正确性,并核对元器件的型号、规格和安装是否符合要求。应特别注意电源的走线,防止电源之间的短路和极性错误,并重点检查扩展系统总线是否存在相互间的短路;或其它信号线的短路。    对于电路板所用的电源事先必须单独调试,调试好后,检查其电压值、负载能力、极性等均符合要求,才能加到电路系统上。在不插芯片的情况下,加电检查各插件上引脚的电位,仔细测量各地点电位是否正常,尤其应注意单片机插座上的各点电位是否正常。 (2) 联机调试     通过脱机调试可排除一些明显的硬件故障。有些硬件故障还是要通过联机调试才能发现和排除。     联机前先断电,检查一下电源、接地是否良好。一切正常,即可打开电源。通电后执行读写指令,对存储器、I/O端口进行读写操作、逻辑检查,若有故障,可用示波器观察波形(如输出波形、读写控制信号、地址数据波形以及有关控制电平)。通过对波形的观察分析,寻找故障原因,并进一步排除故障。可能的故障有:线路连接上有逻辑错误、有断路或短路现象、集成电路失效等。     在单片机电路板调试好后,再接上识别路径电路部分,再对这些部分进行初步调试。本系统中,主要是对水库采集部分的硬件调试,基于单片机控制的步进电机驱动电路的硬件调试,以及上位机端串口通讯部分的调试。 7.3 整体调试 在硬件和软件调试完成后,再结合到一起,即把软件程序烧录到单片机,再将单片机放到系统板上,上电运行。对不完善的地方再进行进一步的修改处理,直到最后达到整个预期为至。在整体调试中,最难调的就是CC1100无线通讯和上下位机串口通讯的通讯。在调试CC1100无线模块时,接收到的信号常受到干扰,这可能与CC1100无线模块的性能有关。调试成功后,无线模块与单片机连接时,还需要编译源代码SPI模拟接口,因为AT89S52上没有SPI接口。之后耐心调试串口通讯程序,实现上下位机间的串口通讯,将数据传送到上位机上进行监测分析。 8  结论与展望 上图为本系统上位机端的出口调试结果图,从图中看出,系统实时跟踪监测出了模拟水库的水位、流量,达到了本课题的设计要求。数据用16进制的形式表现出来。 开发模拟水库自动远程监测系统,不仅能带来人力、物力的节约,更能及时、实时地了解水文数据,以利于对防洪、抗洪、抢险、救灾或供水供电工作的指挥决策,使水库在国民经济发展中发挥更重要的作用。 本系统对模拟水库的水位和流量的测量值基本达到课题设计要求,其所测量的技术参数和误差精度以表格形式表示出来,如下: 测量参数 设定值 第一次测量值 第二次测量值 第三次测量值 平均测量值 测量误差 水位 90.000mm  89.827mm  89.798mm  89.821mm  89.815mm  0.185mm  流量 6.000L/min 5.891L/min 5.894L/min 5.897L/min 5.894L/min 0.106L/min  从图表中可以看出,该系统测得的实际参数的误差非常小,精确度极高。若经过相应地改进,完全可以将其投入到实际应用当中去,很直观地证明了本系统潜在的巨大研究价值和实效性。因此,可以肯定,结合先进的无线网络监控管理系统的水文监测将会是未来水文监测控制管理的必然趋势。   附  录 (1) 该系统设计的主PCB图如下:   (2) 流量传感器的采集程序 #include "reg52.h" float Flow =0; unsigned char Counter1 =0; //////////////////////////////////// void Flow_Cheack(void) {   Counter1 =0;   Counter1 =(TH0*256 +TL0)/2;   TH0 =0x0;   TL0 =0x0;   TR0 =1;   ET0 =1;   //Flow =Counter1;   if(Counter1 <15) Flow =Counter1 *0.138;   else   {     if(Counter1 <32) Flow =Counter1 *0.129; else {       if(Counter1 <48) Flow =Counter1 *0.125;    else   {         if(Counter1 <65) Flow =Counter1 *0.123;       else     {           Flow =Counter1 *0.1234;}}}}}   (3) 数码管显示程序 #include <reg52.h>                           //包含51单片机的头文件 #define uint unsigned int #define uchar unsigned char #define DataPort P0 #define BitPort  P2 unsigned char code LED7Code[]={ 0xC0,// 0 0xF9,// 1 0xA4,// 2 0xB0,// 3 0x99,// 4 0x92,// 5 0x82,// 6 0xF8,// 7 0x80,// 8 0x90,// 9 0x88,// A 0x83,// B 0xC6,// C 0xA1,// D 0x86,// E 0x8E,// F     0x89,// H     0xc7,// L     0xc1// U} uchar DisplayDatas[4] =0; uchar KeyData =0; void LedDisplay_Scan(uchar Kind); void Display_Delay(uchar Delay); ///////////////////////////////////////动态扫描 void LedDisplay_Scan(uchar Kind) {   P2 |=0xf0;   P2 &=0xef;    if(Kind) P0 = LED7Code[ DisplayDatas[3] ]; //扫描第一位   else P0 =LED7Code[KeyData%10];   Display_Delay(1);   P2 |=0x10;   P2 &=0xdf;   if(Kind) P0 = LED7Code[ DisplayDatas[2]  ]&0x7f;   else P0 =LED7Code[(KeyData/10)% 10];//&0x7f;   Display_Delay(1);   P2 |=0x20;   P2 &=0xbf;   if(Kind) P0 = LED7Code[ DisplayDatas[1] ];//&0x7f;   else P0 =LED7Code[(KeyData/100)% 10];   Display_Delay(1);   P2 |=0x40;    P2 &=0x7f;   if(Kind) P0 = LED7Code[ DisplayDatas[0] ];   elseP0 =LED7Code[(KeyData/1000)% 10];   Display_Delay(1);   P2 |=0x80; } ////////////////////////////////////////// void Display_Delay(uchar Delay) {   uchar i;      for(;Delay>0;Delay--)   {     for(i=100;i>0;i--);}}   (4) 步进电机控制程序 本系统中,通过AT89S52单片机控制步进电机运转,只需要利用步进电机的正反转功能来模拟阀门的开/关。程序如下: #include<reg52.h> #define uchar unsigned char #define TURE 1 uchar code MOTO[4]={0x33,0xa6,0xcc,0x59}; uchar status=0; void delay(void) {unsigned int i; for (i=0;i<=450;i++);} //电机反转 void fanzhuan(void) {status--; if (status==255) { status=3;} status%=4; P0=MOTO[status]; delay(); } //电机正转 void zhengzhuan(void) {status++; status%=4; P0=MOTO[status]; delay();} void main(void) {uchar dp1; P0=MOTO[status]; while(1){dp1=P1; dp1=dp1&0x03; zhengzhuan();}}   (5) 串口通讯程序 通过MX232连接上位机实现串口通讯,利用串口通讯传送数据到上位机上,上位机能对由CC1100模块所发送过来的数据进行监测分析。串口通讯程序如下: /******************************************************************** //功能描述 :  串口波特率为115200 //其他说明 :  22.1184MHz晶振 //芯片型号 :   AT89S52 ********************************************************************/ #include <reg52.h>                           //包含51单片机的头文件 #define uint unsigned int #define uchar unsigned char /* 串口通讯接口定义    RXD-------P3.0 数据接收端    TXD-------P3.1 数据发送端 */ uchar SendBusy =0x00; uchar ReceiveData[5] ={0x00}; uchar Receive_Number =0; uchar Receive_Flag =0; ///////////////////////////////// void InitUart(void); /*======================================================================== //函 数 名:  void InitUart(void) //参    数:  无 //返 回 值:  无 //函数功能:  串口初始化函数 =======================================================================*/ void InitUart(void) { TMOD|=0x20;   SCON=0x50;   PCON|=0x80;   //TH1=0xff;//115200   //TL1=0xff;   TH1=0xf4;//9600   TL1=0xf4;   TR1=1;   ES=1;   EA=1;} /*======================================================================= //函 数 名:  void Uart_Send_Byte(uchar Data) //参    数:  uchar Data //返 回 值:  无 //函数功能:  串口发送一个字节函数 =======================================================================*/ void Uart_Send_Byte(uchar Data) { while(SendBusy !=0 );   SBUF = Data;   SendBusy =0xff;} /*===================================================================== //函 数 名:  void uart(void) interrupt 4 //参    数:  无 //返 回 值:  无 //函数功能:  串口中断处理函数 ======================================================================*/ //uart interrupt void uart(void) interrupt 4 { if(RI)   { RI=0;     if(Receive_Number <5)     { ReceiveData[Receive_Number++] =SBUF;   if(Receive_Number ==3)   { if((ReceiveData[0] >0x05)) { Receive_Number =0;} else         { Receive_Flag =1;           Receive_Number =0;}}}}   else         { TI=0;SendBusy =0;}}   (6) VC界面和部分编译程序 VC界面如下,用来监视水库的水位和流量。 VC部分显示程序如下: // UARTDrawDlg.cpp : implementation file #include "stdafx.h" #include "UARTDraw.h" #include "UARTDrawDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif /////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CUARTDrawDlg dialog CUARTDrawDlg::CUARTDrawDlg(CWnd* pParent /*=NULL*/) : CDialog(CUARTDrawDlg::IDD, pParent) { //{{AFX_DATA_INIT(CUARTDrawDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CUARTDrawDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CUARTDrawDlg) DDX_Control(pDX, IDC_MSCOMM1, m_ctrlComm); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CUARTDrawDlg, CDialog) //{{AFX_MSG_MAP(CUARTDrawDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton_Start) ON_BN_CLICKED(IDC_BUTTON2, OnButton_Pause) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CUARTDrawDlg message handlers BOOL CUARTDrawDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog.  The framework does this automatically //  when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);// Set big icon SetIcon(m_hIcon, FALSE);// Set small icon // TODO: Add extra initialization here //@@@+{    m_ctrlComm.SetCommPort(1);//选择COM1    m_ctrlComm.SetInputMode(1);//输入方式为二进制方式    //m_ctrlComm.SetInBufferCount(1024);//设置输入缓冲区大小    //m_ctrlComm.SetOutBufferCount(512);//设置输出缓冲区大小    m_ctrlComm.SetSettings("9600,n,8,1");//波特率115200,无校验,8位数据位,1位停止位    if(!m_ctrlComm.GetPortOpen())//判断串口是否已打开      m_ctrlComm.SetPortOpen(TRUE);//打开串口      m_ctrlComm.SetRThreshold(2);//串口接收到一个数据后引发事件    m_ctrlComm.SetInputLen(0);//设置当前接收区数据长度为0    m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据 //@@@+} //@@@+{ RECT rect={10,20,452,355}; m_OScopeCtrl.Create(WS_VISIBLE | WS_CHILD, rect, this);//创建一个波形框 m_OScopeCtrl.SetRange(0, 255, 0);//设置纵坐标范围 m_OScopeCtrl.SetYUnits("水位");//设置纵坐标字符 m_OScopeCtrl.SetXUnits("时间");//设置横坐标字符 m_OScopeCtrl.SetBackgroundColor(RGB(7, 80, 133));//设置背景颜色 m_OScopeCtrl.SetGridColor(RGB(3, 172, 186));//设置格子颜色 m_OScopeCtrl.SetPlotColor(RGB(255, 255, 255));//设置波形颜色 UpdateData(FALSE); //@@@+} return TRUE;  // return TRUE  unless you set the focus to a control } void CUARTDrawDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below //  to draw the icon.  For MFC applications using the document/view model, //  this is automatically done for you by the framework. void CUARTDrawDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags //  the minimized window. HCURSOR CUARTDrawDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } BEGIN_EVENTSINK_MAP(CUARTDrawDlg, CDialog)     //{{AFX_EVENTSINK_MAP(CUARTDrawDlg) ON_EVENT(CUARTDrawDlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() /*********************************************************************/ unsigned char g_ucRxFlag=1;//@@@+ /*********************************************************************/ //@@@+{    VARIANT variant_inp;    COleSafeArray safearray_inp;    LONG len,k;    BYTE bt;    BYTE rxdata[1024];//设置BYTE数组    CString strtemp; void CUARTDrawDlg::OnOnCommMscomm1() { // TODO: Add your control notification handler code here if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符 { variant_inp=m_ctrlComm.GetInput();//读缓冲区 safearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize();//得到有效数据长度 for(k=0;k<len;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k<len;k++)//将数组转换为Cstring型变量 {   bt=*(char*)(rxdata+k);//字符型 if(!g_ucRxFlag) return ; //在这里加入处理程序__yzhq m_OScopeCtrl.AppendPoint(bt);}}} /*********************************************************************/ void CUARTDrawDlg::OnButton_Start() //开始按钮 { // TODO: Add your control notification handler code here g_ucRxFlag=1; } void CUARTDrawDlg::OnButton_Pause() //暂停按钮 { // TODO: Add your control notification handler code here g_ucRxFlag=0; } //@@@+} /********************************************************************/

  • 2019-07-17
  • 发表了主题帖: 电子设计大赛点阵电子显示屏资料

    电子设计大赛点阵电子显示屏资料   摘要 LED大屏幕显示系统,以AT89S52单片机为核心,由键盘显示、录放音模块、光电开关、温度采集、定时闹铃、LED大屏幕显示等功能模块组成。基于题目基本要求,本系统对时间显示和大屏幕显示进行了重点设计。此外,扩展单片机外围接口、温度采集、非接触式止闹、滚动屏幕显示、语音报时等功能。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,发挥部分也得到完全的实现,而且有一定的创新功能。    关键字:单片机   LED大屏幕   滚屏显示       1任务设计 1.1 基本要求:设计并制作LED电子显示屏和控制器。 1.1.1 自制一台简易16行*32列点阵显示的LED电子显示屏; 1.1.2 自制显示屏控制器,扩展键盘和相应的接口实现多功能显示控制,显示屏显示数字和字母亮度适中,应无闪烁。 1.1.3 显示屏通过按键切换显示数字和字母; 1.1.4 显示屏能显示4组特定数字或者英文字母组成的句子,通过按键切换显示内容; 1.1.5 能显示4组特定汉字组成的句子,通过按键切换显示内容。 1.2发挥部分: 1.2.1自制一台简易16行*64列点阵显示的LED电子显示屏; 1.2.2 LED显示屏亮度连续可调。 1.2.3 实现信息的左右滚屏显示,预存信息的定时循环显示; 1.2.4 实现实时时间的显示,显示屏数字显示: 时∶分∶秒(例如 18∶38∶59); 1.2.5增大到10组(每组汉字8个或16个数字和字符)预存信息,信息具有掉电保护; 1.2.6实现和PC机通讯,通过PC机串口直接对显示信息进行更新(须做PC机客户程序); 1.3 创新部分 1.3.1  室温的测量 1.3.2  定时闹铃 1.3.3  整点报时 1.3.4  非接触止闹    2、方案论证   2.1 显示部分:   显示部分是本次设计最核心的部分,对于LED8*8点阵显示有以下两种方案:   方案一: 静态显示,将一帧图像中的每一个二极管的状态分别用0 和1 表示,若为0 ,则表示L ED 无电流,即暗状态;若为1 则表示二极管被点亮。若给每一个发光二极管一个驱动电路,一幅画面输入以后,所有L ED 的状态保持到下一幅画。对于静态显示方式方式,所需的译码驱动装置很多,引线多而复杂,成本高,且可靠性也较低。   方案二: 动态显示,对一幅画面进行分割,对组成画面的各部分分别显示,是动态显示方式。动态显示方式方式,可以避免静态显示的问题。但设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证图像稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式, 复用的程度不是无限增加的, 因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短, 发光的亮度等因素. 我们通过实验发现, 当扫描刷新频率(发光二极管的停闪频率) 为50Hz, 发光二极管导通时间≥1m s 时, 显示亮度较好, 无闪烁感.。    鉴于上述原因, 我们采用方案二   2.2.数字时钟   数字时钟是本设计的重要的部分。根据需要,可利用两种方案实现。   方案一: 本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。且由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。   方案二: 本方案采用Dallas公司的专用时钟芯片DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。   基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。   2.3 温度采集部分   能进行温度测量是本设计的创新部分,由于现在用品追求多样化,多功能化,所以我们决定给系统加上温度测量显示模块,方便人们的生活,使该设计具有人性化。   方案一:采用热敏电阻,可满足 40 摄氏度至 90 摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测小于 1 摄氏度的信号是不适用的。 方案二:采用温度传感器DS18B20。DS18B20可以满足从-55摄氏度到+125摄氏度测量范围,且DS18B20测量精度高,增值量为0.5摄氏度,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。 基于DS18b20的以上优点,我们决定选取DS18b20来测量温度。   2.4 芯片的选择 方案一:采取并口输入,占用大量I/O口资源 方案二:选取串口输入,使用较少。所以我们选用串口输入。串口输入我们可以选用芯片有74HC595、74LS164、TPIC6B595。但是74HC595和74LS164两种芯片必须加驱动才能驱动LED,而TI 公司的DMOS 器件TPIC6B595 , 除具有TTL 和CMOS 器件中移位寄存器595 的逻辑功能外, 其最大的特点是驱动功率大, 可直接用作LED的驱动。   综合以上比较,我们选取TPIC6B595来驱动LED点阵。   2.5 闹铃方式的选择 方案一:采用蜂鸣器闹铃,当到设定时间时,单片机向蜂鸣器送出高电平,蜂鸣器发生。采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。 方案二:采用录音放音芯片1420闹铃,先对录放音设备录入一段音乐,当到设定时间时,单片机控制录放音设备放音。采用录放音电路铃声可以自己预先设定一段自己喜欢的音乐,符合电器设备人性化的要求。且1420芯片可以分段录音,还具有语音报时功能。   基于录音放音芯片1420的以上优点,我们决定采用录放音设备闹铃。      2.6 止闹方式的选择 一般钟表都具有闹钟功能,到设定时间,便自动启动闹钟,发出音乐提醒人们,再由人按下止闹按钮停止闹钟工作。 一般每天只能设置一次闹钟、并要由人按下按钮止闹,使用不是很方便。 智能处理器应用可改变这种状况,一天可按自己需要设置闹钟的开关、多次闹钟设置并可用非接触方式止闹。   方案一:采取远程红外遥控止闹,遥控器发出特定红外信号时,单片机接受到信号,向发音设备发出停止信号止闹。红外遥控止闹控制距离远,但是价格昂贵,增加了制造成本。 方案二:采取光电传感器,当用一物体遮挡光电传感光电传感器向单片机接口送出一个低电平,单片机立即向发音设备发出停止信号止闹。光电传感器价格便宜,线路简单,易于控制。 基于以上比较我们决定采用光电传感器止闹。   2.7 串口通讯芯片的选择   AT89S52串行口采用的是TTL电平,因此必须的有电平转换电路,可以选择1488,1489,MAX232A. 方案一:采用1488或1489芯片实现电平转换,但在使用中发现这两种芯片可靠性不高,且需要正负12V电源,使用麻烦。 方案二:采用单电源电平转换芯片MAX232A可以使电路变得简单,可靠。 基于以上分析,我们选用方案二,选用芯片MAX232A   2.8 电源模块 方案一:采用干电池作为LED点阵系统的电源,由于点阵系统耗电量较大,使用干电池需经常换电池,不符合节约型社会的要求。点阵系统要悬挂在墙上,电池总量大,使用会有较大安全隐患。 方案二:采用200W/5V直流稳压电源作为系统电源,不仅功率上可以满足系统需要,不需要更换电源,并且比较轻便,使用更加安全可靠   基于以上分析,我们决定采用方案二   3、总体方案   3.1  工作原理: 利用单片机AT89S52单片机作为本系统的中控模块。单片机可把由DS18B20、DS1302读来的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历的显示。点阵LED电子显示屏显示器为主要的显示模块,把单片机传来的数据显示出来,并且可以实现滚动显示。利用光电传感器来实现非接触止闹功能。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。   3.2总体设计 设计总体框图如图1    4、系统硬件设计(单元电路设计及分析) 4.1 AT89S52单片机最小系统: 最小系统包括晶体振荡电路、复位开关和电源部分。图2为AT89S52单片机的最小系统。         4.2 温度测量模块:   温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式, CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。接口电路如图3所示。   图3   DS18B20测量电路   4.3 时钟模块   时钟模块采用DS1302芯片,DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW,其接线电路如图4 图4   时钟电路 4.4 键盘模块 键盘、状态显示模块:为了使软件编程简单,本设计利用可编程芯片8255。接法如表1所示。PA口接按键,PC口则用于控制状态显示所用LED点阵。每个按键都通过一个10K的上拉电阻接电源+Vcc,按键的另一端接地。当有键按下时,与该键相连的PA口的相应位变为低电平,单片机检测到该变化后即转到相应的键处理程序,同时在程序中点亮LED点阵。模块电路如图5     4.5 LED显示模块 点阵数据串行输入, 器件为 移位寄存器TPIC6B595595, 门控和扫描信号常以16 点阵为一行进行并行处理。在点阵显示中以4×8个L ED 点阵构成一个L ED 显示单元, 采用行共阳列共阴的编排方式。其驱动分为行列两部分, 分别来自于行、列移位寄存器, 行数据是扫描数据, 16 行中每次只有一行被驱动, 采用逐行扫描方式, 列数据则为汉字的点阵码。。对于字符和图形显示也可以用点阵处理, 其显示原理和方法相同.电路如图6            图6   LED显示电路   4.6电源选择: 200W/5V的直流稳压电源更加安全电路图如图7                                图7  电源电路   4.7 PC机通讯   MAX232是标准的串口通信接口,对于一般的双向通讯,只需要使用串行输入口RXD(第3脚)、串行输出TXD(第2脚)和地线(第7脚)。MAX232逻辑电平的规定如表2. 表 2  逻辑电平表     逻辑值 电平幅值 (v) 0 3+~+15 1 3-~-15 图8 串口通讯 4.8整体电路   系统整体电路如下: 图9  整体电路 5、系统软件设计 5.1主程序如图10   5.2显示子程序流程如图 11 5.3 显示时间子程序流程如图12   图12    时间子程序流程图   5.4 与PC串口通讯程序         5.5 LED亮度调节   图 14  LED亮度调节 5.6温度测量流程图如图15    图15   温度测量程序流程图   6、测量及其结果分析 6.1 基本部分测试与分析 6.11 测试仪器:               秒表 、温度表、万用电表、WAVE仿真器 6.12基本要求部分的测试与分析: (1)系统上电后,全屏点亮,没有暗点。接着显示时间。按“#”键后时扫描键盘,当有1~10键按下时,分别显示十段设定的数字、英文或汉字。 (2)显示时间时通过与秒表对比,测试的系统时间准确。 6. 2 发挥部分测试与分析: (1) 当按下#后在按下进入亮度调节,按下“+”键时,亮度增加。按下“—”键时,亮度变弱。 (2) 可以实现文字左右移动 (3) 按下“设置时间”键,观察到“钟表” 二极管点亮,此时可对时间进行设置。按下“时间设置“进入时调试,按“+”键时间加。在按下“切换”键时,进入分调整模式,按下“+”键,分增加。按下“选择”键时,分调整模式改为秒调整模式,按下“+”键秒增加。经测试该步可以很好的实现。调整时间完毕后,再按一下“闹钟设置”进入闹铃设置状态,按下“+”键设定“时”增加,在按下“选择”键进入分的设置,按下“+”键设定“分”增加。在按下“选择”键进入秒设置模式,按“+”键秒增加。 (4)系统可以显示10组,每组8个汉字,完成要求   6.3 创新部分测试与分析 (1)温度测量: 键盘切换现场环境温度显示:按“功能”键选择“温度”,将温度传感器和温度计放入不同的测试环境中进行测试,结果如表1所示。   表1 与标准温度计测量值比较表 温度计示值(摄氏度) 10.3 25.2 49.7 70.1 85.5 温度输出(摄氏度) 10 25 50 70 86 由测试知,数字钟的输出与温度计值基本上相等,误差不大于0.5度。 (2) 当到设定时间时,开始访一段音乐,完成定时闹铃功能。 (3)当用手遮挡光电传感器后,停止放音。手拿开后,不再放音,直到到设定时间。完成非接触止闹功能 7、设计总结   全心准备了整整一个酷暑,9月8日我们终于拿到了试题,我们一致选择控制类题目A(LED点阵),从基本方案的制定,在到硬件电路的选择,到制作电路制作,最后进行程序调试。在此期间我们遇到很多困难,几乎没有说过一次好觉,尽管很艰苦,但是我们各自分工,相互协作,一次又一次品尝到了解决问题的喜悦,最终完成了要求的全部功能,并加入了一些创新的部分。在竞赛中我们发现了自己知识的不足,通过四天三夜的奋斗,也可以说四天三夜的学习,我们学到了很多东西,最重要的是我们学会了一种精神————永不放弃。在以后的时间里面我们会用这种精神去学习,更上一层楼。 8、参考资料  [1]《基于单片机结构的智能系统设计与实现》 沈红卫  编  电子工业出版社 [2]《单片机原理与接口技术》 黄惠媛  编  海洋出版社 [3]《单片机应用技术》  周平  伍云辉  编  电子科技大学出版社 [4]《8051单片机实践与应用》 吴金戌 沈金阳 郭庭吉  编  清华大学出版社 [5]《电子设计竞赛赛题解析》 黄正谨等编  东南大学出版社     附录: 例:整屏四个字一起显示的程序 SER    EQU  P1.0 ; TPIC6B595 第3脚 OE     EQU  P1.1;TPIC6B595 第8脚 RCK    EQU   P1.2;TPIC6B595 第12脚 MR     EQU   P1.3;TPIC6B595 第9脚 SRCLK  EQU  P1.4;TPIC6B595 第13脚 ORG 0000H LJMP MAIN ORG 0100H ;**************************主程序********************************** MAIN: MOV SP,#70H SETB  OE      MOV 2BH,#00H MOV 27H,#00H START:           ;初始化寄存器RAM单元 MOV R0, #30H MOV R1,#64H     ;30H~6FH单元清零 MOV A, #00H ST: MOV @R0,A    INC R0    DJNZ R1,ST ;2Dh------寻址偏址        ;整屏四个字一起显示 LOOP:MOV DPTR,#TAB;赋查表初值 MOV R3,#56 PLAY: MOV 2DH,#00H MOV 2FH,#10H GG: LCALL LINE16;扫描显示一次 MOV 2DH,#00H DJNZ 2FH,GG MOV A,DPL CLR C ADD A, #16 MOV DPL ,A MOV A, DPH ADDC A ,#00H MOV DPH, A DJNZ R3,PLAY SJMP START LINE16: MOV 2BH,#16;扫16行,2BH放后还剩几行 FF: LCALL LINE1;扫描显示一行子程序 DJNZ 2BH,FF;扫描行直到16行扫完再转 RET LINE1:LCALL MSTR;将显示的内容移入内存单元       LCALL SEND;发送串口子程序       LCALL XH;选通行子程序       RET MSTR:   ;显示内容移入内存单元       MOV R0,#30H       MOV R4,#9       MOV A,2DH; BB:   MOVC  A,@A+DPTR       MOV @R0,A       INC R0       MOV A,2DH       ADD A,#16;加16移到下一行       MOV 2DH,A       DJNZ R4,BB       MOV A,2DH       SUBB A,#143       MOV 2DH,A       RET ;$$$$$$$$$$$$$$$$$$$$$$$$$$$发送数据到串口子程序$$$$$$$$$$$$$$$$$$$$$$$$$ SEND:MOV R0,#30H      MOV R5,#8  ;一行有8个字节,如每次显示字数不同要作相应改动      SETB OE      SETB MR      CLR SRCLK      CLR RCK      SETB P1.6      SETB P1.7 LQ:  CLR C      MOV R2,#8      MOV A,@R0      ;    CPL A ;TPIC6B595应该不用这一步      LCALL DD1;调用显示一个字节的子程序      INC R0;指向下一个显示单元      DJNZ R5,LQ      RET DD1: CLR  SRCLK;清串行CP端      RLC A;      MOV SER,C      SETB SRCLK ;触发串行CP端      DJNZ R2,DD1;每个字节移8次够了向下执行      RET ;选通行子程序 XH: CLR RCK ;将输出CP变成低电平为上升沿做准备     NOP     SETB RCK     CLR P1.6     ;CLR P1.7     MOV A,27H     MOV P0,A     CLR    OE LCALL DE25MS INC  A     SETB   OE     SETB  P1.6 MOV A,27H   ANL A,#0F0H     SWAP A     ADD A,#01H     SWAP A     MOV 27H,A CLR    MR       SETB   MR        RET DE25MS:    MOV  R5,#09H DEL2:      MOV  R6,#0FH DEL3:      MOV  R7,#01H                 DJNZ  R7,$                 DJNZ  R6,DEL3                 DJNZ  R5,DEL2                 RET TAB: 字库 END  

  • 2019-07-16
  • 发表了主题帖: 全国大学生电子设计大赛常用模块及相关器件资料专辑

    本帖最后由 兰博 于 2019-7-16 09:49 编辑      全国大学生电子设计大赛常用模块及相关器件资料专辑。114个精品资料,共1.1G,一键打包下载。   下载地址>>http://download.eeworld.com.cn/wenji/show/385 此内容由EEWORLD论坛网友兰博原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-07-12
  • 发表了主题帖: 2017信号源类赛题分析

    1历届的“信号源类”赛题  在 11 届全国大学生电子设计竞赛中,信号源类赛题只有 5 题: ①    信号发生器(第 8 届,2007 年,H 题,高职高专组)                                          ②    正弦信号发生器(第 7 届,2005 年,A 题) ③    电压控制 LC 振荡器(第 6 届,2003 年,A 题) ④    波形发生器(第 5 届,2001 年,A 题) ⑤    实用信号源(第 2 届,1995 年,) 信号源类赛题在最近的几届竞赛中,作为独立的赛题都没有出现,但作为其他赛题中的一部分出现在赛题中。 例 1:2013 年本科组 E 题“简易频率特性测试仪” 设计要求: 根据零中频正交解调原理,设计制作一个双端口网络频率特性测试仪,包括幅频特性和相频特性。设计制作一个正交扫频信号源,频率范围为 1MHz~40MHz,频率稳定度≤10-4,频率可以设置,最小设置单位为 100kHz。频率特性测试仪输入阻抗 50Ω,输出阻抗 50Ω。可以进行点频测量,幅频测量误差的绝对值≤0.5dB,相频测量误差的绝对值≤5〫。制作一个 RLC 串联谐振电路作为被测网络。并且指定了信号源采用的 DDS 芯片,AD9854ASVZ(与 AD9854ASQ 等同)。 例 2:2011 年本科组 E 题“简易数字信号传输性能分析仪”设计要求: 设计并制作一个简易数字信号传输性能分析仪,实现数字信号传输性能测试;同时,设计三并制作个低通滤波器和一个伪随机信号发生器用来模拟传输信道。 设计并制作一个数字信号发生器:数字信号V1 为f1(x) =1+x2 +x3 +x4+x8的m 序列,其时钟信号为V1-clock;数据率为10~100kbps,按10kbps 步进可调。输出信号为TTL 电平。 设计并制作一个伪随机信号发生器用来模拟信道噪声:伪随机信号V3 为f2(x) =1+x+x4+x5+x12的m 序列;数据率为10Mbps,输出信号峰峰值为100mV,利用数字信号发生器产生的时钟信号V1-clock 进行同步,显示数字信号V2a 的信号眼图,并测试眼幅度。 例 3:2013 年全国大学生电子设计竞赛综合测评题设计要求: 使用题目指定的综合测试板上的 555 芯片和一片通用四运放 324 芯片,设计制作一个波形发生器。设计制作要求如下: 同时四通道输出、每通道输出脉冲波、锯齿波、正弦波Ⅰ、正弦波Ⅱ中的一种波形,每通道输出的负载电阻均为 600 欧姆。四种波形的频率关系为 1:1:1:3(3 次谐波):脉冲波、锯齿波、正弦波Ⅰ输出频率范围为8kHz—10kHz,输出电压幅度峰峰值为1V;正弦波Ⅱ输出频率范围为 24kHz—30kHz,输出电压幅度峰峰值为 9V;脉冲波、锯齿波和正弦波输出波形应无明显失真(使用示波器测量时)。频率误差不大于 10%;通带内输出电压幅度峰峰值误差不大于 5%。脉冲波占空比可调整。电源只能选用+10V 单电源,由稳压电源供给。 注意:不能外加 555 和 324 芯片,不能使用除综合测试板上的芯片以外的其他任何器件或芯片。     2 历届“信号源类”赛题的主要知识点 从历届“信号源类”赛题来看,主攻“信号源类”赛题方向的同学需要了解的主要知识点如下:          采用单片机+DAC 产生各种信号          采用专用的 DDS 芯片+单片机产生各种信号 采用 FPGA 产生各种信号 DAC 电路设计与制作 滤波电路设计与制作               DDS 接口电路设计与制作 功率放大器电路设计与制作 电源电路设计与制作 单片机最小系统设计与制作          频率、周期等参数测量电路设计与制作   例 1:信号发生器(2007 年 H 题,高职高专组) 要求设计并制作一台信号发生器(注:该赛题是以 2005 年 A 题正弦信号发生器为基础变化的)。需要掌握的知识点:         采用专用的 DDS 芯片(例如 AD9834、AD9852 等)和单片机产生正弦波、方波和三角波信号  采用 FPGA(Xilinx 公司的 DDS v5.0 DDS IP 核,Altera 公司的 DDS IP 核)实现 DDS 功能 DAC(例如 MAX5181/ MAX5184,AD9740)电路设计与制作 可变增益放大电路(例如 AD603)设计与制作 功率放大器电路(例如 THS3001 电流反馈放大器)设计与制作 电源电路设计与制作         单片机最小系统设计与制作 例 2:正弦信号发生器(2005 年 A 题) 要求设计并制作一台正弦信号发生器。需要掌握的知识点:         采用专用的 DDS 芯片(例如 AD9852 等)和单片机产生正弦波信号  采用 FPGA(Xilinx 公司的 DDS v5.0 DDS IP 核,Altera 公司的 DDS IP 核)实现 DDS 功能         滤波电路(例如采用电感和电容构成 7 阶切比雪夫滤波器)设计与制作 DDS 接口电路设计与制作         放大器电路(例如 AD8320)设计与制作 电源电路设计与制作         单片机最小系统设计与制作 例 3:电压控制 LC 振荡器(2003 年 A 题) 要求设计并制作一台电压控制 LC 振荡器。需要掌握的知识点: 压控振荡器电路(例如压控振荡芯片 MC1648+变容二极管 MV209)设计与制作  数字锁相环频率合成器电路(例如,PLL  MC145152+前置分频器 MC12022+VCO MC1648+环路滤波器 LM358 和 RC)设计与制作  FPGA 最小系统的设计与制作 峰-峰值检测电路设计与制作 频率测量电路设计与制作 高频功率放大器电路设计与制作           滤波电路设计与制作 电源电路设计与制作 单片机最小系统设计与制作           LED 或者 LCD 显示器电路设计与制作例 4. 波形发生器(2001 年 A 题) 要求设计并制作一个波形发生器。需要掌握的知识点: 采用直接数字频率合成(DDFS)技术产生波形 晶体振荡器和锁相环电路设计与制作 特殊存储器双口 RAM 电路设计与制作 波形产生电路设计与制作 滤波器电路设计与制作 稳幅输出电路设计与制作 单片机最小系统设计与制作例 5. 实用信号源(1995 年) 要求设计并制作一个实用信号源。需要掌握的知识点: 采用单片机+DAC 产生正弦波信号 比较器电路设计与制作 滤波器电路设计与制作 3 “信号源类”赛题培训的一些建议  虽然信号源类赛题在最近的几届竞赛中没有出现,但作为信号源可能在无线电类、仪器仪表类、数据采集与处理类等作品中出现。因此在竞赛培训中仍然是一个不能够忽视的重要培训内容。 涉及到信号产生的几个基础知识和技术、电路设计和制作(例如:DDS、FPGA、运算放大器构成的振荡器电路、功率放大器电路、滤波器电路、阻抗匹配等),是各竞赛队都必须掌握的。 这些内容作为竞赛的基础培训,可以放在分组(分赛题方向)以前进行。 根据 2011 年和 2013 年全国大学生电子设计竞赛综合测评题设计要求,有机会冲击国家一等奖的参赛队,在 4 天 3 晚的竞赛完成后,有必要加强这方面内容的培训。

  • 2019-07-10
  • 发表了主题帖: 基于MSP430的心电监控系统

    摘要(中英文) 本项目以MSP430微控制器设计实现远程心电智能监护系统。通过传感器从V1导联实时检测心电信号,用前置电路对信号进行放大,对放大后的模拟信号转换为数字信号输入到MSP430系统中。在MSP430程序设计中,首先,用整数小波对信号滤波,并实时显示波形和心率;然后,程序智能地检测心律失常,如果检测到PVC或其他症状,则通过无线模块向基站、病人、或亲友报警。 It is developed an electrocardiogram (ECG) tele-monitoring intelligent diagnosis system on MSP430. It detects and amplifies the ECG signal at V1 lead, and the signal is converted to digital values as inputs for the MSP430 processor. For the development of the program in the system, firstly, it filters the digital signal with integer-wavelet and displays both ECG wave and heart rate on LCD in time. Secondly, the program detects signal intelligently, once the signal is classified as PVC or other symptoms, alarm messages are send to base station, patients or relatives. 1.        引言 1.1 系统设计的背景与目的 心电图(ECG信号)是利用心电图机从体表记录心脏每一心动周期所产生电活动变化的曲线图形。ECG诊断方法简便可靠,对病人无损,是心血管疾病诊断十分重要的一种方法。 早期的ECG分析完全由医生用人工的方法完成,计算机辅助的心电分析与诊断系统的研究始于50年代末,使得ECG分析中的特征提取从相对人工定性分析过程转变为数字化处理过程。目前,绝大多数心电监护仪只具备简单的监护报警功能,不能实施急救,且体积较大不适合随身携带[1]。设计一款低功耗、便携式,能够实时监测心律,自动诊断心律失常并发出救援信号的心电监护仪的研发意义十分重大。 1.2 项目所要解决的问题 本项目基于MSP430低功耗、高速实时运算特性,设计了一款新型的心电监控系统。该系统主要功能包括采集待测人员体表心电信号,监测实时心率,实时分析有无心律失常并进行自动诊断。当出现突发性心律失常如室性心动过速、心室颤动、停博等症状时,该系统能实时蜂鸣报警,提醒携带者。并能将相应报警信息通过无线模块发送给医生或病人亲友,以便能够实施急救。 2.        系统方案 本系统的设计关键模块有:信号采集模块、信号处理模块、波形/心率显示模块、蜂鸣器报警模块以及短信发送模块。 系统整体框图如图1所示。信号采集模块将由心电电极贴片在人体皮肤表面采集到的峰峰值小于4mV微弱信号通过放大滤波电路放大到适合MSP430F2618中ADC12模块进行模数转换的电压范围。经AD转换后,用MSP430F2618进行信号处理,其关键算法为CDF97小波滤波、差分阈值检测、逻辑法诊断病例三部分。MSP430F2618通过SPI、I2C和UART接口分别与LCD示波器、段式LCD和EM310无线模块相连接,实时显示滤波后的心电波形与计算得到的心率值,并对异常情况进行短信报警。MSP430F2618通过P3.0口与蜂鸣器相连接,对异常情况进行蜂鸣报警。 图1 系统框图 3.        系统硬件设计 3.1 放大滤波电路 系统的放大滤波电路选用TI公司的低功耗单电源 CMOS 仪表放大器INA331与单电源微功耗 CMOS 运算放大器OPA2336搭建而成,将采集自人体皮肤表面的微弱信号放大到适合MSP430内部ADC12模块进行模数转换的电压范围。INA331的主要特点是:轨至轨输出、低功耗的COMS工艺、高共模抑制比、低静态电流、带宽范围0~2.0MHz、工作温度范围-55~125℃;OPA2336的主要特点是:轨至轨输出、微功耗的COMS工艺、低静态电流、低失调电压、工作温度范围-40~85℃。这些特点决定了放大前置滤波电路在极端环境条件下仍能正常工作且功耗低,可以用电池供电。 放大滤波电路可分为前置放大电路、右腿驱动电路和低通滤波放大电路。 如图2所示,前置放大电路中INA331的正负输入引脚通过心电电极分别与人体的左臂和右臂相连接, INA331的1脚与6脚连接,使VOUT = VREF + 5 (VIN+ – VIN–),防止因增益过大、输入电流过大导致的电极极化高压。共模电压设置由2MΩ电阻完成。VR为两片OPA2336提供偏置电压,使其以此偏置电压为工作点变化。将一片OPA2336的一个输出端连接至INA331的REF端构成反馈,使INA331的输出电压以此偏置电压为工作点变化。另一片OPA2336作为电压跟随器,用于右腿驱动。 图2 前级放大电路与右腿驱动电路   低通滤波放大电路如图3所示,由同相比例运算电路与二阶有源低通滤波电路组成。 图3 低通滤波放大电路   同相比例运算电路的增益为:                           (1) 二阶有源低通滤波电路的频率特性表达式为:                                        (2) 其中,通带内增益理论值,特征角频率理论值,品质因数理论值,可见这是一个巴特沃斯滤波器,截止频率理论值,其幅频特性如图4所示。 图4 巴特沃斯滤波器幅频特性 3.2 ADC12模块与DMA控制器相结合的数据采集 将放大滤波电路的输出与MSP430F2618的P6.0相连接,利用ADC12模块的通道A0对输入模拟电压进行模数转换。ADC12模块的工作原理如图5所示。 图5 ADC12原理图   选择ACLK作为定时器B的时钟源,设置定时器B工作在增计数模式和输出模式7,由Timer_B OUT1产生周期、占空比均可调节的PWM波。本系统中设置TBCCR0=256,TBCCR1=230,即PWM波的,,PWM波的上升沿触发采样,下降沿触发转换,即ADC12的采样率。设置ADC12模块工作在单通道重复转换模式,选择2.5V内部参考电压作为参考源,ADC12IFGx 作为 DMA0的触发源,重复转换结束时, ADC12IFGx被置位,继而触发DMA操作[2]。选择DMA0传输源地址为ADC12MEM0,目的地址为手动分配RAM存储空间的物理地址(本系统中为0x1200),设置DMA0传输源地址不变,目的地址增量,传输基本单元个数DMA0SZ=512。这样,4秒的转换结果经DMA0通道送至固定的RAM空间。 AD转换与DMA传输在LPM3模式中进行以降低功耗,设置中断向量为 DMA_VECTOR,当512个转换结果全部传输到指定地址后,CPU才被唤醒。 3.3 LCD数字示波器模块 系统所用的开发板提供了LM240160GCW液晶模块,利用此模块可以设计数字示波器来实时显示心电波形。数字示波器基本原理为:数据采集+图形显示,该过程循环进行。 LM240160GCW液晶的显示RAM中,一个单元的地址由行地址和列地址组合成,以显示屏自上而下排序1-160行为行地址,以水平三个像素点为一组,为一个列地址。RAM中得单元数据位为15位,每5位为一个像素点的显示数据,一个RAM单元容纳了3个像素数据,即数据字节中DB7-DB3为数据,DB2-DB0无用。每一次读写RAM时,必须以3个数据连续写入/读出为一个最小操作。 液晶模块内置ST7529液晶显示模块系列的指令系统,分基础基本指令集EXT0和扩展指令集EXT1。实现对模块的初始设置。包括启动 LCD 驱动电源工作、灰度数据设置、调节对比度电压、扫描时序的设置等;显示数据的操作,有数据的读写、修改写、局部显示以及卷动设置等。 GT23L32S4W 是一款内含 11X12 点阵、 15X16 点、 24X24 点阵、 32X32 点阵的汉字库芯片,支持 GB2312 国标汉字及 SCII 字符。排列格式为横置横排。用户通过字符内码,可计算出该字符点阵在芯片中的地址,可从该地址连续读出字符点阵信息。由上述可知, GT23L32S4W 支持 SPI 、 PLII 两种通讯方式,本项目采用SPI方式。 示波器设计中,先对软件滤波后的信号进行采集,对LCD以最小3个像素进行操作,向指定位置写入灰度数据,灰色为点,白色为背景。本项目采用了波形逐帧显示的方法,当软件滤波完成后,开始进行LCD操作,在下一组数据的采集与滤波过程中LCD显示内容保持不变,等待下一次滤波完成后刷新波形。在逐单元(3个像素)显示中,每一个单元的数据采集,AD转换,数字量到液晶屏幕高度换算,显示数据进入显示RAM,将显示数据送到屏幕显示的时间都是单独的,整个过程要占用毫秒级以上时间,采用逐帧显示,扫描频率只由每屏显示数据的采样总时间决定,不受点阵液晶显示速度限制。图6为LCD操作的流程图: 图6 LCD操作流程图   LCD3个像素点的像素数据是软件滤波后的数据,每一个行地址对应3个像素点,即绘制出的曲线是由“点”组成,每列只有一个点,效果不理想,故考虑使用矢量绘图的方法对其进行优化,将一个单元3个像素和下一个单元第一个像素一起考虑,根据其位置在两点之间差值填充点,得到连贯的曲线。优化前后的对比如图7所示: 图7 矢量优化前后对比   3.4 段式LCD显示心率模块 MSP430F2618开发板提供了段式液晶模块,利用此模块可以实时显示心率。在MSP430F2618开发板上使用了一片LCD驱动器BU9796FS,其具有较低工作电压范围,200bit的显存空间,标准2线制I2C通讯。 根据指令集以I2C协议配置BU9796FS,将计算好的心率值显示到段式LCD上,每隔4s刷新一次。具体流程如图8所示:  图8 段式LCD操作流程图   3.5 UART发送短信模块 当心电波形失常或者心率有问题的时候,可以通过无线模块发送中文或英文短信息到患者或医生手机上实现报警功能。利用MSP430F2618单片机的USCI_Ax的UART模式实现单片机与EM310无线通讯模块的通信。EM310模块是华为公司推出的一款 GSM/GPRS 无线模块。通过串口向EM310写入AT指令即可实现单片机控制EM310发送短信。 配置UART包括设置UART模块的寄存器,设置传输需要的时钟XT2、波特率为9600、无校验位、8个数据位和1个停止位。通过UART模块向EM310发送AT指令集,完成EM310发送短信的功能。 通过C语言程序将AT指令集写成字符串的形式,再向串口发送字符串,即完成了AT指令集的发送。EM310接收到UART端口发送过来的AT指令后根据指令返回相应指令符号,完成发送中文或英文短信的任务。 4.        系统软件设计 由于心电信号本身微弱、多变,容易受外界干扰,所以在分析诊断过程中需要预处理去除干扰。本系统软件设计主要包括:数字滤波、R波检测、心律失常诊断。 4.1 CDF97小波滤波 数字滤波算法采用CDF97小波滤波,根据经小波变换后,有效信号对应的小波系数很大,而噪声对应的系数很小的原理,对ECG信号进行三层小波分解后,采用软阈值方法,先求出各层高频信号的门限阈值,然后去除每层高频信号中小于该门限阈值的系数。最后从后往前一层一层重构,得出滤波后的ECG信号。 考虑硬件平台选用低功耗MSP430系列,我们选取基于提升算法的 CDF97小波滤波。Sweldens的提升小波变换是实现DWT的一种新方法,比原有的基于卷积的DWT方法计算量少、复杂度低,且在运算过程中可实现原位计算,存储空间需求少,更加适合硬件的实现[3]。其中CDF97小波是一种典型的离散小波提升算法,其对应五个提升系数如下:                        (3) 我们根据CDF97小波原理先构造出小波基函数,用matlab仿真出CDF97小波滤波器组如图9所示,经matlab仿真验证其具备较好的滤波效果。     a.分解低通滤波器                 b.分解高通滤波器         c.重构低通滤波器                    d.重构高通滤波器   图9 CDF97小波滤波器组   硬件乘法器是存在于MSP430F2618芯片中通过内部总线与CPU相连的16位外围模块,它最多可支持1616位无/有符号数的乘法运算与乘加运算,若能对其进行有效利用,必能增加对数据处理的速度。本系统利用硬件乘法器实现了心电信号的小波滤波与重构。 由于硬件乘法器只支持整数的乘法运算与乘加运算,对于提升系数为小数的CDF97小波,如何实现运算结果不溢出与运算精度的最优折中成为设计的难点。项目采取的方法如图10所示,将提升系数扩大16384(214)倍写入有符号乘法的操作数1寄存器,将AD转换得到的心电数据扩大2倍写入操作数2寄存器,运算完成后,提升系数与心电数据相乘或乘加的运算结果,为了提高运算精度,需要利用RESLO的最高位与次高位对result进行校正: (1)如果RESHI15=0且RESLO15=1,说明result为正数且最低整数位为1,要对其进行+1校正; (2)如果RESHI15=0且RESLO14=1,说明result为正数且小数部分大于0.5,要对其进行+1校正; (3)如果RESHI15=1且RESLO15=0,说明result为负数且最低整数位为1(以补码形式存放),要对其进行-1校正; (4)如果RESHI15=1且RESLO14=0,说明result为负数且小数部分绝对值大于0.5,要对其进行-1校正; (5)特殊情况:如果RESHI15=1且RESLO=0,说明result为负数且,但它满足(3)和(4)的校正条件,所以要对其进行+2校正以消除(3)和(4)引入的误差。 图10 硬件乘法器滤波算法示意图 Fig.10 Filtering algorithm schematic diagram of the hardware multiplier 利用上述方案,便可基于硬件乘法器实现高速度高精度的97小波滤波与重构,对实测心电信号的小波滤波与重构如图11所示,蓝色为ADC12模块得到的心电数据,红色为经硬件乘法器进行小波滤波与重构后的数据,可以看出高频噪声被有效滤除,使数据能够更好地显示、处理与分析。 图11 实测心电信号的小波滤波与重构   4.2  R波检测算法 QRS波群是一个心电周期中特征最显著的部分,它具有高幅度和高斜率、具有一定的宽度的时域波形特征和频谱分布在ECG信号的中、高频区域的频域特征(峰值频率在10~20Hz)。本项目基于MSP430平台且需要R波实时检测,这使得算法必须具有占有硬件资源小、检测精度高、运行速度快的特点。综合考虑,我们采用了基于滤波和阈值检测的算法。 根据QRS波群时域特点,我们采用如下方法确定R波位置:①固定一个时间窗,在该时间段内采用二次差分方法,寻找波形奇异点。对N个(本系统中N=512)数据进行奇点检测。②保留得到的所有极大值在一个数组A内,并记录其对应波形位置。取阈值Rth,与上述数组A内值比较,保留大于Rth的极大值在数组B内,并记录其对应波形位置。认为B中数据为检测到的R波幅值,其对应位置为R波位置。 在此,算法难点在于阈值Rth的确定。因为ECG信号个体差异较大,即便是同一人,在不同时间段内其波形也不稳定。所以,不能单纯采用固定阈值,而要求阈值具有动态自适应性。否则会造成R波误检、漏检而导致诊断错误。动态阈值设置,我们采用直方图分布法,这也是本项目创新点之一。根据极大值点的分布特点,做点数与幅值段的直方图。根据极大值点的统计特性做出的直方图中,会出现连续的一段无极大值分布的区域。在该区域之后的幅值段内存在的极大值就是R波幅值。根据此特征确定Rth,由于该分布随着数据刷新而更新,则具有实时的自适应性。经matlab试验验证该算法确实可行、简洁、快速、空间占用小、阈值具有动态适应性且准确度很高,适合在MSP430上实现。 4.3  心律失常诊断算法 临床上医生通过观察一段时间的ECG波形来根据相关经验来判断患者病情。心率失常智能诊断是主要借助计算机,根据医生的临床经验,采用逻辑判断来确定患者心律失常情况的。心电自动分析系统如图12所示,主要包括心电数据采集、预处理,心电参数自动检测、心电异常诊断分类等内容。 图12 心电自动分析系统   其中心电参数自动检测与心电异常诊断分类尤为重要。由于ECG信号的时域特征提取方法符合临床医生的诊断习惯,并且算法运算量小,适合应用于便携式心电仪。时域心电参数主要包括:平均心率Rate,RR间期Trr,以及相邻RR间期差HRV等。该系统诊断算法采用简单的逻辑判断算法:比较实际测得平均心率Rate与各病例中的Rate参考值或比较实际测得RR间期差HRV与室性心律失常HRV参考值来确定心脏活动是否正常,存在何种异常。心律失常逻辑判断方法如表1所示。   表1心律失常逻辑判断方法   病例名称 算法 正常 ———— 室性早搏 HRV(i)>0.12s&&HRV(i+1)>0.12s&&HRV(i+2)>0.12s 停博 Rate<20次/分 房性颤动 Rate:500~600次/分 房颤或室颤 Rate:350~500次/分 房扑或室颤 Rate:240~350次/分 室上速或室颤 Rate:160~240次/分 心率过缓 20<=Rate<40次/分 心率过速 120<=Rate<160次/分   基于上述诊断算法,需要进行算法正确性验证,此时需要输入一些带有明确注释的心律失常信号。通常采用MIT-BIH标准心律失常数据库中数据作为检验算法。MIT-BIH[4]数据库数据的采样频率为360Hz,采样精度为11位。该数据库一共大约有 109933拍,都是经过至少两个以上的心电图专家手工独立标注的。算法评估流程如图13所示,评估结果见评测与结论部分。 图13 算法评估流程图   4.4系统算法流程与状态机设置 图14 系统算法流程图   系统算法流程如图14所示。由于系统每4秒采集512个心电数据并进行分析与诊断,而且人为运动等因素有可能影响心电数据的采集情况造成误检,若对每次诊断出的异常状态都进行短信报警是没有必要的,所以我们对系统进行状态机设置防止短信报警过于频繁。 图15 室上速或室颤症状的状态机示意图   图15为室上速或室颤症状的状态机示意图,Rate_flag为表示状态机当前工作状态的标志位,系统状态的跳转由每4秒心电数据分析得到的特征参数与Rate_flag共同决定。S0为系统的初始状态也是正常状态,Rate_flag=0。处于S0状态时,如果计算得到的各项指标均正常,则保持S0状态不变;如果心率值在160(含)与240之间,则跳转到S1状态, Rate_flag变为501。S1与S2状态为短信报警前等待状态,可以消除因人为运动等因素造成的误检。处于S1状态时,如果心率值在160(含)与240之间,则跳转到S2状态, Rate_flag变为502;如果心率值在其他范围,则跳转到S0状态,Rate_flag变为0。处于S2状态时,如果心率值在160(含)与240之间,则跳转到S3状态, Rate_flag变为503;如果心率值在其他范围,则跳转到S0状态,Rate_flag变为0。处于S3状态时,说明已出现连续12秒左右的室上速或室颤症状,便进行短信报警,报警后跳转到S4状态,Rate_flag变为504。S4状态为短信报警后的等待状态,以保证系统进行过短信报警后约7分钟的时间内不会再次进行短信报警。处于S4状态时,如果Rate_flag在504(含)与600之间,则保持S4状态不变,Rate_flag加1;如果Rate_flag=600,则跳转到S0状态,Rate_flag变为0。表2列出了系统各状态时Rate_flag的值。由于人为运动因素而产生室性早搏误检的几率较小,所以没有为室性早搏设置短信报警前的等待状态,即检测出一次房性早搏病例立刻进行报警,报警后跳转至等待状态。另外需要说明的是,状态机的等待状态只影响短信报警的时间间隔,对蜂鸣器报警并无影响,只要4秒内的数据出现异常,蜂鸣器便立即进行报警。   表2系统各状态Rate_flag值   Rate_flag  状态 病例 短信报警前等待 短信报警 短信报警后等待 室性早搏 无 1 2~100 停博 101、102 103 104~200 房性颤动 201、202 203 204~300 房颤或室颤 301、302 303 304~400 房扑或室颤 401、402 403 404~500 室上速或室颤 501、502 503 504~600 心率过缓 601、602 603 604~700 心率过速 701、702 703 704~800   5.        系统创新 1.算法中采用直方图统计法设定自适应阈值,准确定位R波位置。 2.利用MSP430内部的硬件乘法器实现CDF97小波滤波算法。 3.系统中LCD示波器采用了波形逐帧显示的方法,扫描频率只由每屏显示数据的采样总时间决定,不受点阵液晶显示速度限制,提高了显示可靠性,采集数据在显示过程中不丢失。 4.系统可以自动诊断多种心律失常病例。 5.无线模块发送中文或英文短信息到患者或医生手机上实现报警功能,满足了不同用户对短信语言的需求,应用面广。 6.        评测与结论 6.1 MIT/BIH数据库数据算法仿真结果 (1)数据105.data 取105数据第21.3s—25.6s,约4s左右的心电波形信号,进行算法可行性、准确性验证。取该段数据是由于该段数据中存在室性期前收缩(又称室性早搏,PVC)心拍,可验证算法检测PVC的算法的准确性。matlab 仿真图如图16所示:       a. 极大值点分布直方图                  b. 512点心电数据   图16 数据105 PVC段算法仿真图   由图16.a可见,该段数据极大值点分布满足算法所使用规则:出现连续一段无极大值分布的区域。根据图16.a设定的阈值在图16.b中,用红线标出。图16.b中蓝色“*”号标出点表示所有该段数据的极大值点,绿色表示经阈值设定、误检修正之后检出的R波位置。可见该算法实现了准确的R波定位。 图16.b蓝色虚线表示PVC幅值阈值。根据数据库注释文件105.atr文件可知该段数据有一室性期前收缩的心拍。本系统设计的目的就是能够在准确定位R波之后,求出心率值,确定出有无室性期前收缩等心律失常。 在matlab命令窗口中显示,针对该段数据程序运行结果如图17所示: 图17 数据105 PVC段检测结果   检测出6个心拍,该段时间心率值为84.3750,有室性期前收缩(PVC)心拍出现。 下面一段数据取自105.data的第4.3s-8.53s,不同的是该段数据中六个心拍均为正常心电波形,所以在检测结果中没有PVC显示。该段数据用来验证本系统所采用算法的准确性——不会造成误检。        a. 极大值点分布直方图                  b. 512点心电数据   c.检测结果   图18 数据105 正常段检测结果   (2)为验证算法普适性,再选取119.data中一组数据进行说明。 该段数据取自109.data的第21.3s—25.6s,该段数据共5个心拍,其中有三个PVC心拍,所以检测结果中有PVC=3的显示。   a. 极大值点分布直方图                  b. 512点心电数据   c.检测结果   图19 数据119PVC段检测结果   在整个系统设计、算法验证过程中,我们做了大量仿真实验,但受项目报告的篇幅限制,在此不再过多列举。 现以MIT/BIH数据库中的三组病例记录(105\119\205),每组数据截取前约213.3s的心拍,进行检测结果分析。检测结果如下表3、表4,其中误检为将非R波检测为R波,漏检为正确的R波未被标记出来。 准确率=正确检测心拍数/检测心拍总数*100%   表3 R波检测结果   记录数据 R波个数 正确检测R波个数 误检 漏检 准确率 105.data 289 287 3 2 99.3% 119.data 232 223 0 9 96.1% 205.data 320 317 0 3 99.1% 总计 841 827 3 14 98.3%   表4 PVC检测结果   记录数据 PVC心拍数 正确检出PVC数 准确率 105.data 10 7 70% 119.data 53 41 77.4% 205.data 3 3 100% 总计 66 51 77.3% R波检测效果很好,检测准确率达到98.3%。其中误检发生在105记录中,是由于其基线漂移过大。漏检除105数据中有一心拍是因为滤波后R波峰被削平而未正确检出外,其余是由采样数据刚好以R波波峰为起点或终点而导致漏检。 室性早搏心拍的检测结果不够理想,原因有二:(1)R波的误检、漏检导致PVC漏检或误检;(2)PVC心拍的R波刚好落在采样数据的起点或终点而其R波峰值又未超过设定阈值时导致PVC漏检或误检。在后期工作中将添加判断条件,来提高算法准确率。 6.2 系统实际测试结果 参赛队员与实验室其他同学对系统进行了实际测试,经测试系统能够正常工作,LCD每4秒钟对实时心电波形刷新一次,段式LCD显示心率值,无线模块正常工作未报警。 7.        附录 7.1 系统实物图 此内容由EEWORLD论坛网友兰博原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-07-05
  • 发表了主题帖: 如何准备全国大学生电子设计大赛?这篇文章都讲清楚了

    全国大学生电子设计大赛应该怎么准备?   最主要的是学习什么课程::《电工电路基础》《低频电子线路》《数字电路》《高频电子线路》《电子测量》《智能仪器原理及应用》《传感器技术》《电机与电气控制》《信号与系统》《单片机接口原理及应用》等等。所要学习的科目当然不能定局,知识面越广越好,它是对各个科目综合运用的产物,而且要具有非常强的动手和创新能力,对一个人的动手能力有很大的促进作用.学起来不要急于求成,掌握一些基本电路及调试,焊接技术, Protel 软件的使用,能制作机器人最好对机械结构方面也要懂些。很多东西只要学习了不一定什么时候就能用到,不要在学时表面感觉没用就不注重它,那样就犯了很大的错误了。在电子DIY学习过程中你会体会到很多乐趣的。要厚积勃发。   全国大学生电子设计大赛应该准备哪些模块?   主要可以针对以下几类准备模块:电源类、信号源类、无线电类、放大器类、仪器仪表类、控制类。   建议现在打好基础,做好知识储备: 1.数电,模电,单片机原理,C语言,这几个是必学的,相当重要。 2.收集相关资料,比如芯片数据手册,应用笔记,源程序,制作实例,现在把资料积累好了,到时候用起来很方便。 3.多跑电子市场,买些元件回来自己动手做一些东西,锻炼实践能力。4.看往年电子设计大赛的题目,学习别人设计的长处,最好自己总结下,写成自己的东西。 5.找你们学校以前带电子设计竞赛的老师,告诉他你自己的想法,希望他能给你点建议或者帮助。 6.坚持,坚持,再坚持,克服困难,持之以恒!这些最基本的东西学好了,等你正式参加比赛的时候,什么 ARM,DSP,FPGA等用起来也就不是很困难了!切记,不要赶时髦,追新潮,最基本的东西全掌握了,新东西也不就那么神秘了!!   课程方面:还要学单片机、嵌入式系统、数字电路、CPLD/FPGA设计、C语言、汇编、微机接口模电要好好学,信号没多大用 CPLD/FPGA编程/模拟用 QuartusII单片机模拟用 Proteus模电模拟用 Multisim单片机编程用 Keil,用的 C语言和汇编嵌入式还要用到 Linux的内核还有个画 PCB板的,Protel 99SE,现在最新的叫“Altium Designer”反正这些东西都会要用的,要学起来东西很多,建议你要用到什么看书吧~而且电子设计竞赛都是几个人一组,分工合作吧~在此留贴激励自己备战两年后的全国大学生电子设计大赛。在这两年完成自己技能的升级,能力的质变:   1.熟练 PCB Layer Out规则(EDA工具 Protel99SE,OR CAD) 2.熟练基于 VHDL、AHDL的 CPLD、FPGA、GAL的内核设计 3.熟练基于 Multisim的电路仿真分析 4.熟练基于 MCS-51或其它系列的单片机程序设计(C/A混合编程) 5.熟练基于 ASIC的中小规模时序及组合数字电路设计 6.熟练基于 ASIC的通用模拟及高频通信电路设计 7.熟练基于 ASIC的 DA/AD及传感器检测电路设计 8.熟练基于 ASIC的锁相环电路及近代频率合成技术 9.熟练单片机的外围扩展电路设计及 MCU标准通信协议 10.掌握基于 VB/VC++的上位机程序设计串并口通信)的上位机程序设计 11.熟练各种通用电参量的定义及测量方法 12.熟练万用表、示波器、扫频仪、信号源、频率计等仪表的使用 13.能在规定时间内独立完成业余条件下的PCB制作 14.能对小规模系统独立完成整机调试 15.能读懂器件 Data Sheet,书写实验手记,书写设计报告 16.具有一定的抽象建模能力及较扎实数学计算能力及英语表达力 17.谦虚谨慎,具有团队协作精神,服从团队决定谦虚谨慎 18.是否详细的研究了历年的电子竞赛题目。 19.是否知道了你们团队的强项,是做控制类的,还是搞数据处还是搞无线与通信的。   电子设计大赛是高校“四大赛”之一,每两年一次(逢单数年电子设计大赛举办),竞赛大约于九月初举办,历时四天三晚。大赛参赛者主要是高校本科学生(也有一部分高职学生),三人组成一组(大赛以组为参赛的基本单位)。竞赛期间参赛者与外界相对隔离,但可查阅资料、可使用 PC 上网(不得与非组成员交流)。大赛分理论和实践两部分,其中前者占50分,后者占100分。实际部分包括从问题出发设计电路到制成产品并撰写相关论文报告整个过程,时限为四天三晚。竞赛场地一般由高校提供。   知识要求: 电路、模拟电子技术、数字电子技术、微机原理与接口技术、C语言编程(面向硬件)。当然,仅仅由这些知识支撑还是不够的,竞赛还需要参赛者有较扎实的专业背景知识。下面分类列出:   信息通讯:高频电子技术、数字信号原理、通讯原理、信号与系统。 电子仪器:电子测量技术、电子仪器技术、虚拟仪器技术。 机电控制:传感器与检测、自动控制原理、计算机控制、控制电机。 电力电子:变流技术、电力电子技术。   以上并不是都需要掌握,而是根据自己的专业或兴趣,选择性地 “精通”一到两项。对于自动化专业的同学来说,主要适合于后两项。   基本技能要求:竞赛十分重视参赛者的动手能力,故对技能的要求是非常实在的东西,并非空谈。   主要技能有:1、资料收集整理的能力。由于竞赛期间可以查阅资料,故赛前对资料的收集整理十分重要,甚至关键。2、自学能力。竞赛题目大多都包含一些新知识新思想,平时一般都未接触过,甚至指导老师也不一定听说过。所以在短时间内自学新知识并转化到实践中去的能力必不可少。3、英语资料阅读能力。由于竞赛的前沿性及技术的全球性,决定了我们不可避免地需要查阅英文资料,故此能力非常重要。4、文档组织与撰写能力。竞赛包括撰写论文报告这一环节,且时间很紧,故这一能力也应具备。5、PCB制版能力。设计好的电路怎样制版?怎样制版才能方便组装焊接,且减少相互干扰?采用怎样的工艺才能提高电路的精度等等问题都是最终成败的关键,而这就基于 PCB制版能力。6、焊接与装配能力。当所有模块都做好后,如果装配或焊接不好,无疑是功亏一篑,所以此能力必不可少。7、电子仪器的使用能力。竞赛期间会接触到大量的高精度高性能的电子仪器,只有能熟练掌握这些仪器的操作方法,才谈得上系统调试、产品制作。8、系统调试与故障排除能力。刚装好的产品几乎都不会处于它的最佳状态,一般来说都会存在大大小小的问题。只有经过故障排除、系统调试,产品才能成功运行。所以,如何能在较短的时间里找出问题并解决,也是能力的体现。9.电子设计能力   除了以上基于经验的技能外,竞赛还要求参赛者有将知识转化为实践的基于知识的能力。主要包括:1、基本模拟单元电路的设计能力。2、电子系统设计与集成能力。3、微处理器设计与应用能力(51单片机、TI的DSP、ARM)4、EDA开发与应用能力(FPGA、CPLD、PAC、SOPC)5、编程能力(C语言、VHDL、汇编)   创新能力:除此以外,竞赛对参赛者的创新能力也有较高要求,主要包括以下几个方面:1、应变能力。2、新知识学习与应用能力。3、新器件学习与使用能力。4、自主知识产权软核开发能力(VHDL、C语言)5、系统集成创新能力。   一、基础知识: 1、电路原理 2、数字电路 3、模拟电路(重点) 4、元器件的简介   二、软件方面(总体编程能力) 1、单片机基础与编程:(重点)单片机内部结构与工作原理单片机接口电路单片机程序设计单片机开发系统 (51系列或 AVR 单片机) 2、可编程逻辑器件与编程: CPLD/FPGA内部结构与工作原理 VHDL语言 CPLD/FPGA接口电路设计 CPLD/FPGA开发系统(MAX-PLUSⅡ软件) 3、Protel电路设计软件:(重点)原理图设计 PCB 设计电路仿真分析 (protel99SE或者 Protel DXP) 4、电路仿真软件: EWB Multisim(我建议使用这个软件,Multisim这个软件元器件参数设置,更接近实际) SPSICE 5、传感与检测技术:电子测量方法与原理传感器工作原理 6、MATLAB的使用   三、其他 1、印制电路板、焊接技术 2、仪器仪表使用:稳压电源示波器数字万用表频率计函数发生器频谱分析仪 LC参数测量仪 3、单元电路设计制作电源电路放大电路运算放大器电路传感器电路功率驱动电路 A/D与 D/A 转换信号产生与处理电路声音报警电路显示电路 4、论文写作 (注意格式) 5、队员合作分工,即团队精神   基础知识储备《模拟电子技术》《微机原理应用》《EDA 应用》《数字电子技术》《单片机原理及应用》《嵌入式技术应用》《电工电子实训》《电子技术课程设计》等《编程语言:语言为主,编程语言:C语言为主,VC++、Labview等   竞赛所需技能: 1.电路分析及设计 2.元器件选用及焊接技巧 3.单片机编程使用 4.资料搜集 5.论文写作整理 6.团结协作   最小开发系统(最小开发系统(MCU)熟练使用至少一种单片机,如 AVR,61系列,51系列,PIC系列,摩托罗拉系列,430系列,ARM,CPLD,EDA, DSP等。   2 直流电源一般正负 5-24V直流电源,在做题时自制直流电源给至少 6分,若用成品没有分。 3键盘、显示部分键盘、键盘部分(键盘部分(1x8;4x4等)如果需要的键较少,可直接使用 I/O 口,也可以使用 74LS148等编码器(会节省一些 I/O口),但要注意去抖动处理(可使用软件,也可以使用单稳态触发器,RC电路等硬件去抖动方法)。如果使用的键较多,可使用键盘管理芯片, 8279、如 7289A等,体积、功耗、成本会大一些,但比较好用,也容易使用。显示部分一般来说分两大类:LED和 LCD。 LED比较经典,也比较常用,在一般的资料中都能查到,采用键盘显示管理芯片统一管理是一个较好的办法。 LCD分液晶片和液晶显示模块(又分字段式和点阵式两种),除非使用 430系列单片机(它自带 LCD 驱动模块,接口和使用均十分方便。)其它单片机,为节省宝贵的时间,最好使用液晶模块,特别是自带汉字库的液晶模块,平时应学会使用。 4前向通道多路转换开关、调理电路、放大、滤波、多路转换开关、调理电路、放大、滤波、隔离等学会使用常用普通精密放大器、仪表放大器、隔离放大器等;这一部分的连线,制板等都显得比较重要。   集成运算放大器分类: 1.通用型运算放大器(?A741,LM358双,LM324四) 2.高阻型运算放大器(输入阻抗>109?1012?)(LF356,LF355,LF347四,CA3130,CA3140) 3.低温漂型运算放大器(OP-07,AD508,ICL7650) 4.高速型运算放大器(LM318, ?A715) 5.低功耗型运算放大器(ICL7600) 6.高压大功率型运算放大器( ?A791,D41) 常用集成运算放大器: 1.通用型(?A741,LM324四运放) 2.高阻型(LF347四运放,CA3140) 3.低温漂型(OP-07,ICL7650) 4.高速型(LM318) 5.低功耗型(ICL7600) 常用仪表放大器: AD620,AD624 等   集成运算放大器的使用要点: 1.集成运算放大器的电源供电方式(1)对称双电源;(2)单电源 2.集成运算放大器的调零问题(1)内部调零(2)外部调零 3.集成运算放大器的自激振荡问题 4.集成运算放大器的保护问题(1)电源保护(2)输入保护(3)输出保护 A/D 根据指标要求,选择合适的模数转换器,如果需要 A/D,该部分是报告的重点内容之一。常用的 8位 A/D:AD0809常用的 12 位 A/D:AD574,MAX191,MAX197等还有型 16 位(AD7715),24位(AD7714)等,内含放大,调理,滤波等单元电路;即可单双极性输入,还可差动输入。传感器熟悉常用传感器的性能和使用。主要包括电压、电流、温度(热电偶,Pt1000,AD590,DS18B20等)压力,转速、位置(霍尔码盘等);如果有机器人方面的题目还要熟悉如红外传感器,接近开关,光敏电阻,金属探测等传感器。开关量信号的隔离(隔离的必要性)开关量信号的隔离(隔离的必要性) I/O口的扩展(必要性)口的扩展(必要性) 5 后向通道主要包括驱动显示,打印,继电器,诸如 PWM控制。具体要根据实际的题目而定。 6 注意事项考虑到不同的专业,每年的题目涉及的范围都比较广,择一个最有把握的题目去做;如果一个教学单位有很多组,不要集中,最好多做几个题目,在一个题目上,好评奖。另外一定要把报告写好。 7.电子电路的组装、调试   一、电子电路的组装 1.元器件的焊接技术 (1)焊接工具 (3)焊剂术 2.在面包板上的插接技术 (1)集成电路的装插 (3)导线的选用和连接   二、电子电路的调试方法: 1.一边安装一边调试; 2.全部安装完毕后,实行一次调试。一般调试步骤: 1.通电前检查; 2.通电检查; 3.单元电路测试; 4.整机联调。 电路故障的排除方法: 1.信号寻迹法;2.对分法;3.分割测试法; 4.电容旁路法;5.对比法;6.替代法; 7.静态测试法;8.动态测试法 1、基本仪器清单、 20MHz普通示波器(双通道,外触发输入,有 X轴输入,可选带 Z轴输入) 60MHz双通道数字示波器低频信号发生器(1Hz~1MHz)高频信号发生器(1MHz~40MHz)具有调频调幅及外调制功能低频毫伏表,高频毫伏表,普通频率计失真度测试仪,直流稳压电源秒表 10米卷尺单片机开发系统及 EDA 开发系统交流电压表和电流表(5A)单相自耦调压器(>500W) 41 2位数字万用表 2、主要元器件清单单片机最小系统板(仅含单片机芯片、键盘与显示装置、存储器、 A/D、D/A) A/D、D/A转换器(数据采集)(数据采集)运算放大器、电压比较器可编程逻辑器件及其下载板话筒、耳机(语言的处理,61板有优势)(语言的处理,板有优势)显示器件小型电动机小型继电器康铜、锰铜电阻丝光电传感器隔离变压器(>250W,220V/60V) DDS集成芯片(数字频率合成) 单片机理论的学习和单片机焊接实践理论学习:首先学习 16/32 位单片机的硬件结构和指令系统,学习 C 语言和汇编语言以及两者的混合编程。经过理论学习,利用实验箱进行编程练习,直至熟悉掌握。然后进入动手实践环节。具有 C语言基础或汇编语言基础(有相关的单片机知识),和微型计算机控制技术基础。有较强的创新意识和创新能力。学习单片机基本原理,熟悉单片机的硬件结构16位单片机基本原理,熟悉单片机的硬件结构、指令系统及试验箱的操作,熟练编程,用于实际创新制作,为电子大赛及各类竞赛打基础。使学生在熟悉普通 51、61单片机的基础上,结合周立功单片机的基础上, EasyARM2138开发板,了解现今高端单片机开发板——ARM的体系结构、硬件扩展和系统的嵌入式开发,体系结构、硬件扩展和系统的嵌入式开发,为各项电子大赛做准备。

  • 2019-07-01
  • 发表了主题帖: 优秀获奖作品:高功率因数电源

    高功率因数电源  

  • 2019-06-17
  • 发表了主题帖: 三、“电源类”赛题培训的一些建议

    “电源类””赛题中所涉及到的一些知识点,对有些专业的同学来讲,在专业课程中是没有的,需要自己去搞清楚。这一点很重要。理论用来指导行动。没有理论基础,盲人摸象,行动一定会有困难。   另外,“电源类””赛题的实践性要求很强,例如变压器的制作,特别是高频开关电源变压器的制作,电感线圈的设计与制作、PCB 的设计等。   站在岸上是学不会游泳的。建议从简单的基本的电源类电路做起,如简单的直流稳压器电路等,通过一些作品的制作和训练,找到感觉。   1. 主攻“电源类”赛题方向的同学在训练过程中,以历届赛题为基础,可以选择已经出现过的一些赛题做一些训练;主要训练这类赛题的共用部分,如变压器、AC-DC 模块、DC-DC 模块、滤波器、微控制器最小系统、ADC/DAC 模块等。完成相关模块的设计制作,以备竞赛需要。 2. 主攻“电源类”赛题方向的同学还应该注意与电源特性和指标参数测试有关的仪器仪表的设计与制作。一些赛题会包含这方面的内容。例如,2007 年本科组 E 题“开关稳压电源” 要求测量输出电压和电流。2013 年本科组 A 题 “单相 AC-DC 变换电路”要求使用数字式单相电参数测量仪,测量单相交流电参数(交流电压、电流和功率因数)。 3. 主攻“电源类”赛题方向的同学还可以发挥自己的想象力,考虑一下: 还有哪些“电源类”的赛题在竞赛中没有出现过?如大功率电流源等,在培训过程中事先训练一下。 已经出现过的一些赛题,考虑一下哪些可能会在放大器、仪器仪表、高频、控制类等赛题中出现? 已经出现过的一些赛题,考虑一下哪些可能在指标和功能方面会有哪些变化?如效率、稳定度、输出功率等。 已经出现过的一些赛题,考虑一下哪些可能在制作工艺要求方面会有哪些变化? 4. 主攻其他方向的同学,也需要注意电源的设计与制作。

  • 2019-06-14
  • 发表了主题帖: 二、历届“电源类”赛题的主要知识点

    从历届“电源类”赛题来看,主攻“电源类”赛题方向的同学需要了解的主要知识点如下: 变频电源、PWM 开关电源等工作原理、系统结构和电路组成 AC 电源变压器的设计与制作 高频开关电源变压器的设计与制作 AC 整流和滤波电路设计与制作 斩波和驱动电路设计与制作 逆变和驱动电路设计与制作 电流、电压检测电路设计与制作 过流和过压保护电路设计与制作 真有效值检测电路设计与制作 AC-DC 开关电源电路设计与制作 DC-DC 升压型开关电源电路设计与制作 DC-DC 降压型开关电源电路设计与制作 直流稳压电路设计与制作 单片机、FPGA、ARM 最小系统电路设计与制作 微控制器外围电路(显示器、键盘、开关等)的设计与制作 ADC 和 DAC 电路设计与制作

  • 2019-06-13
  • 发表了主题帖: 2019电赛 电源类赛题分析、资料分享

    电源类赛题一直是电赛每年必有的题目。从历届赛题可以看到, “电源类”赛题从 AC→DC,从 DC→AC,从单相电到 3 相电,从线性稳压器到开关稳压器,从单个电源到多个电源并联,已经涉及到电源设计基础的和先进的技术,而且赛题要求的技术参数指标也是越来越高(例如,精度、效率η(≥95%)等) 。    本楼对电赛历年的考题进行了分析,并根据相关的知识要点,收集了相关的一些精品资料。   赛题分析 一、历届电源类赛题 二、历届“电源类”赛题的主要知识点 三、“电源类”赛题培训的一些建议   相关资料 备战2015全国大学生电子设计竞赛_电源类赛题分析 2011年全国大学生电子设计大赛A题报告(开关电源模块并联供电系统 2011年全国大学生电子设计大赛A题论文--开关电源 2011年全国大学生电子设计竞赛论文A题电源类 2011电子设计大赛A题开关电源模块并联供电系统技术报告 2013电设大赛电源二等奖论文 2015年全国大学生电子设计竞赛(LED闪光灯电源)-(2) 2016四川省电子设计大赛电源题LM5117设计方案论文 2007年E题 开关稳压电源 2008年E题 简易数控充电电源   开关电源pcb设计要点 开关电源论文资料 基于单片机控制的开关电源资料 用单片机制作的直流稳压可调电源 开关电源各部电路详解 开关电源原理及各功能电路详解 开关电源论文资料 开关电源的PCB设计规范 开关电源变压器详细设计实例(内有详细公式) 经典好书:LED驱动电源设计100例 开关电源_详细讲解 此内容由EEWORLD论坛网友兰博原创,如需转载或用于商业用途需征得作者同意并注明出处    

  • 发表了主题帖: 一、历届电源类赛题

    历届电源类赛题分析  在 11 届全国大学生电子设计竞赛中,电源类赛题有 10 题: 简易数控直流电源(第 1 届,1994 年 A 题) 直流稳压电源(第 3 届,1997 年 A 题) 数控直流电流源(第 7 届,2005 年 F 题) 三相正弦波变频电源(第 7 届,2005 年 G 题) 开关稳压电源(第 8 届,2007 年 E 题,本科组) 光伏并网发电模拟装置(第 9 届,2009 年 A 题,本科组) 电能搜集充电器(第 9 届,2009 年 E 题,本科组) 开关电源模块并联供电系统(第10届,2011年,A 题,本科组) 单相AC-DC变换电路(第11届,2013年 A题,本科组) 直流稳压电源及漏电保护装置(第11届,2013年 L题,高职高专组) 从历届赛题可以看到, “电源类”赛题从 AC→DC,从 DC→AC,从单相电到 3 相电,从线性稳压器到开关稳压器,从单个电源到多个电源并联,已经涉及到电源设计基础的和先 进的技术,而且赛题要求的技术参数指标也是越来越高(例如,精度、效率η(≥95%)等)。例 1:2005 年 G 题“三相正弦波变频电源”赛题要求: 输出频率范围为 20Hz~100Hz 的三相对称交流电,各相电压有效值之差小于 0.5V; 当输入电压为 198V~242V,负载电流有效值为 0.5~3A 时,输出线电压有效值应保持在 36V,误差的绝对值小于 1%; 设计制作具有测量、显示该变频电源输出电压、电流、频率和功率的电路,测量误差的绝对值小于 5%; 变频电源输出频率在 50Hz 以上时,输出相电压的失真度小于 5%; 具有过流保护(输出电流有效值达 3.6A 时动作)、负载缺相保护及负载不对称保护(三相电流中任意两相电流之差大于 0.5A 时动作)功能,保护时自动切断输入交流电源。 例 2:2009 年 A 题(本科组)“光伏并网发电模拟装置”赛题要求: 具有最大功率点跟踪(MPPT)功能:RS和 RL在给定范围内变化时,使U Ud =    S, 相对偏差的绝对值不大于 1%。 具有频率跟踪功能:当 fREF在给定范围内变化时,使 uF的频率 fF=fREF,相对偏差绝对值不大于 1%。 DC-AC 变换器的效率,使η≥80%(RS=RL=30Ω时)。 具有输入欠压保护功能,具有输出过流保护功能。  例 3:2011 年 A 题(本科组)“开关电源模块并联供电系统”赛题要求: 赛题要求设计并制作一个由两个额定输出功率均为16W 的8V DC/DC 模块构成的并联供电系统。(1)调整负载电阻至额定输出功率工作状态,供电系统的直流输出电压UO=8.0±0.4V,使负载电流IO 在1.5~3.5A之间变化时,两个模块的输出电流可在(0.5~2.0)范围内按指定的比例自动分配,每个模块的输出电流相对误差的绝对值不大于2%。 调整负载电阻,保持输出电压UO=8.0±0.4V,使两个模块输出电流之和IO =4.0A 且按 I1:I2=1:1 模式自动分配电流,每个模块的输出电流的相对误差绝对值不大于2%。 调整负载电阻,保持输出电压UO=8.0±0.4V,使两个模块输出电流之和IO =1.5A 且按 I1:I2= 1:2 模式自动分配电流,每个模块输出电流的相对误差绝对值不大于5%。 具有负载短路保护及自动恢复功能,保护阈值电流为4.5A(调试时允许有±0.2A 的偏差)。 例 4:2013 年 A 题(本科组)“单相 AC-DC 变换电路”赛题要求: 设计并制作一个单相AC-DC变换电路, 输入交流电压US=24V、输出直流电压UO=36V,输出电流 IO=2A,输入侧功率因数不低于 0.98,AC-DC 变换效率不低于 95%。 此内容由EEWORLD论坛网友兰博原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-05-14
  • 发表了主题帖: 如何实际搭建一个无人机

    本文以如何确定自己组装一个无人机为标准设计一个自己得四旋翼飞行器。 第一 、确定机架以330的机架 也可以找一些250的机架,但是要注意电机要大小要确定。(2)你需要有四个电机电机型号2212 1400KV其中要注意在选择无刷电机的时候要注意和螺旋桨以及电调的搭配(3)有关螺旋桨的选择选择电机的时候,要注意KV后面的数字,你电机比如说是1400KV(具体的你需要选择的时候需要注意,可以问一下淘宝的店主)的,你就可以使用8038的螺旋桨。(4)有关电调的选择电调的性能关乎飞机的生命,你总不能用一些很烂的电调,电调空中停车。。。,你需要一个差不多的电调,考虑到你后期玩high了想要换一个电机,你可以买一个大一点的电调,也不用重新换电调啦,好了,就选择一个40安培的吧,40安培的基本上满足所有的无刷电机(当然30A的也够用了,看各位客官的选择了) 电调说实话,只要你不要正负极接反,也基本不会坏的,所以四个,大约是200。(5)有关飞控的选择开源哒~~APM飞控大名鼎鼎的APM飞控,性能绝对够用,价格也便宜,飞控和GPS加起来也就是200块钱,满足非常学生党或者气管党的选择,不贵够用,大僵的常见模式他都有,比如说栅栏模式,还有花圈模式,光溜模式,当然也是支持gps的,小白拿到飞控的时候,安装的时候主要注意下面几个方面,一是飞控和四个电调的安装,飞控和GPS的安装,飞控和接收机的安装,飞控和电源的安装(这里要注意,有的可以电调供电,这样的话就可以省去电源转化器的钱,不过也不贵,几块钱)还是开源哒~。~ ~。~ 这款开源的飞控,性能确实强大,处理器也好,也是APM的升级版,支持光溜定位,和大僵的双目定位差不多,很多小的创业公司的飞控源码也都是模仿PX4和APM的,恕我直言,大酱早起的飞行器也不知道借鉴了这两款飞行器多少源码,不过很提大酱开心,后期将他们反杀了,哈哈哈哈哈好了,注明的国产飞控登场啦,淘宝上也有一些不错的基于本次TI芯片的飞控。(6)关于接收机和遥控器的选择选择遥控器的时候,一般要注意遥控器和接收器的选择,一般都是配套的,这里选择的是美国手,大约是215(7)关于电池的选择我一般用这种,主要还是便宜,一般选择35c的就可以了大约是70,充电器选择比较屌丝的总共100就可以解决(8)剩下的还有一下扎带,和双面胶,以及减震器(给飞控减震的),大约能花50左右

  • 发表了主题帖: 无人机滤波算法之——互补滤波原理

    本帖最后由 兰博 于 2019-5-14 16:04 编辑 互补滤波原理:        在四轴入门理论知识那节我们说,加速度计和磁传感器都是极易受外部干扰的传感器,都只能得到2维的角度关系,但是测量值随时间的变化相对较小,结合加速度计和磁传感器可以得到3维的角度关系。陀螺仪可以积分得到三维的角度关系,动态性能好,受外部干扰小,但测量值随时间变化比较大。可以看出,它们优缺点互补,结合起来才能有好的效果。那么三者的数据如何融合呢,接下来介绍互补滤波算法。      互补滤波就是在短时间内采用陀螺仪得到的角度做为最优,定时对加速度采样来的角度进行取平均值来校正陀螺仪的得到的角度。即短时间内用陀螺仪比较准确,以它为主;长时间用加速度计比较准确,这时候加大它的比重,这就是互补了,不过滤波在哪里?加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号,例如,加速度计测倾角,其动态响应较慢,在高频时信号不可用,所以可通过低通抑制高频;陀螺响应快,积分后可测倾角,不过由于零漂等,在低频段信号不好。通过高通滤波可抑制低频噪声。将两者结合,就将陀螺和加表的优点融合起来,得到在高频和低频都较好的信号,互补滤波需要选择切换的频率点,即高通和低通的频率。 互补滤波原理框图: 加速度计补偿:     假设n系为地理坐标系,b系为机体坐标系,在地理坐标系中,加速度的输出为:,经过矩阵转换后的值为:。在b系中,加速度的测量值为:,现在和都表示在b系中数值向下的向量,由此,我们对这两个向量做向量积(叉积),得到误差:,利用这个误差来修正矩阵,于是乎,我们的四元数就在这样一个过程中被修正了。 但是,由于加速度计无法感知Z轴上的旋转运动,所以还需要用地磁计来进一步补偿。现在我们假设旋转矩阵是经过加速度计校正后的矩阵,当某个确定的向量(b系中)经过这个矩阵旋转之后(到n系),这两个坐标系在XOY平面上重合,只是在Z轴旋转上会存在一个偏航角的误差。下图表示的是经过旋转之后的b系和n系的相对关系。可以明显发现加速度计可以把b系通过四元数法从任意角度拉到与n系水平的位置上,这时,只剩下一个偏航角误差。这也是为什么加速度计误差修正偏航的原因。地磁计补偿:现在我们反过来从b系到n系,假设地磁计在b系中的输出为:,经过的转换后得到: 。由于是经过加速度计修正过的旋转矩阵,因此该旋转矩阵只在Z轴上存在一个偏航的误差,这就导致中的hy不为零。如果不存在误差,这里的hy应该为0。在n系中,地磁方向与x轴呈一个角度,与z轴呈一个角度,这里我们让x轴对准北边,那么地磁向量为:。在n系的XOY平面上(水平面),的投影为:Sqrt(bx * bx),的投影为:Sqrt((hx * hx)+ (hy * hy))。由于存在的偏航误差,导致的hy不为零,这就是说现在得到的是真实的地磁向量绕Z轴旋转一定的角度后得到的。但由于是绕Z轴旋转,所以该地磁向量在XOY平面上(n系)投影的大小必定相同,所以有bx^2= hx^2+hy^2,我们求出了地磁向量在X轴方向的真实值。而得到hz就是地磁向量在Z轴方向上的真实值,我们不做改变,令bz=hz即可。经过这样处理之后我们得到,这个地磁向量就是地磁的真实值,类似于重力加速度的。接着把经过变换后到b系中得到:。与向量积求误差,再次修正这样就完成了一次地磁计的补偿。将加速度计没能做到的z轴上的旋转修正,通过地磁计在XOY平面上的地磁力相同原理,得到了修正。于是乎,Pitch和Roll通过加速度计修正,然后在这个基础之上(该地磁计补偿方法必须依靠加速度计修正提供一致的XOY平面,才会有bx^2= hx^2+hy^2等式成立),Yaw通过地磁计来补偿,最终得到了没有偏差的实时姿态(也就是由四元数组成的旋转矩阵)。

  • 发表了主题帖: 四轴飞行器基本组成部分

    四轴飞行器按照模块划分,主要有下面几个部分。动力部分:电机,电机驱动,桨叶控制部分:MCU,传感器(IMU),遥控通信(2.4G和蓝牙) http://www.crazepony.com/assets/img/multi-copter.jpg一、电机 电动机有有刷和无刷之分。结构上,无刷电机和有刷电机有相似之处,也有转子和定子,只不过和有刷电机的结构相反;有刷电机的转子是线圈绕组,和动力输出轴相连,定子是永磁磁钢;无刷电机的转子是永磁磁钢,连同外壳一起和输出轴相连,定子是绕组线圈,去掉了有刷电机用来交替变换电磁场的换向电刷,故称之为无刷电机(Brushless motor)。有刷电机有刷电动机是内部含有换相电刷的电动机。什么是电刷呢,直接上图。电刷通过绝缘座固定在电动机后盖上,将电源的正负极引入到转子的换相器上,而换相器连通了转子上的线圈,线圈极性不断的交替变换与外壳上固定的磁铁形成作用力而转动起来。下图是将现在Crazepony使用的电机拆解之后看到的电刷和换相器。http://www.crazepony.com/assets/img/motor-dianshua.jpg有刷电机由于电刷和换相器之间的物理接触,所以有摩擦大,发热大,效率低等缺点。但是有刷电机同样具有制造简单,成本低廉的优点,所以现在市面上有刷电机仍然占有很大份额。无刷电机有刷电机通过电刷和换相器这种结构设计获得固定方向的磁场作用力而转动起来。无刷电机没有电刷和换相器,它是如何获得固定方向的磁场作用力的呢?简单而言,依靠改变输入到无刷电机定子线圈上的电流波交变频率和波形,在绕组线圈周围形成一个绕电机几何轴心旋转的磁场,这个磁场驱动转子上的永磁磁钢转动,电机就转起来了。电机的性能和磁钢数量、磁钢磁通强度、电机输入电压大小等因素有关,更与无刷电机的控制性能有很大关系,这就是无刷电机配合的电调需要解决的问题。无刷电机拥有动力足,寿命长,效率高等优势。所以大四轴都是用无刷电机的,模型无刷电机的外观如下,区别于有刷电机,最明显的就是无刷电机有三根线,并且配合电调使用。http://www.crazepony.com/assets/img/motor-wushua.jpg无刷电机最重要的一个参数是KV值,这个数值是无刷电机独有的一个性能参数,是判断无刷电机性能特点的一个重要数据。
    无刷电机KV值定义为转速/伏特,意思为输入电压增加1伏特,无刷电机空转转速增加的转速值(转/分钟)。总这个定义来看,我们能知道,无刷电机电压的输入与电机空转转速是遵循严格的线性比例关系的。
    例如:某无刷电机KV值为1000KV,意思是此电机在1V电压下,每分钟转速为1000转。则在10V电压下,此电机转速为:10V*1000KV=10000转/分,当然这些都是在电机空载的时候。绕线匝数多的,KV值低,最高输出电流小,但扭力大。绕线匝数少的,KV值高,最高输出电流大,但扭力小。这里可以扩展一下,为什么四轴飞行器都是使用的外转子无刷直流电机呢?外转子电机将原来处于中心位置的磁钢做成一片片,贴到了外壳上,电机运行时,是整个外壳在转,而中间的线圈定子不动。外转子无刷直流电机较内转子来说,转子的转动惯量要大很多(因为转子的主要质量都集中在外壳上),所以转速较内转子电机要慢,通常KV值在几百到几千之间,用在航模上可以直接驱动螺旋桨,而省去了机械减速机构。(摘自《无感无刷直流电机之电调设计全攻略》)电机之空心杯空心杯电机(coreless motor)属于直流、永磁、伺服微特电机。空心杯电机在结构上突破了传统电机的转子结构形式,采用的是无铁芯转子。空心杯电机具有十分突出的节能、控制和拖动特性。空心杯电机分为有刷和无刷两种,有刷空心杯电机转子无铁芯,无刷空心杯电机定子无铁芯。Crazepony使用的是有刷空心杯电机,转速为30000转/分钟,直径为7mm,长度为20mm(简称720电机),电机轴直径为1mm。当然,随着现在生产工艺的进步,现在市面上已经有体积非常小的航模无刷电机,Crazepony也会尝试使用无刷电机。Crazepony空心杯高速电机拆解图,可以明显看到线圈中间没有铁芯的。http://www.crazepony.com/assets/img/coreless-motor.png二、电机驱动控制 电机驱动控制就是控制电机的转动或者停止,以及转动的速度。电机驱动控制部分也叫做电子调速器,简称电调,英文electronic speed controller(ESC)。电调对应使用的电机不同,分无刷电调和有刷电调。有刷电机的永磁体是固定不动的,线圈绕在转子上,通过电刷跟换相器接触来改变磁场方向来保持转子持续转动。无刷电机,顾名思义,这种电机是没有电刷和换相器的,他的转子是永磁体,而线圈是固定不动的,直接接到外部电源,问题就来了,线圈磁场方向怎么改变呢?事实上,无刷电机外部还需要一个电子调速器,这个调速器就是一个电机驱动,通过改变固定线圈内部电流的方向,保证它跟永磁体之间的作用力是相互排斥,持续转动得以延续。http://www.crazepony.com/assets/img/esc.png有刷电机工作可以不需要电调,直接把电供给电机就能够工作,但是这样无法控制电机的转速。无刷电机工作必须要有电调,否则是不能转动的。必须通过无刷电调将直流电转化为三相交流电,输给无刷电机才能转动。一般使用PWM的占空比来控制电机的转速。Crazepony电机驱动无刷电机的操作相对来说是比较麻烦的,而有刷电机就是我们小时候玩的四驱车上的那种电机,接上电就能猛转,反着接它就反着猛转,就是这么简单。Crazepony使用的是有刷空心杯电机,所以电机的控制属于有刷直流电机控制,相对于无刷电调来说要简单很多。Crazepony采用的是有刷空心杯高速电机,转速在3W转/分钟左右。要驱动有刷电机,很简单,只需要将信号的驱动能力增大,就能驱动有刷电机了。那么选择什么元件来提供这样的特性呢?Crazepony的电机驱动IC选型经历了三级管,中功率管的失败,最后选用的是场效应管(即MOSFET)SI2302。由于笔者完全是由于一种强烈的爱好选择了飞行器,最开始连有刷电机和无刷电机的物理结构区别都不知道,电调又是啥?傻傻分不清楚……
    从一个几乎零基础的状态去选择电机驱动芯片,弯路是必须要走的,学费是必须要交的。曾以为书上学到的东西马上就能用,马上能转化为产品,后来发现真的是自己想多了。
    最开始用的三极管作为电机驱动,采用很经典的共射电路“三极管工作在开关状态应该就行了吧?”画了用三极管驱动的PCB板,发现电机越转越慢,根本没劲。“也许是因为三极管扛不了大电流,好吧那我换个中功率管吧,集电极最大6A电流行了吧?”可以想象结果是不行的。http://www.crazepony.com/assets/img/motor-driver-2.png首先了解下为什么三极管作为简单的电机驱动是不可取的方案:三极管作为一个古老的半导体先驱,它是以一个放大器件的姿态而出现的,它在线性区域特性集中,饱和与截止都是两种极端的工作状态,而作为电机驱动的话,我们只能选择它的这两种极端工作模式。用三极管作为大电流负载的驱动管时,不得不考虑的是他自身的管压降对负载的影响,这是很严重的。自身耗散越来越大,电机和管子是串联关系,电池电压只有3.7V,电机就只能越转越慢了 在晶体管家族里面还有一种跟三极管特性互补的,所有特性都集中在开关状态的晶体管,场效应管,即MOSFET。通常的场效应管完全导通时,源漏极电阻都是mΩ级别的,即它自身的耗散非常小。用它做为驱动管再合适不过了。最终选择了一个SOT23封装的,导通电压Vgs

  • 发表了主题帖: 一定要看的无人机原理总结(四)无人机的专业术语

    航拍无人机只能是多旋翼?Parrot站出来不服并且扔给了你一台固定翼的Parrot Disco······ 对,没错,跳舞的那个迪斯科(Disco)。 不如跳舞,飞飞机不如跳舞~ http://www.djitx.com/uploadfile/2016/0924/20160924114721509.png http://www.djitx.com/uploadfile/2016/0924/20160924114735259.png 派诺特 迪斯科,Parrot Disco 虽然官方说可以手抛起飞,但是毕竟是固定翼啊,不能悬停的。 这要是在城市里,不能悬停基本等于「炸机没商量」······ 更别提降落了,上哪儿给你找又宽广又柔软的草地去··· http://www.djitx.com/uploadfile/2016/0924/20160924114746691.png 不过提供的FPV VR模式不错,因为固定翼的视角更能让你感觉「像鸟儿一样翱翔天空」。 不过仅仅只能拍1080P的视频显然还是差了点。 毕竟你要卖1299刀,折合8645人民币呢··· http://www.djitx.com/uploadfile/2016/0924/20160924114755183.png 城市里这么挤,也没有带草坪的豪宅,咱们新手还是乖乖的买四轴吧··· 玩四轴就简单了,跟着老司机慢慢学基本呗~ 要跟老司机聊的来,一些无人机的术语一定要学! 今天呢,就来给大家讲讲「实用又有趣的无人机术语」~ 多旋翼:是一种具有两个旋翼轴以上的旋翼飞行器,常见多旋翼有四旋翼、六旋翼、八旋翼等。 俯仰:Pitch,由美国手右摇杆上下控制,打杆控制飞机向前/后飞行。 由于图示中的飞机是固定翼,所以在俯仰时会有高度变化,而多轴飞行器俯仰时不会有高度变化,只会前后飞行。 http://www.djitx.com/uploadfile/2016/0924/20160924114806615.png 横滚:Roll,由美国手右摇杆左右控制,打杆控制飞机向左/右飞行。 由于图示中的飞机是固定翼,所以在横滚时也会前后位置变化,而多轴飞行器横滚时不会前后飞行,只会左右飞行。 http://www.djitx.com/uploadfile/2016/0924/20160924114816918.png 航向:Yaw,有美国手左摇杆左右控制,打杆控制飞机向左/右旋转。 由于图示中的飞机是固定翼,所以在旋转时也会有位置变化,而多轴飞行器旋转时不会位移,只会原地旋转。 http://www.djitx.com/uploadfile/2016/0924/20160924114825136.png 由于操作习惯不同,遥控器的摇杆布局有三种,中国手(反美国手),美国手(多旋翼最常用),日本手。 http://www.djitx.com/uploadfile/2016/0924/20160924114835254.png 中国手 http://www.djitx.com/uploadfile/2016/0924/20160924114846319.png 美国手 http://www.djitx.com/uploadfile/2016/0924/20160924114855900.png 日本手 炸机:飞机在飞行或起降过程中,由于操作问题或机械故障导致飞机撞击障碍物或坠落的事故,统称炸机。 http://www.djitx.com/uploadfile/2016/0924/20160924114905515.png 爽飞:一般指在飞行期间没有任何意外,飞行地非常顺利。 一键放生:一般指一键返航时无人机飞丢,放生的原因可能是撞到障碍物、指南针受到干扰或者GPS失去信号。 提控回家:指无人机飞丢,找不到,无奈只能拎着遥控器回家。 http://www.djitx.com/uploadfile/2016/0924/20160924114914365.png 冗余:为增加可靠性,在必备系统基础上增加备份。如使用双IMU,在一个IMU故障时可由另一个IMU承担其功能,六轴如动力有冗余,在单个电机缺少动力时仍可飞行。 信道:是信号在通信系统中传输的通道,如同一场地内多架飞机使用同一信道,图传会相互干扰。 http://www.djitx.com/uploadfile/2016/0924/20160924114923830.png 过放:电池正常放电至截止电压后,继续放电导致电池内部遭到不可逆的损坏。 射桨:在电机旋转过程中,原本在电机上的螺旋桨脱离飞出被称作射桨。 http://www.djitx.com/uploadfile/2016/0924/20160924114934628.png 果冻:航拍中所说的「果冻」是由于震动过大、减震球不合适等原因造成照片、视频中出现类似下图的抖动现象,由于神似被戳动的果冻而被成为“果冻”。 http://www.djitx.com/uploadfile/2016/0924/20160924114947111.png 丢星:飞机GPS模块搜不到足够的卫星,容易导致飞机无法定点悬停,发生飘移。 压差:无人机锂电池由数块电芯串并联而成,通常电芯电压相近,电芯最高与最低电压的差值即是压差,压差过大则电池不宜继续使用。

  • 发表了主题帖: 一定要看的无人机原理总结(三)无人机的外观介绍

    今天的「飞手百科」,我们就来给新手们简单讲解一下,无人机身上的各个部件,到底有什么作用~?这里以常见的DJI 精灵4为例。 http://www.djitx.com/uploadfile/2016/0924/20160924114457867.png 1,电机 http://www.djitx.com/uploadfile/2016/0924/20160924114504208.png 消费级航拍无人机多为四轴和六轴,每个轴上的电机带动螺旋桨旋转来产生升力,并以此飞行。目前主流的电机是无刷电机,电机分为定子和转子,下图的绕组线圈就是电机的定子,通过磁场驱动永磁磁钢也就是转子转动,电机就转起来了。 http://www.djitx.com/uploadfile/2016/0924/20160924114512415.png 左边为转子,右边为定子 常听人们问这个电机是2212还是2312的?这四位数字到底是什么意思呢,其实这是电机的尺寸。 例如精灵4电机是2312的,这表示电机定子的直径是23mm,定子的高度是12mm。前两位数字越大的电机越宽,后两位数字越大的电机越高。 http://www.djitx.com/uploadfile/2016/0924/20160924114521530.png 细心的朋友会发现,精灵4的电机有3°的向外倾斜 ,这样设计可以使精灵4的方向旋转更加灵活。 2,螺旋桨 常见的螺旋桨有塑料、碳纤等材质,还有2、3叶之分,精灵4用的是两叶的桨。为什么不用三叶桨呢?因为简单的增加叶数并不能增加升力,还要考虑阻力,电池放电能力等因素。 螺旋桨也常用4位数来表示尺寸,例如精灵4采用9450桨叶,其中前两位表示桨叶的直径,后两位表示桨叶的螺距。 螺旋桨的安装的方式也各不相同,消费级航拍无人机有以下几种安装螺旋桨的方式。 http://www.djitx.com/uploadfile/2016/0924/20160924114531352.png 螺丝固定桨叶 通过螺丝来固定桨叶,常见于航模。 http://www.djitx.com/uploadfile/2016/0924/20160924114541363.png 通过螺纹把螺旋桨旋转固定在电机上,在电机旋转的过程中由于旋转的力会拧紧桨叶,但某些情况下会有射桨的风险。 http://www.djitx.com/uploadfile/2016/0924/20160924114550493.png 快拆桨 如自紧桨螺纹损坏或电机由于堵转陡停,会导致桨叶脱离电机飞出(射桨),因此最新的飞机倾向于使用可靠性更高的快拆桨,例如精灵4就采用快拆桨。 3,LED灯 http://www.djitx.com/uploadfile/2016/0924/20160924114559100.png 消费级航拍无人机在机臂下方一般都有着LED灯,这灯并非仅为装饰,而是大有用处的。 在飞行中前方红色的LED灯起到了表明飞机位置和机头朝向的作用,后方的灯则表明飞机的实时状态,例如飞机正常情况下绿灯慢闪,失控时黄灯快闪,低电量时红灯慢闪。 4,电调 http://www.djitx.com/uploadfile/2016/0924/20160924114609173.png 把精灵4的电池拔出后,从电池仓看进去,会看到部分电路板,这就是飞机的电调板,用于控制电机的电流大小。 无人机的电子设备也是怕水的,像手机一样,进水后会影响保修,因此在机身中贴有一张防水标签,遇水变红,如果维修时这张标签是红色,就会影响保修。所以雨天、大雾天还是不要飞行,回南天也要注意防止进水。 5,超声波/视觉定位/视觉避障 http://www.djitx.com/uploadfile/2016/0924/20160924114620214.png 上图中间两个大的圆孔是超声波模块,运用了超声波原理来在低空情况下精准定高;两侧较小的两个圆形是视觉定位模块,类似两个眼睛,利用了图像识别技术使其在室内也可悬停。 http://www.djitx.com/uploadfile/2016/0924/20160924114629724.png 在精灵4前方的脚架上,我们也可看到两个“小镜头”,这是精灵4避障的关键所在,依靠这两个镜头的立体成像,精灵4可以实现视觉主动避障。目前无人机避障有几种技术,精灵4的视觉避障、英特尔realsense技术、超声波避障技术。 6,镜头 http://www.djitx.com/uploadfile/2016/0924/20160924114639140.png 连接着相机和机身的部件叫做云台,云台可以保持相机在飞行时的稳定,消除画面抖动。精灵4将部分云台做到了机身中,使得整个机身线条更加流畅。 为保证画面实现各个方向上的增稳,云台分别有三个轴:俯仰、横滚、航向,每个轴都有一个电机,用于在飞机倾斜时让画面仍保持平稳。 7,遥控器 其实在最早飞的时候,飞无人机用的遥控器差不多都是长这个样子的: http://www.djitx.com/uploadfile/2016/0924/20160924114649751.png 虽然看着很多按钮、拨杆很酷炫,但是使用难度也很高,什么功能对应哪个开关都需要进行设置,油门行程校准之类的操作也要自行完成。这样一台遥控器的使用指南往往长达数十页,难倒了一众新人。 后来在一体机中,为了新人也能快速学会使用遥控器功能,遥控器被大大简化了。 http://www.djitx.com/uploadfile/2016/0924/20160924114657746.png 在这样的遥控器中,每个开关都已经对应好了相应的功能,只需要记住每个开关对应的模式,拿到手就可以直接进行飞行。 再后来,大概是由于这样的遥控器外形过于简单、功能偏少,遥控器又设计为了下图的样子 http://www.djitx.com/uploadfile/2016/0924/20160924114708405.png 遥控器上的按键重新变多了,更多的操作都可直接在遥控器上进行,遥控器上加入了操作频率高的拍照、录像按钮以及重要的返航按钮。这时每个按键变得更直观,人机工程做得更合理。

统计信息

已有141人来访过

  • 芯币:938
  • 好友:2
  • 主题:203
  • 回复:34
  • 课时:10
  • 资源:16

留言

你需要登录后才可以留言 登录 | 注册


TOPFIR 2018-6-24
电气大类分流,自动化和电子信息工程学习内容及前景简要分析?谢谢

本人上海双非大一,打算考研,大二要专业分流,自动化有两个方向:智能机器人和过程控制;电子信息两个方向:嵌入式技术应用和物联网。

私下在网上也查了很多信息,发现许多说法都不一致。
yongjuan86 2018-1-29
你好 能公开一下联系方式吗  想请教你一下lora的问题 能加我企鹅吗 307796439
查看全部