Forum: Mikrocontroller und Digitale Elektronik Distanzmessung mit Opto-elektronischen Sensoren


von Boony (Gast)


Lesenswert?

Hallo!!!

Also wie gesagt habe ich noch nicht so viel Ehrfahrung auf dem Gebiet!

Habe auch schon im Forum geschaut aber leider nix passendes gefunden!


Ich würde gern eine Distanzmessung (0-100mm) mit Laser durchführen 
(Genauigkeit 0,02mm).
Zur Verfügung habe ich einen Balluff BOD 26K.

Prinzip:

-Laser wird am Objekt genullt
-Objekt wird durch ein anderes Objekt verdeckt
-Abstandsänderung wird erfasst
-Abstandsdifferenz wird auf Display ausgegeben


Jetzt hätte ich folgende Fragen:

1. Welches sind die Voraussetzungen für eine solche Schaltung (IC usw.)?

2. Gibt es fertige Bausätze die das schon können und an denen nur 
programmieren notwendig ist?

3. Wie wird die Distanz am Laser ausgegeben? ( Volt, Ampere)

Im Moment fällt mir nichts mehr ein.
Nett wären ein paar Ratschläge oder Links die sich mit dem Thema 
beschäfigen.

Danke euer Boony

von Boony (Gast)


Lesenswert?

Sorry!!!

Die Genauigkeit sollte im Zehntelbereich liegen!!!

Also +-0,1mm anstatt +-0,02mmm!!!

von gast (Gast)


Lesenswert?

was für gegenstände möchtest du den messen? holz wasser spiegel glas?

von Boony (Gast)


Lesenswert?

Hauptsächlich werden das wohl Plastik und Metall sein!!!

von Stefan (Gast)


Lesenswert?

Also erst mal kurz nachdenken !

Messbereich 100m, Auflösung 0.02mm - merkst du 'was ?

100m
----    =  5.000.000
0,02mm

von Boony (Gast)


Lesenswert?

ähhh wieso 100m?!?!

von Philipp (Gast)


Lesenswert?

Kommt darauf an, was für einen 26K Sensor du hast. Es gibt welche, die 
einfach nur einen Ausgang schalten können und welche, bei denen die 
Entfernung als Spannung zwischen 0 und 10V raus kommt. Letztere könntest 
du evtl. über einen Spannungsteiler an nen ADC eines Mikrocontrollers 
hängen.

von Boony (Gast)


Lesenswert?

Danke erstmal für die schnellen Antworten!!!

Es wird eine Spannung mit 0V-10V ausgegeben!

welchen Prozessor sollte ich da am besten für nehmen, wenn da zB noch 
Taster und Leuchtdioden für die Abfrage mit dran müssten?

von Philipp (Gast)


Lesenswert?

Da kannst du eigentlich nehmen, was du willst. Entweder einen AVR von 
Atmel oder eine PIC. Am bestenen mit integriertem 
Analog-Digital-Wandler. Vielleicht einen ATMega8, da gibts viele 
Anleitungen für. Bei den PIC-Controller kenn ich mich nicht so aus, was 
es da gibt.
Oder du nimmst so eine Digitale-I/O Karte fürn PC.

von Boony (Gast)


Lesenswert?

Habe im Moment nen ATtiny13 MC!!!

Weiss leider nicht ob ich sowas mit dem realisieren kann?!

Was mir gerade noch auffällt, es wäre gut ein LCD mit dran zu haben.

also fasse ich mal zusammen:

-Am besten den MC gleich in einem Bausatz

Der Bausatz...:
-muss die Spannung vom Laser verarbeiten können (0-10V  3mA)
-muss eine Ausgabe auf LCD haben
-muss ca. 3 Taster haben
-und ca. 3 Leuchtdioden



Wäre über den einen oder anderen Vorschlag sehr dankbar!

Habe im Netz schon folgendes gefunden:

Conrad
190858 - 62
190818 - 62


Pollin
http://www.pollin.de/shop/detail.php?pg=Nw==&a=MTQ5OTgxOTk=

von ... (Gast)


Lesenswert?

Hi,

