Forum: Mikrocontroller und Digitale Elektronik ATMEGA32U4 Schaltplan


von Ben K. (bkaiser)



Lesenswert?

Hallo,

ich beschäftige mich seit einiger Zeit mit der AVR Familie und bin über 
den Weg Arduino dazu gekommen mich mehr mit der Materie zu befassen. Im 
Moment sauge ich alles an Infos auf die ich finden kann, da ich 
allerdings Quereinsteiger bin, fehlt mir hier und da noch Wissen. 
Generell versuche ich nicht nur nachzubauen, sondern auch zu verstehen, 
was und warum ich etwas mache. Nun bin ich an einem Punkt, an dem ich 
weg von Arduino eine eigene Schaltung mit einem ATMEGA32U4 aufbauen 
möchte. Ich weiß nicht, ob dies hier das richtige Forum ist, aber ich 
würde mich freuen, wenn jemand mal meinen Schaltplan überfliegen könnte 
und mir vielleicht Tipps geben kann, wo es noch zu Problemen kommen kann 
(gerne auch mit Verweis auf Quellen mit mehr Infos, um meinen unbändigen 
Wissensdurst zu stillen. ;-).

Bei dem ganzen handelt es sich nicht um Raketentechnik, sondern eine 
Schaltung bei der es darum geht eingaben entgegen zu nehmen und später 
an den Rechner weiterzugeben (via Gamepad bzw. Joystick HID). Das ganze 
besteht aus einem ATMEGA32U4 und zwei Input Erweiterungen (MCP28017). 
Zusätzlich noch einen Connector für WS2812b LEDs sowie ein Nextion 
Display. Diese beiden werden im Normalfall über eine externe Stromquelle 
betrieben. Ich habe aber zusätzlich noch eine Lötbrücke eingebaut, um 
diese auch mit der USB Power zu betreiben (sofern z.B. nur 1-2 WS2812b 
benötigt werden).

Ich hoffe, dass keine großen Klöppse in dem Plan zu finden sind, aber 
gibt halt Stellen an denen ich mir unsicher bin (z.B. bei den Werten für 
die Caps für den Crystal, welcher eine Load Capacitance von 12pF hat die 
als Grundlage für meine Berechnung dienten).

Ach ja, da ich viele englische Tutorials, Anleitungen etc. lese, muss 
ich zugeben, dass mir etwas die Deutschsprachigen Begrifflichkeiten 
fehlen. Ich bitte um Nachsicht. :-)

Herzlichen Dank,

Benjamin

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wofür sollen zwei parallel geschaltete USB-Buchsen sein? Da steht was 
von power supply (OK), aber es gehen auch die Datenleitungen mit ran. 
Das passt eher nicht.

Wenn dein Quarz nur 12 pF Lastkapazität braucht, bist du mit deinen je 
20 pF schon weit drüber: die ergeben in Reihe geschaltet bereits 10 pF, 
aber der ATmega32U4 bringt ja auch noch was ein.  Pi * Daumen würde ich 
da eher mit 2 x 12 pF ins Rennen gehen.

/RESET könnte noch einen kleinen Kondensator und eine Schutzdiode 
vertragen zur Verbesserung der Störsicherheit. Siehe Appnote AVR040. 
(Falls du aber jemals mit debugWIRE debuggen möchtest, darf der 
Kondensator nicht installiert sein. In diesem Falle erst im fertigen 
Gerät installieren.)

An jedes Vcc/GND-Paar gehört ein 100-nF-Kondensator dran (und zwar 
nahe dran). Da fehlen also mindestens 3 Stück.

Für USB wäre es noch sinnvoll, ein Schutzdioden-Array vorzusehen. Gibt's 
von verschiedenen Herstellern. Wir haben mittlerweile schon auf zwei 
oder drei Xplained-Mini-Boards kaputte ATmega32U4, die „einfach so mal“ 
in der täglichen Arbeit gestorben sind, jeweils mit kaputten USB-Pins 
(der Rest dieser Controller funktioniert noch). Da hat Atmel-Microchip 
leider auch zu viel gespart.

