给STM8编程,第一个任务就是搞定电压ADC了
STM8自带的ADC先不管,直接搞高精度的PWM-ADC
这是简化的PWM-ADC结构图
至于算法,我采用的是逐次逼近型ADC方法,具体举例如下:
先接通光耦260ms,把被测电压存到电容里,断开光耦,开始ADC。
MCU先PWM输出0-65536的中间值32768,延时15ms等待PWM滤波稳定,运放比较两个电压,如果32768比被测电压小,那么PWM要继续加大
PWM重新调整到32768-65536的中间值49152,等15ms,再读取比较结果,这次PWM偏高了,下次要减小
PWM再调整到32768-49152的中间值40960,等15ms,再读取比较结果.................
如此重复16次,逐渐缩小PWM范围,最终就能逼近到最后一位数,PWM就和被测电压相等了,总过程500ms
然后跳到第一步,开始新一轮ADC
理论说的挺好听,到了实际电路实验的时候,恩,遇到麻烦了