Forum: Mikrocontroller und Digitale Elektronik Zeitmessung mit Lichtschranken, Einplatinen-Rechner


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von raspberry (Gast)


Bewertung
0 lesenswert
nicht 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?

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
von raspberry (Gast)


Bewertung
0 lesenswert
nicht lesenswert
"Wie lang ist denn die zu messende Zeitspanne maximal?"

Größenordnung 1200µs.

von fop (Gast)


Bewertung
0 lesenswert
nicht 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. ;-)

von m.n. (Gast)


Bewertung
0 lesenswert
nicht 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.

von fop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich würde einen ATtiny441 probieren. Aber nur, weil ich Atmels gewohnt 
bin und keine IDE für ST auf dem Rechner habe.

von raspberry (Gast)


Bewertung
0 lesenswert
nicht 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

von m.n. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
raspberry schrieb:
> " By using a PRU, you can achieve fast, deterministic, real-time control
> of I/O pins and devices"

Was für den einen Echtzeit ist, ist für den anderen echt Zeit.
In dem genannten Umfeld ist Echtzeit schon erreicht, wenn etwas 
innerhalb von 1-10 ms stattfindet.

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.