miliamperios.com

Bootstrap Framework 3.3.6

Más de una docena de componentes reutilizables construidos para proporcionar iconografía, menús desplegables, grupos de entrada, navegación, alertas, y mucho más ...

Todo lo relacionado con el estudio, diseño y funcionamiento de circuitos y componentes electrónicos relacionados con el radio control. Fundado el 4 de Octubre del 2006.

Moderador: Moderadores

Avatar de Usuario
Por dedalo1111
#904091
Coincidimos entonces, si lees el post desde el principio verás que era de lo primero que le anticipamos a Blandi, que 8 bit posiblemente sería muy ambicioso (por interferencias, tolerancias, etc.). Xeres, apuntó la idea de PCM y utilizar el interfaz trainer... en fin, que eso está ahí y ya veremos hasta donde se desarrolla.

Igualmente, tambien coincido en que la naturaleza on/off no permite "oscilaciones" o siquiera variaciones de 1 bit. Si la "unidad de pulso" resulta demasiado estrecha abra que renunciar a bits forzosamente y encontrar un compromiso. El valor de 8 bit es un objetivo deseable, pero no inamovible :)... la serialización?, queda muy lejos aún :roll: .

Para la estabilidad de la señal, yo desde luego le programaría algún mecaniso de histograma de las lecturas y mantener la más repetida de las N últimos muestreos y/o algo de antirebote aceptando solo valores que se repitan consecutivamente N veces. Igualmente, la latencia es la que "lo sufrirá" y habrá que encontrar un compromiso aceptable 8).

A Blandi aún le falta para llegar a esto, pero confiemos que así sea y pronto estemos hablando de estos temas sobre el prototipo :wink: :wink:

Salu2
Por fbforos
#904333
Veo que nos vamos entendiendo.
Para la estabilidad de la señal, yo desde luego le programaría algún mecaniso de histograma de las lecturas y mantener la más repetida de las N últimos muestreos y/o algo de antirebote aceptando solo valores que se repitan consecutivamente N veces. Igualmente, la latencia es la que "lo sufrirá" y habrá que encontrar un compromiso aceptable 8).
Como te comentaba al principio yo tengo pensada una tabla. Si tenemos 6 bits son 64 tramos posibles. 1000/ 64 son 15us por tramo. Para asignar un pulso a un tramo se tiene que cumplir pulso absoluto de ese tramo +- 5us y dejamos 2,5 us por arriba y por abajo como zona muerta en la cual se descarta el pulso.

Que micro utilizareis para el proyecto?
Avatar de Usuario
Por dedalo1111
#904348
Tienes otra fórmula más directa... a ver que te parece :wink: , "centras" el tramo a la mitad de "la unidad" (15uSeg) sumándole 7 y divides por el ancho "unidad" para saber el valor (te quedas con la parte entera). Con esto obtienes el valor directamente:
Código: Seleccionar todo
bit_estado = (int) ((lectura_ancho_pulso+7)/15)
Al desplazar la lectura en 7, te centras sobre la mitad del rango de un valor y obtienes el efecto de tolerancia +7/-8. Con esto obtienes el resultado super-rápido y puedes hacer más muestreos por segundo para aplicar histogramas (p. ejemplo) y añadirle robustez.

Blandi estaba haciendo "la práctica" usando un PIC y directamente en ensamblador. A ver si nos cuenta avances :roll:

Salu2
Avatar de Usuario
Por dedalo1111
#904861
Joeeer, ahora caigo en lo que querías decir con lo de la tabla :oops: (esto es como el chiste de la tortuga ¡¡¡aaaahhh, tablaaaa!!! :oops: :oops: )

Lo que dices es usar el valor de ancho de pulso como desplazamiento sobre la tabla para elegir el valor de estado.... uhmmm, también es muy buena :lol: . Además, como dices, puedes dejar los valores "frontera" a un valor dummy y de esta forma evitar oscilaciones.

Creía que decías usar una tabla con los valores del intervalo de cada tramo y andar haciendo comparaciones de > o < :? :?, por eso no te entendía... "visualizábamos" cosas distintas :roll:

