Étape 4: Faites le circuit moteur DC
http://ITP.nyu.edu/physcomp/Labs/DCMotorControl
Vous devrez suivre ces instructions faciles pour le moteur à courant continu avec direction contrôlable à l’aide d’un circuit intégré de H Bridge. Les changements de direction sont effectués via un commutateur qui est relié aux entrées numériques de l’Arduino.
Au début, j’ai utilisé un bloc d’alimentation externe pour ma tension de moteurs DC. Cela m’a permis d’alimenter le Diecimila via USB et aussi la possibilité de télécharger mon programme Arduino au microcontrôleur Arduino.
J’ai décidé d’ajouter un contrôle de vitesse sur le circuit automobile en ajoutant un circuit simple potentiomètre qui utilise de l’Arduino + 5V sortie et son terrain. J’ai envoyer la tension du circuit potentiomètre dans l’entrée analogique 0 sur la carte Arduino.
Enfin, j’ai téléchargé le code suivant (basé sur le code du site Web avec un contrôle ajouté potentiomètre) à l’Arduino, donc je peux contrôler la vitesse et la direction du moteur :
int switchPin = 2 ; entrée de l’interrupteur
int motor1Pin = 3 ; Pont en H Etape 1
int motor2Pin = 4 ; Pont en H Etape 2
int speedPin = 9 ; Pont en H activer pin
int ledPin = 13 ; LED
int potPin = 0 ; Broche d’entrée analogique auquel est attaché le potentiomètre
int potValue = 0 ; valeur lue dans le pot
void setup() {}
Réglez le commutateur comme entrée :
pinMode (switchPin, entrée) ;
Serial.Begin(9600) ;
Définissez tous les autres pins que vous utilisez comme produits :
pinMode (motor1Pin, sortie) ;
pinMode (motor2Pin, sortie) ;
pinMode (ledPin, sortie) ;
Définissez speedPin élevé afin que le moteur peut tourner :
digitalWrite (speedPin, HIGH) ;
clignoter la LED 3 fois. Cela se produit qu’une seule fois.
Si vous voyez le clignotement de la LED trois fois, cela signifie que le module
remet en marche. probablement parce que le moteur a causé une perte de tension
ou un court-circuit.
clignote (ledPin, 3, 100) ;
}
void loop() {}
Si l’interrupteur est élevée, le moteur s’allume une direction :
Serial.println(potValue) ; imprimer la valeur du pot vers le volet de débogueur
Si (digitalRead(switchPin) == HIGH) {}
digitalWrite (motor1Pin, basse) ; définir l’étape 1 de la basse de pont en H
digitalWrite (motor2Pin, HIGH) ; Etape 2 du H-bridge la valeur élevée
potValue = analogRead(potPin) ; lire la valeur du pot
analogWrite (speedPin, potValue/4) ; PWM le speedPin avec la valeur du pot (divisée par 4 pour s’adapter à un octet)
}
Si le commutateur est faible, le moteur tournera dans l’autre sens :
else {}
digitalWrite (motor1Pin, HIGH) ; Etape 1 du H-bridge la valeur élevée
digitalWrite (motor2Pin, basse) ; définir l’étape 2 de la basse de pont en H
potValue = analogRead(potPin) ; lire la valeur du pot
analogWrite (speedPin, potValue/4) ; PWM le speedPin avec la valeur du pot (divisée par 4 pour s’adapter à un octet)
Delay(10) ; attendre 10 millisecondes avant la prochaine boucle
}
}
/*
clignote un voyant
*/
Sub blink (int whatPin, int howManyTimes, int milliSecs) {}
int i = 0 ;
pour (i = 0; i < howManyTimes; i ++) {}
digitalWrite (whatPin, HIGH) ;
Delay(milliSecs/2) ;
digitalWrite (whatPin, basse) ;
Delay(milliSecs/2) ;
}
}