- Vereiste componenten:
- Schakelschema en uitleg:
- Huidige berekeningen:
- Werking van een Arduino-gestuurde bidirectionele motor:
In dit project regelen we de richting en snelheid van een 24v-motor met hoge stroomsterkte met behulp van Arduino en twee relais. Er zijn geen stroomschakelaars nodig voor dit circuit, slechts twee drukknoppen en een potentiometer om de richting en snelheid van de DC-motor te regelen. Een drukknop zal de motor met de klok mee draaien en de andere zal hem tegen de klok in draaien. Een n-kanaals MOSFET is vereist om de motorsnelheid te regelen. Relais worden gebruikt om de richting van de motor te schakelen. Het lijkt op het H-Bridge-circuit.
Vereiste componenten:
- Arduino Uno
- Twee 12v-relais (5v-relais kan ook worden gebruikt)
- Twee transistors; BC547
- Twee drukknoppen
- IRF540N
- 10k weerstand
- 24 volt bron
- 10K potentiometer
- Drie diodes 1N4007
- Draden aansluiten
Schakelschema en uitleg:
Het schakelschema van dit bidirectionele motorbesturingsproject wordt in onderstaande afbeelding weergegeven. Maak de verbindingen volgens het:
- Verbind de normaal gesloten pool van beide relais met de positieve pool van de accu.
- Verbind de normaal geopende klem van beide relais met de afvoerterminal van MOSFET.
- Verbind de bron van MOSFET met de negatieve pool van de batterij en met de aardingspin van Arduino UNO.
- Gate terminal naar PWM pin 6 van Arduino.
- Verbind een weerstand van 10k van poort naar bron en 1N4007 diode van bron naar afvoer.
- Sluit de motor aan tussen de middelste klem van relais.
- Van de twee resterende terminals gaat er één naar de Vin-pin van Arduino Uno en de andere naar de collectorterminal van de transistor (voor elk relais).
- Verbind de emitterterminal van beide transistoren met de GND-pin van Arduino.
- Digitale pin 2 en 3 van Arduino, elk in serie met drukknop, gaat naar de basis van transistors.
- Verbind de diode over het relais precies zoals weergegeven in de afbeelding.
- Verbind de eindterminal van de Potentiometer met respectievelijk 5v-pin en Gnd-pin van Arduino. En wisserterminal naar A0-pin.
- ** als u twee afzonderlijke 12 V-accu's heeft, sluit dan de positieve pool van de ene accu aan op de negatieve pool van een andere accu en gebruik de resterende twee terminals als plus en min.
Doel van transistors:
digitale pinnen van Arduino kunnen niet de hoeveelheid stroom leveren die nodig is om een normaal 5v-relais in te schakelen. Daarnaast gebruiken we 12v relais in dit project. Vin-pin van Arduino kan niet gemakkelijk zoveel stroom leveren voor beide relais. Daarom worden transistors gebruikt om stroom te geleiden van de Vin-pin van Arduino naar het relais dat wordt bestuurd met behulp van een drukknop die is aangesloten van de digitale pin naar de basisaansluiting van de transistor.
Doel van Arduino:
- Om de hoeveelheid stroom te leveren die nodig is om het relais in te schakelen.
- Om de transistor aan te zetten.
- Om de snelheid van DC-motoren met een potentiometer te regelen met behulp van programmeren. Controleer aan het einde de volledige Arduino-code.
Doel van MOSFET:
MOSFET is vereist om de motorsnelheid te regelen. MOSFET wordt in- en uitgeschakeld bij hoogfrequente spanning en aangezien de motor in serie is geschakeld met de afvoer van MOSFET, bepaalt de PWM-waarde van de spanning de snelheid van de motor.
Huidige berekeningen:
De weerstand van de relaisspoel wordt gemeten met een multimeter die = 400 ohm blijkt te zijn
Vin-pin van Arduino geeft = 12v
Dus stroom nodig om het relais in te schakelen = 12/400 Amp = 30 mA
Als beide relais bekrachtigd zijn, stroom = 30 * 2 = 60 mA
** Vin-pin van Arduino kan maximale stroom leveren = 200mA.
Er is dus geen overstroomprobleem in Arduino.
Werking van een Arduino-gestuurde bidirectionele motor:
De bediening van dit 2-weg motorbesturingscircuit is eenvoudig. Beide pinnen (2, 3) van Arduino zullen altijd hoog blijven.
Als er geen drukknop is ingedrukt:
In dit geval vloeit er geen stroom naar de basis van de transistor, daarom blijft de transistor uit (werkt als een open schakelaar) waardoor er geen stroom naar de relaisspoel van de Vin-pin van Arduino gaat.
Als een drukknop wordt ingedrukt:
In dit geval vloeit er wat stroom naar de basis van de transistor via een ingedrukte drukknop die hem inschakelt. Nu vloeit er gemakkelijk stroom naar de relaisspoel van de Vin-pin door deze transistor die dit relais (RELAIS A) aanzet en de schakelaar van dit relais in de NO-stand wordt gegooid. Terwijl het andere relais (RELAIS B) nog in NC-positie staat. Dus stroom vloeit van de positieve pool van de accu naar de negatieve pool door de motor, dwz stroom vloeit van relais A naar relais B. Dit veroorzaakt een rotatie van de motor met de klok mee.
Wanneer een andere drukknop wordt ingedrukt:
Dit keer gaat een ander relais aan. Nu vloeit de stroom gemakkelijk naar de relaisspoel van de Vin-pin door de transistor die dit relais (RELAIS B) aanzet en de schakelaar van dit relais in de NO-stand wordt gezet. Terwijl het andere relais (RELAIS A) in NC-positie blijft. Dus stroom vloeit van de positieve pool van de batterij naar de negatieve pool van de batterij door de motor. Maar deze keer vloeit er stroom van relais B naar relais A. Hierdoor wordt de motor linksom gedraaid
Als beide drukknoppen zijn ingedrukt:
In dit geval vloeit er stroom naar de basis van beide transistors waardoor beide transistors worden ingeschakeld (werkt als een gesloten schakelaar). En dus staat beide relais nu in de GEEN stand. Er loopt dus geen stroom van de pluspool van de accu naar de minpool door de motor en dus draait hij niet.
De snelheid van de DC-motor regelen:
Gate of MOSFET is verbonden met PWM-pin 6 van Arduino UNO. Mosfet wordt in- en uitgeschakeld bij een hoge PWM-frequentiespanning en aangezien de motor in serie is geschakeld met de afvoer van mosfet, bepaalt de PWM-waarde van de spanning de snelheid van de motor. Nu bepaalt de spanning tussen de wisser-aansluiting van de potentiometer en Gnd de PWM-spanning op pin nr. 6 en als de wisser-aansluiting wordt geroteerd, verandert de spanning op analoge pen A0 waardoor het toerental van de motor verandert.
De volledige werking van deze op Arduino gebaseerde bidirectionele motorsnelheid en -richtingsregeling wordt getoond in de onderstaande video met de Arduino-code.