Hallo,
kennt jemand ein günstiges, fertiges Frequenzzählermodul mit LED- oder
LCD-Anzeige im Bereich von 1Hz-100kHz? Auch Bestellung aus China ist
denkbar. Muss auch nicht besonders genau sein.
Auf Anhieb habe ich beim Chinesen nur Module gefunden, die im
MHz-Bereich arbeiten.
Ansonsten, hat jemand ein fertiges Program für einen PIC16F628 oder
ATMEGA8 zur Hand, das möglichst ohne externe Beschaltung auskommt: Der
interne Oszillator sollte für den Frequenzbereich und meine Messzwecke
noch genau genug sein. Ein 1x8 Dotmatrix-Display sollte sich dabei auch
einfach ansteuern lassen.
Was Fertiges wäre mir allerdings lieber. Ich meine mal kleine fertige
Multimetermodule gesehen zu haben. Sowas bräuchte ich für
Frequenzmessung im NF-Bereich inkl. Ultraschall bis 100kHz.
Wie gesagt: Ich hoffe, dass auf der Platine keine externen Teiler oder
ähnliches zum Einsatz kommen. Aber selbst wenn, müsste ich diese dann
eben ausbauen/überbrücken. Dank ICSP sollte der PIC16F628 einfach
anpassbar sein.
Michael W. schrieb:> 0.1MHz to 65MHzDominik schrieb:> 1Hz-100kHz
Das paßt irgendwie nicht zusammen, zumindest vorne und hinten nicht.
Den Artikel Frequenzzählermodul hier im Forum kennst du?
Der läuft von 1Hz bis 40MHz.
Vielleicht bin ich ja ein reziprok verdorbener Mensch, aber wenn jemand
die Frequenz von 1Hz messen möchte, denke ich, bei einer 4-stell.
Anzeige sollte auch 1.000Hz ablesbar sein und die Messung auch nur 1s
dauern.
Die zuvor genannten (Retro-)Zähler machen das nicht.
m.n. schrieb:> Vielleicht bin ich ja ein reziprok verdorbener Mensch, aber wenn jemand> die Frequenz von 1Hz messen möchte, denke ich, bei einer 4-stell.> Anzeige sollte auch 1.000Hz ablesbar sein und die Messung auch nur 1s> dauern.> Die zuvor genannten (Retro-)Zähler machen das nicht.
Das ist schlichtweg falsch.
Ein nicht reziproger Zähler kann bei 1Hz Torzeit maximal eine Auflösung
von 1Hz.
Anders ausgedrückt, würde bei einen vierstelligen Zähler mit 1Hz Torzeit
eine 0001 im Display erscheinen.
Anders sieht es bei Reziprog-Zählern aus, wie sie öfters hier schon als
Projekt vorgestellt wurden.
Ralph Berres
Ralph Berres schrieb:> m.n. schrieb:>> Vielleicht bin ich ja ein reziprok verdorbener Mensch, aber wenn jemand>> die Frequenz von 1Hz messen möchte, denke ich, bei einer 4-stell.>> Anzeige sollte auch 1.000Hz ablesbar sein und die Messung auch nur 1s>> dauern.>> Die zuvor genannten (Retro-)Zähler machen das nicht.>> Das ist schlichtweg falsch.
nein.
> Ein nicht reziproger Zähler kann bei 1Hz Torzeit maximal eine Auflösung> von 1Hz.>> Anders ausgedrückt, würde bei einen vierstelligen Zähler mit 1Hz Torzeit>> eine 0001 im Display erscheinen.>> Anders sieht es bei Reziprog-Zählern aus, wie sie öfters hier schon als> Projekt vorgestellt wurden.
das schrieb m.n. doch?
Ralph Berres schrieb:> Das ist schlichtweg falsch.
Ich glaube, Du hast mich falsch verstanden, indem Du die von mir
beschriebene Erwartungshaltung als vermeintliche Funktion der
betreffenden "Retrozähler" ansiehst. Mein "ich denke" soll sagen,
heutzutage erwarte ich ein reziprokes Meßverfahren, wenn jemand 1Hz
messen möchte.
Oder ganz direkt ausgedrückt: die Torzeitzähler eignen sich nicht für
1Hz Eingangsfrequenz. Wenn der µC interne Taktgeber allerdings als
hinreichend stabil angesehen wird, weiß ich auch nicht, was der TO denn
genau will.
Dann habe ich hier irgendwas missverstanden, oder der TE hat sich
missverständlich ausgedrückt.
Herkömmliche Zähler wie sie in den 60ger und 70ger Jahren üblich waren,
also reine TTL-Zähler ( oder von mir aus auch C-Mos ) haben ein Zähltor,
welches von der Zeitbasis ( in dem Fall 1 Sekunde ) geöffnet wurden,
und die Anzahl der Perioden gezählt worden.
Bei 1 Hz Frequenz wird halt bei der einen Sekunde offenenen Torzeit eben
nur eine Periode gezählt und angezeigt.
Später kamen ja die Reziprogzähler, bei welcher die Torzeit mit der zu
messende Frequenz geöffnet wurden, und gezählt wurde die
Referenzfrequenz, welche in der Regel 10MHz beträgt. Jetzt hat man
natürlich die Periodendauer in der Anzeige, aber mit einer hohen
Auflösung, welche man jetzt erst in die Frequenz umrechnen muss.
Welcher der beiden Zählertypen hat der TE denn jetzt gemeint?
Ralph Berres
Ralph Berres schrieb:> Welcher der beiden Zählertypen hat der TE denn jetzt gemeint?
Gar keinen. Er hat den Begriff in verallgemeinernder Form gebraucht.
"Frequenzzähler" als ein Meßgerät, das die Frequenz anzeigt.
XL
Ralph Berres schrieb:> Jetzt hat man> natürlich die Periodendauer in der Anzeige, aber mit einer hohen> Auflösung
So geht das natürlich nicht, man muss schon den Wert in Frequenz
umrechnen für das arme (menschliche) Schwein das das ablesen soll. Ein
Prozessor ist dafür Voraussetzung, aber das dürfte ja seit einigen
Jahrzehnten kein Problem mehr sein.
Es ist auch eine Selbstverständlichkeit, dass die Umschaltung zwischen
Frequenz- und Periodendauer-Messung je nach Messwert automatisch
erfolgt.
Georg
Sorry, das Ihr euch jetzt an der Periodendauermessung im ganz tiefen
Bereich den Kopf zerbrecht: Dieser Bereich interessiert mich eigentlich
gar nicht. Streng genommen würden für meine Zwecke sogar 20kHz-100kHz
reichen. Möchte mir nur grob die Oszillatorfrequenz für eine
Ultraschall-Mischstufe anzeigen lassen, um Fledermäuse zu beobachten.
Die ausgeklügelteren uC-Programme machen wohl alle eine automatische
Umschaltung zwischen Periodendauermessung und Zählung
Dominik schrieb:> Streng genommen würden für meine Zwecke sogar 20kHz-100kHz> reichen. Möchte mir nur grob die Oszillatorfrequenz für eine> Ultraschall-Mischstufe anzeigen lassen, um Fledermäuse zu beobachten.
Da würde ein konventionell aufgebauter Zähler mit ein paar TTL oder Cmos
Ics ausreichen. Bei 0,1 Sekunden Torzeit hätte man eine Auflösung von
10Hz bei 5Messungen/ Sekunde. 10Hz Auflösung reicht da wohl in deinem
Falle.
Man käme sogar mit 4 Stellen aus, wenn man sich auf maximal 99KHz
beschränkt, und die 1Hz Stelle unter den Tisch fallen lässt.
Ralph Berres
Dominik schrieb:> Streng genommen würden für meine Zwecke sogar 20kHz-100kHz reichen.
Sag das doch gleich!
Eine einfache Lösung wäre mit einem zweifach Monoflop möglich. Die 1.
Stufe erzeugt aus dem Eingangssignal einen kurzen (1µs) Impuls für eine
steigende Flanke und die 2. Stufe einen 2µs Impuls. Typischer Baustein:
74HC221
Mit 5 Volt betrieben und an ein Multimeter angeschlossen kann man dann
gut 10 - 500kHz messen, entsprechend 0,1 - 5V gemittelter
Ausgangsspannung.
Ähm, mir geht es nicht um's plumpe messen! Da kann ich auch gleich den
in meinem Multimeter integrierten Frequenzzähler nehmen (schon getestet)
oder gar mein DSO dranhängen. Ich möchte ein kleines Display-Modul in
einem Handgehäuse miteinbauen. Dabei habe ich keine Lust eine eigene
Platine mit zig externen Bauteilen zusammenzubraten. Dachte erst an uC
und Dotmatrix-Display ohne weitere Bauteile freiluft im Gehäuse zu
verdrahten. +9V Batteriespannung und stabile +5V stehen bereits zur
Verfügung.
Das in China bestellte Modul ist mir von den Abmessungen her eigentlich
ein bisschen zu groß für ein Handgehäuse wegen der 9cm Breite. Aber ein
rotes LED-Display, bei dem die Helligkeit noch einstellbar ist, ist im
dunkeln ideal.
Das bestellte Chinamodul heißt übrigens PLJ-6LED-A und gibt es bei
buyincoins sogar noch ein paar cent billiger. Ein Schaltplan habe ich
hier gefunden:
http://obrazki.elektroda.pl/9826042700_1408784428.jpg
Den Source habe ich leider noch nicht. Mein chinesisch ist leider nicht
so gut und mit Website-Übersetzer konnte ich mich nicht in
entsprechenden Foren registrieren. Wenn der Code für den 16f628a in
Assembler geschrieben ist, kann ich ihn sicherlich disassemblieren und
anpassen. Wenn er allerdings in C gehalten ist, wirds wahscheinlich
komplizierter durchzublicken. In der Schaltung ist ja kein externen
Vorteiler, weshalb es relativ einfach sein sollte es von Grundauf neu zu
schreiben. Lediglich die Ansteurung des LED-Display-Treibers macht mir
noch sorgen. Könnte ein schlichtes Schieberegister sein? Dachte beim
Kauf an Hand des Platinenfotos noch, dass das der PIC die
LED-Displaysteuerung selbst übernehmen würde :(. Der Treiber ist wohl
irgendwie unter dem Display versteckt?
Dominik schrieb:> Ähm, mir geht es nicht um's plumpe messen! Da kann ich auch gleich den> in meinem Multimeter integrierten Frequenzzähler nehmen (schon getestet)> oder gar mein DSO dranhängen. Ich möchte ein kleines Display-Modul in> einem Handgehäuse miteinbauen.
Genau für solche Fälle habe ich das Frequenzzählermodul entworfen.
Das läßt sich auf einem Stück Lochraster so kompakt aufbauen, daß es
huckepack mit einem Textmode-LCD ein kleines Modul ergibt. Ebenso kann
man eine 6-stellige (Stellen kann man auch weglassen) LED-Anzeige auf
einer Platine mit ebenfalls diesen Abmaßen dranklemmen. Und da die
Firmware Open Source ist und ich hier zumindest im Prinzip greifbar bin,
sollte das IMHO eine bessere Basis sein als ein China-Modul.
Anbei Bilder meines halb gefädelten Prototypen. Platinen haben andere
entworfen.
z.B. hier: Beitrag "Re: Frequenzzähler 1Hz - 40MHz"
und hier: Beitrag "Re: Frequenzzähler 1Hz - 40MHz".
Und hier: Beitrag "Re: Frequenzzähler 1Hz - 40MHz"
bzw. hier: Beitrag "Re: AVR-Frequenzzählermodul 1Hz - 40MHz"
gibts das Teil mit LED-Display.
Bei geringeren Anforderungen kannst du aber auch die Analog-Variante
verwenden die Mino oben vorschlägt. Statt des Multimeters nimmst du
einfach ein handelsübliches Panelmeter-Modul.
XL
Danke noch mal für den Tipp!
Mike hat ja bereits darauf hingewiesen. Sicher ein tolles
AVR-Frequenzzähler-Projekt mit dem Atmega8, aber ich habe wirklich keine
Lust den ganzen Kram auf einer Lochrasterplatine zusammenzulöten und zu
verdrahten. 3 IC's und noch einige externe Bauteile (von der LED-Panel
Version will ich da gar nicht erst reden). Wie gesagt, für mich käme
wenn, dann nur eine Einchip-Lösung + LCD ohne Platine in Frage.
Wenn es Deine AVR-Module auch fertig aufgebaut günstig in China gäbe
oder zumindest günstige Fertigplatinen, dann hätte ich die sicher in
Erwägung gezogen. Von den Kosten her spart der Selbstbau sicherlich auch
nichts gegenüber der 9$ Chinaplatine (jetzt bitte keine
Milchmädchen-Rechnungen!).
Ich beschäftige mich zudem lieber mit Software als mit Hardware ;)
Trotzdem noch mal vielen Dank für den Tipp!
Dominik schrieb:> Wie gesagt, für mich käme> wenn, dann nur eine Einchip-Lösung + LCD ohne Platine in Frage.> Wenn es Deine AVR-Module auch fertig aufgebaut günstig in China gäbe> oder zumindest günstige Fertigplatinen, dann hätte ich die sicher in> Erwägung gezogen.
Ich hatte Dir weiter oben einen Musteraufbau angeboten. Ein ATtiny2313 +
2x16 LCD hätte für Deine Anforderungen ja schon gereicht.
Aber der käme leider nicht aus China, wie auch alle anderen
vorgeschlagenen Lösungen.
Von China lernen heißt: Siegen lernen!
Wolfgang schrieb:> Dann mal viel Spaß mit deinem China-Zähler und berichte mal.
dito
Dominik schrieb:> ... ich habe wirklich keine> Lust den ganzen Kram auf einer Lochrasterplatine zusammenzulöten und zu> verdrahten. 3 IC's und noch einige externe Bauteile (von der LED-Panel> Version will ich da gar nicht erst reden).
Aah, ja. Das ist dir also zuviel Aufwand. Dabei sind das höchstens 2
Stunden, um ein Stück Lochraster zuzuschneiden und das bisschen
Kleinkram da drauf zu verdrahten. In der Zeit hast du noch nicht mal den
Schaltplan deines Chinamoduls aufgenommen (oder verifiziert daß der im
Web gefundene Schaltplan stimmt).
> Wie gesagt, für mich käme> wenn, dann nur eine Einchip-Lösung + LCD ohne Platine in Frage.
Das Leben ist kein Wunschkonzert.
> Wenn es Deine AVR-Module auch fertig aufgebaut günstig in China gäbe> oder zumindest günstige Fertigplatinen, dann hätte ich die sicher in> Erwägung gezogen.
Ich habe Uwe S. oben im Verdacht, daß er dir ein solches Modul bauen
oder abgeben wollte. Auch Mino scheint vom Verkauf seiner Module zu
leben. Allerdings können und wollen die sicher beide nicht mit dem
Chinesen konkurrieren.
> Ich beschäftige mich zudem lieber mit Software als mit Hardware ;)
Mach mal. Ich fürchte ja, daß das im Sande verläuft. Mir graut es ja
schon bei dem Gedanken, PIC Code reverse-engineeren zu sollen. Noch
sowas, das dein Zeitbudget sprengen wird.
XL
Habe den 50 MHz-Frequenzzähler von Sprut
http://www.sprut.de/electronic/pic/projekte/frequenz/freq.htm mal
angepasst:
- Vorteiler ausgeschaltet (bei Sprut wurden Frequenzen < 2MHz immer noch
mit Vorteiler 2 gemessen)
- RC-Oszillator eingeschaltet und Timings auf 4MHz angepasst
- Autorange-Vormessung rausgeworfen
Ich messe nun mit einer Messdauer von 250ms ohne Vorteiler. Wenn's
genauer sein soll (oder für Referenzfrequenzmessungen) kann man die
Messdauer auch problemlos auf 1000ms erhöhen. Mit einer Referenzmessung
(bei Arbeitstemperatur) und Dreisatz kann man dann die
Messzeit-Konstante (16bit in ( HighCOU / LowCOU ) x 20 Takte = Messzeit)
anpassen, so dass eine erstaunliche Genauigkeit erreicht wird.
LCD einfach mit ein kurzes Stück Flachbandkabel (aus alten PC) direkt an
Pic gelötet (bzw 18pol. IC-Sockel). Eventuell sind noch 2 Widerstände
für den Spannungsteiler der Kontrasteinstellung nötig. Die kann man
i.d.R. direkt an die LCD-Anschlüsse löten. Bei meinem getesten 16x2
Display brauchte ich zum Glück nur eine Brücke vom Kontrastanschluss zu
GND (LCDPin 1->3). Noch 3 Drähtchen (Vdd,Vss,RA4-Timereingang) zu meinem
Fledermausdetektor und gut war.
Wenn mein China-LED-Modul kommt, kann ich dort auch die
Sprut-Messroutine einsetzen, ohne deren Messroutine nachvollziehen zu
müssen. Das Modul zur LED-Ansteuerung werde ich (sofern nicht
Code-Protected gebrannt) nach Disassemblieren hoffentlich schnell
isolieren können. Zur Not kann ich es aber auch sicher selber neu
schreiben. Vom TM1637 LED-Display Treiber habe ich bisher nur ein
Datenblatt in chinesisch gefunden. Es gibt aber fertige Routinen für
Arduino, wo ich mir zur Not sicher auch die Ansteuerung raus extrahieren
kann.
Achja, in dem Forum gibt es glaub ich sogar ein HEX-File zum
Frequenzzähler:
http://www.hellocq.net/forum/read.php?tid=312288
habe mich mit Hilfe vom Google-Translator dort registriert, kann die
Dateien aber trotzdem nicht runterladen :(. Irgendwie muss man dazu noch
berechtigt werden, aber ich blicke nicht durch. Chinesisch müsste man
heutzutage in den Schulen lernen statt englisch ;)
So, mein PLJ-6LED-A Modul ist gestern gekommen (war ziemlich lange
unterwegs, obwohl der Verkäufer es laut Sendungsverfolgung schnell
abgeschickt hat). Darauf werkelt allerdings ein PIC16F648a statt dem
angegebenen PIC16F628a. Der ist aber wohl voll kompatibel (hat nur mehr
Flashspeicher).
Leider ist er CP, weshalb ich ihn nicht auslesen kann. Ein HEX-File habe
ich mittlerweile aber auch gefunden:
ftp://bg5roj.3322.org/%C6%E4%CB%FC/%C6%B5%C2%CA%BC%C6%D7%CA%C1%CF/PLJ-6L
ED-A%B9%CC%BC%FEV13.03.20.rar
Ist sehr groß und mein Versuch es zu deassemblieren und reverse
engineeren war nicht vielversprechend. Ist offensichtlich in einer
Hochsprache geschrieben, weil die ersten Routinen ALLE Speicherzellen
für Variablen via Schleife und indirekter Adressierung nullt. Weiter
wollte ich dem Monsterprogramm nicht mehr folgen.
Also habe ich Doku zum TM1637 LED-Segment Treiber gesucht. Allerdings
auch nur auf chinesisch was gefunden. :(
Dafür habe ich aber eine Arduino TM1637 C++-Lib gefunden, wo ich die
entscheidene Routine 1 zu 1 in Pic16 Asm übersetzt habe. Hat auf Anhieb
geklappt! Im Anhang mein kleines Testprogramm, mit dem ich HALLO auf dem
LED-Display ausgebe. Gibt wohl auch viele 4-Ziffer LED-Module mit dem
TM1637.
Am Wochenende werde ich dann meinen modifizierten Sprut-Frequenzzähler
mit dem LED-Display Routinen kombinieren und entsprechend anpassen.
Dominik schrieb:> So, mein PLJ-6LED-A Modul ist gestern gekommen> Darauf werkelt allerdings ein PIC16F648a statt dem> angegebenen PIC16F628a. Der ist aber wohl voll kompatibel> Leider ist er CP, weshalb ich ihn nicht auslesen kann. Ein HEX-File habe> ich mittlerweile aber auch gefunden> Ist sehr groß und mein Versuch es zu deassemblieren und reverse> engineeren war nicht vielversprechend.
Soviel zum Thema "ich kaufe mir was billig beim Chinesen und passe es
an" statt einfach ein Projekt nachzubauen, bei dem die Firmware Open
Source ist.
XL
Und was willst Du jetzt damit sagen? Bei der einen Lösung ist die
Hardware fertig, aber die Software nicht. Bei der anderen Lösung genau
umgekehrt. Insofern ist es Jacke wie Hose! Ich löte halt nicht gerne -
ist mir zu frickelig. Habe keine ruhige Hand für sowas, sondern
programmiere lieber.
So, beide Programme in eines zusammengepackt und ein paar Kleinigkeiten
angepasst und schon funktioniert das Modul, so wie ich möchte.
Habe mir das Datenblatt vom TM1637 mal mit Google übersetzen lassen. Der
kann neben den 6 Ziffern wohl auch noch bis zu 16 Tastern auslesen!
Hauptsächlich ist der laut Hersteller wohl in Mikrowellen-Herden und
Induktions-Kochplatten verbaut. Also wenn ich die nächste defekte
Mikrowelle mit Display sehe, werde ich mal schauen, ob sich das Display
noch verwerten lässt ;)