
模数转换芯片有好多种,我建议你先德州的TLC2543,这个芯片是12位的,5V电压供电,与单片机串行通信,占用端口少,而且市场上又常见。我用的就是这个。以下是驱动程序,供你参考
/
TLC2543驱动程序
/
#include <reg51h>
#include <intrinsh>
#include <tlc2543h>
#define uint unsigned int
#define uchar unsigned char
/
2543控制引脚宏定义
/
sbit clock=P3^3; /2543时钟/
sbit input=P3^4; /2543输入 /
sbit output=P3^5 ; /2543输出 /
sbit CS=P3^6; /2543片选/
/
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
/
void delay(unsigned int N)
{
while(N--);
}
unsigned int read2543(unsigned char CON_WORD) //CON_WORD为选择的通道,为0--10
{
uint ad=0;
uchar i;
CON_WORD<<=4;
clock=0;
CS=0;
for(i=0;i<12;i++)
{
if(output==1) //读取DATAOUT
ad=ad|0x01;
if(CON_WORD&0x80) //读取控制字到INPUT
input=1;
else
input=0;
clock=1;
delay(10);
clock=0;
delay(10);
CON_WORD<<=1;
ad<<=1;
}
CS=1;
ad>>=1;
return(ad);
}
数字滤波是需要的 也有好多种方式
如楼上所说 ,累计平均的方式 会使得响应变慢,可以 用递推平均滤波
如0->n, 1->n+1,
不过数字滤波的方式 最主要的一方面 是降低了响应速度以及响应时间,第二个是不能完全消除干扰信号,效果并不明显。
AD采集 并不是打个电路简单的完成功能就行了,尤其是在高精度测量的场合。
建议去了解一下EMC设计,自己要有示波器看看究竟干扰源是什么,从哪来的。
是电源的问题,还是接地问题,是否有辐射等等
从这方面,我简单说以下几点:
1 模拟 、数字部分电路 一定要分开,如果空间所限等分不开,则尽量用地线隔离
2 电源的选择,模拟部分的供电一定选用纹波系数小 ,最好单独用LDO提供,不与数字或大功率部分的电源混用
3 接地 这个是最重要的一环也是设计中的难点所在,可以多参考下资料
4 使用有源滤波电路,当然无源滤波也可以解决部分问题,不过多阶有源滤波可以有效解决干扰问题
5 最简单的无源滤波就是RC 有的时候在低成本、简单调试的场合 也能有很大作用
你说的有很多的尖峰脉冲,可以先简单用个RC滤除一下 ,然后接入AD芯片,再用数字滤波 肯定比单独用数字滤波好的多的多…… 而且还简单方便
如果尖峰脉冲很陡,中间加个磁珠也会很有作用
网上有很多EMC设计电路设计的要领,多看看 很有帮助的
以上就是关于模数转换芯片的选择全部的内容,包括:模数转换芯片的选择、我用STC12单片机控制TLC2543进行电压采集!遇到问题了!请大家解答一下!很急啊!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)