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?
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
"Wie lang ist denn die zu messende Zeitspanne maximal?" Größenordnung 1200µs.
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. ;-)
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.
Ich würde einen ATtiny441 probieren. Aber nur, weil ich Atmels gewohnt bin und keine IDE für ST auf dem Rechner habe.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.