Forum: Mikrocontroller und Digitale Elektronik A-/D Wandler an ARM9


von Melanie (Gast)


Lesenswert?

Hallo,

es sollen Spannungspegel von Thermopiledetektoren gemessen werden. Diese 
werden zunächst verstärkt und sollen dann mit einem Mikroprozessor 
ausgewertet werden.
Dabei handelt es sich um einen AT91SAM9261 auf dem ein in C 
geschriebenes Programm unter Linux läuft.
Was dazwischen nun fehlt sind A-/D Wandler.
Bisher wurde eine NI Messkarte verwendet, dessen ADC eine 16bit 
Auflösung hat. Benötigt werden 100 - 200 SPS - die Pegel ändern sich mit 
Frequenzen von 1-5 Hz.
Hat jemand Anregungen welche Wandler geeignet wären?
Mal angenommen passende ADCs wurden gefunden, wie sieht die Verbindung 
genau aus? Also wie kann das Ergebnis der AD-Wandlung mit dem C-Programm 
gelesen werden? Wird ein Ausgangspin des ADCs mit einem GPIO des 
µProzessors verbunden? Außerdem sollen mehrere unterschiedliche 
Spannungen gemessen werden. Sollte man mehrere 1Kanal oder 2 bzw. 
Mehrkanal-ADCs verwenden?

Gruß
Melly

von Robert T. (robertteufel)


Lesenswert?

Melanie schrieb:

> Mal angenommen passende ADCs wurden gefunden, wie sieht die Verbindung
> genau aus? Also wie kann das Ergebnis der AD-Wandlung mit dem C-Programm
> gelesen werden? Wird ein Ausgangspin des ADCs mit einem GPIO des
> µProzessors verbunden? Außerdem sollen mehrere unterschiedliche
> Spannungen gemessen werden. Sollte man mehrere 1Kanal oder 2 bzw.
> Mehrkanal-ADCs verwenden?
>
> Gruß
> Melly

Die externen Wandler gibt es mit SPI oder einem Adr/Datenbus. Falls es 
SPI ist, dann gibt der Wandler einen Interrupt sobald ein Ergebnis 
bereit steht auf einen Ausgang, der mit einem Interrupt Pin des 9261 
verbunden sein muss. Ueber das SPI Interface liesst Du dann das 
Ergebnisregister aus.

Alternativ, groessere Bauform und eher nicht so geeignet ist ein ADC mit 
eigenem Datenbus. Dieser Ansatz ist bei Hochgeschwindigkeitswandlern 
wichtig, denn dort koennte SPI zum Flaschenhals werden, also nicht 
gerade Deine Anwendung.

Solche Wandler gibts von Analog Devices, Maxim und noch einigen mehr.

Gruss, Robert

von Melanie (Gast)


Lesenswert?

Wenn man z.B. mehrere ADS7813 ADCs verwenden möchte, benötigt man dafür 
4 + Anzahl der Wandler Pins am µP (bei 8 Wandlern z.B. 12), richtig?

So wie ich das Datenblatt verstanden habe braucht man

conv um eine Umwandlung zu starten
busy zeigt an, dass eine Umwandlung im Gange ist
Data stellt die Daten bereit
und über Dataclk wird der Takt vom µP vorgegeben
weiterhin noch ein chipselect bin zur Auswahl des ADCs

Wenn man nun vom µP die vier Pins mit jeweils allen Wandlern verbindet 
und zusätzlich an verschiedenen Pins jeweils CS der ADcs verbindet 
sollte das funktionieren?

Wäre die Vorgehensweise dann so?:

Pin für AD-Wandler setzen somit ist cs beim entsprechenden ADC gesetzt.
delay?
pin conv setzen 0
delay?
busy pin überprüfen? auf 0
delay?
busy pin überprüfen? auf 1
delay?
daten von pin lesen
conv auf 1
cs auf 1

Beim Lesen habe ich was davon gelesen, dass nur 1 Byte = 8 Bit 
übertragen wird aber man braucht hier 2 Byte=16 Bit?!

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.