分享

STC89系列ADS1115单端与差分全解决

 新用户5228KeDY 2021-10-10

STC89系列ADS1115单端与差分全解决

STC89C51/52没有AD或DA转换的能力,后来的STC比如STC8/STC12/STC15系列都直接自带AD转换了。前面使用PCF8591这个8bit数模转换模块解决了0-5V转换与测量的问题,当时总是搞不清楚为什么使用ADS1115这个16bit数模转换模块测差分测量的问题。

后来发现其实只要判断一下是否ADC的值是否在0x8000到FFFF范围内,然后判断一下就可以直接转换了,即

if(adc>=0x8000)
  a=((float)(0xffff-adc)/(-1.0))*RATIO;
else
  a=((float)adc/1.0)*RATIO;

RATIO提前设置好了分辨率0.1877mV,转换过去就行了,直接得到以mV为单位的测量结果。

在Arduino/ESP32下的ADS1115使用起来是非常方便的,因为有现成的库可以使用,但是STC51单片机下的一些元器件库并不多——我本来以为应该有很多才对,毕竟8051自诞生以来积累下来无穷无尽的知识财富,但不知道为什么有价值的东西并不多。现在各种高端单片机倒是有不少现成的ADS1115代码,但移植起来也并不容易,鬼知道它们include了什么玩意。现在这个STC89C52下完成的ADS1115是一个STC12开发板上的东西修改过来的,测试过了,很正常的能够使用。以下使用了A0A1差分测量。代码与单端测量就不放了。

------心存DREAM喜欢琢磨实验并自娱自乐的MIRACLE------

实验教学值得学习的去处:

  1.中学物理实验教学研讨

  2.学生自主创新实验

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多