博客的风格是:答案一定不能在问题的后面,要自己想、自己背;回答都是最精简、最精简、最精简,可能就几个字,你要自己自信的展开。
面试官01:什么是模数转换/ADC?说说模数转换的流程?
面试官02:你在项目中有没有使用到模数转换?
面试官03:详细说说你项目中模数转换的设计全过程。
01:模数转换是将模拟信号(连续信号)转换成数字信号(离散信号),这一过程使用到的模数转换器是一种电子设备接受模拟信号,可以是电压或者电流,通常是电压,然后转换成与信号幅度成比例的数字信号。
模数转换的流程:
(1)采样:在某一时刻采样模拟信号,将连续的模拟信号转换成离散的样本点。
(2)保持:保持采样点的电压/电流,使其在整个转换过程中保持稳定,为了避免信号变化带来的误差。
(3)量化:将模拟信号的值映射到一定比例的离散的数字值上。
(4)编码:将量化后的数字转换成二进制数,便于后续的数字处理和存储。
02:项目中一共有三个地方使用到了模数转换,分别是NTC模拟温度传感器电路、0-5V电压输入检测电路和4-20mA电流输入检测电路。
03:我想以NTC模拟温度传感器电路展开。
硬件电路的设计(脑海里要有硬件电路的原理图):以MUC的模拟电源VDDA为电源,经过电容滤波,选择的热敏电阻是SDNT2012X103FXXXXX(负温度系数),在25摄氏度下的阻值为10K,故串联一个10K/1%的分压电阻,两个电阻相互匹配,在中间节点引出经过电容滤波和RC滤波之后送到单片机具有ADC功能的引脚。
硬件测试:为了进行硬件测试,所以我对后续的过程也有一定的了解。制作表格。
在进行硬件测试之前先制作表格,查阅热敏电阻的数据手册,得到-30~70摄氏度每一度下的电阻最小值,中心值,最大值,如在-30度下电阻最小值,-30下电阻中间值,-30度下电阻最大值,表格做到70度。然后根据分压公式将每一个值对应到实际设计的电路中,得到每一温度下对应的最小值、中心值、最大值。然后因为是用的单片机是12为ADC,再把刚刚得到的值对应到0~4096范围中取整,并组成数组,最后得到所有某一温度下的数组范围,如-25度是(3850,3867),-24是(3835~3850)。
编写软件代码,让单片机ADC引脚每隔1s采样数据,得到电压对应的二进制数,通过二分法查表匹配到对应的温度,将得到的温度显示在数码管上,并用串口助手每间隔1S打印一次温度信息。
注意虽然只说这一个模数转换的电路,但是你心里要对0-5V电压输入检测电路和4-20mA电流输入检测电路做到心中有数。其中电压检测就是把热敏电阻换成10K/1%的电阻分压后还是经过电容滤波、RC滤波。4~20mA电流检测就是直接引出经过150Ω(没有分压)还是电容滤波、RC滤波。
面试官04:什么是数模转换/DAC?说说数模转换的流程?
面试官05:你在项目中有没有使用到数模转换?
面试官06:详细说说你项目中数模转换的设计全过程。
04:数模转换是将数字信号(通常是二进制数)转换为模拟信号(如电压或电流)的过程。数模转换的流程是:
(1)输入数字信号:通常是由微控制器或者其他数字设备提供的二进制数,数字信号代表了需要转换的模拟量的离散级别。
(2)量化过程:根据输入的数字信号生成与之对应的模拟信号。
(3)电路生成模拟信号:DAC内部通过使用特定的电路来输出模拟信号。
(4)滤波与平滑:因为输出的是离散的模拟信号,因此还可能会通过低通滤波器进行滤波与平滑处理,使输出为一个更连续、平滑的模拟信号。
05:在项目使用到了数模转换,是使用一个具有DAC功能的引脚上电后输出正弦波,通过触摸按键1可以调整正弦波的频率。
06:在项目中使用的是一个复用引脚,是SPI通信的热电偶接口中的一个引脚(是一个只能由单片机向向接口引脚输出的引脚),硬件电路很简单,就是排针的接口。为了硬件测试,我对后续软件编写和简单的原理也有简单的了解。显示的正弦波是将一个周期中的正弦波分成32份来显示,故软件编写中先有数组存储了32个正弦波的采样点,代表一个完整周期的正弦波周期。将32个值通过DAC通道每隔X输出一个,其中X就是可以通过触摸按键1调整的值,这就可以通过按键1来调整正弦波的周期。
(上述涉及到的SPI通信,会在通信专栏中讲解。)
(热电偶的讲解如下:热电偶是一种用于测量温度的传感器。在使用时需要配合使用热电偶芯片,常见的热电偶芯片常采用SPI通信。)
面试官07:AD转换的精度由什么影响?
07:基准电压,,然后把我同门跟我讲的内部划分、对应二级制、逐个去找 讲一遍。