Eu tenho um sensor e gera um sinal analógico.
Estou lendo todos os dados analógicos e enviando-os para o meu computador.
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);
}
Marquei a leitura analógica. Por que o gráfico se parece com isso?
Respostas:
Isto é esperado.
Os outros pinos não têm nada conectado a ele, então sua tensão está flutuando.
O MCU do Arduino possui apenas um único ADC. Para ler os diferentes pinos analógicos, ele usa um multiplexador para conectar o pino que você deseja ler ao único ADC. O ADC dentro do MCU possui um capacitor "sample and hold" dentro dele.
Para ler a tensão no pino, ele conectará o pino, para carregar a amostra e reter o capacitor. Ele irá desconectar e medir a tensão da amostra e reter o capacitor, um bit de cada vez.
Portanto, no seu caso, lendo a tensão no pino conectado, ele carregará o capacitor. Ele lerá os pinos desconectados. Mas, como nada está conectado, a amostra e o capacitor de retenção permanecerão aproximadamente na mesma voltagem, porque o pino desconectado não carregará nem descarregará.
Medir a voltagem na amostra e reter o capacitor diminuirá ligeiramente essa voltagem, por isso, no gráfico, as linhas serão mais baixas que a medição anterior.
PS Além disso, como todos os pinos são colocados em uma tábua de pão, você terá um acoplamento capacitivo entre os pinos adjacentes.
fonte
O acc é realmente um pequeno capacitor. À medida que você muda de canal, as cargas no capacitor acc são transportadas de um canal de entrada para o próximo. Se o próximo canal de entrada for de impedância muito alta ou capacitância muito baixa, as cargas no capacitor acc dominam e sua tensão muda pouco.
Além disso, código ruim também pode causar isso - geralmente devido à falta de tempo suficiente para a adição ser concluída.
fonte