请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【原创教程】STM8s103教程-Lesson7:STM8S ADC 介绍

[复制链接]
littlekong 发布时间:2015-9-6 11:44
本帖最后由 littlekong 于 2015-9-6 11:44 编辑 ) Y3 M+ h1 `1 N

8 a9 l3 W: f/ X: }% i  D% N& [, A为了阅读效果更好(其实是我比较懒啦,难以一一将word文档的图片粘过来),后续的教程我会列出主要内容,然后提供pdf附件:& J( w8 l! O0 ^8 M" N7 @
第七课:STM8S ADC 介绍
: t4 t% ?7 X( T6 f& o5 e0 S  t$ l4 {

! e: j: e0 s7 C: J1.   基本介绍6 s/ }( d$ E# r( G* I
ADC(Analog-to-digital converter) 指模/数转换器或者模拟/数字转换器,是一种将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号,例如电流采样,通常就是流过的电流在感应器上产生一个电压,然后根据ADC采集这个电压信号,通过感应比例反推此时的电流大小。                           % G  f4 x3 r3 S- n
关于ADC的更多信息,大家可以查阅Reference_Resource的Datasheet,相信经过前面几期课程,大家已经知道如何在文档上提取我们所需要的信息了。

$ w4 g1 g6 ?# d' D( f# [* |! ~
2. ADC计算及其精度改善/ a7 h- a6 M, G& s. l/ g5 Y
2.1  ADC计算
0 K9 s" ^6 R1 a& W0 ~9 t  A, x' j0 C) {
之前没有接触过ADC的话,可能不知道该如何根据采样回来的数字值转为模拟值,这里简单介绍下,一句话概括就是,我们认为数字值和模式值是线性对应的:
. }" B6 `" T& k. ]1 C

! G+ k/ U5 }& ?9 p% w3 ~
VDD / (2n - 1)  =  VAnalog / VDigital

$ _6 _5 ?1 D. K2 i. F1 o
VDD为ADC的数字供电,可以认为是IO口可采样的最大电压;! f- q4 b2 c9 y
VSS 为ADC的数字地,可以认为是IO口可采样的最小电压;
' W( C& [0 u* f9 B# a
n为ADC的位数。. H. Y& b& X7 K; z+ U
. h3 r( G# b' ]/ m: I/ f1 T
所以,我们通过采样得到的是数字采样值VDigital,那么根据比例关系可以得到对应的模拟电压值为:

! Q& r) A* [9 x: y4 e0 v# J
VAnalog  =  VDigital* (VDD / (2n - 1))
/ O- k, I5 Y1 F2 K8 x: a

4 a% ~% y$ O# V9 a
2.2  精度改善

. H: A* C5 E4 f' A; t, I7 A) i
对于ADC的误差,主要有两种:一为偏移误差,二为比例误差。我画了一个图,大家应该会更好理解:蓝色折线表示理想情况下模拟值和采样值的关系,橙色为同时存在两种误差时候的关系。假设理想状态下,折线的偏移为0,比例为1,那么可以看到由于两种偏差的存在,橙色折线与理想折线偏差就不是一点点了。# i4 \  ?$ y8 F# Y/ v
误差.jpg
5 ^( i7 n& m1 V/ A  R误差的引入源头有很多,例如基准电压(即前面公式提到的VDDVCC),模块本身的精度偏差,元器件受干扰(温度,磁场等)。为了改善误差,提高精度,在下面的课程中,我们同时采用了两种方法:: h& }8 N9 u/ J$ H7 v% e
- 多次采样求平均值
- 加入偏移误差和比例误差的校准
, q* j3 H5 ]% g3 _# P. v" J, ^
3. ADC的编程使用! t9 l/ u0 n2 w8 R, p8 q+ t/ O
本节课的例程将实现以下功能:* O" D* B$ U8 R5 Y  y3 `3 `. f
! z- S. d2 C% |7 Z
  • 上电读取EEPROM信息,并通过串口打印当前系统的信息。如果是首次上电,则将默认的信息写入EEPROM;
  • GPIOB_Pin5控制LED亮灭,频率为1000ms,即每次亮500ms,灭500ms;
  • 利用其中一个ADC通道读取由光敏电阻的分压,以此推算出外界大致的亮度
  • 允许用户通过串口调试工具更改该通道ADC的偏移误差和比例误差校准值,并实时保存在EEPROM。
  • 串口通讯参数为:9600bps,数据长度为8bit,1 Stopbit,无奇偶校验。
    " Y/ w' L( S; _

! H  u; m6 J  Q1 m" v! P
有兴趣的可以前往https://pan.baidu.com/s/1eQJEKOq 下载本次教程的文档和源码,文件夹为Lesson7。QQ交流群:478737279
07_Lesson7_ADC.pdf (643.9 KB, 下载次数: 203)
收藏 评论9 发布时间:2015-9-6 11:44

举报

9个回答
littlekong 回答时间:2015-9-6 14:30:12
因为网页的关系,上面的一些公式看了可能会困惑,大家直接看附件的pdf
拉肚肚 回答时间:2015-9-6 14:57:05
谢谢分享
netlhx 回答时间:2015-9-7 07:24:53
写得很好,赞一个
stopower 回答时间:2015-9-9 08:53:47
谢谢分享,赞一个!
b10000053 回答时间:2018-3-12 09:06:09
非常感謝樓主的分享
zhongfg 回答时间:2018-3-16 01:51:18
感謝樓主的分享,辛苦了。
hclin-146115 回答时间:2018-3-23 04:48:43
very good !!!
jxchen 回答时间:2019-3-2 18:08:37
" v1 c, K; ~; w2 C2 h1 i7 N- f( L
谢谢分享
Frankie.C 回答时间:2021-8-3 13:40:02
感谢楼主分享,正在学习中
7 p+ N- ~( z" V+ W
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版