现在开始讲述信源设计,该部分主要工作是设计传感数据采集装置,项目中以温度为对象。
单片机选型必须综合考虑性能和价格,身为硬件开发菜鸟,选用便宜易开发的51单片机,包括预选和终选两个步骤:
- MIPS(每秒钟百万条指令),预选单片机,预计该单片机处理一段代码需要的时间为t1,编写完代码后,使用如下方法查看实际代码运行时间(使用keil的调试模式查看代码运行时间(以51单片机代码为例),应该注意处理器倍频时机器周期的缩短,此处晶振应该填倍频后的数值),假定为t2,希望t2<t1,且越接近越好,如果t2>t1,要不晶振倍频,要不更换最小机器周期更短的单片机;
- ROM和RAM,先用如下方法(KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释)计算程序运行需要的ROM和RAM的大小,估计片内ROM和RAM是否够用,如果不够用,则需要使用片外ROM和RAM,或者更换片内ROM和RAM更大的单片机;
- 引脚数量和功能(I2C,UART,AD/DA等),秉承适度够用的原则即可;
- 根据具体情况,需要额外考虑功耗、工作温度、供电电压等,一般可靠性为军用级>工业级>民用级;
- 土豪可以无视以上步骤,哪个贵选哪个一般没什么大问题。
晶振是单片机最小系统能否稳定工作的关键,也是最小系统频率最高的电路,需要认真对待以下两点:
- 采用温度稳定性好的晶振,实际购买晶振时除频率和推荐电路外,很可能不知道更多的信息,此时需要对晶振进行残酷的测试,测试方法见单片机晶振电路设计资料;
- 考虑最差的运行情况(温度变化剧烈、振动严重、静电干扰复杂等等),使用铺铜缩小晶振环路面积、晶振外壳接地、适当增大焊盘等等,晶振电路案例及分享里分享了典型晶振电路的原理及常见问题。
复位电路可采用专门的复位芯片,经费不足则使用RC电路,注意任何电容只要充电就需要放电,因此需要设置回路给RC复位电路的电容放电,一般反并联二极管即可。
由于测温精度要求不高,简单地使用多个DS18B20并联测温,需要注意:
- 读取多个传感器温度的方法见DS18B20多ROM搜索并读取温度,别懒,DS18B20数据手册-中文版一定要看,没时间钻研或者IO口多得蛋疼就使用多个IO口;
- 部分单片机IO口寄存器更新需要时间,因此每次写引脚需要延迟一小段时间,保证写引脚稳定;
- OneWire与I2C结构类似,为OC门,需要上拉电阻,保证输出高电平稳定,上拉电阻的取值与频率和总线长度有关,具体可见I2C 上拉电阻选择计算公式。
硬件采用串口与上位机通讯,方便调试,需要认真读一读串口公头母头及232接法、RS232串口线接口及接法和RS232,注意:
- 计算机一般采用公口,设备一般采用母口,注意接口的定义是针对公口的,所以母口的连线是2-发送数据、3-接收数据,与公口刚好相反(PCB封装选错的记得改回来),所以计算机和设备需要标准连线,计算机与计算机之间需要交叉连线,设备和设备好像就算连线也不能用吧;
- PCB布线时需要走差分线,方法见利用Protel (Altium Designer)进行差分线布线;
- 鉴于现在的计算机大多不提供物理串口接口,要用转接口将USB转换为串口,这时需要检测转换信号是否遵循严格的公口的定义(检测输出电平即可);
- 所有的连线在使用前都必须检测是标准连线还是交叉连线,最好不要剖开连线强行改装;
- 有时候不知道是软件错了,还是硬件错了,可以下载VSPD虚拟串口排除是否软件Bug。
----转载需获得Wayne Khou同意----