目前,业内对倾角的测量多是基于MEMS的加速度传感器,SCA100T是由芬兰VTI公司推出,采用三维MEMS技术开发的一款高精度双轴倾角传感器,可同时测量相对于水平面的倾斜和俯仰角度,具有温度补偿功能。本文以塔式起重机为应用背景,采用SCA100T倾角传感器实时采集倾斜信息,检测塔式起重机支撑架的平衡性能,避免由于其过度倾斜而引发事故。以SCA100T为基础设计了一款小巧、灵敏度高的倾角测量系统,分析了SCA100T倾角传感器测角的原理,给出了系统各个模块的软硬件设计方法,同时提供了两种具有可扩展性的应用方法。
1 整体设计
图1所示为本系统的整体结构框图。该系统采用ATmega8单片机控制SCA100T倾角传感器实时检测平台的倾角变化,将传感器输出的数字量进行换算后,转换为实际的倾角值。用户可以根据需要设置警界倾角值和预定平台水平位置,倾角信息可通过LCD实时显示或通过串口输出到上层控制器中。当倾角信息超过预置的警界倾角值时,系统开始报警,表现为蜂鸣器报警和LED灯闪烁。
系统根据输出方式的不同分为两种应用方式:一种是作为独立系统使用,固定在待测平台上;另一种是将该系统作为一个倾角采集模块,挂接在其他电路中使用。前者采用LCD1602实时显示倾角信息,采用串口超级终端预设倾角警界值和水平位置;后者通过串口输出倾角信息,允许软件编程通过发送串口命令进行配置。配置信息均保存在ATmega8单片机内部的EEPROM中。
2 倾角测量原理
本文选用的SCA100T的测量范围为±30°,其内部包含硅电容感应元件、EEPROM存储器、信号调理电路、A/D转换器、温度传感器和SPI传输接口等,SCA100T功能框图如图2所示。该传感器具有X、Y两个通道,分别用来测量倾斜和俯仰的加速度,每个通道具有自测试系统,可内部产生一个静电力来校验全部的信号通道。信号输出有SPI数字信号输出和模拟电压信号输出两种方式,同时可输出温度信息进行温度补偿。
SCA100T的测角原理为:通过测量静态重力加速度的变化,将其转换成倾角变化。SCA100T的硅电容感应元件由3层硅片构成,形成立体结构,当发生倾斜时,中间质量片会倾向某一侧,从而使两侧的电容发生变化。通过电压值可反映相应的加速度值,进而可计算角度值。图3所示分别为X轴与Y轴的倾角变化情况(X/Y是从倾斜方向来划分的),以X轴为例,其加速度值与重力加速度之间的关系为:
Ax=g·sina→α=arcsin(Ax/g)
其中,Ax表示X轴测出的加速度值,g表示重力加速度值,α为X轴倾角。
[page]
3 系统硬件设计
系统的整体硬件电路如图4所示。系统采用SCA100T的SPI接口来读取输出信息,可避免额外的A/D采样。由于ATmega8具有1路SPI中断,因此可直接将传感器作为从器件接到单片机的SPI接口上。系统通过控制三极管的开通与关闭来控制蜂鸣器和LED指示灯的导通与关闭,从而达到报警的功能。把ATmega 8单片机的PD2引脚接到三极管的基极,正常工作时将PD2置低电平。当发生报警时,将PD2置高电平,此时三极管导通,蜂鸣器发出响声,LED指示灯变亮。
系统采用LCD1602字符型液晶模块来显示倾角信息,该模块可同时显示两行字符,分别为X轴与Y轴倾角信息。模块通常采用HD44780芯片具有标准的16条引脚线。对于串口传输,系统采用TTL电平和RS232两种输出方式,单片机输出的TTL,电平可经过MAX232芯片转换后变为RS 232信号,通过标准串口线与上位机通信。
采用哪种串口输出方式取决于工作方式。当采用串口超级终端对系统进行预置时,需要用短路块将ATmega8单片机的TTL输出接到MAX232芯片的TTL输入端;当采用软件编程方式时,可直接将ATmega8单片机的TTL输出接到其他电路的TX/RX端,作为其外围电路使用,此时需要注意波特率的设置。
另外,系统设计了模式选择功能,将ATmega8单片机的PB0和PB1引出,前者用于选择是否采用LCD显示,后者用于选择是否进入串口超级终端配置模式。正常工作时,这两个引脚为高电平,表示选择串口超级终端配置模式,允许通过串口软件编程;当用短路块将PB0接地时,表示选择LCD显示方式;当PB1接地时,表示进入串口超级终端,并对系统进行预置。
4 系统软件设计
系统整体的软件流程如图5所示。系统上电后,单片机首先对引脚初始化,设置SPI模式,开SPI和串口中断。如果选择了LCD显示功能,还需要对LCD控制引脚进行初始化,显示初始化信息。然后根据是否选择了串口超级终端配置功能,决定下一步操作。
当该功能被选中时,系统进入超级终端处理程序,首先向PC端超级终端发送提示字符,等待用户选择和输入预设数据,收到相关数据后,将其反馈给PC端显示,同时进行预设处理,并将预设的数值写入EEPROM。当未选中该功能时,系统进入正常的工作状态,如果发生串口中断,则进入串口处理程序,根据收到串口数据帧是预设命令还是请求数据进行不同的处理。前者则将预设数值写入EEPROM,若是后者则将倾角信息上传给上层控制器。如果没有发生串口中断,则主程序通过SPI接口采集传感器输出的加速度数字量,并将其转换为实际倾角信息,判断倾角是否超过预设角度值。如果超过则开始报警,同时如果选中了LCD显示功能,还需要通过并口将数值输出到LCD1602显示。
[page]
4.1 传感器数据采集与计算
对于传感器采集,当CSB引脚为低电平时有效,允许传输数据。数据在传输时,高位在前,低位在后。MISO线上的数据在SCK下降沿传输,MOSI线上的数据在SCK上升沿传输。加速度数据量SPI传输时序如图6所示。单片机首先通过MOSI线向传感器发送一个(组)命令,传感器在接收到完成命令后,开始连续传输数据。这里的命令为8位信息,加速度数据量为11位信息,常用的命令有RDAX(0001,0000)和RDAY(0001,0001),分别表示读取X/Y轴加速度数据量。
传感器输出的X轴与Y轴加速度信息均为11位数字量,其范围为0~2 048,零度位置对应的数据量为1 024。根据下述公式可将输出的加速度数字量转换为实际倾角值:
其中,Dout表示X/Y轴输出的数字量;Dout@0°表示零度偏移量(即1 024);Sens表示传感器灵敏度,由VTI厂商提供,对于SCA100T倾角传感器,该值为1683;α’表示预设的平台水平角度,默认为0。
4.2 串口命令
图7为串口与单片机通信的数据帧格式。图中每帧有16个字节,开始两个字节是帧头(0xFFAA),接着是两个字节的数据类型,其类型主要有3种:请求数据(0x0001)、预设警界角度(0x0010)、预设水平角度(0x0011)。然后是10个字节的数据位,通常数据位为2个4字节的数据(整形或浮点型),为了避免出现数据对齐问题,在后面加入两个值为0的字节。最后是两个字节的校验位,采用CRC-16进行校验。
数据发送由上层控制器主动发送,倾角测量系统被动响应。当上层控制器向单片机发送数据请求时,其数据位置0;系统收到请求命令后,将倾角信息填入数据位,发送给上层控制器。当上层控制器向单片机发送预设警界倾角值时,将预设角度值填入数据位;单片机收到后,将数据写入EEPROM中并发送反馈,反馈帧以同样的类型发送,但是数据位填入全0。当上层控制器向单片机发送预设水平角度值时,其操作类似预设警界倾角值,只是类型不同。
4.3 串口超级终端模拟
在Windows XP或是Windows 2000操作系统下,在开始→菜单\程序\附件\通信下可以看到“超级终端”,这是Windows自带的通信终端工具。在超级终端里输入字符时,会自动发送出去,但是如果没有反馈,是不会显示输入的字符信息的。因此,模拟超级终端需要做两件事:一是接收用户在超级终端里输入的字符;二是将输入的字符反馈回来,供用户查看。采用超级终端的方法可以避免用户直接使用命令操作的过程,所有的命令对用户来说都是透明的,用户只需要根据提示信息,输入相关信息即可完成预设配置工作。图8所示为预设配置示意图。
结语
本文以塔式起重机为应用背景设计了这款倾角测量系统,系统在实际应用中工作良好,达到了预期的效果,能实时监测塔式起重机支架的平衡性,对预防建筑施工事故起到了重要的作用。系统探讨了SCA100T传感器的使用方法,在设计时考虑了两种应用方式,对于系统的扩展起到了很好的作用;同时,模拟了串口超级终端来配置系统信息,以此来替代小键盘。
上一篇:基于AVR单片机的简易灭火机器人设计
下一篇:单片机USB-ISP下载线制作
推荐阅读最新更新时间:2024-03-16 13:13