Homepage Wiki Forum Buy

AD Wandler

Aus GNUBLIN

Schwierigkeitsgrad Voraussetzung Gnublin Familie
Gnublin logo easy.png Grundkenntnisse Konsole Alle

Inhaltsverzeichnis

Quickstart

Sollten die vorhandenen Analog-Digital-Wandler Schnittstellen von GNUBLIN alle belegt sein, so kann man das Board mithilfe des ads7830 Bausteins um weitere 8 Analoge Eingägne erweitern.Der AD-Wandler wird über die I²C (TWI) Schnittstelle angesteuert. Die Adresse des Chips kann über die Adresspins (A0, A1) abgeändert werden.

Im folgenden Artikel wird beschrieben wie man den Baustein, der auf dem ADC-Modul verbaut ist, mit GNUBLIN ansteuert.

Gnublin adc3.jpeg


Auslesen Spannung an Kanal 1:

root@gnublin:~# gnublin-adcmod -c 1


Auslesen Spannung an Kanal 2:

root@gnublin:~# gnublin-adcmod -c 2

usw.

Als Referenzspannung bei der Verwendung des GNUBLIN-Tools ist aktuell 2,5V eingestellt, d.h. der Jumper für die Referenzspannung darf nur bei REF_IN gesetzt sein.

Für Anfänger

Um die Übertragung über den i2c-Bus sicher zu gewährleisten, sind zwischen der Datenleitung SDA und der Clock SCL jeweils Pull-Up Widerstände auf 3,3V á 4,7kOhm, wie im Bild gezeigt, anzubringen.


BILD I2C-BUS.png



Zuerst wird das Modul angeschlossen. Man muss dabei nur beachten, dass das Flachbandkabel mit dem roten Kabel in Richtung der SD Karte zeigt.

Für einfache und schnelles Auslesen von Spannungen wurde ein kleines Programm implementiert. Das Programm für den AD-Wandler ist in der Distribution bereits vorinstalliert.

Das installierte Programm wird so aufgerufen:

root@gnublin:~# gnublin-adcmod -c X

Kanal X wird augelesen. Dabei is X eine Zahl zwischen 1 und 8.

Wichtig ist, dass die Masse des zu messenden Signals mit GND des ADCs verbunden wird.

Adresse des Moduls

Wie schon erwähnt besitzt der ads7830 zwei Adress Pins über welche die Adresse des Bausteins eingestellt werden kann.

A0 A1 I2C-Adresse
GND GND 0x48
VCC GND 0x49
GND VCC 0x4A
VCC VCC 0x4B

Zu beachten ist, das man auch die richtige Adresse am Modul einstellt bzw. die richtige Addresse als Option mitgibt. Standardmäßig wird die Adresse 0x48 verwendet.

Will man z.B. die Spannung des Moduls mit der Adresse 0x49 am Eingang 1 lesen, so gibt man folgendes ein:

root@gnublin:~# gnublin-adcmod -c 1 -a 49

Ist man sich mit der Adresse des Bausteins nicht sicher, dann einfach mit den I2C Tools nachfragen:

root@gnublin:~# i2cdetect -y 1

Differentielle Messung

Der ADC bietet einem auch die Möglichkeit den Spannungsunterschied zwischen zwei Pins zu messen. Gemessen wird die Spannungsdifferenz jeweils zwischen zwei benachbarten Pins. Dabei wird Kanal 1 als Parameter übergeben:

root@gnublin:~# gnublin-adcmod -c 1 -d

Mit diesem Befehl wird die Spannungsdifferenz zwischen Pin 1 und 2 gemessen. -d aktiviert die differentielle Messung wobei als erster Kanal der mit -c angegebene Kanal verwendet wird. Der zweite Kanal wird dann automatisch gewählt.

Folgende Kanalkombinationen sind möglich:

Kanal 1 Kanal 2
1 2
3 4
5 6
7 8

Wichtig ist auch hier, dass die Masse der beiden zu Messenden Signale mit GND des ADCs verbunden sind.

Weitere Befehle

Eine Übersicht über alle Befehle des GNUBLIN-Tools erhält man mit der Hilfefunktion:

root@gnublin:~# gnublin-adcmod -h
This Script prints out the value of a selected adc-channel of the gnublin-adc-module
-h Show this help
-b show raw output
-j Convert output to json format
-c <x> Select ADC Channel (1 - 8 possible, default is 1)
-d enables differential mesurement between pears, only possible [1,2], [3,4], [5,6] [7,8]
first channel is given by -c, second channel is selectet automaticaly
-a <ADDRESS> I2C-Address of the module (default is 0x48)
Example:
channel=2, I2C-Address=0x48 print value in json format:
gnublin-adcmod -j -a 0x48 -c 2
channel=7, I2C-Address=0x4A print value in normal format:
gnublin-adcmod -a 0x4A -c 7


Für Fortgeschrittene

Informationen zum Aufbau

Ist man mit der ganzen Schaltungsaufbau Thematik von AD-Wandlern schon etwas mehr vertraut, so kann man sich das Modul auch selber zusammen bauen. Hierfür gibt es einen Link zu unserem Schaltplan. Zudem wurde die Pinbelegung, die auch im Datenblatt zu finden ist nochmal aufgezeichnet.

Spannungsversorgung

Die Spannungsversorgung des ADCs ligt bei: 2.7 V - 3.6 V

Referenzspannung

Der ads7830 bietet zum einen die Möglichkeit diesen Pin über einen Kondensator (1 uF) gegen Masse zu schalten (Vref Pin-->Kondsator-->Masse), wobei dieser dann mit der internen Referenzspannung von 2.5 V arbeitet. Zum anderen kann man an diesem Pin auch eine externe Referenzspannung angelegen, wobei die Grenzen von 0,05 V - Vdd eingehalten werden müssen.

Auf dem Modul befinden sich zwei Jumper, die das einstellen der Referenzspannung erlauben. Der Jumper mit der Kennzeichnung REF_IN setzt wie oben beschrieben die Referenzspannung auf die internen 2,5V. Der andere Jumper mit der Kennzeichnung REF_3.3V setzt die Referenzspannung auf die 3,3V der Versorgungsspannung.

Achtung: Es darf immer nur ein Jumper gesetzt sein!

Störungen

Es wurde festgestellt, dass der Baustein sehr sehr sensibel auf Störungen der Eingangsspannung reagiert! Der Fehler macht sich durch starkes Schwanken des ADC Wertes bemerkbar.

Treiber

Der Treiber für den ads7830 musste leicht von Treiber des ads7828 abgeändert werden. Der einzige unterschied zwischen diesen beiden Modulen ist die Auflösung (ads7830 = 8 Bit, ads7828 = 12 Bit). Hierzu wurde einfach nur der Registerzugriff auf 8 Bit beschränkt. Der Treiber ist schon in den Comunity Kernel integriert worden. Ist man nicht Besitz des Community Kernels so kann man sich den Treiber [hier] herunterladen.

Ansteuerung des Bausteins

Für die Ansteuerung gibt es 3 verschiedene Wege:

1. Direktes Ansteuern über den I²C Bus in C
2. Direktes Ansteuern über den I²C Bus mit den I2C-tools
3. Ansteuern des Bausteins über den Treiber


Den Baustein über den Treiber anzusteuern, erspart dabei etwas Aufwand und ist auch der konventionelle Weg, welchen man einschlagen sollte.

Der Treiber des ads7830 stellt im sysfs für jeden AD-Pin des Bausteins sog. Treiber Attribute zur verfügung. Dies sind Dateien die ähnlich wie Device-Files als Schnittstelle des Treibers fungieren. Dies Dateien werden dann einfach per fread ausgelesen und veranlassen den Treiber somit den digitalisierten Spannungswert von Hardware in das Attribut zu legen.

In anderen Sprachen