Autor Tema: Proyecto Radiocontrol : Receptor RC asistido por PIC  (Leído 28419 veces)

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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Proyecto Radiocontrol : Receptor RC asistido por PIC
« en: 26 de Enero de 2008, 22:42:38 »
A modo de saludo:

Aquí estamos de nuevo con un nuevo proyecto. Afrontado con renovadas energías e ilusión y con mi particular forma de afrontar los temas que me parecen difíciles: par partes y poco a poco. En un claro intento de no atragantarme si intento masticar un bocado mayor de lo que me cabe en la boca. Haciendo las cosas una detrás de otra y empezando por el principio, que poner el tejado antes que los cimientos es signo seguro de fracaso. Y no quiero fracasar sino concluir con éxito esta nueva andadura.

Introducción y antecedentes:

Me ha fascinado y entusiasmado el proyecto Proyecto Barco a Vela RC con PIC del amigo Juan Luis JLIGUAL. Soy aficionado antiguo al RC, en su modalidad aérea, pero hace años que vengo soñando con hincarle el diente a un Velero RC. Este proyecto lo he acogido como una oportunidad para realizar mis sueños náuticos.

Ante la complejidad de lo planteado por el amigo Juan Luis en su proyecto me decanté por la idea de hacer todo el sistema RC completo, desde la lectura de los mandos de control hasta el accionamiento de los actuadores en el modelo, pasando por la emisión y recepción RF que enlaza ambos extremos del sistema. Y por supuesto con los insustituibles PIC's para ambas funciones.

Resultado directo de este planteamiento fue el origen del hilo ¿Conocéis módulos RF? (con ciertas carácteristicas que os detallo) en el que planteaba esta pregunta a los amigos de Todopic interesándome en qué módulos RF podrían ser los idóneos para este proyecto.

Tras los oportunos debates y siguiendo los consejos de estos amigos me decidí por adquirir los módulos XBee-Pro de Maxstream que ya tengo en mi poder. La idea es montar las partes emisora y receptora alrededor de cada uno de estos módulos Xbee, y como cerebros un par de PIC's, seguramente unos 18F4550 TQFP de 44 pines, que estarían encargados el uno de la lectura de los mandos y el otro de accionar los servos, relés y motores DC en el modelo. Implementar el protocolo de comunicaciones y tener así tantos "canales" de control como necesitásemos, sin mas limitación que nuestras propias capacidades de diseño.

Pero hete aquí en en dicho hilo apareció el Post del amigo Veguepic en el que nos mostraba su Emisora RC comercial Hitec Conquest de la que usaba solo los controles, haciendo uso de sus propios módulos RF ... y esto me hizo caer en la cuenta de que tengo una emisora casi idéntica a la de él: La Hitec Focus 4.

Me fui al desván en su busca, con la asesina idea de desmontarla y extirparle todos los controles: Interruptores, los Joysticks de doble canal, los potenciómetros deslizantes de los Trimmers ... La encontré pronto y la saqué de un sueño de mas de quince años, y ya con las herramientas viviseccionadoras en la mano tuve un flash de sentido común y me paré a reflexionar. Fruto de esta reflexión es el presente proyecto.

Me dije algo así como - Si encuentro el receptor, si ambos, Emisora y Receptor, funcionan, si le conecto los cuatro servos y todo anda perfectamente ... no la mato, la conservo tal y como está y ya me buscaré los controles en otro sitio, quizás comprándolos en RS-Online o Farnell ... o ya veremos donde.

En un par de horas, las necesarias para recargar unas Ni-Cad que llevaban quince años descargadas, todo estaba funcionando como el primer día de 1992 en que la desembalé de su caja original. Eso la salvó a ella y a mí porque en mi reflexión me dí cuenta de que podía hacer mucho por el proyecto de Juan Luís, por otros aficionados al Rc, por los Picmaníacos y por mi mismo, dicho sea de paso, ya que tenía una idea en la mente para un proyecto propio, diferenciado, útil e interesante haciendo uso de todo el equipo completo.

Descripción del Proyecto.

En un sistema RC simple las distintas lecturas de los controles en la Emisora RC provocan una reacción proporcional en el Receptor RC del modelo que hace posicionarse a los servos conectados a él.

Las lecturas de los controles son codificadas y transmitidas vía RF desde la emisora hasta el receptor. En éste la señal es transformada en una señal pulso PWM cuyo Duty Cycle define el posicionamiento de los servos  (ver Controlando un Servo ...)

En el receptor tendremos entonces unas cuantas señales PWM que podremos controlar, mas o menos, desde la Emisora pero siempre sujetas a las especificaciones que el fabricante haya decidido establecer para su producto.

