Zeitmessung mit Lichtschranken, Einplatinen-Rechner

Gast #4944608
Lesenswert?

Hallo, im Prinzip muss ich etwas ähnlich wie in diesem Thread lösen:
"Zeitmessung mit zweier Lichtschranken" 
Beitrag "Zeitmessung mit zweier Lichtschranken"

Nur brauche ich eine Genauigkeit von +/- 1µs.

Später sollen mithilfe der gemessenen Werte gewisse Berechnung statt 
finden, dies wird entweder auf PC oder einem Single-Board-Computer 
(bspw. Raspberry Pi) durchgeführt.
Die ganze Geschichte nur mit dem Single-Board-Computer zu machen hab ich 
ad acta gelegt, da Betriebssystem wie Linux wohl zu ungenau sind 
aufgrund Multi-Tasking.

Eine Idee war einen Arduino Uno als Messknecht zu verwenden, aber der 
ist wohl auch zu ungenau und das Projekt hier ist mir etwas suspekt:
http://www.electricrcaircraftguy.com/2014/02/Timer2Counter-more-precise-Arduino-micros-function.html

Es wird wohl daher auf einen Hardware-Timer-Baustein ala DP8670a 
rauslaufen:
http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=dp8570a&fileType=pdf

Habt ihr noch andere Ideen?
#4944651
Lesenswert?

Wie lang ist denn die zu messende Zeitspanne maximal?

Ein 1 MHz Oszillator und ein SN74LV8154 könnten helfen.

Die erste Lichtschranke resettet den Counter, die 2. übernimmt den 
Counterwert ins Ausgaberegister (aufpassen mit der jeweils benötigten 
Flanken-Polarität).

Wenn man keinen 8-Bit Port zum Auslesen frei hat, könnte man noch ein 
Schieberegister dahinter schalten, um das Byte seriell auszulesen.

Wenn man nur einen der beiden 16-bit counter benutzt, reicht das für 
65ms Zeitspanne, kaskadiert kann man Zeitspannen bis 71 Minuten messen.

http://www.ti.com/lit/ds/symlink/sn74lv8154.pdf
Gast #4944688
Lesenswert?

Hm, die AVRs haben eigentlich sogenanntes Input Capture. 1 µs Auflösung 
bedeutet, dass der Timer mit 1 MHz laufen muss. Auch noch kein Unding. 
Hardwaremässig waren das 16-Bit-Timer. Macht ca. alle 65,5 ms einen 
Timerüberlauf. Ich habe das aber auch schon mal per Software auf 32 Bit 
aufgestockt. Dann bist Du so bei etwa 71,5 Minuten. Beachte, dass der 
von Dir genutzte AVR 2 ICP Einheiten haben sollte (für Deine 2 
Lichtschranken).
Wenn beide den selben Timer benutzen um so besser. Aber 16-bittig sollte 
er schon sein. Da ich bisher noch keine Aktien in USB auf 
Mikrokontrollern hatte, würde ich die Daten per SPI zum RasPi 
übertragen.
Wichtig für die Genauigkeit ist dann noch der Takt des AVR. Schön wenn 
Quarzgenauigkeit ausreicht. Gut ist auch eine Zweierpotenz als 
Vielfaches des gewünschten Timertakts von 1 MHz. Dann noch mal schauen, 
ob der manchmal zuschaltbare Glitch-Filter Deine Genauigkeit nicht 
stört. Der Rest wird dann vermutlich im Analogteil verschusselt.
Hoffe ja nicht, dass Du Deinen Quarz temperaturgeregelt betreiben musst, 
wobei per GPS Empfänger die Abweichung des Quarzes gemessen wird und so 
der Temperatursollwert ermittelt wird. Aber dann musst Du wohl auch die 
Lichtschranken mit der Mikrometerschraube aufstellen. ;-)
Gast #4944703
Lesenswert?

Beitrag "Stoppuhr – Geschwindigkeit – Pulsweite mit Atmega88"

Etwas weiter unten ist eine Version für Arduino UNO. Datenausgabe per 
LCD und/oder USB-Anschluß. Platinen für den ATmega88 habe ich nicht mehr 
und würde heute einen STM32F4xx mit angepasstem Programm verwenden: 
http://mino-elektronik.de/FM_407/fmeter_407.htm
Damit lassen sich dann 6 ns Auflösung/Genauigkeit erreichen, wenn man es 
braucht.
Gast #4945392
Lesenswert?

hey,
danke für Tipps. Dass könnte doch schon mal ein gangbarer Weg sein.

Was ich gerade auch noch ein bisschen am Recherchieren bin, BeagleBone.

Kennt sich jemand mit dem BeagleBone Black aus?
Da gibt es wohl OnBoard 2x 32bit microcontroller die als "PRU" 
(Programmable Realtime Unit) bezeichnet werden.

Und wohl frei ansprechbar/programmierbar sind:
" By using a PRU, you can achieve fast, deterministic, real-time control 
of I/O pins and devices", Quelle: 
http://www.righto.com/2016/08/pru-tips-understanding-beaglebones.html
Gast #4945433
Lesenswert?

Als Rechenknecht ginge auch ein LPC Cortex-M, z.B. LPC812 oder 824. Die 
haben 32 Bit Timer/Counter und können damit auch lange Zeiten mit einer 
Auflösung von 0,1 µs oder kleiner messen.
Mit der PRU kriegt man das vielleicht auch hin, damit legtst du dich 
aber auf die speziellen TI fest. Mit dem Rechenknecht kannst du nahezu 
alles nutzen was es in der Raspberry Klasse gibt.

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