Arduino Mega AVR ADC zu ungenau, Lasersensor

OP (Firma: RK-HPD e.U.) #4364471
Lesenswert?
• ▲
▼
Hallo!

Ich habe einen "Spaltenroboter" gebaut, wie 
zb.:http://www.braeuer.cc/de/165/

Zur Wegerkennung, Abstandsmessung wird ein Lasersensor Sick DT35 
verwendet.

Der Lasersensor wird vom ADC am Arduino Mega ausgelesen.
0-5V 0-1024 bit, 0-300cm, Genaugikeit des Lasersensors circa 5mm.

Jedoch erhalte ich am ADC schwankende Ergebnisse von 4Bit, Laufen die 2 
BLCD Antriebsmotoren, sowie die Sprühvorrichtung erhöht sich die 
Ungenauigkeit auf bis 10 bit.

Mit dem Multimeter (3 Kommastellen genau) habe ich den Lasersensor 
bereits überprüft, max Abweichung 1bit.

Am ADC habe ich jedoch die schwankenden Ergebnisse, am Multimeter nicht.

Wie kann ich am ADC genauer messen?
Angehängte Dateien:
Gast #4364482
Lesenswert?
• ▲
▼
Richard K. schrieb:
> Mit dem Multimeter (3 Kommastellen genau) habe ich den Lasersensor
> bereits überprüft, max Abweichung 1bit.
>
> Am ADC habe ich jedoch die schwankenden Ergebnisse, am Multimeter nicht.

Das Multimeter mittelt die Spannung über ~0,5s, der ADC zeigt dir den 
Momentanwert der Spannung. Bei der Mittelung fallen viele Störungen 
raus.

Wenn es dich nicht stört, dass das Signal durch die Mittelung 
"ausgebremst" wird, dann bau entsprechende Tiefpässe vor die ADC 
Eingänge.
Gast #4364628
Lesenswert?
• ▲
▼
Hast du nur den optischen Sensor zur Navigation? Der ist doch im Sommer 
schnell mal von Fliegensch... bedeckt. Oder wenn die Kühe dran schlecken 
:D

Die Spaltenschieber die ich kenne (rot), nutzen einen Gyro und 
zusätzlich einen Ultraschallsensor um sich seitlich am Fressgitter bzw. 
einer Mauer zu orientieren. Der Gyro Chip ist auf einer gesonderten 
kleinen Platine und mit Schaumstoff eingepackt. Vermutlich damit die 
Temperatur stabil bleibt?
#4364665
Lesenswert?
• ▲
▼
Wie gut ist die Stromversorgung?

Dein Schaltbild ist: Unter aller Sau.

Wie sieht es mit der Referenz(spannung) aus?

Wenn ich sehe, das Du 2 Ampere für einen Stepper vorgesehen hast, und 3 
für eine Pumpe, können schon "sparsame" Leiterbahnen lustige Effekte 
hervorbringen, sollten letztere nicht gerade unter dem 
Dauernd-an-syndrom leiden.
#4364883
Lesenswert?
• ▲
▼
Das mit den Bits klingt noch etwas verwürfelt.
Ein 10 Bit ADC liefert Werte von 0-(2^10-1)=1023.
4 Bit Abweichung würde bedeuten bis zu 2^4=16 daneben.
10 Bit Abweichung würde dann bedeuten dass du auch 1023 statt 0 und 
umgekehrt rauskriegst.
Hast du das so gemeint?

Davon abgesehen: Es muss kein externer Tiefpass sein, Mittelwertbildung 
über mehrere Messungen ist auch eine Möglichkeit.
OP (Firma: RK-HPD e.U.) #4366026
Lesenswert?
• ▲
▼
Achim S. schrieb:

> Das Multimeter mittelt die Spannung über ~0,5s, der ADC zeigt dir den
> Momentanwert der Spannung. Bei der Mittelung fallen viele Störungen
> raus.
>
> Wenn es dich nicht stört, dass das Signal durch die Mittelung
> "ausgebremst" wird, dann bau entsprechende Tiefpässe vor die ADC
> Eingänge.