¿Qué hacer si decidimos saltarnos dichas especificaciones? Como puede ser por ejemplo ampliar o reducir los recorridos reales de los servos, o más difícil aún, cambiar la escala de evolución del movimiento del servo de una lineal a un logarítmica por decir algo. O utilizar sensores externos que "modulen" el movimiento o los márgenes de actuación de un servo, pero manteniendo el control remoto sobre él desde la parte emisora.

Éste es el objeto de este proyecto: Interceptar las señales PWM que salen del Receptor RC hacia los servos, insertando entre ambos un PIC que "lee" las señales recibidas y que tiene la capacidad de transmitirlas a los servos tal cual o modificadas según el algoritmo que deseemos.

Se trata de dotar de "inteligencia" a la parte actuadora sobre el servo. Este cerebro recibirá nuestras órdenes pero actuará dependiendo de ciertas interacciones entre éstas ordenes y otros elementos que podremos involucrar a voluntad: sensores, combinaciones con otras señales, posibilidades complejas de maniobras ... etc.

Concretando:

Os pongo un ejemplo muy concreto sobre el que voy a trabajar. Como os dije más arriba mi equipo es la Hitec Focus 4 con el receptor HFS-04MI. Esta sistema está especialmente diseñado para el control de Aviones RC.



Los tengo equipados con los Servos Hitec HS-300 y HS-311



Este equipo tiene ciertas características, fijadas por el fabricante, que limitan de alguna forma su propia operatividad.

La primera y principal limitación proviene directamente de ser un avión el objeto controlado y ello debido a que los aviones son especialmente sensibles a muy pequeños movimientos en los planos físicos de control: alerones, profundidad y timón.

Esto requiere que los servos tengan muy poco desplazamiento entre ambos extremos. Esta compresión del "ancho de banda" del movimiento de los servos podría conseguirse mecánicamente pero el fabricante ha decidido "comprimir" la señal PWM disponible en el receptor RC.

Así aunque el Servo sea nominalmente capaz de realizar un desplazamiento completo de 180º de extremo a extremo, es comandado por un PWM comprimido que hace que sus desplazamiento máximo sea solo de 90º, o sea 45º a cada lado del punto medio. Estos desplazamientos máximos de 45º solo se consiguen con el mando control en la emisora en cada uno de los extremos, con el Trimm a tope y con el ajuste ATV de banda al máximo.



Esto es una de las cosas que vamos a corregir con nuestro proyecto. Vamos a leer la señal PWM recibida y vamos a "amplificarla" haciendo que nuestros servos recuperen su capacidad de giro de 180º.

Igualmente podemos "atenuarlas" y hacer que esos 45º a cada lado se puedan convertir en sólo 25º con el mando control en un extremo, o cualquier ángulo que nos parezca oportuno.

Podemos también hacer que los recorridos de un servo sean a distintas velocidades según a qué lado se muevan o que tengan distintas amplitudes hacia la izquierda que hacia la derecha, como si tuviesen Trimmers individuales a cada lado del centro.

O podemos implementar nuestro propio sistema de compensación de movimientos haciendo uso de varios servos dependiendo de una sola señal ...

O incluso .... dejémoslo estar. La imaginación es nuestro único límite.

Propósitos para los primeros pasos:

Lo primero que vamos a hacer es conectar nuestro PIC a uno de los canales del receptor y leer la señal PWM.

Después vamos a hacer un By-Pass y vamos a retransmitir este PWM de forma absolutamente indéntica al Servo, de forma que parezca que nuestro PIC es transparente, como si no estuviese en medio leyendo la señal del receptor y generando a su vez un PWM especular, para que todo siga funcionando igual.

Y después vamos a implementar algún algoritmo "amplificador" o "atenuador" de esa misma señal de forma que el PWM recibido y el PWM transmitido al servo sean asimétricos y tengamos así la capacidad de modificarlo según nuestra conveniencia.

Pero eso ya será otro día. Que por hoy ya está bien.

Un saludo a todos. Mañana más.  :mrgreen:






« Última modificación: 23 de Mayo de 2010, 03:18:18 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado valdorre

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 348
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #1 en: 27 de Enero de 2008, 00:12:06 »
don Diego, muy interesante proyecto, lo voy a seguir muy de cerca... espero poder armarme uno.
me parece excelente la forma en que plantea los proyectos, también intentare aprender de ello...
gracias por ser tan generoso con nosotros...

saludos
Osvaldo
Osvaldo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #2 en: 27 de Enero de 2008, 04:09:34 »
Diego, escribo aquí sobre todo para suscribirme al hilo, y no porque tenga mucho que aportar al mismo.

