Autor Tema: Motor de disco duro  (Leído 26449 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Motor de disco duro
« en: 19 de Abril de 2006, 20:18:45 »
Hola

tengo un motor de disco duro que le saqué a un Caviar de Western Digital, según recuerdo. Seguramente en su buen funcionamiento giraba a 5400rpm.

Ahora lo estoy usando para intentar crear un display giratorio. El motor tiene 3 líneas a las cuales soldé cables naranja, azul y negro. La resistencia que miden las terminales entre cualquier línea es de 6.2ohm.

Y ya lo hice funcionar con un pic16f84a, pero aquí viene la duda... cuando da el quinto paso, que es cuando reinicia el ciclo de pasos, lo da con más fuerza que los demás pasos, se jala más el motor.

Estoy controlando el motor como si fuera de pasos, pero la verdad no sé si esté haciéndolo bien, ya que ese jalón que da en un paso está muy raro. ¿Qué estará pasando?

Les adjunto el programa por si les hace falta:

Código: [Seleccionar]
/*
migsantiago@tutopia.com
Programa que maneja el motor de un disco duro. Según pruebas, los datos para
manejar los pasos del motor son:

Na Az Ne Giro
+  +  -  inicio
+  -  -  H
+  -  +  H
-  +  +  H
-  +  -  H
+  +  -  H
--------------
+  +  -  inicio
-  +  -  AH
-  +  +  AH
+  -  +  AH
+  -  -  AH
+  +  -  AH

A2(naranja), A1(azul) y A0(negro) se usarán para las tres terminales del motor.
*/

#include "16F84a.h"
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT,NOPUT

int8 estados[]={0b00000110,0b00000100,0b00000101,0b00000011,0b00000010};
int8 i=4; //elemento del array estados

/*
int8 edo1=0b00000110;
int8 edo2=0b00000100;
int8 edo3=0b00000101;
int8 edo4=0b00000011;
int8 edo5=0b00000010;
*/

void main (void)

{
set_tris_a(0x00);

while(1)
{
output_a(estados[i]);
delay_ms(500);
i--; //gira antihorario
if(i==0xff) i=4;
}

}


Edito: buscando información encontré este sitio, aunque no me resuelve mi duda...

http://home.clear.net.nz/pages/joecolquitt/0hdd.html
« Última modificación: 19 de Abril de 2006, 22:43:45 por migsantiago »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #1 en: 19 de Abril de 2006, 23:12:17 »
Bueno revisando la página de nuevo me doy cuenta de que me estaba haciendo falta un paso, el 001.  :D

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Motor de disco duro
« Respuesta #2 en: 19 de Abril de 2006, 23:36:27 »
Hola Migsantiago, interesante tu proyecto y viendo que ya alguien te ayudo a solucionar tu problema   :) :)

si no es molestia podrias pegar unas fotitos para ver como lo conectas, pues yo tengo varios para practicar, porque normalmente los desarmo por los rodajes.

Gracias



“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Motor de disco duro
« Respuesta #3 en: 20 de Abril de 2006, 01:12:37 »
Hola migsantiago, te comento que ese tipo de motor lo podes usar como si se tratara de un PaP, pero revisando tu secuencia para el control de las bobinas no llego a deducir cual es, o sea de que forma es la secuencia.

Por otro lado como ese tipo de motor  posee muy pocos pasos te recomendaría que uses el método del medio paso ya que el motor accionará de una manera mas suave. También seria interesante que contaras que tipo de drivers usas, ya sea solo conmutando el negativo y los comunes a positivo, o un puente H.

Si quieres y no consigues hacerlos funcionar bien, te puedo dar una mano.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Motor de disco duro
« Respuesta #4 en: 20 de Abril de 2006, 01:28:43 »
Pues yo creo que con la secuencia que ha publicado, y en la que habría que insertar el 001, sí que está implementado el medio-paso, ¿no?
int8 estados[]={0b00000110,0b00000100,0b00000101,0b00000001,0b00000011,0b00000010};

Yo pensaba que los motores de los discos duros eran brush-less, la verdad es que no sé para qué necesita un disco duro un motor de pasos  :?

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #5 en: 20 de Abril de 2006, 01:34:26 »
Hola amigos

