Forum: Mikrocontroller und Digitale Elektronik USB-Microcontroller für universelle Verwendung, I/O


von Bernd (Gast)


Lesenswert?

Hallo,

ich suche für verschiedene Projekte einen möglichst günstiges Modul mit 
usb Anschluss, min 5 digitale I, 3 digitale O, (TTL oder open Collector) 
5V sollte mit wenig Bauteilen steuerbar sein.
Stromversorgung über USB

Z.B. diese hier
Entwicklungsboard STM8S103F3P6
http://www.pollin.de/shop/dt/NTI3OTgxOTk-/Bausaetze_Module/Entwicklerboards/Entwicklungsboard_STM8S103F3P6.html

Arduino Micro
http://www.pollin.de/shop/dt/Mjc3OTgxOTk-/Bausaetze_Module/Entwicklerboards/ARDUINO_Micro.html

Programmiert werden diese über USB, was ja ok ist.

In der Realen Anwendung soll das Modul dann die Steuerung von Motoren 
und Endschaltern, Winkelgeber etc. übernehmen.

Der Host ( PC oder Raspberry) ist dann per USB angeschlossen und gibt 
Kommandos an das Modul oder frägt Statusdaten ab ( Wert des Resolvers 
z.b.)

Ist das mit diesen Modulen möglich oder ist die USB Schnittstelle 
ausschließlich zum übertragen der Programme da?

Viele Grüße
Bernd

von google (Gast)


Lesenswert?

Das STM8 geht nicht. USB ist nur für die Stromversorgung da.

von Jim M. (turboj)


Lesenswert?

> Programmiert werden diese über USB, was ja ok ist. [...]
> Entwicklungsboard STM8S103F3P6

Das STM8S103F3P6 Board wird über die USB Buchse nur mit Strom versorgt, 
der µC kennt kein USB. Programmiert wird über die 4-polige Stiftleiste.

> Arduino Micro

Dessen µC kennt USB, was man dann auch frei im Programm verwenden kann.

von Hansjörg (Gast)


Lesenswert?

Mit dem Arduino Micro sollte es funktionieren, für TTL oder Open 
Collector brauchst du aber externe Beschaltung.

von Frank K. (fchk)


Lesenswert?

Bernd schrieb:

> ich suche für verschiedene Projekte einen möglichst günstiges Modul mit
> usb Anschluss, min 5 digitale I, 3 digitale O, (TTL oder open Collector)
> 5V sollte mit wenig Bauteilen steuerbar sein.
> Stromversorgung über USB

Vorschlag: PIC16F1454 oder PIC18F2553. Sind nackte Chips mit 
USB-Hardware drin, lochrastergeeignet, 5V-Betrieb, einfach 
anzuschließen. Beim PIC16F1454 brauchst Du nicht einmal einen Quarz.

XC8 Compiler, MPLAB IDE und USB Stack (Microchip Application Library) 
gibts kostenlos auf microchip.com. Zum Programmieren brauchst Du ein 
PICKIT3 (Chinaclones ab 20€, Original etwa 50€).

fchk

von Hansjörg (Gast)


Lesenswert?


von Bernd (Gast)


Lesenswert?

Hallo,

vielen Dank für die guten Tipps,

da ich auf jeden fall noch externe Beschaltung benötige ist ein PIC eine 
alternative.

Wenn ich recht gesehen hab, hat der PIC16F1454 11 I/O anschlüsse, 2 für 
USB und 9 andere.

Da wäre die Konfiguration 5 digital Input, 3 digital Output, 1 Analog 
Input (Temperatursensor) theoretisch möglich.

Prinzipiell könnte man ja den PIC16 LF 1454 nehmen, und die 5 V per 
externe Schaltung nehmen. ( 12 V ist vorhanden, ein kleiner 
Festspannungsregler ist ja kein Problem )

Ansonsten den PIC16LF1459 wenn die Pins nicht reichen.

Viele Grüße
Bernd

von Frank K. (fchk)


Lesenswert?

Bernd schrieb:

> Wenn ich recht gesehen hab, hat der PIC16F1454 11 I/O anschlüsse, 2 für
> USB und 9 andere.
>
> Da wäre die Konfiguration 5 digital Input, 3 digital Output, 1 Analog
> Input (Temperatursensor) theoretisch möglich.

Der PIC16F1454 hat keinerlei Analogfunktionen. Da müsstest Du dann den 
PIC16F1455 nehmen.

> Prinzipiell könnte man ja den PIC16 LF 1454 nehmen, und die 5 V per
> externe Schaltung nehmen. ( 12 V ist vorhanden, ein kleiner
> Festspannungsregler ist ja kein Problem )

Hast Du 5V-Signale? Der PIC verträgt an seinen Eingängen nur Spannungen 
bis Vcc. Wenn Du 5V-Peripherie hast, kannst Du keinen LF-Typen 
verwenden.

Wenn Du einen 3.3V PIC nehmen kannst, empfehle ich einen PIC24FJ64GB002. 
Gibts als SDIP28. Dafür brauchst Du zwar einen Quarz für USB, aber es 
ist ein 16-Bit PIC und damit deutlich angenehmer zu programmieren. Das 
ist halt immer eine Abwägung zwischen Stückpreis (der PIC16F1454 ist die 
billigste Möglichkeit, ein 100% standardkonformes USB Device zu 
realisieren) und Entwicklungsaufwand.

von Linksammler (Gast)


Lesenswert?

Frank K. schrieb:
> er PIC16F1454 ist die
> billigste Möglichkeit, ein 100% standardkonformes USB Device zu
> realisieren

Wenns keine 10000er-Stückzahlen werden sollen:

So Billig-Arduino-Clone Boards für ein paar Dollar?

Standardkonformes USB, allerdings per Dediziertem USB->Seriell Wandler 
Chip, nicht im µC. (Kann ein Vor- oder Nachteil sein. Bei 
RasPI-Basteleien: eher Vorteil)

Bootloader ist fertig drauf, IO-Pins gibts genug, auch Analog, und das 
ganze Arduino-Framework muss man ja nicht verwenden. Der Bootloader 
lässt sich auch direkt mit AVRDude ansprechen oder austauschen.

von Oliver J. (skriptkiddy)


Lesenswert?

Ein 60cent Atmega8 aus China und ne Hand voll Hühnerfutter könnten 
deinen Zweck erfüllen. V-USB heißt das Stichwort [1]. Da gibts 2 
Projekte [2,3].
Ginger ist das flexiblere von Beiden. Außerdem sind diese Projekte mit 
Minimalaufwand auf so ziemlich jeden AVR mit genug Speicher portierbar.

Grüße Oliver

[1] http://www.obdev.at/products/vusb/index-de.html
[2] http://www.obdev.at/products/vusb/prjdetail.php?pid=136
[3] http://www.obdev.at/products/vusb/prjdetail.php?pid=51

Edit: Die Firmwares können auch auf nen fertiges Board gebracht werden, 
welches für V-USB designt wurde. Ich nehme gerne die USBasp-Clones aus 
China her. Ein tinyusbboard wäre wahrscheinlich perfekt für deine 
Bedürfnisse. Die gibts günstig bei Ebay.

: Bearbeitet durch User
von Michael S. (rbs_phoenix)


Lesenswert?

Bernd schrieb:
> Prinzipiell könnte man ja den PIC16 LF 1454 nehmen, und die 5 V per
> externe Schaltung nehmen.

Doch wo ist da der Sinn? Wenn du 5V am Ausgang haben willst, ist es doch 
sinnvoller, den PIC auch mit 5V zu versorgen und nicht absichtlich 3,3V 
o.ä. und dann mit einem Levelshifter drn Ausgang auf 5V zu bringen.

Den normalen 16Fxxxx kannst du meist zwschen 1,8V und 5V betreiben, den 
LF nur bis 3,6V. Der Unterschied ist im Grunde nur, dass die LF PICs 
weniger Strom ziehen, interessant also bei Batterie betriebenen 
Schaltungen. Wenn USB dran ist, bekommste den Strom ja daher.

Der Vorteil der ein-Chip-Lösung ist mMn, dass es besser in ein Projekt 
bzw. in eine zu entwickelnde Schaltung eingebaut werden kann.

von neuer PIC Freund (Gast)


Lesenswert?

Die PIC-Lösung für ein Device sieht in der Grundausstattung so aus:
1xPIC16F1459 + USB-Buchse + IC-Sockel + Entstörkondensatoren & co + 
Pinleiste.
Macht zusammen bei Reichelt 2.78€. Nun müsstest du die Bauteile noch 
irgendwie befestigen (Lochraster, ...) und programmieren (Pickit3, evtl. 
Pickit2, clones davon, ...). Lötkolben und Draht vorausgesetzt. Da 
nerven die Versandkosten voll rum.
Dafür bekommst du eine standardkonforme USB-Lösung, welche du 
individuell in jedes einzelne Projekt einpflegen kannst.


Alternativ mehrere USBasp Clones. Kosten vielleicht auch 2.78 pro Stück 
aus China. Dann könntest du auf die Clones für die Bequemlichkeit einen 
Bootloader brennen.

Der PIC ist die Lösung, falls du später mal eine einigermaßen schnelle 
USB-Anbindung benötigst. Das vusb-Geraffel ist o.k., solange die 
Aktionen entsprechend langsam sein können, und deine USB-Hubs nicht 
meckern.

p.s. Ardunios habe ich mir noch nicht angeschaut.

von Panorama (Gast)


Lesenswert?

Bernd schrieb:
> In der Realen Anwendung soll das Modul dann die Steuerung von Motoren
> und Endschaltern, Winkelgeber etc. übernehmen.

