Tento modul, který lze také najít pod jeho výrobním názvem HX711, obsahuje AD převodník 24-bit s 2 kanály. Konkrétně to je kanál A s volitelným zesílením 128 a 64 a jako druhý kanál B s pevným zesílením 32. Nejčastější využití tohoto modulu s AD převodníkem je pro elektronické váhy, senzory tlaku a podobně. Používá se primárně v můstkovém zapojení (viz schéma zapojení níže), kdy využíváme malých rozdílů v odporech jednotlivých čtyřech pevných a proměnných rezistorů. Já jsem pro testování tedy zvolil tři pevné 100k ohmové rezistory a jeden 100k ohmový potenciometr. Jak je vidět ze zapojení, do první dvojice protilehlých uzlů tedy přivedeme napětí z výstupů modulu E+ a E- a do zbylé protilehlé dvojice připojíme vstupy A+ a A-, případně B+ a B-. Když dosáhneme vyváženého můstku, tedy stejné hodnoty všech čtyřech odporů, dostaneme na výstupu A+ a A- nulového napětí. Pokud se ale náš proměnný odpor začne svou hodnotou lišit, rozváží nám můstek a my můžeme měřit rozdíl na našem připojeném vstupu modulu HX711.
Pro připojení 24b AD převodníku potřebujeme celkem 8 propojovacích vodičů. Na pravé straně modulu připojíme GND na zem, DT na pin 3, SCK na pin 2 a VCC na +5V. Levou stranu modulu pak zapojíme s naším odporovým můstkem dle schématu níže. Zvolené piny DT a SCK můžete samozřejmě vyměnit za jiné volné, je však důležité tuto volbu sesouhlasit s nahrávaným programem.
Níže uvedený ukázkový kód obsahuje na svém začátku nastavení pinů pro připojení modulu a dále definování různých nastavení kanálů a jejich zesílení. Po tomto následuje podprogram setup() s nastavením směru připojených pinů, rychlosti sériové linky a první probuzení modulu se spuštěním prvního měření. V nekonečné smyčce pak vždy vypíšeme po sériové lince výsledek, který získáme zavoláním podprogramu spusteniMereni(kanál se zesílením) a počkáme 0,5 sekundy pro přehledné čtení. Ve zmíněném podprogramu spusteniMereni se pak vždy jako první načte 24-bit výsledek, nastaví se pro další měření zvolený měřící mód a provede konverze výsledku s přepočtem na mikrovolty.
// Arduino AD 24-bit převodník s 2 kanály // piny pro připojení SCK a DT z modulu int pSCK = 2; int pDT = 3; // definování různých nastavení kanálů a jejich zesílení #define kanal_A_zesil_128 1 #define kanal_B_zesil_32 2 #define kanal_A_zesil_64 3 void setup() { // nastavení pinů modulu jako výstup a vstup pinMode(pSCK, OUTPUT); pinMode(pDT, INPUT); // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // probuzení modulu z power-down módu digitalWrite(pSCK, LOW); // spuštění prvního měření pro nastavení měřícího kanálu spusteniMereni(kanal_A_zesil_64); } void loop() { // výpis měření a jeho výsledku Serial.print("Vysledek mereni: "); Serial.print(spusteniMereni(kanal_A_zesil_64)); Serial.println(" uV"); // pauza 0.5 s pro přehledné čtení delay(500); } // vytvoření funkce pro měření z nastaveného kanálu long spusteniMereni(byte mericiMod) { byte index; long vysledekMereni = 0L; // načtení 24-bit dat z modulu while(digitalRead(pDT)); for (index = 0; index < 24; index++) { digitalWrite(pSCK, HIGH); vysledekMereni = (vysledekMereni << 1) | digitalRead(pDT); digitalWrite(pSCK, LOW); } // nastavení měřícího módu for (index = 0; index < mericiMod; index++) { digitalWrite(pSCK, HIGH); digitalWrite(pSCK, LOW); } // konverze z 24-bit dvojdoplňkového čísla // na 32-bit znaménkové číslo if (vysledekMereni >= 0x800000) vysledekMereni = vysledekMereni | 0xFF000000L; // přepočet výsledku na mikrovolty podle zvoleného // kanálu a zesílení switch(mericiMod) { case 1: vysledekMereni = vysledekMereni/128/2; break; case 2: vysledekMereni = vysledekMereni/32/2; break; case 3: vysledekMereni = vysledekMereni/64/2; break; } return vysledekMereni ; }
Jako výsledek dostaneme například tento výpis:
Vysledek mereni: -26087 uV Vysledek mereni: -26188 uV Vysledek mereni: -26138 uV Vysledek mereni: -26182 uV Vysledek mereni: -36746 uV Vysledek mereni: -37475 uV
Jak jsem zmínil v úvodu návodu, tento 24-bit AD převodník se využívá hlavně pro speciální účely při měření váhy či tlaku, většinou v kombinaci s připojeným tenzorem. Kanál A měří při zesílení 128 vstupní napětí ±20mV a při zesílení 64 vstupní napětí ±40mV. Při využití kanálu B a jeho pevného zesílení 32 tedy můžeme měřit vstupní napětí v rozsahu ±80mV.
Seznam použitých komponent:
http://dratek.cz/arduino/998-arduino-ad-prevodnik-24-bit-2-kanaly-hx711-1427807780.html
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino/844-arduino-nepajive-pole.html
http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html