Es un motor de 3 hilos sacado directamente de un disco duro. Se maneja como motor a pasos. Solo hay que encontrar la secuencia de voltajes que hay que aplicar a los 3 hilos para que dé 6 pasos seguidos. Mi error estaba en que encontré la secuencia, pero de 5 pasos en vez de 6  :D

Veguepic, talvez tus motores sean de 4 hilos, solo mídeles las resistencias para determinar como están conectadas las bobinas internamente.

El diagrama luego se los paso, pero no tiene gran ciencia, uso el L293B para pasar los pulsos del pic al motor, por ahora solo me falta agregarle unos diodos para proteger al pic. Uso unas pilas de 3V (2.5 casi jeje) y el motor gira bien. No importa el voltaje que apliquen, mientras la frecuencia sea apropiada, el motor girará a la velocidad que quieran, pero claro, con un torque proporcional al del voltaje.

Chaly, gracias por la ayuda, la secuencia ya está corregida en el siguiente programa. Este ya funciona al 100% pero el motor gira con una velocidad muy lenta (por ahora).

Código: [Seleccionar]
/*
migsantiago@tutopia.com
Programa que maneja el motor de un disco duro. Según pruebas, los datos para
manejar los pasos del motor son:

Na Az Ne Giro
+  +  -  inicio
+  -  -  H
+  -  +  H
-  -  +  H **
-  +  +  H
-  +  -  H
+  +  -  H
--------------
+  +  -  inicio
-  +  -  AH
-  +  +  AH
-  -  +  AH **
+  -  +  AH
+  -  -  AH
+  +  -  AH

A2(naranja), A1(azul) y A0(negro) se usarán para las tres terminales del motor.
*/

#include "16F84a.h"
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT,NOPUT

int8 estados[]={0b00000110,0b00000100,0b00000101,0b00000001,0b00000011,0b00000010};
int8 i=5; //elemento del array estados


/*
int8 edo1=0b00000110;
int8 edo2=0b00000100;
int8 edo3=0b00000101;
int8 edo3.1 = 0b00000001; //faltaba este estado
int8 edo4=0b00000011;
int8 edo5=0b00000010;
*/

void main (void)

{
set_tris_a(0x00);

while(1)
{
output_a(estados[i]);
delay_ms(25);
i--; //gira antihorario
if(i==0xff) i=5;
}

}


La secuencia es cada elemento del array, pasa del 5 al 4, al 3 y así sucesivamente.

Ahora mi problema No. 2 es que para lograr una velocidad decorosa de parte de este motorcito (3000rpm serían geniales) necesito conocer una curva de velocidad vs. tiempo característica de los motores de discos duros. Se tiene que empezar girándolo lento y luego acelerarlo poco a poco, justo como cuando encienden su PC y se oye el zumbido acelerado del disco.

Empecé haciendo programas en los que el tiempo entre pasos se iba decrementando. Empezaba en 25ms (como en el programa) y llegaba hasta 5ms. Pero después de ahí, a los 4ms, el motor se detenía, es decir, acelero muy rápido de 5 a 4ms el paso y el motor se aloca.  :D

También hice un programa que hiciera uso del tmr0 pero me costó igual de trabajo y no queda bien.

Chaly, ¿qué me recomiendas?


Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Motor de disco duro
« Respuesta #6 en: 20 de Abril de 2006, 01:54:47 »
Hola migsantiago, manolo tiene razon ya estaba funcionando con los medios pasos  :? perdon.

Pues no creo que por pasar muy rapido de 5 a 4 ms se te pierda el motor, debe de ser mas probable que la baja tensión con cual lo estas alimentando no le genere suficiente potencia para seguir acelerando, yo trataria de aumentar la tensión a por lo menos a 5V y despues nos cuentas.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #7 en: 20 de Abril de 2006, 01:58:20 »
OK, lo intentaré mañana Chaly, ya son las 12am aquí y ya hace sueño.  :ni)

