如下图所示,模拟开关cd4052选择信号,avr单片机控制cd4052选通哪个通道,后面接放大和滤波电路后接ad转换芯片(adc122s021 200ksps),然后单片机处理信号后通过传送至计算机。
问题是:单片机控制cd4052依次循环选通0,1,3通道采集信号显示,但是显示的信号乱了,比如本来应该0通道有电压信号,显示的时候0通道没有数据,1通道显示的是0通道的电压信号。我觉得是信号通过模拟开关和放大滤波电路有延迟,而ad芯片的采集速度较快。在程序中通道切换间加延时100ms后没问题了,延时时间小了还是有问题,但是cd4052的各种delay time都是ns级的啊,到底是哪里有问题呢?描述的不好大家见谅,先谢谢大家了!
while(1)
{
m=spi_read(0x00); //温度信号
n=((5*m)/(4095*1.5)-1)/125.4;
datat=wd_data(n);
t=datat*100;
send_data(t);
PORTA&=0xF9; //压力信号1
delay(100);
m=spi_read(0x08);
t=m*500/4095;
send_data(t);
PORTA&=~BIT(PA2); //压力信号2
PORTA|=BIT(PA1);
delay(100);
m=spi_read(0x08);
t=m*500/4095;
send_data(t);
PORTA|=0x06; //压力信号3
delay(100);
m=spi_read(0x08);
t=m*500/4095;
send_data(t);
usart_send(13);
usart_send(10);
usart_send(9);
delay(1000);
} |