Funcão para controlo de motor com PWM

Aproveitando o circuito anterior e para facilitar montagens futuras para controlo de motores, criei uma função. Não é nada de especial mas com os sensores adequados é possível usar para comandar um motor, por exemplo, de um carro telecomandado.

 

Sketch

/*
 * Programa controlar motor com ponte H e comando PWM
 *
 * 20101207 Luis Sismeiro
 *
 * Funcão para controlar um motor de escovas com 2 velocidades.
 */

/* pins usados motor */ 
byte pinPNP1 = 5;
byte pinNPN1 = 10;

/* pins usados motor */
byte pinPNP2 = 9;
byte pinNPN2 = 6;

void setup() {

 /* setup dos pins */
 pinMode(pinPNP1, OUTPUT);
 pinMode(pinNPN1, OUTPUT);
 pinMode(pinPNP2, OUTPUT);
 pinMode(pinNPN2, OUTPUT);

 /* desligar motor */
 analogWrite(pinPNP1, 255);
 analogWrite(pinNPN1, 0);
 analogWrite(pinPNP2, 255);
 analogWrite(pinNPN2, 0);
}

void loop() {
 motorCtr(1);
 delay(2000);
 
 motorCtr(5);
 delay(2000);
 
 motorCtr(1);
 delay(2000);
 
 motorCtr(-1);
 delay(2000);
 
 motorCtr(-5);
 delay(2000);
 
 motorCtr(-1);
 delay(2000);
 
 motorCtr(0);
 delay(2000);
}  
 
void motorCtr(int speedDir) {
 switch(speedDir) {
 case 0: /* para motor */
 analogWrite(pinPNP1, 255); // fechado
 analogWrite(pinNPN1, 0); // fechado
 analogWrite(pinPNP2, 255); // fechado
 analogWrite(pinNPN2, 0); // fechado
 break;
 case 1: /* motor frente nivel 3 */
 analogWrite(pinPNP1, 0); // aberto
 analogWrite(pinNPN1, 55); // forca 3
 analogWrite(pinPNP2, 255); // fechado
 analogWrite(pinNPN2, 0); // fechado
 break;
 case 5: /* motor frente nivel 5 */
 analogWrite(pinPNP1, 0); // aberto
 analogWrite(pinNPN1, 255); // forca 5
 analogWrite(pinPNP2, 255); // fechado
 analogWrite(pinNPN2, 0); // fechado
 break;
 case -1: /* motor tras nivel 3 */
 analogWrite(pinPNP1, 255); // fechado
 analogWrite(pinNPN1, 0); // fechado
 analogWrite(pinPNP2, 0); // aberto
 analogWrite(pinNPN2, 55); // forca 3
 break;
 case -5: /* motor tras nivel 5 */
 analogWrite(pinPNP1, 255); // fechado
 analogWrite(pinNPN1, 0); // fechado
 analogWrite(pinPNP2, 0); // aberto
 analogWrite(pinNPN2, 255); // forca 5
 break;
 }     
}

Etiquetas: ,

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s


%d bloggers like this: