A4988 Pololu si alguien me explica

#1
hola, en verdad no sabia donde poner este tema, no se si esta ok aca.

estaba mirando esta placa , de arduino, llamada Driver Pololu A4988
y me pase a la hoja de datos de el chip:

https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf

no es para ningun uso en especial, solo que me gusta entetenerme leyendo acerca de distintos chips.
y mirando en la hoja de datos veo :en pagina 8 , 15 y 16 imagenes de ondas senoidales escalonadas.
yo de ingles no se mucho .
pense que ese ci con esa configuracion de transistores a la salida mandaba pulsos .
pero en las imagenes veo que "crea" ondas senoidales.
es asi ?
o estoy errado?
 
#3
huy !! me encanto la pagina !! mil gracias, pero mil gracias !!!!

les puedo consultar unas cosas ??
por lo que entendi de esa pagina " REGULACIÓN DE INTENSIDAD (CHOPPING) " es un PWM .
eso lo entiendo , ahi ,los MOSFET de el puente H trabajan en corte y saturacion..


pero MICROSTEPPING , si no me equivoco para hacer eso , no es con coerte y saturacion , seria que los MOSFET estan trabajando en forma lineal ? soportando entonces potencias altas ?
es asi ?
 
Última edición:
#4
En microstepping siguen trabajando en corte/saturación pero con distintos anchos de pulso según conveniencia cuando se van activando las bobinas en cadena, salvo en el modo de medio paso que el ancho de pulso es el mismo.
 
Última edición:
#5
hola, pero en las imagenes veo una senoidal, o sea una tension que varia de forma senoidal.

para mi esto es variar ancho de pulso:



ah... me parece que es esto ( la segunda imagen ) ..... que tramposos ....

gracias, voy a leer mas de el tema.
 

Adjuntos

Última edición:
#6
hola, pero en las imagenes veo una senoidal, o sea una tension que varia de forma senoidal.

para mi esto es variar ancho de pulso:



ah... me parece que es esto ( la segunda imagen ) ..... que tramposos ....

gracias, voy a leer mas de el tema.
Si, pero es una senoidal creada por pwm.
Mira por ejemplo los amplificadores clase D, les mandas una senoide a la entrada y te tiran una senoide a la salida, pero los transistores nunca trabajan en activa.
Edit: eso es (y)
Aunque no es una trampa ;)
 
Última edición:
#7
es que no es senoide en amplitud...

si pones un osciloscopio no ves senoide, ni escalonada, ni nada, ves ese PWM que esta en el fondo .
a mayor amplitud de la senoide, mas tiempo esta el PWM en 1 .
pero no tiene nada de senoide.

Ver el archivo adjunto 162408


una gorda de 140 kilos no es equivalente a 2 chicas de 70
una señora de 80 años no es equivalente a 2 de 40
y dejar prendida una luz 8 horas si y 8 horas no no es equivalente a estar prende y apaga la luz con la tecla 10 segundos si y 10 segundos no .... aunque al final el gasto de electricidad sea el mismo .

entiendo el concepto, pero no es lo mismo.

en el caso de este chip y la imagen que puse, son pulsos de cuadrada, abruptos, son todos 1 y 0 ..
vcc y 0v .
ya comprendo el concepto, pero en muchos aparatos eso no es senoide, esto lo toman como que es equivalente por que para el motor , pues le vale.
 
Última edición:
#8
para un pwm normal es una señal trinagular y una tensión continua, si reemplazas esta última por una senoidal te lo que tu has mostrado
 
#10
Saludos, amigos.

Estoy haciendo un control para un motor paso a paso bipolar con un control inalámbrico RF.
El motor debe empezar a girar en un sentido oprimiendo un botón, luego oprimiendo otro botón, girar en sentido contrario.
Lo que requiero es añadir finales de carrera para que el motor se detenga en sus extremos, lo cual no he podido implementar en el código.
Por favor, si alguien puede asesorarme, le agradezco inmensamente.

Diagrama:
Control Motor Paso A Paso Mando RF.png
Este es el código sobre el que empecé a trabajar:
C++:
#define STEP 8      // pin STEP de A4988 a pin 8
#define DIR 7     // pin DIR de A4988 a pin 7
#define BotonArriba 9 // pin boton arriba
#define BotonAbajo 10// pin boton abajo
#define FinalArriba 12 //final de carrera extremo supeiror
#define FinalAbajo 11 //fianl de carrera extremo inferior

void setup()
{
  pinMode(STEP, OUTPUT);  // pin 8 como salida
  pinMode(DIR, OUTPUT);   // pin 7 como salida
  pinMode(BotonArriba, INPUT); // pin 9 como lectura
  pinMode(BotonAbajo, INPUT); // pin 10 como lectura
  pinMode(FinalArriba, INPUT_PULLUP); // pin 12 como lectura
  pinMode(FinalAbajo, INPUT_PULLUP); // pin 11 como lectura
}

void loop()
{
  if (digitalRead(9) )     // Si se oprime botón arriba inicia giro
  {digitalWrite(DIR, HIGH);    // giro en un sentido
  for(int i = 0; i < 7000; i++){     // 7000 pasos para la carrera completa
    digitalWrite(STEP, HIGH);       // nivel alto
    delay(2);          // por 10 mseg
    digitalWrite(STEP, LOW);        // nivel bajo
    delay(2);          // por 10 mseg
  }
  }

   if (digitalRead(10) )     // Si se oprime botón arriba inicia giro
  {digitalWrite(DIR, LOW);    // giro en un sentido
  for(int i = 0; i < 7000; i++){     // 7000 pasos para la carrera completa
    digitalWrite(STEP, HIGH);       // nivel alto
    delay(2);          // por 10 mseg
    digitalWrite(STEP, LOW);        // nivel bajo
    delay(2);          // por 10 mseg
  }
  }
}
Control Motor Paso A Paso Mando RF.jpeg
 

Temas similares


Arriba