Schnelle Impulse mit Analogread erfassen

Hallo zusammen,

ich habe ein kleines problem.

  1. Ich habe ein externes Gerät welches mir Impulse zwischen 0-80mA ausstösst. Diese Impulse messe ich über den Analogen eingang und kann sie auch auf dem Serial Monitor ablesen. Mit den Digitalen Werten möchte ich nun ein Servo ansteuern und zwar so das jeder Impuls quasi ein Servo ausschlag gibt (Quasi pro stromstoss soll der Servo ein zucken simulieren wie ein Finger)
    Das problem aber ist, das die Impulse so schnell sind das ich nicht jeden auf dem Serialmonitor erkennen kann.
    Auf dem Gerät werden 4 Impulse im abstand von etwa 0.3 Sekunden ausgestossen.

Gibt es nun eine andere möglichkeit die Daten zu erfassen und für mein vorhaben umzusetzen? Irgendwie eine Art speicher und dann werden sie etwas verzögert an Das Servo weitergeleitet?

bin über jede Hilfe dankbar.

Mit freundlichen Grüssen

Auf den ersten Blick: ein Komparator der einen Interrupt triggert. Der Komparator löst aus wenn die Spannung einen bestimmten Wert übersteigt, löst den Interrupt aus und im Interrupt misst man die Spannung. Aber keine Garantie dass das wirklich funktioniert!

Da kann man sogar ohne zusätzliche Hardware machen. Der Arduino hat einen internen Komparator. Der wird zwar von der IDE nicht unterstützt, aber da gibt es eine Library dafür:
http://www.leonardomiliani.com/en/2012/analogcomp-una-libreria-per-gestire-il-comparatore-analogico/
(dass die IDE das nicht macht wird auch damit zu tun habe, dass man auf dem Mega nur einen Pin auf das Board gelegt hat)

Auf dem UNO geht es aber:
AIN0(+) ist Pin 6
AIN1(-) ist Pin 7

Der Ausgang des Komparators wird High wenn + > -
Dann triggert man entweder auf die steigende oder fallende Flanke je nachdem wo die Vergleichsspannung anliegt (die man mit einem Spannungsteiler/Poti erzeugt) und wo das Messsignal anliegt. Idealerweise liegt die feste Spannung am Minus-Eingang und das Signal am Plus-Eingang. Dann hat man High am Ausgang, d.h. eine steigende Flanke, wenn das zu messende Signal höher wird.
Den Spannungsteiler stellst du so ein, dass er etwas unterhalb deines minimal zu messenden Wertes liegt. Da kann man ein Poti nehmen, ein Ende an 5V, eines an Masse und dann den Schleifer abgreifen.

Wie die Lib funktioniert ist auf der Seite erklärt und nicht weiter kompliziert:

volatile boolean messsungFertig;
volatile int messwert;

void setup()
{
      Serial.begin(115200);
      pinMode(6, INPUT); //wahrscheinlich nicht zwingend
      pinMode(7, INPUT);

      analogComparator.setOn();
      analogComparator.enableInterrupt(messung, RISING);
}

void messung()
{
     messwert = analogRead(A0);
     messungFertig = true;
}

void loop()
{
     if(messungFertig == true)
     {
          messungFertig = false;
          Serial.println(messwert);
     }
}

Nicht getestet!!

Ein Operationsverstärker als Komparator funktioniert hardwareseitig genauso (und softwareseitig mit einem externen Interrupt), aber du hast halt ein zusätzliches IC.

Aber wie gesagt, ob das in der Praxis funktioniert ist was anderes :slight_smile:

moepi2k:
...
Ich habe ein externes Gerät welches mir Impulse zwischen 0-80mA ausstösst.
...

Wenn ich das richtig verstanden habe fließen entweder 0mA oder 80mA.
0mA wenn kein Impuls da ist und 80mA wenn ein Impuls da ist.

Wenn dem so ist kannst du einen Widerstand von 56 Ohm zwischen einen Digitaleingang und GND schalten.
Der Impuls wird dann parallel zum Widerstand auf den Eingang gelegt.
Bei 0mA liegt dann 0V am Eingang, bei 80mA sind es 4,48V.
4 Impulse im Abstand von 0,3s sind so locker zu erkennen.
Wenn man dazu einen Interruptpin verwendet muss man sich auch keine Gedanken um einen schnellen Code bei der Erfassung machen, sondern kann die Impulserkennung mit einer Interruptroutine lösen.

