Está en la página 1de 4

PROGRAMA PARA CONTROLAR UN MOTOR PASO A PASO BIPOLAR CON ARDUINO:

Como se puede observar el programa es bastante sencillo basta con ir modificando la secuencia de alimentacin de las bobinas del motor, tal y como se expone en el tutorial, dando un tiempo (mSecPaso) entre cada secuencia con objeto de que se produzca la desmagnetizacin y magnetizacin de los polos correspondientes, variando este tiempo variamos la velocidad del motor; si se utiliza un motor diferente al referenciado, sera necesario comprobar mediante tanteo el valor mnimo y mximo de este parmetro, en nuestro caso esta entre 750 y 2350 aproximadamente. Como se observa en el bucle loop() el programa lo que hace es que el motor gire una vuelta completa en una direccin y otra en sentido contrario, de forma continua. Observese que el motor es de 0,9 grados por paso, luego una vuelta la completara en 360/0,9=400 pasos.
#include <SoftwareSerial.h> //PARA COMUNICACIN CON EL PC //DEFINICION DE VARIABLES //pines del motor paso a paso mA y mB devanado 1, mC y mD devanado 2 int mA=3; int mB=4; int mC=5; int mD=6; int mSecPaso=1500;/*tiempo en microsegundos entre paso y paso la velocidad sera: velocidad=1000000/mSecPaso en vueltas/segundo. Valor minimo 750 maximo 2350 con menos de 750 no arranca con mas de 2350 se salta pasos.*/ void setup() { pinMode(mA, OUTPUT); pinMode(mB, OUTPUT); pinMode(mC, OUTPUT); pinMode(mD, OUTPUT); pinMode(mD, OUTPUT); //INICIAR EN PARO digitalWrite(mA, LOW); digitalWrite(mB, LOW); digitalWrite(mC, LOW); digitalWrite(mD, LOW); Serial.begin(9600); } void izquierda(){ //paso 1 digitalWrite(mA, LOW); digitalWrite(mB, HIGH); digitalWrite(mC, HIGH); digitalWrite(mD, LOW); delayMicroseconds(mSecPaso); //paso 2 digitalWrite(mC, LOW); digitalWrite(mD, HIGH); delayMicroseconds(mSecPaso); //paso 3 digitalWrite(mA, HIGH); digitalWrite(mB, LOW); delayMicroseconds(mSecPaso); //paso 4 digitalWrite(mC, HIGH); digitalWrite(mD, LOW); delayMicroseconds(mSecPaso); }//FIN izquierda

void derecha(){ //paso 1 digitalWrite(mA, HIGH); digitalWrite(mB, LOW); digitalWrite(mC, HIGH); digitalWrite(mD, LOW); delayMicroseconds(mSecPaso); //paso 2 digitalWrite(mC, LOW); digitalWrite(mD, HIGH); delayMicroseconds(mSecPaso); //paso 3 digitalWrite(mA, LOW); digitalWrite(mB, HIGH); delayMicroseconds(mSecPaso); //paso 4 digitalWrite(mC, HIGH); digitalWrite(mD, LOW); delayMicroseconds(mSecPaso); }//FIN derecha void loop() { for(int i=0; i<100; i++) derecha(); delay (1000); for(int i=0; i<100; i++) izquierda(); Serial.print("mSecPaso ="); Serial.println(mSecPaso, DEC); //Muestra el valor de mSecPaso en la pantalla del ordenador delay (1000); //Si se quiere ver la variacin de velocidad en el motor en funcin de mSecPaso, quitar // en la linea siguiente. //mSecPaso+=50; }

Los pines mA, mB, mC y mD van a la placa de Arduino a los pines 3, 4, 5, y 6 respectivamente, en este motor concretamente puede sustituirse la fuente de 12 V por otra de 9V, si este trabaja en vaco o con poca carga. Los diodos son para proteger el integrado L293B de las fuerzas contraelectromotrices de autoinduccin en el motor, parece ser que el modelo L293D ya los lleva incorporados, por lo que podramos prescindir de ellos.

Arduino Ethernet Shield

La Arduino Ethernet Shield permite a una placa Arduino conectarse a internet. Est basada en el chip ethernet Wiznet W5100 (datasheet). El Wiznet W5100 provee de una pila de red IP capaz de TCP y UDP. Soporta hasta cuatro conexiones de sockets simultneas. Usa la librera Ethernet para escribir programas que se conecten a internet usando la shield. Por favor notar que el actual diseo de la ethernet shield no es compatible con el Arduino Mega. La ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y apilarlas sobre la placa Arduino. Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en la ethernet shield. Estos pines no pueden ser usados para e/s genricas. La shield provee un conectore ethernet estndar RJ45 El botn de reset en la shield resetea ambos, el W5100 y la placa Arduino. La shield contiene un nmero de LEDs para informacin:

PWR: indica que la placa y la shield estn alimentadas LINK: indica la presencia de un enlace de red y parpadea cuando la shield enva o recibe datos FULLD: indica que la conexin de red es full duplex 100M: indica la presencia de una conexin de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)

RX: parpadea cuando la shield recibe datos TX: parpadea cuando la shield enva datos COLL: parpadea cuando se detectan colisiones en la red

El jumper soldado marcado como "INT" puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupcin desde el W5100, pero esto no est soportado por la librera Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.