J'ai un capteur et il génère un signal analogique.
Je lis toutes les données analogiques et les envoie à mon ordinateur.
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);
}
J'ai tracé la lecture analogique. Pourquoi le graphique ressemble-t-il à ceci?
Réponses:
C'est à prévoir.
Les autres broches ne sont connectées à rien, leur tension est donc flottante.
L'Arduino MCU n'a qu'un seul ADC. Pour lire les différentes broches analogiques, il utilise un multiplexeur pour connecter la broche que vous souhaitez lire à l'ADC unique. L'ADC à l'intérieur du MCU a un condensateur "échantillonnage et maintien" à l'intérieur.
Pour lire la tension à la broche, il faudra connecter la broche, pour charger l'échantillon et maintenir le condensateur. Il déconnectera et mesurera ensuite la tension de l'échantillon et maintiendra le condensateur, un bit à la fois.
Donc, dans votre cas, en lisant la tension sur la broche connectée, il chargera le condensateur. Il lira ensuite les broches non connectées. Mais parce que rien n'est connecté, le condensateur d'échantillonnage et de maintien restera à peu près à la même tension, car la broche non connectée ne le chargera ni ne le déchargera.
La mesure de la tension sur l'échantillon et le condensateur de maintien réduira légèrement cette tension, c'est pourquoi dans le graphique, les lignes seront inférieures à la mesure précédente.
PS De plus, comme toutes les broches sont placées dans une planche à pain, vous aurez un couplage capacitif entre les broches adjacentes.
la source
L'acc est vraiment un petit condensateur. Lorsque vous changez de canal, les charges dans le condensateur acc sont transportées d'un canal d'entrée au suivant. Si le canal d'entrée suivant a une impédance très élevée ou une capacité très faible, les charges sur le condensateur acc dominent et sa tension change peu.
En outre, un code médiocre peut également en être la cause, généralement par manque de temps pour terminer l'ajout.
la source