Mit der Mittelung erhalte ich nun brauchbare Werte, Genauigkeit auf +/- 
1cm.
Das ist mehr als ausreichend.
Weiters habe ich eine externe Referenzspannung rangehängt.

Was mir noch auffählt:

Schaltung wird gestartet: Abstand zur Wand 0cm (korrekte Erfassung).
Schaltung wird abgeschaltet, wieder gestartet: Abstand zur Wand -15cm 
(falsche Erfassung) Die Genauigkeit von +/- 1cm bleibt bei beiden Werten 
erhalten.
Dies hatte ich bei 10 Starts 2mal.

Da der Lasersensor auf drei Seiten: Links, Rechts, Vorne misst, wird er 
von einem Schrittmotor geschwenkt. Nachdem Schwenken des Schrittmotors 
habe ich noch ein kurzes delay() in den Code eingefügt, das hat die 
Werte weiter verbessert.
OP (Firma: RK-HPD e.U.) #4366035
Lesenswert?
• ▲
▼
Georg G. schrieb:
> Eine Sicherung in der Masseleitung ist eher kontraproduktiv.

Da ich mich noch nicht so gut auskenne, würde ich gerne wissen weshalb 
die Sicherung an Masse schlecht ist?

Ich hatte die Schaltung, bevor ich eine Leiterplatte bestellt habe, auf 
einer Lochrasterplatine. Durch einen Bedienungsfehler kam es zu einen 
Kurzschluss von VCC aber nicht am Eingang vom Arduino, der abgesichert 
war, sondern von den Ladekabel der Akkus...., auf jeden Fall ging der 
Strom über die Masseleitung der Lochrasterplatine und so ziemlich alles 
war defekt, aus diesem Grund habe ich auch GND abgesichert.
(Firma: matzetronics) #4366049
Lesenswert?
• ▲
▼
Richard K. schrieb:
> Layout des PCB

Ich vermute, das das in wenigen Augenblicken in der Luft zerrissen wird. 
Ich fang dann schon mal an:
* 2A für die Stepper über Leiterbahnen, die schon bei 100mA zu dünn 
wären.
* Leiterbahn Taster über die gesamte Leiterplatte und in unmittelbarer 
Nähe von Endstufen.
* Wie oben schon vermutet, keinerlei Abblockungen an Endstufen oder 
sonstigen Betriebsspannungen.
OP (Firma: RK-HPD e.U.) #4366051
Lesenswert?
• ▲
▼
dotdotdot schrieb:
> Hast du nur den optischen Sensor zur Navigation? Der ist doch im Sommer
> schnell mal von Fliegensch... bedeckt. Oder wenn die Kühe dran schlecken
> :D
>
> Die Spaltenschieber die ich kenne (rot), nutzen einen Gyro und
> zusätzlich einen Ultraschallsensor um sich seitlich am Fressgitter bzw.
> einer Mauer zu orientieren. Der Gyro Chip ist auf einer gesonderten
> kleinen Platine und mit Schaumstoff eingepackt. Vermutlich damit die
> Temperatur stabil bleibt?

Zur Navigation habe ich den Lasersensor sowie RFID TAGS im Boden wobei 
ich die derzeit nur bei der Ladestation eingesetzt habe.
Beim Robby von JOZ steht Wegmessung zur Navigation, ein Rätsel wie das 
bei Schlupf einwandfrei funktioniert.

Der Lasersensor sitzt in der Mitte des Robby. Nach Links und Rechts ist 
ein Quadrahtrohr mit einer Länge von 20cm, da bin ich gegen Dreck, etc. 
gut geschützt Nach vorne noch nicht, da muss ich mir noch was einfallen 
lassen.

 Mit dem Gyro habe ich mich nur kurz auseinandergesetzt, habe aber einen 
HMC6343 Compass verwenden wollen: 
https://www.sparkfun.com/products/12916
Dieser sollte auch mittels Kalibierung die von Eisen im Robby 
ausgelösten Magnetfelderk kompensieren, aber leider ohne Erfolg.
#4366073
Lesenswert?
• ▲
▼
Richard K. schrieb:
> Jedoch erhalte ich am ADC schwankende Ergebnisse von 4Bit, Laufen die 2
> BLCD Antriebsmotoren, sowie die Sprühvorrichtung erhöht sich die
> Ungenauigkeit auf bis 10 bit