Gracias

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #8 en: 20 de Abril de 2006, 13:38:07 »
Ya intenté con una fuente de 5V a 1A y el resultado fue el mismo, en cierto punto el motor deja de girar. ¿Podrá ser que falta más potencia? El motor tiene bobinas de 6.2ohm. Haciendo cálculos creo que la corriente requerida es de 0.8A a 5V. No sé como se calcula la corriente en estos motores  :oops:

Adjunto el programa acelerador...

Código: [Seleccionar]
/*
migsantiago@tutopia.com
Programa que maneja el motor de un disco duro. Según pruebas, los datos para
manejar los pasos del motor son:

Na Az Ne Giro
+  +  -  inicio
+  -  -  H
+  -  +  H
-  -  +  H **
-  +  +  H
-  +  -  H
+  +  -  H
--------------
+  +  -  inicio
-  +  -  AH
-  +  +  AH
-  -  +  AH **
+  -  +  AH
+  -  -  AH
+  +  -  AH

A2(naranja), A1(azul) y A0(negro) se usarán para las tres terminales del motor.

Ahora se ajustará la velocidad empezando lentamente hasta que llegue a una alta
velocidad.
*/

#include "16F84a.h"
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPROTECT,NOPUT

int8 estados[]={0b00000110,0b00000100,0b00000101,0b00000001,0b00000011,0b00000010};
int8 i=5; //elemento del array estados
int8 tiempo_ms=25; //comienza en 25ms

/*
int8 edo1=0b00000110;
int8 edo2=0b00000100;
int8 edo3=0b00000101;
int8 edo3.1 = 0b00000001; //faltaba este estado
int8 edo4=0b00000011;
int8 edo5=0b00000010;
*/

////////////////////////////////////////////////////////////////////////////////

void main (void)
{
set_tris_a(0x00);

while(1)
{
output_a(estados[i]);
delay_ms(tiempo_ms);
i--; //gira antihorario

if(i==0xff)
{
   i=5;
   if(tiempo_ms>1)
   {
      tiempo_ms--; //acelera pasos
   }
}
}

}

No sé que otra cosa pude ser, necesito conocer la curva de V vs. t para darme idea de la aceleración requerida.  :(

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Motor de disco duro
« Respuesta #9 en: 20 de Abril de 2006, 13:45:21 »
Mira este artículo, a ver si te sirve de algo:
http://www.epanorama.net/circuits/diskstepper.html

De todas formas, sigo pensando que ese motor no es un paso a paso, sino un brushless  :?

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #10 en: 20 de Abril de 2006, 13:56:03 »
Gracias Manolo, ya la había revisado. Lo que comenta es que los motores de discos duros viejos antes eran a pasos, pero que los de ahora ya son "voice coil", pero no sé qué es eso, una traducción sería embobinado de voz. Incluso el autor dice que si se conecta el motor a un amplificador de audio se puede obtener sonido  :shock:

Me imagino que el problema que tengo ahorita es el de la potencia, a ver que nos comenta el gran Chaly.

Pienso que el motor internamente es como en esta figura:



Ya que cuando mido entre cualquier terminal salen 6.2ohm.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Motor de disco duro
« Respuesta #11 en: 20 de Abril de 2006, 17:48:16 »
Hola migsantiago, el gran Manolo tiene razón, este tipo de motores son los llamados brushless, nunca se usaron los PaP en los discos rígidos, pero lo que yo decía es que al poseer el rotor con imán permanente pueden ser usados como motores de paso.

El calculo que as usado es una aproximación a la realidad, pero debes acordarte que estas usando el sistema de medio paso, por lo tanto en determinado momento tienes 2 bobinas activas, lo que generaría una circulación de corriente de 0.8*2=1.6A, por lo que tu fuente estaría un poco corta.

Lo que as leído es verdad, esos motores si pueden generar audio, como así también los PaP, estos motores generaran un audio senoidal, de una frecuencia igual a las revoluciones por segundo que se le imprima, o un múltiplo de ellas dependiendo de su construcción.

En el esquema que a posteado migsantiago, podemos ver que a ese motor lo están haciendo funcionar con un puente H, y le generan una señal cuadrada, con un ciclo activo de 50% y entre cada fase un desfasaje de 120°, en pocas palabras, lo hacen funcionar como un motor trifásico común y corriente, y en conexión triangulo.

Por otro lado puedes ver que lo alimentan con 12 Vcc y tu solo lo haces con 2.5 o 5 malos  :?   , como ya te comente el tema de la alimentación en este tipo de motores es muy importante, sobre todo en el momento de la aceleración ya que usa toda su potencia, por lo que te vuelvo a repetir lo mismo, ponle más tensión que por cuestiones físicas no tendría por que perderse, es como si a un motor trifásico común al conectarlo a la red se perdiera porque se lo esta tratando de acelerar muy rápido  :)

