Ich möchte mit dem Raspberry Pi auf 8 oder mehr Kanälen die Frequenz messen und logen. Der Frequenzbereich der Signale liegt bei etw. 50-1000 Hz. Es sollen 5 bis 10 Werte pro Sekunde ermittelt werden. Da ich den Pi benutze ist das mit der Frequenzmessung schon mal nicht so leicht wie bei einem µC und selbst wenn das geht, geht es schon mal nicht auf 8 Kanälen gleichzeitig. Ich suche daher eine Fertige Schaltung, die diese Aufgabe übernimmt und mit dem Pi via UART SPI oder I²C kommuniziert. Kennt da jemand was passendes?
:
Bearbeitet durch User
http://abyz.me.uk/rpi/pigpio/examples.html Joan hat hier zwei Beispiele "Frequency counter" 1 und 2 in C Im Raspi-Forum gab es auch einen Thread https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=78835&p=1541383&hilit=frequency+counter#p1541383 Externe Frequenzzählermodule haben normalerweise schon Displays und keinen Datenausgang, https://www.lcd-module.de/produkte/funktion.html und für 8 Stück wir das etwas kostspielig. Vielleicht gibt es ein Arduino-Programm.
:
Bearbeitet durch User
Christoph db1uq K. schrieb: > Externe Frequenzzählermodule haben normalerweise schon Displays und > keinen Datenausgang Och, die Module von m.n. (http://mino-elektronik.de/) können den Meßwert per UART ausgeben. Muß man bloß noch mit dem RasPi verknüppern. OK, bei 16 Kanälen ist UART eine eher blöde Schnittstelle. Sollte besser ein serieller Bus sein. Könnte man sicher umstricken, macht aber Arbeit.
Axel S. schrieb: > OK, bei > 16 Kanälen ist UART eine eher blöde Schnittstelle. Kommt darauf an, Joachim J. schrieb: > Ich möchte ... auf 8 oder mehr Kanälen die Frequenz messen und logen. ...wie oft pro Zeiteinheit neue Werte gemessen und gesendet werden sollen, diese Info sehe ich bisher nirgendwo.
Uwe B. schrieb: > Sample einen 8 Gpio Pins mit 2 KHz und zaehle entsprechen hoch. Der Pi ist kein Mikrocontroller! Sampeln mit 2 KHz ist da fast nicht möglich. Mann hat keinen direkten Zugriff auf Teimer und kann somit auch keine festen Sampel rate realisieren.
M.A. S. schrieb: > Axel S. schrieb: >> OK, bei >> 16 Kanälen ist UART eine eher blöde Schnittstelle. > > Kommt darauf an, > > Joachim J. schrieb: >> Ich möchte ... auf 8 oder mehr Kanälen die Frequenz messen und logen. > ...wie oft pro Zeiteinheit neue Werte gemessen und gesendet werden > sollen, diese Info sehe ich bisher nirgendwo. korrekt habe ich vergessen. es sollten schon 5 bis 10 Werte pro Sekunde sein.
:
Bearbeitet durch User
mino hat auch einen reziproken Zähler, das wäre günstig für die niedrige Frequenz und kurze Messzeit. 19,2kBd ist aber etwas langsam um mehrere abzufragen.
Christoph db1uq K. schrieb: > Vielleicht gibt es ein > Arduino-Programm. Ein Atmega 318 hat bis zu 23 (22 Ohne Reset) Pins mit Pin Change Interrupt. Worst case hast du 1kHz 8 Kanäle 2 Interrupts = 16kHz, d.h. bei 16MHz Systemtakt solltest du bei deutlich unter 1000 Instructions in der ISR bleiben. wenn du in der ISR nur Zeit (ein Timer als Systemtakt) und veränderten Pin in einen Buffer schreibst, sollte das in ca. 30-40 Zyklen erledigt sein. ergibt eine Jitter von 2-3µs worst case. oder du nimmst einen Timer mit externem Takt, davon hat ein Mega328 zwei und ein Tiny85 z.b. einen (Tiny 13 hat einen timer zu wenig für die Zeitbasis). Braucht zwar mehr µC, dafür wirds genauer und muss (sollte) nicht in C oder ASM programmiert werden Was auch wichtig zu Wissen wäre, soll das Ding die Frequnez gemittlet seit der letzten Ausgabe, gemittelt über z.b. 1s oder nur errechnet aus dem letzten Takt ausgeben?
Ich hatte gehofft es gibt da vielleicht ein Fertiges Modul mit dem ich viel Zeit und Arbeit sparen könnte. Ich kann mir natürlich auch einfach ein Mikrokontroller Bord besorgen und was Programmieren. Sollte nicht so schwer sein. Ich bitte euch daher nur noch Hinweise auf Fertiges Modul zu Posten. sollte für mich nichts dabei sein, werde ich es dann halt selber bauen.
:
Bearbeitet durch User
Joachim J. schrieb: > Ich hatte gehofft es gibt da vielleicht ein Fertiges Modul mit dem ich > viel Zeit und Arbeit sparen könnte. Spontan fallen mir dazu diese billigen 8CH Logic Analysatoren ein. Die lesen 8 Kanäle in regelmäßigen Intervallen ein und liefern die Rohdaten als USB Stream an den Rechner. Passende Software findest du unter dem Namen "sigrok", allerdings ist die für einen anderen Anwendungsfall gedacht. Vielleicht kannst du trotzdem Teile von dessen Quelltext gebrauchen. https://sigrok.org/wiki/Getting_started_with_a_logic_analyzer
Axel, Christoph, danke für die Blumen ;-) @TO Wie genau sollen denn die Ergebnisse sein? Eine Lösung für 4 Kanäle gibt es fertig; diese läßt sich auch auf > 8 Kanäle erweitern: Beitrag "4-Kanal Drehzahlmessung mit ATmega88". Damit werden 4-5-stellige Ergebnisse erreicht. Die Ausgabe könnte man per IIC-Bus erledigen. Joachim J. schrieb: > Ich kann mir natürlich auch einfach > ein Mikrokontroller Bord besorgen und was Programmieren. Sollte nicht so > schwer sein. Nur zu!
Stefanus F. schrieb: > Joachim J. schrieb: >> Ich hatte gehofft es gibt da vielleicht ein Fertiges Modul mit dem ich >> viel Zeit und Arbeit sparen könnte. > > Spontan fallen mir dazu diese billigen 8CH Logic Analysatoren ein. Die > lesen 8 Kanäle in regelmäßigen Intervallen ein und liefern die Rohdaten > als USB Stream an den Rechner. Passende Software findest du unter dem > Namen "sigrok", allerdings ist die für einen anderen Anwendungsfall > gedacht. Vielleicht kannst du trotzdem Teile von dessen Quelltext > gebrauchen. > > https://sigrok.org/wiki/Getting_started_with_a_logic_analyzer gute Idee! Das könnte Funktionieren. Danke
Joachim J. schrieb: > 50-1000 Hz. > Es sollen 5 bis 10 Werte pro Sekunde ermittelt werden. Dann kannst du keine Zähler verwenden - bei 50 Hz und 10 Messungen/Sek sind da gerade 5 Perioden zu zählen, m.a.W. der Fehler beträgt +-20%, die Messung ist unbrauchbar. In dem Fall muss Periodendauermessung angewendet werden. Georg
Stephan schrieb: > Wusste gar nicht das die auch als 8 Kanal Zähler laufen können. Was man aus den Signalen macht, ist eine rage der Software. PulseView zeigt die Periodendauer an, also kann man wohl auch die Frequenz berechnen - irgendwie.
Na dann. USBEE konnte das nicht, soweit ich das noch weis. Habe den AX Pro selten benutzt.
Wenn das immer noch die Cypress Dinger sind, wird er es kaum hin bekommen. Die Dinger sind von Hause aus doof. Der Cypress bekommt seine Soft beim Start des Programms auf dem PC per USB. Deswegen liefen die ja mit etlichen Softwaresuiten. USBEE, Saleae etc.pp War ja nur eine Frage der VID.
Joachim J. schrieb: > Ich bitte euch daher nur noch Hinweise auf Fertiges Modul zu Posten. > sollte für mich nichts dabei sein, werde ich es dann halt selber bauen. Zu den meisten vorgeschlagenen Mikrocontrollern lassen sich fertige Module oder Evalboards finden. Und wenn nicht zu genau einem bestimmten Typ dann oft zu einem kompatiblen aus der selben Familie.
Bei max. 1000 Hz könnte es auch ein 8 bzw. 16 Kanal USB Audio-Interface tun.
Joachim J. schrieb: > Der Frequenzbereich der Signale liegt bei etw. 50-1000 Hz. > Es sollen 5 bis 10 Werte pro Sekunde ermittelt werden. Dann geht am besten irgend ein Cortex M3 mit 8 Capture-Eingängen, denn man muß reziprok messen.
Peter D. schrieb: > Dann geht am besten irgend ein Cortex M3 mit 8 Capture-Eingängen, denn > man muß reziprok messen. Reziprok sowieso. Für 4 Eingänge hätte ich auch etwas Fertiges: http://mino-elektronik.de/FM_407/fmeter_407.htm#a1 Die Vorteiler kann man ja weglassen. Sehr einfach und skalierbar wäre eine Schaltung mit kleinem AVR, der schon ein TWI als Hardware auf dem Chip hat. Da reicht pro Kanal der µC mit hinreichend stabilem Takt (Quarz); an freien Pins wird die IIC-Adresse eingestellt. Ob man 1, 8 oder 16 Kanäle braucht, Schaltung und Programm bleiben gleich und beim Auslesen ändert sich nur die IIC-Adresse. Aber was genau gebraucht wird, ist ja noch unbekannt.
Joachim J. schrieb: > Da ich den Pi benutze ist das mit der Frequenzmessung schon mal nicht so > leicht wie bei einem µC und selbst wenn das geht, geht es schon mal > nicht auf 8 Kanälen gleichzeitig. Doch, klar geht das. Du musst nur auf Linux verzichten, also bare metal programmieren. Dann geht das. Sogar völlig problemlos. Die Hardware kann noch weit mehr als nur das. Das ist völlig unkritische Kinderkacke für diese Hardware.
c-hater schrieb: > Du musst nur auf Linux verzichten, also bare metal programmieren. Wie realistisch findest du deinen eigenen Vorschlag?
Stefanus F. schrieb: > c-hater schrieb: >> Du musst nur auf Linux verzichten, also bare metal programmieren. > > Wie realistisch findest du deinen eigenen Vorschlag? Wie realistisch war es vor Linux, Arduino und Co? Einen Port einzulesen, das Ergebnis zu speichern und erneut zu lesen ist kein Hexenwerk. Zumal es hier nicht um sonderlich hohe Frequenzen geht.
Stefanus F. schrieb: > c-hater schrieb: >> Du musst nur auf Linux verzichten, also bare metal programmieren. > > Wie realistisch findest du deinen eigenen Vorschlag? Meinst du jetzt bezüglich der prinzipiellen Machbarkeit oder bezüglioch der Machbarkeit durch den TO?
c-hater schrieb: >> Wie realistisch findest du deinen eigenen Vorschlag? > > Meinst du jetzt bezüglich der prinzipiellen Machbarkeit oder bezüglioch > der Machbarkeit durch den TO? Ich meine, wie realistisch das Vorhaben ist, einen Raspberry Pi bare-metal zu programmieren. Dafür gibt es andere besser geeignete Boards.
Stefanus F. schrieb: > Ich meine, wie realistisch das Vorhaben ist, einen Raspberry Pi > bare-metal zu programmieren. Absolut realistisch. Mache ich selber seit ca. zwei Jahren. Ich kann die gesamte verfügbare Hardware nutzen, die Grafik allerdings nur eingeschränkt, nur als simples Framebuffer-Device. Alle Grafik-Beschleuniger kann ich nicht benutzen. Das liegt wohl vor allem daran, dass ich sie für meine Anwendungen schlicht nicht benötige und deswegen bisher keinen Anlass sah', mich damit auseinander zu setzen... Übrigens war es garnicht so schwer, diesen Stand zu erreichen. Alle wesentlichen Informationen (mit Ausnahme der Grafik) kann man doch den Quelltexten der Linux-Systeme entnehmen. Da ist also nichtmal reverse engineering erforderlich.
c-hater schrieb: >> Ich meine, wie realistisch das Vorhaben ist, einen Raspberry Pi >> bare-metal zu programmieren. > > Absolut realistisch. Mache ich selber seit ca. zwei Jahren. Das ist doch mal ne Hausnummer. Du hast also zwei Jahre dafür gebraucht ;-) An anderer Stelle werden hier Links gezeigt, unter denen fertige Arduino Nano Boards für ca. € 2 zu erhalten sind, die sogar mit einem Quarz bestückt sind. Da ist der Aufwand doch wesentlich geringer, ein Programm für den Nano zu schreiben - je nach Anforderung für 1 - 8 Kanäle - und dann entsprechend viele Boards parallel zu betreiben. Der zeitliche Aufwand dürfte geringer sein, als allein den Bootvorgang beim RPi nachzuvollziehen.
m.n. schrieb: > An anderer Stelle werden hier Links gezeigt, unter denen fertige Arduino > Nano Boards für ca. € 2 zu erhalten sind, die sogar mit einem Quarz > bestückt sind. Da ist der Aufwand doch wesentlich geringer, ein Programm > für den Nano zu schreiben Deswegen kam ich auf die 8CH Logic Analyzer mit dem Cypress Chip. Da ist nämlich auch alles drin, samt R/C Filter und Firmware.
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.