Autor Tema: PICHELI : Logger para helicopteros R/C  (Leído 15309 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #15 en: 12 de Noviembre de 2009, 11:16:42 »
 :shock:

Esta muy bueno el proyecto ....

ALE: Que envidia de aparato ... muy chulo el helicóptero, a mi me gustan mucho esos bichos, pero no he podido hacerme a uno. 
El papel lo aguanta todo

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #16 en: 12 de Noviembre de 2009, 12:47:47 »
Halaaaa!, me suscribo al hilo y me uno al grupo  :mrgreen:

Iniciándome con HK450 mejorado + WFly08



Subforo RC!!!  :mrgreen: :mrgreen: :mrgreen:

Por cierto, los imanes no te provocan vibraciones en la corona principal?
Yo había pensado usar un P5587 o IS471F para medir por reflexión para evitar posibles vibraciones por decompensación de la corona o que salga un imán disparado y mande el heli a un aporrizaje de emergencia  :?

Salu2
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #17 en: 12 de Noviembre de 2009, 12:53:44 »
Anda, veo que ya lo tienes otra vez entero  :D, a ver cuándo vemos un vídeo del bicho volando

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #18 en: 12 de Noviembre de 2009, 13:34:48 »

Por cierto, los imanes no te provocan vibraciones en la corona principal?
Yo había pensado usar un P5587 o IS471F para medir por reflexión para evitar posibles vibraciones por decompensación de la corona o que salga un imán disparado y mande el heli a un aporrizaje de emergencia  :?

Salu2

Pues , sinceramente no lo sé porque todavía no los he montado, pensaba poner 2 imanes pequeños, para intentar evitar las vibraciones que comentas, veremos como sale...

Hasta ahora las pruebas las habia hecho con un generador de pulsos avanzado , vamos con un 555  :) :) :)

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 229
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #19 en: 12 de Noviembre de 2009, 15:02:02 »
:shock:

Esta muy bueno el proyecto ....

ALE: Que envidia de aparato ... muy chulo el helicóptero, a mi me gustan mucho esos bichos, pero no he podido hacerme a uno. 

Gracias, la verdad que son lindos, y adictivos.. jeje


splasma2

En lugar de probar con imanes, que podria desbalancear como dice droky, podrias pegar sobre la corona un autoadesivo o 2 de esos refractantes y captar con un fototransistor la señal, total si estas con palas de madera la velocidad del rotor es inferior a 2000 rpm en el mini... (nunca las medi, el manual sugiere no superarlas).


Saludos.
Alejandro

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #20 en: 12 de Noviembre de 2009, 15:49:46 »
Que lindo, ejm, ejm,  el Helicoptero!! :D :D

El mio es bastante mas simplon, no me queda mas que aceptarlo como es.   :P :P

Droky, veo que lo compraste con el kit de aprendizaje, yo no sabia de el por lo que destroze las helices. Deberia venir de serie.

Tal vez en vez de los autoadhesivos se podria usar directamente los nervios de la corona, todos los helicopteros los tienen por cuestiones de aligerar peso, asi de frente van al phototransistor. Ahi si que el numero de nervios tendria que ser configurable pues varia entre las distintas marcas.

Saludos.
« Última modificación: 12 de Noviembre de 2009, 16:00:10 por Veguepic »
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #21 en: 17 de Noviembre de 2009, 07:45:54 »
Como siguiente avance, os paso más detalles del firmware de la placa  PICHELI, cuando tenga una versión "aceptable" la pondre en el hilo.

El programa se ha hecho siguiendo el esquema que Microchip define es su kit USB, tiene algunas peculiaridades, ya que no usa interrupciones
para manejar el USB, por lo que a la hora de usar las librerias de envio y recepción de datos, hay que tener en cuenta cederle el control
al bucle principal USB.

Por ejemplo para enviar todos los datos del log al PC, via el driver CDC USB, hay que hacerlo con un buffer intermedio que se vaciando en
cada pasada del bucle USB.

La lectura de los sensores se hace en la rutina de interrupción (main_picheli.c), por lo que tampoco puedo quedarme ahí mucho tiempo,
aunque como el PIC va a 48Mhz ( 12 MIPS), creo que no tendré problemas.

- El sensor RPM esta conectado a la INT2, por lo tanto para obtener RPMs , solo tengo que contar las INTs que se producen en un periodo de
  tiempo fijo y luego grabar a EEPROM.
- El sensor de tension de bateria está conectado al canal 0 del ADC, aqui es fácil también, leer el ADC y grabar en EEPROM.
- El sensor de PPM, tiene que obtener la longitud del pulso PPM. como no me quedan INTs para hacer esto, lo tengo que hacer de manera
  más rudimentaria, luego os cuento ( al final).


