Ayuda para controlar motor floppy disk con arduino UNO

Llevo una temporada jugando con el arduino UNO intentando controlar el giro de un motor de paso que recicle de un floppy. Escribi un programa para excitar los bobinados del motor en una secuencia concreta para hacer girar el motor, pero al lanzarlo, el motor gira unos 10 grados y en el siguiente cambio de excitacion de los bobinados vuelve a girar unos 10 grados devolviendolo al sitio donde estaba. He probado mil cosas y lo maximo que he conseguido es lo comentado. El susodicho programa es este:

int espera=100;
int i;
void setup()
{
  pinMode(2, OUTPUT);//A1
  pinMode(4, OUTPUT);//A3
  pinMode(7, OUTPUT);//B1
  pinMode(8, OUTPUT);//B3
  digitalWrite(2,LOW);
  digitalWrite(4,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  pinMode(13, OUTPUT);
  Serial.begin(9600);

}
void loop ()
{
  analogWrite(13,LOW);
  int boton;
  boton= analogRead(0)/4;
  Serial.println(boton);
  for(i=0;i<=3;i++)
  {
    if(i==0)
    {
      digitalWrite(2,HIGH);
      digitalWrite(4,LOW);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      Serial.println("Step 0");
      delay(espera);
    }
    if(i==1)
    {
      digitalWrite(2,HIGH);
      digitalWrite(4,LOW);
      digitalWrite(7,LOW);
      digitalWrite(8,HIGH);
      Serial.println("Step 1");
      delay(espera);
    }
    if(i==2)
    {
      digitalWrite(2,LOW);
      digitalWrite(4,HIGH);
      digitalWrite(7,LOW);
      digitalWrite(8,HIGH);
      Serial.println("Step 2");
      delay(espera);
    }
    if(i==3)
    {
      digitalWrite(2,LOW);
      digitalWrite(4,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      Serial.println("Step 3");
      delay(espera);
    }
    analogWrite(13,HIGH);
  }
  Serial.println("Fuera");
  digitalWrite(2,LOW);
  digitalWrite(4,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
}

No se si estoy haciendo algo mal o es que el arduino no tiene suficiente potencia como para excitar los bobinados, espero que alguien me pueda ayudar :smiley:
Edit: Me olvide de comentar, el motor del floppy tiene cuatro cables, segun entiendo cada par de cables corresponde a un bobinado del motor. He conectado la primera bobina a las salidas 2 y 4 del arduino y la segunda bobina a las salidas 7 y 8 del bobinado.

1 Like

En serio conectaste el motor a las salidas del arduino que entregan 40mA maximo 200mA en total y crees que debe funcionar? error.
Minimamente debes usar MOSFET para poder entregar mas corriente a los bobinados. Suponiendo que este todo bien conectado.
Como no subes diagrama de conexiones no puedo adivinar.
Aca te pongo un par de ideas para tu proyecto.

Lee un poco sobre puentes H. Tienes que armar esto
aca tienes un enfoque posible

o aca lo comandan directamente desde el conector del floppy

Gracias por contestar surbyte, me imaginaba que era eso, soy muy novato con esto de la electrónica, también había probado a usar unos transistores como "interruptores de una alimentación externa, conectando las salidas del arduino a la base de estos, pero no era capaz de hacerlos cambiar de estado. Voy a estudiar el tema de los puentes H y voy comentando por aquí el progreso, muchas gracias :grinning:

Vale, vengo de probar el puente H y tengo un problema. He montado este puente H:


como alimentacion he conectado una fuente de alimentacion de ordenador con salida de 5v en vez de 12v. Cuando activo la salida digital 1 entre pines del motor tengo 5v y cuando activo la salida 2 tengo -5v con 200mA de corriente. Para probar el puente estoy usando un motor normal de continua de los pequeños pero no lo mueve. ¿Que estoy haciendo mal? :cry:

Pusiste la masa de tu puente H unida a la masa del arduino? Si no referencias ambos circuitos el Puente H nunca se va a enterar de las ordenes del Arduino.

Veamos si es eso.

Estaba "mandando" las señales del arduino manualmente, es decir, los cables que deberían ir al arduino los colocaba yo en +5 o 0v dependiendo lo que quisiera.

Saludos.

Los pines digitales del puente H siempre deben estar atados a señal. A lo que me refiero es que quieres hacer girar hacia un lado uno de los pines debe estar a tierra y el otro a VCC, si quieres invertir el giro, el primero que esraba en GND pasa a VCC y el que estaba en VCC a GND, (VCC= HIGH, GND =LOW), ahora si dejas a uno de los pines al aire no va a funcionar.

Si, no debí explicarme bien, en todos los casos siempre tengo un circuito cerrado, es mas si pongo un LED en el hueco del motor polarizado en directa obviamente, este enciende, osea que hay corriente pero si pongo un motor nada, debe de haber corriente insuficiente :drooling_face:

Me corrijo, el motor solo recibe 20mA de corriente por lo tanto supongo que no tiene ni de lejos corriente suficiente como para moverse.

Estoy utilizando transistores npn para el puente, no si esa podría ser la causa de la poca corriente que recibe...

Bueno lo que esta pasando es que los transistores de la rama superior no alcanzan a conmutar.
El transistor de la rama de abajo se satura perfecto porque recibe la orden HIGH y la tensión Vbe llega tranquilamente a los 0.7V ya que
5 - IbxR - 0.7 = 0
Pero en la rama superior, de nuevo tenemos 5 - ibxR - 0.7 - Vmotor - Vce2 = 0
Lo que se suele usar son transistores PNP y no NPN para dicha rama.


Ahi tienes un ejemplo de puente posible para baja corriente 1A
Considera tambien usar un L293

Ah vale, entonces al cambiar la alimentacion del diagrama de 12V a 5V no tuve en cuenta eso :/, los integrados no he pensado utilizarlos ya que no tengo, voy a hacer el diagrama que me has pasado con los pnp y luego comento el resultado.

Gracias por la paciencia xD

Te aclaro. No he probado puentes con TBJ. Siempre los hago con MOSFET.

Yo uso el diagrama que surbyte publico con los TIP. Y soportan 3A. También he usado BJT. Con la misma configuración y se calientan y dañan rápido. Así que usa esos TIP o otros Mosfet con