原创 M8的A/D转换应用

2007-7-20 12:11 2167 7 7 分类: MCU/ 嵌入式
刚过完年就做了一个产品,

TSW-02E数字式档位变送器,

与一般的方位变送器的唯一区别就是输入量,

一般档位变送器输入都是开入量,

而02E的输入是模拟量-电流。

具体要求:

1.输入4-20mA,4mA对应第1档,...20mA对应第17档;

2.输出BCD码空接点;

3.两位数码管显示档位;

4.要求档位精度3%。

硬件设计:

1.转换模块:将4-20mA电流量转换为1-5V电压量;

2.单片机:ATmega8,对1-5V电压量进行AD转换,输出BCD接点,输出档位显示;

3.电源:5V,供给单片机;24V,供给继电器及其转换模块。

单片机资源分配:

1.采用外部8M晶振,AD转换采用内部AVcc作为基准电压,AD采样时钟8M64分频;

2.PB0-PB4:BCD接点输出驱动;

3.PC0:AD转换电压模拟量输入;

4.PC4、PC5:数码管数位;

5.PD0-PD7:数码管数形。

软件设计:(比较简单的程序,故略)

调试中出现的问题:

1.AD转换中,刚开始使用外部5V作为基准电源,AD转换后数字量与计算出的数字量之间误差较大,误差约为50mV。后使用内部AVCC作为基准电源,发现内部AVCC作为基准电源进行AD转换后的数字量精度提高,误差仅为10mV,而且比较稳定;

2.档位临界点处数码管显示、继电器输出不稳定,出现抖动现象。程序中的算法出现问题,所有的程序都是针对理想状态进行编制的,忽略很多实际中存在的问题,比如转换模块本身的误差、AD采样的误差、档位计算中数制上的误差......。后在程序中加入宽度因子,进行消抖处理,无上述现象。

 

这次的产品软硬件相对来说都比较简单,但是在软件的编制过程中,发现很多问题,尤其是编程的风格及其技巧,风格还好,基本上都是模块化,但是每个模块中编程的技巧可就差得太远了,感觉就像小学生的水平,没有一点真正做程序的那种样子,完全是为了实现功能而拼凑的一堆代码。看来,还要好好学习才行啊!
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /3 下一条