der interne ADC beim AVR wird für die geforderte Auflösung/Genauigkeit 
nicht ausreichen, da ist dann was besseres externes fällig 
(vorrausgesetzt natürlich, daß der verwendete Laser/Sensor überhaupt 
entsprechende Daten liefern kann).
Von PIC hab ich zwar auch keine Ahnung, dürfte aber vermutlich ähnlich 
aussehen.

CU

PS: Hab grad gesehen, es gibt auch PICs mit 12bit-ADC. Das könnte 
eventuell grad so reichen.

von ... (Gast)


Lesenswert?

... nochwas:
Bei den MYAVR Teilen beim C unbeding genau hinsehen/lesen und drauf 
achten, daß man KEINEN mit LPT-Anschluß erwischt (also insbesondere 
NICHT den 190818).

CU

von Boony (Gast)


Lesenswert?

Mhhhhh....

hat den jemand eine Ahnung mit welchen MC es sonst funktionieren könnte?

Um Missverständnisse mit dem Laser zu vermeiden, hänge ich den Link an!
Vielleicht reichen die MyAVR Bausätze doch...?!



[Balluff Laser] 
http://www.balluff.com/Balluff/de/ProductsChannel/Product+Detail/de/ProductDetail.htm?ProductID=BOD+26K-LA02-S4-C&ProductGroupGuid={DE880373-F109-4401-A4CD-F254A3C08A1F}&ProductGroupName=Optoelektronische%20Distanzsensoren

von hans (Gast)


Lesenswert?

Dein Sensor erfast einen Bereich von 45 - 85 mm und bildet
diese auf 0 - 10 V ab.

Du willst 0,1 mm .

die würden also 8,x Bit reichen. Die 10 Bit vom Tiny 13 sind also
eigentlich genug.

Aber mit LCD etc. reichen die Pins nicht.

Also MEGA xx, am besten fertiges Bord mit Display.

gruß hans

von Boony (Gast)


Lesenswert?

Hallo Hans,

Danke für deine Antwort.

Kannst du mir bitte erklären wie du von der 400 auf die ausreichenden 
8bit schliessen kannst?

und kann der MyAVR auch bis 10V Einagangsspannung ab?
Hat das alles nichts mit der Frequenz zu tun?

Wenn würde ich mir den MyAVR mit dem ATmega8 bestellen!!!

PS: ist grad im Angebot bei myAVR.de

von hans (Gast)


Lesenswert?

Du kannst 40 mm auf 10 V abbilden und willst Stufen von 0,1 mm.
Das heist du hast 400 Stufen a 0,025 V.

Ein 8 Bit Wandler "erkennt" 2^8 = 256 Stufen
Ein 9 Bit Wandler "erkennt" 2^9 = 512 Stufen

Du brauchst 400 Stufen also 2^8,x. (also was zwischen 8 und 9)

AVR Mega hat üblicherweise 10 Bit   2^10 = 1024 Stufen.

Auch der Mega8.

gruß hans

von Der wohl ahnungslose (Gast)


Lesenswert?

8 Bit = 256 'Schritte' (2^8 sprich 2 hoch 8, von 0 bis 255)
9 Bit = 512 'Schritte' (2^9)
Bei 400 benötigten 'Schritten' Auflösung kommst Du mit 9 Bit hin, bei 
den vorhandenen 10 Bit wären es sogar 1024 'Schritte' - über das 
2,5-fache der geforderten Auflösung.
Hätte auch den Vorteil, daß man das letzte Bit rausnehmen kann, um 
weniger Jitter zu bekommen.
KA, wie unterschiedlich die Ergebnisse zweier aufeinander folgender 
identischer Messungen sind.
Allerdings, wenn ich die Post's hier drüber richtig verstehe, liefert 
der Laser den Abstand zwischen 45mm und 85mm - nicht wie im Anfangspost 
von 0mm bis 100mm anmerk

von hans (Gast)


Lesenswert?

@Der wohl ahnungslose (damit er nicht Ahnungslos bleibt)

Die Angaben oben fand ich sonderbar, daher habe ich
in das Datenblatt bei Balluff geschaut.
Dieses hätte eigentlich oben eingefügt/verlinkt gehört.
Das der Messbereich bei 0 starten soll ist unüblich.

gruß hans

von Boony (Gast)


Lesenswert?

Ja ihr habt vollkommen recht. Der Messbereich wurde von mir falsch 
angegeben, und ja das Datenblatt hätte ich im ersten Beitrag linken 
sollen...:-)

Sorry...

Allerdings habe ich gelesen das der ATMEGA 8 nur 8bit hat.

von hans (Gast)


Lesenswert?

Der Mega 8 ist ein 8 Bit µC, das bedeutet, das er mit
einer Datenbreite von 8 Bit arbeitet.
Die 10 Bit sind die Auflösung des internen AD-Wandlers.
Steht im Datenblatt:
http://www.atmel.com/dyn/products/product_card.asp?part_id=2004

gruß hans

von ... (Gast)


Lesenswert?

Genau wegen der Angabe 0-100mm (macht bei 0,1mm Auflösung == 1000 
Stufen) kamen meine Vorbehalte wegen dem interner ADC beim AVR. Bei 
"nur" noch 400 Stufen sieht das natürlich schon etwas besser aus. 
Beachten sollte man aber auch den angegebenen Linearitätsfehler von 1%.

CU

von Boony (Gast)


Lesenswert?

Habe heute erfahren das der Wert der Genauigkeit 0,02mm ist.

Hiesse also das ich 2000 Schritte habe und dementsprechend mind. 11 bit 
benötige.

Gibt es denn einen ATMega xx MC der dies kann?

oder muss ich mich für einen anderen Bausatz entscheiden.

Es sollte daher ein Bausatz sein weil ich mich mit der Elektronik nicht 
gut genug auskenne um selber so eine Steuerung zu entwerfe.

von Boony (Gast)


Lesenswert?

Habe soeben erfahren das der Wert der Genauigkeit 0,04mm sein soll.

xD Ich hoffe endgültig.

Also komme ich ja mit einem 10bit ADC im AVR zurecht oder nicht?

von Bensch (Gast)


Lesenswert?

> Also komme ich ja mit einem 10bit ADC im AVR zurecht oder nicht?

Nein, denn Genauigkeit != Auflösung !!!!!
Ist aber weiter oben schon angesprochen worden.

von Boony (Gast)


Lesenswert?

Kann mir jemand dann ein Baustatz empfehlen mit dem sich mein Vorhaben 
realisieren lässt?

Ich bräuchte ja dahingehend einen MC mit 12bit ADC...

von hans (Gast)


Lesenswert?

Hallo Boony,

dieser Ansatz ist falsch (d.h. nicht ganz richtig).

Wenn der ausgesuchte Prozessor (hier MEGA8) alle Aufgaben
erfüllen kann und du glaubst mit dieser Auswahl richtig zu
liegen dann nimm ihn.
Für Display, Tasten etc. gibt es unzählige Beispiele und
Tutorien. Testbords gibt es auch massenhaft, und C ist
kostenlos und gut.
Was fehlt ist Auflösung des AD-Wandlers.
Es gibt jedoch auch tausende von AD-Wandlern die sich
problemlos an den MEGA8 anschliesen lassen.
Da kann man z.B. bei Analog, Maxim, NXP, TI, Micrchip etc.
das suchen was man braucht.
Software und Beschreibungen dafür gibt es auch Masssig.

Also definier mal die Aufgabe exakt (welches Bord, welche Versorgung,
welches Display, evtl. Schnittstelle zum PC) und wichtig
wie schnell und genau die Messung sein muß.

Dann kann man dir am besten weiterhelfen.

gruß hans

von Boony (Gast)


Lesenswert?

Hallo Hans,

Also...wie gesagt bin ich neu auf dem Gebiet also verzeih bitte wenn ich 
noch nciht richtig weiss worauf ich achten muss oder wie mir hier am 
besten geholfen werden kann. Aber ich geb mein Bestes. ;-)

Ich habe mich für den " myAVR Board MK2 USB PLUS" +LCD Addon 
entschieden, weil er meiner Meinung alles hat was ich benötige und 
soweit ich das beurteilen kann eine kostengünstige Lösung bietet. Mit 
den Tutorials hier vom Forum habe ich eigendlich schon eine sehr 
umfangreiche Wissenssammlung betreffend des Mega8!

Zur Aufgabe:

Ich möchte mit dem Laser (link weiter oben) eine Distanz messen, und 
zwar wenn möglich auf 0,04mm oder sogar noch genauer. Rechnerisch würde 
ich ja dann einen 12-Bit AD-Converter benötigen.

Allerdings bin ich auch schon über Themen wie "Festkommaarithmetik" und 
das "AVR Tutorial: ADC" gestoßen.

Ich hoffe das hilft euch bzw. MIR :-) weiter!!!

Gruß Boony

von hans (Gast)


Lesenswert?

Hallo Bonny,

die Auswahl ist nicht schlecht.

Wenn es geht, besorge doch noch den myTWI Temperatursensor
und eine Laborkarte mit.

Mit dem Sensor kannst du testen wie du Messwerte über TWI/I²C
einliest und darstellst (eigentlich die ganze Aufgabe, ob
Temperatur oder Strecke ist der Software egal).
Du hast da Softwarebeispiele mit dabei.

Auf der Laborkarte bauen wir dann deinen Messadapter mit einem
AD-Wandler der ebenfalls TWI/I²C-Schnittstelle hat.
Ich schau mal was da dann past.

Hardwareseitig ist es dann recht einfach. Löten kannst du ja?


Dann sollte es recht gut klappen.

gruß hans

von Boony (Gast)


Lesenswert?

Hallo Hans,

Vielen Dank für deine super Hilfe!!!

Habe soeben alles bestellt auch den TempSensor und eine Laborkarte! 
Hoffe das alles nächste Woche bei mir eintrudelt :-) .

Das Löten ist kein Problem.

von hans (Gast)


Lesenswert?

Hallo Bonny,

das mit dem I²C-Wandler ist jetzt abhängig von deinen
Bezugsquellen.

Das einfachste wäre ein Wandler von MAXIM
und zwar der MAX127
http://datasheets.maxim-ic.com/en/ds/MAX127-MAX128B.pdf

Der ist im DIP-Gehäuse und kann bis 10V messen.
Also genau das was du brauchst!

Analog hat auch einige gute mit I²C aber (fast) nur im
SMD-Gehäuse. Für die Laborkarte braucht man dann eine
Adapterplatine SMD-DIP (gibt es aber auch fertig).
http://www.analog.com/static/imported-files/data_sheets/AD7992.pdf
Der Messbereich geht nur bis zur Referenzspannung.
Die 10 V müssen dann mit einem Spannungsteiler angepasst
werden.

Es gibt natürlich noch etliche andere Wandler mit I²C.
Wenn du was anderes besorgen willst achte nur darauf,
daß es wirklich I²C Bus ist, die Auflösung >=10 Bit ist,
die Referenzspannung extern eingespeist werden kann und
die Samplerate nicht zu klein ist (es gibt welche mit
wenigen Messungen/Sekunde!).

Wichtig für die Genauigkeit ist eine genaue Referenz.
Dafür gibt es fertige Referenzspannungen. Für die o.a.
Wandler ist eine Referenz von 4,096 V am besten geeignet.
Hier auch mal Beispiele von MAXIM und Analog.
http://datasheets.maxim-ic.com/en/ds/MAX6225-MAX6250.pdf

http://www.analog.com/en/references/voltage-
references/ref198/products/product.html

Gibt es natürlich auch viele, aber hier auf DIP-Gehäuse
und die Genauigkeit (=<0,05% ist locker drin).

Viel Spass beim Datenblattstudium und Händlersuchen!

gruß hans

@alle
Wer Bonny (bzw. uns) weitere Wandler empfehlen kann, immer zu!

von Boony (Gast)


Lesenswert?

Sooooo...

Werde gleich zwei Samples bei Maxim bestellen.

- Max127ACNG
- MAX6241ACPA

brauche ich sonst noch etwas? Ich denke das die Lieferung (Laut diesem 
Forum) 1-2 Wochen dauern könnte.

von Boony (Gast)


Lesenswert?

Soooooooo...

gestern ist alles eingetroffen.

Heute zusammengelötet und die Testprogramme laufen einwandfrei. Warte 
jetzt eigendlich nur noch auf die Samples. Zum Test werde ich mal 
versuchen mit dem Temperatursensor eine Anzeige auf das LCD zu bekommen.

@Hans

Muss ich jetzt irgendwelche Schritte beachten beim Programmaufbau, weil 
ja noch der externe ADC und die Referenzspannung dazu kommen.

von hans (Gast)


Lesenswert?

Hallo Bonny,

dann kannst du ja schon mal loslegen.

Es geht jetzt zuerst mal darum, daß der Aufbau mit der Demo-
Software läuft.
D.h. du kannst die Platine programmieren und betreiben.
Versuche mal die Displayausgabe nach deinem Geschmack umzustellen
oder die Temperatur in Fahrenheit anzuzeigen.

Wichtig ist, daß du erkennst wie Daten vom Sensor uber TWI
eingelesen und verarbeitet werden.

Wenn der Maxim 127 kommt können wir auf der Laborplatine
eine Schaltung aufbauen, die so arbeitet wie der Sensor.
Du bekommst dann Werte von 0-4095 und rechnest diese in
45-85 mm um.
(Über das Abgleichen müßen wir dann noch reden.)

Für den Aufbau empfehle ich dir noch Fassungen für die
ICs, eine Anschlußklemme für den BOD Sensor, Abblockkondensatoren
(100nF Keramik).

Wie ist es mit der Stromversorgung für den BOD. Dieser brauch
ja 18-28V. Hast du ein passendes Netzteil?

gruß hans

von Boony (Gast)


Lesenswert?

Hallo Hans,

ich werde noch das passende Netzteil besorgen. Ich werde dann auch mit 
einem Spannungsteiler 9V für das AVRBoard abzwacken, damit ich nicht 
zwei Netzteile betreiben muss. Für den Versuch habe ich erstmal ein 
regelbares Netzgerät hier stehen.

Soll ich zum programmieren das WorkPAD, SiSy oder AVRStudio benutzen? 
Hatte vor mich nur auf eine Umgebung einzuschiessen und weiss nicht 
welches die beste Umgebung ist. Aber da ich Vorkenntisse in C und C++ 
habe werde ich wohl das Passende herausfinden.

Sehe gerade das es hier ein SUPER AVR-GCC Tutorial gibt. Das werde ich 
mal durcharbeiten bis der MAX127 ankommt. Und auf roboternetz.de ist 
auch eine gute Beschreibung über TWI.
LINK
[http://www.roboternetz.de/wissen/index.php/TWI]

Sockel habe ich auch hier. Der Sensor wird mit einem fertigen Anschluss 
ausgeliefert. Ich glaube wir haben in der Firma die passende Buchse 
dafür.

gruß boony

von hans (Gast)


Lesenswert?

Hallo Bonny,

es ist gut, daß du es mit Fassung trägst ;-)

Also zum Programmieren wäre dann C wohl sinnvoll. Der AVR-GCC
ist hier im Forum sehr verbreitet, es gibt auch etliche
Beispiele Projekte mit MyAVR passend dazu.

Das Tutorial ist wirklich gut.

Das kpl. Paket ist im Tutorial auch verlinkt, dazu das Studio
zum Simulieren und die Umgebung steht.

Für den Max127 gibt es hier 27 Treffer (Suche: +max127).

Achte bei den ersten Programmierversuchen aber auf die Fuses
des Prozessors damit du dich nicht aussperrst.

gruß hans

von Boony (Gast)


Lesenswert?

so liebe Leute.

Habe nun alles beisammen. Wie geht es jetzt weiter?

von Suking (Gast)


Lesenswert?

ich weiss ich grab hier ne leiche aus.

aber ich habe ähnliches im sinn wie booni und habe keine ahnung wie ich 
den ad wandler an meine steuerung löte.

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.