Forum: Mikrocontroller und Digitale Elektronik USB - IO Platine


von Samuel M. (samuel_m)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich bin dabei mir eine USB - IO Platine zu bauen, genauer gesagt eine 
Platine über die ich vom PC aus, in diesem Fall Ausgänge, steuern 
möchte. Dazu habe ich mir den ATtiny2313A vorgenommen, meine Kriterien 
waren das er über den AVRISP mkII programmierbar ist, wenig kostet, 
wenig externe Bauteile benötigt und genügend Ausgänge hat (16). Da ich 
nicht in der Lage bin selber ein USB Interface zu programmieren habe ich 
mich dafür entschieden den CP2102 als USB - UART Umsetzer zu verwenden. 
Hier möchte ich gleich dazu sagen das ich normalerweiße die littlefuses 
eingebaut hätte, jedoch keinen Typ gefunden habe der von einem 
"normalen" Hersteller wie z.B. Reichelt oder Conrad angeboten wird. Aus 
diesem Grund habe ich die Dioden im Prototye jetzt erst mal weg 
gelassen, vielleicht kann mir ja jemand ein Bauteil entfehlen damit ich 
dieses dann in die final Version einbauen kann. Bei der 
Ausgangstreiberstufe habe ich mich für einen BSR14 entschieden, hierbei 
waren die Kriterien wie bei allen Bauteilen das er bei Herstellen wie 
Reichelt oder Conrad erhältlich ist, dazu sollte er einen Kollektorstrom 
von mind. 500mA aushalten und dabei eine ausreichende Verstärkung 
besitzen um nicht die max. 40mA an den Ausgängen des Controllers zu 
überlasten.

Da das meine erste eigene Mikrocontroller Platine ist fände ich es gut 
wenn jemand erfahrenes mein Projekt mal durchschauen könnte und mir 
sagen kann ob alles so weit passt oder ob die ganze Schaltung so gar 
nicht funktionieren kann bevor ich das Layout erstelle und die Platine 
ätze.

In meiner final Version möchte ich ggf. auch noch eine möglichkeit 
einbauen die Platine extern zu versorgen und nicht nur über USB. Kann 
mir jemand sagen was ich dabei alles beachten muss? Ich würde das ganze 
gerne ohne Umschalter realisieren. Kann ich einfach einen 
Spannungsregler mit 3,3V einbauen und den auf meinen 3,3V Zweig legen 
oder gibt das Probleme mit der USB Versorgung? Hatte auch schon darüber 
nachgedacht Dioden in die USB Versorung einzubauen damit kein Strom in 
Richtung USB fließen kann und irgend welche Bauteile im PC oder sonst wo 
zerstört.

Vielen Dank schon mal für eure Hilfe.

von holger (Gast)


Lesenswert?

>Dazu habe ich mir den ATtiny2313A vorgenommen,

Nimm einen ATMega48, der hat einen USART und nicht son USI Geraffel.
Hat nur 8 Pins mehr.

>CP2102 als USB - UART Umsetzer zu verwenden.

Ich würde einen FT232RL nehmen.

Und tu dir selber einen Gefallen und papp nen Quarz an die CPU.
Sonst baust du dir ein Schätzeisen.

von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

Wenn es nur darum geht, Bits über USB an- und auszuschalten, ist ein 
FT2232D (Full Speed), FT2232H (High Speed) oder FT4232H (High Speed, 
pinkompatibel zum 2232H, aber 4 serielle Ports) sinnvoller. Da entfällt 
der AVR ganz, der FT2232 kann das alleine, und noch einiges mehr. Über 
High Speed USB kannst Du >10 MByte/s über diesen Chip rausblasen.

Zum Thema "bus-powered vs self-powered" schaust Du einfach ins 
Datenblatt des FT2232(D/H) bzw FT4232H, da steht das alles drin. 
Vielleicht möchtest Du noch Optokoppler vor die Ausgangstreiber setzen, 
um Masseschleifen bei der externen Versorgung der Ausgangstreiber zu 
unterbinden. Dann wäre der FT2232 bus-powered via USB, die 
Ausgangstreiber würden von einem externen Netzteil gespeist.

Meine FT4232-Platine sieht übrigens so aus. (siehe Bild)

fchk

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

holger schrieb:
> Und tu dir selber einen Gefallen und papp nen Quarz an die CPU.
> Sonst baust du dir ein Schätzeisen.

Quarz lässt sich einsparen, wenn man immer nur die niederwertigen 3 oder 
4 Bits eines jeden empfangenen Datenworts nutzt. Dann gibts keine 
Probleme.

Ansonsten wär VUSB hier gut einzusetzen (dann aber mit Quarz):
http://www.obdev.at/products/vusb/index-de.html

von Samuel M. (samuel_m)


Lesenswert?

Das mit dem ATMega48 klingt ganz gut, der ist auch über den AVRISP mkII 
programmierbar und hat genügend Pin's, vermutlich besitzt er auch noch 
deutlich mehr zusatzfunktionen was ich jetzt auf die schnelle sehen 
konnte. Aber was meinst du mit "USART und nicht son USI". Der 
ATtiny2313A hat doch auch ASART.

Das mit dem FT4232H klingt richtig gut aber ist für mich vermutlich 
nicht so gut geeignet. Einerseits hat nur der Baustein schon einen 
stattlichen Preis von ca. 8€ (Klar wenn ich meinen Übersetzter und den 
Controller zusammen reche komme ich auch auf um die 6€) aber ich glaube 
nicht das er auch PWM Signale ausgeben kann, zumindest nicht der 
Baustein selber. Vermutlich ist es über hight speed USB auch möglich PWM 
Signale zu übertragen aber das verfehlt ja den Sinn der ganzen Sache, 
ich möchte das der Controller die ganze "Arbeit" übernimmt und der PC 
nur noch sagt Pin1 an, Pin1 PWM 80%, Pin1 Frequenz 40Hz, .... solche 
Sachen.

Edit:
VUSB hört sich ganz gut an, es kommt bei meinem Anwendungen ja nicht 
umbedingt auf µsec an. Durch die Platzersparnis am Übertrager könnte ich 
sogar einen Quarz entbehren :-) Wie lange dauert denn die Übertragung 
von z.B. 8bit? Und gibt es irgend welche besonderheiten bei VUSB? Wie 
wird das ganze angesteuert? Wie eine UART Schnittstelle? Und wie 
sende/empfange ich das Signal am PC, also brauche ich einen extra 
Treiber und wenn ja ist dieser auch für Linux erhältlich?

von holger (Gast)


Lesenswert?

>Quarz lässt sich einsparen,

Wenn man den USART verwenden möchte rate ich dringend zu einem Quarz.

ATtiny2313A würde ich nicht nehmen wenn das Programm in C geschrieben 
wird.
128Byte RAM ist da ein Lacher.

>VUSB hört sich ganz gut an,

Dann nimm lieber gleich einen PIC18F2550. Sparst dir auch den
USB-RS232 Baustein.

von Samuel M. (samuel_m)


Lesenswert?

Was haltet ihr von der Kombination ATMega48 und VUSB?
Ich denke das würde meine Anforderungen gut erfüllen, es ist 
platzsparend, wenig Hardwareaufwand was das ganze auch gleichzeitg 
güstig macht.

Ps: Natürlich werde ich dann auch einen Quarz verwenden.

von holger (Gast)


Lesenswert?

>Was haltet ihr von der Kombination ATMega48 und VUSB?

Nichts, nimm einen USB-RS232 Wandler und werde glücklich.
So einen proprietären Schrott würde kein erfahrener
Entwickler anfassen.

von Oliver J. (skriptkiddy)


Lesenswert?

holger schrieb:
> proprietären Schrott

Was ist an vusb proprietär?

von Samuel M. (samuel_m)


Lesenswert?

Klasse und schon sind wir wieder bei der Lösung die ich sowieso schon 
habe denn RS232 kommt nicht in Frage da die Schnittstelle zu viele PIN's 
weg nimmt.

Dann können wir ja zu meiner ursprünglichen Frage zurück kommen, ich 
werde den ATtiny2313A gegen einen ATMega48 austauschen da der mehr 
Speicher bietet und sonst ist die Schaltung in Ordnung?

von C3 (Gast)


Lesenswert?

Samuel M. schrieb:
> ich
> werde den ATtiny2313A gegen einen ATMega48 austauschen da der mehr
> Speicher bietet und sonst ist die Schaltung in Ordnung?

Dein Konzept für die Anforderungen ist in Ordnung. Mach mal mit der 
aktuellen Idee weiter und lass Dich nicht von den Quatschköpfen 
durcheinander bringen.

Viele Grüße

von Wolfgang (Gast)


Lesenswert?

Samuel M. schrieb:
> Klasse und schon sind wir wieder bei der Lösung die ich sowieso schon
> habe denn RS232 kommt nicht in Frage da die Schnittstelle zu viele PIN's
> weg nimmt.

??????

von greenhorn (Gast)


Lesenswert?

holger schrieb:
> Wenn man den USART verwenden möchte rate ich dringend zu einem Quarz.

Dazu wird jeder raten, aber notwendig ist es nicht. Siehe oben. Musst 
dann eben immer die Bits 4 bis 7 wegwerfen, aber das sollte kein Problem 
sein, du überträgst nur sehr wenig Daten.

> ATtiny2313A würde ich nicht nehmen wenn das Programm in C geschrieben
> wird.
> 128Byte RAM ist da ein Lacher.

Da hat holger absolut Recht. Wenn du in C programmieren willst, dann 
nimm mindestens den ATtiny4313 (nachfolger des ATtiny2313A). Der Neue 
hat 256 Bytes SRAM und ist lustigerweise billiger als der alte.

Ich würd das kleine Programm lieber in Assembler schreiben als in C. 
Musst du aber selber wissen, geht beides.

Samuel M. schrieb:
> Dann können wir ja zu meiner ursprünglichen Frage zurück kommen, ich
> werde den ATtiny2313A gegen einen ATMega48 austauschen da der mehr
> Speicher bietet und sonst ist die Schaltung in Ordnung?

Mir gefällt die Idee und die Schaltung, kenn mich aber mit der 
Elektronik nicht so gut aus.

Natürlich kannst du statt des ATtiny4313 auch den ATmega48 nehmen, der 
bietet 512 Bytes SRAM, aber genauso viel Flash-Speicher wie der 
Attiny4313.

Wenn du wirklich den ATmega48 nimmst und ihn neu einkaufst, empfiehlt 
sich der neuere ATmega328, der ist genauso groß, praktisch 
pinkompatibel, hat aber bei allem 8x so viel Speicher und kostet etwas 
das Gleiche wie der kleine ATmega48.

von Glühbirne (Gast)


Lesenswert?

holger schrieb:
> Ich würde einen FT232RL nehmen.
>
> Und tu dir selber einen Gefallen und papp nen Quarz an die CPU.

Der FT232RL könnte dir sonst auch den Takt liefern...

Läuft bei mir mit einem Atmega8 und serieller Kommunikation wunderbar.

Gruß

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.