Forum: Mikrocontroller und Digitale Elektronik Software + ATmega32 Anbindung


von tom (Gast)


Lesenswert?

Hallo,

ich bin auch der Suche nach der Lösung für folgende Problematik:

Ich besitze einen ATmega32, der über Tastendruck zwei Relais ansteuern 
kann (beide jeweils getrennt, also zwei Taster für zwei Relais). Die 
sehr simple Software ist mir jedoch nicht genug, gerne würde ich die 
Relais auch via USB oder über das Netzwerk anstuern. Mein Probem ist, 
ich habe keine Ahnung wie ich die Treiber hinbekommen kann. Wie erstelle 
ich die Kommunikation (am liebsten USB, kein RS232, da die Software 
universell an verschiedenen Notebooks betrieben werden soll und kein 
einer mehr über diese Schnittstelle verfügt)?

Wie schaffe ich es der Software zu sagen, sende über USB high oder low, 
bzw. empfange high oder low (und wie teile ich dem PC überhaupt mit, 
dass ein Gerät eingesteckt wurde, wie es z. B. USB Sticks tun)?

Vielen Dank für eure Hilfe

von fuelre F. (fuelre)


Lesenswert?

"einfach" eine USB UART Bridge mit einem FTDI Chip basteln.

einen Treiber mit Codebeispielen für zig Programmiersprachen gibt es bei 
FTDI auf der Homepage.

von Ralf G. (ralg)


Lesenswert?

fuelre F. schrieb:
> "einfach" eine USB UART Bridge mit einem FTDI Chip basteln.

Oder eine fertige verwenden.

von Steffen (Gast)


Lesenswert?

tom schrieb:
> Hallo,
>
> ich bin auch der Suche nach der Lösung für folgende Problematik:

***google

>
> Ich besitze einen ATmega32, der über Tastendruck zwei Relais ansteuern
> kann (beide jeweils getrennt, also zwei Taster für zwei Relais). Die
> sehr simple Software ist mir jedoch nicht genug, gerne würde ich die
> Relais auch via USB oder über das Netzwerk anstuern. Mein Probem ist,
> ich habe keine Ahnung wie ich die Treiber hinbekommen kann. Wie erstelle

Wenn du keine Ahung hast dann eher was fertiges kaufen.

> ich die Kommunikation (am liebsten USB, kein RS232, da die Software
> universell an verschiedenen Notebooks betrieben werden soll und kein
> einer mehr über diese Schnittstelle verfügt)?
>
> Wie schaffe ich es der Software zu sagen, sende über USB high oder low,
> bzw. empfange high oder low (und wie teile ich dem PC überhaupt mit,
> dass ein Gerät eingesteckt wurde, wie es z. B. USB Sticks tun)?
>
> Vielen Dank für eure Hilfe

Wenn du selber bauen willst, dann gibt es viel, VUSB, USB Seriel Wandler 
oder vielleicht per Netzwerk?

von tom (Gast)


Lesenswert?

danke an alle die sich gemeldet haben, jedoch habe ich die problematik 
wohl falsch erklärt. mir geht es darum zu erfahren, wie die 
kommunikationssoftware auszusehen hat. also z. B. in C?

hat jemand ein beispiel?

von Eumel (Gast)


Lesenswert?

tom schrieb:
> danke an alle die sich gemeldet haben, jedoch habe ich die problematik
> wohl falsch erklärt. mir geht es darum zu erfahren, wie die
> kommunikationssoftware auszusehen hat. also z. B. in C?
>
> hat jemand ein beispiel?

fuelre F. schrieb:
> "einfach" eine USB UART Bridge mit einem FTDI Chip basteln.
>
> einen Treiber mit Codebeispielen für zig Programmiersprachen gibt es bei
> FTDI auf der Homepage.

von tom (Gast)


Lesenswert?

Eumel schrieb:
"mit Codebeispielen für zig Programmiersprachen gibt es bei
FTDI auf der Homepage."

hmm.. ich hab mich durchgewühlt.. du siehst warscheinlich sachen, die 
ich nicht sehen kann, oder wo sind codebeispiele in c, etc.??

von Karl H. (kbuchegg)


Lesenswert?

Ich kenn die Codebeispiele nicht.

Der springende Punkt beim FTDI liegt darin, dass du dich um den USB-Teil 
überhaupt nicht kümmern musst.
Der FTDI Treiber installiert einen virtuellen Com-Port am PC, so dass 
das PC-Programm den Mega anspricht, so als ob er an einer seriellen 
Schnittstelle sitzen würde.
Auf dem Mega hingegen hängt der FTDI Chip, der vom Mega wie eine 
serielle Schnittstelle über die USART angesprochen wird.

D.h. aus Sicht des/der Programmierer handelt es sich um eine ganz 
normale Kommunikation über eine serielle Schnittstelle. Dass da ein USB 
Kabel dazwischen sitzt, darum muss sich keines der beiden Programme 
kümmern. Das behandeln der FTDI-IC mit seinem am PC installierten 
Treiber komplett eigenständig.

Und das ist auch gut so. Denn so einfach eine serielle Kommunikation 
auch ist, so kompliziert ist eine reine USB-Kommunikation. Die willst du 
dir mit Sicherheit nicht antun, wenn es eine Möglichkeit gibt, wie man 
da trivial drumm herum kommen kann.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Hinweis:
Derartige FTDI-Bridges gibt es auch fertig in Form von Zwischensteckern, 
die am PC in einen USB Port eingesteckt werden und die dann eine normale 
9-polige SUB-D Buchse haben, an der man ein normales RS232 Kabel 
anstecken kann.