Sólo diré que una de las aplicaciones inmediatas de ese PIC y que he visto en algunos aviones de RC es poner al vehículo receptor en modo "seguro" cuando se deja de recibir la señal del emisor. No sé si en un barco tiene mucho sentido, pero dejo la idea.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #3 en: 27 de Enero de 2008, 07:38:43 »
Si, el Fail Safe. Es lo que describí en este post del otro hilo, en el que decía:

¡¡¡ Arriad velas, luces roja-blanca-roja verticales encendidas (Buque con Capacidad de Maniobra Restringida con Arrancada), Motor de emergencia a 1/4, timón a 25º en sentido contrario al que estuviese la botavara !!!

que hace que el barco deje de tomar viento mientras arría velas y obtenga una derrota circular amplia y no se nos pierda en la lejanía de la Mar Océana.

Función ésta que debería activarse también automáticamente si el CBE deja de tener contacto con el CBM.
   :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Flugplatz

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 279
    • Mi canal de YouTube
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #4 en: 27 de Enero de 2008, 09:37:45 »
Buena idea Diego.

Debo entender entonces que en la primera fase de este proyecto no vas a usar los XBee ¿no?

Por lo menos, hasta que esté terminado el estupendo velero *REDPIC 2  :mrgreen:, me parece bien...

Creo que este proyecto tiene una parte importante de artesanía,  así que,  es importante no complicarse mucho en el cerebro de *REDPIC 2. Una vez que este esté funcionando, se podrá convertir en *REDPIC PRO.

Como ya dije, la comunicación entre una emisora de RC y su receptor es bastante consistente, y con pocos canales, un PIC y algo de imaginación, se pueden hace cosas muy interesantes.

Ahora unas preguntas  :mrgreen:

1.- Según he interpretado, en el tema de izar y arriar las velas no hay punto intermedio, ¿no?, o sea, o están izadas, o están arriadas.

2.- Para cada maniobra del barco se realizan un conjunto de acciones prefijadas ¿no?, a modo de Macros.

3.- ¿es la mayor la única vela que interviene de forma proporcional?. Esto se hace tensando y destensando la driza que controla la botavara ¿no?


Si 1 y 2 son ciertas, a lo mejor estaría bien sustituir el stick izquierdo por una placa con botones, un PIC (otro  :mrgreen:), y una minipantalla de Nokia.

Tu emisora, Diego, basa todos los ajustes en potenciómetros. Si quitas los dos que conforman el stick izquierdo, y pones un doble potenciómetro digital de estos, podrías generar combinaciones virtuales de la posición del stick desde el PIC. Así, en lugar de tener que memorizar la posición del stick para cada maniobra, se pueden generar de forma automática y programada. En este caso, lo mismo los que corresponden al Dual Rate del Throtle y Rudder deberían quedar condenados. No lo se seguro, pero yo diría que debe ir en serie con los del stick.
 
Respecto a las diferentes motorizaciones, creo si el punto tres es correcto, sería el único caso donde podría ser necesaria una caja de engranajes muy potente y de tornillo sin fin. Exceptuando el motor que maneja el bulbo, los demás, se pueden hacer con servos normales algo modificados para multivuelta.  Creo que con potenciómetros de precisión de 10 vueltas lo mismo se puede modificar un servo para que de esas vueltas, en lugar de solo 180 grados. Si en lugar de el cuerno (la parte blanca) se pone una polea del tamaño adecuado, el servo puede tener mucha fuerza... la necesaria y más.

Se me ha pasado otra idea. Entiendo que el motor de propulsión solo se usa de forma ocasional, y por lo tanto, a lo mejor, no hace falta usar uno de los ejes del stick derecho solo para él. Quizás se puede dejar este mando para manejar el timón y la botavara.

un saludo

Mario

PS: Manolo, estoy convencido en que en el momento en el que se empiecen a tirar lineas puedes participar, es más, como maestro de los circuitos impresos, seguro que ahí, si quieres, claro, vas a ser fundamental.  :mrgreen:

* léase por REDPIC 2 y REDPIC PRO los nombres de los dos prototipos. Los nombres los deben poner los que moldeen el barco, o sea, de momento Juan Luis y Diego.
« Última modificación: 27 de Enero de 2008, 09:52:09 por Flugplatz »
Mi canal de YouTube

Un saludo desde Madrid

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #5 en: 27 de Enero de 2008, 11:28:45 »
Bueno, ya tenemos nuestro primer paso dado. En los Propósitos para los primeros pasos decíamos que lo primero era conectar nuestro PIC a uno de los canales del receptor y leer la señal PWM.

