Hallo,
ich versuche ein MIcrocontrollerprojekt zu starten: Dafür verwende ich
einen Arduino Uno. Mein Ziel ist es diesen Ardunio so zu programmieren,
dass ich mit Hilfe eines Lichtsignalsenders (Infrarot) und eines
Empfängers einen Abstand zwischen dem Arduino und einem Gegenstand
messen kann. (ALSO OHNE DEN BEREITS FERTIGEN ENTFERNUNGSMESSER WIE ES
IHN BESIPIELSWEISE SCHON VON ARDUINO GIBT)
Hierfür hatte ich mir überlegt die Zeit zwischen dem Senden des
Lichtimpulses und des empfangen dieses Impulses von dem Arduino messen
zu lassen und in eine Entfernung umzurechnen. Allerdings ist die Zeit
viel zu kurz für den Arduino (da Lichtgeschwindigkeit). Meine Frage wäre
jetzt also, wie ich diese zeit künstlich erhöhe (also OHNE eine
Veränderung der Entfernung), damit mein Arduino sie messen kann.
Denn man kann die Zeit ja leider nicht im Arduino einfach
multiplizieren, da der Ardunio im Moment die Zeit 'null' empfängt und
null x irgendwas ist ja immer noch null. Falls ihr eine andere Idee
habt, wie ich die Entfernung ohne externes Kit lösen kann, könnt ihr sie
mir gerne mitteilen.
Keine Ahnung was du immer mit deinem KIT hast, aber fertige
Abstandsensoren messen den Abstand eben auf andere Art und Weise. Dann
mach das halt auch so.
Da gäbe es z.B. Ultraschall oder IR Triangulation (wie z.B. die Sharp
Sensoren das machen).
Dass du die Lichtgeschwindigkeit mit deinem Arduino nicht messen kannst,
ist dir ja schon selber aufgefallen. Deine Ausführungen zur
Anschließenden Multiplikation "um das Signal zu verlängern" lassen
allerdings dann etwas an deinem Verstand zweifeln.
ich möchte eben KEIN fertigen Entfernungsmesser benutzen!
Ich muss doch aber irgendwie die Lichtgeschwindigkeit bzw. die
Enttfernung an Hand von Impulsen messbar machen können. :o
et Maggus schrieb:> und es sollte größer als Millimeter sein und brauch auch nicht zu> weit> sein... 4-5 cm reichen schon
Dann mach das mit Triangulation oder mit Ultraschall, wie es schon
gesagt wurde. Schlag dir aus dem Kopf, die Lichtgeschwindigkeit messen
zu wollen :-)
et Maggus schrieb:> ich möchte eben KEIN fertigen Entfernungsmesser benutzen!
Du musst ja nichts fertiges nutzen, nur ein anderes Verfahren.
> Ich muss doch aber irgendwie die Lichtgeschwindigkeit bzw. die> Enttfernung an Hand von Impulsen messbar machen können. :o
Klar, mit einem viel viel schnelleren Messystem. Wenn du dir das gekauft
hast, komm wieder.
Hi
>Ich muss doch aber irgendwie die Lichtgeschwindigkeit bzw. die>Enttfernung an Hand von Impulsen messbar machen können. :o
Schon mal gerechnet?
MfG Spess
et Maggus schrieb:
> und es sollte größer als Millimeter sein und brauch auch nicht zu weit> sein... 4-5 cm reichen schon> ich möchte eben KEIN fertigen Entfernungsmesser benutzen!> Ich muss doch aber irgendwie die Lichtgeschwindigkeit bzw. die> Enttfernung an Hand von Impulsen messbar machen können. :o
Troll, gleich kommt der Fischhändler.
et Maggus schrieb:> Ich muss doch aber irgendwie die Lichtgeschwindigkeit bzw. die> Enttfernung an Hand von Impulsen messbar machen können.
Kein Problem, Du mußt Deinen Arduino nur auf 30GHz hochpimpen, dann
kannst Du 1 Meter mit einer Auflösung von 1 cm messen. Wenn die
Entfernung noch kleiner wird, mußt Du den Takt eben auf 300GHz erhöhen.
Rechne doch mal kurz:
c = 29979245800 cm/s --> 0,00336 ns/cm
d.h. wenn du 1cm auflösen möchtest, musst du einen Puls messen können,
der 0,00336 ns lang ist. Und das reicht noch nicht mal.
--> vergiss es, zumindest mit dem Arduino.
Grande schrieb:> Troll, gleich kommt der Fischhändler.
Schön wärs. Aber die Regel 19 (der noch inoffiziellen cyblordschen
Forenregeln) lautet: Unterstelle niemals trollen, wenn der Verfasser
auch Arduino-Nutzer sein könnte (was er hier nach eigener Aussage ist).
Abgeleitet aus dem Sprichwort: "Unterstelle nie Bosheit, wenn auch
Dummheit der Grund sein könnte".
Um mal 'was Konstruktives beizutragen: Ein Lösungsansatz wäre es, die
Interferenz zwischen gesendetem und empfangenem (Laser-) Licht
auszuwerten. Dazu amplituden-moduliert man das Licht im MHz-Bereich
(Wellenlänge sollte zum Messbereich passen) und wertet die
Phasenverschiebung zwischen Sender und Empfänger aus.
Das kann der Arduino aber nicht direkt, dazu benötigt man etwas externes
"Hühnerfutter" für Sender und Empfänger. Den Arduino kann man dann zur
Steuerung, Auswertung, Berechnung und Anzeige der Ergebnisse verwenden
...
HI,
ist ja ein ganz schön rauer Ton in diesem Thread.
Gehen wir doch einmal davon aus der der TO zu seinem Arduino
ein fertiges „Aufsteckmodul“ kaufen kann das er dann
nur noch mit der ebenfalls fertigen Software
bespielen muss und er kann die Entfernung messen.
Lerneffekt gleich null.
Also überlegt er sich wie er das ohne fertiges Modul machen kann, ist
doch nichts gegen einzuwenden.
Für jemanden der u.U. erst am Anfang seines Hobbies steht ist die
Vorstellung das über eine Laser / Zeit Messung zu erledigen
doch nicht völlig abwegig, es gibt ja auch Laser
Entfernungsmesser für < 100 Euro.
bis dann,
Frank
Frank H. schrieb:> Gehen wir doch einmal davon aus der der TO zu seinem Arduino> ein fertiges „Aufsteckmodul“ kaufen kann das er dann> nur noch mit der ebenfalls fertigen Software> bespielen muss und er kann die Entfernung messen.> Lerneffekt gleich null.
Willkommen in der Welt der Arduinos.
> Also überlegt er sich wie er das ohne fertiges Modul machen kann, ist> doch nichts gegen einzuwenden.
Absolut nicht.
> Für jemanden der u.U. erst am Anfang seines Hobbies steht ist die> Vorstellung das über eine Laser / Zeit Messung zu erledigen> doch nicht völlig abwegig, es gibt ja auch Laser> Entfernungsmesser für < 100 Euro.
Aber die Fähigkeit die vorkommenden Zeiträume mal schnell auszurechnen
sollte er haben. Er hat ja sogar schon erkannt dass es nicht reicht. Nur
weiß niemand so genau was der TE jetzt eigentlich will. Alternative
Methoden wurden genannt.
Warum hilfst DU ihm dann eigentlich nicht weiter? Dein Post bringt ihm
Null und gar Nichts. Hilf ihm doch einfach. MIR ist nämlich absolut
nicht klar wie man ihm helfen könnte.
Frank H. schrieb:> Gehen wir doch einmal davon aus der der TO zu seinem Arduino> ein fertiges „Aufsteckmodul“ kaufen kann das er dann> nur noch mit der ebenfalls fertigen Software> bespielen muss und er kann die Entfernung messen.> Lerneffekt gleich null.
Wer oder was hindert ihn daran, zu ergründen wie das dort funktioniert
und wie das Programm geschrieben ist?
Wenn der TO sich nur einigermassen in die hier aufschlagenden Arduino
Jünger einreiht, dann lernt er beim Codestudium dort mehr, als er sich
in 2 Jahren in Foren an fehlendem C++ Wissen zusammenschnorren kann.
Anschliessend kann er ja alles neu programmieren, indem er die
Programm-Vorlage wegsperrt. Sowas ist eine prima Kontrolle, ob man die
Prinzipien verstanden hat und nicht zuletzt tauchen dann oft auch noch
Programmiersprachen Details und Feinheiten Fragestellungen auf, die man
beim ersten Codestudium übersehen hat. Wieder hat man was gelernt.
Einfach reinspielen und sich freuen ist zu wenig. Da bin ich bei dir.
Aber niemand zwingt ihn dazu, das so zu handhaben.
Cyblord ---- schrieb:> Nur> weiß niemand so genau was der TE jetzt eigentlich will.
Er will die Zeit dehnen. Die Antwort darauf hat er ja schon bekommen:
Ist nicht. Drauf stampft er virtuell mit dem Fuß auf "aber ich will!".
Was ihn einer Lösung seines Problems nicht näher gebracht hat.
Eigentlich könnte ein Moderator jetzt hingehen und den Thread zumachen.
Mit Einsicht des TEs ist nicht mehr zu rechnen.
Hi,
Cyblord ---- schrieb:> Warum hilfst DU ihm dann eigentlich nicht weiter? Dein Post bringt ihm> Null und gar Nichts. Hilf ihm doch einfach. MIR ist nämlich absolut> nicht klar wie man ihm helfen könnte.
Weil ich ihm über die bereits gegebenen Informationen auch nicht mehr
Infos geben könnte. Ich bin nochmals kurz durch die Antworten gegangen
und finde das Verhältnis der "guten Posts" zu den "sinnfreien Posts"
sogar ziemlich hoch. Und vielleicht hast du recht das meine Antwort zu
der letzten Kategorie gehört.
Ich fand halt einen Teil der Antworten ziemlich von oben herab,
wahrscheinlich unter großen Stress geschrieben.
Und das eben nicht alle verstanden hatten was er eigentlich will.
( Obwohl meine Interpretation der Situation auch nur eine Vermutung
ist solange der TO nicht antwortet )
bis dann,
Frank
http://de.wikipedia.org/wiki/TOF-Kamera
TOF Kamera wie die Kinect 2 nehmen.
Oder selber bauen mit einem Pixel. Ist vom Prinzip einfacher umzusetzen.
Dort wird mit einem Integrator an der Fotodiode und einem elektronischem
Shutter ein fest definierter Puls einer Lichtquelle ausgewertet.
Mit einem AD Wandler kann man dann die Entfernung auswerten. Die Länge
des Pulses definiert die entfernung.
uwe schrieb:> http://de.wikipedia.org/wiki/TOF-Kamera> TOF Kamera wie die Kinect 2 nehmen.> Oder selber bauen mit einem Pixel. Ist vom Prinzip einfacher umzusetzen.
Viel Spass mit exakten Pulsen im Nanosekundenbereich.
> Viel Spass mit exakten Pulsen im Nanosekundenbereich.
Das ist ja das tolle an TOF, die braucht man nicht so exakt.
Ich schick nen Impuls vonn 100ns raus, sofort nach dem Puls gebe ich den
Integrator frei für 100ns. Wenn 100% des Pulse ankommen dan war die
entfernung 0 bzw. sehr klein. Wenn nur 50% zurückkommen dann war die
entfernung 50% der Meßstrecke (die sich aus der Lichtgeschwindigkeit und
den 100ns berechene läßt). Man muß also nur mit 5MHz 50% DutyCycle bei
high ne Lichtquelle Pulsen und solage high den Integrator kurzschließen.
Bei low Lichquelle aus und Integrator integrieren lassen. Am Ende der
Low Periode Ergebnis Auslesen und von vorne.
Komisch. Der von dir verlinkte WIki-Artikel benutzt in jedem dritten
Satz Wörter wie: ausgesucht, kurze, hohe Anforderungen, Anforderung an
FLankensteilheit etc. etc.
Man muß also nur mit 5MHz 50% duty cycle bei einem high Pegel eine
Lichtquelle Pulsen und solange der Pegel anliegt den Integrator
kurzschließen.
Bei low Pegel die Lichquelle aus und Integrator integrieren lassen.
Ja, mach mal.
(:-) Interessanterweise hab ich eine Allergie gegen die Wendung "Man
muss ja nur". Hatte mal einen Chef. Wenn der von sich gab "Man muss ja
nur, ... " dann wusste man mit Sicherheit, dass es genau so nicht
funktioniert)
Ja kenn ich auch =;)
Ist auch kein einfaches Projekt und für den TO wohl auch nicht
hinzubekommen.
Aber es ist wohl ein ganzes Stück weniger aufwendig als das
Laufzeitverfahren mit Licht. Und man sollte auch mit simplen Bauteilen
einen Aha-Effekt erreichen können (ohne große Genauigkeit und sicher
Störanfällig).
Ansonsten kann man ja die Kinect 2 kaufen. Da gibt es ja schon einige
Projekt und fertige Besipielcodes im Inet. Mit nem Arduino zum ansteuern
der Kinect 2 wird das aber wohl nichts.
Also ich glaube so könnte es gehen:
Man liest aus dem Datenblatte die Länge, Breite, Höhe des Arduino
Moduls.
Nehme z.B die Höhe und schaut wievielmal man das Modul auf der zu
vermessenden Strecke nebeneinander legen kann.
Anzahl Module in der Strecke mal Höhe gibt dann die Distanz.
Und das ohne Kit und sogar ohne Strom...
et Maggus schrieb:> Allerdings ist die Zeit> viel zu kurz für den Arduino (da Lichtgeschwindigkeit). Meine Frage wäre> jetzt also, wie ich diese zeit künstlich erhöhe
Ist halt nicht das richtige Universum. Aber wenn es bei viel niedrigerer
Lichtgeschwindigkeit für sowas geeignet wäre, hättest du womöglich als
Radfahrer schon mit relativistischen Effekten wie Zeitdilatation zu
rechnen, und deine Frau wäre 2 Jahre gealtert wenn du von einer Radtour
zurückkommst. Da ist mir unser gewohntes Universum doch lieber.
Georg
et Maggus schrieb:> Meine Frage wäre jetzt also, wie ich diese zeit künstlich erhöhe (also> OHNE eine Veränderung der Entfernung), damit mein Arduino sie messen> kann.
Du musst nur die Umgebung auf eine geeignete Temperatur abkühlen:
http://www.nature.com/nature/journal/v397/n6720/abs/397594a0.html
Bei der resultierenden Lichtgeschwindigkeit von 17 m/s kannst du die
Entfernung fast schon von Hand mit der Stoppuhr messen :)
Eine Entfernung nur mit einem Arduino messen geht so:
1) Man legt den Arduino mit einer Ecke an den Anfang der Strecke, die
man messen möchte
2) man richtet den Arduino so aus, dass eine Seite in die Richtung der
Strecke zeigt
3) man markiert die Streckke an der Stelle, wo der Arduino zuende ist
4) man legt den Adruino mit einer Ecke auf die markierte Stelle...
Man sollte darauf achten, dass man immmer die gleiche Seite des Arduino
nimmt, sonst wird es ein wenig ungenau.
Frank Esselbach schrieb:> Das kann der Arduino aber nicht direkt, dazu benötigt man etwas externes> "Hühnerfutter" für Sender und Empfänger. Den Arduino kann man dann zur> Steuerung, Auswertung, Berechnung und Anzeige der Ergebnisse verwenden> ...
Erst mal danke Frank, dass du mir weiterhelfen willst.
Aber was meinst du mit Hühnerfutter? :o
Und jetzt an alle die sich darüber beschwert haben, dass ich versuche
"die Zeit zu dehnen". Es war lediglich ein Gedankenansatz wo z.B.:
Probleme auftreten könnten, welche Ungenauigkeiten ich beachten usw.
Ich war der Meinung gewesen, dass ich da vielleicht weiter komme mit
dieser Idee mit der Zeitdehnung.
Wäre nett, wenn ihr mit Alternativen aufführen könntet.
(Die bereits aufgeführt gehe ich zur Zeit noch durch)
et Maggus schrieb:> Aber was meinst du mit Hühnerfutter? :o
Mit "Huehnerfutter" ist das ganze klein Zeug gemeint, was man so
braucht: Widerstaende, Dioden, Transistoren, usw.
Warum das Huehnerfutter heisst?
Nimm mal ne Schuesselvoll Huehnerfutter, und ne Schuessel voll
SMD-Bauteile... wirst keinen Unterschied sehen.
et Maggus schrieb:> Ich war der Meinung gewesen, dass ich da vielleicht weiter komme mit> dieser Idee mit der Zeitdehnung.> Wäre nett, wenn ihr mit Alternativen aufführen könntet.
OK. Zeitdehnung ist nicht. Hast Du ja scheinbar begriffen.
Wie wäre es mit Wegdehnung. Wenn Du die Strecke Erde-Mond über Laufzeit
bestimmen willst, kommst Du in akzeptable Zeitbereiche. (Die Apollos
haben geeignete Laserreflektoren aufgestellt). Du brauchst nur
geeignete Laser und Empfänger!
Für Deinen Anwendungsfall schlage ich vor, das Infrarrotlicht über
Spiegel mehrmals (z.B. 1 Milliarde mal) hin und her zu schicken. Dann
hast Du auch eine meßbare Zeit (aber kaum noch Licht).
Wie Du jetzt die Milliarde ohne ein fertiges Kit zählen kannst, weis ich
nicht.
Entfernungsmessung mit einem Arduino mit Licht? Arduino mit einer Kante
an Anfang legen, am anderen Ende einen Strich machen, Arduino weiter
schieben, bis die eine Kante am Strich ist, auf der anderen Seite neuen
Strich machen, Arino weiter schieben... Wieso Licht? Weil man ohne Licht
die Striche nicht sieht
**duckundweg**
Jay schrieb:> Er will die Zeit dehnen. Die Antwort darauf hat er ja schon bekommen:> Ist nicht. Drauf stampft er virtuell mit dem Fuß auf "aber ich will!".> Was ihn einer Lösung seines Problems nicht näher gebracht hat.>
Doch man kann die Zeit dehnen, nennt sich Time-Stretching und wird bei
hochauflösenden Zeit/Frequenz-Zählern und auch bei AD-Wandlern
tatsächlich verwendet.
Dazu wird während der Messung ein Kondensator mit Konstantstrom
aufgeladen und nach beenden mit viel, viel kleineren Strom wieder
entladen und die Enladezeit gezählt. Das Verhältnis zwischen Lade und
Entladestrom bestimmt die Zeitdehnung.
Theoretisch könnte er damit mit einem Arduino Lichtgeschwindigkeit
messen.
Wirklich sinnvolle Antwort:
uwe schrieb:> http://de.wikipedia.org/wiki/TOF-Kamera> TOF Kamera wie die Kinect 2 nehmen.> Oder selber bauen mit einem Pixel. Ist vom Prinzip einfacher umzusetzen.> Dort wird mit einem Integrator an der Fotodiode und einem elektronischem> Shutter ein fest definierter Puls einer Lichtquelle ausgewertet.> Mit einem AD Wandler kann man dann die Entfernung auswerten. Die Länge> des Pulses definiert die entfernung.
Nicht korrekt dagegen ist:
Einzige Karl Heinz schrieb:> uwe schrieb:>> http://de.wikipedia.org/wiki/TOF-Kamera>> TOF Kamera wie die Kinect 2 nehmen.>> Oder selber bauen mit einem Pixel. Ist vom Prinzip einfacher umzusetzen.>> Viel Spass mit exakten Pulsen im Nanosekundenbereich.
Genau das wird mit ToF vermieden. Da hat der Einzige Karl Heinz das
Prinzip wohl noch nicht verstanden.
Das ToF-Prinzip (Time of Flight) ist, wenn überhaupt, der richtige
Ansatz.
Du hast nicht spezifiziert, wie lange eine Messung dauern soll.
Wenn Du genug Zeit hast, kannst Du vom Prinzip her vorgehen,
wie einige "Großen" 1D-Sensoren auch.
Du brauchst nur eine sehr genaue Taktquelle, eine sehr gute
weiße Rauschquelle, einen wiederholgenauen Empfänger und
eine wiederholgenaue (analoge) Verzögerungsschaltung.
Die Rauschquelle nullt den Taktzähler und startet über die Verzögerung
den Lichtimpuls.
Jetzt musst Du nur noch seeeeehr oft messen (den Takte zählen) und dann
zum Schluss mitteln.
Das Gut ist, voraussgesetzt Deine Hardware machte keine Fehler,
die Lichtverhältnisse ändern sich nicht usw.
dass Du keine Normalverteilung der Messwerte hast, sondern eine
statistisch so gleichmäßig Verteilung wie Deine Rauschquelle.
Du wirst durch Mitteln immer genauer!
Die Verzögerung muss mindestenz so viele µc-Takte dauern,
wie Deine Initialisierung einer Einzelmessung dauert; sagen wir mal
100µs.
Dann kannst Du vielleicht alle 500µs nach Aufaddieren usw. eine
neue Messung starten.
Du bekommst es vielleicht hin 1Mhz beim Zählen unterscheiden,
das macht eine Auflösung von ~300m je Messung.
Jetzt musst Du Dir noch selbst ausrechnen, wie lange eine
Gesamtmessung dauert, damit Du von 300m Auflösung bei 5000 Messungen/s
dauert um auf 1mm Auflösung zu kommen.
Lass von Dir hören, wie lange Du messen musst, um einen
Unterschied von 1mm zu erkennen.
Bin gespannt,
Schiko
ps.: Laser-Distanzmesser sind mein täglich Brot.