: Bearbeitet durch Moderator
von ... (Gast)


Lesenswert?

Zwischen Vcc und AVcc gehört eine Drossel.
Jeder Versorgungsspannungspin benötigt einen eigenen Kondensator so nah 
wie möglich am Pin gegen Masse.

Benjamin K. schrieb:
> dass mir etwas die Deutschsprachigen Begrifflichkeiten
> fehlen.

Kein Problem, die versteht sowieso niemand. Dokumenationen am besten 
immer in der Ursprungssprache lesen und auch so beschreiben.

: Bearbeitet durch Moderator
Beitrag #5769738 wurde von einem Moderator gelöscht.
von Ben K. (bkaiser)


Lesenswert?

Hallo,

Jörg W. schrieb:
> Wofür sollen zwei parallel geschaltete USB-Buchsen sein? Da steht
> was von power supply (OK), aber es gehen auch die Datenleitungen mit ran.
> Das passt eher nicht.
Es werden nie beide gleichzeitig benutzt, sondern entweder ein USB Port 
Typ B benutzt, oder, falls die LEDs und das Display mit externer 
Stromversorgung betrieben werden sollen, der 6 PIN connector (wovon 4 
Pins für den USB Port und 2 Pins für die externe Spannungsversorgung 
gedacht sind). Heißt: Entweder man nutzt nur den USB Port Typ B oder den 
anderen Stecker, der zusätzlich noch die externe Spannungsversorgung 
inkludiert. Deshalb teilen die sich die Datenleitungen.

> Wenn dein Quarz nur 12 pF Lastkapazität braucht, bist du mit deinen je
> 20 pF schon weit drüber: die ergeben in Reihe geschaltet bereits 10 pF,
> aber der ATmega32U4 bringt ja auch noch was ein.  Pi * Daumen würde ich
> da eher mit 2 x 12 pF ins Rennen gehen.
Mmmmh... ok? Ich bin da nach folgendem Blogeintrag von Adafruit 
vorgegangen:

https://blog.adafruit.com/2012/01/24/choosing-the-right-crystal-and-caps-for-your-design/
1
C1, C2 = 2*CL – 2*Cstray

Wobei ich von einem Cstray von 2 ausgegangen bin (da bin ich mir aber 
unsicher, wie man diesen Wert definiert und in Beispielen immer von Pi 
mal Daumen zwischen 2 und 5 ausgegangen wird). Also
1
2 * 12 - 2 * 2 = 20

Die Arduino Referenzdesigns arbeiten hier meist sogar mit 22pF. Mmmmh...

> /RESET könnte noch einen kleinen Kondensator und eine Schutzdiode
> vertragen zur Verbesserung der Störsicherheit. Siehe Appnote AVR040.
> (Falls du aber jemals mit debugWIRE debuggen möchtest, darf der
> Kondensator nicht installiert sein. In diesem Falle erst im fertigen
> Gerät installieren.)
Danke, dass werde ich mir mal anschauen. :-)

> An jedes Vcc/GND-Paar gehört ein 100-nF-Kondensator dran (und zwar
> nahe dran). Da fehlen also mindestens 3 Stück.
Ich bin bisher davon ausgegangen, dass dies nur direkt vor ICs nötig ist 
und habe die eigentlich eingebaut (C4, C8, C5, wobei ich mir beim ATMEGA 
unsicher bin). Kannst du da etwas genauer werden?