In der Interruptroutine kann man dann eine Variable hochzählen.
Im Loop wird für jeden gezählen Eingansimpuls ein Impuls an den Servo gesendet und die Variable runtergezählt, solange bis die Variable wieder 0 ist.

Gruß Peter

Laut dem hier hat der Strom mehr als 2 Werte:
http://forum.arduino.cc/index.php?topic=254900.0

Da ging es explizit darum den Strom mit dem ADC zu messen und je nach Stromstärke den Servo stärker anzusteuern.

Und ein Eingang erkennt erst ab 0,6 * Vcc High. Also 3V bei 5V Versorgungsspannung. Das würde bei einem digitalen Stromsignal natürlich reichen. Das ist hier aber glaube ich nicht der Fall.

0.3 Sekunden sind 300 Millisekunden. Das ist NICHT SCHNELL. Jedenfalls nicht für den Arduino. Du kannst in der Zeit locker 300 oder mehr analogReads auslesen.

Die Frage ist: wo ist Dein eigentliches Problem? Warum glaubst Du, daß das zu schnell ist für den Arduino ist?

moepi2k:
Gibt es nun eine andere möglichkeit die Daten zu erfassen und für mein vorhaben umzusetzen? Irgendwie eine Art speicher und dann werden sie etwas verzögert an Das Servo weitergeleitet?

Ja.

Ich habe eigentlich beim Programmieren immer mindestens VIER Möglichkeiten, um etwas zu machen:

  1. Möglichkeit: Ich mache es auf die FALSCHE ART.
  2. Möglichkeit: Ich mache es auf die RICHTIGE ART.
  3. Möglichkeit: Ich mache es auf die ÜBLICHE ART.
  4. Möglichkeit: Ich mache es auf MEINE ART.

Es würde mich wundern, wenn Du diese Möglichkeiten nicht auch hast.

Zeige die Schaltung!
Zeige, was Du bisher als Sketch hast!

vielen Dank erstmal für die vielen Antworten.

also ich erkläre es mal genauer.

Zum externen Gerät welches eine Range von 0-80mA hat (Einstellung möglich in 5mA Bereich)
Bild:

An diesem Gerät kann ich verschiedene Stimmulationsmuster abrufen. Das von mir gebrauchte heist TOF (Train of Four)
und liefert mit in schätzungsweise allen 0.5s ein Impuls des eingestellten Stromes. Dieser Impulsdauer ist aber sehr gering. habs leider gerade nicht mehr im Kopf. Habs mal auf dem Oszi gemessen und meinte es ist irgendwas von 50us. Könnte ich aber nochmals nachmessen.

Um vorzustellen wozu das gebraucht wird einmal ein Bild:

Die 2 Elektroden werden auf einen peripheren Nerv aufgeklebt, welcher durch den Stromimpuls stimuliert wird -> das Resultat ist ein Zucken des Fingers, welches über einen Beschleunigungssensor gemessen wird. (das ganze wird in der Anästhesie gebraucht fürs messen der Narkosentiefen)

Das ganze möchte ich jetzt so umsetzen das ich ein Gerät entwickle an welchem ich das externe Gerät anschliessen kann und die Impulse dann das Servo ansteuern.

Was ich gemacht habe:
Die Beiden Elektroden parallel an einen 50 Ohm Widerstand geschlossen. Die Spannung die ich dann da messen kann (ca. 0-4V) habe ich an GND und A0 des Arduino angeschlossen. Über den Serial Monitor kann ich nun auch die Werte je nach Stromeinstellung zwischen 0-1023 Messen.

zum Problem:
Die Impulse sind entweder zu schnell oder aus irgend einam anderen Grund erkenne ich nicht jedes Signal auf dem Serial Monitor. Wichtig ist halt das er die 4 Impulse erkennt und diese an das Servo weiterleiten kann. so das ich dessen Auswertung mit dem Beschleunigungssensor messen kann. (welches dann wiederrum mit dem externen Gerät geschieht)

