分享

microBlocks下ESP32&ADS1115差分电压测量

 新用户5228KeDY 2022-02-03

现在microBlocks正式可以进入物理实验的领域了:ADS1115这个测量电压的模块终于搞定了。

ADS1115的亮点,提供±256mV±6.144V量程,两路差分或四路单端输入测量。再就是16位转换,实际由于16位占用了符号位,只有15位,这样215次方,把量程解析成32768等分。解决了ADS1115的使用,一定意义上来说,电流的测量也解决了。

                           

这里测的是A0A1输入差分电压,把ADDR拉低到GND,地址就是0x48。然后指针定位到寄存器0x01,配置高八位和低八位两个 byte

1412位,配置MUX,指定A0-A3四个引脚的测量方式。我们要测量A0A1间的电压,配置为000。第119位,配置PGAAmp量程,这里配置为001,即4.096伏。其它配置可查找手册,000量程±6.144V100量程±0.512V101±0.256V0102.048V110±0.256V011±1.024V111±0.256V等都在手册上。

8位是工作模式,连续转换0,单次测量1。它俩的区别好像就是省电不省电,连续转换是一直在那儿测着,单次测量是转换一次立即进入休眠等着下一次转换。

这样配置下来,高八位用二进制表示为0b00000010,十六进制0x02

低八位。第75位,每秒采样率,默认100,即128SPS,最高111860SPS。我们就采用默认的100。第4位至第0位,是Comparator比较器的各种工作方式,对普通的测量感觉不到影响,找一段51STM单片机的文章里的配置放上就行了。

这样配置下来,低八位用二进制表示为0b10000101,十六进制0x85

microBlocks里面去配置。返回1,表示操作成功了。microBlocks里面没有try…catch…块,发生错误,和错误是什么,我们捕获不到,返回值就是意思一下。

现在读测量的数据(手册第14)。因为是配置为差分,读回来的最大值是215次方,65536(-1),中间值是32768,所以正负电压各分一半,凡小于32768的原样输出,大于32768的,就减去65535得到负电压。

测量一下试试。成功!

microBlocks支持哪些板子呢?以下是从它的wiki里复制来的,完美和部分完美的支持了28种,不只ESP32/8266,其中也出现了各种“派”的名字。就像人们误以为Arduino IDE是一种单片机开发工具,实质它是IDE伪装的企图一统天下的生态,Arduino IDE不只能开发ArduinoESP32等等东西,什么我们不懂的ARMSTM板子,甚至51一类的,以及神马Micro:Bit各类教育用的板子都能开发的。大概microBlocks也是这么想的吧。这样就为我们使用它们做活动提供了极大方便,因为各种操作都变成标准化了。“整齐划一”,有些部门就喜欢这一点。

BBC micro:bit、Calliope mini、AdaFruit Circuit Playground Express 、AdaFruit Circuit Playground Bluefruit、AdaFruit Clue、Citilab's ED1 、M5Stack Grey、M5Stick-C、M5Stick-C Plus、M5Atom Matrix、NodeMCU (hardware details)、ESP32、AdaFruit Gemma M0、AdaFruit ItsyBitsy M0、AdaFruit Trinket M0、Adafruit Metro M0 Express、Arduino MKR Zero、Arduino Zero、Teensy 3.2、Teensy 4.0、Teensy 4.0、Sino:bit (nRF51822)、Raspberry Pi Zero W、Arduino M0、Arduino M0 Pro、Arduino Primo、IoT Bus (ESP32)。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多