- Nødvendig materiale
- Forstå BLDC Motors
- Hvorfor bruker Drones og andre multikoptere BLDC-motorer?
- Hvorfor trenger vi et ESC, og hva er dets funksjon?
- Noen vanlige begreper med BLDC og ESC:
- Arduino BLDC Motor Control Circuit Diagram
- Program for BLDC hastighetskontroll ved hjelp av Arduino
- Arduino BLDC Motor Control
Å bygge ting og få dem til å fungere, slik vi vil, har alltid vært ren moro. Mens det ble avtalt, ville det å bygge ting som kunne fly, trassig pumpe litt mer angst blant hobbyister og maskinvare. Ja! Jeg snakker om seilfly, helikoptre, fly og hovedsakelig multikoptere. I dag har det blitt veldig enkelt å bygge en på grunn av fellestøtten tilgjengelig online. En vanlig ting med alle ting som flyr er at de bruker en BLDC-motor, så hva er denne BLDC-motoren? Hvorfor trenger vi det for å fly ting? Hva er så spesielt med det? Hvordan kjøpe riktig motor og grensesnitt den med kontrolleren din? Hva er et ESC, og hvorfor bruker vi det? Hvis du har spørsmål som disse, er denne opplæringen din one-stop-løsning.
Så i utgangspunktet i denne opplæringen vil vi kontrollere børsteløs motor med Arduino. Her brukes A2212 / 13T sensorfri BLDC outrunner-motor med en 20A Electronic Speed Controller (ESC). Denne motoren brukes ofte til å bygge droner.
Nødvendig materiale
- A2212 / 13T BLDC-motor
- ESC (20A)
- Strømkilde (12V 20A)
- Arduino
- Potensiometer
Forstå BLDC Motors
BLDC Motor står for Brush Less DC-motor, den brukes ofte i takvifter og elektriske kjøretøyer på grunn av sin jevne drift. Bruk av BLDC-motorer i elektriske kjøretøyer er tidligere forklart i detalj. I motsetning til andre motorer har BLDC-motorene tre ledninger som kommer ut av dem, og hver ledning danner sin egen fase og gir oss en trefasemotor. Vent… hva !! ??
Ja, selv om BLDC-motorer regnes som DC-motorer, fungerer de ved hjelp av pulsede bølger. Den elektroniske hastighetskontrolleren (ESC) konverterer DC-spenningen fra batteriet til pulser og gir den til motorens tre ledninger. Til enhver tid vil bare to faser av motoren få strøm, slik at strømmen kommer inn gjennom en fase og går gjennom den andre. I løpet av denne prosessen får spolen i motoren energi, og derfor justeres magnetene på rotoren til den spenningsførte spolen. Deretter får de to neste ledningene strøm fra ESC, denne prosessen fortsetter for å få motoren til å rotere. Motorens hastighet avhenger av hvor raskt spolen får strøm og motorens retning avhenger av i hvilken rekkefølge spolene får strøm. Vi vil lære mer om ESC senere i denne artikkelen.
Det er mange typer BLDC-motorer tilgjengelig, la oss se på de vanligste klassifiseringene.
In-runner og Out-Runner BLDC motor: I runner BLDC Motors fungerer som alle andre motorer. Det vil si at akselen inne i motoren roterer mens huset forblir fast. Mens de løpende BLDC-motorene er det motsatte, roterer motorens ytre foringsrør sammen med akselen mens spolen inni holder seg fast. Out-runner-motorer er veldig fordeler i elektriske sykler, siden det ytre kabinettet (det som roterer) er gjort til en felg for dekkene, og dermed unngås en koblingsmekanisme. Også utløpsmotorene har en tendens til å gi mer dreiemoment enn i løpertyper, og det blir derfor et ideelt valg i EV og Drones. Den vi bruker her er også en type løpere.
Merk: Det er en annen type motor som kalles de kjerneløse BLDC-motorene som også brukes til lommedroner. De har et annet arbeidsprinsipp, men la oss nå hoppe over det for denne opplæringen.
Sensor og sensorfri BLDC-motor: For at en BLDC-motor skal kunne rotere uten rykk, kreves tilbakemelding. ESC må kjenne magnetenes posisjon og pol i rotoren for å aktivere statoren i henhold til. Denne informasjonen kan skaffes på to måter; den ene er ved å plassere hallføleren inne i motoren. Hall-sensoren vil oppdage magneten og sende informasjonen til ESC. Denne typen motor kalles en Sensord BLDC-motor og brukes i elektriske kjøretøyer. Den andre metoden er ved å bruke den bakre EMF generert av spolene når magneter krysser dem, dette krevde ikke ekstra maskinvare eller ledninger selve fasetråden brukes som tilbakemelding for å sjekke om EMF er tilbake. Denne metoden brukes i motoren vår og er vanlig for droner og andre flyprosjekter.
Hvorfor bruker Drones og andre multikoptere BLDC-motorer?
Det er mange typer kule droner derfra, fra Quad copter til helikoptre og seilfly, alt har en maskinvare til felles. Det er BLDC-motorene, men hvorfor? Hvorfor bruker de en BLDC-motor som er litt dyr i forhold til DC-motorer?
Det er ganske mange gyldige årsaker til dette, en hovedårsak er at dreiemomentet som tilbys av disse motorene er veldig høyt, noe som er veldig viktig for å få / løs trykk raskt for å ta av eller lande ned en drone. Disse motorene er også tilgjengelige som løpere, noe som igjen øker motorens skyvekraft. En annen grunn til å velge BLDC-motor er dens jevne vibrasjons mindre drift, dette er veldig ideelt for vår dronestall i luften.
Forholdet mellom effekt og vekt til en BLDC-motor er veldig høy. Dette er veldig viktig fordi motorene som brukes på droner skal ha høy effekt (høy hastighet og høyt dreiemoment), men også bør ha mindre vekt. En likestrømsmotor som kan gi samme dreiemoment og hastighet som en BLDC-motor, vil være dobbelt så tung som BLDC-motoren.
Hvorfor trenger vi et ESC, og hva er dets funksjon?
Som vi vet krever hver BLDC-motor en slags kontroller for å konvertere DC-spenningen fra batteriet til pulser for å drive motorens faseledninger. Denne kontrolleren kalles en ESC som står for Electronic Speed Controller. Hovedansvaret til kontrolleren er å aktivere faseledningene til BLDC-motorene i en rekkefølge slik at motoren roterer. Dette gjøres ved å registrere den bakre EMF fra hver ledning og aktivere spolen nøyaktig når magneten krysser spolen. Så det er mye maskinvarebrillans inne i ESC, som er utenfor omfanget av denne opplæringen. Men for å nevne noen få har den hastighetskontroller og en batteri eliminator krets.
PWM-basert hastighetskontroll: ESC kan kontrollere hastigheten til BLDC-motoren ved å lese PWM-signalet som er gitt på den oransje ledningen. Det fungerer veldig likt servomotorer, det medfølgende PWM-signalet skal ha en periode på 20 ms og driftssyklusen kan varieres for å variere hastigheten til BLDC-motoren. Siden den samme logikken også gjelder servomotorene for å kontrollere posisjonen, kan vi bruke det samme servobiblioteket i vårt Arduino-program. Lær å bruke Servo med Arduino her.
Battery Eliminator Circuit (BEC): Nesten alle ESC-er kommer med en Battery eliminator-krets. Som navnet antyder, eliminerer denne kretsen behovet for separat batteri for mikrokontroller, i dette tilfellet trenger vi ikke en egen strømforsyning for å drive Arduino; ESC i seg selv vil gi en regulert + 5V som kan brukes til å drive Arduino. Det er mange typer kretser som regulerer denne spenningen normalt, det vil være lineær regulering på de billige ESC-ene, men du kan også finne de med bryterkretser.
Firmware: Hver ESC har et firmwareprogram skrevet av produsentene. Denne fastvaren avgjør i stor grad hvordan ESC reagerer; noe av den populære firmware er tradisjonell, Simon-K og BL-Heli. Denne fastvaren er også programmerbar av brukeren, men vi kommer ikke inn på mye av det i denne opplæringen.
Noen vanlige begreper med BLDC og ESC:
Hvis du nettopp har begynt å jobbe med BLDC-motorer, har du sannsynligvis kommet over begrepene som bremsing, myk start, motorretning, lavspenning, responstid og forhånd. La oss ta en titt på hva disse begrepene betyr.
Bremsing: Bremsing er BLDC-motorens evne til å slutte å rotere så snart gassen er fjernet. Denne evnen er veldig viktig for multikoptere siden de må endre RPM oftere for å manøvrere i luften.
Myk start: Myk start er en viktig funksjon å vurdere når BLDC-motoren din er tilknyttet utstyr. Når en motor har myk start aktivert, vil den ikke rotere veldig fort plutselig, den vil alltid øke hastigheten gradvis uansett hvor raskt gassen ble gitt. Dette vil hjelpe oss med å redusere slitasje på tannhjul som er festet med motorene (hvis noen).
Motorretning: Motorretningen i BLDC-motorer endres normalt ikke under drift. Men når du monterer det, kan det hende at brukeren må endre retningen motoren roterer i. Den enkleste måten å endre retningen på motoren er å bare bytte to ledninger på motoren.
Lavspenningsstopp: Når vi er kalibrert, trenger vi alltid BLDC-motorene våre med samme hastighet for en bestemt gasspjeld. Men dette er vanskelig å oppnå fordi motorene har en tendens til å redusere hastigheten til samme gassverdi som batterispenningen synker. For å unngå dette programmerer vi normalt ESC til å slutte å fungere når batterispenningen har nådd under terskelverdien. Denne funksjonen kalles Low Voltage Stop og er nyttig i droner.
Svartid: Motorens evne til raskt å endre hastighet basert på gassendring kalles responstid. Jo mindre responstid er, jo bedre blir kontrollen.
Advance: Advance er et problem eller mer som en feil med BLDC-motorer. Alle BLDC-motorer har litt avansement i seg. Det er når statorspolene får energi, tiltrekkes rotoren mot den på grunn av den permanente magneten som er tilstede på dem. Etter å ha blitt tiltrukket har rotoren en tendens til å bevege seg litt mer fremover i den samme retningen før spolen slår seg fra og deretter neste spole. Denne bevegelsen kalles “Advance” og vil skape problemer som rysting, oppvarming, støy osv. Så dette er noe en god ESC bør unngå alene.
Ok, nok teori la oss komme i gang med maskinvaren ved å koble motoren til Arduino.
Arduino BLDC Motor Control Circuit Diagram
Nedenfor er kretsskjemaet for å kontrollere børsteløs motor med Arduino:
Forbindelsen for grensesnitt BLDC-motor med Arduino er ganske rett frem. ESC trenger en strømkilde på minimum 12V og 5A. I denne opplæringen har jeg brukt RPS-en min som strømkilde, men du kan også bruke et Li-Po-batteri til å drive ESC. De tre fasetrådene til ESC skal kobles til de trefasede ledningene til motorene, det er ingen ordre å koble disse ledningene, du kan koble dem i hvilken som helst rekkefølge.
Advarsel: Noen ESC vil ikke ha kontakter på seg. I så fall må du forsikre deg om at tilkoblingen din er solid og beskytt de utsatte ledningene ved hjelp av isolasjonstape. Siden det vil være høy strøm som går gjennom fasene, vil kortvarighet føre til permanent skade på ESC og motor.
Den BEC (batterieliminator krets) i ESC seg selv vil regulere en + 5V som kan brukes til å drive opp den Arduino styret. Til slutt for å stille hastigheten på BLDC-motoren bruker vi også et potensiometer koblet til A0-pinnen på Arduino
Program for BLDC hastighetskontroll ved hjelp av Arduino
Vi må lage et PWM-signal med varierende driftssyklus fra 0% til 100% med en frekvens på 50Hz. Driftssyklusen bør styres ved å bruke et potensiometer slik at vi kan kontrollere motorens hastighet. Koden for å gjøre dette ligner på å kontrollere servomotorene siden de også krever et PWM-signal med 50Hz frekvens; derfor bruker vi det samme servobiblioteket fra Arduino. Den komplette koden finner du nederst på denne siden lenger nedenfor forklarer jeg koden i små utdrag. Og hvis du ikke har brukt Arduino eller PWM, må du først bruke PWM med Arduino og kontrollere servo ved hjelp av Arduino.
PWM-signalet kan bare genereres på pinnene som støtter PWM av maskinvare, disse pinnene er vanligvis nevnt med et ~ -symbol. På Arduino UNO kan pinnen 9 generere PWM-signal, slik at vi kobler ESC-signalpinnen (oransje ledning) til pin 9, og vi nevner også den samme innkoden ved å bruke følgende linje
ESC.attach (9);
Vi må generere PWM-signal med varierende driftssyklus fra 0% til 100%. For 0% driftssyklus vil POT sende ut 0V (0) og for 100% driftssyklus vil POT gi ut 5V (1023). Her er potten koblet til pin A0, så vi må lese den analoge spenningen fra POT ved å bruke den analoge lesefunksjonen som vist nedenfor
int gasspjeld = analogRead (A0);
Da må vi konvertere verdien fra 0 til 1023 til 0 til 180 fordi verdien 0 vil generere 0% PWM og verdi 180 vil generere 100% driftssyklus. Eventuelle verdier over 180 gir ingen mening. Så vi kartlegger verdien til 0-180 ved å bruke kartfunksjonen som vist nedenfor.
gasspjeld = kart (gasspjeld, 0, 1023, 0, 180);
Til slutt må vi sende denne verdien til servofunksjonen slik at den kan generere PWM-signalet på den pinnen. Siden vi har navngitt servoobjektet som ESC, vil koden se slik ut nedenfor, der variabel gass inneholder verdien fra 0-180 for å kontrollere driftssyklusen til PWM-signalet
ESC.write (gasspjeld);
Arduino BLDC Motor Control
Opprett tilkoblingene i henhold til kretsskjemaet og last opp koden til Arduino og slå på ESC. Forsikre deg om at du har montert BLDC-motoren på noe siden motoren vil hoppe rundt når den roterer. Når oppsettet er slått på, vil ESC gi en velkomsttone og fortsette å pippe til gassignalet er innenfor terskelgrensene, enkelt øke POT fra 0V gradvis og pipetonen vil stoppe, dette betyr at vi nå gir PWM signalet over den nedre terskelverdien, og når du øker ytterligere, vil motoren din begynne å rotere sakte. Jo mer spenning du gir, jo mer hastighet vil motoren ta opp, til slutt når spenningen når over den øvre terskelgrensen, vil motoren stoppe. Du kan deretter gjenta prosessen.
Komplett bearbeiding av denne Arduino BLDC-kontrolleren finner du også på videolinken nedenfor. Hvis du hadde hatt problemer med å få dette til å fungere, bruk gjerne kommentarseksjonen eller bruk forumene for mer teknisk hjelp.