Forum: Mikrocontroller und Digitale Elektronik AVR mit USB steuern


von Rudolph (Gast)


Lesenswert?

Hallo liebes Forum!

Ich habe vor, meinen Mikrocontroller mithilfe einer USB-Schnittstelle 
über den PC (Windows) zu steuern.
Das heißt, dass ich am liebsten alles "in einem chip" hätte, sodass ich 
direkt vom Mikrocontroller auf den USB-Anschluss gehen kann.

FTDIs möchte ich vermeiden, da diese immer mit "virtuellen COM-Ports" 
arbeiten.

Im Netz habe ich einen AVR gefunden, der vermutlich meinen Ansprüchen 
gerecht wird: AT89C5131. Er hat sozusagen "alles an Bord".
Das einzige was mich abschreckt ist der Preis und die Bauform (SMD).

Welche Möglichkeiten gäbe es neben dem genannten uC, einen AVR mittels 
USB-Verbindung anzusteuern?
Es soll wiegesagt kein virtuelle COM-Port am PC erzeugt werden.


Vielen Dank und Gruß
Rudi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rudolph schrieb:
> Im Netz habe ich einen AVR gefunden, der vermutlich meinen Ansprüchen
> gerecht wird: AT89C5131

Das ist kein AVR. Das ist ein 8051.

Atmel stellt aber auch diverse AVRs mit integriertem 
USB-Device-Interface her, damit kannst Du beliebige USB-Geräte bauen, 
die sich als was auch immer (HID, MSD, CDC oder Dein eigenes Protokoll) 
verkaufen.

Ein Beispiel ist der Atmega32u2:

http://www.atmel.com/devices/ATMEGA32U2.aspx

: Bearbeitet durch User
von Rudolph (Gast)


Lesenswert?

>Das ist kein AVR. Das ist ein 8051.

Ok, habe ich gerade auch gesehen.-Sorry!

Jedenfalls suche ich etwas FÜR einen AVR (Atmega8).

von wendelsberg (Gast)


Lesenswert?


von Rudolph (Gast)


Lesenswert?

Ok, danke!

Aber was nimmt man denn generell für so eine wohl recht verbreitete 
Anwendung "AVR <-> USB"?

Ich hätte am liebsten einen Chip, der per UART oder SPI Zeichen empfängt 
und diese dann "USB-konform" an den PC schickt. Und andersrum..

von avr (Gast)


Lesenswert?

Rudolph schrieb:
> Ich hätte am liebsten einen Chip, der per UART oder SPI Zeichen empfängt
> und diese dann "USB-konform" an den PC schickt. Und andersrum..

Was ist für dich USB-Konform? Der übliche Weg für solche 
Universallösungen ist eben ein virtueller Comport über CDC. Ansonsten 
könnte man ein Custom-HID Device nehmen, dafür braucht man aber schon 
wieder spezielle Software am PC. Oder was ganz eigenes, dafür braucht 
man dann einen eignenen Hosttreiber, bzw. etwas generisches wie libusb. 
Wenn du noch nichts mit USB gemacht hast, kannst du dich auf mehrere 
Wochen Einarbeitungszeit einstellen.

Bei den AVRs gibt es recht wenige Controller mit USB. Und soweit ich 
weiß keinen einzigen in bedrahteten Gehäusen. Das wird man bei USB auch 
eher nicht finden. Auf der anderen Seite ist SMD nicht so schwer wie man 
am Amfang denkt. Mit einer guten Lötausrüstung ist es gut machbar.

von wendelsberg (Gast)


Lesenswert?

Rudolph schrieb:

> Ich hätte am liebsten einen Chip, der per UART oder SPI Zeichen empfängt
> und diese dann "USB-konform" an den PC schickt. Und andersrum..

Der atmega32u4 kann das, wenn ich das im Datenblatt auf die Schnelle 
richtig deute.
Ich habe den benutzt, um ueber Timer zwei PWM zu messen, gleichzeitig 2 
analoge Spannungen zu messen und einige dig. Eingaenge einzulesen.

Dann hat er die Werte ueber USB an einen Linux-PC (/dev/ttyUSB0) 
geschickt.
Dort habe ich die dann als (langsames, in diesem Fall aber 
ausreichendes) Oszillogramm angezeigt.

wendelsberg

von Karl M. (Gast)


Lesenswert?

Hallo,

warum kein FTDI FT232RL, das hast Du nicht erklärt.
Damit kommt man schneller ans Ziel, da man für das USB-Device im 
atmega32U4 keine USB-Software bereitstellen muss, sich auch nicht die 
notwendigen Hardwarevoraussetzungen halten muss und auch nicht sein 
Hauptprogramm danach ausrichten muss.

Insgesamt ist die Nutzung eines Atmega mit zwei UART und einem FT232RL 
einfacher in der Projekt realisierung.

Wenn man einen Software/ Hardware USB-Stack für den atmega32U4 hat, weiß 
wie man ihn einbinden muss, genügend Zeit für die Lernphase (USB) 
mitbringt, dann ist das bei großen Stückzahlen preisgünstiger.

Ich habe atmega32U4 auf meinen Boards und verwende i.a. nur den 
USB-Bootlader mit AVR109 Protokoll.

Der hardware Uart ist als Uart Nr #1 im atmega32u4 verankert.

von Klaus Dieter (Gast)


Lesenswert?

"Generell" nehmen dazu sehr viele Leute einen FTDI. Und niemand zwingt 
dich, den FTDI als VCP zu nutzen. Du kannst ihn genausogut 
ausschließlich über die D2XX Treiber ansprechen.

von Karl (Gast)


Lesenswert?

Karl M. schrieb:
> Insgesamt ist die Nutzung eines Atmega mit zwei UART und einem FT232RL
> einfacher in der Projekt realisierung.

Klaus Dieter schrieb:
> "Generell" nehmen dazu sehr viele Leute einen FTDI.

Der FTDI (oder ein Clone davon) ist auch in vielen "Adapterkabeln" 
eingebaut, die es für wenige Euros bei Ebay gibt. Billiger bekommt man 
das selbst nicht hin.

http://www.ebay.de/itm/USB-2-0-CH340G-TTL-Konverter-Adapter-CP2102-PL2303-UART-FTDI-Arduino-5V-3-3V-/252239902020?hash=item3abaab7544:g:EKMAAOSwFqJWosMv

http://www.ebay.de/itm/USB-auf-RS232-Serial-TTL-PL2303HX-USB-UART-Kabel-Modul-Konverter-fur-Arduino-/221608116792?hash=item3398df8238:g:CR8AAOSwAF5Uab7Z

Allerdings sind oft die Leitungen für RTS /CTS ... nicht rausgeführt.

von Hubert G. (hubertg)


Lesenswert?

Wenn du die Hardware nicht selbst bauen willst, dann nimmst du einen 
Arduino Uno, der entspricht etwas einem Mega8. Die Arduino IDE musst du 
ja nicht verwenden.

von Joachim B. (jar)


Lesenswert?

Rudolph schrieb:
> Ich habe vor, meinen Mikrocontroller mithilfe einer USB-Schnittstelle
> über den PC (Windows) zu steuern.
> Das heißt, dass ich am liebsten alles "in einem chip" hätte, sodass ich
> direkt vom Mikrocontroller auf den USB-Anschluss gehen kann.

ist leicht

> FTDIs möchte ich vermeiden, da diese immer mit "virtuellen COM-Ports"
> arbeiten.

es gibt auch CH340, warum keine FTDI?

> Welche Möglichkeiten gäbe es neben dem genannten uC, einen AVR mittels
> USB-Verbindung anzusteuern?
> Es soll wiegesagt kein virtuelle COM-Port am PC erzeugt werden.

und warum dann nicht einen echten COM?

ist ja nun auch kein Teufelswerk.

von Frank K. (fchk)


Lesenswert?

avr schrieb:

> Bei den AVRs gibt es recht wenige Controller mit USB. Und soweit ich
> weiß keinen einzigen in bedrahteten Gehäusen. Das wird man bei USB auch
> eher nicht finden. Auf der anderen Seite ist SMD nicht so schwer wie man
> am Amfang denkt. Mit einer guten Lötausrüstung ist es gut machbar.

Andere Hersteller haben keine Probleme mit DIL.

http://www.digikey.de/product-detail/de/PIC16F1455-I%2FP/PIC16F1455-I%2FP-ND/3671488

Und wenn Du den nicht selber programmieren willst, gibts den auch 
vorprogrammiert:

http://www.digikey.de/product-detail/de/MCP2221-I%2FP/MCP2221-I%2FP-ND/4902585

Das ist intern der gleiche Chip, nur eben mit der Demoapplikation drauf.

fchk

von Rudolph (Gast)


Lesenswert?

Habt ihr denn Erfahrungen mit folgender Lib gemacht?

https://www.obdev.at/products/vusb/index-de.html


Gruß

von Frank K. (fchk)


Lesenswert?

Rudolph schrieb:
> Habt ihr denn Erfahrungen mit folgender Lib gemacht?
>
> https://www.obdev.at/products/vusb/index-de.html

Wird zwar gerne von AVR-Bastlern verwendet, ist aber Pfusch, weil nicht 
100% USB standardkonform. Diese Lösung kann prinzipiell nur Low Speed, 
aber viele Standard-USB-Deviceklassen verlangen Full Speed USB, weil 
sonst keine Bulk Endpoints erlaubt sind.

Mit 64 Bit Windows oder an USB 3 Ports wirst Du mit einer gewissen 
Wahrscheinlichkeit Probleme bekommen.

PIC-Bastler brauchen diesen Dreck übrigens nicht - es gibt genügen PICs 
im DIL Package mit zertifiziertem USB 2.0 Full Speed Device Controller 
in Hardware.

fchk

von avr (Gast)


Lesenswert?

Frank K. schrieb:
> Wird zwar gerne von AVR-Bastlern verwendet, ist aber Pfusch, weil nicht
> 100% USB standardkonform. Diese Lösung kann prinzipiell nur Low Speed,
> aber viele Standard-USB-Deviceklassen verlangen Full Speed USB, weil
> sonst keine Bulk Endpoints erlaubt sind.

Man braucht auch nicht immer Bulkendpoints. Für HID ist die Library 
völlig ausreichend.

> Mit 64 Bit Windows oder an USB 3 Ports wirst Du mit einer gewissen
> Wahrscheinlichkeit Probleme bekommen.

Glaub ich nicht.

> PIC-Bastler brauchen diesen Dreck übrigens nicht - es gibt genügen PICs
> im DIL Package mit zertifiziertem USB 2.0 Full Speed Device Controller
> in Hardware.

Ja wir wissen dass du PIC-Fanboy bist. Gibt auch genug andere 
USB-µController. Für Lowspeed ist die Library jedenfalls sehr gut 
benutzbar.

von Frank K. (fchk)


Lesenswert?

avr schrieb:

>> Mit 64 Bit Windows oder an USB 3 Ports wirst Du mit einer gewissen
>> Wahrscheinlichkeit Probleme bekommen.
>
> Glaub ich nicht.

Es reichte jedenfalls, dass die Macher von blink(1) 
(https://blink1.thingm.com/) von einem Attiny + vusb auf einen 
PIC16F1454 umgestiegen sind.

>> PIC-Bastler brauchen diesen Dreck übrigens nicht - es gibt genügen PICs
>> im DIL Package mit zertifiziertem USB 2.0 Full Speed Device Controller
>> in Hardware.
>
> Ja wir wissen dass du PIC-Fanboy bist. Gibt auch genug andere
> USB-µController. Für Lowspeed ist die Library jedenfalls sehr gut
> benutzbar.

Das hat nichts mit "Fanboy" zu tun. Ich klammere mich nicht wie viele 
arme Wichte an eine einzige Architektur.

von avr (Gast)


Lesenswert?

Frank K. schrieb:
> Es reichte jedenfalls, dass die Macher von blink(1)
> (https://blink1.thingm.com/) von einem Attiny + vusb auf einen
> PIC16F1454 umgestiegen sind.

verstehe ich nicht, wie man dann einen PIC wählen kann. Die EFM8UB-Serie 
hat ein deutlich besseres Preis/Leistungsverhältnis und kommt in sehr 
kleinen QFN-Gehäusen. Ich würde jedenfalls keinen PIC für USB nehmen. 
Allgemein scheinen mir gerade die kleinen PICs verhältnismäßig teuer zu 
sein, für das was sie können. Die haben fast keine Peripherie. Da 
bekommt man bei den EFM8BB für den gleichen Preis eine Menge geschenkt.

von Frank K. (fchk)


Lesenswert?

Stimmt, das wäre auch eine Alternative gewesen. Ich habe mal bei 
Digi-Key geschaut, da da tun sich efm8ub und pic16f1454 nichts, das sind 
wenige Cents. Vielleicht kannten die das nicht, oder das package war 
damals nicht verfügbar gewesen, oder wasweißich.

Also noch ein Grund mehr, nicht am AVR zu hängen.

fchk

von Nicole28 (Gast)


Lesenswert?

Hallo Zusammen,

also mich würde das auch hier interessieren, da ich eine Relay von OMRON 
G5V-2 ansteuern möchte. Gibt es eine fertige Schaltung mit dem ATMEL 
AVR, so das ich über USB eine Relay ansteuern kann?

von Frank K. (fchk)


Lesenswert?

Nicole28 schrieb:
> Hallo Zusammen,
>
> also mich würde das auch hier interessieren, da ich eine Relay von OMRON
> G5V-2 ansteuern möchte. Gibt es eine fertige Schaltung mit dem ATMEL
> AVR, so das ich über USB eine Relay ansteuern kann?

Da nimmst Du besser einen MCP2221. Der ist fertig programmiert, und an 
einen GPIO-Pin hängst Du dann einfach einen NPN-Transistor und daran 
Dein Relais.

fchk

von Hubert G. (hubertg)


Lesenswert?

Nimm einen Arduino deiner Wahl und du brauchst nur mehr einen 
Widerstand, einen Transistor und eine Diode.

von Stefan F. (Gast)


Lesenswert?

> eine Relay von OMRON G5V-2 ansteuern möchte.
> Gibt es eine fertige Schaltung mit dem ATMEL
> AVR, so das ich über USB eine Relay ansteuern kann?

Ja, du kannst ein Arduino Nano (kompatibles) Modul verwenden, und daran 
die Relais (mit Hilfe von Transistoren) anschließen. Die Firmware und 
Anleitung dazu findest du hier:

http://stefanfrings.de/avr_io/index.html

Siehe auch hier: 
https://www.mikrocontroller.net/articles/Relais_mit_Logik_ansteuern

Und hier: http://stefanfrings.de/bfAlarm/index.html
Anstelle von "Last" kannst du die Relais anschließen. Freilaufdioden 
sind für diese kleinen Relais bei dem genannten Transistor ausnahmsweise 
nicht notwendig.

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.