Ich habe das ganze auch mal ohne das externe Gerät ausprobiert. Nur für das testen des Servos. Mir ist aufgefallen das sich das Servo extrem langsam bewegt. Ich fliege sonst Modellflugzeuge und benutze da die Selben Servos und weiss das diese viel schneller angesteuert werden können. Vermutlich ist das aber nur ein problem des Codes welches ich noch genauer anschauen muss.

Ich hoffe jetzt ist es einwenig verstäntlicher =)

es muss auch gesagt sein, das ich mich erst seit diesem Projekt mit dem Arduino und dem Programieren befasse.
Daher ist es für mich zusätzlich noch etwas schwiriger.

Mit freundlichen Grüssen

moepi2k:
Die Spannung die ich dann da messen kann (ca. 0-4V) habe ich an GND und A0 des Arduino angeschlossen. Über den Serial Monitor kann ich nun auch die Werte je nach Stromeinstellung zwischen 0-1023 Messen.

OK, so wird die Sache klarer.

Wenn die Spannung zwischen 0 und 4V(5V) pegelt und Du an einem Analogpin zwischen 0 und 1023 messen kannst, und Du Dich nur für die Anzahl der Impulse interessierst, aber nicht für den exakten Spannungsverlauf beim Ansteigen und Abfallen der Impulsflanken, dann hört sich das für mich danach an, als wenn Du das Signal auch digital verarbeiten kannst. Denn Du brauchst es ja laut Deiner Beschreibung nur zählen, wann wieviele Impulse auftreten.

Als erstes mal müßtest Du den ungefähren zeitlichen Verlauf der Impulse herausbekommen. Du schreibst was von 4 Impulsen mit 0,3s Zeitabstand. Was ist dazwischen? Eine Pause, in der keine Impulse kommen? Eine Phase, in der die Impulse langsamer kommen?

Normalerweise müßtest Du Dir den zeitlichen Verlauf der Impulse mal auf einem Oszilloskop darstellen.

Wenn Du kein Oszilloskop hast, brauchst Du erstmal einen Sketch zum Testen der Signale.
Was für einen Arduino hast Du zum Testen da? UNO? MEGA?

Impulse zu zählen ist schonmal eine völlig andere Problemstellung. Du hattest von Anfang an immer davon geredet, dass die wirklich den Strom analog messen wolltest.