> Für USB wäre es noch sinnvoll, ein Schutzdioden-Array vorzusehen. Gibt's
> von verschiedenen Herstellern. Wir haben mittlerweile schon auf zwei
> oder drei Xplained-Mini-Boards kaputte ATmega32U4, die „einfach so mal“
> in der täglichen Arbeit gestorben sind, jeweils mit kaputten USB-Pins
> (der Rest dieser Controller funktioniert noch). Da hat Atmel-Microchip
> leider auch zu viel gespart.
Ok, auch das werde ich mir anschauen. Ich habe aktuell eine PTC 
Sicherung (F1 im Plan) zwischen USB und Rest eingebaut mit 500ma als 
Überspannungsschutz und zur Absicherung des USB Ports. Da muss ich mich 
noch mehr einlesen denke ich. So wie ich das verstehe, platziere ich 
diese aber nach der PTC Sicherung? :-)

Herzlichen Dank,

Benjamin

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite



Lesenswert?

Benjamin K. schrieb:

> Heißt: Entweder man nutzt nur den USB Port Typ B oder den
> anderen Stecker, der zusätzlich noch die externe Spannungsversorgung
> inkludiert. Deshalb teilen die sich die Datenleitungen.

Naja, normalerweise macht man sowas nicht bei USB. Du hast dann 
mindestens in einer von beiden Konstellationen „flatternde 
Leitungsenden“.

Andererseits hatte ich an Highspeed-USB gedacht (habe ich gerade in der 
Mache), bei 480 Mbit/s ist das tatsächlich ein Thema.  Wir haben das 
deshalb dann so gelöst:
1
                ^ Vusb                       USB
2
  ----+         |       +----+              Buchse
3
      |         o    /--|    |--\            ===
4
      |---------o---/   +----+   \-----------===
5
      |---------o---\   +----+   /-----------===
6
      |         o    \--|    |--/            ===
7
  ----+         |       +----+
8
              ¯¯¯¯¯      0-Ω-
9
               GND     Widerstände

Die 0-Ω-Widerstände (SMD) werden dann nur bestückt, wenn man die 
USB-Buchse benutzen will. Will man den 4-Pin-Stecker „in der Mitte“ 
benutzen, bleiben sie offen.

Andererseits, bei nur 12 Mbit/s von Fullspeed-USB kann man wohl die 
Kirche im Dorf lassen und das tatsächlich so bauen, wie du dachtest. Die 
Länge der freien Leitungsenden des jeweils gerade nicht benutzten 
Anschlusses sollte man aber minimal halten.

> Mmmmh... ok? Ich bin da nach folgendem Blogeintrag von Adafruit
> vorgegangen:
>
> 
https://blog.adafruit.com/2012/01/24/choosing-the-right-crystal-and-caps-for-your-design/
>
>
1
C1, C2 = 2*CL – 2*Cstray

Passt schon, aber ich hätte 2 * 5 pF für die parasitären Kapazitäten 
angesetzt. Das Datenblatt schweigt sich leider aus.

Also vielleicht dann eher 15 pF.

> Die Arduino Referenzdesigns arbeiten hier meist sogar mit 22pF. Mmmmh...

Die benutzen vermutlich einen Quarz mit höherer geforderter 
Lastkapazität.

>> An jedes Vcc/GND-Paar gehört ein 100-nF-Kondensator dran (und zwar
>> nahe dran). Da fehlen also mindestens 3 Stück.

> Ich bin bisher davon ausgegangen, dass dies nur direkt vor ICs nötig ist
> und habe die eigentlich eingebaut (C4, C8, C5, wobei ich mir beim ATMEGA
> unsicher bin). Kannst du da etwas genauer werden?

Meinst du, der AVR wäre kein IC? ;-)

Diese Stützkondensatoren sind an allen CMOS-ICs essenziell; CMOS braucht 
keinen statischen Strom (außer Leckstrom), aber in dem Moment, wo Gatter 
umschalten (und das machen sie in einer getakteten Schaltung laufend) 
müssen interne Leitungskapazitäten umgeladen werden.  Dabei wird für 
eine sehr kurze Zeit ein Stromimpuls aus der Versorgung entnommen.  Ohne 
die Stütz-Cs würde dabei an der Zuleitungsinduktivität eine recht hohe 
Spannung abfallen, sodass die Betriebsspannung einbricht.  Die 
100-nF-Keramikkondensatoren an allen Betriebsspannungspins federn das 
ab.

