- Nødvendige materialer
- Forståelse af BLDC-motorer
- Hvorfor bruger Drones og andre multikoptere BLDC-motorer?
- Hvorfor har vi brug for et ESC, og hvad er dets funktion?
- Nogle almindelige udtryk med BLDC og ESC'er:
- Arduino BLDC Motor Control Circuit Diagram
- Program til BLDC Speed Control ved hjælp af Arduino
- Arduino BLDC Motor Control
At bygge ting og få dem til at arbejde, som vi vil, har altid været sjovt. Mens det blev aftalt, ville det at bygge ting, der kunne flyve, trodsigt pumpe lidt mere angst blandt hobbyisterne og hardware-tinkererne. Ja! Jeg taler om svævefly, helikoptere, fly og hovedsagelig multikoptere. I dag er det blevet meget let at bygge en på egen hånd på grund af den community-support, der er tilgængelig online. En almindelig ting med alle de ting, der flyver, er at de bruger en BLDC-motor, så hvad er denne BLDC-motor? Hvorfor har vi brug for det for at flyve ting? Hvad er så specielt ved det? Hvordan køber man den rigtige motor og interface den med din controller? Hvad er et ESC, og hvorfor bruger vi det? Hvis du har spørgsmål som disse, er denne tutorial din one-stop-løsning.
Så dybest set i denne tutorial styrer vi børsteløs motor med Arduino. Her bruges A2212 / 13T sensorfri BLDC outrunner-motor med en 20A elektronisk hastighedsregulator (ESC). Denne motor bruges ofte til at bygge droner.
Nødvendige materialer
- A2212 / 13T BLDC-motor
- ESC (20A)
- Strømkilde (12V 20A)
- Arduino
- Potentiometer
Forståelse af BLDC-motorer
BLDC Motor står for børsteløs DC-motor, den bruges ofte i loftsventilatorer og elektriske køretøjer på grund af dens problemfri drift. Brug af BLDC-motorer i elektriske køretøjer er tidligere forklaret detaljeret. I modsætning til andre motorer har BLDC-motorerne tre ledninger, der kommer ud af dem, og hver ledning danner sin egen fase, hvilket giver os en trefaset motor. Vent, hvad!!??
Ja, selvom BLDC-motorer betragtes som jævnstrømsmotorer, fungerer de ved hjælp af pulserende bølger. Den elektroniske hastighedsregulator (ESC) konverterer jævnstrømsspændingen fra batteriet til impulser og leverer den til motorens 3 ledninger. På et givet tidspunkt vil kun to faser af motoren blive drevet, så strømmen kommer ind gennem en fase og går gennem den anden. Under denne proces aktiveres spolen inde i motoren, og derfor tilpasser magneterne på rotoren sig til den spændingsførende spole. Derefter får de næste to ledninger strøm fra ESC, denne proces fortsætter med at få motoren til at rotere. Motorens hastighed afhænger af hvor hurtigt spolen får strøm, og motorens retning afhænger af i hvilken rækkefølge spolerne får strøm. Vi lærer mere om ESC senere i denne artikel.
Der er mange typer BLDC-motorer tilgængelige, lad os se på de mest almindelige klassifikationer.
In-runner og Out-Runner BLDC motor: I runner BLDC Motors fungerer som enhver anden motor. Det er akslen inde i motoren, mens huset forbliver fast. Mensde udvendige BLDC-motorer er lige det modsatte, roterer motorens ydre kappe sammen med akslen, mens spolen indeni forbliver fast. Out runner-motorer er meget fordelagtige i elektriske cykler, da selve det ydre hus (det, der roterer) er lavet til en fælg til dækkene, og derfor undgås en koblingsmekanisme. Også de udgående motorer har tendens til at give mere drejningsmoment end i løbertyper, hvorfor det bliver et ideelt valg i EV og Drones. Den, vi bruger her, er også en udløberstype.
Bemærk: Der er en anden type motor kaldet de kerneløse BLDC-motorer, som også bruges til lommedroner, de har et andet funktionsprincip, men lad os nu springe det over for denne tutorials skyld.
Sensor og sensorløs BLDC-motor: For at en BLDC-motor kan rotere uden noget ryk, kræves feedback. Det er ESC, der skal kende magnetenes placering og pol i rotoren for at aktivere statoren i henhold til. Disse oplysninger kan erhverves på to måder; den ene er ved at placere hall-sensoren inde i motoren. Hall-sensoren registrerer magneten og sender informationen til ESC. Denne type motor kaldes en Sensord BLDC-motor og bruges i elektriske køretøjer. Den anden metode er ved at bruge den bageste EMF, der genereres af spolerne, når magneterne krydser dem, dette krævede ikke yderligere hardware eller ledninger, selve fasetråden bruges som feedback til at kontrollere om EMF tilbage. Denne metode bruges i vores motor og er almindelig for droner og andre flyvende projekter.
Hvorfor bruger Drones og andre multikoptere BLDC-motorer?
Der er mange typer seje droner derude fra Quad copter til helikoptere og svævefly, alt har en hardware til fælles. Det er BLDC-motorerne, men hvorfor? Hvorfor bruger de en BLDC-motor, der er lidt dyr i forhold til DC-motorer?
Der er en hel del gyldige grunde til dette, en hovedårsag er, at drejningsmomentet, der leveres af disse motorer, er meget højt, hvilket er meget vigtigt at få / løs kraft hurtigt for at starte eller lande ned en drone. Disse motorer er også tilgængelige som udløbere, hvilket igen øger motorernes fremdrift. En anden grund til at vælge BLDC motor er dens glatte vibrations mindre drift, dette er meget ideelt til vores drone stabilt i luften.
Den effekt i forhold til vægten af et BLDC motor er meget høj. Dette er meget vigtigt, fordi motorerne, der anvendes på droner, skal have høj effekt (høj hastighed og højt drejningsmoment), men også skal have mindre vægt. En jævnstrømsmotor, der kan give samme drejningsmoment og hastighed som en BLDC-motor, vil være dobbelt så tung som BLDC-motoren.
Hvorfor har vi brug for et ESC, og hvad er dets funktion?
Som vi ved, kræver enhver BLDC-motor en eller anden form for controller for at konvertere DC-spændingen fra batteriet til impulser for at drive motorens faseledninger. Denne controller kaldes en ESC, der står for Electronic Speed Controller. Regulatorens hovedansvar er at aktivere faseledningerne på BLDC-motorerne i en rækkefølge, så motoren roterer. Dette gøres ved at registrere den bageste EMF fra hver ledning og aktivere spolen nøjagtigt når magneten krydser spolen. Så der er meget hardware-glans inden i ESC, som ikke er omfattet af denne tutorial. Men for at nævne nogle få har den hastighedsregulator og et batteri eliminator kredsløb.
PWM-baseret hastighedskontrol: ESC kan styre hastigheden på BLDC-motoren ved at læse PWM-signalet, der leveres på den orange ledning. Det fungerer meget lig servomotorer, det medfølgende PWM-signal skal have en periode på 20 ms, og driftscyklussen kan varieres for at variere BLDC-motorens hastighed. Da den samme logik også gælder for servomotorer til at styre positionen, kan vi bruge det samme servobibliotek i vores Arduino-program. Lær at bruge Servo med Arduino her.
Battery Eliminator Circuit (BEC): Næsten alle ESC'er leveres med et batteri eliminator kredsløb. Som navnet antyder, eliminerer dette kredsløb behovet for separat batteri til mikrocontroller, i dette tilfælde har vi ikke brug for en separat strømforsyning til at drive vores Arduino; ESC i sig selv vil give en reguleret + 5V, som kan bruges strøm til vores Arduino. Der er mange typer kredsløb, der regulerer denne spænding normalt, det vil være lineær regulering på de billige ESC'er, men du kan også finde dem med koblingskredsløb.
Firmware: Hver ESC har et firmwareprogram skrevet af producenterne. Denne firmware bestemmer i høj grad, hvordan din ESC reagerer; nogle af de populære firmware er traditionelle, Simon-K og BL-Heli. Denne firmware er også brugerprogrammerbar, men vi kommer ikke ind på meget af det i denne vejledning.
Nogle almindelige udtryk med BLDC og ESC'er:
Hvis du lige er begyndt at arbejde med BLDC-motorer, er du sandsynligvis stødt på begreberne som bremsning, blød start, motorretning, lav spænding, svartid og avancering. Lad os se på, hvad disse udtryk betyder.
Bremsning: Bremsning er din BLDC-motors evne til at stoppe med at rotere, så snart gashåndtaget er fjernet. Denne evne er meget vigtig for multi-copters, da de oftere skal ændre deres RPM for at manøvrere i luften.
Soft Start: Soft start er en vigtig funktion at overveje, når din BLDC-motor er forbundet med gear. Når en motor har soft start aktiveret, vil den ikke begynde at rotere meget hurtigt pludselig, den vil altid gradvist øge hastigheden, uanset hvor hurtigt gashåndtaget blev givet. Dette vil hjælpe os med at reducere slitage på gear, der er fastgjort til motorerne (hvis nogen).
Motorretning: Motorretningen i BLDC-motorer ændres normalt ikke under drift. Men under samling skal brugeren muligvis ændre retningen, i hvilken motoren roterer. Den nemmeste måde at ændre motorens retning på er ved blot at skifte motorens to ledninger.
Lavspændingsstop: Når vi er kalibreret, har vi altid brug for, at vores BLDC-motorer kører med den samme hastighed for en bestemt gasreguleringsværdi. Men dette er svært at opnå, fordi motorerne har tendens til at reducere deres hastighed til den samme gasreguleringsværdi, når batterispændingen falder. For at undgå dette programmerer vi normalt ESC til at stoppe med at arbejde, når batterispændingen har nået under tærskelværdien, denne funktion kaldes Lavspændingsstop og er nyttig i droner.
Reaktionstid: Motorens evne til hurtigt at ændre sin hastighed baseret på gashåndtaget kaldes responstid. Jo mindre svartiden er, jo bedre er kontrollen.
Advance: Advance er et problem eller mere som en fejl med BLDC-motorer. Alle BLDC-motorer har lidt fremskridt i sig. Det er, når statorspolerne får energi, tiltrækkes rotoren mod den på grund af den permanente magnet, der er til stede på dem. Efter at være tiltrukket har rotoren en tendens til at bevæge sig lidt mere fremad i den samme retning, før spolen afbrydes, og derefter aktiveres den næste spole. Denne bevægelse kaldes ”Advance”, og den vil skabe problemer som rystelser, opvarmning, støj osv. Så dette er noget, som en god ESC bør undgå alene.
Okay, nok teori lad os nu komme i gang med hardware ved at forbinde motoren med Arduino.
Arduino BLDC Motor Control Circuit Diagram
Nedenfor er kredsløbsdiagrammet til kontrol af børsteløs motor med Arduino:
Forbindelsen til grænseflade mellem BLDC-motor og Arduino er ret ligetil. ESC har brug for en strømkilde på mindst 12V og 5A. I denne vejledning har jeg brugt min RPS som strømkilde, men du kan også bruge et Li-Po batteri til at drive ESC. ESF's trefasetråde skal tilsluttes motorernes trefasetråde, der er ingen ordre til at forbinde disse ledninger, du kan forbinde dem i en hvilken som helst rækkefølge.
Advarsel: Nogle ESC har ikke stik på, i så fald skal du sikre dig, at din forbindelse er solid, og beskyt de udsatte ledninger ved hjælp af isoleringstape. Da der vil være høj strøm, der passerer gennem faserne, vil enhver kortslutning føre til permanent skade på ESC og motor.
Den BEC (batterieliminator kredsløb) i ESC selv vil regulere et 5 V, som kan anvendes til tilkobling Arduino Board. Endelig for at indstille hastigheden på BLDC-motoren bruger vi også et potentiometer tilsluttet A0-stift på Arduino
Program til BLDC Speed Control ved hjælp af Arduino
Vi er nødt til at oprette et PWM-signal med varierende arbejdscyklus fra 0% til 100% med en frekvens på 50Hz. Arbejdscyklussen skal styres ved hjælp af et potentiometer, så vi kan kontrollere motorens hastighed. Koden til at gøre dette svarer til styring af servomotorer, da de også kræver et PWM-signal med 50Hz frekvens; derfor bruger vi det samme servobibliotek fra Arduino. Den komplette kode kan findes nederst på denne side længere nedenfor forklarer jeg koden i små uddrag. Og hvis du er ny på Arduino eller PWM, skal du først gennemgå at bruge PWM med Arduino og kontrollere servo ved hjælp af Arduino.
PWM-signalet kan kun genereres på de ben, der understøtter PWM af hardware, disse ben nævnes normalt med et ~ symbol. På Arduino UNO kan pin 9 generere PWM-signal, så vi forbinder ESC-signalstiftet (orange ledning) til pin 9, og vi nævner også den samme koden ved hjælp af følgende linje
ESC.vedhæft (9);
Vi er nødt til at generere PWM-signal med varierende arbejdscyklus fra 0% til 100%. For 0% driftscyklus afgiver POT 0V (0) og for 100% driftscyklus afgiver POT 5V (1023). Her er potten tilsluttet pin A0, så vi skal læse den analoge spænding fra POT ved at bruge den analoge læse-funktion som vist nedenfor
int gashåndtag = analogRead (A0);
Derefter skal vi konvertere værdien fra 0 til 1023 til 0 til 180, fordi værdien 0 genererer 0% PWM, og værdien 180 genererer 100% arbejdscyklus. Eventuelle værdier over 180 giver ingen mening. Så vi kortlægger værdien til 0-180 ved hjælp af kortfunktionen som vist nedenfor.
gashåndtag = kort (gashåndtag, 0, 1023, 0, 180);
Endelig er vi nødt til at sende denne værdi til servofunktionen, så den kan generere PWM-signalet på den pin. Da vi har udpeget servoobjekt som ESC, vil koden se sådan ud nedenfor, hvor den variable gas indeholder værdien fra 0-180 til at styre PWM-signalets driftscyklus
ESC.write (gashåndtag);
Arduino BLDC Motor Control
Foretag forbindelserne i henhold til kredsløbsdiagrammet, og upload koden til Arduino, og tænd for ESC. Sørg for, at du har monteret BLDC-motoren på noget, da motoren hopper rundt, når den roterer. Når opsætningen er tændt, laver din ESC en velkomsttone og fortsætter med at bippe, indtil gashåndtaget er inden for tærskelgrænserne, simpel forøgelse af POT fra 0V gradvist, og biptonen stopper, det betyder, at vi nu leverer PWM signal over den nedre tærskelværdi, og når du øger yderligere, begynder din motor at rotere langsomt. Jo mere spænding du giver, jo mere hastighed vil motoren tage op, til sidst når spændingen når over den øvre tærskelgrænse, stopper motoren. Du kan derefter gentage processen.
Den komplette bearbejdning af denne Arduino BLDC-controller kan også findes på videolinket nedenfor. Hvis du havde haft problemer med at få dette til at fungere, er du velkommen til at bruge kommentarsektionen eller bruge foraerne til mere teknisk hjælp.