Ja ich dachte zuerst das ich den Spannungsabfall von 0-80mA also genau gesagt die 0-5V brauchen kann und über den ADC zu einem Digitalwert umwandeln kann (Was ja auch geht) Diesen Digital wert würde mir ja auch schon völlig ausreichen, den damit kann ich ja dann den Servo ansteuern. Das Problem ist halt nur das der Arduino UNO (welcher ich benutze) diese 4 Impulse nicht messen kann. bzw nicht alle. Wieso weiss ich nicht. Hab den Delay im sketch auch schon auf 0.001 gestellt so das ich im Serial Monitor mehr abfragen habe. Hat aber aucht nichts geholfen. =(

Darum frage ich obs noch eine andere möglichkeit gibt.

Ich bin jetzt aber zuhause und werde das ganze nochmal am Oszi anschliessen und euch dann die genauen Werte schicken.

Grüsse

p.s

hab grad mit dem oszi gemessen und noch ein datasheet gefunden.
also die Impulsdauer is 0.02ms +-5%
zwischen den Impulsen ist 0.5s Pause, d.h es fliesst wirklich kein Strom.

moepi2k:
Hab den Delay im sketch auch schon auf 0.001 gestellt so das ich im Serial Monitor mehr abfragen habe. Hat aber aucht nichts geholfen. =(

Was'n für ein "delay"?
Ein "delay" im Sketch hilft NIE etwas, ist aber fast immer die Quelle allen Übels.

Anbei mal ein einfacher Impulszähler für die Impulszählung mit einem Arduino UNO

#define IMPULSEINGANG 2

void setup() {
  Serial.begin(9600);
  attachInterrupt(0, impulsISR, RISING);  // Interrupt 0 hängt beim UNO an Pin-2
  pinMode(IMPULSEINGANG, INPUT);
}

volatile unsigned long impulsCounter=0;

void impulsISR()
{
  impulsCounter++;
}

unsigned long letzterStand=0;

void loop() {
  if (impulsCounter!=letzterStand)
  {
    noInterrupts();
    letzterStand=impulsCounter;
    interrupts();
    Serial.println(letzterStand); 
  }
}

Gezählt wird "digital" auf steigende Flanke des Signals (RISING).

Das Signal müßte in diesem Fall ein Push-Pull-Signal sein, das zwischen HIGH und LOW wechselt. Wenn der Ausgang zwischen "offen" und "HIGH" pendelt, muß an Pin-2 ein ca. 4.7 Kiloohm PullDown-Widerstand nach GND geschaltet werden, damit die Zählung funktioniert.

Bei hoher Impulsrate ggf. die Baudrate auf 115200 erhöhen.
Probier mal aus, ob damit was gezählt wird.

jurs:
Das Signal müßte in diesem Fall ein Push-Pull-Signal sein, das zwischen HIGH und LOW wechselt. Wenn der Ausgang zwischen "offen" und "HIGH" pendelt, muß an Pin-2 ein ca. 4.7 Kiloohm PullDown-Widerstand nach GND geschaltet werden, damit die Zählung funktioniert.

Er hat immer noch eine Stromschnittstelle. Nur dass er den Strom nun digital Messen will. Den Strom da durch einen einfachen Widerstand in eine Spannung umzusetzen sollte aber auch hier funktionieren.

Danke Jurs,

aber für mein vorhaben funktioniert diese variante glaube ich nicht direkt. ich muss nicht nur die Impulse haben sondern auch die Stromstärke messen. Je höher der Strom desto höher soll ja der Servoaussschlag sein.

Daher ist glaube ich die Variante von Serenifly idealer. nur muss es noch funktionieren =)
Zudem kann man später an meinem gebauten Gerät auch andere Externe Relaxometer anschliessen, welche zwar auch Ströme von 0-80mA liefern aber evt die Impulsdauer etc varieren können.

echt schwirig mein vorhaben irgendwie =/

edit:

bei diesem sketch habe ich das delay mal verändert

/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
}

dachte je geringer eingestellt desto mehr zählt er die impulse. weil wenn ich den auf 1000 stelle z.B wird ganz langsam gezählt

gruss

moepi2k:
aber für mein vorhaben funktioniert diese variante glaube ich nicht direkt. ich muss nicht nur die Impulse haben sondern auch die Stromstärke messen. Je höher der Strom desto höher soll ja der Servoaussschlag sein.

Was ist denn Dein Vorhaben?

Ein Arduino kann in einem nur 50 µs langen Impuls keinen Stromverlauf messen.
Standardmäßig dauert eine einzige ADC-Messung per analogRead ca. 125µs.

50µs kurze Impulse kannst Du bestenfalls erkennen, wenn sie auftreten, aber Du kannst von einem so kurzen Impuls nicht den exakten Verlauf ausmessen.

Also was ist Dein Vorhaben?
Ich biete mal zwei Möglichkeiten an:

  1. Patienten-Simulator: Der Arduino soll mit seinem Servo den Finger eines Patienten simulieren. Wenn Impulse erkannt werden, soll der Servo angesteuert werden. Lösung: Genau so wie das Gerät eine Einstellmöglichkeit für die Stromstärke hat, muss auch die Stromstärke der Simulation am Arduino eingestellt werden. Vor dem Beginn der Simulation wird am Arduino eine Simulations-Stromstärke eingestellt. Je nach eingestellter Simulations-Stromstärke im Arduino wird anhand tatsächlicher Impulse des Geräts ein Servoausschlag gesteuert.

  2. Prüfgerät für das Gerät: Der Arduino soll einen Funktionstest des Geräts durchführen und dabei zwei Parameter testen: Erstens die Stromabgabe des Geräts und zweitens die Impulsgenerierung des Geräts.

Soll es irgendwas davon werden? Oder noch etwas anderes?

Genau sowas soll es werden. Eine mischung aus punkt 1 und 2. Es soll das Gerät simulieren und gleichzeitig dient es als Testgerät.
Also wenn ich z.B ein Relaxometer habe will ich es an dem Testgerät anschliessen und die Stimulation mit sagen wir mal 10mA laufen lassen. Mit dem Servoaussschlag wird zum einen mal festgestellt ob der Beschleunigungssensor funktioniert und 2. Soll aber auch festgestellt werden ob wirklich 10mA ausgegeben werden. Diese hätte ich dann einfach mit einer LED als indikator umgesetzt.

