单片机典型案例开发(二)
扫描二维码
随时随地手机看文章
一、宿舍智能报警系统设计方案
摘要:该系统以凌阳公司的16位单片机SPCE061A作为主控制器,通过烟雾传感器与人体热释电红外传感器分别感应烟雾与人体红外信号,通过单片机做出报警动作。本系统设计主要是满足宿舍自动报警的需要,设计的目标是要实现语音报警、时间设定和显示、灯光报警并实现网络报警等功能。
1 设计方案
1.1 主控制器的选择
采用凌阳公司的16位单片机SPCE061A作为主控制器。由于SPCE061A内置有2 KB的SRAM和32 KB的内存FLASH,能满足本系统存储密码及各类数据的要求,且CPU时钟频率高达49.152 MHz,能保证响应的快速性,内置的语音模块更提高了系统人机界面的友好性。
1.2 异地监控方案选择
采用无线通信方式。使用无线收发模块NRF2401进行无线通信。这种通信方式不受线路长短影响,主从站位置可任意设置,布置比较灵活。
1.3 贵重物品检测方案选择
门框宽一般在1~2 m,采用射频收发模块实现较为方便,将发射机附在贵重物品上,接收机固定在门口,当贵重物品出入时,即可进行记录。发射机与接收机电路结构都较简单,体积小,携带方便。
1.4 系统总体框图
根据上述设计思想,系统总体框图如图1所示。系统由上位机和下位机两大部分组成。上位机进行键盘输入、语音提示、报警和人员物品进出情况记录。下位机进行烟雾检测、人体红外检测、贵重物品检测、人员进出情况检测等数据采集工作。下位机通过无线收发模块将检测信号送入上位机。上位机进行数据处理并作出相应动作。
图1 系统总体框图
2 理论分析与计算
2.1 物品检测电路的计算
采用无线发射与接收方式进行贵重物品检测,通信距离与发射功率、接收灵敏度和工作频率有关。选用通信频率为8MHz,电感为47μH。
2.2 控制方案分析
根据题目要求,为实现对宿舍安防情况进行异地监控,采用一主两从的方式进行模拟,其中主站可以实现对从站的搜索,实时显示从站是否在线,并进行信息的接收处理、显示、记录与报警,从站进行信息获取与发送。主站上可实现对从站信息的实时显示,并将报警及贵重物品进出信息存储在主站的FLASH内,省去了外接存储芯片,可方便地读取与显示。利用人体传感器并通过对进出宿舍的人员进行计数来确定宿舍内人数,并提示锁门。采用单片机内部时钟作为时间基准,通过键盘进行时间设定,用以记录报警时间。利用单片机内部的语音模块实现语音报警,直观实用。这种控制方案充分利用了单片机的片内资源,使用外部器件少,简单实用。
2.3 烟雾探测模块
采用MQ-2烟雾传感器,它具有探测范围广,灵敏度高,响应恢复快,稳定性优,寿命长等优点,配以简单的驱动电路即可实现烟雾检测。烟雾传感器电路如图2所示。当未检测到烟雾信号时,比较器输出低电平;当传感器检测到烟雾信号时,比较器输出5 V高电平,报警器动作。
图2 烟雾传感器结构
2.4 人体红外探测模块
采用芯片BISS0001配以热释电红外传感器KBS-6B和少量外接元器件构成被动式红外人体传感器。加装菲涅尔透镜大大提高了检测范围,很好的满足了人体检测需求。当有人从热释电传感器通过时,BISS0001的V.口输出一正向脉冲,报警器动作。电路结构如图3所示。
图3 释热电红外传感器结构
2.5 人员进出检测设计
采用前后放置的两个红外光电开关,通过对开关顺序的检测确定人员进/出宿舍。当有人出宿舍时控制信号1先置高,然后控制信号2置高,通过对时序的判断即可得出人员外出的结论。有人进入时同理。检测电路如图4所示。
图4 人员进出检测电路图
2.6 贵重物品检测设计
为达到贵重物品检测的要求,将一单调谐回路谐振放大器至于卡片内,卡片挂在贵重物品上,卡片向外发出射频信号,当其出入宿舍时,与副边线圈发生谐振,负载电压发生变化,通过对负载的检测即可记录人员进出情况。电路如图5所示。
图5 贵重物品检测电路图
3 程序设计
主站系统加电后进行初始化并要求输入密码,密码输入正确即可对火灾、贵重物品、键盘等进行监控,并根据监控的情况作出相应的处理。从站加电初始化后即开始对各个传感器状态进行监控并进行数据发送。其程序流程如图6所示。
图6 主程序流程图
4 测试数据与分析
4.1 测试仪器
测试仪器及型号如表1所示。
4.2 测试方法及测试数据
测试方法及测试数据如表2、表3所示。
表2的测试数据表明,烟雾传感器性能良好。
表3显示的测试数据符合设计要求。
5 结语
本系统通过测试较好地实现了设计的各项要求。主要创新是加入了语音报警功能,更加实用;加入从站搜索功能,可以实时显示各从站的工作状态;加入无人看守功能,并能在特定时段发现人员活动后立即发出报警;加入时钟功能,可实现时间设定和显示。
二、基于单片机控制的智能路灯模拟系统
1.实现功能
(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。
(2)支路控制器应能根据环境明暗变化,自动开灯和关灯。
(3)支路控制器应能根据交通情况自动调节亮灯状态:当可移动物体M(在物体前端标出定位点,由定位点确定物体位置)由左至右到达S点时,灯1亮;当物体M到达B点时,灯1灭,灯2亮;若物体M由右至左移动时,则亮灯次序与上相反。
(4)支路控制器能分别独立控制每只路灯的开灯和关灯时间。
(5)当路灯出现故障时(灯不亮),支路控制器应发出声光报警信号,并显示有故障路灯的地址编号。
2.方案设计
本设计主要以STC89C52单片机为主体。其中,支路控制器模块通过单片机来控制单元控制器1和单元控制器2,并完成显示和声光报警部分。用光敏传感器感应自然光的暗亮,将感应结果送至支路控制器,进而控制LED1和LED2的工作状态。单元控制器1模块控制可移动物体M从S到B再到方向路灯变化过程。如当可移动物体M到达S处时,红外检测可移动物体M的位置,并将信号发送至单元控制器1。在支路控制器允许工作的同时,单元控制器1打开继电器,由继电器打开功率可控恒流源,进而实现自动调节亮灯状态。
图1 模拟电路控制系统框图
2.1 恒流源方案论证
采用程控分流实现电源的功率调节。由变压器将220V的交流电转化成直流电,电源通过整流桥到7809芯片得到+9V的电压从而得到恒流源,再由7805芯片转化成相应的恒流源,所得功率在1W可调。其优点是电路简易,容易搭建。缺点是性能不可靠,不稳定。其构图如下图2所示。[!--empirenews.page--]
图2 恒流源电路图
2.2 系统软件设计
本模拟路灯控制系统以支路控制器为主核心,编制软件程序分别完成时钟功能,显示开光灯的时间,控制支路的按时开灯和关灯。并能根据环境明暗变化,自动开灯和关灯。支路控制器分别能控制每只路灯的开灯和关灯时间。并能在路灯出现故障时发出声光报警。其主流程见图3。
图3 主程序流程框图
框图中的S10、S11、S12、S13、S14、S15、S16分别是按键10、11、12、13、14、15、16(按键原理图可见附录4)。S10和S11控制模式1,S12控制模式2,S13控制模式3S,14控制模式4;S15控制LED1,S16控制LED2。
3 总结
本文设计了一个模拟路灯控制系统,该控制系统包括1个支路控制器和2个单元控制器。本系统支路控制器和单元控制器均采用STC89S52单片机。
该系统具体完成的功能包括:支路控制器有时钟功能、能根据环境明暗变化自动开灯和关灯、能根据交通情况自动调节亮灯状态、能分别独立控制路灯的开灯时间和关灯时间、能进行路灯故障的报警、自制了单元控制器中的LED灯恒流驱动电源、并可对该恒流电源的输出功率进行自动或手动调节。支路控制器根据环境的亮暗程度来决定是否将路将灯开或关;单元控制器会实时检测路灯的故障情况,如有故障则及时将信息反馈至支路控制器,支路控制器启动报警;同时单元控制器还可以控制LED恒流源的输出功率以调节路灯的亮暗程度,这一功能可进一步拓展为根据环境的亮暗程度来调节路灯的亮暗程度,以节省电源功率。
一种智能化的温湿度智能控制系统设计#e#
三、一种智能化的温湿度智能控制系统设计
温、湿度控制广泛应用于人们的生产和生活中,对于农产品种子来说,对环境温度与湿度有着比较严格的要求。人们通常使用温度计、湿度计来测量仓库的温度和湿度,通过人工加热、加湿、通风和降温等方法来控制仓库的温、湿度,这种方法不但控制精度低、实时性差,而且操作人员的劳动强度大。同时温度与相对湿度的大幅度变化可能导致种子大范围腐烂或者影响种子的发芽率,从而带来极大的经济及财产损失。因此,保持适宜的仓库温度、湿度对保证农产品种子存储质量十分重要。
目前市场上的各种温度控制设备大多只能根据简单的温度变化规律制定控制算法,系统扩展性较差。本系统采集了种子仓库所在地一年的温度变化规律,并使用能适应季节变化、节省能源的模糊控制算法, 结合AT89S51 单片机技术研制了一种稳定性高、成本低的温、湿度智能控制系统,采用上、下位机控制结构,实现全方位智能化的仓库管理控制系统。
1 系统结构及工作原理
该系统采用PC 机作为上位机监控单元,AT89S51单片机作为下位机控制器,其外围设备包括温度、湿度检测模块, 温、湿度输出控制模块,键盘输入模块、LCD显示模块及上下位机通信模块、报警模块等。其中外围设备采用RS 485 串行通信接口方式和上位机实现远程数据交换, 用以实现向用户发送信息, 用户对设备进行操作处理等功能。系统结构如图1 所示。
图1 系统结构图
本系统可以通过键盘设定模块或者上位机下装模块进行系统给定值的设置来调整仓库温、湿度控制范围。温度、湿度检测模块将仓库内的温、湿度信息传到单片机, 单片机根据实际情况发出控制信号驱动控制模块进行相应操作, 同时将当前信息存储到单片机相应内存单元中并上传数据到上位机显示及保存。当温度或者湿度超过设定的范围上下限时, 控制器将会启动或者停止相应设备来调整环境湿度和温度, 同时将各种调整信息在LCD 上显示并发出报警信号。控制信息同时在上位机显示并报警, 建立控制日志保存。另外还可以设计一些通用接口, 为以后设备功能扩展提供方便。
2 系统硬件设计
2. 1 控制器的设计
此系统下位机采用模块化设计, 由AT 89S51 主控芯片, 温、湿度检测模块, 输出控制模块, 键盘输入模块,LCD 显示模块, 上下位机通信模块等几部分组成。温、湿度检测模块使用数字温度传感器DS18B20 测量仓库的温度, 使用温、湿度传感器SHT11 测量湿度。输出控制模块的控制信号由单片机控制器提供, 通过光电隔离器传送信号到继电器控制各执行电机动作来调节仓库的温、湿度。单片机的P2. 0~ P2. 4 接口分别作为驱动空调加热制冷、循环风机、排湿窗风门的I/ O 接口。
在I/ O 接口输出电平为0 时, K1 开关断开, 相应执行电机不工作; 在I/ O接口输出电平为1 时, 光电隔离器输出信号使K1 开关闭合, 相应执行电机工作。键盘和通信模块采用查询方式实现对控制系统的设置, 从而达到对系统温、湿度值和其限定范围的及时调节。如果出现异常情况, 设备将立即通过RS 485 将事件传送给远程主机, 发出报警信号。
2. 2 温度检测模块
此系统的温度检测模块根据仓库面积的大小可增加多处检测点, 而数字温度传感器DS18B20就具有支持多点组网的功能, 可将多个DS18B20 并连在惟一的三线上, 实现多点温度检测, 其测温范围为- 55~+ 125 , 固有测温分辨率为0. 5 , 工作电源为DC 3~ 5 V, 测量结果以9~ 12 位数字量的方式串行传送。其检测电路如图2 所示。
图2 温度检测模块电路
2. 3 湿度检测模块
湿度测量模块为了节省控制器I/ O 接口并方便以后的芯片功能扩展, 采用SHT 11 温、湿度传感器。
此传感器是高度集成, 将温度感测、湿度感测、信号变换、A/ D 转换和加热器等功能集成到一个芯片上, 提供二线数字串行接口SCK 和DAT A, 接口简单, 支持CRC 传输校验, 传输可靠性高, 测量精确度高, 由于同时集成温、湿度传感器, 可以提供温度补偿的湿度测量值和高质量的露点计算功能。SHT 11 可通过DA TA数据总线直接输出数字量湿度值。该湿度值称为 相对湿度!, 需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性, 因此为了补偿湿度传感器的非线性, 可按下式修正湿度值:
式中: RH linear为经过线性补偿后的湿度值; SORH 为相对湿度测量值; C1 , C2 , C3 为线性补偿系数, 取值如表1所列。
表1 湿度线性补偿系数
而实际温度和测试参考温度25 有所不同, 所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
式中: RH true为经过线性补偿和温度补偿后的湿度值; T为测试湿度值时的温度( 单位: ℃ ) ; t1 和t2 为温度补偿系数, 取值如表2 所示。
表2 湿度值温度补偿系数
具体湿度检测模块电路如图3 所示。
图3 湿度检测模块电路[!--empirenews.page--]
2. 4 输出驱动控制模块及报警模块
输出驱动控制模块通过控制芯片产生电信号, 控制相应的设备运转或者停止, 实现仓库温度和湿度的自动调节。当检测到的温度和湿度值大于或小于设定值时,报警模块同时会发生报警信号通知用户注意当前状况,必要时需采取相应人工措施。
3 系统软件设计
由于温、湿度变化规律性不强, 被检测对象的温、湿度具有非线性、热惯性、时变性等特点, 较难建立精确的数学模型。而模糊控制算法不需要建立精确的数学模型, 可依据人工实际操作经验, 将其抽象为一系列的控制算法后通过计算机完成控制过程, 具有控制动态响应好、超调小、稳定性强等特点。
控制器可以自动检测昼夜、季节、室内环境温、湿度值的变化, 利用模糊算法实现自动控制过程。仓库存储土豆种子的温度控制在- 1~ + 3℃ 之间, 相对湿度保持在45%~ 70% 较为适宜。
温、湿度控制程序中, 温、湿度各有2 个输入数据和1 个输出数据。e 为温、湿度偏差;△e 为温、湿度变化率; u 为输出控制变量, 其值分别为:
其中: PL 表示负大; PM 表示负中; PS 表示负小; NS 表示正小; NM 表示正中; NL 表示正大。然后根据专家知识和操作人员的经验, 建立模糊控制表。其模糊关系可以用多个条件语句表示, 例如: IF e= NL and △e=NL then u= SM; 根据模糊推理进行运算, 即可推出控制结果。
在主程序中, 主要负责仓库中温、湿度的实时显示,读取并处理传感器测量的温、湿度值, 当实际值与事先设定的温、湿度上下限值不同时, 发出控制信号, 驱动输出控制单元启动或停止执行控制电机, 同时发出报警信号, 通知用户当前发生的状况并作相应控制日志记录。
主程序流程图和温、湿度采集处理流程图分别如图4,图5所示。
图4 主程序流程图
图5 温、湿度采集处理框图
4 结语
采用模糊控制算法非常适合大型仓库中多点温度和湿度的检测与控制, 具有可靠性高、成本低廉、能耗低、反应灵敏、以及可扩展性好等特点。该设备具备一定的通用性, 经过简单的改进, 就能服务于国防工业、农业等生产上的各个方面。
基于AVR单片机的卫星地面测控系统设计#e#
四、基于AVR单片机的卫星地面测控系统设计
本文介绍了单片机Atmega128在一种卫星地面测控系统中的应用,该系统利用Atmega128完成了10路模拟信号的测量、4路脉冲信号的频率测量以及脉冲宽度的测量,由单片机上的16位定时计数器输出两路与输入信号具有相位关系的信号,并通过外扩串口与其它测试模块及工控机进行通信。由于要求系统能够连续稳定工作3年,并且数据不能丢失,因此,在设计时采用了双电源冗余热备份的方案,并且采用两个工控机同时接收数据并互为备份的设计方案。
硬件设计
Atmega128属于Atmel公司的AVR系列单片机,是一种高性能、低功耗的8位控制器,执行大多数指令只需要一个时钟周期。其最高主频可达到16MHz;自带128KB可在线编程的闪存、4KB的EEPROM、4KB的SRAM,程序可进行加密;自带JTAG接口,便于程序的调试;集成外设:两个8位定时计数器、两个16位定时计数器、两个8位PWM通道、6个16位PWM通道、8个10位 ADC通道、一个I2C接口、两个可编程异步串行接口、一个SPI接口、一个看门狗定时器和8个外部中断源。
卫星地面测控系统主要由电源模块、电子机箱、测试箱、工控机以及红外地球敏感器构成,系统结构如图1所示。其中两台电源并联, 输出串联二极管。在整个测控系统中,测试箱的控制功能是通过Atmega128完成的。
测试箱的硬件原理如图2所示。测试系统以AVR单片机为核心,外围电路由串口通信、ADC采样和DAC输出等部分构成。
单片机与工控机之间通过RS-232标准总线进行数据通信,在设计中采用电平转换芯片MAX202来实现二者的电平兼容。为了能够和测试系统的其它模块进行串口通信,采用Xicor公司的双串口芯片ST16C2552外扩了两个串口,由于与外扩串口通信的是-12V~+12V的信号,不是标准电平,因此,要另外设计电平转换电路。使用Altera公司的可编程逻辑器件EPM7128实现对DAC和ADC的逻辑控制;使用BB公司的12位ADC实现对遥测信号的测量;采用BB公司的12位DAC芯片DAC7615产生电地球波信号。
具体功能如下:
ADC测量:将输入的10路模拟信号经过阻抗匹配后连接到通道选择器,再接到ADC芯片ADS7835的信号输入端,ADC的输出信号以及控制信号经过光隔离接到EPLD逻辑,在逻辑内部实现对ADC启动信号、转换通道的选择,以及对时钟信号、数据信号的控制。
DAC 输出:单片机通过逻辑芯片实现对DAC的片选、时钟、数据等信号的控制,DAC的输出信号通过光隔离后,再经过运算放大器进行阻抗匹配后才接到整个测试系统的其它模块。DAC参考电压的稳定性至关重要,如果参考电压稳定性差,将导致整个DAC的输出波动很大,达不到输出精度要求,因此,通过一个稳压芯片 AD584给DAC提供参考电压。
频率测量:电测箱需要对2路基准信号和2路光栅信号进行测量,利用AVR单片机的外部中断和计数器1、3实现测量。将2路基准信号分别接到单片机的外中断INT0和INT1,将光栅信号分别接到单片机的计数器1和3。在电测箱需要实现的各项功能中,电地球波的输出是一个难点,因为需要电地球波的输出与基准信号具有相位关系,并且要求输出具有可变相位、幅度和斜率的信号,本文通过计数器1和3的比较中断实现电地球波的输出。
串口通信:通过单片机自带的两个异步串口,并经过电平转换与上位工控机通信,通过双串口芯片ST16C2552外扩两个串口与测试系统的其它模块通信,此外,为保证系统的可靠性,所有的信号均经过光隔离。
软件实现
单片机软件
运行在单片机的底层软件主要负责ADC的采集、DAC的输出以及串口的通信,下面详细介绍各个部分:
1、 光栅频率测量:测量模拟基准一个周期内的光栅个数
在程序中,每次进入外中断0的处理程序void int0_isr(void)(即基准脉冲上升沿到来时)调用void do_gd_opt_frq()函数测量光栅频率。
在do_gd_opt_frq ()函数中,先把前一次读取计数器1的计数值保存在全局变量time1_prev中,再读取计数器1的值并保存在time1_next中,因为两次中断的间隔就是模拟基准的周期,有一个光栅脉冲计数器1就加1,所以,前后两次的差值就是一个模拟基准周期内光栅的个数。
2、 模拟基准幅度
在INT0的中断处理函数中置一个全局标志refoa_gd_flag = 0xff,在一个100?s的定时器的中断处理函数中查询此全局标志,若置位,则对模拟基准的ADC通道连续采样400次,采样后清 refoa_gd_flag标志并置采样结束的标志refoa_gd_finished = 0xff。在主程序main()函数中不断查询refoa_gd_finished标志,若置位,则调用do_refoa_high()函数求出模拟基准幅度,然后清标志。在do_refoa_high()函数中求出采样400个点中的最大值和最小值,两者之差即为模拟基准幅度。
3、 模拟基准周期:测量一个模拟基准周期的毫秒值
在一个1ms的定时器溢出中断处理函数中,全局的计数变量ref_gd_count加1,ref_gd_count初始化为0。在外中断0的处理函数 int0_isr()中读取ref_gd_count的值,即为模拟基准的周期,再把ref_gd_count清零。这样,只有第一次测量值是无效的,以后均为有效的模拟基准周期。
4、 模拟基准宽度
在INT0的中断处理函数中置全局变量refoa_width_gd_ count=0,在100?s的定时器中断中查询外中断0的引脚是否为高电平,是高电平则refoa_width_gd_count加1,直至变为低电平,refoa_width_gd_ count的值就是模拟基准的宽度。
5、 电地球波
在do_ein()函数中处理工控机串口传过来的电地球波信息,如果是停止电地球波命令(state=0),通过DA电地球波直接输出高电平并清除电地球波使能标志位ein_gd_enable。如果是开始电地球波命令(state=1),把相位、宽度、幅值、斜率等信息赋给全局变量保存,并且计算出步距和斜率上各个点的输出值,置位电地球波使能标志 ein_gd_enable。
电地球波的产生是以模拟基准为基准的,在INT0的中断处理函数中设置计数器的比较中断并使能。
图3中, T0与T1 之间是地球波的相位,T2与T5之间是地球波的宽度。在T1时刻进入计数器1的比较中断timer1_compa_isr(),全局变量 ein_count_gd初始化为0,若ein_count_gd不等于1,则设置比较中断寄存器初值为下一步距点,并通过DA输出,若下一个比较中断到来ige ein_count_gd不等于1,则继续设置比较中断寄存器初值为下一个步距,并输出幅值,直到斜率上所有的幅值输出完毕,置ein_count_gd 等于1并设置比较中断寄存器,使T4进入比较中断。T4进入比较中断,并按照前述方法输出斜率上所有的幅值,完毕则禁止比较中断并置 ein_count_gd=0xff。
ADC采集和串口通信比较简单,这里不再赘述。
软件编译与下载
由于单片机程序是采用C语言设计完成的,因此,需要用Image Craft公司的ICCAVR编译器进行编译,生成COF文件,再用AVR STUDIO调试软件和双龙公司的AVR JTAG仿真器进行调试。调试完成后,利用单片机的JTAG接口写入内部闪存即可。
上位工控机软件
运行在工控机上的软件主要负责处理AVR单片机通过串口传送过来的数据并进行超差、报警的检查,然后把数据存储在ACCESS数据库中,以便查看。该软件能够设置电地球波的幅度、宽度、相位,并能自主控制电地球波的产生或停止。
上位工控机软件采用VC6.0编写,其中的数据库部分采用ADO技术。ADO是Microsoft公司为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 最主要的优点是易于使用、速度快、内存支出少且磁盘遗迹小。
结语
本文介绍的系统使用了很多Atmega128的外围资源,并通过Atmega128提供的定时计数器的比较中断解决了系统设计中的难题。