Hackster Inc.
Avtor: Infineon Team
Oglejte si, kako vaša koda zaživi, ko komplet PSOC™ 6 AI Kit prevzame popoln nadzor nad enosmernim motorjem s pomočjo večkratnega polovičnega mostiča!
Kaj je večje zadovoljstvo kot opazovati, kako se robotsko kolo popolnoma odziva na vašo kodo, se zavrti v levo, se ustavi in nato zapelje v desno? V tem članku uporabljamo komplet PSOC™6 AI Kit (op. ur.: ki ste ga nekateri srečniki lahko prejeli na sejmu Embedded World) kot glavni krmilnik za krmiljenje enosmernega motorja prek gonilnika motorja Multi half-bridge, s čimer ustvarimo preprost, a učinkovit prikaz krmiljenja enosmernega motorja.
Ta vsebina je samo za naročnike
Komplet PSOC™ 6 AI Kit ustvarja natančne digitalne signale, ki s preklapljanjem tranzistorjev v polovičnem mostiču krmilijo smer motorja. To ni le teorija – to lahko dejansko vidite v realnem času, saj se priloženo kolo vidno odziva na logiko: vrti v desno, ustavi se, vrti v levo.
Kaj potrebujete pri tem projektu
Za izvedbo projekta potrebujete naslednje komponente:
Infineon PSoC™ 6 AI Evaluation Kit (CY8CKIT-062S2-AI)
Infineon DC Motor Shield with TLE94112ES for Arduino
Digilent 60W PCIe 12V 5A Power Supply
Poleg tega potrebujete tudi programsko opremo:
Arduino IDE
Izvedba projekta
Za krmiljenje smeri enosmernega motorja uporabljamo H-mostič – pametno vezje, sestavljeno iz dveh polovičnih mostičev. Vsak polmost je sestavljen iz MOS tranzistorjev, zaradi česar je preklapljanje učinkovitejše in omogoča vgradnjo funkcij, kot je aktivno prosto krmiljenje. Na sliki 5 je preprosta shema, ki prikazuje, kako to deluje.
Poglejmo si pa tudi sliko 3, kjer je prikazana notranja blok shema vezja TLE94112EL.
Vsak polmost je sestavljen iz:
MOSFET na visoki strani (high-side)
MOSFET na nizki strani (low-side)
S preklapljanjem teh tranzistorjev v parih lahko nadzorujemo smer toka skozi motor:
HS1 ON + LS2 PWM – motor se vrti v eno smer
HS2 ON + LS1 PWM – motor se vrti v nasprotno smer
Vsi OFF – motor se ustavi
Če sta oba tranzistorja na visoki in nizki strani v stanju ON, to pomeni kratek stik, česar se moramo izogibati!
Ta nastavitev se uporablja v večini gonilnikov motorjev, vključno s tistim, ki smo ga uporabili v tem projektu. Modul Multi Half-Bridge (MHB) vsebuje 12 polovičnih mostičev, kar vam omogoča fleksibilnost pri krmiljenju več motorjev ali združevanju mostičev za večji izhodni tok. Komplet PSOC™ 6 AI pošilja visoke/nizke signale na vsak vhodni priključek in tako vklaplja ali izklaplja tranzistorje za krmiljenje motorja. To je preprost in učinkovit način za popolno krmiljenje smeri z uporabo digitalne logike.
Slika 4 prikazuje vezavo elementov, slika 5 prikazuje natančno električno shemo vezja.
Najprej se prepričajte, da ste prenesli program PSOC™ 6 za Arduino. Če ne, brez skrbi – upoštevajte ta nasvet: PSOC™ 6 za Arduino [1], kjer je vse pojasnjeno, nato pa se prepričajte, da ste izbrali ploščo CY8CKIT-062S2-AI in prava zaporedna vrata.
Nato namestite knjižnico Multi-Half-Bridge podjetja Infineon v upravitelju knjižnic Arduino.
Po namestitvi pojdite v Datoteka > Primeri > Multi-Half-Bridge in odprite primer Osnovni preskus za svoj posebni ščit.
Izhajali som iz tega primera, vendar smo naredili nekaj sprememb, da bi bolje ustrezal naši nastavitvi in primeru uporabe. V naslednjem razdelku vas bomo po korakih popeljali skozi posodobljeno kodo in razložili, kako vse skupaj deluje. Pripravljeni? Na pot!
include
include
include “SPI.h”
Najprej uvozimo zahtevane knjižnice za uporabo multi-half-bridge gonilnika TLE94112 in abstrakcijskega razreda motorja. SPI.h je potreben tudi za komunikacijo s TLE94112.
// Tle94112 Object on Shield 1
Tle94112Ino controller = Tle94112Ino(3);
To ustvari objekt controller za čip TLE94112 in 3 se nanaša na pin 3, ki povezuje PSOC™/Arduino s ščitom prek SPI.
voidsetup()
{
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
Zdaj omogočimo gonilnik motorja prek pina GPIO 5, ki ga nastavimo na HIGH (ON).
Serial.begin(115200);
while (!Serial) {};
controller.begin();
Nato zaženemo serijski monitor za odpravljanje napak in sporočila o stanju. Vrstica while (!Serial) čaka, dokler serijska povezava ni pripravljena (uporabno za plošče, kot je PSOC™ 6), nato pa inicializiramo gonilnik TLE94112 prek controller.begin().
motor.initConnr.TLE_HB2, controller.TLE_NOHB,
controller.TLE_NOHB);
S tem je nastavljena visoka stran gonilnika motorja z uporabo HB1 in HB2.
TLE_NOPWM pomeni, da se tu ne uporablja PWM (visoka stran bo bodisi ON bodisi OFF).
motor.initConnector(motor.LOWSIDE,
controller.TLE_PWM1,
controller.TLE_HB3,
controller.TLE_HB4,
controller.TLE_NOHB,
controller.TLE_NOHB);
S tem je nizka stran konfigurirana s PWM1 ter HB3 in HB4.
Tu se PWM uporablja za nadzor hitrosti. Nizka stran je idealna za PWM, medtem ko visoka stran podpira zgolj vklop in izklop vrtenja.
motor.begin();
Uporabimo vse konfiguracije in zaženemo vmesnik motorja.
Serial.println(“Init ready”);
}
Naše preprosto sporočilo za razhroščevanje preko serijskega terminala, ki potrjuje, da je namestitev končana.
voidloop()
{
Serial.println(“ramp transient”);
Tukaj dobimo stanje, ki se izpiše za posodobitev serijskega monitorja
motor.rampSpeed(-255, 1000); // ramp down to min
delay(1000);
Nato v 1000 ms postopoma spreminjamo hitrost motorja na polno vzvratno vožnjo (-255 = polna vzvratna vožnja).
motor.rampSpeed(255, 1000); // ramp up to max
delay(1000);
Hitrost se postopoma spremeni v polno hitrost naprej.
motor.rampSpeed(-255, 1000); // ramp down to min
delay(1000);
motor.rampSpeed(0, 1000); // ramp up to 0
delay(1000);
In ponovno preide v vzvratno vožnjo, nato pa se ponovno ustavi.
Serial.println(“stop and coast”);
motor.stop(255); // stop and hold with max braking
delay(1000);
motor.coast(); // disable outputs, let motor spin freely
delay(1000);
}
stop(255) uporabi zavorno silo (zadrži motor z največjim tokom).
coast() popolnoma sprosti motor – ne drži, ne zavira.
Zaključek
Zdaj imate delujočo nastavitev, v kateri PSOC™ 6 in Multi Half-Bridge Driver skupaj upravljata motor s kodo – in vaše kolo prikazuje vsak premik v realnem času.
Če razmišljate o naslednjih korakih: poskusite dodati drugi motor, senzor ali celo eksperimentirati s PWM frekvenco. In kar je najpomembneje… zabavajte se s tem!
Viri:
1: https://www.hackster.io/Infineon_Team/psoc-6-meets-arduino-the-ultimate-maker-combo-9fc127
Povzeto po:
https://www.hackster.io/Infineon_Team/psoc-6-arduino-with-multi-half-bridge-4e1872