Salu2
Avatar de Usuario
Por xerex
#905076
fbforos, cuanto tiempo :)

No creo necesaria una tabla, ya que vais a perder mucho tiempo de CPU y excesivamemoria del micro, es mejor la solucion de dedalo111 (a mi entender, de echo es como lo habia pensado inicialmente), hacedlo por el metodo de los incrementos por cada LSB de la señal a similitud de un ADC o un DAC, llevan la misma filosofia. En cuanto a los ruidos, histeresis y demas, efectivamente a mayor numero de escalones, mayor probabilidad de ruido, pero para eso existen los filtros no? :)

De todas formas y con las señales que tratamos es un proyecto muy ambicioso, para eso tenemos otros sistemas como bien comenta fbforos... aunque todo es ponerse no blandi?



Saludos!!!!
Por fbforos
#905157
Hola Xerex cuanto tiempo

Creo que no me he explicado bien. El primer punto esta en generar un pulso preciso en la emisora. para ello utilizaremos seguramente un micro y verás la razón.
generar un pulso lógico con 3 interuptores de 3 posiciones son muchos cables y resistencias. Un micro asociado a un potenciometro digital es una buena solución.
El primer problema que hay con los interruptores es que todos los que compramos habitualmente son activado - desactivado - activado. Si cada interuptor maneja 2 bits tedremos las siguientes combinaciones

01 -- 1000us
00 -- 1500us
10 -- 2000us

combinando los 3 interruptores tendremos 6 bits pero solo 27 posibles valores. Matriz o tabla y cada posible combinación generará un pulso determinado y único

Pasamos al receptor leemos ancho de pulso matriz de 27 filas por 3 columnas, a cada fila se accede por su posición natural con una formula parecida a la que propones.
(ancho de pulso - 1000us) / ancho del tramo = x,xx ,xx < 0,45 fila X si ,xx >0,65 fila x+1
en cada una de las columnas se encuentra el parámetro a introducir en cada uno de los generadores de pwm de cada canal.

Nosotros seguramente utilizaremos el arduino, estoy 'jarto' de piratear herramientas para poder usar microchip. El sistema de desarrollo de arduino lo puedes programar en C y en asembler y funciona bastante bien y es gratis total :lol: :lol: Claro pero para atmel
Por fbforos
#905162
Perdonar, he vuelto a re-leer el hilo y me encuentro con este dilema
para la fase II de generar el pulso ¿resistencias o interfaz trainer?


para mi ni el uno ni el otro, con resistencias un lio de pelotas para el cableado y el interfaz de trainer ya lo tenemos ocupado con el HTWMplus (Headtracker WII Motion Plus)

http://www.aeromodelismovirtual.com/sho ... php?t=4300

En el hacemos un headtracker usando los giroscopos del wii motion plus, el código es abierto lo único el uicro es atmel y la plataforma arduino :mrgreen:
Avatar de Usuario
Por Blandi
#905508
buff, feliz año a todos con algo de retraso, gracias a todos por el interés, os cuento, el programita que quería para la salida del receptor ya está funcionando aunque con un pequeño error, utilizo el tmr0 sin divisor en un 16f84 a 4Mhz con lo que cada desbordamiento cuenta 256ms y acumula uno en otro registro, y cuando se produce la interrupción por bajada en rb0, (termina el dutty cycle) paro el tmr0 y paso a BCD el valor de este mas lo que acumuló, el programa es perfecto salvo cuando estamos en multiplos de 256ms.
Esto es porque cuando está atendiendo a la interrupción por desbordamiento si termina el duty cycle la bandera del flanco de bajada de rb0 se pone a uno pero aún no está activo el permiso global de interrupciones por lo que al volver a activarlo salta la interrupción pero no se cuanto hace que tenía que haber parado la cuenta. esto nos dá que en ese intervalo hay 14ms que dan la misma lectura.
La solución en principio mas facil es... bueno... parece :roll: cambiar de pic y hacerlo con uno que tenga tmr1 que es de 16bits y es suficiente para hacer la cuenta sin el enredo que causa el fallo. El elegido en principio va a ser un 16f628 y además podemos prescindir del xtal.
De todos modos está un pelín parado porque entre dédalo1111 y printf :mrgreen: me han convencido para pasarme a C, por lo que espero que en un mes o mes y medio ya pueda hacerlo en C.
De momento ya me llevo bien con el void, el main, los prototipos de funciones...argumentos... y demás bichejos raros.
Avatar de Usuario
Por xerex
#905917
fbforos escribió:Perdonar, he vuelto a re-leer el hilo y me encuentro con este dilema
para la fase II de generar el pulso ¿resistencias o interfaz trainer?


