Arduino. Exemplo 8: Control de motor por PWM

Con esta montaxe contrólase a velocidade dun motor por PWM (modulación por impulsos). Utilizamos un transistor de media potencia para a posta en marcha cando accionamos o interruptor de arranque. Ao accionar o interruptor de arranque, detectamos unha entrada no pin 9 e facemos que  na saída 5 PWM apareza unha voltaxe proporcional a lectura analóxica da entrada 0 regulada polo potenciómetro. A corrente que sae polo pin 5 cara ao transistor fai que este entre na zona activa, permitindo así que pase polo motor unha corrente proporcional a que recibe o transistor pola base.


Esquema:

control da velocidade dun motor

Programa:
 /* Exercicio 8 Control dun motor con axuda dun transistor e un potenciómetro
para controlar a velocidade. Con un pulsador verde activamos o motor e con un
pulsador vermello parámolo. O accionamento do relé controlamolo con un transistor.*/

int pulsador9 = 9;   // o pulsador verde está conectado no pin 9
int pulsador8 = 8;   //  o pulsador vermello está conectado no pin 8
int pin5=5;  // activamos o pin 5 para enviar un
// sinal a base do transistor para activalo
int valoranalox;  //valor e nome da variable analóxica asociada co valor do potenciómetro
int estadop9;  // Variable dixital de entrada, cando accionamos o pulsador verde activamos esta entrada
int estadop8;  //Variable dixital de entrada, cando accionamos o pulsador vermello activamos esta entrada

void setup()   {
// estado inicial da placa e pulsador
Serial.begin(9600);  // velocidade de comunicación de datos da placa ao ordenador
pinMode(pulsador9, INPUT); // pin 9 é unha variable de entrada
pinMode(pulsador8, INPUT); // o pin 8 é unha variable de entrada
pinMode (pin5,OUTPUT);     // o pin 5 é unha variable de saída
}

void loop()
{
valoranalox=analogRead(0);  //lectura do valor da entrada analóxica 0 (valor da V a saída do potenciómetro)
// este dato representase con 10 bit, vai de 0 a 1023
estadop9 = digitalRead (pulsador9); //leemos o estado do pulsador verde (9), será 1( pulsado) ou 0 (sen pulsar)
estadop8 = digitalRead (pulsador8);  // leemos o estado do pulsador vermello (8), será 1 (pulsasdo) ou 0 (sen pulsar)
if (estadop9 > 0){  // se o pulsador verde está pulsado o pin 9 toma un valor destinto de 0
analogWrite (pin5,valoranalox); // o accionar o pulsador verde enviamos un sinal a base do transisor para activala
Serial.println(valoranalox);
}
else {                     //se non accionamos 9
if (estadop8 > 0)          // e accionamos 8
analogWrite (pin5,0);    // deixamos de activar o transistor e o motor apaga
}
}


Vídeo:

Etiquetado con: , , ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*