Logo_Mikroshop
Home  ⊃  Tools - Projekte - Tipps

Verbindung PC - MCU mit USB mit paar einfachen Bauteilen

Mit V-USB von Objective Development ist es mit ein paar Dioden und Widerständen möglich, mit einem AVR Mikrocontroller ein USB-Gerät low-speed Verbindung aufzubauen. Diese reicht meistens für viele Anwendungen. Die Homepage von V-USB enthält viele Anwendungs Beispiele.

Als Beispiel wird das SET9, 8x8 Matrix nun direkt vom PC aus angesteuert.

Hardware

Anschluss

Für das USB Kabel nimmt man eine alte Tastatur, Maus oder was sonst rumliegt, abschneiden und auf ein Stück Lochraster mit Kabelbinder fixieren und verlöten.

USB USB
Schema

Für den Anschluss USB -> MCU gibt es verschiedene Methoden. Siehe hier. Alle Varianten haben Vor- und Nachteile, in unserem Beispiel wurde die Zener Diode gewählt. Einfach und bis jetzt immer funktioniert.

  • 2 Stk 3V6 Zener Dioden
  • 2 Stk 68Ohm Widerstände
  • 1 Stk 1K5Ohm Widerstand

Gegenüber dem SET9, verschieben wir nur die 3 Anschlussleitungen des MAX7219 nach PD4-6. So werden PD0 + PD2 für den USB frei.

Schema

Code auf dem Atmega SET9_USB.zip laden

Für die Ansteuerung gibt es wieder zwei Varianten. Verbindung mittels USB Treiber (libusb) oder die sogenannte HID Verbindung mit Windows eigenen Treiber. Hier wird die einfache Variante mit den libusb Treiber verwendet. Der Beispielcode wurde für meine einfache Anwendung gekürtz. Bei heiklen und störsicheren Betrieb den Watchdog übernehmen! Die Original V-USB Lib für den Atmega gibt es hier.
Die wichtigsten Punkte MCU seitig sind

  • D+ muss über den 68 Ohm-Widerstand an Port INT0
  • MCU Quartz 12MHz, 12.8MHz, 15MHz, 16MHz, 16.5MHz, 18MHz, 20MHz möglich
  • usbconfig.h anpassen -> Hardware Config
  • korrekt initialisieren
  • usbPoll(); muss dauernd aufgerufen werden (Verbindung MCU-PC)

In der usbFunctionSetup(uchar data[8]) werden die Daten vom USB Anschluss eingelesen.

Code auf dem PC MATRIX.zip laden

Für den PC wurde hier ein WinAPI mit Dev-C++ gebastelt. Nicht mehr das neuste Tool, vorallem seit 2005 nicht mehr gewartet. Man kann auch CodeBlocks oder andere Lösungen nutzen. Die Buttons sehen nicht Windows Typisch aus, aber das wollte ich so. Nehme auch gerne Korrekturen an meinem schrecklichen API Code entgegen.
Beispiele in anderen Programmiersprachen finden Sie auf der Seite von VUSB.

Matrix

PAYPAL LOGO TWINT LOGO Webmoney LOGO Wiederverwendung LOGO
Impressum | Kontakt