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
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
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..
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.
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
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.
"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.
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.
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.
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
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.
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.
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.
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
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?
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
> 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.