Y eso es lo que os presento aquí y ahora.

He montado el siguiente hardware: Una fuente de alimentación de 5V para sustituir al pack de 4 pilas Ni-Cad y no tener que estar dependiendo de su carga mientras trabajo, el receptor Hitec HFS-04MI, uno de los cables alargadores de la conexión de un servo cortado para tener disponible la señal PWM de uno de ellos, un PIC 18F1320 montado con el hardware mínimo, el cristal oscilador y poco más, y un MAX232 conectado al PIC para poder monitorizar lo que ocurre en él desde el PC.

Aquí tenéis una imagen del montaje:



La señal llega al PIC desde el receptor mediante el cable amarillo, los otros dos son la alimentación del Servo y no los usamos en este momento:



A continuación he realizado una implementación mas o menos fiel a lo descrito en mi artículo Midiendo un pulso. 1ª Parte. Tiempo en Alto con INTEXT, salvo que en vez de calcular el tiempo en alto he dado un pequeño paso adelante y calculo el tanto por ciento que permanece en alto, sabiendo que el 100% corresponde a un periodo de 20 ms, o lo que es lo mismo a una frecuencia de 50 hz, que es el estándar para este tipo de servos.

El programa es éste:

Código: C#
  1. #include <18f1320.h>
  2. #fuses HS,MCLR,PUT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NODEBUG,NOWRT
  3. #use delay(clock=20000000)
  4. #use rs232(baud=115200, xmit=PIN_B1, rcv=PIN_B4)
  5.  
  6. static unsigned int16 ticks, DutyCycleK=0;
  7. static int1  flag_H_TO_L=0;
  8.  
  9. #int_ext
  10. void ext_isr() {
  11.  
  12.    if(flag_H_TO_L){
  13.       ticks=get_timer1();
  14.       ext_int_edge(0,L_TO_H);
  15.    }
  16.    else{
  17.       set_timer1(0);
  18.       ext_int_edge(0,H_TO_L);
  19.       ticks=0;
  20.    }
  21.    ++flag_H_TO_L;
  22.  
  23. }
  24.  
  25. void main() {
  26.  
  27. static unsigned int16 uticks, DutyCycle;
  28.  
  29.  
  30.    disable_interrupts(global);
  31.    disable_interrupts(int_timer1);
  32.    disable_interrupts(int_rda);
  33.    disable_interrupts(int_ext);
  34.    disable_interrupts(int_ext1);
  35.    disable_interrupts(int_ext2);
  36.    setup_adc_ports(NO_ANALOGS);
  37.    setup_adc(ADC_OFF);
  38.    setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  39.    setup_timer_0(RTCC_OFF);
  40.    setup_timer_1(T1_INTERNAL | T1_DIV_BY_2);
  41.    setup_timer_2(T2_DISABLED,0,1);
  42.    setup_timer_3(T3_DISABLED);
  43.    port_b_pullups(FALSE);
  44.  
  45.    delay_ms(1000);
  46.  
  47.    flag_H_TO_L=0;
  48.    ext_int_edge(0,L_TO_H);
  49.    enable_interrupts(int_ext);
  50.  
  51.    enable_interrupts(int_rda);
  52.    enable_interrupts(global);
  53.  
  54.    printf("\r\n18F1320 listen on RS232\r\n");
  55.    printf("  RC PWM Interceptor\r\n>");
  56.  
  57.    do {
  58.  
  59.       if((ticks!=0)){
  60.          disable_interrupts(int_ext);
  61.          uticks = ticks; ticks=0;
  62.  
  63.          DutyCycle = (unsigned int16) uticks * 10 / 5000;
  64.  
  65.          if(DutyCycleK!=DutyCycle){
  66.             printf("\r\n>%Lu",DutyCycle);
  67.             DutyCycleK=DutyCycleK;
  68.          }
  69.  
  70.          flag_H_TO_L=0;
  71.          ext_int_edge(0,L_TO_H);
  72.          enable_interrupts(int_ext);
  73.       }
  74.  
  75.    } while (TRUE);
  76. }

Con un cristal de 20 Mhz y el Timer1 corriendo con un pre-escaler de 2 tengo un Tick cada 0.4 uS por lo que nuestros 20 ms de 100% de Duty Cycle corresponderían a 50.000 ticks de Timer1.

Por ello DutyCycle = (unsigned int16) uticks * 10 / 5000; corresponden a una sencilla regla de tres para saber qué tanto por ciento corresponden a los ticks que hemos recogido entre los flancos de subida y bajada de nuestro PWM. (Nota: he dividido por 10 el numerador y el denominador y así multiplico por 10 y divido por 5000 en lugar de multiplicar por 100 y dividir por 50.000, estoy pintando con trazo grueso)