para mi ni el uno ni el otro, con resistencias un lio de pelotas para el cableado y el interfaz de trainer ya lo tenemos ocupado con el HTWMplus (Headtracker WII Motion Plus)

http://www.aeromodelismovirtual.com/sho ... php?t=4300

En el hacemos un headtracker usando los giroscopos del wii motion plus, el código es abierto lo único el uicro es atmel y la plataforma arduino :mrgreen:

Voy a tener que revisar aeromodelismo virtual, llevo mucho tiempo sin aparecer por alli y con mi proyecto parado... si ya lo han hecho con giroscopos, tengo que ver el codigo que no me funciono en su momento correctamente.... :)

Bueno en cualquier caso creo que este proyecto se queda parado al menos durante 2 meses :(


Blandi, bajate el CSS y su manual, eso te ayudara en C.

Saludos.
Avatar de Usuario
Por Blandi
#909380
xerex escribió: Bueno en cualquier caso creo que este proyecto se queda parado al menos durante 2 meses :(
Saludos.
Hombre de poca fé.
Ya he modificado el programa para usarlo con el 16f628 y usar el TMR1, la verdad es que se simplifica mucho, solo lo he probado en el pic simulator y funciona, de momento saca los datos por lcd, pero cuando esté terminado se va a quedar en nada porque sobra tanto el conversor BCD como todo lo del lcd, por lo que el programa es minúsculo.

La idea es que funcione con fail safe bastante simple, se testea el dutty cycle y se almacena en un registro que si durante varias veces seguidas no es estable o está fuera del rango entre mínimo y máximo saca un valor conocido que va a hacer de fail safe.
Si el valor es estable dentro del rango entonces si va a las salidas.
De momento van a ser salidas on off, pero en la siguiente versión si esta funciona quiero meter salidas pwm que con un par de pulsadores se pueden hacer varias salidas de servo con dos posiciones configurables.

Pero esto ya se andará, de momento vamos a la emisora.
Bien, la historia que comentaba dédalo del cable trainer es muy interesante, pero tengo una duda, ¿se puede meter solo un canal por el cable trainer y mantener los demás o hay que interpretar los demás canales y meter la trama completa? porque la verdad cambia de cojones.
(por cierto si quereis ver el código lo pongo aquí) es muy simple
Avatar de Usuario
Por Blandi
#909507
gracias por la ayuda, por cada cosa que me queda clara tengo dos nuevas preguntas :oops:
tremendo hilo, ahí ya no quereis modificar canales, ¡quereis inventarlos!, mimadriña que nivelón.

Pues leyendo leyendo a parte de darme cuenta de lo miserable que soy electronicamente hablando, mas o menos creo que pillo la idea.
Acabo de hacer una prueba con los dedos cruzados y salvo que se me escape algo creo que podemos llegar a buen puerto con el proyecto.
Acabo de enchufar la f6exa al ordenador con el cable para el simulador y pulsando el trainer sigue funcionando.
Entonces a ver si estoy en lo correcto, se supone que cuando pulso el trainer la emisora sigue sacando por el pin de salida de éste la posición de los canales propios, sin embargo lo que sale por la antena es lo que entra de la otra emisora. ¿correcto?
Si esto es cierto "simplemente" (valiente que es uno) tengo que coger de ese pin de salida la trama y reproducirla en la entrada del trainer tal cual variando solamente el canal que quiero usar.
dime que si! dime que si! dime que si! :mrgreen:
Avatar de Usuario
Por xerex
#909717
Blandi escribió:gracias por la ayuda, por cada cosa que me queda clara tengo dos nuevas preguntas :oops:
tremendo hilo, ahí ya no quereis modificar canales, ¡quereis inventarlos!, mimadriña que nivelón.

Pues leyendo leyendo a parte de darme cuenta de lo miserable que soy electronicamente hablando, mas o menos creo que pillo la idea.
Acabo de hacer una prueba con los dedos cruzados y salvo que se me escape algo creo que podemos llegar a buen puerto con el proyecto.
Acabo de enchufar la f6exa al ordenador con el cable para el simulador y pulsando el trainer sigue funcionando.
Entonces a ver si estoy en lo correcto, se supone que cuando pulso el trainer la emisora sigue sacando por el pin de salida de éste la posición de los canales propios, sin embargo lo que sale por la antena es lo que entra de la otra emisora. ¿correcto?
Si esto es cierto "simplemente" (valiente que es uno) tengo que coger de ese pin de salida la trama y reproducirla en la entrada del trainer tal cual variando solamente el canal que quiero usar.
dime que si! dime que si! dime que si! :mrgreen:
Nop, estas equivocado, las emisoras tienen la entrada desde la otra emisora y la salida de ella misma (conector de trainer), pero no se transmite por la antena la señal entre las emisoras. -> cuando has volado con doble mando, ¿a que te han hecho quitar el cristal de la emisora slave? por tanto no modulas y no emites radiofrecuencia si lo has hecho asi. Si no lo has hecho asi, mu mal.

por eso, cuando pulsas el trainer, sigues obteniendo señal en el ordenador, porque la que estas conmutando, no detecta nada en su entrada y continua emitiendo su señal, imaginate, estas volando solo y se te ocurre pulsar el boton de trainer, el avion dejaria de responderte y podria incluso a tener algun tipo de señal que los servos pudieran interpretar.

No creo que se pueda reinyectar la salida de la emisora a su entrada por la via del trainer, seria una realimentacion que supondria un bucle.

de lo que se ha hablado en aeromodelismo virtual, es de coger esa señal que sale y mezclarla con los canales que te falten, pero eso es un proyecto delicado, no imposible, ya que tienes que temporizar la captura de la señal de la emisora y mezclarla con la de los canales que quieres enviar, y enviarla a traves de un modulo de Radio.....la teoria esta bien, la practica..... complicadilla.

Saludos.
Avatar de Usuario
Por xerex
#909720
dedalo1111 escribió:Si no le entendí mal a Xerex, efectivamente es así :wink: circuitos-electronicos-especiales-para- ... ml#p899998

Vamos campeón!!!!

ahi estaba comentando que la FF9 tiene una funcion que permite mezclar los canales que le configures con los canales de la emisora a traves del cable trainer, vamos a ver, te pongo un ejemplo, utilizas para un avion los canales del 1 al 4, y quieres que el 5 y el 6 los controle otra emisora, pero que no te controle del 1 al 4, pues tu puedes decirle a la emisora que solo mezcle las señales de los canales del trainer 5 y 6 (desechando el resto) con las tuyas, emitiendo via radio del 1 al 6 (4 canales propios + 2 canales de la slave). Esto es mas o menso lo mismo que comentaba en la respuesta anterior, un mezclador, con seleccion de la mezcla.

Siento haberos confundido, si ha sido asi.

Saludoos.
Por aleJJ
#997629
Mmmm...está todo muy bien y correcto, lo único que las resistencias de carbón son demasiado dependientes de las temperaturas, es mejor la opción de resistencias con películas metálicas. Los interruptores tal como lo estás programando tú yo ya lo tengo incorporado en mis sistemas y de esa manera nunca he tenido problemas.
Muy buena tu iniciativa. Saludos!
Avatar de Usuario
Por xerex
#997894
un proyecto 10 meses parado no es una iniciativa..... :(
Avatar de Usuario
Por Blandi
#998322
:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Pero si xerex tiene razóooooon...
Pero alma de cántaro como me reflotas esto ahoraaaaa... :shock:
Tu primer post en el foro y lo usas para dejarme quedar mal... te tengo una manía!!! (es bromita ¿eh?)
Yo aquí escondido como una putita y todo el mundo con esto casi olvidado y ahora me haces esto.

Pues mira, no hay mal que por bien no venga, ahora me piqué y me he puesto al tema, a ver si xerex me perdona :roll:

Resumiendo un poco lo que llevaba andado...
La parte del receptor es bastante sencilla entonces el problema lo tenemos en la emulación del canal.
Bueno pues con los progresos que he ido haciendo en los últimos meses :mrgreen: no me lo creo ni yo...
... en serio, no le he tocado pero en electrónica si avancé algo. Fuera pic's y arriba con arduíno que es para un aficionado cutrecillo como yo mucho más fácil.
Tengo el problema de que para modificar la trama no lo veo muy claro y además creo que no sería compatible con otras emisoras.
Entonces si me permitís volver casi al principio tengo tres ideas nuevas... creo que son nuevas.

1º- Red de resistencias R-R2, joder esto no lo sabía yo, este sistema sustituye al primero del las resistencias con la ventaja de que es mas estable a la temperatura, es barato, y según tengo leído el error es siempre menor al bit menos significativo, por lo que como mínimo tenemos siete funcionales. Solo tenemos que diseñar una pequeña placa bastante simple y luego insolarla.

2º- un DAC0808LCN que básicamente es lo mismo pero en un integrado, también es barato (poco mas de un euro) y nos ahorra hacer la placa y soldar todas las resistencias, además tiene una patilla para un compensador que se puede usar para compensar la temperatura. El problema que le veo es la alimentación de -12vdc que viene en el datasheet.

3º- con un arduíno y 8 pin digitales y una salida analógica de 8bits se puede sacar una señal en pwm que creo que no es difícil estabilizar para que de un voltaje continuo,el problema es que es lo mas caro aunque si funciona se puede prescindir de arduino y usar sólo el chip con poquitos componentes, sigue siendo lo mas caro.

Bueno si mabeisperdonauporlatardanza nos ponemos otra vez al tema :?
Avatar de Usuario
Por Blandi
#998830
He estado liado toda la tarde con las R2R y la verdad es que aunque tenía algo de miedo por lo que habíais dicho de la temperatura, la inestabilidad, etc de las resistencias no tenía muchas esperanzas, pero me he quedado acojonado.
He echo una red R2R de cuatro bits para probar, usé resistencias normales de 1/4 de w de 1k y para la de 2k puse dos en serie y para adelante.
Los resultados son mucho mejores de lo esperado.
Lo he conectado al pin analógico A0 de arduíno y sacado los datos por puerto serie del ordenador para saber si actuaba como se necesita y los resultados son estos:

0........1........2........3...........lectura

0........0........0........0.......... 0
0........0........0........1.......... 62
0........0........1........0..........126
0........0........1........1..........190
0........1........0........0..........254
0........1........0........1..........318
0........1........1........0..........382
0........1........1........1..........446
1........0........0........0..........510
1........0........0........1..........575
1........0........1........0..........639
1........0........1........1..........703
1........1........0........0..........767
1........1........0........1..........831
1........1........1........0..........896
1........1........1........1..........960
Avatar de Usuario
Por Blandi
#998832
Sigo aquí que si se me borra me pego un tiro, arf

Si os fijais los valores son muy próximos a los teóricos y están muy separados, por lo que hacen casi exactamente lo que se les pedía.
Al poner a 1 solo el 0 que es el mas significativo tendría que dar una lectura de 512 y da 510
con solo el 1 debería dar 256 y da 254
Al poner los dos a 1 y los otros dos a cero debería dar 768 y da 767
... y así con los demás,si hacer la tabla teórica al lado vereis que casi son exactos.
Una vez montado probé a calentar todo con una pistola de calor para ver cómo variaba, estaba al principio a 20ºC y lo puse a 70ºC, y para mi asombo seguía dando exactamente las mismas lecturas.
De todos modos tengo encargadas una resistencias de precisión (a ver si es cierto) que me llegan dentro de un par de días y espero que aún mejore un poco las lecturas, a bote pronto y viendo estos resultados casi aseguraría que seguro que 6 interruptores funcinarán sin problema, casi casi me aventuro a decir que siete tambien y el octavo ya lo dudo bastante.
Cuando pueda cuelgo unas fotillos, saludos
PD ¿estoy perdonado? :(
Avatar de Usuario
Por xerex
#999091
Claro que estas perdonado jajajja

a la! continua con tu proyecto que ya le has vuelto a coger :P

Saludos.
Avatar de Usuario
Por xerex
#999095
Blandi escribió::oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Pero si xerex tiene razóooooon...
Pero alma de cántaro como me reflotas esto ahoraaaaa... :shock:
Tu primer post en el foro y lo usas para dejarme quedar mal... te tengo una manía!!! (es bromita ¿eh?)
Yo aquí escondido como una putita y todo el mundo con esto casi olvidado y ahora me haces esto.

Pues mira, no hay mal que por bien no venga, ahora me piqué y me he puesto al tema, a ver si xerex me perdona :roll:

Resumiendo un poco lo que llevaba andado...
La parte del receptor es bastante sencilla entonces el problema lo tenemos en la emulación del canal.
Bueno pues con los progresos que he ido haciendo en los últimos meses :mrgreen: no me lo creo ni yo...
... en serio, no le he tocado pero en electrónica si avancé algo. Fuera pic's y arriba con arduíno que es para un aficionado cutrecillo como yo mucho más fácil.
Tengo el problema de que para modificar la trama no lo veo muy claro y además creo que no sería compatible con otras emisoras.
Entonces si me permitís volver casi al principio tengo tres ideas nuevas... creo que son nuevas.

1º- Red de resistencias R-R2, joder esto no lo sabía yo, este sistema sustituye al primero del las resistencias con la ventaja de que es mas estable a la temperatura, es barato, y según tengo leído el error es siempre menor al bit menos significativo, por lo que como mínimo tenemos siete funcionales. Solo tenemos que diseñar una pequeña placa bastante simple y luego insolarla.

2º- un DAC0808LCN que básicamente es lo mismo pero en un integrado, también es barato (poco mas de un euro) y nos ahorra hacer la placa y soldar todas las resistencias, además tiene una patilla para un compensador que se puede usar para compensar la temperatura. El problema que le veo es la alimentación de -12vdc que viene en el datasheet.

3º- con un arduíno y 8 pin digitales y una salida analógica de 8bits se puede sacar una señal en pwm que creo que no es difícil estabilizar para que de un voltaje continuo,el problema es que es lo mas caro aunque si funciona se puede prescindir de arduino y usar sólo el chip con poquitos componentes, sigue siendo lo mas caro.

Bueno si mabeisperdonauporlatardanza nos ponemos otra vez al tema :?
una señal PWM no se deberia de sacar con una señal analogica, asi que quitatelo de la cabeza, para eso se utilizan los timers del micro, y su funcion especifica PWM.

El sacar el PWM es tan sencillo como saber la temporizacion que hay que enviar (de 800 us a 2000 us) y hacerla proporcional a los 8 canales que quieres enviar/recibir.

Por cierto los pics son tan sencillos o mas que arduino, el tema esta que arduino es una base practica para el estudio de los atmel. Si sabes C sabes programar arduino, pics, hitachi... lo que quieras.

Saludos
Avatar de Usuario
Por Blandi
#999830
Hoy se acordaron de mi en correos y me llegó el módulo de fr-sky por un lado, unos rodamientos por otro y los DAC0808LCN.
...y mañana voy a la tienda de electrónica para recoger las resistencias de "precisión".
Pronto afoticos y algún vídeo. A ver si con el receptor de fr-sky funciona igual que con el de futaba, que con el de la wfly no iba nada bien.

¡Elija que Addons deben funcionar, utilice sólo lo que realmente necesita!