von Bernd (Gast)


Lesenswert?

Der FTDI ist für deinen ATmega nichts anderes als ein UART-Teilnehmer.
Dank des FT232-Bausteins (den es z.B. bei Watterott für kleines Geld 
fertig auf der Platine gibt) weis dein ATmega garnicht dass er an einem 
USB eines PCs hängt.

Du brauchst nur deinen UART auswerten, wie es z.B. in diesem Tutorial 
gezeigt wird.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART
Den Rest erledigt der FT232 von FTDI.

Du solltest übrigens mit den Spannungen aufpassen.
Versorge deinen Mikrocontroller und die Relais nur über USB, wenn du das 
Power-Management machst.
(Nur Einschalten wenn das Betriebssystem sein OK gegeben hat,...)

Ansonsten versorge deine Schaltung besser über ein eigenes Netzteil.
Verbinde dabei aber KEINESFALLS die Versorgungsspannung des 
Mikrocontrollers mit den +5V des USB!

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Hallo Tom,

http://www.libusb.org

ist das was Du suchst.

Gruß

Olaf

von c-hater (Gast)


Lesenswert?

Olaf Dreyer schrieb:

> http://www.libusb.org
>
> ist das was Du suchst.

Ich bezweifele ich ganz ernsthaft, daß es das ist, was er sucht.

Da ist ja garkein fertiger C-Code für genau sein Problem dabei, den er 
einfach per Copy&Paste in sein Projekt einfügen könnte...

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Hi will hier nicht lange diskutieren, aber er suchte eine Anlaufstelle 
um die Kommunikation auf dem USB zu verstehen. Nicht Vorschläge wie es 
einfacher geht. Ich habe das auch mit libusb hinbekommen und ich brauche 
keine krude Seriell-Emulation.

Gruß

Olaf

von Karl H. (kbuchegg)


Lesenswert?

Olaf Dreyer schrieb:
> Hi will hier nicht lange diskutieren, aber er suchte eine Anlaufstelle
> um die Kommunikation auf dem USB zu verstehen.

Lies dir das Eröffnungsposting durch.
Ich hab nicht den Eindruck, dass er so weit ist, sich auf die 
technischen Feinheit von USB einlassen zu können.

> Nicht Vorschläge wie es
> einfacher geht. Ich habe das auch mit libusb hinbekommen und ich brauche
> keine krude Seriell-Emulation.

Hier weiß keiner, was und wie groß dein Vorwissen war, um die libusb in 
Betrieb zu nehmen. Aber alleine dieser Teil der Original-Fragestellung
> Wie schaffe ich es der Software zu sagen, sende über USB high oder
> low, bzw. empfange high oder low (und wie teile ich dem PC überhaupt
> mit, dass ein Gerät eingesteckt wurde, wie es z. B. USB Sticks tun)?
sagt mir, dass es selbst mit einer USART für ihn noch schwer genug ist.
Hier im Forum muss man oft genug zwischen den Zeilen lesen. Die Wünsche 
sind da nämlich des öfteren erheblich größer als das Können der 
Fragenden.

: Bearbeitet durch User
von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Da hast Du sicher Recht, Karl Heinz,
was sein (scheinbares) Vorwissen betrifft, ich wollte ja nur die Frage 
nach
der Handhabung der USB-Schnittstelle beantworten.
Dann kann er vergleichen und entscheiden, welche Weg für Ihn der 
richtige ist.

Gruß

Olaf

von Denis (Gast)


Lesenswert?

hallo,

ich finde das thema sehr interessant und hab das mit der usb-lib mal 
versuchen wollen. leider werde ich davon erschlagen. ich habe eine 
serielle rs232 verbindung zu meinem chip und alles klappt super mit zb 
hyperterminal.

wie kann ich aber werte mit anderer software auslesen? ich schreibe ein 
java programm und es wäre gut, die werte vom chip einlesen zu können - 
wie gesagt rs232 und hyperterminal funktioniert.

leider fehlt mir die übertragung in meine eigene software - wäre toll, 
wenn jdm einen tipp hat.

danke

von TestX .. (xaos)


Lesenswert?

Denis schrieb:
> wie kann ich aber werte mit anderer software auslesen? ich schreibe ein
> java programm und es wäre gut, die werte vom chip einlesen zu können -
> wie gesagt rs232 und hyperterminal funktioniert.
java+seriell wäre librxtx das stichwort (für linux + windows verfügbar)

von Damian (Gast)


Lesenswert?

tom schrieb:
> hat jemand ein beispiel?

Keine high-end- oder high-speed-lösung, aber sie ist robust und 
funktioniert:

https://guloshop.de/shop/USB-TTL-ADC-PWM-Signalwandler:::10.html

Die Software davon ist opensource, kannst einfach runterladen und 
anpassen und nachbauen

von Mike (Gast)


Lesenswert?

tom schrieb:
> Wie schaffe ich es der Software zu sagen, sende über USB high oder low,
> bzw. empfange high oder low

Das hat mit USB wenig zu tun. Über USB werden kein high oder low im 
Sinne von Schaltzuständen geschickt. Das ist Aufgabe der Software, 
Kommandos über USB zu verschicken, die am Empfänger nach Interpretation 
in Schaltpegel umgesetzt werden. Wenn du einen µC nimmst, der von Haus 
aus USB unterstützt, z.B. einen ATmega32U2, wie er auf dem Arduino Pro 
Micro drauf ist, kannst du dir einen Haufen Zirkus sparen.

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.