La respuesta teórica entre extremos debería ser como lo representado en la imagen inferior:



O sea la señal PWM variando entre 0.6 ms y 2 ms o lo que es lo mismo entre el 3% y el 10% del Duty Cycle para obtener un movimiento total de 180º.

Sin embargo los resultados obtenidos haciendo un barrido completo con el mando del joystick de un extremo al otro y volviendo al comienzo son:



Esto nos lleva a la conclusión de que mi Emisora, con los ajustes actuales, y actuando de extremo a extremo sobre uno de los Joysticks (el de profundidad que es el único que no vuelve al centro automáticamente) solo varía el PWM entre el 6% y el 10% del Duty Cycle, o lo que es lo mismo entre 1.2 ms y 2.0 ms, y que la parte baja del PWM hasta el 3% permanece sin usar.

Asunto éste compatible con lo declarado por el fabricante en su manual de instrucciones relativo a la amplitud de movimientos de un servo con este equipo:



Esto es lo que pretendo corregir a modo de ejemplo. Leer entre estos 6% y10% y "ampliarlo" hasta el 3% inferior para lograr un recorrido completo del servo.

Pero eso ya será otro día. Hasta luego. Mañana más.   :mrgreen:







« Última modificación: 23 de Mayo de 2010, 03:20:42 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #6 en: 27 de Enero de 2008, 13:29:35 »
Tras el primer paso viene el segundo (no puede ser de otra forma salvo que nos quedemos quietos como el mármol)  :mrgreen:

Decíamos en nuestros propósitos que el segundo paso sería hacer un By-Pass y vamos a retransmitir este PWM de forma absolutamente idéntica al Servo, de forma que parezca que nuestro PIC es transparente, como si no estuviese en medio leyendo la señal del receptor y generando a su vez un PWM especular, para que todo siga funcionando igual.

Y esto está hecho.

Le he añadido a nuestro hardware un servo conectado al PIC por el pin RB3 y lo he alimentado correspondientemente, tal como puede verse en la fotografía inferior:



Y ahora con una mínima modificación de nuestro programa anterior tenemos el By-Pass realizado.

Lo primero es añadir un par de líneas a nuestra interrupción detectora del PWM recibido. Cuando recibimos un flanco de subida, inicio del PWM recibido, hacemos lo propio con nuestro PIN del Servo, y lo indicamos mediante el flag_servo_1. De esta forma "sincronizamos" ambos PWM, el emitido por nosotros con el recibido desde el receptor.

Como al mismo tiempo hemos puesto el Timer1 a cero sabemos exactamente donde estamos, y en el main() estamos calculando los Ticks que recibimos, sobre uticks , así que si en el mismo main() miramos el estado del Timer1 en cuanto sobrepase a estos ticks podemos bajar la señal de nuestro PWM generado.

Podríamos hacerlo en la misma interrupción al recibir el flanco de bajada del PWMK del Receptor pero he preferido ponerlo en el main() para poder ampliarlo o reducirlo a voluntad. Pero eso ya es tema para el siguiente paso. Y aún no le toca.  :mrgreen:

El programa completo quedaría así:

Código: C#
  1. #include <18f1320.h>
  2. #fuses HS,MCLR,PUT,NOWDT,NOPROTECT,BROWNOUT,BORV45,NOLVP,NOCPD,NODEBUG,NOWRT
  3. #use delay(clock=20000000)
  4. #use rs232(baud=115200, xmit=PIN_B1, rcv=PIN_B4)
  5.  
  6. static unsigned int16 ticks, ticksK;
  7. static int1  flag_H_TO_L=0, flag_servo_1;
  8.  
  9. #int_ext
  10. void ext_isr() {
  11.  
  12.    if(flag_H_TO_L){
  13.       ticks=get_timer1();
  14.       ext_int_edge(0,L_TO_H);
  15.    }
  16.    else{
  17.       set_timer1(0);
  18.       ext_int_edge(0,H_TO_L);
  19.       ticks=0;
  20.       output_high(PIN_B3);
  21.       flag_servo_1=1;
  22.    }
  23.    ++flag_H_TO_L;
  24. }
  25.  
  26. void main() {
  27.  
  28. static unsigned int16 uticks;
  29.  
  30.  
  31.    disable_interrupts(global);
  32.    disable_interrupts(int_timer1);
  33.    disable_interrupts(int_rda);
  34.    disable_interrupts(int_ext);
  35.    disable_interrupts(int_ext1);
  36.    disable_interrupts(int_ext2);
  37.  
  38.    setup_adc_ports(NO_ANALOGS);
  39.    setup_adc(ADC_OFF);
  40.    setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  41.    setup_timer_0(RTCC_OFF);
  42.    setup_timer_1(T1_INTERNAL | T1_DIV_BY_2);
  43.    setup_timer_2(T2_DISABLED,0,1);
  44.    setup_timer_3(T3_DISABLED);
  45.    port_b_pullups(FALSE);
  46.  
  47.    delay_ms(1000);
  48.  
  49.    flag_H_TO_L=0;
  50.    ext_int_edge(0,L_TO_H);
  51.    enable_interrupts(int_ext);
  52.    flag_servo_1=0;
  53.  
  54.    enable_interrupts(int_rda);
  55.    enable_interrupts(global);
  56.  
  57.    printf("\r\n18F1320 listen on RS232\r\n");
  58.    printf("  RC PWM Interceptor\r\n>");
  59.  
  60.    do {
  61.  
  62.       if((ticks!=0)){
  63.          uticks = ticks; ticks=0;
  64.          if(uticks != ticksK){
  65.             ticksK=uticks;
  66.          }
  67.          flag_H_TO_L=0;
  68.       }
  69.  
  70.       if(flag_servo_1==1){
  71.          if(get_timer1()>ticksK){
  72.             output_low(PIN_B3);
  73.             flag_servo_1=0;
  74.          }
  75.       }
  76.    } while (TRUE);
  77. }

