Autor Tema: mi primer radio control, para mi submarino XD  (Leído 3720 veces)

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

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
mi primer radio control, para mi submarino XD
« en: 13 de Junio de 2010, 18:55:55 »
hola gente otra vez, bueno estoy aquí esta vez por el motivo que quiero compartir con ustedes un proyecto que he venido desarrollando hace meses y que es sobre un submarino RC. en este punto me encontré con el dilema de la radio para poder controlar el submarino ya que las que tengo yo son de aeromodelismo por el cual trabajan a una frecuencia muy alta (72.X MHz). es por esto que me limitaba a mi modelo  en la parte de inmersión a un máximo de profundidad de 2 a 3 metros como máximo. es por esto que he decidido hacer yo mismo mi radio control para controlar a mi submarino (con los pic 16f877a como codificador y el 16f628a como decodificador) pero a una frecuencia mucho más baja, a unos 40KHz, pero en vez de sacarla por una antena la voy a sacar mediante un transductor piezoeléctrico, similar a los que utilizan las alarmas volumétricas en los automóviles, (todos operan en 40KHz). pero como en este caso los voy a usar sumergido debe ser hermético.
en este punto no confundan la señal de control con la portadora de 40KHz. ya que la portadora es la que trabaja a esta frecuencia. porque mi señal de control es a 50Hz. me explico mejor en este punto.
 el codificador solo lleva las señales de los servos a una frecuencia de 50Hz para cada servo, pero como los servos en la gran mayoría de los que usamos los hobbystas, se alimenta con unos 5V y se controla mediante una señal PWM con una frecuencia de 50 Hz, como dije anteriormente, o sea con un periodo de 20 ms (f=1/T, donde T es el periodo y f la frecuencia),donde este periodo consta de un pulso en alto y otro en bajo y nada más (los demás pulsos que se ven al medir una frecuencia es la repetición de este periodo). donde en este periodo tenemos que controlar el tiempo del pulso en alto, llamado comúnmente Duty Cycle, donde éste solo puede variar el 6% y el 15%, o sea entre un periodo en alto de unos 0.5 ms a 2.5 ms (estos valores pueden cambiar según el modelo del servo que utilicemos, los Hitec van desde los 0.5 a los 2.5 ms y los Futaba desde los 0.3 a los 2.3 ms aproximadamente), para poder controlar el ángulo de giro del servo.
los servos futaba por un lado, con un pulso de unos 0.7 ms el servo se posiciona en un extremo de su recorrido, con un pulso de unos 2.3 ms el servo se posiciona en el extremo contrario y con un pulso intermedio, de unos 1.5 ms, se posiciona en el centro de su recorrido.
ahora bien, como dijimos que el tiempo en alto de nuestro periodo, para cada servo no puede superar los 2.5ms. es por esto que podemos hacer varias repeticiones de este pulso para poder controlar más servos, pero con el límite de no superar los 50Hz que necesita cada servo como frecuencia.
teniendo en consideración lo ya mencionado podemos hacer un pequeño calculo para poder saber cuantos servos como máximo me aguanta mi codificador. el cual es:
(1/50Hz)/2.5ms=8 canales, para el control de 8 servos
donde los 50Hz es la frecuencia que tiene que tener cada servo, y los 2.5ms es el tiempo máximo que puede alcanzar el pulso en alto de mi periodo, para cada servo a controlar.
es por esto que se hace un periodo que va a constar de 8 pulsos distintos, esto es un pulso para cada servo. y estos 8 pulsos conforman mi periodo de la señal de salida del codificador de 20ms.
pero un punto importante de esta señal es que tiene que tener algo para que el decodificador pueda distinguir cual es el primer pulso y cuál es el ultimo pulso que llega a él (un pulso de sincronización), es por esto que el ultimo pulso lo voy a dejar para que distinga el decodificador, que realmente es el ultimo pulso de mi señal, para que así se puede sincronizar mi señal proveniente del codificador con el decodificador. es por esto que solo vamos a dejar 7 canales de control y uno de sincronización.
este ultimo pulso tiene que ser distinto al rango de los demás, ya que se tiene que distinguir del resto para saber así el receptor que llego ese pulso tan bien esperado XD, el cual puede ser de 0.4ms.



