Stap 2: Controle op DC-motoren
Om één of twee DC-motoren is heel eenvoudig met de L298N H-brug module. Eerst sluit elke motor aan de A en B verbindingen op de L298N module.
Als u twee motoren voor een robot (enz.) zorgen ervoor dat de polariteit van de motoren hetzelfde op beide "inputs". Anders moet u mogelijk hen te ruilen over wanneer u instelt dat beide motoren toekomen en een gaat achteruit!
Vervolgens sluit je voeding – de positieve naar pin 4 op de module en negatieve/GND pin 5. Als u opgeeft is aan 12V kunt u in de 12V jumper (punt 3 in de afbeelding hierboven) en 5V zullen beschikbaar zijn vanaf pin 6 op de module.
Dit kan worden gevoed tot en met de je Arduino 5V pin om het vermogen van de voeding van de motoren. Vergeet niet om het Arduino GND verbinden met pin 5 op de module ook te voltooien van het circuit. Nu u zes digitale uitgang pinnen op je Arduino moet, moeten waarvan er twee PWM (Pulsbreedtemodulatie) pinnen.
PWM pins worden aangeduid door de tilde ("~") naast het pin-nummer, bijvoorbeeld in het beeld van de Arduino Uno de digitale pinnen.
Ten slotte sluit de Arduino digitale pennen aan de driver module. In ons voorbeeld hebben we twee DC-motoren, dus digitale pinnen D8, D7, D9 en D6 zal worden aangesloten op pinnen IN1, IN2 en 3 IN4 respectievelijk. Vervolgens verbinden D10 module pin 7 (de jumper eerst verwijderen) en D5 module pin 12 (opnieuw, verwijder de jumper).
De motor richting wordt gecontroleerd door een hoog of laag signaal naar het station voor elke motor (of kanaal). Bijvoorbeeld voor motor, een maximum aan IN1 en een minimum aan IN2 zal leiden tot het in één richting om te draaien, en een laag en hoog zal veroorzaken in de andere richting om te draaien.
Echter de motoren zal niet beurt tot een hoog is ingesteld op inschakelen pin (7 voor motor één, 12 voor motor twee). En zij annuleerteken zitten werden vandoor met een lage tot de dezelfde kegel. Echter als u controleren de snelheid van de motoren wilt, het PWM-signaal van de digitale pin verbonden met de pin inschakelen verzorgen het.
Dit is wat we hebben gedaan met de DC motor demonstratie schets. Twee DC-motoren en een Arduino Uno zijn verbonden, zoals hierboven beschreven, samen met een externe voeding. Voer vervolgens en uploaden van het volgende schema:
// connect motor controller pins to Arduino digital pins // motor one int enA = 10; int in1 = 9; int in2 = 8; // motor two int enB = 5; int in3 = 7; int in4 = 6; void setup() { // set all the motor control pins to outputs pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } void demoOne() { // this function will run the motors in both directions at a fixed speed // turn on motor A digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // set speed to 200 out of possible range 0~255 analogWrite(enA, 200); // turn on motor B digitalWrite(in3, HIGH); digitalWrite(in4, LOW); // set speed to 200 out of possible range 0~255 analogWrite(enB, 200); delay(2000); // now change motor directions digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(2000); // now turn off motors digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } void demoTwo() { // this function will run the motors across the range of possible speeds // note that maximum speed is determined by the motor itself and the operating voltage // the PWM values sent by analogWrite() are fractions of the maximum speed possible // by your hardware // turn on motors digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); // accelerate from zero to maximum speed for (int i = 0; i < 256; i++) { analogWrite(enA, i); analogWrite(enB, i); delay(20); } // decelerate from maximum speed to zero for (int i = 255; i >= 0; --i) { analogWrite(enA, i); analogWrite(enB, i); delay(20); } // now turn off motors digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } void loop() { demoOne(); delay(1000); demoTwo(); delay(1000); }
Dus wat er gebeurt in deze schets? In de functie demoOne() we de motoren inschakelen en lopen ze tegen een PWM-waarde van 200. Dit is niet een snelheid-waarde, in plaats daarvan de macht wordt toegepast voor 200/255 van een hoeveelheid tijd in een keer.
Dan na enkele ogenblikken de motoren werken in omgekeerde richting (zie hoe we de hoogte- en dieptepunten in thedigitalWrite() functies veranderd?). Om een idee van alle verschillende snelheid mogelijk voor uw hardware, wij lopen door waarden het gehele bereik van de PWM in de demoTwo() van de functie die de motoren inschakelt en hen loopt door PWM nul tot en met 255 en terug naar nul met de twee for-lussen.
Tot slot blijkt dit in de video op deze pagina – met behulp van onze afgezaagde tank chassis met twee DC-motoren.