Pic
shadow
NOTA: Si quieres una explicación más detallada de cómo controlar motores con Pinguino consulta el tutorial correspondiente

Vamos a utilizar el L293D. Este driver permite controlar hasta dos motores de CC con un mismo chip. Este módelo se diferencia del resto de LM293x por no necesitar diodos externos para funcionar correctamente.

  • Protoboard Ampliar
    Esquema Ampliar

Hemos conectado dos de las patillas de control a los pines PWM para poder controlar la velocidad de giro del motor cómo Pinguino unicamente posee dos de estas salidas sólo podremos controlar la velocidad de los dos motores en una dirección (generalmente se usa para cuando avanza). Con elcircuito montado unicamente nos falta subir un programa a Pinguino que controle estos motores:

	    void setup(){  
    //Colocamos todos los pines que controlan los motores como salidas  
            pinMode(10,OUTPUT);  
            pinMode(11,OUTPUT);  
            pinMode(12,OUTPUT);  
            pinMode(15,OUTPUT);  
      
    }  
      
    void loop(){  
      
        //Ponemos los dos motores en una dirección  
        digitalWrite(11,HIGH);  
            digitalWrite(12,HIGH);  
            digitalWrite(10,LOW);  
            digitalWrite(15,LOW);  
      
        //invertimos la dirección  
        digitalWrite(10,LOW);  
            digitalWrite(12,LOW);  
            digitalWrite(10,HIGH);  
            digitalWrite(15,HIGH);  
      
        //movemos solo uno  
        digitalWrite(11,LOW);  
            digitalWrite(12,HIGH);  
            digitalWrite(10,LOW);  
            digitalWrite(15,LOW);  
      
        //movemos el otro   
        digitalWrite(11,HIGH);  
            digitalWrite(12,LOW);  
            digitalWrite(10,LOW);  
            digitalWrite(15,LOW);  
      
            //Paramos todo  
            digitalWrite(11,LOW);  
            digitalWrite(12,LOW);  
            digitalWrite(10,LOW);  
            digitalWrite(15,LOW);  
      
      
    //aceleramos  
      
        for(i=0; i<=255; i++){  
            analogWrite(11, i);  
            analogWrite(12, i);  
            digitalWrite(10,LOW);  
                digitalWrite(15,LOW);  
        }  
      
              
      
    //deceleramos  
        for(i=255; i>0; i--){  
            analogWrite(11, i);  
            analogWrite(12, i);  
            digitalWrite(10,LOW);  
                digitalWrite(15,LOW);  
        }  
      
    //esperamos  
    delay(3000);  
      
      
      
    }  
	

Este programa encendera primero ambos motores en una dirección, tras unos instantes cambiará el sentido de giro de los motores, despues sólo moverá uno, a continuación ese parará y comenzará a moverse el otro. Por ultimo parara los dos y empezará a acelerarlos hasta el máximo, una vez lograda la velocidad máxima comenzará a frenarlos poco a poco hasta parar. Esperará 3 min antes de volver a empezar la secuencia.