新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机典型案例开发(二)

单片机典型案例开发(二)

作者: 时间:2012-05-28 来源:网络 收藏

  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完成的。

图1 卫星地面测控系统结构图

  测试箱的硬件原理如图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提供的定时计数器的比较中断解决了系统设计中的难题。

光电开关相关文章:光电开关原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