Paso 4: Hacer el circuito del motor DC
http://ITP.nyu.edu/physcomp/Labs/DCMotorControl
Usted tendrá que seguir las instrucciones fácil para hacer que el motor de la C.C. con dirección controlable mediante un circuito de puente en H integrado. Los cambios de dirección se hacen vía un interruptor conectado a entrada digital de Arduino.
Al principio, usé una fuente de alimentación externa para mi voltaje de motores DC. Esto me permitió poder Diecimila vía USB y también la capacidad para cargar mi programa de Arduino en el microcontrolador de Arduino.
He decidido agregar un control de velocidad para el circuito del motor agregando un circuito potenciómetro simple que utiliza el Arduino + salida 5V y su tierra. Enviar el voltaje del circuito del potenciómetro en la entrada analógica 0 en la placa Arduino.
Por último, he subido el siguiente código (basado en el código del sitio web con el control del potenciómetro agregado) a Arduino por lo que puedo controlar velocidad y dirección del motor:
int switchPin = 2; entrada del interruptor
int motor1Pin = 3; Puente H pata 1
int motor2Pin = 4; Puente H pata 2
int speedPin = 9; Puente H activar pin
int ledPin = 13; LED
int potPin = 0; Clavija de entrada analógica que el potenciómetro está conectado a
int potValue = 0; valor leído de la olla
void setup() {}
Coloque el interruptor como entrada:
pinMode (switchPin, entrada);
Serial.Begin(9600);
establecer todas las clavijas que utilizas como salidas:
pinMode (motor1Pin, salida);
pinMode (motor2Pin, salida);
pinMode (ledPin, salida);
conjunto speedPin alta para que el motor puede girar:
digitalWrite (speedPin, HIGH);
parpadea el LED 3 veces. Esto debe suceder solamente una vez.
Si ves el parpadeo del LED tres veces, significa que el módulo de
resetea. probablemente debido a que el motor de un apagón
o un cortocircuito.
Blink (ledPin, 3, 100);
}
void loop() {}
Si el interruptor está alta, el motor girará en un sentido:
Serial.println(potValue); imprimir el valor del bote hacia el panel Depurador
Si (digitalRead(switchPin) == HIGH) {}
digitalWrite (motor1Pin, bajo); conjunto pata 1 de bajo puente en H
digitalWrite (motor2Pin, HIGH); conjunto pata 2 del H-puente alto
potValue = analogRead(potPin); leer el valor del pote
analogWrite (speedPin, potValue/4); PWM speedPin con el valor del pote (dividido por 4 para caber en un byte)
}
Si el interruptor es bajo, el motor girará en sentido contrario:
Else {}
digitalWrite (motor1Pin, HIGH); conjunto pata 1 del H-puente alto
digitalWrite (motor2Pin, bajo); conjunto pata 2 de bajo puente en H
potValue = analogRead(potPin); leer el valor del pote
analogWrite (speedPin, potValue/4); PWM speedPin con el valor del pote (dividido por 4 para caber en un byte)
Delay(10); esperar 10 milisegundos antes del siguiente bucle
}
}
/*
parpadea un LED
*/
{} void blink (int whatPin, int howManyTimes, int milliSecs)
int i = 0;
para (i = 0; i < howManyTimes; i ++) {}
digitalWrite (whatPin, HIGH);
Delay(milliSecs/2);
digitalWrite (whatPin, bajo);
Delay(milliSecs/2);
}
}