摘要: 使用微控制器、运放和电阻,您可以在设计中实现8位数字转换器(ADC)。
本设计思想解释了如何使用微控制器和一些常用组件实现8位数字转换器(ADC)。
数字转换器(adc)广泛应用于各种电子设备。然而,大多数低成本微控制器不包括ADC外设。该设计思想提供了一种使用微控制器和一些常用组件实现8位ADC的方法。电路由电阻器和运算放大器组成(图1)。
图1所示、ADC电路
R3-R18电阻形成R/2R电阻阶梯网络,将数字信息转换为输出。换句话说,它是一个简单的DAC。Bit7 (MSB)(最高有效位)到Bit0 (LSB)(最低有效位)由微控制器的数字输出端口驱动。DAC输出电压的公式为:
其中V(DDIO)是微控制器的I/O供电电压。位[7:0]是二进制DAC输入的十进制等效物。
运算放大器用作比较器,比较DAC的输出和输入(AIN)。比较器的输出(CMP_OUT)连接到微控制器的输入。
微控制器输出数据按降序周期性变化,并输入DAC输入。将每个瞬时DAC输出与输入电压进行比较。当DAC输出低于输入时,比较器输出将切换为低电平。比较器输出反馈到微控制器的输入端口。当从比较器接收到逻辑低信号时,微控制器停止并保存DAC输入数据(微控制器输出数据)。这个最终的DAC输入数据就是ADC输出。
清单1提供了为Maxim的MAXQ2000微控制器编写的示例代码。
#include "bitbanging_iomaxq200x.h"void main(void){int wait;char DAC_out;PD0 = 0 xff;//设置IO端口0输出(该端口显示ADC结果)PD3=0xFF;//设置IO端口3输出(该端口连接DAC输入)PD6_bit.bit2=0;//设置IO端口6,引脚2为输入//该引脚连接到比较器的输出,而(1){//在开始时设置DAC输出为MAX (DAC输出= 3.3v) //然后每次减少DAC输出1 LSB, //直到比较器输出切换为低电平(DAC_out=0xFF;DAC_out> = 0;DAC_out——){PO3=DAC_out;//设置输出端口3的值为DAC_out //等待比较器的输出为(wait=0;wait< 500;等待+ +);//如果DAC输出= 0V,比较器输出仍然为1 if(PI6_bit)。bit2 = = 1,,DAC_out = = 0) PO0 = 0;//设置ADC结果= 0否则if(PI6_bit.bit2==1) continue;else //如果比较器的输出变为0 {PO0=PO3;// ADC结果=输出端口3的值;} } }}
类似地,您可以使用相同的概念实现具有不同分辨率的ADC。然而,当实现高分辨率ADC时,需要具有较低容差的高质量电阻来减少DAC输出误差。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308