基于加速度传感器MMA7260QT的自动摇篮的设计
扫描二维码
随时随地手机看文章
引言
照顾小宝宝是非常劳累的事情,因为他们醒来和睡觉都比较频繁,加之喂食换衣服等活动,会占用大人大量的时间和精力。摇篮的诞生在很大程度上减轻了大人的负担,但仍有很多不尽如人意的地方。利用动作(加速度)传感器和功能丰富的单片机,则可以设计出一种相对智能化的摇篮。
背景
现在市面上的电动摇篮仅有简单的定时功能,因此不能针对婴儿的活动发生动作,若摇篮一直摇动,对婴儿的安抚作用就会降低。采用声音触发的自动摇篮,缺点是婴儿先是活动,得不到安抚则会哭闹,摇篮才会启动进行安抚;另外如果因为别的原因哭闹,摇篮则不能起到安抚作用。所以根据婴儿的活动来启动摇篮是比较妥当的控制方式。飞思卡尔的加速度传感器性能优秀,成本较低,适合这样的应用。
自动摇篮的原理
本系统采用飞思卡尔MC9S08QG8单片机作为控制器,使用飞思卡尔加速度传感器MMA7260QT判断婴儿的活动情况,同时用麦克风检测婴儿哭闹的声音作为辅助判断,然后根据设置启动摇篮摇动。人机界面由键盘和点阵液晶显示器组成。
测量运动的方法
加速度传感器测量运动和动作有很多算法,本系统中由于摇篮的活动方向是二维的,而且主要是其中的一维(所以采用一维加速度传感器也可以),运动情况单一,场合也不复杂,所以采用简单的阈值判断的方法即可实现。阈值代表着灵敏度,可由用户根据实际情况选择。
触摸按键的实现
触摸按键是近年比较流行的技术,由于MC9S08QG8单片机有很低的端口漏电流和强大的键盘中断功能,所以不需增加其它有源器件即可实现。而且本系统使用两个端口即可提供三个按键的功能。
使用PCB焊盘作为触摸按键,和地之间构成一个小电容C1(没有手指触摸时),按键通过大阻值电阻R1接地。单片机端口平时输出高电平,检测按键时则为键盘中断,随着C1上的电荷通过R1流失,电平逐渐降低直至引起键盘中断,从开始检测到引起键盘中断的时间为T1,当有手指触摸时相当于在C1上并了一个电容,因此电容值变成C2,则从开始检测到引起键盘中断的时间为T2,通过检测T1、T2的差别即可判断按键按下,如图1。
假设按键1的电容为C1,按键2的电容为C2,则如果C1增加C2不变,则按键1按下,如果C2增加C1不变,则按键2按下,如果C1、C2都增加相似的数值,则可判断为按键3按下。PCB上按键3位于按键1和按键2之间。这样就实现了两个端口判断三个按键的功能。
PWM脉宽调制驱动电机
使用脉宽调制(PWM)的方式驱动电机来实现调速,可以给用户选择3档摇动速度,也可以实现软启动和软停止。
液晶显示
使用3V串口液晶显示模块,用单片机SPI口驱动,实现简洁高效的显示界面。
系统概述
系统特性
A.使用飞思卡尔MC9S08QG8单片机作为控制器,集成度高,性价比好。
B.使用飞思卡尔MMA7260QT加速度传感器感知动作,性能先进,稳定。
C.良好的人机界面包括了点阵液晶显示器和简洁的菜单系统。
D.使用单片机端口低漏电流的特性和键盘中断功能实现流行的触摸按键技术。
E.使用单片机PWM功能实现摇篮速度可调,软启动和软停止。
F.可控音量的音乐播放功能。
系统概述
基于MMA7260QT加速度传感器的自动摇篮控制系统结构如图2。
婴儿睡着时,摇篮不动,加速度传感器的输出稳定,单片机采样得到的数值作为零值。当婴儿有动作引起摇篮晃动,单片机采样得到的数值发生变化,变化大于设定的阈值时,PWM引脚输出驱动电机动作。
麦克风作为可选的辅助判断依据也输入单片机。
音乐播放作为可选的辅助安抚手段。
系统硬件
电路框图如图3所示。
飞思卡尔MC9S08QG8单片机
本系统使用MC9S08QG8作为核心控制器,其高度集成的功能和灵活的端口控制大大简化了系统设计和成本,本系统主要用到了以下功能:
高速CPU和大容量的Flash和RAM存储器
内置的精确时钟
2通道10位AD转换器
2个键盘中断输入端口
PWM输出功能
高速SPI接口
飞思卡尔MMA7260QT三轴加速度传感器
系统使用新的MMA7260QT三轴加速度传感器作为主要传感器,内部信号调理,内置滤波,量程可选,性能稳定可靠,设计起来相当简洁方便。
加速度测量部分
传感器设置为最小的量程,输出经过电阻电容滤波然后进入单片机AD输入,如图4。
键盘电路
键盘电路十分简单,端口到地接2M电阻即可,触摸键盘的PCB设计要兼顾三键判断,故采用如图5设计。
电机驱动
单片机输出PWM脉宽调制信号,然后通过驱动电路驱动电机。
麦克风输入
麦克风输入经放大后通过二极管整流到电容上,此电压进入单片机AD转换器。
音乐播放
音乐源使用专用音乐IC,功率放大器使用国家半导体的LM4874芯片,具有4级电子音量调节功能,本系统只需单声道即可。
液晶显示
采用3.3V串行液晶显示模块,128X64点阵,单片机通过SPI端口直接相连。
外围其他电路
电源经220V转为5V然后经LM1117-3.3稳压成3.3V输出给系统电路使用,5V电压还用来驱动电机。
系统软件
系统软件完成以下功能:
根据设置参数定期检测摇篮状态。
定期对键盘中断引脚检测充放电时间。
驱动液晶显示器显示相关参数、菜单。
根据参数驱动摇篮播放音乐。
检测摇篮状态
以10Hz的频率检测加速度传感器,定时器中断程序启动AD转换器,主程序中检测到AD转换完成则把结果保存起来,通过和零值比较,如果大于阈值,则认为婴儿活动,根据设置参数启动电机、音乐。
键盘检测
以20Hz的频率扫描键盘,定时器中断程序把相应引脚置为输入,允许键盘中断。引脚放电引起键盘中断,保存中断时的定时器数值,然后退出。主程序等两个按键引脚都扫描完毕保存了放电时间后,调用键盘处理程序分析,得到按键结果。
液晶显示器驱动
液晶显示器使用SPI口送数据,根据按键结果相应调整液晶显示的内容。
摇篮驱动和音乐播放
驱动摇篮时,根据设置参数启动PWM输出,同时记录时间,到参数规定的时间后缓慢停止摇篮(减少PWM占空比)。
功放音量根据参数设置,触发音乐IC播放音乐。
其他辅助程序
根据软件需要,设置定时器中断和变量time_to_1s,当变量中数值达到1S后重置变量。
程序结构
主程序流程如图6
主要子程序:
void MCU_init(void) 单片机初始化
void lcd_init(void)点阵液晶显示初始化,显示待机画面。
void lcd_menu(unsigned char)菜单显示子程序
void acc_t(void)加速度检测子程序
unsigned char key_calc(void)键盘处理子程序,返回键盘值。
全局变量key_start_time保存放电开始时间key_a、key_b保存两个按键放电时间。
Prog_state保存程序运行状态。Sys_set保存系统设置。
菜单可调节参数:
摇篮状态:自动,手动开,手动关。
摇动时间:1,3,5,10,30,60,120分钟。
摇动速度:快速,中速,慢速,关闭。
宝宝动作灵敏度:高,中,低。
声音灵敏度:高,低。
音乐音量:高,中,低,关闭。