>> Für USB wäre es noch sinnvoll, ein Schutzdioden-Array vorzusehen.

> Ok, auch das werde ich mir anschauen. Ich habe aktuell eine PTC
> Sicherung (F1 im Plan) zwischen USB und Rest eingebaut mit 500ma als
> Überspannungsschutz und zur Absicherung des USB Ports. Da muss ich mich
> noch mehr einlesen denke ich. So wie ich das verstehe, platziere ich
> diese aber nach der PTC Sicherung? :-)

Nein, es geht hier nicht um die Versorgung, sondern um die 
USB-Datenleitungen deines Controllers. Die sind ansonsten ungeschützt 
gegenüber allen Umwelteinflüssen.  Anbei mal eine Appnote von Würth. 
Das ist vielleicht schon ein wenig übertrieben :), aber du solltest 
zumindest eine Idee davon bekommen.

Wie schon geschrieben, Xplained-Mini-Boards, die das genauso lax 
handhaben wie deine Schaltung, sind uns bereits in mehr als einem Fall 
gestorben.

: Bearbeitet durch Moderator
von Thomas Malwinter (Gast)


Lesenswert?

Lade die Leiterplattendateien zusätzlich hoch! So lässt sich es leichter 
(zb KiCAD) ansehen

von Ben K. (bkaiser)


Lesenswert?

Huhu,

Jörg W. schrieb:

> Benjamin K. schrieb:
>>> An jedes Vcc/GND-Paar gehört ein 100-nF-Kondensator dran (und zwar
>>> nahe dran). Da fehlen also mindestens 3 Stück.
>> Ich bin bisher davon ausgegangen, dass dies nur direkt vor ICs nötig ist
>> und habe die eigentlich eingebaut (C4, C8, C5, wobei ich mir beim ATMEGA
>> unsicher bin). Kannst du da etwas genauer werden?
> Meinst du, der AVR wäre kein IC? ;-)
> Diese Stützkondensatoren sind an allen CMOS-ICs essenziell; CMOS braucht
> keinen statischen Strom (außer Leckstrom), aber in dem Moment, wo Gatter
> umschalten (und das machen sie in einer getakteten Schaltung laufend)
> müssen interne Leitungskapazitäten umgeladen werden.  Dabei wird für
> eine sehr kurze Zeit ein Stromimpuls aus der Versorgung entnommen.  Ohne
> die Stütz-Cs würde dabei an der Zuleitungsinduktivität eine recht hohe
> Spannung abfallen, sodass die Betriebsspannung einbricht.  Die
> 100-nF-Keramikkondensatoren an allen Betriebsspannungspins federn das
> ab.
Ja, jetzt wo du es sagst fällt es mir auch auf. :-) Ich werde mal 
versuchen die noch unter zu bringen. In den Arduino Referenz Designs 
habe ich irgendwo gelesen, dass ein 100nF an AREF ausreichen soll und 
daran halten sich auch alle Designs, die ich bisher gesehen habe.

>>> Für USB wäre es noch sinnvoll, ein Schutzdioden-Array vorzusehen.
>> Ok, auch das werde ich mir anschauen. Ich habe aktuell eine PTC
>> Sicherung (F1 im Plan) zwischen USB und Rest eingebaut mit 500ma als
>> Überspannungsschutz und zur Absicherung des USB Ports. Da muss ich mich
>> noch mehr einlesen denke ich. So wie ich das verstehe, platziere ich
>> diese aber nach der PTC Sicherung? :-)
> Nein, es geht hier nicht um die Versorgung, sondern um die
> USB-Datenleitungen deines Controllers. Die sind ansonsten ungeschützt
> gegenüber allen Umwelteinflüssen.  Anbei mal eine Appnote von Würth.
> Das ist vielleicht schon ein wenig übertrieben :), aber du solltest
> zumindest eine Idee davon bekommen.
> Wie schon geschrieben, Xplained-Mini-Boards, die das genauso lax
> handhaben wie deine Schaltung, sind uns bereits in mehr als einem Fall
> gestorben.
Das macht alles Sinn und ich werde den STF202-22T1G von ON-Semicon 
verbauen. So wie ich das sehe, spare ich mir dann auch die beiden 
Widerstände an den Datenleitungen. :-)