descripción del codificador y decodificador: 
primero que todo esta es mi versión beta, ya que todavía me falta ponerle una eeprom para guardar las distintas configuraciones que hace el usuario al codificador, además de poder ajustar los grados que se quiera que gire el o los servo.
bueno el radio que he diseñado controla 7 servos, la radio tiene 4 canales análogos y 3 canales análogos/digital configurables por pantalla LCD 20x4. también consta de la medición de la batería del codificador por pantalla.



también consta de un pequeño menú de control, para poder acceder a la inversión de giro de cada canal, como también a la configuración de los canales análogos/digital, que son los canales 5, 6 y 7 respectivamente.
también consta de 5 botones para el control de todo el menú, donde estos son los siguientes:
-Datos +/ Enter
-Datos -
-Recorrido +
-Recorrido -
-Escape
ahora para poder acceder al menú del codificador se tiene que apretar 2 teclas de control al mismo tiempo las cuales son datos+ con datos-, una vez presionada estas teclas se accede al menú principal, donde se puede escoger que se quiere hacer, ya sea cambiar el giro de un servo o poner un canal como digital ó análogo. para recorrer el menú principal se tiene que presionar las teclas de Recorrido, ya sea + o -. una vez encontrado el submenú al que queremos acceder presionamos la tecla Datos+/Enter.



una vez accedido al submenú y poder recorrer los distintos canales del codificador para hacerle alguna modificación, se tiene que presionar las teclas de Recorrido, ya sea la + ó -. ya encontrado el canal que queremos modificar solo nos queda escoger la función que queremos que haga ese canal, ya sea invertir el giro ó cambiar de Digital a Análogo, para esto solo tenemos que mover las teclas Datos, ya sea la + o la -, según se desee.
ahora si queremos seguir modificando canales en ese mismo submenú, solo tenemos que presionar las teclas de recorrido. y si queremos salir de ese menú solo tenemos que presionar la tecla escape .



el decodificador por otro lado pesca la señal proveniente del codificador y las separa en 7 pines distintos, el primer pin (PIN_B1) equivale al canal 1 y el PIN_B7 equivale al canal 7 del decodificador. también tiene que esperar el pulso de sincronía que aviamos mencionado anteriormente, para así poder hacer la distribución pertinente de pines, equivalente al canal 1 al 7.(esto también me falta implementar).



pero eso es para otra oportunidad. ha sido mucho por hoy XD.

por otro lado si ven que me falta algo para poder implementar me dicen igual por favor, ya que quiero que sea bien completa esta radio. bueno aparte de lo que yo ya mencione que le faltaba.

saludos!

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: mi primer radio control, para mi submarino XD
« Respuesta #1 en: 13 de Junio de 2010, 23:31:09 »
Me agrada tu avance.

No sabía la diferencia de tiempos según la marca de los servos.

Te cuento como implementé yo la sincronización del receptor, en los circuitos que podés ver en www.e-radiocontrol.com.ar

Usé uno de los timer y cuando no se recibía pulso por cierto tiempo (que creo tiene que ser igual o superior a 2 veces el tiempo de cada canal) el timer genera la interrupción y reseteo un contador y el próximo pulso que llegue va a corresponder al primer canal. Lo bueno de este sistema es que por más que el receptor sea de 8 canales, si se lo usa con un transmisor de 5 va a servir igual porque al no llegarle más pulsos de canales se va a resetear.

En dichos programas tomé como tiempo de canal 2mS, pero obviamente es fácilmente modificable.
Yo medí los tiempos de mi radio E-Sky y son de 2mS máximos.

Tomando ese tiempo como ejemplo, también hice un simple codificador que tenía el pulso de sincronismo de cada canal (tiempo en estado bajo) de 0.5mS y el tiempo en alto variable entre 0mS y 1.5mS dando un total por canal de 2mS. Tené en cuenta que el tiempo por canal de la señal del codificador tiene que ser el tiempo en bajo más el alto.

PD: Hay unos documentos en dicho sitio que tiene muy buena información acerca de las señales PPM
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas