12 U/f-Wandler auslesen

Gast #6057993
Lesenswert?

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.
Gast #6058004
Lesenswert?

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!
Gast #6058006
Lesenswert?

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.
Gast #6058338
Lesenswert?

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
#6058464
Lesenswert?

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).
Gast #6058569
Lesenswert?

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.
Gast #6058983
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren