新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于单片机的低功耗高精度融雪测量仪的设计

基于单片机的低功耗高精度融雪测量仪的设计

作者:时间:2012-11-22来源:网络收藏

我国对于积雪的实时检测技术还比较落后,如通过利用卫星来实时监视积雪融化动态,但在实际的运作中,由于地面环境的复杂性存在比较大的误差与缺陷[1]。早在1973年,MrClain等人指出雪的表面反射率可以作为雪深的指示因子[2],但是由于地表土壤成分各不相同以及表面杂物不同,其检测效果也并不可观。因此,研制一套低是有必要的,而且具有广阔的应用前景。
1 总体方案
 本提出以超声波传感器进行积雪厚度的实时监测,采用“渡越时间检测法”进行雪厚的测量。其测量原理为:超声波发射器垂直地向雪表面发射超声波,同时采集板上微控制器内部定时器开始计时,碰到雪面反射回来。当超声波接收器接收到反射波时,定时器就立即停止计时,根据定时值,计算出发射点距雪表面的距离S。假设设备安装高度为S0,雪厚值为S0-S。最终控制器对采集板进行召测,对采集到的数据处理与分析,并做出相应的预警功能。
2 低的实现方案
 低实现方案主要有:控制板的主控制器的选型以及工作模式的选择;控制AT89C2051的工作模式和485通信状态的控制以及设置合理的采样周期。
 (1)主控制器的选型及工作模式的选择
 控制板的主控制器选择MSP430F149,这是一款16位超低功耗的混合信号处理器。电源电压采用1.8~3.6 V,在2.2 V、1 MHz的时钟条件下运行时,电流仅有160 μA。待机模式:1.6 μA。关闭模式(RAM保持):0.1 μA。平时让主控制器处于LPM3模式下,CPU停止工作,主时钟关闭,子时钟关闭,内部振荡器关闭,辅导时钟打开,其功耗为2 μA。同时,将TIMER_A的时钟源选为ACLK,当到达定时时间时,用#pragma vector=TIMERA1_VECTOR中断CPU唤醒。具体程序实现方法为:
Void Init_Timer_A()
{
TACTL|=TASSEL_1+TACLR; //选择时钟源为ACLK
TACTL|=MC1+TAIE; //使能定时器A中断
}
_BIS_SR(LPM3_bits+GIE); //Enter LPM3 interrupt
#pragma vector=TIMERA1_VECTOR //中断服务函数
__interrupt void Timer_A(void)
{}
 (2)工作模式以及485状态控制
 平时处于“空闲方式”状态,当有串口中断唤醒的时候,CPU才开始采集数据。当采集完成后通过RS-485总线发送给控制板(注:RS-485平时处于接收状态,需要发送时才使能发送端口,为了降低功耗),执行完成后继续“睡觉”。程序实现方法如下所示。
Void Init_Uart()
{
TMOD=0X21;TH1=0XFD;TL1=0XFD;TR1=1;
//波特率发生器的选择
REN=1; //使能接受
  SM0=0;SM1=1;
 ES=1; //打开串口中断
 EA=1; //开总中断
}
Void Init_485()
{
CONTROL_485=0; //使485模块处于接收状态;
}
Void Serial() interrupt 4 //串口中断服务函数
{}
Void Lower_Power()
{
CONTROL_485=0; //使485处于接收状态
PCON=0X01;//使单片机处于“空闲模式”
}
 (3)设置合理的采样周期
 由于积雪的融化与温度有关,当温度在冰点之下时,积雪不融化。这时候就没必要一直去采集积雪的融化状况,即采集频率可以减小,对于降低功耗是一种有效的方法(根据实际情况可在软件中设定值)。该中设定的采样周期如表1所示。

本文引用地址:http://www.eepw.com.cn/article/170684.htm


3 的实现方案
 的实现方案主要表现为:确定回波检测方案,温度补偿,对采集值进行数字滤波,真实值与测量值之间做线性补偿。
 (1)确定回波检测方案
 能够快速检测到回波对于提高精度是一个关键点。如果在程序中使用冗余或者复杂的程序后,势必会增加定时器的计数值,从而影响测距精度。下面是该设计中使用的回波检测程序。
C语言程序:
while(SUPERSONIC_IN(TF0==0))
{}
TR0=0; //关闭定时器0
反汇编分析:
290: while(SUPERSONIC_IN(TF0==0))
C:0x055B 30B703 JNB SUPERSONIC_IN(0xB0.7),C:0561
C:0x055E308DFA JNB TF0(0x88.5),C:055B
291: {}
292:
293: TR0=0; //关闭定时器0
C:0x0561 C28C CLR TR0(0x88.4)


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