Como veis, el esquema general de lectura y registro de sensores es sencillo.

Más adelante, podemos pensar en otro esquema más flexible, que permita definir distintas entradas y tipos de sensores.... y activarlos o no
segun convenga, el objetivo final es registrar los valores de esos sensores...


La gestión de comunicación con el PC se encarga de atender los comandos que llegan via USB ( driver CDC), los comandos se decodifican y ejecutan
en commands.c. Hay comandos de varios tipos:

- Información : Version del firwmware, longitud del registro LOG, valores de los parametros configurables.
- Configuración : Cambio de parametros configurables, borrado del LOG, sincronización del LOG, control LEDs.
- Dump : Descarga de los datos del LOG.

Todos ellos se pueden ejecutar desde un Hyperterminal ( o similar) conectando con el COM virtual que cree Windows.

Por último solo queda la parte que controla los LEDs, el modo es configurable para los 2 LEDS:

- Fijo o Parpadeo
- Frecuencia de parpadeo.
- Activación de aviso de bateria baja, también es configurable este limite.

COMANDOS:

VER      :  Devuelve Version del firwmare
GETR     :  Devuelde el perdiodo de grabación del LOG
SETR     :  Pone el periodo de grabación del LOG.
DUMP n   :  Descarga de LOG n ( R, V o P)
LEN  n   :  Devuelve numero de registros de LOG n ( R, V o P)
OPEN     :  Carga indices de las tablas del LOG.
CLEAR    :  Borra LOG.

LEDMD m f:  Activa modo fijo o parapeadnte para led m (f = F/P).
LEDWN m f:  Activa/desactiva  modo aviso bateria para led m (f = 0/1).
LEDR  m p:  Pone periodo de parpadeo p para led m.
SETWV v  :  Pone limite tension (v) para aviso de bateria baja.
GETWV    :  Devuelve limite tension de aviso de bateria baja.
GETLED m :  Devuelve modo (P o F) y aviso activo (0 o 1) para LED m.

SYNC     :  Guarda indices (usado para pruebas).
STOP     :  Para el proceso de LOG (usado para pruebas).
START    :  Arranca el proceso de LOG (usado para pruebas).



Sobre la lectura del pulso PPM que van a los servos.

Como sabeis esta codificación usa pulsos de longitud variable entre 1000 us y 2000 us cada 20ms ( aunque esto rangos pueden variar entre fabricantes),
para medirlo y obtener valores entre 0 y 100 necesito tener una resolución de 10 us. Habia pensado en usar la interrupcion del timer TMR1 ( cada 10us) y contar cuando el la entrada PPM este a nivel alto, lo que no me gusta es que la interrupción se produce cada 10us y no sé si voy a afectar al proceso de comunciación USB o a las grabciones en EEPROM, se os ocurre algún otro metodo SW menos "molesto"????

