基于磁阻传感器的低功耗方向指示系统
2.5.2 主程序
主程序完成对各模块初始化程序的调用并进入低功耗模式。其程序流程图如图8 所示。
图8 主程序流程图。
本系统使用默认的时钟设置,即DCO 振荡器作为MCL K(供CPU 工作) 与L FXT1CL K 低频时钟源作为ACL K(供定时器,ADC 工作) ,为整个系统利用低功耗模式做准备。在之后的工作中,各中断源按需向CPU 申请退出低功耗模式,完成工作后,CPU 返回低功耗模式。
2.5.3 AD 转换及方向确定
该部分程序完成运放输出信号的AD 转换、所得数据的分析处理及调用LCD 显示函数完成方向指示的刷新。
AD 模块函数分ADC 初始化函数ADC12_ Init和AD 中断函数ADC12_ISR(包括方向的决定) 。
本系统使用定时器A 触发AD 模块进行转换。
ADC 初始化函数主要完成了定时器A 及AD 模块的初始化工作。定时器A 的初始化工作设置了其计数周期,即设定了AD 的工作周期。AD 模块的初始化工作中选定了内部215 V 参考源,并设置在完成一次序列转换(两个通道的转换) 后申请AD 中断。同时,定时器A 与ADC 同时选择ACL K 作为工作时钟,准备低功耗工作。
AD 中断函数首先对信号进行平均值滤波(对无规律的噪声尤其实用) 。完成滤波后对数据进行线性变换并局部修正,由angle = arctan ( Y_axis/ X_axis) 得到以传感器为正方向的角度值。最后加以磁偏角和液晶与传感器夹角补偿,实际方向角度输出到LCD 显示。
2.5.4 按键处理及磁偏角设置
该部分程序完成按键操作以实现磁偏角设置与锁定功能。该部分程序使用状态变量KeyStatus 来对按键的不同功能组合进行分类,分别有主界面状态、磁偏角设置状态及锁定状态。
按键初始化函数设置了初始按键功能为主界面状态。按键中断响应函数首先对按键进行消抖确认(使用定时器B 完成其中的延时) ,然后调用按键功能执行函数,并由其返回参数改变当前按键功能状态。按键功能执行函数分按键分状态给予具体功能响应,具体功能见程序流程图。其中磁偏角设置状态下,确定功能还将把新的磁偏角写入FLASH ;锁定功能将关闭定时器A 和ADC ,即系统暂停信号转换。
2.5.5 LCD 的驱动:
该部分为LCD 的定位、写入、清除,及中英字符显示等功能的驱动程序,这里不做详细展开。
2.5.6 LCD 的系统显示:
该部分程序完成指南针的图形显示、方向的文字与数值显示,以及磁偏角设置界面的显示。
直接涉及界面显示的函数有显示指南针表盘函数LCD_disp_Panel ,指南针更新显示函数LCD_up2date ,以及与磁偏角设置功能相关的显示函数Enter_Cipianjiao 、Exit_Cipianjiao 、Change_Cipianjiao 。
3 系统测试
3.1 测试方案
关于方向精度的测量,我们将方向指示系统每转10°做一次测量,将其理论值与实际测量值记录,并加以比较。
关于电路功耗测量,我们在电源输入端串联一小电阻,通过测量电阻两端电压,经公式计算得到电路输入总电流,即可求得电路总功耗。在液晶锁定模式(仅液晶工作,其余电路不工作) 下,用同样的方法求得其总功率,两者之差即为我们电路模块(液晶不工作情况下) 的功耗。
3.2 测试数据与仪器
3.2.1 方向精度
实际测得值与理论值见表2 所示。
表2 数据测试表
31212 功耗:
经过测量所得的电路模块功耗见表3 。
表3 功耗测试表
4 设计总结
本设计通过合理选用元件及优化的软硬件设计,使我们制作的方向指示系统具有显着的低功耗、低成本、便携式、高精度的特点。
在设计制作过程中,我们对电路的每一部分都进行了严密的分析论证和参数计算,并经过长时间的调试逐步优化我们的设计。积累总结了许多硬件电路方面的经验。一些算法的巧妙编写也使我们的设计达到了事半功倍的效果。我们将继续对此项目作进一步的探索,使方向指示系统的功能更加完善,应用领域更加广泛。
评论