AD převodník 24-bit s 2 kanály

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

Další podobné články