Hallo, ich habe hier eine alte AD-Karte auf der zwölf AD654 verbaut sind. (https://www.analog.com/media/en/technical-documentation/data-sheets/AD654.pdf) Die maximale Frequenz pro Kanal liegt bei 4 kHz. Ich würde gerne die negativen/positiven Flanken zählen und anschließend auf einem Webserver(wie das geht ist mir klar) anzeigen lassen. Jetzt zur Frage: Wie kann ich dies am besten mit einem Mikrocontroller bewerkstelligen? Ich habe hier ein paar Arduinos(Due,Nano,IoT33) und ein STM32F401RE Board rumliegen.
Was ist denn die niedrigste Frequenz und wie hoch soll die Auflösung sein? Der STM32F401 bietet die einfachste Lösung: drei Timer mit jeweils vier Capture-Eingängen (z.B. TIM2 - TIM4) liefern die Periodendauer, die sich leicht umrechnen läßt. Nix pollen!
Paul schrieb: > Wie kann ich dies am besten mit einem Mikrocontroller bewerkstelligen? Verteile deine 12 Signale auf zwei GPIO Ports, lies die interruptgesteuert alle 100µs ein, erkenne durch Vergleich mit dem vorherigen Zustand die Flanken. Dann musst du sie nur noch zählen und die 12 Zählerstände für den Webserver zur Verfügung stellen.
m.n. schrieb: > Was ist denn die niedrigste Frequenz und wie hoch soll die > Auflösung > sein? > > Der STM32F401 bietet die einfachste Lösung: drei Timer mit jeweils vier > Capture-Eingängen (z.B. TIM2 - TIM4) liefern die Periodendauer, die sich > leicht umrechnen läßt. > Nix pollen! Die niedrigste Frequenz liegt irgendwo um die 10 Hz. Ich möchte jede negative bzw. positive Flanke erkennen. Also von 10 Hz bis 4 kHz. Der Ausgang der AD654 ist immer für ~1-5 Sekunden aktiv
Es reicht, nur die negativen oder nur die positiven Flanken auszuwerten. Wenn Du Beide auswerten willst, mache es. Der 401 schafft es.
Paul schrieb: > Ich würde gerne die > negativen/positiven Flanken zählen Da der IC eine Frequenz ausgibt, sollte man auch über die Periodendauer messen und nicht nur über die Pulsbreite. Solche ICs haben oft einen hohen Jitter, daher sollte man über mehrere Perioden messen, um einigermaßen Auflösung zu erhalten. Solche Notlösungen würde ich heutzutage aber nicht mehr einsetzen. Es gibt reichlich echte 16Bit ADCs mit Eingangsmultiplexer. Ich nehme gerne den MAX1300 (±16.5V Overvoltage Tolerant Inputs).
:
Bearbeitet durch User
Peter D. schrieb: > Da der IC eine Frequenz ausgibt, sollte man auch über die Periodendauer > messen und nicht nur über die Pulsbreite. Das hängt aber auch davon ab, welche Auflösung und Messzeit man haben will oder muss. Im Notfall kann man dann Frequenz und Periodendauer messen und je nach Ergebnis den besseren Wert nehmen.
Dietrich L. schrieb: > Im Notfall kann man dann Frequenz und Periodendauer messen und je nach > Ergebnis den besseren Wert nehmen. Steht denn im Datenblatt auch eine Formel für die Pulsdauer bezüglich der Eingangsspannung? Ich würde nur die Größe auswerten, die auch explizit lt. Datenblatt dafür vorgesehen ist.
:
Bearbeitet durch User
Peter D. schrieb: > Pulsdauer Hier geht es um die Periodendauer, nicht Pulsdauer. Natürlich hängt das Ergebnis auch davon ab, wie stabil die Frequenz ist. Ich habe jetzt nicht nachgeschaut, ob da was beim AD654 spezifiziert ist. Außerdem: man muss ja nicht unbedingt die Dauer einer Periode messen, es dürfen auch mehrere sein.
Dietrich L. schrieb: > Hier geht es um die Periodendauer, nicht Pulsdauer. Deshalb hab ich doch gesagt, daß man nicht negative und positive Flanken zählen sollte.
Peter D. schrieb: > Dietrich L. schrieb: >> Hier geht es um die Periodendauer, nicht Pulsdauer. > > Deshalb hab ich doch gesagt, daß man nicht negative und positive Flanken > zählen sollte. Zählen darf man sie schon (auch wenn es unnütz ist), aber man darf halt nicht die Zeit zwischen negativer und positiver Flanke messen ;-)
Peter D. schrieb: > Dietrich L. schrieb: >> Hier geht es um die Periodendauer, nicht Pulsdauer. > > Deshalb hab ich doch gesagt, daß man nicht negative und positive Flanken > zählen sollte. Ich möchte aber gerne die negativen Flanken zählen. Das alte Interface bestand aus einem kaskadierten 3-Digit BCD-Counter, der eben genau die Anzahl der negativen Flanken anzeigt, weil er bei einer negativer Flanke zählt. Mir geht es nicht um die Frequenz als solche.
Paul schrieb: > Ich möchte aber gerne die negativen Flanken zählen. Das alte Interface > bestand aus einem kaskadierten 3-Digit BCD-Counter, der eben genau die > Anzahl der negativen Flanken anzeigt, weil er bei einer negativer Flanke > zählt. Das ist ja auch egal, ob du die positiven oder die negativen Flanken zählst. Nur beide macht keinen Sinn.
Brachial-Bernd schrieb: > STM32F401RE Lustig, der hat 16 gemultiplexte ADC-Kanäle. Wozu noch die U-f-Karte? mfg mf
m.n. schrieb: > Sondern? Hatte ich schon vermutet: Es geht darum, bis zu 12 Spannungsmessungen zu verarbeiten. Die ominöse Messkarte hat dooferweise U-zu-f-Wandler...
Mit dem Arduino geht das auch, wenn man etwas mehr an der Hardware arbeitet. Die AVRs können Pin Change Interrupt, mit einer ISR pro Port bzw. Interrupt Gruppe. Da würde ich mir zwei Ports nehmen (16 Eingänge). In der ISR dann jeweils ermitteln welcher Pin die fallende Flanke ausgelöst hat und hochzählen. Dazu braucht man einen Zwischenspeicher, die Interrupts sagen leider nicht von sich aus welcher Pin das war.
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.