KKM: JEDNOSTAVNI H-BRIDGE

KKM: JEDNOSTAVNI H-BRIDGE-Uncategorized

Početnik si s Dasduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala tvrtke soldered na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Dasduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

Zasigurno ste se susreli već s nekim oblikom istosmjernog motora. Znate da spajanjem nožica DC motora s izvorom određenog napona rezultira okretanjem motora u jednu stranu. Isto tako ako zamijenimo nožice na motoru i spojimo suprotno izvor napajanja vidjet ćemo da se motor okreće u suprotnu stranu. To svojstvo motora je vrlo korisno, no komplicirano je stalno mijenjati ručno nožice motora. Zasigurno mora postojati neki elektronički sklop koji to može raditi za nas? Naravno da postoji. Odgovor se nalazi u H-most strujnom krugu. Pomoću njega možemo jednostavno i sigurno mijenjati smjer okretaja motora. U nastavku će se detaljnije opisati način i princip rada H-mosta.

Karakteristike:
• Maksimalna struja: 
• Maksimalni napon: 
• Upravljanje putem A i B kontrolnih nožica

KAKO RADI?

H-most (engl. H-bridge) je strujni krug koji se u teoriji sastoji od četiri sklopke spojenih s nekim trošilom (npr. DC motorom). Različitim konfiguracijama tih prekidača možemo kontrolirati protok struje u strujnom krugu. Pomoću H-most-a vrlo je jednostavno zamijeniti polaritet na trošilu. Iako opterećenje može teoretski biti sve što želite, daleko najrasprostranjenija aplikacija H-mostova je za DC i stepper motore. Najčešće se koristi za kontrolu i zamjenu smjera vrtnje DC motora. H-most se koristi i u raznim drugim aplikacijama poput DC/AC, AC/AC ili DC/DC konvertera. Strujni krug H-mosta po izgledu podsjeća na slovo „H“ odakle je i dobio svoj naziv.

Slika iznad prikazuje shematski prikaz H-mosta. Vidimo da se H-most sastoji od četiri MOSFET-a spojenih na određen način. Zbog nemogućnosti istovremene zamjene između dva moguća stanja H-mosta, u strujni krug su dodane diode (uglavnom Schottky-eve diode) kako bi se osiguralo istovremena zamjena stanja te ograničio put struje tijekom ovih kratkih perioda uklapanja bez da napon trošila bude previsok. Gornji kraj mosta povezan je s napajanjem (primjerice baterija), a donji kraj je uzemljen.
Osnovni način rada H-mosta je prilično jednostavan: ako su uključeni Q1 i Q4, lijevi vod od motora će biti spojen na napajanje, a desni vod je spojen na uzemljenje. Tok struje teče kroz motor koji pokreće motor (recimo) u smjeru naprijed, a osovina motora se počinje vrtjeti.

Ako su uključeni Q2 i Q3, obrnuto će se dogoditi, motor se napaja u obrnutom smjeru, a osovina će se početi vrtjeti u suprotnom smjeru.
U mostu se nikada ne smije zatvoriti i Q1 i Q2 (ili Q3 i Q4) istodobno. Ako se to dogodi, stvoren je direktan put između izvora napona i uzemljenja koji je jako niskog otpora što u konačnici rezultira kratkim spojem. Kratak spoj može rezultirati uništenjem H-mosta, ili neke druge komponente u strujnom krugu.

Tablica ispod prikazuje sve moguće kombinacije stanja prekidača i njihov ishod.

Potrebno je napomenuti kako ovaj modul ima samo dvije kontrolne nožice (A i B) kojima se kontrolira rad H-mosta. A nožica je spojena s 2 MOSFET-a (Q1 i Q2) koji su zapravo jedan N-kanalni i jedan P-kanalni MOSFET. Razlog tomu je eliminacija stanja u kojem su Q1 i Q2 istovremeno “uključeni”. Kada N-kanalni MOSFET provodi struju, P-kanalni MOSFET neće i time je osigurano da u bilo kojem trenutku Q1 i Q2 nisu u istom stanju (više o MOSFET-ima ovdje). B nožica je na isti način spojena s ostala 2 MOSFET-a (Q3 i Q4). Time je olakšan rad s modulom gdje ne moramo paziti na to da ćemo slučajno napraviti kratki spoj ili uništiti modul.

 

