Ausgabe 28, März 2001

INTERFACE

USB Analog-Interface und Entwicklungssystem


Die Hardware

Das Interface verwendet den AD-Wandler MAX186 an einem USB-Controller AN2121. Die Datenübertragung zum und vom Wandler erfolgt über den USB-Bus, wobei die PC-Software zunächst ein Betriebsprogramm in den Controller lädt und startet. Diese Art der Initialisierung gestattet bei Bedarf ein einfaches Software-Update.

Abb. 1 Das Entwicklungssystem SERAI-USB

Die Stromversorgung erfolgt durch den USB Anschluss, so dass keine zusätzliche Spannungsversorgung nötig ist. Alle Eingänge des AD-Wandlers sind durch Vorwiderstände gegen Überspannungen geschützt. Die Eingänge liegen an einem 10-poligen Pfostenstecker, der auch die interne Referenzspannung von 4,095V zur Verfügung stellt. Zum Betrieb des Wandlers steht eine umfangreiches Windows-Programm zur Verfügung. Die eigene Programmierung ist möglich und wird in dem Franzis-Buch "Messen, Steuern und Regeln mit USB" beschrieben.

Die technische Daten des AD-Wandlers (Max186) sind in Tabelle 1 zusammengefasst. Alle Anschlüsse des Entwicklungssystems sind an doppelten Pfostenfeldstecker ausgeführt.

 Messbereich            0...4095 mV

 Auflösung              1 mV, 12 Bit

 Eingangswiderstand     > 10 M

 Linearität             +/- 1 LSB

 Eingangskanäle         8

 Wandlungszeit         10 µs ... 1 ms

                        

  

Tab. 1: Technische Daten des AD-Wandlers (Max186)

Erstinstallation des USB-Treibers

Auf der Diskette, die bei der Auslieferung der Hardware mitgeliefert wird, befindet sich der USB-Treiber EZUSB.SYS für Windows 98 und die entsprechende INF-Datei EZUSB.INF. Der Treiber kann aber auch aus dem Internet geladen werden. Beim ersten Anschluss des Geräts an den USB erkennt Windows ein neues USB-Gerät und sucht den passenden Treiber. Bei erfolgreicher Installation erkennt man in Windows-Gerätemanager das neue USB-Gerät. Bei jedem folgenden Anschluss erfolgt die Installation vollautomatisch

Der EZUSB-Controller meldet die Vendor-ID 0547h und die Product-ID 02131h bzw. 02121h an das Betriebssystem, um den passenden Treiber zu laden. Je nach Software-Initialisierung kann der Anwender ein eigenes Betriebssystem mit neuen IDs und einem neuen Treiber laden.

Der Anwender kann den EZUSB-Treiber mit eigener Software ansteuern, um z.B. den I²C-Bus und die Ports einzusetzen. Das EEPROM auf dem Board kann über den Prozessor selbst mit neuen Daten gefüllt werden, um eine veränderte Enumeration zu erzwingen. Im Auslieferungszustand ist das EEPROM für das reine Analog-Interface nicht bestückt, im Entwicklungssystem ist es gelöscht und enthält ausschließlich FFh.

Erstinstallation des USB-Treibers

Auf der Diskette, die bei der Auslieferung der Hardware mitgeliefert wird, befindet sich der USB-Treiber EZUSB.SYS für Windows 98 und die entsprechende INF-Datei EZUSB.INF. Der Treiber kann aber auch aus dem Internet geladen werden. Beim ersten Anschluss des Geräts an den USB erkennt Windows ein neues USB-Gerät und sucht den passenden Treiber. Bei erfolgreicher Installation erkennt man in Windows-Gerätemanager das neue USB-Gerät. Bei jedem folgenden Anschluss erfolgt die Installation vollautomatisch

Der EZUSB-Controller meldet die Vendor-ID 0547h und die Product-ID 02131h bzw. 02121h an das Betriebssystem, um den passenden Treiber zu laden. Je nach Software-Initialisierung kann der Anwender ein eigenes Betriebssystem mit neuen IDs und einem neuen Treiber laden.

Der Anwender kann den EZUSB-Treiber mit eigener Software ansteuern, um z.B. den I²C-Bus und die Ports einzusetzen. Das EEPROM auf dem Board kann über den Prozessor selbst mit neuen Daten gefüllt werden, um eine veränderte Enumeration zu erzwingen. Im Auslieferungszustand ist das EEPROM für das reine Analog-Interface nicht bestückt, im Entwicklungssystem ist es gelöscht und enthält ausschließlich FFh.

Das Anwendungsprogramm SERAI8/12-USB

Das Programm Serai8/12 USB wurde von H.-J. Berndt geschrieben. Es steht in einer Reihe mit weiteren Serai-Programmen (Serielles Analog Interface) für spezielle Analog-Interfaces an der seriellen Schnittstelle. Das Programm befindet sich in ausführbarer Form auf der CD, die dem Buch beiliegt oder kann aus dem Internet geladen werden. Die Software kann ohne die Hardware in einem Simulationsmodus verwendet werden. Das Programm besitzt ähnliche Menüs wie das Compact2000 vom gleichen Autor. Auch hier können gemessene Daten mit externen Programmen weiter verarbeitet werden.

Beim Start lädt das Programm das Binärfile EZAD.BIN in den Controller. Diese Firmware ermöglicht die Ansteuerung des AD-Wandlers und die Übertragung von Daten.

Abb. 2 Die Übersicht aller acht Kanäle

Die Software besitzt ein Menü zur Auswahl von drei Grundfunktionen. In der Übersicht werden alle acht Kanäle direkt angezeigt (Abb. 2). Neben der Zeigerdarstellung erhält man eine einfache Balkenanzeige und eine Digitalanzeige. Entsprechend der Auflösung von 12 Bit hat die digitale Ausgabe einen Wertebereich von 0 bis 4095, zeigt also die Spannung in Millivolt.

Abb. 3: Messung im Zeit-Diagramm

In der Diagramm-Funktion (Abb. 3) werden zunächst alle acht Kanäle mit einstellbarer Geschwindigkeit gemeinsam gemessen. Der Anwender kann jedoch nachträglich alle Kanäle einzeln und in beliebiger Kombination betrachteten. Außerdem lassen sich alle Daten mit einer speziellen Schaltfläche in die Zwischenablage kopieren, um sie z.B. in Excel weiter zu verarbeiten.

Die Diagrammausgabe

Abb. 4: Datenauswertung in Excel

Gemessene Daten können im Tabellenformat (Abb. 4) mit einem Mausklick auf die entsprechende Schaltfläche in die Zwischenablage kopiert werden. Von dort lassen sie sich z.B. in Excel-Tabellen einfügen und weiter verarbeiten.

Abb. 5: Die XY-Darstellung

Schließlich gibt es noch eine XY-Messung (Abb. 5) mit freier Auswahl der gegeneinander dargestellten Kanäle. Die Eingangskanäle und die Geschwindigkeit der Messung können über Schiebeschalter eingestellt werden.

EZ-USB Download in Visual Basic

Mit dem EZ-USB-System von AnchorChips werden die ersten Schritte mit dem USB erheblich erleichtert. Das Entwicklungssystem ES-2131 von Modul-Bus enthält mit dem Mikrocontroller AN2131 einen kompletten 8051-Controller mit USB-Kern und 8 KB RAM. Über den USB können Programme in das RAM geladen und gestartet werden (Abb. 6).

Abb. 6: Das Programm EZdl

Beispielprogramme für das System werden in [1] vorgestellt. Im Buch findet man Beispiele von einfachen Portausgaben über einen digitalen Logikanalysator, AD-Wandler, Speicher-Oszilloskope bis zur Ansteuerung des im Prozessor enthaltenen I²C-Bus. Es wurde grundsätzlich Delphi eingesetzt. Dank der Hilfe von Karsten Böhme gibt es nun auch eine Unterstützung für Visual Basic.

Der VB-Quelltext EZdl ist relativ kurz. Die entscheidenden Prozeduren DownloadBin, ProgReset und ProgStart sind in dem Modul EZusb1.bas definiert. Die darin enthaltenen Deklarationen ermöglichen auch eine Ausweitung auf weitere wichtige Funktion des EZusb-Chips. Die kompletten VB5-Quelltexte stehen zum Download zur Verfügung.

Option Explicit

Dim AktPfad As String

Dim BinFileName As String

Private Sub Command1_Click()

  BinFileName = AktPfad + Text1.Text

  DownloadBin (BinFileName)

End Sub



Private Sub Command2_Click()

  ProgReset

End Sub



Private Sub Command3_Click()

  ProgStart

End Sub



Private Sub Form_Load()

  AktPfad = App.Path                'kompletten Aplikationspfad in Public-Variable ablegen

  If Right$(AktPfad, 1) <> "\" Then 'Eventuell BackSlash anfügen

    AktPfad = AktPfad + "\"

  End If

End Sub

Das Programm EZdl.frm

Für einen ersten Test wurde das 8051-Assemblerprogramm Test1.asm im Quelltext und als kompiliertes Binärfile beigefügt. Es führt schnell aufsteigende Byte-Ausgaben an Port C des Prozessors durch. Alle acht Anschlüsse sind an Pfostensteckern der Platine herausgeführt. Mit einem Oszilloskop können hier Rechtecksignale gemessen werden. Das Signal an Port C.7 kann auch über einen Piezowandler hörbar gemacht werden. Das Signal an C.0 hat eine Frequenz von ca. 400 kHz, was eine Änderungsrate des Portzustands von 800 kHz entspricht. Der EZusb-Chip zeigt hier seine hohe Rechenleistung. Das Programm kann mit dem Resetkopf des Downloadprogramms gestoppt und mit dem Startknopf beliebig oft gestartet werden. Es läuft an Adresse 0000h im RAM des Prozessors und bleibt erhalten, solange die Betriebsspannung anliegt.

;EZUSB, Test 1

;Aufsteigende Bitmuster an Port C

;ca. 400 kHz an C.0

;ca. 3.2 kHz an C.7



OEC  .equ   7F9Eh

OUTC .equ   7F98h



     mov DPTR,#7F9Eh

     mov A,#0FFh

     movx @DPTR,A



     mov DPTR,#7F98h

Loop inc A          

     movx @DPTR,A

     SJMP Loop

     .end

Das Assemblerprogramm Test1.asm

Wer bisher mit einem normalen 8051-Controller gearbeitet hat, erkennt schnell, dass der AN2131 ganze andere Ports besitzt. Es handelt sich um umschaltbare Ein- und Ausgangsports mit eigenen Output-Enable-Registern und Datenregistern im Adressraum. Im Beispiel wird OEC komplett hochgesetzt und der Port C damit in Ausgaberichtung umgeschaltet. Ausgaben erfolgen dann durch movx-Schreibzugriffe auf das Register OUTC.

Literatur: [1] B. Kainka, Messen, Steuern und Regeln mit USB, Franzis-Verlag 2000


Zurück zum CompaS-Archiv
Zurück zur Startseite AK-Modul-Bus