一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

用微控制器、运算放大器和电阻器实现一个ADC的办法

来源:analog 发布时间:2023-09-01

摘要: 使用微控制器、运放和电阻,您可以在设计中实现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输出误差。



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: