In deze tutorial gaan we een DC-motor koppelen aan Arduino UNO en de snelheid regelen met behulp van het PWM- concept (Pulse Width Modulation). Deze functie is ingeschakeld in UNO om een variabele spanning over een constante spanning te krijgen. De methode van PWM wordt hier uitgelegd; overweeg een eenvoudig circuit zoals weergegeven in de afbeelding.
Als de knop wordt ingedrukt als de figuur, dan zal de motor gaan draaien en zal deze in beweging zijn totdat de knop wordt ingedrukt. Dit persen is continu en wordt weergegeven in de eerste figuurgolf. Als, voor een geval, wordt overwogen dat de knop 8 ms wordt ingedrukt en gedurende 2 ms wordt geopend gedurende een cyclus van 10 ms, zal de motor in dit geval niet de volledige 9V batterijspanning ervaren omdat de knop slechts 8 ms wordt ingedrukt, dus de RMS-klemspanning over de motor zal ongeveer 7V zijn. Door deze verlaagde RMS-spanning zal de motor draaien maar met een lagere snelheid. Nu is de gemiddelde inschakeling over een periode van 10 ms = inschakeltijd / (inschakeltijd + uitschakeltijd), dit wordt de werkcyclus genoemd en is 80% (8 / (8 + 2)).
In het tweede en derde geval wordt de knop nog minder lang ingedrukt in vergelijking met het eerste geval. Hierdoor wordt de RMS-klemspanning op de motorklemmen nog verder verlaagd. Door deze verlaagde spanning neemt het motortoerental nog verder af. Deze afname van de snelheid met de inschakelduur vindt continu plaats tot een punt waarop de spanning van de motorklemmen niet voldoende zal zijn om de motor te laten draaien.
Hieruit kunnen we dus concluderen dat de PWM kan worden gebruikt om de motorsnelheid te variëren.
Voordat we verder gaan, moeten we de H-BRIDGE bespreken. Nu heeft dit circuit voornamelijk twee functies, ten eerste om een DC-motor aan te drijven met besturingssignalen met een laag vermogen en de andere is om de draairichting van de DC-motor te veranderen.
Figuur 1
Figuur 2
We weten allemaal dat voor een DC-motor, om de draairichting te veranderen, we de polariteiten van de voedingsspanning van de motor moeten veranderen. Dus om de polariteiten te veranderen gebruiken we de H-brug. Nu hebben we in bovenstaande figuur 1 vier schakelaars. Zoals getoond in figuur 2, zijn voor de motor om te draaien A1 en A2 gesloten. Hierdoor vloeit er van rechts naar links stroom door de motor, zoals weergegeven in 2 e deel van figuur 3. Bedenk nu dat de motor met de klok mee draait. Als nu de schakelaars A1 en A2 zijn geopend, zijn B1 en B2 gesloten. De stroom door de motor loopt van links naar rechts zoals weergegeven in 1 st deel van figure3. Deze stroomrichting is tegengesteld aan de eerste en dus zien we een tegengestelde potentiaal op de motorklem met de eerste, dus de motor draait tegen de klok in. Dit is hoe een H-BRIDGE werkt. Motoren met laag vermogen kunnen echter worden aangedreven door een H-BRIDGE IC L293D.
L293D is een H-BRIDGE IC die is ontworpen voor het aandrijven van DC-motoren met laag vermogen en wordt weergegeven in de afbeelding. Dit IC bestaat uit twee h-bruggen en kan dus twee gelijkstroommotoren aandrijven. Dit IC kan dus worden gebruikt om robotmotoren aan te drijven op basis van de signalen van de microcontroller.
Zoals eerder besproken, heeft dit IC de mogelijkheid om de draairichting van de DC-motor te veranderen. Dit wordt bereikt door de spanningsniveaus op INPUT1 en INPUT2 te regelen.
Pin inschakelen |
Invoerpen 1 |
Invoerpin 2 |
Motor richting |
Hoog |
Laag |
Hoog |
Rechts afslaan |
Hoog |
Hoog |
Laag |
Sla linksaf |
Hoog |
Laag |
Laag |
Hou op |
Hoog |
Hoog |
Hoog |
Hou op |
Dus zoals getoond in de bovenstaande afbeelding, moet voor rotatie met de klok mee 2A hoog zijn en 1A laag. Evenzo moet voor linksom 1A hoog zijn en 2A laag.
Zoals te zien is in de afbeelding, heeft Arduino UNO 6PWM-kanalen, dus we kunnen PWM (variabele spanning) krijgen op elk van deze zes pinnen. In deze tutorial gaan we PIN3 gebruiken als PWM-uitvoer.
Hardware: ARDUINO UNO, voeding (5v), 100uF condensator, LED, knoppen (twee stuks), 10KΩ weerstand (twee stuks).
Software: arduino IDE (Arduino nightly).
Schakelschema
Het circuit is verbonden in breadboard volgens het hierboven getoonde schakelschema. Men moet echter opletten bij het aansluiten van de LED-aansluitingen. Hoewel de knoppen in dit geval een stuiterend effect vertonen, veroorzaakt het geen aanzienlijke fouten, dus we hoeven ons deze keer geen zorgen te maken.
De PWM van UNO is eenvoudig, normaal gesproken is het opzetten van een ATMEGA-controller voor PWM-signaal niet eenvoudig, we moeten veel registers en instellingen definiëren voor een nauwkeurig signaal, maar in ARDUINO hebben we niet met al die dingen te maken.
Standaard zijn alle header-bestanden en registers voorgedefinieerd door ARDUINO IDE, we hoeven ze alleen maar aan te roepen en dat is het, we hebben een PWM-output op de juiste pin.
Om een PWM-uitvoer op een geschikte pin te krijgen, moeten we aan drie dingen werken,
|
Eerst moeten we de PWM-outputpin kiezen uit zes pinnen, daarna moeten we die pin als output instellen.
Vervolgens moeten we de PWM-functie van UNO inschakelen door de functie "analogWrite (pin, value)" aan te roepen. Hier staat 'pin' voor het pincode waar we PWM-uitvoer nodig hebben, we zetten het als '3'. Dus bij PIN3 krijgen we PWM-uitvoer.
Waarde is de inschakelduur, tussen 0 (altijd uit) en 255 (altijd aan). We gaan dit aantal verhogen en verlagen door op de knop te drukken.
De UNO heeft een maximale resolutie van “8”, verder kan men niet gaan vandaar de waarden van 0-255. Men kan echter de resolutie van PWM verlagen door het commando "analogWriteResolution ()" te gebruiken, door een waarde van 4-8 tussen de haakjes in te voeren, kunnen we de waarde ervan veranderen van vier bit PWM naar acht bit PWM.
De schakelaar is om de draairichting voor DC-motor te veranderen.