KAKO POVEZATI?

U nastavku će se prikazati spajanje H-most modula s DC motorom kojeg ćemo kontrolirati pomoću Dasduina. H-most sadrži nekoliko nožica:

VCC – Ulaz za vanjski izvor napajanja.
GND – Služi za spajanje minusa izvora napajanja.
A – Kontrolna nožica za upravljanje radom H-mosta.
B – Druga kontrolna nožica za upravljanje radom H-mosta.
OUTPUT x2 – Dvije nožice na koje se spaja trošilo (npr DC motor).

Slika ispod prikazuje primjer ispravnog spajanja H-mosta s Dasduinom. Potrebno je napomenuti kako su A i B nožice modula spojene s Dasduinom dok je na OUTPUT nožice spojen DC motor. Nije bitno koja je OUTPUT nožica spojena s kojom priključnicom DC motora jer ćemo smjer vrtnje određivati u programu.

ARDUINO KOD

Za upravljanje motorom pomoću H-most modula nije potrebno koristiti nikakvu biblioteku. Samim uključivanjem/isključivanjem A i B priključnice pomoću digitalWrite() funkcije pokrećemo motore. Motor će se vrtjeti samo kada je stanje A nožice različito od B nožice. Kada je stanje A=B to znači onda da smo samo doveli isti napon na obje priključnice motora (npr +5V ili -5V). Dakle kada je A nožica u HIGH stanju a B nožica u LOW, motor će se vrtjeti u jednu stranu. Kada je A nožica u LOW stanju a B nožica u HIGH, motor će se vrtjeti u suprotnu stranu.

//Ovaj jednostavni program pokrece motor 2 sec u jednom smjeru nakon cega se motor zaustavlja 2 sec.
//Nakon toga se mijenja smjer i okrece se 2 sec u drugu stranu i zatim  je motor zaustavljen na 2 sec.
int pinA = 4;       // definiranje pinova za kontrolu okretaja motora
int pinB = 3;
void setup() {
  pinMode(pinA, OUTPUT);      // Postavljanje pinova kao izlaze
  pinMode(pinB, OUTPUT);
}
void loop() {
  pokreniMotor (1); //motor se pokrece u jednom smjeru
  delay(2000);      //cekaj 2 sec
  pokreniMotor (0); //motor se zaustavlja
  delay(2000);      //cekaj 2 sec
  pokreniMotor (2); //motor se pokrece u suprotnom smjeru
  delay(2000);      //cekaj 2 sec
  pokreniMotor (0); //motor se zaustavlja
  delay(2000);      //cekaj 2 sec
}
void pokreniMotor (int stanje) { //funkcija pomocu koje pokrecemo motor
  switch (stanje) {
    case 0:                    //ako je stanje=0, motor se neće pokrenuti, rezim kocenja
      digitalWrite(pinA, LOW);
      digitalWrite(pinB, LOW);
      break;
    case 1:                    //ako je stanje=1, motor će se vrtjeti u jednom smjeru
      digitalWrite(pinA, HIGH);
      digitalWrite(pinB, LOW);
      break;
    case 2:                    //ako je stanje=2, motor će se vrtjeti u suprotnom smjeru
      digitalWrite(pinA, LOW);
      digitalWrite(pinB, HIGH);
      break;
      
    default:                  //nije potrebno, ako je stanje razlicito od gore navedenih vrijednosti, zbog sigurnosti ugasi motor.
      digitalWrite(pinA, LOW);
      digitalWrite(pinB, LOW);
      break;
  }
}