- Vereiste materialen
- Inzicht in BLDC-motoren
- Waarom gebruiken drones en andere multi-copters BLDC-motoren?
- Waarom hebben we een ESC nodig en wat is de functie ervan?
- Enkele veel voorkomende termen met BLDC en ESC's:
- Arduino BLDC-schakelschema voor motorbesturing
- Programma voor BLDC-snelheidsregeling met Arduino
- Arduino BLDC-motorbesturing
Dingen bouwen en ze aan het werk krijgen, zoals we willen, is altijd puur leuk geweest. Terwijl dat werd overeengekomen, zou het bouwen van dingen die zouden kunnen vliegen, uitdagend een beetje meer angst opwekken bij de hobbyisten en hardware-knutselaars. Ja! Ik heb het over zweefvliegtuigen, helikopters, vliegtuigen en voornamelijk multi-copters. Tegenwoordig is het heel gemakkelijk geworden om er zelf een te bouwen dankzij de community-ondersteuning die online beschikbaar is. Wat vaak voorkomt bij alle dingen die vliegen, is dat ze een BLDC-motor gebruiken, dus wat is deze BLDC-motor? Waarom hebben we het nodig om dingen te laten vliegen? Wat is er zo speciaal aan? Hoe koop je de juiste motor en koppel je deze aan je controller? Wat is een ESC en waarom gebruiken we het? Als u dit soort vragen heeft, is deze tutorial uw one-stop-oplossing.
Dus eigenlijk zullen we in deze tutorial de borstelloze motor besturen met Arduino. Hier wordt A2212 / 13T sensorloze BLDC- outrunner-motor gebruikt met een 20A elektronische snelheidsregelaar (ESC). Deze motor wordt veel gebruikt om drones te bouwen.
Vereiste materialen
- A2212 / 13T BLDC-motor
- ESC (20A)
- Stroombron (12V 20A)
- Arduino
- Potentiometer
Inzicht in BLDC-motoren
BLDC Motor staat voor Borstelloze DC-motor en wordt vaak gebruikt in plafondventilatoren en elektrische voertuigen vanwege de soepele werking. Het gebruik van BLDC-motoren in elektrische voertuigen is eerder in detail uitgelegd. In tegenstelling tot andere motoren hebben de BLDC-motoren drie draden die eruit komen en elke draad vormt zijn eigen fase, waardoor we een driefasige motor hebben. Wacht wat!!??
Ja, hoewel BLDC-motoren worden beschouwd als DC-motoren, werken ze met behulp van pulserende golven. De elektronische snelheidsregelaar (ESC) zet de gelijkspanning van de accu om in pulsen en levert deze aan de 3 draden van de motor. Op een bepaald moment worden slechts twee fasen van de motor aangedreven, zodat de stroom door de ene fase binnenkomt en door de andere gaat. Tijdens dit proces wordt de spoel in de motor bekrachtigd en daarom richten de magneten op de rotor zichzelf op de bekrachtigde spoel. Vervolgens worden de volgende twee draden bekrachtigd door de ESC, dit proces wordt voortgezet om de motor te laten draaien. De snelheid van de motor hangt af van hoe snel de spoel wordt bekrachtigd en de richting van de motor hangt af van de volgorde waarin de spoelen worden bekrachtigd. Later in dit artikel zullen we meer over ESC leren.
Er zijn veel soorten BLDC-motoren beschikbaar, laten we eens kijken naar de meest voorkomende classificaties.
In-runner en Out-Runner BLDC-motor: In runner BLDC-motoren werken als elke andere motor. Dat is de as in de motor draait terwijl de behuizing vast blijft. Terwijl onze BLDC-motoren precies het tegenovergestelde zijn, roteert de buitenmantel van de motor mee met de as terwijl de spoel binnenin vast blijft. Buitenloopmotoren zijn zeer voordelen bij elektrische fietsen, omdat de buitenkabel (degene die roteert) zelf wordt gemaakt in een velg voor de banden en daarom wordt een koppelingsmechanisme vermeden. Ook de motoren van de out runner hebben de neiging om meer koppel te geven dan in runner-typen, daarom wordt het een ideale keuze in EV en Drones. Degene die we hier gebruiken, is ook een uitloper.
Opmerking: er is een ander type motor, de BLDC-motoren zonder kern, die ook worden gebruikt voor pocket-drones, ze hebben een ander werkingsprincipe, maar laten we het voorlopig overslaan in het belang van deze tutorial.
Sensor en sensorloze BLDC-motor: om een BLDC-motor zonder enige schok te laten draaien, is feedback vereist. Dat wil zeggen dat de ESC de positie en pool van de magneten in de rotor moet kennen om de stator overeenkomstig te bekrachtigen. Deze informatie kan op twee manieren worden verkregen; een daarvan is door de Hall-sensor in de motor te plaatsen. De Hall-sensor zal de magneet detecteren en de informatie naar ESC sturen. Dit type motor wordt een Sensord BLDC-motor genoemd en wordt gebruikt in elektrische voertuigen. De tweede methode is door gebruik te maken van de achter-EMF die wordt gegenereerd door de spoelen wanneer de magneten ze kruisen. Dit vereist geen extra hardware of draden. De fasedraad zelf wordt gebruikt als feedback om te controleren op tegen-EMF. Deze methode wordt gebruikt in onze motor en is gebruikelijk voor drones en andere vliegprojecten.
Waarom gebruiken drones en andere multi-copters BLDC-motoren?
Er zijn veel soorten coole drones die er zijn, van quadcopter tot helikopters en zweefvliegtuigen, alles heeft één hardware gemeen. Dat zijn de BLDC-motoren, maar waarom? Waarom gebruiken ze een BLDC-motor die een beetje duur is in vergelijking met DC-motoren?
Hier zijn nogal wat geldige redenen voor, een van de belangrijkste redenen is dat het koppel dat door deze motoren wordt geleverd erg hoog is, wat erg belangrijk is om snel stuwkracht te krijgen / verliezen om een drone op te stijgen of te landen. Ook deze motoren zijn verkrijgbaar als uitlopers wat de stuwkracht van de motoren weer vergroot. Een andere reden voor het selecteren van de BLDC-motor is de soepele, trillingsloze werking, dit is zeer ideaal om onze drone in de lucht stabiel te houden.
De vermogen-gewichtsverhouding van een BLDC-motor is erg hoog. Dit is erg belangrijk omdat de motoren die op drones worden gebruikt een hoog vermogen moeten hebben (hoge snelheid en hoog koppel), maar ook minder zwaar moeten zijn. Een DC-motor die hetzelfde koppel en dezelfde snelheid kan leveren als die van een BLDC-motor, zal twee keer zo zwaar zijn als de BLDC-motor.
Waarom hebben we een ESC nodig en wat is de functie ervan?
Zoals we weten, heeft elke BLDC-motor een soort controller nodig om de DC-spanning van de batterij om te zetten in pulsen om de fasedraden van de motor van stroom te voorzien. Deze controller wordt een ESC genoemd, wat staat voor Electronic Speed Controller. De belangrijkste verantwoordelijkheid van de controller is om de fasedraden van de BLDC-motoren in een volgorde van stroom te voorzien, zodat de motor draait. Dit wordt gedaan door de achter-EMF van elke draad te detecteren en de spoel te activeren, precies wanneer de magneet de spoel kruist. Er zit dus veel hardware-schittering in de ESC die buiten het bestek van deze tutorial valt. Maar om er maar een paar te noemen, het heeft een snelheidsregelaar en een batterij-eliminatorcircuit.
PWM-gebaseerde snelheidsregeling: De ESC kan de snelheid van de BLDC-motor regelen door het PWM-signaal op de oranje draad te lezen. Het werkt vrijwel hetzelfde als servomotoren, het geleverde PWM-signaal moet een periode van 20 ms hebben en de inschakelduur kan worden gevarieerd om de snelheid van de BLDC-motor te variëren. Omdat dezelfde logica ook geldt voor de servomotoren om de positie te regelen, kunnen we dezelfde servobibliotheek gebruiken in ons Arduino-programma. Leer hier Servo met Arduino gebruiken.
Battery Eliminator Circuit (BEC): Bijna alle ESC's worden geleverd met een Battery Eliminator-circuit. Zoals de naam suggereert, elimineert dit circuit de noodzaak van een aparte batterij voor de microcontroller, in dit geval hebben we geen aparte voeding nodig om onze Arduino van stroom te voorzien; de ESC zelf zal een gereguleerde + 5V leveren die kan worden gebruikt voor onze Arduino. Er zijn veel soorten schakelingen die deze spanning normaal regelen, het is een lineaire regeling op de goedkope ESC's, maar je kunt er ook vinden met schakelkringen.
Firmware: elke ESC heeft een firmwareprogramma dat door de fabrikanten is geschreven. Deze firmware bepaalt in hoge mate hoe uw ESC reageert; Enkele van de populaire firmware is Traditioneel, Simon-K en BL-Heli. Deze firmware is ook door de gebruiker te programmeren, maar daar zullen we in deze tutorial niet veel op ingaan.
Enkele veel voorkomende termen met BLDC en ESC's:
Als u net bent begonnen met het werken met BLDC-motoren, bent u waarschijnlijk termen tegengekomen als Remmen, Softstart, Motorrichting, Laagspanning, Reactietijd en Vervroeging. Laten we eens kijken wat deze termen betekenen.
Remmen: Remmen is het vermogen van uw BLDC-motor om te stoppen met draaien zodra de gashendel wordt verwijderd. Dit vermogen is erg belangrijk voor multi-copters omdat ze hun toerental vaker moeten veranderen om in de lucht te manoeuvreren.
Soft Start: Soft start is een belangrijke functie om te overwegen wanneer uw BLDC-motor wordt geassocieerd met versnelling. Wanneer een motor met softstart is ingeschakeld, zal deze niet ineens erg snel gaan draaien, het zal altijd geleidelijk de snelheid verhogen, ongeacht hoe snel de gashendel is gegeven. Dit zal ons helpen bij het verminderen van de slijtage van tandwielen die aan de motoren zijn bevestigd (indien aanwezig).
Motorrichting: De motorrichting in BLDC-motoren wordt normaal gesproken niet veranderd tijdens bedrijf. Maar bij het monteren moet de gebruiker mogelijk de richting veranderen waarin de motor draait. De eenvoudigste manier om de richting van de motor te veranderen, is door simpelweg twee draden van de motor onderling te verwisselen.
Laagspanningsstop: eenmaal gekalibreerd, hebben we altijd onze BLDC-motoren nodig die op dezelfde specifieke snelheid draaien voor een bepaalde waarde van gasklep. Maar dit is moeilijk te bereiken omdat de motoren de neiging hebben om hun snelheid te verlagen voor dezelfde waarde van de gasklep als de batterijspanning afneemt. Om dit te voorkomen programmeren we normaal gesproken dat de ESC stopt met werken wanneer de accuspanning onder de drempelwaarde komt. Deze functie wordt Low Voltage Stop genoemd en is handig bij drones.
Reactietijd: het vermogen van de motor om snel van snelheid te veranderen op basis van de verandering in gaspedaal, wordt reactietijd genoemd. Hoe korter de reactietijd, hoe beter de controle zal zijn.
Advance: Advance is een probleem of meer als een bug met BLDC-motoren. Alle BLDC-motoren hebben een klein beetje vooruitgang in zich. Dat is wanneer de statorspoelen worden bekrachtigd, de rotor wordt er naar toe getrokken vanwege de permanente magneet die erop aanwezig is. Nadat hij is aangetrokken, heeft de rotor de neiging om iets verder naar voren te bewegen in dezelfde richting voordat de spoel wordt uitgeschakeld en de volgende spoel wordt geactiveerd. Deze beweging wordt "Advance" genoemd en het zal problemen veroorzaken zoals trillingen, opwarming, lawaai maken enz. Dus dit is iets dat een goede ESC op zichzelf zou moeten vermijden.
Oké, genoeg theorie, laten we aan de slag gaan met de hardware door de motor met de Arduino te verbinden.
Arduino BLDC-schakelschema voor motorbesturing
Hieronder ziet u het schakelschema om de borstelloze motor met Arduino te besturen:
De verbinding voor het koppelen van de BLDC-motor met Arduino is vrij eenvoudig. De ESC heeft een voedingsbron nodig van minimaal 12 V en 5 A. In deze tutorial heb ik mijn RPS als stroombron gebruikt, maar je kunt ook een Li-Po-batterij gebruiken om de ESC van stroom te voorzien. De driefasige draden van de ESC moeten worden aangesloten op de driefasige draden van de motoren, er is geen volgorde om deze draden aan te sluiten, u kunt ze in willekeurige volgorde aansluiten.
Waarschuwing: sommige ESC hebben geen connectoren, zorg er in dat geval voor dat uw verbinding stevig is en bescherm de blootliggende draden met isolatietape. Aangezien er een hoge stroom door de fasen gaat, zou elke kortsluiting leiden tot permanente schade aan de ESC en de motor.
Het BEC (Battery Eliminator-circuit) in de ESC zelf regelt een + 5V die kan worden gebruikt om het Arduino-bord van stroom te voorzien. Om tenslotte de snelheid van de BLDC-motor in te stellen, gebruiken we ook een potentiometer die is aangesloten op de A0-pin van de Arduino
Programma voor BLDC-snelheidsregeling met Arduino
We moeten een PWM-signaal creëren met een variërende duty-cycle van 0% tot 100% met een frequentie van 50Hz. De duty-cycle moet worden geregeld met behulp van een potentiometer, zodat we de snelheid van de motor kunnen regelen. De code om dit te doen is vergelijkbaar met het besturen van de servomotoren, aangezien ze ook een PWM-signaal met een frequentie van 50 Hz nodig hebben; daarom gebruiken we dezelfde servobibliotheek van Arduino. De volledige code vind je onderaan deze pagina verder hieronder. Ik leg de code uit in kleine fragmenten. En als je nieuw bent bij Arduino of PWM, ga dan eerst door met het gebruik van PWM met Arduino en het besturen van servo met Arduino.
Het PWM-signaal kan alleen worden gegenereerd op de pinnen die PWM hardware ondersteunen, deze pinnen worden normaal gesproken aangeduid met een ~ -symbool. Op Arduino UNO kan pin 9 een PWM-signaal genereren, dus verbinden we de ESC-signaalpin (oranje draad) met pin 9 en noemen we dezelfde herbergcode ook door de volgende regel te gebruiken
ESC. Bevestigen (9);
We moeten een PWM-signaal genereren met een verschillende inschakelduur van 0% tot 100%. Voor een inschakelduur van 0% levert de POT 0V (0) en voor een inschakelduur van 100% levert de POT 5V (1023). Hier is de pot verbonden met pin A0, dus we moeten de analoge spanning van de POT aflezen met behulp van de analoge leesfunctie zoals hieronder weergegeven
int throttle = analogRead (A0);
Dan moeten we de waarde omrekenen van 0 naar 1023 naar 0 naar 180 omdat de waarde 0 0% PWM genereert en waarde 180 100% duty cycle. Alle waarden boven de 180 hebben geen zin. Dus we brengen de waarde in kaart met 0-180 met behulp van de kaartfunctie zoals hieronder weergegeven.
throttle = map (throttle, 0, 1023, 0, 180);
Ten slotte moeten we deze waarde naar de servofunctie sturen, zodat deze het PWM-signaal op die pin kan genereren. Omdat we het servo-object ESC hebben genoemd, ziet de code er als volgt uit, waarbij de variabele throttle de waarde van 0-180 bevat om de duty-cycle van het PWM-signaal te regelen
ESC.write (gas geven);
Arduino BLDC-motorbesturing
Maak de verbindingen volgens het schakelschema en upload de code naar Arduino en schakel de ESC in. Zorg ervoor dat je de BLDC-motor ergens op hebt gemonteerd, aangezien de motor tijdens het draaien rondom zal springen. Zodra de installatie is ingeschakeld, maakt uw ESC een welkomsttoon en blijft hij piepen totdat het gaspedaal binnen de drempelwaarden valt, verhoog eenvoudig de POT geleidelijk van 0V en de pieptoon stopt, dit betekent dat we nu PWM leveren signaal boven de onderste drempelwaarde en naarmate u verder stijgt, zal uw motor langzaam gaan draaien. Hoe meer spanning u levert, hoe meer snelheid de motor zal opnemen, en uiteindelijk zal de motor stoppen wanneer de spanning boven de bovenste drempelwaarde komt. U kunt het proces dan herhalen.
De volledige werking van deze Arduino BLDC Controller is ook te vinden op de onderstaande videolink. Als je problemen had ondervonden om dit te laten werken, kun je het commentaargedeelte gebruiken of de forums gebruiken voor meer technische hulp.