Pro M5stick jednotky lze zakoupit různé rozšiřovací moduly, kdy pro měření analogových signálů můžeme použít například tento ADC HAT. Tento modul obsahuje obvod ADS1100, který umožňuje měřit signály o velikosti 0-12 Voltů a s rozlišením 16 bitů.
Pro jeho spojení s M5stick deskou stačí propojit 4 vodiče. Připojíme GND s GND, VCC s pinem 5V a datové piny s I2C sběrnicí. U M5stick-C modulu pak stačí použít existující pinovou lištu a jednoduše propojit modul se senzorem.
Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu. Je v něm uvedena ukázka měření napětí 0-5 Voltů díky připojenému potenciometru:
// M5 stick a jednotka ADC // Analogově-digitální převodník // navody.dratek.cz // připojení potřebných knihoven #include <M5StickC.h> #include <Wire.h> #include "ADS1100.h" // vytvoření objektu ads z knihovny ADS1100 ads; // nastavení konstant pro měření #define REF_VOL 3.3 #define ADC_BASE REF_VOL/32768 void setup(void) { // zahájení komunikace s M5 stick jednotkou M5.begin(); // zahájení komunikace po sériové lince Serial.begin(115200); // vymazání obsahu displeje a nastavení oranžové barvy pro text M5.Lcd.fillScreen(BLACK); M5.Lcd.setTextColor(ORANGE); // nastavení I2C adresy pro ADS modul, výchozí je 0x48 ads.getAddr_ADS1100(ADS1100_DEFAULT_ADDRESS); // nastavení zesílení ads.setGain(GAIN_ONE); // 1x gain(default) // ads.setGain(GAIN_TWO); // 2x gain // ads.setGain(GAIN_FOUR); // 4x gain // ads.setGain(GAIN_EIGHT); // 8x gain // nastavení měřícího režimu ads.setMode(MODE_CONTIN); // Průběžné měření (default) // ads.setMode(MODE_SINGLE); // Mód jednorázového měření // nastavení počtu měření za sekundu (SPS) ads.setRate(RATE_8); // ads.setRate(RATE_16); // ads.setRate(RATE_32); // ads.setRate(RATE_128); // nastartování měření ads.setOSMode(OSMODE_SINGLE); ads.begin(); } void loop(void) { // proměnné pro kontrolu připojeného modulu byte error; // otestování komunikace s I2C modulem Wire.beginTransmission(ads.ads_i2cAddress); error = Wire.endTransmission(); // při vrácení hodnoty 0 je připojen I2C modul if (error == 0) { // proměnné pro uložení výsledků int16_t result, vol; float temp; Serial.println("Zahajeni diferencialniho mereni s ADS1100"); Serial.println(" "); // načtení výsledku měření result = ads.Measure_Differential(); Serial.print("Digitalni hodnota mezi kanaly 0 a 1: "); Serial.println(result); M5.Lcd.fillScreen(BLACK); // proměnná pro výpis dat na displej char data[20] = { 0 }; // uložení výsledku ve formě celého čísla sprintf(data, "%d", result); // přepočet načtené hodnoty na napětí temp = result * ADC_BASE * 4; vol = temp * 1000; // výpis dat na displej M5 stick M5.Lcd.drawCentreString("Raw data ", 0, 10, 2); M5.Lcd.drawCentreString(data, 0, 30, 4); sprintf(data, "%d", vol); M5.Lcd.setTextColor(GREEN); M5.Lcd.drawCentreString("Vysledek ", 0, 90, 2); M5.Lcd.drawCentreString(data, 0, 110, 4); M5.Lcd.drawCentreString("mV", 70, 110, 2); Serial.println(" "); Serial.println(" *************************** "); Serial.println(" "); } else { Serial.println("ADS1100 neni pripojen!"); Serial.println(" "); Serial.println(" ************ "); Serial.println(" "); M5.Lcd.setTextFont(4); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); M5.Lcd.drawString("Modul nenalezen.", 0, 20, 2); } // krátká pauza před novým měřením delay(300); }
Sestřih ze streamu:
Celý záznam:
Na eshopu můžete tento M5stack modul zakoupit zde:
https://dratek.cz/arduino/20761-m5stickc-esp32-pico-iot-vyvojovy-kit.html
https://dratek.cz/arduino/20943-m5stickc-adc-hat-ads1100.html