Hast du dir das Signal auch mal am ADC-Eingang angeschaut? Und wie misst 
du? Single oder Differential? Ich vermute Single Ended und da darfst du 
bis zu 2.5 LSB haben. Und nutzt du die ADC Noise Reduction?
Letzteres spricht auch dafür, dass du ein Signalübersprechen hast. Dafür 
kann ja der ADC nun nichts. Ich empfehle dir ein Redesign deines Shields 
wenn das so gravierende Auswirkungen hat. Woher kommt die Versorgung für 
die Motoren und die Sprühvorrichtung? Hoffentlich nicht aus der selben 
Quelle wie für den ADC bzw. dessen Referenz.
Gast #4366296
Lesenswert?
• ▲
▼
Das Layout ist maximalkrass. Ein Fehler der heutigen Schemaprogramme 
vorzugaukeln, ein Netlabel, resp eine Bezeichnung haette einfach 
dasselbe Potential. Dabei geht der Stromfluss vergessen.

Bei diesem Layout sollte der Poster Froh sein, diesen cm an Genauigkeit 
zu haben. Ist schon mal was, geht. Verbessern kommt irgend wann. 
Spaeter.
#4366430
Lesenswert?
• ▲
▼
Richard K. schrieb:
> Sicherung an Masse schlecht

Eine Sicherung ist auch ein Widerstand, und ein schwankender noch dazu.
Mit der Sicherung in GND (wie bei dir nur für einen Teil der Schaltung) 
wirfst du die Potentiale undefiniert durch die Gegend. Wenn dann extern 
noch eine Verbindung zu GND liegt, können bei geschossener Sicherung 
noch seltsamere Effekte auftreten.
Gast #4366477
Lesenswert?
• ▲
▼
Ich kann nicht einen Puffer-/Ablockkondensator finden. In Verbindung mit 
dem Layout...Respeckt. Deine ADC-Messung ist unter diesen Umständen 
faszinierend genau versteh gar nicht wo das Problem ist. ;-)
Gast #4366490
Lesenswert?
• ▲
▼
Da man in der Regel alle Spannungen relativ zu GND misst und angibt, ist 
es keine gute Idee, die GDN Leitung durch eine Sicherung zu 
unterbrechen. Wenn die Sicherung ausgelöst ist, dann ist GND eben nicht 
mehr GND, sondern irgendwas anderes, was schwer zu berechnen ist und 
technisch sicher auch keine sinnvolle Funktion mehr hat.
Gast #4366513
Lesenswert?
• ▲
▼
Nicht ärgern lassen, mein erstes Layout sah nicht besser aus. (mein 
Erstes Schema schon, aber nur ein klein wenig).

Am ADC sollte es ruhiger werden wenn Du direkt am Stecker zum Arduino 
100nF gegen Masse hängst (oder besser: den grössten Keramikkondensator 
den die Bastelkiste hergibt). Evtl. findet der Ausgang des Lasersensors 
kapazitive Last aber nicht so hübsch (kann zu Schwingneigung führen, hab 
das Datenblatt jetzt nicht angesehen). Daher noch in die Signalleitung 
vom Sensor zum Board 1kOhm Widerstand.

Darüber hinaus: Fahr die Samplerate vom ADC hoch. Der darf ruhig ein 
paar 1000 mal pro sekunde gucken ob sich was verändert hat. Dann 
Mittelwert von 64 Wandlungen bilden und schon wird alles viel ruhiger.

Und dann musst Du unbedingt an den 12V etwas tun. Ordentlichen Elko 
direkt an die Klemmen dürfte schon etwas helfen.

Vollbringt jetzt keine Wunder, aber eigentlich ist das Arduino keine 
zickige Plattform, das bringst Du mit ein paar Verbesserungen auch mit 
Deiner Platine zum laufen.

viel Erfolg
hauspapa

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.