Forum: Mikrocontroller und Digitale Elektronik LEDs per USB schalten


von Daniel B. (trequ)


Lesenswert?

Hallo,

ich brächte etwas Hilfe zu einem kleinen Projekt, mit dem ich etwas 
überfragt bin.

Ich habe rote und grüne LEDs, welche über USB mit Strom versorgt werden 
(5V, 500mA).

Ich möchte nun von einem Linux PC aus über USB zwischen den roten und 
den grünen LEDs umschalten können.
(Rot an, Grün an, Alle an, Alle aus)

Für die Schnittstelle zu USB hätte ich einen TTL Adapter vorgesehen 
Produkt: 
http://www.amazon.de/USB-TTL-Konverter-Modul-mit-eingebautem-CP2102/dp/B00AFRXKFU/
Datenblatt: 
http://www.produktinfo.conrad.com/datenblaetter/125000-149999/140539-da-01-ml-TRANSISTOR_BC547C_TO_92_de_en.pdf
Meiner Meinung nach sollte es damit möglich sein, Software-Befehle in 
Steuersignale umzuwandeln.
Mit Linux bin ich fit, ich denke das Erzeugen der Steuersignale wird 
kein Problem.

Bei der Hardware und der Elektrotechnik bräuchte ich jedoch eurere 
Hilfe, da ich aus vielen Datenblättern und Produktbeschreibungen einfach 
nicht schlau werde:

- Welche Spannung kommt aus dem seriellen Anschluss des USB TTL 
Adapters?
- Welchen Transistor brauche ich, um die Stromkreise der LEDs zu 
schalten?
- Geht das überhaupt nur mit dem USB TTL Adapter und Transistoren, oder 
brauche ich da noch einen IC dazu?

Vielen Dank.

von Klaus D. (kolisson)


Lesenswert?

Daniel B. schrieb:
> - Geht das überhaupt nur mit dem USB TTL Adapter und Transistoren, oder
> brauche ich da noch einen IC dazu?

Du benötigst einen Microkontroller, der das serielle Signal versteht
... also Text senden "rot An"  im Mikrokontroller verstehen lassen
und entsprechende Ausgänge schalten damit das gewünschte passiert.


Klingt doch einfach .... oder ?


Gruss Klaus

von Michael B. (mbiedenb)


Lesenswert?

Schau mal hier:

https://www.youtube.com/watch?v=GmBGMWBfMmA

Da macht der sowas mit nem USB-TTL chip von FTDI. Vielleicht hilft dir 
das ja weiter... für so eine simple Aufgabe ist ein µC glaub ich ein 
bischen Overkill... gerade wenn der Host PC ein Linux OS hat.

von Helge A. (besupreme)


Lesenswert?

Warum suchst du dir ein Modul raus, das überhaupt keine Beschreibung 
hat. Das ist wie Wichteln.

Aus dem Adapter kommt ein serielles Signal. Mit TTL-passenden 
Spannungen, wahrscheinlich 0V und 3V. Sonst würde das Ding auch nit 
TTL-Adapter heißen.

Mit etwas Glück hast du neben TxD noch ein, zwei Steuersignale auf dem 
Stecker, die der VCP-Treiber bedienen kann. Oder deine 
selbstgeschriebene Software.

von Frank (Gast)


Lesenswert?

Mit etwas Trickserei reicht vlt. ein Schieberegister.

Einfacher wäre die Verwendung eines MC, z.B. Arduino Nano zu ca. 6 Euro 
bei Ebay. Da ist Alles drin, Alles dran (incl. USB) und am Ende kommt 
wegen der Programmierbarkeit vlt. der Appetit auf Mehr ...

http://www.ebay.de/itm/NEU-USB-5V-Micro-controller-Board-fur-Arduino-Nano-V3-0-ATmega328P-compatible-C8-/281265648275?pt=Wissenschaftliche_Ger%C3%A4te&hash=item417cbd3293

von Daniel B. (trequ)


Lesenswert?

Hallo,

> Warum suchst du dir ein Modul raus, das überhaupt keine Beschreibung
> hat. Das ist wie Wichteln.
Ich bin gerne auch offen dür andere Vorschläge.
Für mich war das halt die einfachste Lösung, ein ansteuerbares Gerät 
(/dev/ttyUSB0) unter Linux zu bekommen.

> Du benötigst einen Microkontroller, der das serielle Signal versteht
> ... also Text senden "rot An"  im Mikrokontroller verstehen lassen
> und entsprechende Ausgänge schalten damit das gewünschte passiert.
Dann habe ich hier ein Verständnisproblem.
Ich wollte eben keinen programmierbaren USB Chip, welcher dann ein C 
Programm ausführt.
Ich wollte Daten nach /dev/ttyUSB0 schreiben, welche dann Strom an/aus 
auf den seriellen Pins erzeugen.
Im Prinzip sind Daten dort ja nichts anderes, als Storm an/aus und das 
müsste doch reichen?

Ich denke, über USB zwei serielle Pins zu öffnen und zu schließen sollte 
ich hinkriegen.
Mein Problem ist eher, wie ich damit dann einen anderen Stromkreis 
schalte.

Danke.

von Frank (Gast)


Lesenswert?

Daniel B. schrieb:
> Mein Problem ist eher, wie ich damit dann einen anderen Stromkreis
> schalte.

Nun, indem du irgend eine Art von Schalter dazwischen montierst, z.B. 
ein Solid State Relais oder einfach irgend einen "Treiber-Chip" ...

von Harald W. (wilhelms)


Lesenswert?

Helge A. schrieb:

> Warum suchst du dir ein Modul raus, das überhaupt keine Beschreibung
> hat. Das ist wie Wichteln.

Weil Amazon als Buchladen erwartet, das man noch ein passendes
Buch dazu bestellt. :-)

von Harald W. (wilhelms)


Lesenswert?

Klaus De lisson schrieb:

> Du benötigst einen Microkontroller, der das serielle Signal versteht
> ... also Text senden "rot An"  im Mikrokontroller verstehen lassen
> und entsprechende Ausgänge schalten damit das gewünschte passiert.

Früher gab es passend für die COM-Schnittstelle spezielle Seriell-
Parallel-Wandler-ICs. Aber vermutlich sind die inzwischen alle obsolet.
:-(

von Sven J. (svenj)


Lesenswert?

Daniel B. schrieb:


> Dann habe ich hier ein Verständnisproblem.
Korrekt.

> Ich wollte eben keinen programmierbaren USB Chip, welcher dann ein C
> Programm ausführt.
> Ich wollte Daten nach /dev/ttyUSB0 schreiben, welche dann Strom an/aus
> auf den seriellen Pins erzeugen.
> Im Prinzip sind Daten dort ja nichts anderes, als Storm an/aus und das
> müsste doch reichen?

Natürlich kannst du dir das gesendete Signal auf eine LED legen und 
anzeigen, nur leider wird das ein recht hektisches Geflimmer. Du müßtest 
dir die Frage stellen, welche Daten du senden musst, um einen Datenstrom 
zu erzeugen, der ständig "ein" ist. Ein Blick in die Definition einer 
seriellen Schnittstelle dürfte weiterhelfen. (und ernüchtern)

> Ich denke, über USB zwei serielle Pins zu öffnen und zu schließen sollte
> ich hinkriegen.
> Mein Problem ist eher, wie ich damit dann einen anderen Stromkreis
> schalte.

Mit einer wie-auch-immer gearteten Logik, die dein gesendetes Datum 
erkennt und entsprechend Pins schaltet. Ansonsten mal FT240X genauer 
unter die Lupe nehmen. Könnte sein, das der so ähnlich funktioniert, wie 
du dir das vorstellst. Ist allerdings PC-seitig kein UART sondern wird 
mit einem eigenen Interface bedient. Anwendungsseitig müßte das ein 
8-bit I/O Bus sein.

--
 SJ

von Axel S. (a-za-z0-9)


Lesenswert?

Daniel B. schrieb:
> Hallo,
>
>> Warum suchst du dir ein Modul raus, das überhaupt keine Beschreibung
>> hat. Das ist wie Wichteln.
> Ich bin gerne auch offen dür andere Vorschläge.
> Für mich war das halt die einfachste Lösung, ein ansteuerbares Gerät
> (/dev/ttyUSB0) unter Linux zu bekommen.

Nur: warum suchst du dir etwas aus, das eine serielle Schnittstelle 
emuliert, wo du doch überhaupt keine solche brauchst? USB kennt eine 
ganze Menge mehr Geräteklassen als virtualle COM-Ports.

Das was du machen willst, gibts fix und fertig als Demo-Projekt für eine 
Software-USB-Implementierung:

http://www.obdev.at/products/vusb/powerswitch-de.html

Das läßt sich problemlos in einen ATtiny oder ATmega quetschen.

Siehe auch: http://www.obdev.at/products/vusb/prjdisplay.html


XL

von OAmp (Gast)


Lesenswert?

Warum nicht mal was anderes, eine Anbindung an die (nie endende)
Steinzeit.
USB - LPT
http://www.reichelt.de/?;ARTICLE=56781

Über Druckerports wurde/wird auch gesteuert.

Ansonsten meine ich das kann man mit dem kleinsten uC machen. 2 LEDs
und Versorgung.
Und wenns nicht kompliziert werden soll den vorher schon empfohlenen
Nano.

von Christian R. (supachris)


Lesenswert?

OAmp schrieb:
> USB - LPT

Bringt nix, da das Ding lediglich eine USB-Printerunterstützung bietet. 
Einfach ein paar I/Os setzen wie früher geht nicht, denn ein 
(virtueller) LPT mit ansprechbarer Basisadresse kommt da nicht raus.

Über USB-Serial vielleicht schon eher, dann muss man die RTS und die DTR 
Leitung dafür vergewaltigen, ist aber machbar. Allerdings wirds 
schwierig einen fertigen USB-Serial Wandler zu finden, der die DTR 
Leitung herausgeführt hat.

Mit dem D2XX Treiber ist das natürlich ordentlich machbar über die I/Os 
der FT232 o.ä.

Ansonsten gibts da noch die IOWarrior.

von Markus (Gast)


Lesenswert?

Mit einem Digispark wäre eine Möglichkeit:
http://digistump.com/products/1

Ein Beispiel wäre das:
http://digistump.com/wiki/digispark/tutorials/digiblink

von svf (Gast)


Lesenswert?

Warum braucht er einen Mikrocontroller?`
Zum Umschalten braucht er ja nur die RS232 Steuerleitungen und nen 
FET...
Da reicht ein 9€ USB/Seriell-Kabel!
Man kann es natürlich auch wieder umständlich machen.
Bitte beachten das die 500mA NUR im angemeldeten Zustand gezogen werden 
dürfen!!!

von Max H. (hartl192)


Lesenswert?

Man könnte einen USB-->UART + SN74LV8153 verwenden:
http://www.ti.com.c╚n/cn/lit/ds/symlink/sn74lv8153.pdf
Link ohne das '╚' sonst ist er angeblich Spam.

: Bearbeitet durch User
von Chris (Gast)


Lesenswert?

Wenn du ein Port mit aktivem Powercontrol hast, kannst du zwei USB Ports 
nehmen, die Leds mit Widerstand einfach an den 5V des Usb anstecken und
mittels Software die Leds ein oder ausschalten. Du brauchst halt zwei
USB Ports anstelle von einem.

von Axel S. (a-za-z0-9)


Lesenswert?

svf schrieb:
> Warum braucht er einen Mikrocontroller?`

Braucht er nicht unbedingt. Er braucht in erster Linie etwas, das USB 
spricht.

> Zum Umschalten braucht er ja nur die RS232 Steuerleitungen und nen
> FET...
> Da reicht ein 9€ USB/Seriell-Kabel!

Aber nur theoretisch.

> Bitte beachten das die 500mA NUR im angemeldeten Zustand gezogen werden
> dürfen!!!

Eben. Und wie bringst du dem gekauften USB-zu-wasauchimmer Adapter bei, 
daß er sich am Bus als Gerät mit 500mA Strombedarf anmelden soll? Kann 
es sein, daß ein µC mit Hardware- oder Software-USB doch irgendwie die 
einfachste Variante ist?


XL

von Axel S. (a-za-z0-9)


Lesenswert?

Nachtrag:
1
~ $lsusb | fgrep Serial
2
Bus 002 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

das ist ein USB-Seriell Konverter, den ich vor Jahren mal gekauft habe.

1
~ $lsusb -s 2:2 -v
2
Device Descriptor:
3
...
4
  idVendor           0x067b Prolific Technology, Inc.
5
  idProduct          0x2303 PL2303 Serial Port
6
  iManufacturer           1 Prolific Technology Inc.
7
  iProduct                2 USB-Serial Controller
8
...
9
    bmAttributes         0x80
10
      (Bus Powered)
11
    MaxPower              100mA

Der meldet einen Strombedarf von 100mA an. Wenn man USB-konform bleiben 
will, dann darf man auch nicht mehr als die genannten 100mA ziehen. Das 
dürfte für so ziemlich alle anderen USB-zu-Seriell Adapter am Markt ganz 
ähnlich aussehen.


XL

von svf (Gast)


Lesenswert?

Axel Schwenke schrieb:
>> Zum Umschalten braucht er ja nur die RS232 Steuerleitungen und nen
>> FET...
>> Da reicht ein 9€ USB/Seriell-Kabel!
>
> Aber nur theoretisch.

Nein, nicht theoretisch sondern einfach und funktionierend.

>> Bitte beachten das die 500mA NUR im angemeldeten Zustand gezogen werden
>> dürfen!!!
>
> Eben. Und wie bringst du dem gekauften USB-zu-wasauchimmer Adapter bei,
> daß er sich am Bus als Gerät mit 500mA Strombedarf anmelden soll? Kann
> es sein, daß ein µC mit Hardware- oder Software-USB doch irgendwie die
> einfachste Variante ist?

Ganz einfach - indem man das FTDI-Konfig-Tool öffnet und den Adapter mit 
den Einstellungen überschreibt.
Fertig

Warum soll man nur immer nen µC brauchen...

von svf (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Das dürfte für so ziemlich alle anderen USB-zu-Seriell Adapter am Markt ganz
> ähnlich aussehen.

Man kauft ja auch kein Konverter mit nem Prolific oder Silaps drauf ;)
Bei Reichelt steht z.B. explizit dabei wenn ein FT232R drin steckt und 
dann geht das schon.

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.