Proyecto Cuadricoptero UAV: Problema con receptor de emisora RC

Yo creo, que lo que hay que dejar claro es que analogWrite() del lenguaje Arduino genera un PWM de 490 Hz, que no es apto para el control de servos.

que no es apto para el control de servos

Aleluya!!!!!

Reconozco mi error con la frecuencia de la señal PWM de Arduino, no he estudiado a fondo el tema y daba por sentado que sería la misma que la del reloj.

Por cierto SrDongato gracias al enlace de un hilo abierto por Complubot: repásatelo bien y veras que se puede configurar a frecuencias más altas pero para 50Hz no, un motivo más para dejar de relacionar de una vez las salidas PWM de la placa con señales de control de RC.

Estoy de acuerdo que para un novato es mejor usar la librería preparada para servos

Es la forma más sencilla, como he dicho se puede hacer programando a mano y es un buen ejercicio para profundizar en el control de tiempos, pero personalmente lo considero un engorro.

pero como ha dicho SrDonGato, no dejan de ser PWM... smiley-wink

Si, PWM de 50Hz, que Arduino SOLO puede generar por SoftWare. Bueno solo seguro que no, seguro que se puede acceder a la configuración de los Timers para que el PWM que genera Arduino con el comando analogWrite() sea de 50Hz.... ¿alguien sabe hacerlo? ¿si? escribid un tutorial y subidlo al Playground.

¿Ventajas de usas los pines 3, 5, 6, 9, 10 y 11 que son los serigrafiados como PWM? si no nos van a dar una señal PWM de 50Hz NINGUNA. ¿Como hacemos que por esos pines salga una señal PWM de 50Hz? reconfigurando los Timers (ops, procedimiento avanzado) o utilizando la librería servo.h o programando a mano.

¿Relación directa de los pines PWM con el control de elementos RC? ninguna.

¿Problema de insistir en relacionar dos tipos de señal PWM totalmente distintos en frecuencia? Causa confusión.

Volvamos al principio del hilo:

Hola a todos,
estoy construyendo un cuadricoptero UAV para ello quiero poner el Arduino UNO entre el receptor de la emisora RC y los ESC con los motores. El problema que tengo es que los pines analogicos de entrada del Arduino no me detectan las señales del receptor de RC.

Claro que los pines analógicos no detectan las señales del receptor. El receptor está enviando una señal PWM a 50Hz, esto hay que leerlo con el comando pulseIn() desde un pin digital.

Ahora empieza el lio, un montón de gente bienintencionada da un montón de información erronea o confusa:

Los receptores suelen sacar PPM

falso.

Las emisoras suelen transmitir en PPM (creo que es analógico) y el receptor transforma la señal PPM en las salidas PWM de cada uno de los canales.

dejo a otros la interpretación de esta frase ¿alguien de acuerdo conmigo en que es confuso?

Ambas se leen en digital. en PPM se utiliza solo un pin , en PWM un pin por cada canal.

SrDongato, para ayudar así mejor no ayudes, por que de esa frase no se saca nada en claro, lo único que consigues es marear. No das ni el como ni el por que, no le dices al chaval ni que tiene que buscar ni donde. Recordemos: quiere insertar un Arduino Uno entre un receptor y varios ESC, ¿PPM por un solo pin? ¿por cual? "PWM un pin por cada canal" es lo único que tiene un poco de sentido en esa frase, pero el PWM que tendrá que leer es de 50Hz ¿adrib lo sabe? yo creo que no, de hecho, ya ha intentado leer ese PWM de 50Hz desde una entrada analógica de su Arduino UNO y no ha sacado nada en claro, evidentemente, por que así no se hace.

Siguiente respuesta de adrib:

Por lo que he leido en vuestras respuestas diria que estoy leyendo PWM ya que tengo un cable de señal por cada canal y ya que segun decis se leen en pin digital he probado con el codigo:

Ya está, adrib está confundiendo una señal PWM de 50Hz con otra de 490Hz ¿por que? por la cabezona insistencia de llamar PWM a ambos tipos de señales dando por sentado que todo el mundo conoce la diferencia de frecuencia, por que si no no me lo explico. Es por este motivo que yo INSISTO en NO llamar PWM a la señal de control de RC por que induce a esta confusión. ES una señal PWM pero de 50Hz y como esta puntualización no la hace nadie se confunde con el PWM de los pines PWM.
Mirad una línea del código con el que adrib ha intentado leer la señal de control de RC:

int sensorValue =analogRead(9); // He probado tanto analogRead como digitalRead;

Confundido a tope va el pobre adrib (que debe estar flipando con este hilo y la discusión que está generando).