Forum: Mikrocontroller und Digitale Elektronik Arduino Mega AVR ADC zu ungenau, Lasersensor


von Richard K. (Firma: RK-HPD e.U.) (rk-hpd)


Angehängte Dateien:

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?

von Achim S. (Gast)


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.

von Oliver S. (oliverso)


Lesenswert?

Wobei 10 Bit Ungenauigleit bei einem 10 Bit ADC dann doch schon etwas 
sehr ungenau ist ;)

Oliver

von Fank (Gast)


Lesenswert?

welche Version hast du vom mega2560 Chip ?
Einige haben nähmlich einen ADC errata, ältere.

von dotdotdot (Gast)


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?

von Sebastian S. (amateur)


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.

von Andreas K. (andreasmc)


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.

von LSB (Gast)


Lesenswert?

Andreas K. schrieb:
> 10 Bit Abweichung würde dann bedeuten dass du auch 1023 statt 0 und
> umgekehrt rauskriegst.
> Hast du das so gemeint?

Es sind bestimmt 10 LSB gemeint...

von Georg G. (df2au)


Lesenswert?

Eine Sicherung in der Masseleitung ist eher kontraproduktiv.
Die Fehlerbeschreibung riecht sehr nach instabiler Referenz und 
Einkopplung von Störsignalen.
Systematisch messen... alles andere führt zu nichts.

von Pandur S. (jetztnicht)


Lesenswert?

Das Layout wird aehnlich sein wie das Schema.
Streifenleiter ? Steckbrett ? Wrapp ? Fädel ?

Das war's dann.

von Stefan F. (Gast)


Lesenswert?

Kann mal jemand diese Strickmuster im ersten Beitrag entwirren? Ich 
erkenne darin ungefähr gar nichts.

von Richard K. (Firma: RK-HPD e.U.) (rk-hpd)


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.

von Richard K. (Firma: RK-HPD e.U.) (rk-hpd)


Lesenswert?

Oliver S. schrieb:
> Wobei 10 Bit Ungenauigleit bei einem 10 Bit ADC dann doch schon etwas
> sehr ungenau ist ;)
>
> Oliver

Tut mir leid für die falsche Aussage, meinte natürlich die 
Werteabweichung bei 0-1024.

von Richard K. (Firma: RK-HPD e.U.) (rk-hpd)


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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn das o.a. Schaltbild ungefähr der Realität entspricht, fehlen da 
selbst die simpelsten Abblockmassnahmen. Keine Entkopplung der 
Leistungskreise, null Elkos an Betriebsspannungen usw.
Das da überhaupt irgendwas funktioniert, ist wahrlich erstaunlich.

von Richard K. (Firma: RK-HPD e.U.) (rk-hpd)


Angehängte Dateien:

Lesenswert?

Oder D. schrieb:
> Das Layout wird aehnlich sein wie das Schema.
> Streifenleiter ? Steckbrett ? Wrapp ? Fädel ?
>
> Das war's dann.

Layout des PCB

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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.

von Richard K. (Firma: RK-HPD e.U.) (rk-hpd)


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.

von M. K. (sylaina)


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.

von Wolfgang (Gast)


Lesenswert?

Richard K. schrieb:
> Layout des PCB

Das ist nicht ernsthaft eine 4-lagige Leiterplatte, oder?

von супертроль (Gast)


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.

von Weingut P. (weinbauer)


Lesenswert?

Richard K. schrieb:
> Oder D. schrieb:
>> Das Layout wird aehnlich sein wie das Schema.
>> Streifenleiter ? Steckbrett ? Wrapp ? Fädel ?
>>
>> Das war's dann.
>
> Layout des PCB

Autorouter???

Das da noch Airwire sind mal abgesehen, Respekt das die Kiste bei dem 
Layout dennoch läuft :)

von Wolfgang (Gast)


Lesenswert?

Fhutdhb U. schrieb:
> Autorouter???

Der hätte wohl nicht im selben Layer die Vorzugsrichtung derart 
durcheinander geworfen.

von Georg G. (df2au)


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.

von Werner M. (Gast)


Angehängte Dateien:

Lesenswert?

Richard K. schrieb:
> schaltplan_robby.png

Wie soll der Strom eigentlich durch den Gnubbel durchfinden?

von M. K. (sylaina)


Lesenswert?

Werner M. schrieb:
> Wie soll der Strom eigentlich durch den Gnubbel durchfinden?

Mit nem Navi :D

von Sajuuk (Gast)


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. ;-)

von Stefan F. (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

Das Layout ist echt krass.
Sowas würde ich sogar auf Lochraster ordentlicher hinbekommen. Und ich 
bin schon ein fauler Hund.

von hauspapa (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.