Ea, y ahora de verdad: Mañana más.  :mrgreen:
« Última modificación: 23 de Mayo de 2010, 03:21:38 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado JLIGUAL

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
    • Habilitacion Naval
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #7 en: 27 de Enero de 2008, 15:07:26 »
Hola a todos:

Me uno al asunto aunque mi participación solo podrá ser por las posibles dudas que a nivel mecánico puedan surgir y sobre todo a  aprender de maestros de vuestra categoría en el asunto de los micros.

Y de paso voy a  aprovechar para responder unas dudas de Flugplatz, al menos tal y como yo lo tenía programado, que siempre se debe de estar abierto a modificaciones.

“1.- Según he interpretado, en el tema de izar y arriar las velas no hay punto intermedio, ¿no?, o sea, o están izadas, o están arriadas.”

Me había planteado el que tanto el izado como el arriado fuese al 100% de sus posibilidades, ya que sino nos encontraremos con que para tomar rizos por ejemplo en la vela mayor, supone que ya sea motor DC, servo trucado, motor PAP, necesita un torque muy alto, ya que su utilización es en periodo de fuertes vientos y como en aeromodelismo, cuando hay posibilidad de perder el equipo es mejor ser prudente.

“2.- Para cada maniobra del barco se realizan un conjunto de acciones prefijadas ¿no?, a modo de Macros.”

Para mi es mejor que desarrollemos cada función por separado, que siempre estaremos en disposición de agrupar en un interruptor, stick, etc. Pero siempre disponiendo de la opción de hacerlo manualmente.

3.- ¿es la mayor la única vela que interviene de forma proporcional? Esto se hace tensando y destensando la driza que controla la botavara ¿no?

La botavara esta fijada al mástil por medio de una unión embulonada y fijada por un tensor que le confiere el Angulo deseado con el mástil.

En cuanto a la propulsión, como bien dices no se utilizara mas que de forma esporádica y no necesariamente debe de tener un mando simplemente puede ser un formato dentro del fail safe, en cualquier caso lo importante seria el timón.

En cuanto a las reductoras, entiendo que debemos de utilizarlas en todas las escotas de las velas, ya que estamos hablando de velamen de:
1.542x502 en el caso de la vela mayor
1.517x750 en el caso de la vela Génova
1.221x340 en el caso de la vela foque
1.703x800 en el caso de la vela Spinnaker

Hablo de valores aproximados, lo que quiere decir que el volumen de viento que recibe cada vela con una ligera brisa puede ser muy importante como para poder vencer la fuerza de un simple servo modificado, piensa que en los veleros de 1 metro se tiende a poner servos de 13 Kg. /CMS para manejar la vela.

Juan Luis Igual

« Última modificación: 27 de Enero de 2008, 20:48:04 por JLIGUAL »

Desconectado Flugplatz

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 279
    • Mi canal de YouTube
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #8 en: 28 de Enero de 2008, 10:57:52 »
Bueno, ayer me estuve entreteniendo un rato e hice esto:

Servo modificado multivuelta proporcional

Como veis, con un poco de imaginación y algo de conocimiento, un manitas puede hacerlo con presupuesto $0.5  :mrgreen: (el potenciómetro).