Podría utilizar el "INT on change" de los port RB4-RB7, pero tendria que cambiar la placa ... :( :(

Saludos.


Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 229
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #22 en: 17 de Noviembre de 2009, 10:21:56 »
splasma2, ahora estoy en la oficina, en cuanto llegue a casa te paso una rutina para determinar el valor del ppm, solo que yo no lo tengo echo de 0 a 100, pero es facil de cambiar, yo utilizo una interrupcion externa, y en ese momento arranco un timer, al cambiar nuevamente, tomo la lectura del timer, y ahi tengo el valor, seria cuestion de mejorarla un poco para que tengas valores de 0 a 100, que seria hacer una simple cuenta.

Saludos
Alejandro.


Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #23 en: 17 de Noviembre de 2009, 10:39:13 »
vaya! que buenos avances!... impecable.... mis felicitaciones,...
german  8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #24 en: 17 de Noviembre de 2009, 16:24:37 »
Y no se puede desactivar la interrupcion cuando se va a hacer la transferencia de datos via USB, pues segun entendi los datos que guarda son durante el vuelo.
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #25 en: 17 de Noviembre de 2009, 18:26:10 »
Tienes razón Veguepic, los datos solo se grabarán durante el vuelo, pero ahora como estoy en fase de pruebas puedo leer los datos registrados también "en tierra".

Seguiré con la idea de usar la interrupción cada 10us para obtener el valor PPM, si tuviera problemas intentaré otro metodo que use la interrupcion que el PIC genera cuando cambia el estado de los ports RB4-RB7.

Sobre los imanes en la corona, ya están puestos, son muy pequeños por lo que no creo que provoque vibraciones... ya veremos

Por cierto, me uno a la propuesta de droky: Subforo RC   :-/ :-/ :-/ :-/  creo que daría mucho juego....


Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 229
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #26 en: 17 de Noviembre de 2009, 23:17:31 »
Hola, te paso la rutina que uso para capturar lo que envia la radio, lo hago por interrupcion externa.


Código: CSS
  1. #int_ext
  2. void ext_handler(void){
  3.      //output_toggle(Pin_b7);
  4.    
  5.      if (rNroCanal!=0){
  6.         Tx_msg[rNroCanal]=rTiempo;
  7.         rNroCanal++;
  8.         if (rNroCanal > 6){//Cantidad de datos por ppm JR 8, WFLY 6,
  9.             rNroCanal=0;
  10.             fTX=1;
  11.             set_timer0(0);
  12.             //WFLY FT06-C
  13.             /*TxUSB[0] = Tx_msg[1];//ACELERADOR
  14.             TxUSB[1] = Tx_msg[2];//elevador
  15.             TxUSB[2] = Tx_msg[3];//aleron
  16.             TxUSB[3] = Tx_msg[4];//rudder
  17.             TxUSB[4] = Tx_msg[5];//gear
  18.             TxUSB[5] = Tx_msg[6];//aux1
  19.             TxUSB[6] = Tx_msg[7];//aux2
  20.             TxUSB[7] = Tx_msg[8];*/
  21.             //JR 7202 /9303 /8103
  22.             TxUSB[2] = Tx_msg[1];//ACELERADOR
  23.             TxUSB[0] = Tx_msg[2];//elevador
  24.             TxUSB[1] = Tx_msg[3];//aleron
  25.             TxUSB[3] = Tx_msg[4];//rudder
  26.             TxUSB[4] = Tx_msg[5];//gear
  27.             TxUSB[5] = Tx_msg[6];//aux1
  28.             TxUSB[6] = Tx_msg[7];//aux2
  29.             TxUSB[7] = Tx_msg[8];
  30.             output_toggle(Pin_b7);
  31.            
  32.         }
  33.      }
  34.    
  35.      if (fInicio){
  36.          rNroCanal=1,fInicio=0;
  37.          set_timer0(180);
  38.      }
  39.  
  40.      #ASM bcf  0xd,0
  41.           bcf  0xc,2
  42.      #ENDASM  
  43.      rTiempo=0;
  44. }

Espero te sirva...

Olvide la parte del timer0, ahi cuento entre pulso y pulso la cantidad de interrupciones, y con ello obtengo el valor...
Código: CSS
  1. #int_RTCC
  2. void RTCC_isr() {
  3.    rTiempo++;
  4.    if (rTiempo==0)fInicio=1;
  5.    if (rNroCanal!=0)Set_timer0(161);
  6. }
Saludos.
Alejandro.
« Última modificación: 17 de Noviembre de 2009, 23:23:34 por ALE1973 »

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #27 en: 18 de Noviembre de 2009, 18:59:39 »
Sigo avanzando, he puesto los imanes en la corona del heli y el sensor Hall A1101.

Parece que funciona, porque leo unos valores bastantes estables, todavia no sé si en vuelo habrá algún problema, los imanes como veis son pequeños.

Os pongo una foto del invento:


Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #28 en: 23 de Noviembre de 2009, 17:43:08 »


Hola a todos.

Más avances, :P :P ya tengo una versión totalmente funcional, bueno casi, me registra las RPMs del heli y la tensión de la bateria, también controla ya los LEDs.

Los LEDs pueden funcionar de 2 modos : Fijo o Parpadenate, ademas también pueden avisar de bateria baja, parpadeando más deprisa.

Todos estos modos son configurables via USB, os pongo una foto de los parametros que se pueden configurar...



Como veis aparte del funcionamiento de los LEDs, se puede configurar el perido de log, la tensión de bateria a la que avisa de bateria baja y se puede activar un modo que he llamado auto-pausa, que consiste en que cuando las RPMs llegan a 0 deja de almacenar datos, (pausa) hasta que vuelvan a subir, puede ser util al parar el heli momentaneamente para no gastar espacio en la EEPROM. Por cierto, la EEPROM que uso es pequeña, 24C64 porque es la que tenía a mano, pero se puede poner una de mayor capacidad, cambiando una constante del firmware...


Otra imagen con la pantalla de presentación de datos, son reales , una pequeña prueba de 40 segundos  :) :)





Este es el HEX del PIC por si alguien quiere montar la placa, cuando este finalizado pondré los fuentes también:

Hex Picheli




Desconectado tinchosalamero

  • PIC12
  • **
  • Mensajes: 53
Re: PICHELI : Logger para helicopteros R/C
« Respuesta #29 en: 24 de Noviembre de 2009, 09:02:33 »
Que linda que te quedo la interface. podes poner los fuentes??

Gracias y excelente trabajo


 

anything