Go Down

Topic: Control de Velocidad Motor CC (Read 3605 times) previous topic - next topic

Alonso Lazcano

Hola Foreros que tal. Bueno mi consulta de esta vez, es que estoy tratando de controlar 4 motores con arduino. y necesito controlar sus velocidades de giro. Ocupo como driver un SN754410 para controlar el sentido de giro y la corriente.
Se que se hace con PWM, pero lo que no se si se hace directamente en las entradas de control del driver, o en la alimentacion de los motores.
Si es asi, diecimila tiene solo 6 salidas PWM, se pueden generar otras mas?.. o se puede hacer manualmente en cualquier salida, EJ

pinMode(7,HIGH);
delayMicroseconds(100);
pinMode(7,LOW);
delayMicroseconds;(50);

cual es la frecuencia maxima que puede tener una salida (NO-PWM) del arduino?..

Son varias preguntas, espero puedan ayudarme.
Gracias!

ionhs

#1
Aug 24, 2011, 11:03 am Last Edit: Aug 24, 2011, 11:05 am by ionhs Reason: 1
Nunca he usado este ya que suelo usar el L293D (600mA) o L293B (1A pero requiere diodos adicionales) por lo que veo el SN754410 suministra hasta 1A. Con cada integrado SN754410 puedes controlar hasta 2 motores independientemente. La madre del cordero es mirar en el datasheet la tabla


Creo que le falta información ya que tengo un documento que busque en internet que dice que el funcionamiento del SN754410=L293

Te adjunto un documento (hay que estar registrado para verlo) y mira la tabla de la página 9. Puedes mirar el resto del documento pero esta un poco desordenado.
Segun la tabla:
A1=L A2=H gira  derecha
A1=H A2=L gira izquierda
aunque para controlar la velocidad de giro de 4 motores habría que usar 8 PWM se puede controlar con 4 PWM haciendo un pequeño truco y comiendote un poco la cabeza. Haber si no me lio y lo explico bien.

para que gire a la derecha A1=L y A2=PWM (cuando los pulsos sean anchos irá a más velocidad y cuando los valles sean anchos irá a poca)

aquí está el truco:
para que gire a la izquiera A1=H y A2=PWM (cuando los pulsos sean anchos irá a poca velocidad y cuando los valles sean anchos irá a mucha)
Todo el rato jugamos con la combinación A1=H y A2=H que es parar y A1=H y A2=L que es girar a izquierda.

Alonso Lazcano

ohh.. exelente muchas gracias ya lo probé y funciona exelente, lo que si, no se puede fijar una variable para velocidad general, por que una velocidad tiende a ser maxima al acercarse a 255, y la otra tiende a ser maxima al acercarse a 0.
Funciona excelente. Muchas gracias !

ionhs

Si eso me hace volverme un poco loco, yo lo que hice fue crear 2 funciones una para ir adelante y otra para ir a tras. De esa manera cuando quiero ir adelante llamo a esa función y si quiero ir hacia atrás llama a la otra.


int adelante()
{
  digitalWrite(DchaDelante, HIGH);
  analogWrite(DchaVelocidad, 0);
}

int atras()
{
  digitalWrite(DchaDelante, LOW);
  analogWrite(DchaVelocidad, 255);
}


Para enviar a la velocidad que quieres ir sería enviar a la función una variable con la velocidad y que la función convierta esa velocidad a la escala correspondiente. Te vas a comer un poco la cabeza creando la función pero si la haces bien luego la función será trasparente y no tendrás que pensar como hacen el trabajo. SAlu2

Go Up