Ich habe einen Sensor und er erzeugt ein analoges Signal.
Ich lese alle analogen Daten und sende sie an meinen Computer.
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);
}
Ich habe die analoge Lesung aufgezeichnet. Warum sieht das Diagramm so aus?
Antworten:
Dies ist zu erwarten.
An die anderen Pins ist nichts angeschlossen, daher schwankt ihre Spannung.
Die Arduino MCU hat nur einen einzigen ADC. Zum Lesen der verschiedenen analogen Pins wird ein Multiplexer verwendet, um den zu lesenden Pin mit dem einzelnen ADC zu verbinden. Der ADC in der MCU enthält einen "Sample and Hold" -Kondensator.
Um die Spannung am Pin abzulesen, wird der Pin angeschlossen, um die Probe aufzuladen und den Kondensator zu halten. Anschließend wird die Spannung der Probe getrennt und der Kondensator bitweise gehalten.
In Ihrem Fall wird der Kondensator durch Lesen der Spannung am angeschlossenen Pin aufgeladen. Es werden dann die nicht verbundenen Pins gelesen. Da jedoch nichts angeschlossen ist, bleibt der Proben- und Haltekondensator ungefähr auf der gleichen Spannung, da der nicht angeschlossene Pin ihn weder lädt noch entlädt.
Durch Messen der Spannung am Proben- und Haltekondensator wird diese Spannung geringfügig gesenkt. Aus diesem Grund sind die Linien in der Grafik niedriger als bei der vorherigen Messung.
PS Da sich alle Stifte in einem Steckbrett befinden, besteht eine kapazitive Kopplung zwischen den benachbarten Stiften.
quelle
Der acc ist wirklich ein kleiner Kondensator. Wenn Sie die Kanäle wechseln, werden die Ladungen im Wechselstromkondensator von einem Eingangskanal zum nächsten übertragen. Wenn der nächste Eingangskanal eine sehr hohe Impedanz oder eine sehr niedrige Kapazität hat, dominieren die Ladungen am Wechselstromkondensator und seine Spannung ändert sich kaum.
Darüber hinaus kann dies auch durch schlechten Code verursacht werden - normalerweise aufgrund eines Mangels an ausreichender Zeit, um das Hinzufügen abzuschließen.
quelle