In den letzten Monaten wurden hier Schaltungen für reziproke Frequenzzähler vorgestellt, die nach Möglichkeit höchste Frequenzen bei möglichst vielen angezeigten Stellen bieten sollten. Siehe: Beitrag "Frequenzzähler 1Hz - 40MHz" oder auch Beitrag "PIC - Frequenzzähler weit über 50 MHz auf die minimalistische Art" Für niedrige Frequenzen haben diese jedoch den Nachteil, daß zwischen den einzelnen Messungen immer Lücken vorhanden sind, um neu zu synchronisieren. Bei 1 Hz Eingangsfrequenz wird daher nur jede zweite Periode erfaßt. Zu "immer schneller, weiter, höher" ist hier ein Gegenentwurf, der sich speziell für tiefere Drehzahlen / Frequenzen eignet und diese lückenlos erfaßt und auswertet. Anstatt ein einzelnes Signal zu messen werden hier 4 Kanäle mit je 5-stell. Auflösung gleichzeitig gemessen. Genau genommen ist es also eine Messung mit 20 Stellen (4 x 5) und damit doch wieder ein neuer Rekord :-) Die angehängte .c-Datei wurde unter AVR-Studio 4.18 erstellt. Benutzt werden die float-Routinen, die AVR-GCC zur Verfügung stellt. Es findet keinerlei Programmierung in Assembler statt. Mit 5,5KB Code läßt ein Atmega88 noch genug Platz für eigene Anpassungen. typ. Daten: 4 Eingänge für Drehzahlen von 1 U/min – 1000000 U/min gleichzeitige Messung aller Eingänge 3 Messungen/s oder min. ein Eingangsimpuls (<180.00 U/min) 5 gültige Stellen 5-stellige Anzeige bis 99999, darüber hinaus 6. oder 7. Ziffer als '0' zur Schaltung: Die Schaltung benötig nur wenige Bauteile: Atmega88 + LCD 16x2 + Kleinteile Die Signale werden an den Eingängen PC.2 – PC.5 (1.Kanal – 4.Kanal) erwartet. Pullups sind aktiviert, sodaß Hallsensoren oder prellfreie Signalquellen direkt angeschlossen werden können. Die LC-Anzeige nebst Programmierstecker werden lt. Schaltbild angeschlossen. Zum Programm: Die Eingangsimpulse lösen den PCINT1-Interrupt aus, welcher nur die negativen Flanken wertet. Fortlaufend erfaßt werden die Anzahl der Impulse und der Zeitpunkt des letzten Impulses. Gleichzeitig wird grob ermittelt, wie lange die laufende Messung andauert. Die Überläufe von T1 im 3,3ms Raster werden dazu genutzt. Dies geschieht für alle vier Kanäle gleichzeitig. Die Auswertung erfolgt mit den Differenzen der Anzahl der Impulse und der Zeit (Endwert – Startwert). Abschließend werden die aktuellen Endwerte als Startwert für die nächste Messung abgelegt. Auf diese Weise geht kein Eingangsimpuls verloren. Der Zähler der Messdauer wird gelöscht und die neue Mindestzeit abgewartet. Auswertung und Anzeige eines Signals erfolgen hier asynchron zu den Eingangsimpulsen; daher müssen folgende Bedingungen eingehalten werden: 1. eine Mindestzeit von 0,33 Sekunden ist seit der letzen Auswertung verstrichen 2. mindestens ein Eingangsimpuls ist aufgetreten 3. zwischen Beginn der Messung und letztem Impuls ist eine Mindestzeit abgelaufen. zu 1. Für eine 5-stellige Auflösung bei 330ms (Mindest-)Messdauer muß die Zeit auf 3,3µs genau erfaßt werden. Die PCINT1-Routine 'schafft' dies, wobei die Dauer des Interrupts auch vom gleichzeitigen Auftreten der Eingangsimpulse abhängt. Selbst wenn die 3,3µs überschritten werden, ist dies kaum nachteilig, da eine Anzeige immer mit +/- 1 Digit gewertet werden sollte. zu 2. Ohne Eingangsimpuls kann natürlich nichts gemessen werden. Nach 60 Sekunden ohne Eingangsimpuls (timeout), wird die Anzeige des Kanals gelöscht (Anzeige von "-.-"). zu 3. Gleich zu Beginn einer neuen Messung kann zum Beispiel nach 1ms ein Impuls eintreffen und danach kein weiterer. Bedingungen 1. und 2. wären erfüllt, das eff. Meßintervall aber zu kurz, um daraus fünf gültige Stellen abzuleiten. Im Programm wird daher ein Mindestintervall von 250ms vorgegeben (F_CLOCK/4). Angezeigt werden die vier Kanäle auf einem 'üblichen' 16x2 Display, was aber wenig Raum für formatierte Ausgaben bietet. Drehzahlen von 1.0000 – 99999 werden dimensionslos mit korrekter Auflösung gerundet angezeigt. Um Werte von 100000 – 5000000 (max. bei nur einem Kanal) unverstümmelt auszugeben, werden die 6. oder ggf. 7. Stelle als '0' angezeigt. Wem dies nicht gefällt kann eine andere Anzeige verwenden (beispielsweise 4 x 20) und das Ausgabeformat optimieren. Wie dies gehen könnte, wird hier gezeigt: Beitrag "einfache Drehzahlmessung mit ATmega88" Wer weitergehende Informationen zum Meßverfahren braucht oder speziellere Problemlösungen sucht, kann sich hier umsehen: http://www.mino-elektronik.de/fmeter/neue_versionen.htm Das Programm ist ganz frisch und braucht noch einen abschließenden Test. Anregungen, konstruktive Kritik und Erfahrungsberichte würden mich freuen.
Nach dem langen Text noch zwei Fotos der Anzeige, die die Funktion verständlicher machen. 1. Der Startbildschirm mit der Kanal-Zuordnung und 2. die Messergebnisse mit 5-stelliger Auflösung auch bei sehr niedrigen Drehzahlen.
Kann ich das ganze in 6 Fach ausführung bauen mit einem attiny2313 und die Werte per uart senden?
interesse schrieb: > Kann ich das ganze in 6 Fach ausführung bauen mit einem attiny2313 und > die Werte per uart senden? Das kommt drauf an, wie gut du mit µC-Programmierung umgehen kannst. Noch wird der UART nicht benutzt ;-)
interesse schrieb: > Kann ich das ganze in 6 Fach ausführung bauen mit einem attiny2313 und > die Werte per uart senden? Wegen der Codegröße müßte es mindestens ein ATtiny4313 sein, wenn man es kompakt programmieren kann. Mit einem ATmega88 ist man aber auch bei ungeschickter Programmierung auf der sicheren Seite. Man kann ein 2x20 oder 2x40 Display nehmen, wenn alle Werte gleichzeitig ablesbar sein sollen.
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.