Ver mensaje
  #131  
Antiguo 09-08-2014, 07:16
Avatar de carcamal
carcamal carcamal esta desconectado
Capitán pirata
 
Registrado: 12-04-2012
Edad: 73
Mensajes: 826
Agradecimientos que ha otorgado: 253
Recibió 524 Agradecimientos en 269 Mensajes
Sexo:
Predeterminado Re: Piloto automático con el dichoso arduino.

Hola de nuevo.. y a estas horas...caféee.
Llevo unos dias retomando la idea del "tupayá" del cofrade TAMAMOANA.
He llegado a la conclusion de que cuantos menos diplays, botones e historias mas robusto puede ser el invento.
Para ello usaré el "H-Bridge" controlandolo por dos de las salidas PWM de mi Arduino MEGA 2560. Estan Ahí!!!
Lo del PWM es algo así como el variador de velociadad del gatillo de un taladro. Quiero decir que se puede variar la velocidad de giro del motor (aparte del sentido de giro ... pero esto es mas de programacion)
Traigo aqui de nuevo el famoso H.Bridge...

Debo decir que en reposo los BC182 han de estar en LOW. El que reciba un HIGH hará girar el motor en un sentido. NO pueden recibir un HIGH ambos en ningun momento.
Visto así , a partir del SKETCH de rumbo que he perfilado (Solo Rumbo magnetico), solo me hace falta un botón que al ser pulsado retuviese el valor angular del sensor LSM303 en el momento de la pulsacion y que guardado en una variable (int) me serviría para ver si los valores posteriores (que siguen llegando del sensor) aumentan/disminuyen.
A partir de ahí si el valor posterior del sensor fuese mayor que el retenido habría de enviar desde el Arduno una señal PWM que iria incrementando no solo el sentido de giro... Sino tambien un valor de voltage creciente.

Resumiendo: Establezcamos un valor de 0 a 9 de margen entre el valor angular guardado y el que continúa llegando del LSM303 de forma que 1 grado genere la frecuencia minima que permita girar el motor (lento) y al llegar a 9 grados de diferencia sea tan alta que al BC182 afectado le suponga un HIGH "pleno/max. velocidad de giro"... imperceptible que hará girar el motor al máximo.
Si lo anterior ocurrió porque el valor angular guardado era mayor, solo hay que hacer que si fuese menor actuase al BC182 contrario (y del mismo modo).
Ahora bien... Con mis achacosos conocimientos de programación creo que voy a necesitar alguna ayuda.
EDITO: Si el motor incrementa la velocidad progresivamente, al disminuir la diferencia angular la velocidad disminuye hasta parase al quedar al rumbo que hemos fijado con el pulsador... Ah: Y cuando usamos PWM, el motor consume bastante menos (solo gastaría a tope si la diferencia llegase a +/-9º.
En buena lógica, si hecemos los deberes con el trimado de velas para un rumbo dado, con +/5º corregidos es mas que suficiente (y pasando menos corriente por el motor).
Como hay que pensar en todo, pensemos que en un "meneo", pasa de +5º a -9. No pasa nada: la velocidad del Arduino para cortarle el gas a un transistor y darle un meneo al otro es mucho mas rapida que la guiñada mas cabrona. Y algo muy importante que creo que consigo: ¿Os acordais de los maullidos del piloto de caña?. Son ni mas ni menos que el esfuerzo del conjunto motor/engranajes al recibir de golpe los 12 voltios. Creo (y creo estar en lo cierto).. que si usamos tension de CC modulada (PWM) se acabaron...
Esta tarde, leyendo las caracteristicas de mi placa me dí cuenta de que tiene una docena al menos de pines con capacidad PWM y me dió por darle la vuelta y simplificar.. (aparte de que el cambio de velocidad en aumento/descenso es la guinda de todo el invento).
He "pescado" esta rutina...

http://arduino.cc/en/pmwiki.php?n=Tu...tsOfArduinoPWM

Se usa el pin 13 (un PWM del MEGA 2560) y es algo muy "manual" pero que permite variar la salida (ON/OFF) las veces que se desee. Solo hay que asociar ese numero de veces a lo valores (0-9) que haya de diferencia entre el angulo obtenido con el unico pulsador y el que lea el LSM303 a partir de ese momento.
Definitivamente voy a ponerme manos a la obra. Seguro que consigo armar el hardware antes de tener listo el programita... pero es que.. lo mío ha sido siempre el soldador y los chips...
Y pensar que cuando empecé con todo esto allá por los 70, los ordenadores que reparaba eran analógicos o como mucho de memoria con nucleos de ferrita y los programas se escribian en cintas y tarjetas perforadas. ¡Que tiempos!
Saludos y perdonad por mis historias de viejo "cebolleta".
Muchas gracias a todos

Editado por carcamal en 09-08-2014 a las 07:37.
Citar y responder
2 Cofrades agradecieron a carcamal este mensaje:
Geronimo (09-08-2014), olaje (18-11-2014)