Arduino + Analog Sensoren = Verzögerung bei Datenausgabe

Gast #2938911
Lesenswert?

Guten Tag,

ich hab gestern Sensoren in meinem Aufbau getauscht.

Im Prinzip habe ich 2 optische Sensoren an den analogen Inputs des Ardu 
hängen, das hat funktioniert solange ich 2 mal
[[http://docs-europe.electrocomponents.com/webdocs/0d1b/0900766b80d1bdc0.pdf]]
mit 500 für die Diode und 50k für den Detector verwendet hab.

Gestern wollte ich noch andere Sensoren testen(gleiche Widerstände):
[[http://www.vishay.com/docs/83752/tcrt1000.pdf]]
Seltsamer Weise funktionieren die auch, aber Bei der Datenübertragung 
wirds komisch, sobald das Signal am A0/1 ansteigt wird die serielle 
Übertragung sehr langsam.
Auf dem Serial Monitor äußert sich das in dem bei nem Signal von >400 
nur noch ca. 1 Wert/sek übertragen wird, ist das analog Signal < 100 
läuft die Übertragung scheinbar normal(0,5sek oder schneller).

Zur Auswertung meiner Daten habe ich eine Art Oszi gebastelt, dort hat 
das Ganze den Effekt das Informationen vom Sensor mit bis zu 10 sek 
Verzögerung ankommen oder sich der Ardu komplett aufhängt.

Meine erste Idee war ja das ich zuviel Strom vom Board ziehe, nur wenn 
ich den TCRT1000 nur als Detector(ohne IR Diode) betreibe und nur einen 
der Sensoren anschließe habe ich dasselbe Problem.

Vielleicht hat ja wer ne Idee, ich weiß ehrlich gesagt nicht ob ich den 
Fehler in der Programmierung oder Elektronik suchen soll.

Grüße
Angehängte Dateien:
#2938978
Lesenswert?

Ruediger schrieb:

> Vielleicht hat ja wer ne Idee, ich weiß ehrlich gesagt nicht ob ich den
> Fehler in der Programmierung oder Elektronik suchen soll.

Ich denke mal: Programmierung.

Da wird dir nicht viel anderes übrig bleiben, als die LED_Debug_Technik 
anzuwenden.
Am Anfang deiner loop() schaltest du eine LED ein, am Ende wieder aus.
Und dann verschiebst du das Einschalten Zeile für Zeile nach unten, bis 
du einen deutlichen Sprung in der Helligkeit der LED siehst. Die 
Anweisung, über die du das Einschalten gerade drüber geschoben hast, ist 
dann diejenige, die einen wesentlichen Beitrag zur Laufzeit geliefert 
hat. Wichtig: deutlicher Sprung. Denn je weiter nach 'unten' du das 
Einschalten verschiebst, desto dunkler wird die LED auch. Aber das geht 
langsam. Bei dem Verhalten, welches du beschreibst, müsste es aber einen 
wirklich deutlichen Sprung in der Helligkeit geben.

Eventuell vorher mal die Technik an einem einfach Code ausprobieren, 
damit du lernst, die Helligkeits-Abnahme zu interpretieren.
Gast #2939285
Lesenswert?

ok,

Problem 1:
Ich habe bisher beide Analogeingänge parallel abgefragt, anscheinend war 
das keine gute Idee.
Werden jetzt beide abwechseln befragt.

Problem 2:
Der Ardu hört auf zu senden, aber Processing gibt weiter sich ändernde 
Daten raus. Sieht danach aus als ob es seinen Puffer(keine Ahnung ob das 
der Serial Puffer ist) leerschreibt.
Mit den alten Sensoren ist das Problem nicht augetretetn da ich diese 
nur senden lies wenn sich der analog Input um min. 5% ändert.
Die neuen Sensoren reagieren schon aufs 50Hz flackern und senden somit 
ständig, das führt dazu das Processing anscheinend überladen wird und 
noch eine Weile brauch um die Daten auszugeben.
Wie groß ist eigentlich der SerialPuffer für Pr.?

Letztendlich ist daran wohl meine "drawSensValues" schuld die einfach zu 
langsam ist.
Gast #2939295
Lesenswert?

Hier mal der Codeschnipsel
1
void drawSensorValue1 () {
2
  float yPos = sensor1act;
3
  // draw the line in a pretty color:
4
  stroke(80, 80, 180, 120);
5
  line(xSens1, height, xSens1, height - yPos/3);
6
  // at the edge of the screen, go back to the beginning:
7
  if (xSens1 >= width) {
8
    xSens1 = 0;
9
    // clear the screen by resetting the background:
10
    background(#081640);
11
  }
12
  else {
13
    // increment the horizontal position for the next reading:
14
    xSens1=xSens1+0.5;
15
  }
16
}
Gast #2939389
Lesenswert?

der durchlauf ging mir zu schnell und ich hab den teil von 1 auf 0.5 
geändert damit er nicht so schnell durch den screen ist.

ich muß zugeben ich hab mir viel davon zusammengeklauft und steig an 
manchen stellen nicht ganz durch den code^^

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren