Adquisición y envío de datos con diferente velocidad [cerrado]

-3

Necesito leer ciertos parámetros físicos a través de los sensores y enviarlos al microcontrolador y el microcontrolador debe combinar esta información y enviarla a través del transmisor de RF. Puedo leer todos los parámetros analógicos usando ADC. Hay una señal PWM proveniente del sensor de temperatura, pensé que usando interrupciones, puedo medir la longitud de la señal y obtener la información. El problema es que la tasa de muestreo cambia según los parámetros. Algunos de ellos deben muestrearse con 2kHz, 500Hz y otros 1Khz, también el sensor de temperatura produce PWM en 1 segundo período. Entonces, ¿cómo debo combinarlos y enviarlos correctamente y resolver después de recibirlos?

Edit: no expliqué la pregunta con suficiente claridad. El problema no es sobre la adquisición. Se trata de, en qué orden, con qué frecuencia debo enviar los datos. No quiero perder información al enviar datos, sino que, dado que las frecuencias de muestreo son diferentes, debería poder diferenciar qué datos se reciben en el receptor. Mi primera idea es guardar todos los datos en un período de 1 segundo (la velocidad de datos más lenta) y enviarlos una vez. Así estará en orden. Pero ahora supongo que enviar cada dato cuando se muestrea y poner una etiqueta al enviarlo es mucho mejor. Entonces, mi pregunta principal es ¿cuál es la forma común de manejar este problema?

    

1 respuesta

0

La mejor forma de leer la señal PWM es mediante el uso del contador del temporizador en el modo de captura de entrada. Usted ejecuta su contador a alta frecuencia y lo programa para una interrupción externa. Cuando la señal en un pin cambia el valor del contador actual se almacena en el registro de captura de entrada. Todo esto se maneja en hardware, por lo que su programa es libre de hacer lo que necesite. Tienes que manejar las interrupciones para adquirir ese valor y preparar la siguiente captura al comienzo del pulso.

La forma exacta en que conectas esas señales PWM depende de la MCU. Algunos de ellos solo tienen un pin de captura de entrada, por lo que tiene que usar el IC del multiplexor y pasarlo por sus sensores. O puede buscar MCU con suficientes pines de captura de entrada para todos sus sensores.

Incluso si tiene que usar sensores de entrada única y multiplex, no necesita preocuparse por la frecuencia de PWM diferente. Simplemente ejecute el contador lo más rápido posible (aunque no demasiado rápido para ser superado) y calcule el trabajo real en el software de acuerdo con la entrada que se muestrea en este momento.

ACTUALIZACIÓN:

Si está preguntando sobre el envío de datos, entonces es una pregunta completamente diferente.

En primer lugar, debe dividir claramente el código de adquisición de datos de la transmisión de datos. Sus rutinas de muestreo (especialmente las ISR) no deben hacer ninguna transmisión, deben colocar todos datos en variables compartidas y olvidarse de ellas.

Su código de transmisión depende de las necesidades de su destinatario objetivo y del ancho de banda disponible únicamente. Por ejemplo, puede combinar todos los datos en un bloque y enviar este bloque cada vez. Los datos lentos a menudo se enviarán sin cambios, pero el código será muy simple, tanto en el transmisor como en el receptor.

Alternativamente, puede diseñar su propio protocolo y enviar cada parámetro etiquetado individualmente por ID de fuente. En este caso, puede enviar datos de cambio rápido con más frecuencia. Idealmente, la frecuencia de transmisión para cada valor corresponderá a su tasa de adquisición, pero como ha separado dos capas, su tiempo es flexible y puede finalizar la transmisión anterior antes de enviar la siguiente, incluso si hay nuevos datos disponibles en el proceso.

Al final es un simple cálculo del ancho de banda. Calcule cuántos bytes puede enviar cada segundo dada la velocidad de transmisión. Calcule cuántos bloques puede enviar y vea si le proporciona una tasa de datos suficiente según sus requisitos. De lo contrario, calcule las tasas de datos individuales y vea cuántos bytes necesita enviar por segundo (incluidas las etiquetas) y sumarlos en el volumen total de datos. Si todavía está por encima de la velocidad de transmisión, estás fuera de suerte. Si no es así, puede seguir adelante e implementar el protocolo intercalado.

    
respondido por el Maple

Lea otras preguntas en las etiquetas