https://datasheet.lcsc.com/szlcsc/ON-Semicon-ON-STF202-22T1G_C233431.pdf

Herzlichen Dank für all die Infos!

MfG,

Benjamin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du solltest Dir dringend noch mal die Stromversorgungsanschlüsse der 
MCP23017 ansehen.

So, wie Du sie gezeichnet hast, werden die MCP23017 sehr schnell warm 
und werden die Funktion verweigern.

von Ben K. (bkaiser)


Lesenswert?

Hallo,

Rufus Τ. F. schrieb:
> Du solltest Dir dringend noch mal die Stromversorgungsanschlüsse
> der
> MCP23017 ansehen.
>
> So, wie Du sie gezeichnet hast, werden die MCP23017 sehr schnell warm
> und werden die Funktion verweigern.

Danke, aber verrätst du mir auch noch, wonach ich suchen muss?

MfG,

Benjamin

von Rene K. (xdraconix)


Lesenswert?

Benjamin K. schrieb:
> Hallo,
>
> Rufus Τ. F. schrieb:
>> Du solltest Dir dringend noch mal die Stromversorgungsanschlüsse
>> der
>> MCP23017 ansehen.
>>
>> So, wie Du sie gezeichnet hast, werden die MCP23017 sehr schnell warm
>> und werden die Funktion verweigern.
>
> Danke, aber verrätst du mir auch noch, wonach ich suchen muss?
>
> MfG,
>
> Benjamin

Ich kann mir da auch gerade kein Reim drauf machen. VDD und VSS sind 
korrekt angeschlossen.

von Jobst Q. (joquis)


Lesenswert?

Nach der Bedeutung von VSS und VDD.

von Wolfgang (Gast)


Lesenswert?

Benjamin K. schrieb:
> Danke, aber verrätst du mir auch noch, wonach ich suchen muss?

Bei einem N-Kanal MOSFET muss die Spannung am Drainanschluss größer als 
am Sourceanschluss sein. Sonst gibt es Probleme mit der Body-Diode.
VDD muss folglich höher als VSS sein.

von Rene K. (xdraconix)


Lesenswert?

Ahhhhh... jetzt sehe ich es auch :-D Er hat es quasi verkehrt herum 
gemacht.

Da es ja scheinbar ein gewerbliches Produkt wird. Würde ich mir über die 
Sache mit der USB (Pfostenleiste, Buchse) einen anderen Gedanken machen 
als diesen.

von Wolfgang (Gast)


Lesenswert?

Rene K. schrieb:
> Ahhhhh... jetzt sehe ich es auch :-D Er hat es quasi verkehrt herum
> gemacht.

Spätestes wenn im Schaltbild der Gnd-Anschluss weiter oben liegt, als 
der für die positive Versorgungsspannung, sollte einem das bei 
vernünftig angelegten Schaltsymbolen zu denken geben ;-)

von Rene K. (xdraconix)


Lesenswert?

p.s.:

Ich habe sowas ähnliches auch schonmal für Sim-Racer gebaut. Übrigens 
auch mit einem Atmega32u4. Ich hatte da zwei Versionen von, einen zur 
Ausgabe und einen zur Eingabe (RC-Empfänger / Spektrum) als Joystick. 
Muss mal schauen, den Code muss ich hier noch irgendwo rumfliegen haben.

Hier mal nen paar Videos von:

https://www.youtube.com/watch?v=qbipcLRLN4U

https://www.youtube.com/watch?v=FKHrywI2y6Y

Und hier mal einen Atmega32u4 an einem Motorrad Tacho, da war es ein 
wenig komplizierter - weil der Tacho eine 12V Square brauchte, und das 
in solch einer blöden Frequenz - das ich während des laufens die Timer 
umstellen musste um auf eine nächst kleinere Freq zu kommen und man es 
auf dem Tacho nicht sehen darf:

https://www.youtube.com/watch?v=5ZM82LGDxkI

von Ben K. (bkaiser)


Lesenswert?

Hallo,

Wolfgang schrieb:
> Rene K. schrieb:
>> Ahhhhh... jetzt sehe ich es auch :-D Er hat es quasi verkehrt herum
>> gemacht.
>
> Spätestes wenn im Schaltbild der Gnd-Anschluss weiter oben liegt, als
> der für die positive Versorgungsspannung, sollte einem das bei
> vernünftig angelegten Schaltsymbolen zu denken geben ;-)
*Kopf > Tisch* Oh weh, wie unangenehm. ;-) Danke, wie ist denn das 
passiert? So ein Mist!

Danke!

Benjamin

von Ben K. (bkaiser)


Lesenswert?

Hallo,

Rene K. schrieb:
> Ich habe sowas ähnliches auch schonmal für Sim-Racer gebaut. Übrigens
Genau sowas wird es. :-)

Wegen gewerblich: Da habe ich mich ehrlich gesagt noch gar nicht 
festgelegt (und die Hürden kennt man ja). Erst mal mache ich das um zu 
lernen, weil mich die Materie interessiert. Ich bin eigentlich 
Programmierer und auf der Softwareseite kenn ich mich mehr aus, deshalb 
ist das hier schon eine Herausforderung. Aber ich habe gemerkt das ich 
am meisten lerne, wenn ich etwas versuche richtig umzusetzen, weg vom 
Breadboard. Das ist sicherlich steiniger und komplizierter, aber da 
bleibt am Ende am meisten bei mir hängen. Deshalb der etwas 
"professionellere" Anstrich. Ist aber gar nicht so gemeint. ;-)

Wovor ich noch Angst habe sind die Auswirkungen von Direct Drive Wheels 
auf die ganze Schaltung, da gibt es ja scheinbar häufig Probleme... ^^

LG,

Benjamin

von Rene K. (xdraconix)


Lesenswert?

Benjamin K. schrieb:
> Wovor ich noch Angst habe sind die Auswirkungen von Direct Drive Wheels
> auf die ganze Schaltung

Nunja, damals gab es noch keine DD-Wheels :-D Und solange sie noch so 
extrem im Preis sind, ist dies auch noch keine Option. Aber warum 
sollten sie denn Auswirkungen auf deine Schaltung haben? Das Wheel ist 
doch separat oder?

von Ben K. (bkaiser)


Lesenswert?

Huhu,

Rene K. schrieb:
> Benjamin K. schrieb:
>> Wovor ich noch Angst habe sind die Auswirkungen von Direct Drive Wheels
>> auf die ganze Schaltung
> Nunja, damals gab es noch keine DD-Wheels :-D Und solange sie noch so
> extrem im Preis sind, ist dies auch noch keine Option. Aber warum
> sollten sie denn Auswirkungen auf deine Schaltung haben? Das Wheel ist
> doch separat oder?
Ja, aber im Prinzip hat man einen riesigen, unabgeschirmten Elektromotor 
vor sich und speziell beim Erfassen von analogen Signalen (z.B. einer 
Loadcell bei den Pedalen) haben wohl viele Anbieter Probleme, weil es 
einfach eine  elektromagnetische Störquelle ist, die wohl nicht ohne 
ist. Aber hab kein Direct Drive Wheel, deshalb kann ich es nicht testen. 
;-)

MfG,

Benjamin

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.