Esta es una versión improvisada y con un servo estándar. Supongo que si se quisiera mejor calidad y áfiabilidad, habría que rehacer la espiga que va del potenciómetro al engranaje de salida del servo, pero para esto se necesita un torno, aparato que no tengo. Por si a alguien le interesa, la espiga es un pin hembra de un conector de alimentación de Disco Duro o CDROM. El potenciómetro es un multivuelta de precisión del mismo valor que el original 5K. No tengo ni idea como son por dentro, así que, tal vez su pequeña mecánica interior no aguante tanto estrés. Quizás, para una cosa más delicada o de un uso más continuo, lo mejor sería sacar el potenciómetro fuera y poner ambos ejes, el del servo y el potenciómetro, solidarios. El problema de esto es que sale fuera, con el consiguiente aumento de tamaño, y que solo el potenciómetro, vale bastante más de 50 céntimos. Creo que esto es lo que hacen los que fabrican el servo aquel de 250€ del que hablábamos el otro día.

Me refiero a este potenciómetro


Aquí una foto del parto con algo más de detalle.



Una cosa. La colocación del potenciómetro es importante para que gire bien, pero es más importante la posición. Evidentemente, tiene que estar puesto exáctamente igual que en la foto. De esa forma, cuando el circuito intenta corregir la posición de servo, siempre llega al valor bueno. Por la construcción de estos potenciómetros, si se pone al revés no pasaría prácticamente nada ya que no tiene tope mecánico, pero el servo nunca se llegaría a parar porque la corrección la estaría haciendo al revés.

Si por cualquier cosa se usa un servo de otra marca, y hay que poner el potenciómetro girado 180 grados, se puede, pero hay que cambiar el motor de polaridad.

Juan Luis, respecto a lo que vamos....

Sigo pensando que si montas una polea de 1,5 o 2 centímetros diámetro, un servo de estos tiene fuerza más que de sobra para izar y arriar las velas. Recuerda que con una polea pequeña, a costa de ir un poco más despacio, puedes conseguir muuucha fuerza de un servo de estos. En el video puedes ver a la velocidad que gira con una batería de 5 elementos (7 Voltios). Quizás 2 centímetros es poco si la polea tiene que enrollar y desenrollar unos dos metros de cuerda (escota?), pero eso se podría ver.

Edito para poner un enlace a los datos técnicos del micro-potenciómetro.

micro-potenciometro Bourns

Quizás 200 ciclos me parece exageradamente poco, pero es lo que hay  :mrgreen:, aunque no tengo muy claro que sea verdad. Probablemente sea mucho más.

Tampoco os fijéis en el precio, el que he montado yo no debe ser ese, porque estoy seguro de que no me costó más de 1€.


Un saludete, y ala, a seguir currando  :mrgreen:

Mario


PS: si a alguien le interesa evolucionar este tema, abro mi primer topic en la parte de robótica, y lo retomamos.
« Última modificación: 28 de Enero de 2008, 11:32:12 por Flugplatz »
Mi canal de YouTube

Un saludo desde Madrid

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #9 en: 28 de Enero de 2008, 13:54:10 »
Eres un manitas, Mario. Eso me lo tienes que contar con detalle.  :mrgreen: :mrgreen: :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado JLIGUAL

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
    • Habilitacion Naval
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #10 en: 28 de Enero de 2008, 21:38:10 »
Mario:

Me has dejado im-presionado, quizás al final, el camino mejor avance por el tema de los Servos, que veo que te han quedado perfectamente trucados para dar 10 vueltas en cada sentido.

Y viéndolo se me ha ocurrido la posibilidad de acoplarle en la parte de la cruceta y mediante 4 tornillos una chapa de acero de 1mm con un eje de 4 Mm. en el que fijar el sinfín., esto nos aumenta torque y nos frena cuando no estamos operando sobre el.

En principio las poleas mayores que necesitamos para trabajar con las velas son de 25 milímetros en el caso de la Spinnaker y 50 m en el caso de la mayor.

Debemos de controlar así mismo que el mando del stick tiene que quedar en esa posición, con lo que vamos perdiendo maniobras, soy mas partidario de utilizar un interruptor de 3 posiciones: enrollar Vela, Nada, Desenrollar vela, es decir, en las funciones de manejo de las drizas de las velas y de los backstay de popa y la parte de bulbo, orza retráctil, optaría por la solución de los interruptores. O lo que es lo mismo en todas las funciones en las que actuemos con el mando al 100% y deba de quedar en esa posición mientras la estamos realizando. Igualmente con el motor y hélice

En el caso de manejo de las escotas de las velas, mayor, Génova y Spinnaker, así como en las maniobras de timón, optaría por la solución del Stick.