Dafür würde ich keinen "nackten" µC einsetzen. Schutzbeschaltung für die 
Eingänge, Ausgangstreiber, evtl. Spannungsteiler 24V->5V würde ich noch 
vorsehen. Dann lohnt das Lochraster-Gebastel nicht mehr, mach es also 
gleich vernünftig :)

von Henrik Haftmann (Gast)


Lesenswert?

Noch ein Hinweis zu V-USB:

V-USB ist komplett ungeeignet, wenn man neben USB asynchron noch etwas 
zu tun hat, so wie hier die Schrittmotorsteuerung. Denn während 
USB-Kommunikation sind die Interrupts gesperrt und die CPU 100% 
beschäftigt.

Auch die Fixierung zu Low-Speed-USB macht V-USB zum idealen Kandidaten 
für Tastaturen, Mäuse, Joysticks, Funkuhr-Empfänger, RGB-LEDs (WS8212 
oder Hardware-PWM), Bootloader, Zeitschaltuhren, Thermo- und Hygrometer 
u.v.a.m., aber eben nicht für Schrittmotoren (wegen Interrupts), 
USB-Oszilloskope (wegen Datenmenge) und serieller 
Schnittstellenemulation (Full-Speed erforderlich).

Lösungsmöglichkeiten heutzutage (2017):

* Ein Pro Micro (mit ATmega32U4, faktisch ein Arduino Leonardo) ist 
dermaßen preiswert zu haben und kompatibel zu Steckbrettern, dass es 
sich nicht mehr lohnt, mit einem einzelnen Mikrocontroller anzufangen. 
Auch nicht bei beabsichtigten Kleinserien mit bis zu 100 Stück.
Absolute Anfänger sollten damit anfangen, denn von Seiten Microchip gibt 
es nichts vergleichbares mit einer dermaßen breiten Community (wo man 
weiterfragen kann).

* Ein PIC16F1459 (kleiner sollte er bei Deinen Anforderungen an I/Os 
nicht sein, auch wenn ein PIC16F1455 geradeso reichen würde) ist IMHO 
Quälerei beim Programmieren (für Anfänger) aber auch eine tolle 
Herausforderung (für Freaks). Denn nur diese Lösung kommt ohne Quarz 
aus. Wenn's denn läuft sehr gut für Massenproduktion (>10000 Stück).

* PIC18F ist genauso aufwändig wie ATmega32U4 (man braucht Quarz und 
etwas Außenbeschaltung), aber ersteren gibt's auch in Durchsteck. Gut 
für mittlere Stückzahlen. Hier nimmt man, was einem besser gefällt. Ich 
bevorzuge Atmel wegen des ausgereiften freien C-Compilers avr-gcc.

* Begibt man sich auf die Schiene von 16- oder 32-Bit-Controllern, wird 
es zwar nicht viel teurer, aber da gibt es keine 5-V-I/O mehr! Entweder 
man legt gleich alles für 3 V aus, oder man muss sich mit 
Pegelkonvertern (Levelshiftern) herumärgern.

* Dass man Schrittmotoren nicht „nackt“ am Mikrocontroller betreiben 
sollte ist ein Ammenmärchen. Vor allem wenn sich dieser einfach wechseln 
lässt (Durchsteck oder Pro Micro). Es kommt auf die Leistung an! 
Genauer: Die Leistung des stärksten Motors, zu dem der DAU ungeschirmte 
Signalleitungen parallel legen wird. Zum Motor hin ist das kein Problem, 
denn hier werden Schrittmotor-Treiberschaltkreise oder MOS-Brücken 
eingesetzt (bitte keinen L298 mehr verwenden!!). Damit ergibt sich die 
Trennung zum Leistungsteil automatisch. Wenn man bei Motorleistungen ab, 
ich sag mal, 10 W, Serienwiderstände (10 kΩ) in die Nähe des Controllers 
in die Abfrageleitungen für Endschalter einbaut, ist's hinreichend 
DAU-sicher entkoppelt, dass nichts kaputtgeht.

* Will man mehrere Schrittmotoren koordiniert bewegen (nicht nur auf 
Geraden, sondern Kreise und Splines „malen“), sollte man von vornherein 
auf 32-bit-Controller tendieren. Einen Einstieg bietet der Arduino Due.
Wie oben erwähnt, 3-V-I/O-Spannung als Pferdefuß, mehr nicht.

von Jim M. (turboj)


Lesenswert?

Henrik Haftmann schrieb:
> * Begibt man sich auf die Schiene von 16- oder 32-Bit-Controllern, wird
> es zwar nicht viel teurer, aber da gibt es keine 5-V-I/O mehr!

Falsch. Die gibts auch noch:

NXP LPC17xx existiert und hat 5V tolerante I/Os. Nuvoton hat Cortex-M0 
mit weitem Bereich (2.5 bis 5.5V) - aber man braucht für die USB 
Signalpegel ohnehin meistens eine 3,3V Quelle, die bei Nuvoton aber 
integriert ist.

Die Dinger sind auch schon ein paar Jahre am Markt...

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.