wwwajjlcn作者
11年8个月前IP:广东
762611
54楼
给STM8编程,第一个任务就是搞定电压ADC了


STM8自带的ADC先不管,直接搞高精度的PWM-ADC


这是简化的PWM-ADC结构图
PWM-ADC结构.png






至于算法,我采用的是逐次逼近型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






理论说的挺好听,到了实际电路实验的时候,恩,遇到麻烦了
评论
文号 / 762611

十步芳草
名片发私信
学术分 0
总主题 4 帖总回复 65 楼拥有证书:进士 笔友
注册于 2013/08/16 12:11:52最后登录 2017/12/29 14:00:41
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的