zoukankan      html  css  js  c++  java
  • 使用STM8SF103 ADC采样电压(转)

    源:使用STM8SF103 ADC采样电压

    硬件环境: STM8SF103 TSSOP20封装

    因为项目需要用到AD采样电池电压,于是便开始了使用STM8S ADC进行采样,也就有了下文。

    手册上对STM8S ADC的管脚描述如下:

    STM8SF103这款芯片是TSSOP 20管脚封装,如下:

    STM8SF103这款芯片能用的是5个AD采样通道,分别是AIN2~AIN6。其实是还有一个通道AIN7,但手册并没有对其描述。

    这里还有一个很奇怪的地方,从ST资料中找到一个与上面的表数据不同的地方,如:

    很明显的说STM8S103是存在这个AIN7通道的,再加上另外5个通道,应该是6个通道才对。

    要做AD采样,首先要解决的就是AD的参考电压,之前查看手册上并没有描述AIN7通道,有的仅仅是几个外部采样通道。AIN7通道是内部通道,用于提供一个恒定的电压参考值。

    从别的资料找到下面这句话,很明显是存在这么一个通道的,后面测试也证明这个是正确的。

    第一步已经解决了,找到了一个参考电压,但这个电压到底是多少,手册也没有找到痕迹。只能是根据公式自己算出来。

    Vin = (ADC * Vref) / 1024

    Vref = Vin * 1024 / ADC (根据Vin这个恒定的值算出参考电压,这里的参考电压就是VCC且是变化的。实际上真正的参考电压是由AIN7提供的1.22V)

    使用VCC做为参考电压,VCC很明显可以使用万用表先测出来,1024是因为STM8S这款的AD是10位精度。

    我测试的VCC为3.19V,AD值基本上是出于稳定状态392左右,392 * 3.19 / 1024 = 1.221171875 自然就算出了参考电压值,这里取1.22。为了证明这个值是正确的,

    使用电池供电,VCC为2.93V。分别采样8次,计算每一次的VCC电压。

    n                            AD值                                  VCC

    1                           432                                      2.89V

    2                           429                                      2.91V

    3                           429                                      2.91V

    4                           429                                      2.91V

    5                           430                                      2.90V

    6                           430                                      2.90V

    7                           430                                      2.90V

    8                           431                                      2.89V

    另外又使用3.19V进行测试,采样值也是很接近的,平均3.20左右。

    还有另外一款STM8S903也有该采样通道AIN7,所有的AIN通道有8个,7个内部加上1个外部通道。如果没有能够提供参考电压,则必须使用外部器件供一个参考电压给AINx。可选用TL430。

    由此可以看出: AIN7通道一定是存在于STM8S103的,并且参考电压为1.22V。

    后记:

    经本人测试确实如以上网友所说。

    参考:使用STM8SF103 ADC采样电压

    我用STM32 AD大半年也没有觉得哪里不好。只有设置和程序不对的问题,AD多通道,不同通道之间不需要延时等待。最多做了8通道加一温度,数值都是对的。但是AD采样的值不是固定的,有个上下波动。这个和参考电压有关。加软件滤波有助于改善波动。(具体版上有ADC值校准的帖子,可以搜下)

    其次,ADC采样多通道必须要用DMA传输,DMA传输要注意设置buffersize以及起始地址。AD多通道之间要排好顺序。再则就是先使能DMA,再使能ADC转换。顺序不要错了,否则有的你玩的。

     
     
    http://blog.csdn.net/liuyu60305002/article/details/7071245
     
    http://bbs.21ic.com/icview-107700-1-1.html
     
    http://bbs.21ic.com/icview-812992-1-1.html
    数字电源设计全过程(图和代码)
    http://bbs.21dianyuan.com/188786.html#revert_content_729541
     
     
     

    因为没有外部基准电压,而采用内部基准往往就是 VDDA的电压,面对大批量产品,往往此电压差异较大,如何消除此影响呢,

    1、可以采用一路AD 连接一个类似 TL431的外部参考标准电压来获得 VDDA 的电压 从而 消除VDDA的不定值对要测AD的影响。

    2、VDDA上连接一个 与电源电压相差不大的高精准电源,比如可以用TL431组成一个3.3v基准,但考虑TL431基准2.5,稳压到3.3需要加电阻匹配,电阻的误差也要考虑,所以此方案没采用。

  • 相关阅读:
    导入maven工程遇见的问题【问题】
    Java 反射机制
    SSH 使用JUnit测试
    Struts2 Convention插件的使用(4)使用@Action注解返回json数据
    Struts2 Convention插件的使用(3)方法前的@Action注解
    Struts2 Convention插件的使用(2)return视图以及jsp的关系
    Struts2 Convention插件的使用(1)
    Struts2 直接返回字符串(可用于json)
    PowerDesigner 将CDM、PDM导出为图片
    Servlet3.0-使用注解定义Servlet
  • 原文地址:https://www.cnblogs.com/LittleTiger/p/4518210.html
Copyright © 2011-2022 走看看