Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino borstelloze motorbesturing zelfstudie | ESC | BLDC

In deze tutorial leren we hoe je een brushless motor bestuurt met Arduino en ESC. Als je meer wilt weten over hoe BLDC-motoren werken, kun je het andere artikel bekijken of de volgende video bekijken, waarin het werkingsprincipe van een borstelloze motor wordt uitgelegd en hoe je er een kunt besturen met Arduino en ESC.

Overzicht

Voor dit voorbeeld heb ik een outrunner BLDC-motor met de volgende specificaties:hij heeft een KV-classificatie van 1000, hij kan worden gevoed met een 2S, 3S of 4S LiPo-batterij en hij heeft 30A ESC nodig. De KV-classificatie op een borstelloze motor definieert het toerental van de motor per volt zonder belasting.

In dit geval betekent de 1000KV dat als we de motor bijvoorbeeld voorzien van een 2S LiPo-batterij met een spanning van 7,4 volt, de motor een maximaal toerental kan halen van 7,4 keer 1000, oftewel 7400 tpm.

Borstelloze motoren verbruiken veel stroom en de meest gebruikelijke methode om ze van stroom te voorzien is het gebruik van LiPo-batterijen. Het "S"-nummer van een LiPo-batterij geeft aan hoeveel cellen de batterij heeft en elke cel heeft een spanning van 3,7 V.

Voor dit voorbeeld gebruik ik een 3S LiPo-batterij met 3 cellen en dat is 11,1 V. Dus ik kan verwachten dat mijn motor het maximale toerental van 11100 haalt.

Ten slotte is hier een 30A ESC die ik voor dit voorbeeld zal gebruiken en die overeenkomt met de motorvereisten. Aan de ene kant heeft de ESC drie draden die de drie fasen van de motor regelen en aan de andere kant heeft hij twee draden, VCC en GND, voor voeding.

Er komt ook nog een set van drie draden uit de ESC en dat is de signaallijn, +5V en aarde. Deze functie van de ESC wordt Battery Eliminator Circuit genoemd en zoals de naam al doet vermoeden, elimineert het de noodzaak van een aparte batterij voor een microcontroller. Hiermee levert de ESC gereguleerde 5V die kan worden gebruikt om onze Arduino van stroom te voorzien.

We kunnen hier opmerken dat deze verbinding eigenlijk dezelfde is als die we zien op servomotoren.

Het besturen van een borstelloze motor met ESC en Arduino is dus net zo eenvoudig als het besturen van een servo met Arduino. ESC's gebruiken hetzelfde type stuursignaal als servo en dat is het standaard 50Hz PWM-signaal.

Dit is erg handig, omdat we bijvoorbeeld bij het bouwen van een RC-vliegtuig meestal zowel servo's als borstelloze motoren nodig hebben en op deze manier kunnen we ze gemakkelijk aansturen met hetzelfde type controller.

Dus, met behulp van de Arduino hoeven we alleen maar het 50Hz PWM-signaal te genereren en afhankelijk van de pulsbreedte of de duur van de hoge toestand, die moet variëren van 1 milliseconde tot 2 milliseconden, zal de ESC de motor van minimaal naar maximaal toerental aandrijven.

Arduino Brushless Motor Control - Schakelschema

Hier is het schakelschema voor dit voorbeeld. Naast de ESC zullen we gewoon een eenvoudige potentiometer gebruiken om de motorsnelheid te regelen.

U kunt de benodigde componenten voor deze Arduino-zelfstudie verkrijgen via de onderstaande links:

  • Borstelloze motor ……………………
  • ESC 30A ………………………………….
  • Li-Po-batterij …………….…..……
  • Arduino-bord …………………………
  • Potentiometer ……………………….
  • Broodplank en springdraden …

Arduino-code voor BLDC-motorbesturing

De Arduino-code is heel eenvoudig met slechts een paar regels code.

/*
        Arduino Brushless Motor Control
     by Dejan, https://howtomechatronics.com
*/

#include <Servo.h>

Servo ESC;     // create servo object to control the ESC

int potValue;  // value from the analog pin

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
}

void loop() {
  potValue = analogRead(A0);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
}Code language: Arduino (arduino)