Lo que tengo que comprobar es la dificultad de trucar los servos, ya que tengo una futaba y dicen que el servo 3003 es el adecuado para esos menesteres, claro esta que su trucaje no tiene nada que ver con el tuyo, el trucaje normal es el de convertirlo en un simple motor DC, ya que le retiran el potenciómetro de control para que pueda dar vueltas sin fin.

Sin embargo con tu sistema nos aseguramos el retirar el 50% de los fines de carrera, no obstante es conveniente por seguridad que se queden donde estaban programados.

Haré una prueba con estos servos que tienen un buen precio , ya que tengo que comprar algunos, que me han pasado a mejor vida.
SERVO FUTABA FP-S148 (3Kg- 0.22 seg.)    

un saludo a todos

Diego en el FTP te coloque el plano con el avance actual, las cuadernas, las orzas retractiles, los timones, el tope de mastil, etc. a medida que vaya ampliandolo te lo reenvio.



Desconectado melk

  • PIC10
  • *
  • Mensajes: 20
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #11 en: 08 de Febrero de 2008, 00:01:22 »
Espero que sirva de algo, ahi lo dejo como referencia

http://www.e-radiocontrol.com.ar/

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #12 en: 08 de Febrero de 2008, 03:12:59 »
Ok Juan Luis. Yo sigo con los servos, y ahora tengo ya un par de motores Paso a Paso y otro par de D.C. con encoder incluidos, en cuanto los tenga desmotados y visibles os pongo unas fotos.

Voy a ver también si monto unas Ni-Cad para el módulo de la emisora y le pongo un Pic que haga "eco" de lo que reciba para las pruebas de distancia.

Este finde puede ser sonado. ja, ja, ja  :D :D :D

Mario, insisto. Cuenta, cuenta, cuenta. Tu técnica y conocimiento no pueden quedar guardados en un baúl. Que se haga la luz, tus alumnos te oímos atentos y entusiasmados.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado JLIGUAL

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
    • Habilitacion Naval
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #13 en: 09 de Febrero de 2008, 07:50:06 »
Buenos dias a todos:

Hoy sabadete estoy empezando a imprimir las cuadernas y comienzo la construccion del casco del velero.

El anterior que os enseñe lo tentgo en Cadiz y hasta finales de marzo no voy por alli, asi que tendre que hacerme otro y de esa manera os voy colgando fotos del proceso. El de Cadiz es de 1200 milimetros y portanto bastante incomodo para el hueco que le puedo asignar en el coche, no me entra en el maletero, asi que tiene que viajar en el asiento trasero como un pasajero mas, por eso me plantee el construir este con la escala anteriorm es decir de 1.000,- milimetros osea, de 1 metro que ya es mas asumible por el capo.

Durante la semana y si la empresa me da tiempo ire preparando el sistema de nuestro maestro Mario, los Servos de 10 / 12 vueltas que nos van a venir de perlas para los movimientos.

Diego: por aqui tengo unos cuantos motores p&p de 6 hilos, pero los habia desechado por la cantidad de conexiones que necesitaban, me hice el calculo y me parecian demasiados hilos. estos suelen tener un torque majo, los modelos que tengo son de desguace de impresoras, concretamente el modelo EM210 y EM211

Pregunte en Guinea Hobbies por las reductoras de Tamiya y me dijeron que fueron una tirada que hicieron para la educacion y los kits, pero que el representante en España que solo importa de esta firma cuatro o cinco cosas, ademas de los vehiculos de coleccion. Asi que tendre que hacer el pedido directamente a polulu

Comienza el proceso de trabajo en el estillero, visto que ya la seccion de ingeniria electronica ya esta en el buen camino y a punto de obtener el cuarto exito del proceso de Diseño. Que la parte mecanica ya ha solucionado las vueltas necesarias del servo. Vamos a por la parte de marqueteria y carpinteria.

Un saludo a todos y comienza el dia D hora H.

Juan Luis Igual

 

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Proyecto Radiocontrol : Receptor RC asistido por PIC
« Respuesta #14 en: 09 de Febrero de 2008, 11:09:57 »
Ya voy extrayendo la mecánica para las pruebas.

Aquí tenéis unas fotografías de los motores DC 12V que he conseguido.







He intentado desoldar los LMD18200 pero no he podido. Imagino que haría falta o un soldador por aire o algo así ya que el truco de ponerle el encendedor al mismo tiempo que tiro de él no me ha dado resultado. Voy a ver que invento para sacar esos integrados.

Nota: Tengo un L298N que igual uso en lugar de esos LMD1820.

« Última modificación: 23 de Mayo de 2010, 03:23:12 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania