• ADC实验


    1 A/D转换的概念

    A/D转换时将模拟信号转换为数字信号,被广泛应用于控制领域

    2 常见A/D转换器分类:

    2.0 积分型

    积分型AD工作原理时将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。初期的单片A/D大多采用积分型,但是现在逐次比较型已逐步成为主流。

    2.1 逐次比较型

    逐次比较型A/D由一个比较器和DA转换器通过逐次比较逻辑构成,MSB开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较输出数字值。其电路规模术语中等。其优点是速度较高,功耗低,在低分辨率(小于12)时价格便宜,但高精度(>12位)时价格很高。

    2.2 并型比较型/串并行比较型

    并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称Flash(快速)型。但是由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也比较大,价格也高,只能适用视频AD转换器等速度特别高的领域。

    3 A/D转换器的主要技术指标

    3.0满度输出时对应的输入信号分辨率(Resoulution)

    代表A/D转化的精度

    3.1 转化速率(Conversion Rate)

    是指完成一次模拟转换到数字的AD转换所需的时间的倒数

    3.2 量化误差(Quantizing Error)

    由于AD的有限分辨率而引起的误差

    3.3 偏移误差(Offset Error)

    输入信号为零时输出信号不为零的值

    3.4 满刻度误差(Full Scale Error)

    实际信号与理想输入信号值之差

    3.5 线性度(Linearity)

    实际转换器的转换函数与理想直线的最大偏移,不包括以上3种误差

    4 ADC实验

    4.0 电路图

    在这里插入图片描述
    在这里插入图片描述

    4.1相关寄存器

    在这里插入图片描述
    其中需要用到ADCCON,ADCDAT,ADCMUX

    4.2 ADCCON

    在这里插入图片描述

    4.3 ADCDAT

    在这里插入图片描述

    4.4 ADCMUX

    在这里插入图片描述

    4.4 需要用到的计算公式

    4.4.0 单次ADC转换时间

    单个A/D转化频率=ADC的时钟源频率/(预分频值+1)
    A/D转化时间=A/D周期数/单个A/D转换的频率
    例子:假如ADC的时钟源频率为100MHZ,预分频值为99,ADC周期数为5
    A/D转换时间=5/1MHZ=5/1 000 000=5 000 ms =5 us

    4.4.1 ADC实际电压

    (最大输入电压 X ADCDAT_Value)/ 2分辨率位数 =实际电压

    4.5 程序代码

    #include "exynos_4412.h"
    
    void delay(unsigned int i)
    {
        while(i--);
    }
    
    
    
    void ADC_Init()
    {
    	/* 配置ADC分辨率 12bit*/
    	ADCCON |= (1 << 16);
    
    	/* 打开分频器 */
    	ADCCON |= (1 << 14);
    
    	/* 配置分频系数 100,转换周期为 5/(100Mhz/100) = 5us*/
    	ADCCON = ADCCON & (~(0xFF << 6)) | (99 << 6);
    
    	/* 关闭低功耗模式 */
    	ADCCON &= (~(1 << 2)); 
    
    	/* 关闭连续转换模式 */
    	ADCCON &= (~(1 << 1));
    
    	/* 选择转换通道 */
    	ADCMUX = 0x3;
    }
    
    /**
     * @description: 获取转化的电压 
     * @param {*}
     * @return {*}
     */
    unsigned int ADC_do()
    {
    		unsigned int ADCvalue;
    		
    		/* 打开单次转换模式 */
    		ADCCON |= 1;
    
    		/* 检查转换是否完成 */
    		while(!(ADCCON & (1 << 15)));
    
    		/* 接收数据 */
    		ADCvalue = ADCDAT & 0xFFF;
    
    		/* 转化数据,单位:mv,m*(1.8/2^12)*1000 */
    		ADCvalue *= 0.44;
    
    		return ADCvalue;
    }
    
    int main()
    {
    	unsigned int ADCvalue;
    	ADC_Init();
    	while(1)
    	{
    		ADCvalue = ADC_do();
    		if(ADCvalue <= 1800 && ADCvalue >= 1501)
    		{
    					delay(1000000);
    	printf("ADCvalue =%dmv\n", ADCvalue);
    			delay(1000000);
    		}
    		else if(ADCvalue <= 1500 && ADCvalue >= 1001)
    		{
    				delay(1000000);
    	printf("ADCvalue =%dmv\n", ADCvalue);
    			delay(1000000);
    		}
    		else if(ADCvalue <= 1000 && ADCvalue >= 501)
    		{
    					delay(1000000);
    	printf("ADCvalue =%dmv\n", ADCvalue);
    			delay(1000000);
    		}
    		else if(ADCvalue <= 500 && ADCvalue >0)
    		{
    
    		
    			delay(1000000);
    	printf("ADCvalue =%dmv\n", ADCvalue);
    			delay(1000000);
    		}
    		
    		printf("ADCvalue =%dmv\n", ADCvalue);
    	}
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    效果,会打印出实际电压
  • 相关阅读:
    Maven使用之packaging类型
    第六章 树【数据结构和算法】【精致版】
    Python中那些简单又好用的特性和用法
    WPS调用“画笔”菜单的操作步骤
    最全Redis面试题整理
    Linux磁盘分区快速上手(讲解详细)
    Java实现PDF文字内容识别,结合OCR实现PDF图片实现
    mysql 到底是 join性能好,还是in一下更快呢
    Hive之DDL库操作
    低温下安装振弦采集仪注意事项
  • 原文地址:https://blog.csdn.net/hpx12345678/article/details/126804468