单片机小制作,DIY多头灯具分段控制器
为了方便和节能,现在很多家庭都会安装分段控制的吊灯,而且很多都是可遥控的。但是有孩子的家庭会发现,小孩经常顽皮地拿着遥控器切换灯玩,遥控器有时也不翼而飞。这个烦恼其实可以用一个简单的单片机搞定,您在家就可以自行制作。
从灯具中取下原有控制器
把灯具拆下取出控制器(见图3.1)。可以看到,简单的功能用了好多元件,要是用单片机不是简单好多吗?电路只包括整流电路、无线接收模块和继电器驱动电路。无线接收模块输出的信号经过2片74HC40系列的芯片处理后驱动9013控制继电器闭合。
图3.1 从灯具中取下的原有控制器
设计单片机控制器
我想实现的功能是开灯后默认点亮2支灯管,要切换灯管数目时只需要关掉开关又马上打开开关,可以按2、3、4、1支方式切换点亮灯管。这样一来就有两个问题需要解决了:一是开关断开后,电源也切断了,电容上的电荷很快被继电器线圈放完电,单片机无法继续工作;二是单片机如何得知开关被关了。图3.2所示是我设计的电路图,带着上面两个问题,我们分析一下电路。
图3.2 单片机设计电路原理图
单片机选用市场上常见的STC出品的12C2052AD,这款芯片在I/O上完全兼容AT89C2051,芯片功能上更扩展了丰富的功能,如I/O的强上拉、高阻,片内RC振荡及复位电路、片内EEPROM等。为了方便制作,我使用了片内的RC振荡及复位电路,这样一来少使用了复位电路及晶体振荡器。9V交流电压器整流后得到约12V的直流,一部分供给继电器驱动,一部分供给78L05稳压后得到5V供单片机使用。在78L05输出端使用一个4700µF(C2)电解电容。使用如此大容量的目的是,在主电源切断后,C1会被继电器线圈很快地放完电,而C2仍有电荷供单片机使用。VD3、R2、VD4构成一个断电检测电路。电源没有切断时,VD3半波整流后经过R2限流,再由VD4稳压在5.1V左右,电源切断时这里则为0V。使用这个电路的要点是C2的容量要远大于C1,这样才能保证在电源切断后P3.7引脚得到的是一个低电平,同时单片机在断电后一段时间后仍能保持工作。另外,P3.7引脚需要设置为高阻态,如果使用准双向模式就算VD3失电,P3.7仍然是处于高电平状态。单片机输出的控制信号通过内部强上拉后,经过10kΩ的电阻使得三极管B极电流在0.5mA,再经过100倍左右的放大,C级电流可以达到50mA,足以驱动继电器。因为电路安装在灯内,LED可以不要,只用于程序的调试作用。完成的电路实物图见图3.3。
软件编程
软件的编写也极为简单。上电后先设置I/O的上拉和高阻态。因为上电后I/O输出为高,所以在完成设置后把I/O拉低,这样就不会有上电瞬间4支灯管片刻间点亮的问题。程序会不停用P3.7引脚检测电源状态,一但电源失电,P3.7检测到为低电平时,这时会延时防抖,确认为失电后应马上切换到下一个灯管开关状态,灯会在1s后点亮。如果开关关闭时间过长,单片机也会因C2放电完成而终止工作,所有电路停止。所以在使用时,开关关闭再打开的时间间隔大约为1s,也就是开关关闭后马上又要打开,只有这样这电路才能正常进行切换。
图3.3 完成的电路实物图
组装
我们从图3.3所示的电路可以看到,它是直接在灯具原配的电路板上修改的,拆除无线接收及其他部分的电路,只保留继电器、继电器驱动电路、电源部分及接口,这样根本不修改原灯具便可以方便地按原路安装新的功能。此项制作要求制作者十分熟悉市电,安装时也一定要先切断电源。图3.4所示是点亮2支灯管的情形。使用学习到的电子知识来方便自己的生活,确实十分有意义。
图3.4 安装后的点亮效果
单片机实例分享,快递追踪器
如今,快递已经融入了人们的生活,收快递有时候也变成了没空的托词。国内快递品牌繁多,服务水平参差不齐,在给我们消费者带来更低廉价格的同时,也带来了不少的烦恼。快件丢失、损坏变得司空见惯,每次买东西都会习惯性地提醒店家“麻烦包装好,如今快递不靠谱”。
每次拿到快递,看到变形的包装,总会想象它到底经受了怎样了蹂躏。那我们就把自己“打包”起来,作一回快递,感受一下快递一路经受的“风风雨雨”吧!
由于我们人太大,还不经摔,所以打包的当然不是我们自己,我们设计了一个快递追踪器,包含GPS模块、加速度模块等,对快递的路线以及快递运送过程中的磕磕碰碰进行记录。这个追踪器由GPS接收模块、Flash芯片、加速度模块、51开发板以及电池盒组成,如图17.1所示。下面我们仔细了解一下这个追踪器。
图17.1 快递追踪器
各模块介绍
1. GPS 接收模块这里使用的是一块旧的GPS接收模块,如图17.2所示,市场价在30元左右,用于接收GPS数据。接收模块原本使用的是RJ-11水晶头,为了方便和开发板上的标准9针串口连接,我自己制作了一个接头。焊接好后,把插头放进两个饮料瓶盖(经过美工刀处理后)里,并挤入热熔胶进行填充。由于九针串口没有VCC,所以模块供电就通过外接的一根面包板线完成。完工后的自制插头如图17.3所示。
图17.2 GPS 接收模块
图17.3 自制串口插头
GPS数据中包含经度、纬度信息,时间信息以及GPS卫星的有关信息。其中推荐定位信息(GPRMC)的格式如下:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1> UTC时间,hhmmss(时分秒)格式。
<2> 定位状态,A=有效定位,V=无效定位。
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)。
<4> 纬度半球,N=北半球,S=南半球。
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)。
<6> 经度半球,E=东经,W=西经。
<7> 地面速率(000.0~999.9节,前面的0也将被传输)。
<8> 地面航向(000.0°~359.9°,以正北为参考基准,前面的0也将被传输)。
<9> UTC日期,ddmmyy(日月年)格式。
<10>磁偏角(000.0°~180.0°,前面的0也将被传输)。
<11>磁偏角方向,E=东,W=西。
<12>模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)。
例如“$GPRMC,024519.214,A,3315.7712,N,11954.9589,E,0.00,,240812,,*1E”对应翻译后可以得出当前定位信息为北纬33°15.7712′、东经119°54.9589′(不知道是不是谷歌地图的误差,这个坐标离我家实际位置有500m左右的误差),日期为2012年8月24日。
另外,从其他语句中可看出当前可视卫星数为7颗,其微信号分别为03、87、277、29、19、55、206,可见当前信号还是不错的。想了解更多关于GPS数据的内容请自行查找,这里不多介绍。
2. 加速度模块
MMA7361是一款低成本微型电容式加速度传感器,可用于测量加速度及角度,如图17.4和图17.5所示。借助这一模块,可以对快件在运送过程中所受的碰撞以及摆放姿态进行记录。
图17.4 MMA7361 模块
图17.5 转接板(左)及加速度模块(右)
通过单片机AD转换,量化x、y、z三轴电压并进行计算,便可获得加速度以及角度信息。另外,由于这一模块的量程较为有限,从1m高跌落产生的加速度就会超出量程,我们记录超出量程的次数,也就可以计数快件运送过程中发生较大碰撞的次数。
3. Flash 芯片
图17.6 焊接在转接板上的W25Q32
W25Q32为华邦(Winband)开发的一款基于SPI的闪存芯片,如图17.6所示。我们使用的单片机为STC12C5A60S2,不支持SPI接口,需要通过I/O口模拟SPI进行数据读写。另外W25Q32的工作电压为2.7~3.6V,单片机使用5V供电,要注意电压的不同。我们通过加速度模块上自带的5V转3.3V电路为W25Q32芯片供电。W25Q32的其他引脚可与单片机直接连接,数据读写不会受电压的影响。具体引脚定义及读写时序请参考相关数据手册。
4. 51 单片机开发板
XQ_L2A 51是一款很常见的51单片机开发板,如图17.7所示,价格也很低廉。我们使用板载的12864液晶屏插口作为模块接口,连接单片机4个P1引脚,正好用于加速度模块的AD转换。其他引脚连接P0口,用于模拟Flash芯片的SPI接口。
图17.7 XQ_L2A 51 单片机开发板
5. 自制连接板
为了方便连接,我们专门设计制作了一块连接板,如图17.8所示。其正面是加速度模块的连接座,背面为W25Q32贴片位置。
图17.8 转接板(正面、ARES 图纸)
模块装箱
开发板、电池盒、GPS接收模块都通过双面胶粘贴在包装内,固定后包裹上保护膜,如图17.9所示。包装内还放有污损比对卡以及一张记录卡,用于记录快件的一些信息,如图17.10所示。外包装上贴有3个测试标签,用于检查外观污损情况,如图17.11所示。
图17.9 开发板、电池盒、GPS 接收模块都通过双面胶粘贴在包装内
图17.10 包装内还放有污损比对卡以及一张记录卡
图17.11 包装外部
数据提取与处理
1. 数据提取
由于开发板只有一个串口,所以提取数据时必须拔去GPS模块,接上USB转串口模块。为了区分数据提取和数据采集这两种工作模式,我们在编写程序时定义了一个按键用于区分这两个模式。单片机上电时,会自动检测这个按键是否被按下,如果被按下,则打开串口等待数据读取指令。如果未被按下,则进入数据采集模式。
进入读取模式后,将模块连接电脑,打开串口助手,设置波特率后,发送“#READ”指令,单片机会自动从头读取Flsah芯片中的数据,并通过串口发送给计算机,如图17.12所示。另外我们在程序中写入了“#CLEARALL”指令用于芯片清空。
图17.12 计算机通过串口收到的数据
2. 数据处理
串口所收到的原始数据是单片机将各模块所收到的信息进行简单处理后存储到Flash芯片的数据。格式定义如下:
#*GPRMC,024518.214,A,3315.7653,N,11954.9529,E,240812*10,0,1*10&
#:开始标记
*:段落标签
GPRMC:GPS数据标签
024518.214:时间,2点45分18.214秒(UTC时间)
A:定位标记,A=有效定位,V=无效定位
3315.7653:33°15.7653′
N:北半球
11954.9529:119°54.9529′
E:东半球
240812:2012年8月24日
10:x轴瞬时读数
0:y轴瞬时读数
1:z轴瞬时读数
10:加速度取模值
&:结束标记
后期处理
我们总共选取了5家快递公司往返深圳与恩平之间寄送这个快递追踪器。通过保存在Flash芯片中的数据,我们对快递在运送过程中经历的“坎坷”有了一些了解。表17.1是我们整理后的结果,大家可以看看价格和服务是否匹配。(由于我们进行实验的次数较少,不具有普遍性,所以我们未公布快递公司的具体名称,请谅解。)
注:
(1)取件员着装一栏标为“不取件”是由于不上门取件所以无法填写。
(2)超量程记录是指加速度模块超出量程的次数,即有较大碰撞的次数。数据丢失是由于设备损坏而引起数据丢失。
(3)污损标签是贴在包装上的白色贴纸,用于衡量外包装污染情况。数字是与标准色卡比对的结果。
(4)GPS模块在室内和车厢内都无法定位,收集到的数据大部分都是在中转站的数据。但是由于无相关测绘软件,所以数据无太大实用价值,因而没有公布。
(5)结果存在偶然性,请勿对号入座。
相关问答
ad 全称是啥 单片机 ?AD在电子行业中也可以指代单片机,特指ADI(AnalogDevicesInc.)公司旗下的Blackfin和SHARC处理器系列。Blackfin和SHARC是ADI公司专为数字信号处理(DSP...
单片机AD 检测的 AD 部分电路应该是什么样的?如果电压在单片机的ad检测范围内是直接就可以了,比如:0-3.3v,检测是0-30v,这样用电阻分压就好了,保险一点可以使用稳压管保护一下io口,如果是负压,可以用...
32 单片机的ad 是几位的?一般是12位的。32位单片机里的32指的是单片机内部CPU一次处理数据的位宽。现阶段,市场广泛使用的32位单片机为Cortex-M3内核的单片机,进口的有意法半导体公司...
PIC 单片机的AD 值怎么计算?PIC单片机的AD,多半为10位AD。为了方便用户程序,PIC对10位AD结果的对齐方式做了选择性设计。可以选择左对齐、右对齐。如果需要10位精度,合理设计应该采用...
12位adc 单片机 有哪些?1.C8051F020,集成了一个12bit的ADC和8bit的ADC,飞思卡尔十六位的单片机MSP430F5系列单片机;2.stm32f系列单片机;3.picf18系列单片机;等等。在使用的时...
ad 内部数字量指什么?AD内部数字量通常指的是在模拟数字转换器(Analog-to-DigitalConverter,简称ADC)中,将模拟信号转换为数字信号时,ADC能够识别的最小变化量。这个数字量代表...
用 AD 采样电流 单片机 控制?这样好像是实现不了的,只能从0到20A,无法从15-20A。如果ADC是5V的输入范围,那就是说明参考源是5V的,在这种情况下使用串联在回路中的电阻来分得5V电压才能测...
STC的 单片机 内部集成 AD 但是没有参考基准,参考基准是VDD,如何确保 AD的 精度呢?STC内部的AD精度不高,使用VDD做基准问题不大。如果要提高精度,可以外接一个2.5V基准电压源到AD的一个输入端,在采样前、后分别对基准电压源进行AD转换,用得...
单片机 接收的是数字信号还是模拟信号?都可以。单片机又称微控制器,由中央处理器、存储器、输入输出端口(包括并行I/O、串行I/O、模数转换器)、计时器和计数器等组成,具有完整数字处理功能的大规模...
如何用 单片机 做个测水压响应 模块 ?什么叫测水压响应模块,我还以为是测量你传感器对水压的响应速度呢。如果只是测水压,就用压力传感器就行了呀,没有什么水压压力传感器,只不过要你要选择合适...