Otra cosa a tener en cuenta es mirar que tipo de conexión tienes en tu motor, pueden ser 3, estrella y triangulo, la de tu esquema migsantiago, es la triangulo y la estrella es con todos los principios de las bobinas a un punto común y a los cables de salida el final de cada bobina, el punto común del que hable antes puede tener salida al exterior o no, por lo que solo viendo los cables no podrás saber que tipo de conexión posees, en definitiva a desarmar y estudiar la conexión.

Todo lo que anteriormente vinimos hablando es solo aplicable a un motor en conexión estrella y con el punto en común conectado a positivo, por lo que si tienes otro tipo de conexión no te andará de manera correcta.

En el adjunto pongo los 2 tipos de conexiones que existen y las variantes.

Espero tu respuesta.

Un saludo

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #12 en: 20 de Abril de 2006, 19:03:10 »
Hola de nuevo

Ya conseguí mayor power para hacer girar este motorcito, usé una fuente de PC que entrega 5V a 22A. Probé el mismo circuito con el mismo programa acelerador y se siguió trabando el motor.  :(

El siguiente paso es echar a andar el motor con 12V, el problema es que necesito hacer un puente H más resistente, ya que el L293B solo resiste 2A en picos y no estoy seguro de que aguante. He leído que se le puede poner disipador, pero es empaque DIP y no conozco disipadores así, ¿será que poniéndole una plaquita de metal disipa bien?

Sobre el tema de la conexión... hice lo siguiente:

- Mido entre los hilos y obtengo 6.2ohm, cualquier combinación.
- Si cortocircuito 2 hilos y mido (B+C y A), obtengo una R de 4.8ohm. Esto me indica que la conexión NO es delta, ya que si fuera delta obtendría 3.1ohm (2 bobinas de 6.2 en paralelo). Deduzco que la conexión es estrella ya que la medición entre cualquier terminal es 6.2... si hay 2 bobinas entonces cada bobina vale 3.1ohm...

B y C cortocircuitadas, midiendo de A a BC


Solo queda la duda de si el común de la estrella está adentro del motor aunque me parecería ilógico que estuviera ahí  :shock:

Adjunto circuito a medias para Veguepic  :)
« Última modificación: 20 de Abril de 2006, 19:14:04 por migsantiago »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Motor de disco duro
« Respuesta #13 en: 20 de Abril de 2006, 20:09:08 »
Hola migsantiago, lamento comunicarte que la unica manera de hacer funcionar bien ese motor sin pasar a reformarlo internamente es la de usar un PUENTE H como el esquema que as posteado más arriba, , por lo tanto deberas cambiar la forma de ondas para el control, pues la que actualmente estas usando no sebiria.

La onda a generar sera como esta en el esquema, 50% de ciclo activo y un desface de 120° entra cada una.

Espero lo puedas hacer andar.

Otra cosa yo no usaria el L293B para hacer funcionar el motor con 12V ni que tubiera disipador ya que los picos seran mucho mas de 2A.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Motor de disco duro
« Respuesta #14 en: 20 de Abril de 2006, 20:17:28 »
Tendré que descartar este motor para mi display giratorio, de todas formas el voltaje que pide es mucho y para alimentarlo con 2 pilas de 1.5V pues está difícil.

Sobre la corriente máxima que se puede tener de la fuente de 12V me parece que son 12V/4.8ohm = 2.5A. Probablemente los aguante el L293B, pero solo un ratito.   :)

Voy a ver que hago y si logro girarlo más rápido usando 5V. Cualquier cosa les pongo una respuesta.

Gracias a todos por la ayuda  8)


 

anything