¿Por qué los pines analógicos se afectan entre sí?


8

Tengo un sensor y genera una señal analógica.

Estoy leyendo todos los datos analógicos y los envío a mi computadora.

ingrese la descripción de la imagen aquí

uint8_t sensors[] = { A0,A1,A2,A3,A4,A5,A6 };
const int len = sizeof(sensors) / sizeof(sensors[0]);
void loop(void)
{
    for (size_t i = 0; i < len; i++)
    {
        auto sensor = sensors[i];
        int sensorValue = analogRead(sensor);
        // Convert the analogue reading (which goes from 0 - 1023) to a voltage (0 - 5V):
        float voltage = sensorValue * (5.0 / 1023.0);
        char t[100];
        sprintf(t, "%d:%d$\n", sensor, sensorValue);
        uint8_t t1[100];
        //PrintSerial.println(t);
        memcpy(t1, t, 100);
        wifi.send(t1, strlen(t));
    }
    delay(300);
}

Tracé la lectura analógica. ¿Por qué el gráfico se ve así?

ingrese la descripción de la imagen aquí


Respuestas:


11

Esto es de esperar.

Los otros pines no tienen nada conectado, por lo que su voltaje está flotando.

El MCU Arduino solo tiene un solo ADC. Para leer los diferentes pines analógicos, utiliza un multiplexor para conectar el pin que desea leer al ADC individual. El ADC dentro de la MCU tiene un condensador de "muestra y retención" en su interior.

Para leer el voltaje en el pin, conectará el pin, para cargar la muestra y sostener el condensador. Luego desconectará y medirá el voltaje de la muestra y mantendrá el condensador, un bit a la vez.

Entonces, en su caso, al leer el voltaje en el pin conectado, cargará el condensador. Luego leerá los pines desconectados. Pero debido a que no hay nada conectado, el condensador de muestra y retención se mantendrá aproximadamente al mismo voltaje, porque el pin no conectado no lo cargará ni lo descargará.

La medición del voltaje en el condensador de muestra y retención disminuirá ligeramente este voltaje, por lo que en el gráfico las líneas serán más bajas que la medición anterior.

PD También, debido a que todos los pines se colocan en una placa de pruebas, tendrás un acoplamiento capacitivo entre los pines adyacentes.


Entonces, ¿no hay problema? ¿No disminuiría la precisión si hay otro pin?
Erow

66
Realmente no. A menos que la señal que intenta leer tenga una impedancia de salida muy alta. Puede conectar los pines no utilizados a tierra, si desea obtener un gráfico más limpio.
Gerben

0

El acc es realmente un pequeño condensador. A medida que cambia de canal, las cargas en el condensador acc se transfieren de un canal de entrada al siguiente. Si el siguiente canal de entrada es de muy alta impedancia, o muy baja capacitancia, las cargas en el condensador acc dominan y su voltaje cambia poco.

Además, un código deficiente también puede causarlo, generalmente por falta de tiempo suficiente para que se complete el complemento.


¿Quiere decir que necesito agregar un retraso en el ciclo for?
Erow
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.