Forum: Mikrocontroller und Digitale Elektronik 12 U/f-Wandler auslesen


von Paul (Gast)


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.

von Brachial-Bernd (Gast)


Lesenswert?

Nimm einfachen den STM32F401RE und polle jeden Kanal einzeln.

von m.n. (Gast)


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!

von Wolfgang (Gast)


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.

von Paul (Gast)


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

von m.n. (Gast)


Lesenswert?

Es reicht, nur die negativen oder nur die positiven Flanken auszuwerten. 
Wenn Du Beide auswerten willst, mache es. Der 401 schafft es.

von Peter D. (peda)


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).

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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
von Dietrich L. (dietrichl)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Dietrich L. (dietrichl)


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.

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 ;-)

von Paul (Gast)


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.

von Dietrich L. (dietrichl)


Lesenswert?

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.

von minifloat (Gast)


Lesenswert?

Brachial-Bernd schrieb:
> STM32F401RE

Lustig, der hat 16 gemultiplexte ADC-Kanäle.
Wozu noch die U-f-Karte?

mfg mf

von m.n. (Gast)


Lesenswert?

Paul schrieb:
> Mir geht es nicht um die Frequenz als solche.

Sondern?

von minifloat (Gast)


Lesenswert?

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...

von Andre (Gast)


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.

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
Noch kein Account? Hier anmelden.