also z.B in 10 Stufen
0-10mA Leuchtet die LED für diese Range
10-20mA die LED für diesen etc..

Daher studiere ich immernoch an dem Analogread herum und wollte diesen in einen Digitalen Wert umsetzen. Aber die Impulsdauer ist demfall zu kurz für den Arduino.

Würde das den gehen mit dem Impulszählen? das man so die Stromstärke auch bestimmen und eine LED ansteuern kann?

moepi2k:
Genau sowas soll es werden. Eine mischung aus punkt 1 und 2.

Und das ganze soll dann nicht "am Patienten" laufen, mit den Elektroden auf der Haut, wobei der Hautwiderstand sowohl variabel als auch unbekannt ist, sondern mit einem Messaufbau auf einem irgendwie gearteten "Prüfstand", wobei Du einen exakt definierten Widerstandswert zwischen den beiden Elektroden anschließt?

jurs:
Ein Arduino kann in einem nur 50 µs langen Impuls keinen Stromverlauf messen.

Sowas wollte ich auch erst schreiben, aber bist du sicher, dass das stimmt? Mit ist dann eingefallen, dass der ADC ja eine Sample and Hold Schaltung hat. Man braucht also nur genug Zeit den S&H Kondensator zu laden. Die Messung erfolgt dann an der S&H Schaltung. Nicht am eigentlichen Signal. Wie schnell das Signal das Signal in der Praxis aber wirklich sein kann weiß ich nicht.

Ich dachte es liegt vielleicht eher daran, dass man den Anfang der Impulse nicht genau erwischt.

nein das ganze läuft nicht am Patienten. Es dient nur dazu um eine Funktionsprüfung des Relaxometers zu machen und da ist halt wichtig zu wissen das der Beschleunigungssensor funktioniert (Testbar durch den Servo) und das man den eingestellten Strom Messen kann.

Das mit dem speicher war auch eine Idee, wusste aber nicht ob der Arduino sowas kann. Im Prinzip ist es egal wenn das ganze verzögert übertragen wird. Hauptsache ist, das es übertragen wird.

Grüsse

Ich habe mal kurz in das Datenblatt des ATMEGA 328P geschaut.
Dort steht unter "Analog-to-Digital Converter" die Angabe "13 - 260 ?s Conversion Time"

Deshalb ist es wohl nicht möglich aus einem 20µs dauernden Impuls die maximale Spannung zu erfassen.
Man müsste innerhalb der 20µs schon mehrmals messen um den Maximalwert zu finden, dazu dann noch die Verarbeitung der Messwerte die auch nochmal Zeit kostet.

Ohne zusätzliche Hardware geht es also nicht.
Ich habe deshalb mal eine Idee zu Papier gebracht wie es eventuell machbar wäre.
Die Schaltung ist nicht getestet und sollte nur als Grundlage für eine Diskussion dienen.
Bauteilauswahl und Schaltung können geändert werden.
Als Anhang eine Grafik und für diejenigen die Eagle verwenden der Plan als Eagle-Datei.

Die Funktion der Schaltung im Überblick:
Ein eingehender Stromimpuls am Eingang triggert nach einer Zeitverzögerung für eine kurze Zeit die Sample and Hold Stufe, welche den Maximalwert der Impulsspannung längere Zeit speichert.

Die Funktion der Schaltung im Detail:
IC1 dient dazu aus +5V Versorgungsspannung eine -5V Spannung für die Sample and Hold Stufe (IC4) zu erzeugen, weil der ohne negative Spannung wohl nicht arbeitet.

IC2A ist als Komperator geschaltet. Der OP vergleicht die am Messwiderstand (R1) abfallende Spannung mit einer Vergleichsspannung die über den Spannungsteiler R2 und R3 gebildet wird. Die Vergleichsspannung beträgt ca. 107mV.
107mV entsprechen einem Eingangsstrom von ca. 2,1mA durch R1.

Wenn der Eingangsstrom >2,1mA ist wechselt das Ausgangssignal von IC2A von LOW auf HIGH.
Dieses Signal triggert dann ein Monoflop (IC3A) mit eine Zeitkonstanten von 4µs. Zu diesen 4µS addiert sich noch die Schaltverzögerung des Operationsverstärkers IC2A von geschätzten 2µs.

6µs nachdem der Eingangsstrom >2,1mA ist wird dann das Monoflop (IC3B) getriggert.
IC3B hat eine Zeitkonstante von 10µS. Innerhalb dieser 10µS wird die S&H Stufe von HOLD auf SAMPLE geschaltet und der Messwert abgetastet. Nach Ablauf der 10µS steht dann am Ausgang A1 der Maximalwert der Eingangsspannung(strom) zum Impulszeitpunkt für längere Zeit (bis zum nächsten Eingangsimpuls) zur Verfügung.

Eine fallende Flanke am Ausgang A2 dient dazu dem Arduino mitzuteilen, dass ein neuer Messwert zum Einlesen bereit steht.
Das Signal wird sinnvollerweise per Interrupt am Arduino UNO Pin 2 (attachInterrupt(0, ISR0, FALLING):wink: erfasst.
Danach kann dann der Analogeingang in aller Ruhe eingelesen werden. Bis zum nächsten Impuls sind immerhin 500mS Zeit.

Die Zeitverzögerung durch IC3A von 4µS soll dazu dienen nicht bereits die steigende Flanke des Stromsignals zu erfassen sonder erst das Plateau des Impulses.

Die angegebenen Zeit- und Spannungswerte sind rein rechnerisch ermittelt bzw. aus den kleinen Diagrammen der Datenblätter abgeschätzt. Da ist sicherlich noch Optimierungsbedarf am Testaufbau der Schaltung nötig.

Wichtiger wäre erst mal eine grundsätzliche Prüfung der Schaltung ob der Vorschlag so überhaupt funktionieren kann.

Gruß Peter

S&H_Test_01.sch (601 KB)

peter_de:
Ich habe mal kurz in das Datenblatt des ATMEGA 328P geschaut.
Dort steht unter "Analog-to-Digital Converter" die Angabe "13 - 260 ?s Conversion Time"

Es geht doch denke ich darum dass mehrere µs-Lange Impulse im Abstand von 300ms kommen. Aber der Strom jeden Impulses ist konstant. Und man muss sowohl die Anzahl der Impulse messen als auch die Amplitude.
Ich habe das so verstanden dass die Impulse sagen wir mal vereinfacht rechteckförmig sind. Also 50µs lang oder so eine konstante Amplitude anliegt. Und diese muss man einmal messen.

Wegen der ADC Zeit: das ist die Sample-Zeit des Sukzessive Approximations-Wandlers. Der braucht ca. 13 Takte für die Wandlung. Der misst aber nicht direkt das Signal, sondern die Ladung eines Kondensators der von der Signalspannung geladen wurde. Das Signal muss also nicht über die gesamte Wandlungszeit anliegen oder konstant sein! Theoretisch ist die eigentliche Grenze die Zeitkonstante der Sample and Hold Schaltung.

Deshalb die Idee mit dem Komparator. Damit könnte man sofort erkennen dass überhaupt ein Signal da ist. Dann könnte man es vielleicht messen, wenn der S&H Kondensator schnell genug geladen wird. Wie sich das aber in der Praxis genau bei einem sich schnell änderten Signal verhält weiß ich nicht.

Siehe Atmega328 Datenblatt Seite 257 für die S&H Schaltung des ADCs:

The ADC is optimized for analog signals with an output impedance of approximately 10 k? or less. If such a source is used, the sampling time will be negligible. If a source with higher impedance is used, the sampling time will depend on how long time the source needs to charge the S/H capacitor, with can vary widely. The user is recommended to only use low impedance sources with slowly varying signals, since this minimizes the required charge transfer to the S/H capacitor.

Siehe auch die Timing Diagramme. Da werden anscheinend 1,5-2 Takte verwendet um den S&H Kondensator zu laden.

Die erste Messung dauert länger. Das ist bekannt. Das kann man mit einem Dummy analogRead() in setup() beheben.