Beschrijving: We moeten dus de servobibliotheek definiëren, omdat we met de servobibliotheek gemakkelijk het 50Hz PWM-signaal kunnen genereren, anders hebben de PWM-signalen die de Arduino genereert verschillende frequenties. Vervolgens moeten we een servo-object maken voor de ESC-besturing en een variabele definiëren voor het opslaan van de analoge invoer van de potentiometer. In de setup-sectie definiëren we met behulp van de functie attach() op welke Arduino-pin het stuursignaal van de ESC is aangesloten en definiëren we ook de minimale en maximale pulsbreedte van het PWM-signaal in microseconden.

In de lussectie lezen we eerst de potentiometer, brengen de waarde van 0 tot 1023 in kaart in een waarde van 0 tot 180. Dan gebruiken we de functie write() om het signaal naar de ESC te sturen of het 50Hz PWM-signaal te genereren. De waarden van 0 tot 180 komen overeen met de waarden van 1000 tot 2000 microseconden die zijn gedefinieerd in de instellingssectie.

Dus als we deze code naar onze Arduino uploaden en vervolgens alles opstarten met de batterij, dan kunnen we de snelheid van de borstelloze motor van nul tot maximaal regelen met behulp van de potentiometer.

Er zijn echter enkele dingen die we hier moeten opmerken. Bij de eerste voeding van de motor moet de signaalwaarde gelijk zijn aan of lager zijn dan de minimumwaarde van 1 milliseconde. Dit wordt het inschakelen van de ESC genoemd en de motor maakt een bevestigingspiep zodat we weten dat deze goed is ingeschakeld. In het geval dat we een hogere waarde hebben bij het aandrijven, wat betekent dat we een hogere gasklep hebben, zal de ESC de motor niet starten totdat we gas geven tot de juiste minimumwaarde. Dit is erg handig in termen van veiligheid, omdat de motor niet start als we gas geven tijdens het aandrijven.

ESC-kalibratie

Laten we tot slot uitleggen hoe ESC-kalibratie werkt. Elke ESC heeft zijn eigen hoogte- en dieptepunten en deze kunnen enigszins variëren. Het dieptepunt kan bijvoorbeeld 1,2 milliseconden zijn en het hoogste punt kan 1,9 milliseconden zijn. In zo'n geval doet onze gashendel niets in de eerste 20% totdat het die lage puntwaarde van 1,2 milliseconden bereikt.

Om dit probleem op te lossen, kunnen we de ESC kalibreren of de hoge en lage punten instellen zoals we willen. Voor dat doel moeten we, voordat we de ESC van stroom voorzien, eerst onze potentiometer op het maximum zetten of een waarde die ten minste groter is dan het huidige middelpunt. Dan kunnen we de ESC aanzetten, en we zullen een paar piepjes van de motor horen die feitelijk bevestigen dat we het nieuwe hoogtepunt hebben bereikt.

Na 2 seconden moeten we onze potentiometer verplaatsen naar de positie waar we het nieuwe dieptepunt moeten zijn. We zullen opnieuw de bevestigingspiepjes horen en daarmee zijn we klaar met de ESC-kalibratie. Nu zal onze gashendel meteen reageren en kunnen we de motor binnen deze nieuwe twee punten besturen.

Dat is vrijwel alles voor deze tutorial. Als je wilt leren hoe je deze Arduino borstelloze motorbesturing draadloos kunt maken, kun je mijn vorige video bekijken waarin ik een op Arduino gebaseerde RC-zender bouw en heb uitgelegd hoe je BLDC-motoren ermee kunt bedienen.

Ik hoop dat je deze tutorial leuk vond en iets nieuws hebt geleerd. Stel gerust een vraag in de opmerkingen hieronder en vergeet niet mijn verzameling Arduino-projecten te bekijken.


Productieproces

  1. Arduino RFID Lock-zelfstudie
  2. Bedien muntvangers met Arduino
  3. Arduino-controlecentrum
  4. Arduino met Bluetooth om een ​​LED te bedienen!
  5. Lijnvolger Robot
  6. Arduino-luchtbevochtigerbediening
  7. Arduino-trainingsplatform
  8. Tutorial Arduino-vingerafdruksensor
  9. Arduino-zelfstudie 01:Aan de slag
  10. BLDC Motors &Automatisering
  11. Een inleiding tot de BLDC-motor