¿De qué manera el uso de UART reduce el ruido al hacer la comunicación inalámbrica?

1

Estoy en el proceso de diseñar algo que necesita hacer una comunicación inalámbrica de aproximadamente 6 pulgadas y controlar un servo. Como no tengo línea de visión, estoy usando algunos chips de RF realmente baratos.

Soy un novato en la tecnología inalámbrica, así que junté algunas cosas para ver qué pasa. Conecté el transmisor de RF a un pin en el PIC y le escribí y luego conecté la salida del receptor de RF a un servo y traté de moverlo. Esto no funcionó pero ahora estoy tratando de entender por qué. Funciona bien sin comunicación inalámbrica.

Después de leer un poco, creo que es porque hay muchas interferencias. Así que creo que la solución es usar algún protocolo de transferencia de datos como UART y leerlo en otro PIC y luego enviarlo a un servo. Por lo que leo, esto me permite distinguir mis datos del ruido. Mi pregunta es, ¿cómo me permite UART hacer esto? Entiendo que UART es una forma de convertir datos paralelos a datos en serie con bits de inicio y parada y luego volverlos a convertir en paralelos para usarlos en el extremo receptor, pero ¿cómo me da la posibilidad de ignorar el ruido? ¿Cómo se distinguen los bits de inicio y parada del ruido?

¿Hay una manera de usar solo algunos condensadores para filtrar para evitar que haya procesamiento en el extremo receptor? Sería muy bueno si pudiera tener un simple circuito en el extremo receptor con receptor, filtros y el servo sin ningún PIC.

¡Gracias!

Editar: El chip del transmisor es FS1000A y el receptor es XY-MK-5V.

    
pregunta Shawn Volpe

2 respuestas

4

El FS1000A es un transmisor OOK (On Off Keying) de 433MHz. Produce una onda portadora continua de 433 MHz cuando la señal de entrada digital es alta (con clave 'ENCENDIDO'), y ninguna portadora cuando la entrada es baja (con clave 'APAGADA'). OOK es una forma de Modulación de amplitud adecuada para transmitir señales digitales.

Esta transmisión podría recibirse con un simple circuito sintonizado y un detector de diodo (es decir, un 'conjunto de cristal') para recrear la señal digital original, pero solo a corta distancia porque la intensidad de la señal de RF disminuye rápidamente con la distancia (y el FS1000A solo saca unos pocos milivatios, por lo que el rango sería extremadamente corto!).

La mayoría de los usuarios quieren más de unos pocos cm de rango, por lo que el XY-MK-5V usa un superregenerativo simple pero muy efectivo

  1. cuando la señal de RF está desactivada, el receptor 'enrolla la ganancia' tratando de detectar la señal inexistente entre los pulsos de la onda portadora. Si la portadora está APAGADA durante demasiado tiempo, los impulsos de ruido comenzarán a aparecer entre los períodos de ENCENDIDO. Cuando no se transmite ninguna señal, la salida del receptor es solo un ruido de ruido.

  2. La salida de un detector superregenerativo es AC , por lo que la señal digital de 0-5V DC se convierte en una señal de audio cuyo voltaje DC promedio varía según la relación de los tiempos de pulso de alto a bajo. El XY-MK-5V tiene un segmentador de datos que intenta regenerar la señal digital, pero solo funciona correctamente cuando la relación alta / baja no está muy lejos del 50%.

Su señal de pulso de servo es alta para 1 ~ 2 ms y baja para 18 ~ 19 ms, una relación de ENCENDIDO / APAGADO de solo 5 ~ 11%. Es probable que esto sea demasiado bajo para que el cortador de datos funcione de manera confiable, y el largo tiempo de apagado puede ser suficiente para causar ruido cuando el receptor 'aumenta la ganancia'. El resultado final es que su señal digital no se recibe limpiamente.

Para resolver estos problemas, necesita 'codificar' el pulso del servo en una señal digital cuya relación de ENCENDIDO / APAGADO promedio no sea demasiado lejos del 50% (para mantener feliz al cortador de datos) y con tiempos cortos entre pulsos (para mantener el AGC del receptor feliz). Luego, en el extremo receptor, debe "decodificarlo" de nuevo a un pulso de servo de 1 ~ 2 ms.

Una forma sencilla de hacerlo es producir una señal PWM del 50% cuyo período varía de 1 a 2 ms. En el receptor puede usar otro PIC que mide el período y lo utiliza para controlar su propio servo generador de pulso. (La razón para usar el período en lugar del ancho de pulso es evitar errores de tiempo debidos a tiempos de subida y caída de pulso desiguales).

Un protocolo más complicado podría enviar datos digitales a través de Codificación Manchester o algún otro esquema de codificación amigable de RF, con un decodificador correspondiente en el receptor. Los datos digitales generalmente necesitan bits de sincronización para identificar dónde comienzan y terminan los paquetes de datos, y más bits (paridad / suma de comprobación / CRC) para detectar y posiblemente corregir errores. Esto puede hacer que la codificación de los protocolos de datos digitales sea bastante compleja.

Un UART está diseñado para enviar y recibir datos seriales asíncronos a través de cables. El formato de datos normalmente no es compatible con RF porque la señal puede pasar largos períodos de tiempo siendo alta o baja sin intentar mantener un promedio del 50%. Esto puede solucionarse seleccionando cuidadosamente qué patrones de datos transmitir, o codificando más la salida. Sin embargo, a menos que necesite transmitir y recibir una gran cantidad de datos digitales, puede ser más fácil simplemente 'golpear a su alrededor' su propio protocolo.

UARTS tiene un sistema de detección de errores muy básico que usa un bit de 'paridad' para verificar que el número de '1's en un byte es par o impar, y pueden detectar errores de' trama 'causados por la falta de los bits de inicio y parada. Sin embargo, a menudo esto es no suficiente para atrapar todos los errores causados por el ruido de RF.

    
respondido por el Bruce Abbott
0

El UART PUEDE sobreexplotarse durante cada bit de tiempo, y realizar una mayoría de votos sobre si se transmitió realmente un 1 sólido o un 0 sólido.

Los UARTS más antiguos se muestrearon 16 veces durante cada intervalo de bits. Luego se tomó una decisión de 1/0.

Para obtener más ayuda, utilice un filtro R * C con la velocidad adecuada para establecerse en varias TAU dentro del tiempo de bit.

Si el tiempo de bit es 100uS, ve a 3 Tau (solo mi instinto, después de haber trabajado en la sincronización de bits) e implementarlo como 33uS R * C; 33 ohms y 1uF, 3.3Kohm y 0.01UF, etc.

Uno de los beneficios de la UART es su capacidad para identificar el bit "START"; necesitarías implementarlo tú mismo, de lo contrario.

    
respondido por el analogsystemsrf

Lea otras preguntas en las etiquetas