Buenas tardes a todos.
Hace mucho tiempo que no me paso por aqui devido a mi poco tiempo libre.
Porfin he hecho una gran compra(solo una parte de mi proyecto)
la cual mas engorrosa por mi parte ahora mismo es el tema relacionado con los motores DC.
he comprado este controlador:
y estos motores:
aparte ya tengo arduino mega.
1 parte demi proyecto es con 1 arduino mega con su xbee y un joystick hacer que los motores giren hacia un lado o hacia otro. y con unos pulsadores que dispongan de 1 limite de giro.
Es decir
Ejemplo:
pulso boton1+joystick para alante= motor DC1->x velocidad o x vueltas
pulso boton2+joystick para alante= motor DC1->2x velocidad o 2x vueltas
o semejante.
Espero haberme explicado bien
Esa es una parte, y mi problema es el siguiente, Como se programa algo semejante?
(la verdad hay que decir que mi nivel de programacion es decente o en segun que casos muy limitado)
Ahora con que eso me funcione con un arduino en 1 protoboard me conformo.
y luego necesito eso pero con xbee.
es decir en 1 arduino abra el pulsador y el joystick
y en el otro arduino abra el controlador y el motor
Alguna duda?
me he podido explicar bien para haceros la idea?
No creo que sea muy complicado programarlo. Pero porque varias velocidades en botones? los Joystick suelen tener unos potenciómetros, por lo que puedes saber cuanto se ha movido en los dos ejes, así que podrías simplemente simplemente, dar mas o menos velocidad según el giro del Joystick.
Seria algo asi, cada eje estará enganchado a un potenciómetro, por un lado le das 5V, por otro lado a masa, y en el centro lo enganchas en una entrada analógica, supongo que si no mueves el joystick te tendrá que dar unos 2,5v, luego usas la función map() para ajustar la lectura analógica que son 1024 posiciones con la señal PWM que permite 256 cambios. Y para complicarlo mas, mejor seria tener un puente en H para cada motor y asi puedes controlar para que gire en un sentido u en otro según muevas para un lado el joystick.
Igual no me he explicado bien, asi que si tienes alguna duda , dímelo.
Suerte!!
Wow jejej la verdad que algo perdido me he quedado jeje.
Respecto lo del tema puente en H
para eso ya tengo el controlador, es 1 controlador que controla 2 motores indistintamente. 1 del otro, o eso me han dicho, xP
El joystick es este modelo.
haber mi idea era lo de los botones en plan. 1º,2º,3º,4º una parida pero nose me hizo gracia, puede ser útil en el momento según la velocidad máxima que desees, ya que dar una velocidad según la "inclinación" del joystick no siempre es muy fiable diría yo.
Mas adelante, estoy esperando a que renueven el stock, comprare una pantalla lcd, donde ahí salga la velocidad en km/h o m/min ejje nolose.
Pero ahora lo mas importante que digamos que es la base del proyecto es ese.
el tema de los motores y su programación.
el siguiente paso sera hacer lo mismo pero por xbee y ya el siguiente lo mismo pero con el lcd.
Me acorde que también tengo un joystic parecido al tuyo pero sin pulsador, y he hecho un programita pero al no tener los mosfet para el puente en H lo he simulado con unos led, pero habrá que hacer algo mas para adaptarlo al puente en H. Seria algo asi:
//Control de un Joystick
int ejexpin = 4;
int ejexmpin = 3;
int ejexm2pin = 5;
int ejexd;
int ejeypin = 5;
int ejeympin = 6;
int ejeym2pin = 9
int ejeyd;
void setup(){
Serial.begin(9600);
pinMode(ejexmpin, OUTPUT);
pinMode(ejexm2pin, OUTPUT);
pinMode(ejeympin, OUTPUT);
pinMode(ejeym2pin, OUTPUT);
}
void loop(){
ejexd = analogRead(ejexpin);
ejeyd = analogRead(ejeypin);
Serial.println(" ");
Serial.print("X:");
Serial.print(ejexd);
Serial.print(" Y:");
Serial.print(ejeyd);
//Serial.println(" ");
// Control del Eje X
if (470 > ejexd) {
ejexd = map(ejexd, 0, 470, 255, 0);
analogWrite(ejexm2pin,ejexd);
Serial.print(" PWM x- ");
Serial.print(ejexd);
}
else {
analogWrite(ejexm2pin,0);
}
if (ejexd > 530) {
ejexd = map(ejexd, 530, 1023, 0, 255);
analogWrite(ejexmpin,ejexd);
Serial.print(" PWM x+ ");
Serial.print(ejexd);
}
else {
analogWrite(ejexmpin,0);
}
// Control del Eje y
if (470 > ejeyd) {
ejeyd = map(ejeyd, 0, 470, 255, 0);
analogWrite(ejeym2pin,ejeyd);
Serial.print(" PWM y- ");
Serial.print(ejeyd);
}
else {
analogWrite(ejeym2pin,0);
}
if (ejeyd > 530) {
ejeyd = map(ejeyd, 530, 1023, 0, 255);
analogWrite(ejeympin,ejeyd);
Serial.print(" PWM y+ ");
Serial.print(ejeyd);
}
else {
analogWrite(ejeympin,0);
}
// delay(500);
Y aquí un vídeo de como me ha quedado xdD
Los SerialPrint() los uso para testear el funcionamiento.
El puente en h que tienes es el L298?
Suerte!
Hola que tal,tengo una pregunta.
si tu controlador soporta una intensidad de 2A maximo por cada salida y tiene dos salidas ,como manejaras un motor de 5A carga maxima sin quemar el controlador?????
Yo estoy en un proyecto parecido....
un saludo
No se si se podrán usar en paralelo, los dos puentes en h del L298, o sino pues te compras 4 mosfet de 5A, los diosos para proteccion y te montas un puente en h es facil.
no te ha mentido, dice que funciona bien con 6V pero que se recomienda 12v y 5A con 4A te va a funcionar seguramente mas que de sobra para lo que quieras hacer.
Hola.
A maxima potencia el motor consume una intensidad mayor que la que ofrece el puente por lo que a mi parecer el puente se acabara quemando, y aunque el voltaje sea menor no disminuye la intensidad sino que aumenta.
a menor voltaje = mayor intensidad.
ya se que el motor no va a estar siempre con un funcionamiento a plena carga pero seguro que acorta la vida util del puente si no llega a quemarlo.
De todas formas es mi opinion,si en la tienda te dicen que vale yo no les voy a llevar la contraria pero en las especificaciones del motor te lo pone bien claro.