Steuerbarer Gleichstrom aus dem USB-Port?

Hallo,

ich möchte gerne einen kleinen Elektromotor vom Computer aus regeln, und brauche dazu zwischen 0 und 4.5V Gleichspannung (und geschätzte 50 bis 100mA).

Nachdem ein USB-Port ja 5V und 1A liefern kann, und ich noch ein paar freie USB-Ports habe, würde ich das ganze gern über USB machen.

Aber wie kontrolliere ich die Ausgangspannung? Gibts da irgend welche kleinen USB D/A-Wandler? Das ganze sollte von Linux aus steuerbar sein (ich scheue mich auch nicht davor, selbst was zu programmieren, solange es kein kompletter USB-Treiber wird).

Grüße,
Moritz

Moin,

Nachdem ein USB-Port ja 5V und 1A liefern kann,

ja??
Er kann 100mA und maximal 500mA auch nur dann, wenn das der USB-Verbraucher beim Host anmeldet:

„Zu beachten ist, dass pro Anschluss nur max. 500 mA (High Power) oder 100 mA (Low Power) als Stromversorgung zugesichert werden müssen.“

und

„Ohne besondere Freigabe durch das Betriebssystem darf ein Gerät nicht mehr als 100 mA Strom verbrauchen.“
http://de.wikipedia.org/wiki/USB

Aber wie kontrolliere ich die Ausgangspannung? Gibts da irgend
welche kleinen USB D/A-Wandler?

Mit einem einfachen D/A-Umsetzer wird man da nicht auskommen. Da muss ein D-A-Umsetzer her der von einem USB-Controller angesteuert wird der sich andererseits auch beim Host identifiziert. Also ein komplettes USB-gerät mit dazu gehörigem (Controller-)Gerätetreiber und PC-Software die den D/A-Umsetzer ansteuert.

USB-Geräte sind für den Endanwender nur deshalb (oft) so einfach zu bedienen, weil die zugehörige Hard- und Firmware und das USB-Protokoll recht komplex ist. Zum mal rumbasteln finde ich das wenig geeignet, ich würde mich lieber auf EIN Gebiet konzentrieren (Treiber, Software ODER D/A-Umsetzer)

VG,
J~

Hallo,

Nachdem ein USB-Port ja 5V und 1A liefern kann,

ja??
Er kann 100mA und maximal 500mA auch nur dann, wenn das der
USB-Verbraucher beim Host anmeldet:

„Zu beachten ist, dass pro Anschluss nur max. 500 mA (High
Power) oder 100 mA (Low Power) als Stromversorgung zugesichert
werden müssen.“

und

„Ohne besondere Freigabe durch das Betriebssystem darf ein
Gerät nicht mehr als 100 mA Strom verbrauchen.“
http://de.wikipedia.org/wiki/USB

Dann hatte ich das wohl falsch in Erinnerung.

Aber wie kontrolliere ich die Ausgangspannung? Gibts da irgend
welche kleinen USB D/A-Wandler?

Mit einem einfachen D/A-Umsetzer wird man da nicht auskommen.
Da muss ein D-A-Umsetzer her der von einem USB-Controller
angesteuert wird der sich andererseits auch beim Host
identifiziert. Also ein komplettes USB-gerät mit dazu
gehörigem (Controller-)Gerätetreiber und PC-Software die den
D/A-Umsetzer ansteuert.

Gibts sowas nicht schon längst in irgend welchen Microcontrollern fertig verpackt? Meine Hoffnung war halt, dass es irgendwo so einen Microcontroller plus D/A-Wandler in einem Gerät gibt…

USB-Geräte sind für den Endanwender nur deshalb (oft) so
einfach zu bedienen, weil die zugehörige Hard- und Firmware
und das USB-Protokoll recht komplex ist. Zum mal rumbasteln
finde ich das wenig geeignet, ich würde mich lieber auf EIN
Gebiet konzentrieren (Treiber, Software ODER D/A-Umsetzer)

Hört sich sinnvoll an.

Hast du irgend eine andere Empfehlung, wie ich mit überschaubarem Aufwand eine regelbare Gleichspannung aus dem Computer herausbekomme?

Viele Grüße, und schon mal Danke für die Anwort,
Moritz

Empfehlung USB-Experimentierboard ?
Moin,

Dann hatte ich das wohl falsch in Erinnerung.

nunja, das haben leider viele falsch in Erinnerung bzw diverse Hersteller halten sich nicht an Spezifikationen. Das heißt nicht, dass man das einfach ignorieren sollte.

Gibts sowas nicht schon längst in irgend welchen
Microcontrollern fertig verpackt? Meine Hoffnung war halt,
dass es irgendwo so einen Microcontroller plus D/A-Wandler in
einem Gerät gibt…

Was es gibt sind diverse Experimentierboards, da würde ich mich mal umsehen. Sowas gibt es von professionell bis günstig. da hat man schon mal eine gewisse Basis und kann sich an der Stelle vortasten, die man lernen möchte:

http://www.google.de/search?q=usb+experimentierboard
führt zB zu sowas:
http://www.velleman.eu/distributor/products/view/?id…
Das klingt auf den ersten Blick ja schon mal ganz gut:

# 8 digitale Ausgangsschalter mit offenem Kollektor (max. 50V/100mA) (LED-Anzeige auf der Platine)
# 2 analoge Ausgänge:
 \* 0 bis 5V, Ausgangswiderstand 1K5

„Alle Kommunikationsprogramme sind in einer Dynamic Link Library (DLL) gespeichert. Sie können maßgeschneiderte Windows (98SE, 2000, Me, XP) Applikationen in Delphi, Visual Basic, C++ Builder oder jedem anderen 32-bit Windows-Hilfsprogramm für Applikationen, das DLL unterstützt, schreiben.“

Preis ~€50.-, vielleicht gibts das auch gebraucht?
Der Ausgangswiderstand wäre jetzt sicher etwas groß, aber den könnte man mit einem http://de.wikipedia.org/wiki/Spannungsfolger reduzieren.

Vielleicht ist das Teil auch schon eine Nummer zu groß. Vielleicht hat hier jemand ein konkretere Alternative?

VG
J~

Hallo Moritz,

als USB-DA-Wandler kenne ich die Audio-Wandler Serie PCM290x von TI. Ich könnte mir vorstellen, dass die sich als DC-DACs vergewaltigen lassen, wenn man ihnen ein DC-haltiges Pseudo-Audio-Signal übergibt. Treiber würdest du nicht brauchen, denn das Betriebssystem erkennt die Bausteine als Standard USB Audio Device.

Ein anderer, sicherer Weg ist die Verwendung eines FTDI-ICs (http://www.ftdichip.com/, z. B. bei Reichelt). Eines mit parallelem Ausgang, daran kannst du einen parallel-DAC oder ein R2R-Netzwerk mit Leistungs-IC anschließen. Oder einen SPI- oder IIC-fähigen FTDI mit SPI- bzw. IIC-DAC. Für die FTDIs gibt’s die passenden DLLs, so dass du dich beim Programmieren nicht um Treiber kümmern musst.

Natürlich gibt’s auch Mikrokontroller (Atmel, Microchip) mit USB und DAC bzw. PWM, aber ich gehe davon aus, dass du dann deinen USB-Treiber selber schreiben musst. Wenn ich das falsch sehe, lasse ich mich gerne schlauer machen!

Grüße

Uwe

Hallo,

ich würde tunlichst darauf verzichten, den Elektromotor direkt an den USB-Port anzuschließen.

Gründe dafür wurden ja bereits genannt.

Versuche es mal mit dem Arduino Dueminovese mit Motor-Shield.

Ist eine preiswerte, flixible und sehr leistungshäfige Lösung. Die „Programmiersprache“, die Arduino-IDE, ist leicht zu erlernen. Fertige Bibliotheken für die Motoransteuerung gibts es auch.

Allgemeines zum Arduino:

http://de.wikipedia.org/wiki/Arduino-Plattform

Zum Duemilanovese:

http://arduino.cc/en/Main/ArduinoBoardDuemilanove

Zur Motoransteuerung (nur ein Beispiel):

http://itp.nyu.edu/physcomp/Labs/DCMotorControl

mfg, tf

Moin,

Versuche es mal mit dem Arduino Dueminovese

ui, das klingt ja interessant! Supi…

VG,
J~

Hallo,

Gibts sowas nicht schon längst in irgend welchen
Microcontrollern fertig verpackt? Meine Hoffnung war halt,
dass es irgendwo so einen Microcontroller plus D/A-Wandler in
einem Gerät gibt…

Ja, sowas gibt es vielfach.
http://www.conrad.de/ce/de/product/191003/
Viele uC haben eh einen DAC oder einen PWM-Ausgang, der für sowas
genutzt werden kann.
PWM hat evtl. den Vorteil, dass es viel besser zum Ansteurern von
einem Motor geeignet ist.
Was du dann noch brauchst, ist ein Motortreiber, kann im einfachten
Fall ein Transistor sein.
Was z.B. auch geht:
http://www.conrad.de/ce/de/product/198206/
oder sonstiges, was bei Conrad unter „C-Control“ läuft.

Es gibt auch noch die Möglichkeit, direkt ein Datenpin einer RS232
als PWM-Ausgang zu nutzen.
(auch über „USB to RS232-Adapter“ als virtuelle COM-Schnittstelle).
http://www.reichelt.de/?ACTION=3;ARTICLE=58641:stuck_out_tongue_winking_eye:ROVI…
oder USB to Parallel
http://www.reichelt.de/?ACTION=3;ARTICLE=56781:stuck_out_tongue_winking_eye:ROVI…

Gruß Uwi

Hallo,

vielen Dank für alle Antworten. Ich sehe, dass das ganze doch nicht so einfach ist, wie ich mir das ursprünglich erhofft hatte, und werde mir jetzt mal die USB Experimentierboards genauer anschauen.

Viele Grüße und Frohe Ostern,
Moritz