Forum: Mikrocontroller und Digitale Elektronik Atmega8 Board Design Tipps


von Florian L. (flo_lu)


Angehängte Dateien:

Lesenswert?

Hallo liebe Hardware Expertinnen und Experten,

ich bin neu hier im Forum und hätte ein paar Fragen zum 
Schaltungsentwurf eines Mikrocontrollerboards.

Ich habe mich durch verschiedene Tutorials durchgekämpft und einen 
Schaltplan(im Dateianhang)für einen Atmega8-16PU Mikrocontroller 
entworfen, mit dem Ziel, eine entspechende Platine selber zu ätzen. Da 
ich noch nicht viel praktische Erfahrung mit solchen Schaltungen habe 
hoffe ich, dass ihr mir etwas helfen könnt und mich verbessert oder auf 
Fehler aufmerksam macht.
Dabei hoffe ich auch, dass ich nicht nur besser verstehe, wie man etwas 
verschaltet, sondern auch warum man es so macht. Es wäre nett, wenn ihr 
einen kurzen Blick auf meinen Schaltplan werft.

Zuerst zu meiner Schaltung. Ich möchste ein einfaches 
Mikrocontrollerboard entwerfen, mit dessen Hilfe ich die ganzen 
Standardtutorials durcharbeiten kann. Dazu gehört die Nutzung des ADCs, 
der UART, Analogkomperator, Timer usw...

Meine erste Frage betrifft die Abblockkondensatoren. Wie ich gelesen 
habe, dienen sie dazu, bei den digitalen Schaltvorgängen eines ICs die 
Spannungsversorgung vor Spannungseinbrüchen zu schützen, also setzt man 
diese Kondensatoren immer möglichst nah an die Versorgungspinns eines 
ICs, oder? Als Wert wird meistens 100 nF angegeben. Wie kommt man auf 
den Wert? Ist das eine Näherung, für die man ermittelt hat dass es 
meistens gut funktioniert oder kann man das konkret ausrechnen? Ganz 
allgemein frage ich mich auch, wann es besser ist Keramik Kondensatoren 
zu verwenden und wann ELKO's besser geeignet sind.

Meine zweite Frage betrifft die Serielle Schnittstelle. Ich habe mir 
überlegt, einen D-Sub Stecker zu verwenden und hoffe, dass ich die Pins 
richtig belegt habe in der Schaltung. Soweit ich das mitgekriegt habe, 
hängt das davon ab, welche Art von Kabel man verwendet (Null-Modem kabel 
vertauscht irgendwie Pin 2 und Pin 3, stimmt das?). Welche Kabel werden 
heute standardmäßig verwendet? Kenne mich da leider nicht so aus.

Vielen Dank schonmal, ich hoffe die Fragen sind nicht allzu blöd für 
euch.

Liebe Grüße,

Flo

von Jim M. (turboj)


Lesenswert?

Florian L. schrieb:
> Welche Kabel werden
> heute standardmäßig verwendet? Kenne mich da leider nicht so aus.

Serielle Kabel werden standartmäßig gar nicht mehr verwendet. Ist 
alles USB heutzutage.

Ich würde die Geräteseite implementieren (also TX/RX genau andersherum 
als am PC), damit man einen USBtoRS232 Stecker direkt anstecken kann. 
Nein, ich schaue jetzt nicht nach ob Du da oben TX und RX im Schaltplan 
tauschen musst.

von THOR (Gast)


Lesenswert?

Florian L. schrieb:
> .

Zur ersten Frage:

Elkos haben hohe Kapazität aber auch hohen ESR (Innenwiderstand) und 
hohe Induktivität. Sind daher für hohe Frequenzen ungeeignet. Eine 
Schaltflanke von 100ns hat (Kehrwert) 10MHz.
Ergo: Wenn du ne PWM mit 500Hz machst, hast du da aber auch 10MHz mit 
drin (Daher kommen die EM-Emissionen die einem gern mal das Leben schwer 
machen, vor allem wenn man auf einem Board analog und digital gemischt 
hat).

Der Strom dafür muss aus der Versorgung kommen, ergo wird die Versorgung 
auch mit nem 10MHz Ripplestrom belastet.

Durch die hohe Induktivität+ESR fließt der praktisch gar nicht durch 
einen 1uF Elko, durch einen 100nF Keramikkondensator aber schon.

Der Elko (meist so 1..20uF) ist dann dafür da, den 500Hz Teil deiner PWM 
abzupuffern. Da ist der Strom größer, also braucht man mehr Kapazität 
(mehr Ladung).

Du dem Ripplestrom von sowas wie einer PWM kommt noch das, was Timer, 
CPU etc. fabrizieren. 20MHz kann son AVR. Das ist aber nur die 
Grundschwingung, da kommen noch Oberschwingungen drauf. Ich hab mich 
damit nie beschäftigt, aber so 100MHz Oberwellen werden drin sein.

Ab spätestens 50MHz verhält sich ein üblicher Elko wie eine ideale 
Spule.

von holger (Gast)


Lesenswert?

Du hast den Reset Pin fest gegen Masse gelegt.
An den Pinheadern würde ich auch jeweils noch GND und VCC
mit anbringen.

von Peter D. (peda)


Lesenswert?

Ich setze da auch hinter den Regler nen Elko (100µF), dessen Trägheit 
verhindert das Durchgreifen kurzer Störimpulse.
Und noch ne Transzorb (SMBJ5,0A) zum Schutz.

von Horst V. (hoschti)


Lesenswert?

Florian L. schrieb:
> .....
> Meine zweite Frage betrifft die Serielle Schnittstelle. Ich habe mir
> überlegt, einen D-Sub Stecker zu verwenden und hoffe, dass ich die Pins
> richtig belegt habe in der Schaltung. Soweit ich das mitgekriegt habe,
> hängt das davon ab, welche Art von Kabel man verwendet (Null-Modem kabel
> vertauscht irgendwie Pin 2 und Pin 3, stimmt das?). .....

Wenn Du da flexibel sein willst, kannst Du die Pins 2 und drei des 
Sub-D-Steckers per Steckbrücken umschlatbar machen. Das erspart Dir dann 
sowas wie Nullmodem-Kabel.

Sonst sieht die Schaltung (bis auf die schon angesprochenen 
Änderungen/Ergänzungen) schon brauchbar aus (für den ersten Versuch 
sogar recht gut).

Grüße
Hoschti

von Frickelfritze (Gast)


Lesenswert?

holger schrieb:
> Du hast den Reset Pin fest gegen Masse gelegt.

Diesen "Kurzschluss" musst du (nicht holger) natürlich
entfernen, ein Kondensator 10nF als Ersatz dafür wäre
nützlich für die Stabilität des Reset Pins, inbesondere
wenn der ISP Programmer dran hängt und die Reset Leitung
leichter etwas auffängt.

Für die SPI Leitungen zum ISP Header würde ich 3 Längswider-
stände 100 Ohm als Schutz vorschlagen.

C1 und C2 sollten für 4 Mhz mindestens 22-27pF haben.

Ja, +5V und GND an jedem herausgeführten Port sind auch
sehr nützlich, nur weisst du es heute noch nicht.

Ansonsten hast du das für einen Anfänger ganz gut gemacht!

von Florian L. (flo_lu)


Lesenswert?

Erstmal vielen Dank an alle für die sehr schnellen Antworten.


Jim M. schrieb:
> Ich würde die Geräteseite implementieren (also TX/RX genau andersherum
> als am PC), damit man einen USBtoRS232 Stecker direkt anstecken kann.
Danke dir für die Antwort, das werde ich dann wohl auch so machen.


@THOR
Vielen Dank für die Erklärung, das ergibt einen Sinn für mich und ich 
denke, dass ich das in zukünftigen Schaltungen berücksichtigen kann :-)


holger schrieb:
> Du hast den Reset Pin fest gegen Masse gelegt.
> An den Pinheadern würde ich auch jeweils noch GND und VCC
> mit anbringen.
Danke für die Info, da wir mir wohl ein Kondensator abhanden gekommen 
sein :-/. Welche Pinheader meinst du genau? Meinst du die offenen Pins 
meines D-SUB Steckers?


Peter D. schrieb:
> Ich setze da auch hinter den Regler nen Elko (100µF), dessen Trägheit
> verhindert das Durchgreifen kurzer Störimpulse.
> Und noch ne Transzorb (SMBJ5,0A) zum Schutz.
Danke auch für den Tipp, das klingt sehr sinnvoll. Die Diode schalte ich 
quasi parallel zum Rest der Schaltung, um die Schaltung vor 
Spannungsimpulsen zu schützen, während die Stromimpulse durch den ELKO 
geschützt sind, richtig?


So dann werde ich jetzt noch eure Tipps berücksichtigen und dann kommt 
die große Herausforderung, ein ordentliches Layout zu designen. Vielen 
Dank euch allen für eure Unterstützung. Bei weiteren Vorschlägen gerne 
schreiben :-)

von Dietrich L. (dietrichl)


Lesenswert?

Florian L. schrieb:
> Meine zweite Frage betrifft die Serielle Schnittstelle. Ich habe mir
> überlegt, einen D-Sub Stecker zu verwenden und hoffe, dass ich die Pins
> richtig belegt habe in der Schaltung. Soweit ich das mitgekriegt habe,
> hängt das davon ab, welche Art von Kabel man verwendet (Null-Modem kabel
> vertauscht irgendwie Pin 2 und Pin 3, stimmt das?).

Ich würde einen männlichen Stecker verwenden und RxD und TxD 
vertauschen. Dann brauchst Du zur Verbindung mit dem PC *) ein 
Null-Modem-Kabel mit Weibchen auf beiden Seiten (das war bei 
Null-Modem-Kabeln der Standard).
Siehe hierzu auch den Kommentar in meiner Schaltung:
https://www.mikrocontroller.net/attachment/140573/Cinni-Regler_V1.1_S4_sch.png
Wie Du es gemacht hast, brauchst Du ein 1:1-Kabel ("Verlängerungskabel") 
mit Männchen an einer Seite und Weibchen an der andern.

*) auch wenn PCs normalerweise keine RS232-Schnittstelle mehr haben; 
aber ich hoffe, dass die USB-RS232-Adapter sich noch an die alten 
Konventionen halten...

von Florian L. (flo_lu)


Lesenswert?

Horst V. schrieb:
> Wenn Du da flexibel sein willst, kannst Du die Pins 2 und drei des
> Sub-D-Steckers per Steckbrücken umschlatbar machen. Das erspart Dir dann
> sowas wie Nullmodem-Kabel.
Danke Horst, auf die Idee hätte ich auch kommen können. Des wäre 
natürlich am praktischten :-)


Frickelfritze schrieb:
> ein Kondensator 10nF als Ersatz dafür wäre
> nützlich für die Stabilität des Reset Pins, inbesondere
> wenn der ISP Programmer dran hängt und die Reset Leitung
> leichter etwas auffängt
Danke Frickelfritz für die vielen Hinweise:-)
Ja, ich habe da tatsächlich einen Kondensator vergessen. Wie kommst du 
hier auf die 10 nF, sonst habe ich ja meistens 100nF verwendet?

Frickelfritze schrieb:
> C1 und C2 sollten für 4 Mhz mindestens 22-27pF haben.
Auch hier würde mich interessieren wie du auf die 22-27pF kommst?

Frickelfritze schrieb:
> Für die SPI Leitungen zum ISP Header würde ich 3 Längswider-
> stände 100 Ohm als Schutz vorschlagen.
Da meinst du sicher die MOSI/MISO/SCK leitungen, oder? Also nicht die 
reset Leitung. Was schütze ich hier vor wem? :-D

Frickelfritze schrieb:
> Ja, +5V und GND an jedem herausgeführten Port sind auch
> sehr nützlich, nur weisst du es heute noch nicht.
Dient das dazu, jedem Port einen klar definierten Zustand zu geben? Oder 
gibt es einen anderen Sinn dahinter?

von Florian L. (flo_lu)


Lesenswert?

Dietrich L. schrieb:
> Ich würde einen männlichen Stecker verwenden und RxD und TxD
> vertauschen. Dann brauchst Du zur Verbindung mit dem PC *) ein
> Null-Modem-Kabel mit Weibchen auf beiden Seiten (das war bei
> Null-Modem-Kabeln der Standard)
Klingt auch vernünftig. Also ich denk ich werde es mit einer Steckbrücke 
realisieren, so wie es Horst V. vorgeschlagen hat, dann bin ich 
flexibel. Aber einen männlichen Stecker zu verwenden klingt für mich 
gut, vorallem wenn die besagten Kabel standard sind. Danke dir :-)

von Florian L. (flo_lu)


Lesenswert?

Kann ich die nicht verwendeten IC Pins(z.B. IC2) einfach offen lassen 
oder sollte ich die auch auf definierte Werte setzen?

von Paul B. (paul_baumann)


Lesenswert?

Florian L. schrieb:
> Kann ich die nicht verwendeten IC Pins(z.B. IC2) einfach offen lassen
> oder sollte ich die auch auf definierte Werte setzen?

Die Eingänge würde ich auf definierten Pegel legen, die Ausgänge bleiben 
frei. Was Du aber auch machen kannst: Die ungenutzten Eingänge über 
Ziehwiderstände (sog. Pull-up) auf die Betriebsspannung legen und sie 
aber auch auf Steckkontakte führen. Du kannst dann nämlich auch mal 
einen MOSFET, der nicht explizit für low-Level Ansteuerung gedacht 
ist, mit der "hohen" Spannung des Schittstellentreibers ansteuern.

So tat ich es auf meinem Experimentier-Platinchen.

MfG Paul

von Frickelfritze (Gast)


Lesenswert?

Florian L. schrieb:
> Ja, ich habe da tatsächlich einen Kondensator vergessen. Wie kommst du
> hier auf die 10 nF, sonst habe ich ja meistens 100nF verwendet?

Da streiten sich die Gelehrten ewig, meiner Meinung nach ergibt
100nF eine etwas zu lange Zeitkonstante, kann aber auch meistens
gut gehen.

Florian L. schrieb:
> Auch hier würde mich interessieren wie du auf die 22-27pF kommst?

Erfahrungswerte. Ein 20 MHz Quarz bekommt bei mir 2x18pF

Florian L. schrieb:
> Da meinst du sicher die MOSI/MISO/SCK leitungen, oder?

Ja.

Florian L. schrieb:
> Was schütze ich hier vor wem?

Den Prozessor vor zuviel falschen Strom bei Fehlern. Nein,
ich weiss, du machst keine Fehler.

Florian L. schrieb:
> Dient das dazu, jedem Port einen klar definierten Zustand zu geben?

Nein, der dranhängenen Peripherie ein Bezugspotential zu geben
(GND) und ggf einem Verbraucher die Chance zu geben Versorgung
(Vcc)zu bekommen.

von Frickelfritze (Gast)


Lesenswert?

Florian L. schrieb:
> Schaltplan(im Dateianhang)für einen Atmega8-16PU Mikrocontroller
> entworfen,

Magst du nicht lieber einen neueren Prozessor nehmen der das
gleiche Gehäuse hat und praktisch funktionskompatibel ist?
Mehr RAM und Mehr Flash, das wird dir bei zukünftigen Projekten
gut tun. Also spricht eigentlich alles für den ATMega328, das
ist der Arduino-ATMega. und du könntest ihn auch mit 16 MHz
laufen lassen. Ja du wirst es nie brauchen in der Zukunft.
Oder doch vielleicht?

von Peter R. (pnu)


Lesenswert?

Florian L. schrieb:
> Als Wert wird meistens 100 nF angegeben. Wie kommt man auf
> den Wert? Ist das eine Näherung, für die man ermittelt hat dass es
> meistens gut funktioniert oder kann man das konkret ausrechnen? Ganz
> allgemein frage ich mich auch, wann es besser ist Keramik Kondensatoren
> zu verwenden und wann ELKO's besser geeignet sind.

Die hundert nF sind ein Erfahrungswert, der auch berücksichtigt, dass 
die Kapazität der SMD-Keramikondensatoren kaum eine Konstante genannt 
werden kann:
Temperaturabhängigkeit: an den Grenzen des Temp-Bereichs nimmt C stark 
ab.
Spannungsabhängigkeit: wenn auch höhere Spannung anliegt nimmt C auch 
stark ab.
Beides zusammen kann C auf ein Viertel seines Nennwerts bringen.

Bei Bestückung mit hochwertigen Stützkondensatoren könnten auch 10nF 
ausreichen oder auch 4,7nF, nur ist man mit 100nF allemal auf der 
sicheren Seite und kleinere Cs sind eher teurer, da sie seltener 
gebraucht werden und dann wesentlich konstanter in bezug auf Temp und U 
sein müssen.

Der Stütz-C soll vor Allem den Spannungsabfall auf den Zuleitungen 
verhindern.
Beim Umschalten der Logikgatter fließen für einige -zig ns Querströme, 
die in die hunderte mA gehen. Da würden schon bei mehr als 5cm Zuleitung 
zum nächsten Stützkondensator die Spannung am IC zusammenbrechen und die 
Logik ins Stolpern bringen. Das verhindert der direkt am IC liegende 
Stützkondensator zuverlässig.
Ein  Elko wäre unnötig groß, außerdem ist sein HF-Widerstand bei diesen 
sehr kurzen Impulsen viel höher als der eines Keramikkondensators.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Florian L. schrieb:
> Meine erste Frage betrifft die Abblockkondensatoren.
> Meine zweite Frage betrifft die Serielle Schnittstelle.

Beide sind eigentlich eindeutig.

Meine erste Fraghe wäre: Wozu so ein Board, auf dem doch nichts drauf 
ist, ausser dem uC ?

Wenn man Programme ausprobieren will, braucht man doch Peripherie, so 
ein uC an sich ist doch ziemlich nutzlos, man braucht Tasten, Anzeigen, 
du willst Analogsignale und vermutlich einige I2C/SPI Peripherie.

Und die Bauteile willst du alle dranstöpseln ? Braucht man nicht gearde 
dafür eine Platine, nicht um den 1 uC, sondern um die dutzenden von 
Zubehörbauteilen unter zu bringen ?

Ich an deiner Stelle würde versuchen die für dich interessantesten 
Experimente/Tutorials zusammenzusuchen, das nötige Drumrum zu ermitteln 
und alles auf die Platine packen was man zur Umsetzung der Experimente 
braucht, an den Stellen an denen die Pins kollidieren eben per Jumper 
umschaltbar.

Und wenn du merkst, daß dich 2 oder 3 vöölig unterschiedliche 
Anwendungen interessieren, z.B. Multiplex mit LEDs und Tasten vs. 
Anwendungen mit LCD-Modul und Analogeingängen, dann entwirfst du halt 2 
oder 3 Boards.

So ein Board auf dem nichts drauf ist braucht kein Mensch, dann kaufe 
lieber eine Arduino (der lebt auch nur von seinen Shields).

von Jacko (Gast)


Lesenswert?

Wenn du meinst, mit so einem Experimentier-Bord was anfangen
zu köönen, habe ich nur wenige Änderungsvorschläge:

Die RS232-Umsetzung ist seit WIN10 in Richtung PC kaum noch
sinnvoll: Ich suche schon seit Monaten nach einer PCI-RS232-
Karte die auch WIN10-kompatible Treiber hat...

Da würde ich RxD, TxD und GND auf einen 3-poligen Anschluss-Port
führen, die Umsetzung auf +/-12 V kann ein Mini-Bord von Pollin
machen. Für eine kurze Verbindung µC-µC reichen die 3 Anschlüsse,
wobei das 3-polige Verbindungskabel Rx und Tx kreuzen muss.

Der Quarz kommt meist mit 2 x 27...33 pF näher an die Sollfrequenz
und RESET an GND heißt: GEHT NIE! Nimm dort eher 27..47 k als
PullUp und 10...100 nF als zeitliche Dämpfung.

Vielleicht ist es auch noch sinnvoll, AVCC über eine Mini-Drossel
100 µH...1 mH an VCC zu schalten, C16 muss aber direkt an AVCC
bleiben. - und
AREF und AGND mit 2-poligem Anschluss von außen "zugänglich" zu
machen, C11 muss aber direkt an AREF bleiben.

von Florian L. (flo_lu)


Lesenswert?

@Frickelfritze
Danke erneut für deine Erklärungen. Vielen Dank.

Frickelfritze schrieb:
> Magst du nicht lieber einen neueren Prozessor nehmen der das
> gleiche Gehäuse hat und praktisch funktionskompatibel ist?
Ich habe hier noch drei Atmega8 rumliegen, deswegen nutze ich die jetzt. 
Aber klar, für spätere Projekte werden dann vermutlich andere 
Mikrocontroller verwendet. Ich denke, zum Lernen wie man ein Board 
designed und wie man mit Mikrocontrollern umgeht tut's der Atmega8 am 
Anfang auch.

Peter R. schrieb:
> Die hundert nF sind ein Erfahrungswert, der auch berücksichtigt, dass
> die Kapazität der SMD-Keramikondensatoren kaum eine Konstante genannt
> werden kann:
> Temperaturabhängigkeit: an den Grenzen des Temp-Bereichs nimmt C stark
> ab.
> Spannungsabhängigkeit: wenn auch höhere Spannung anliegt nimmt C auch
> stark ab.
> Beides zusammen kann C auf ein Viertel seines Nennwerts bringen.
Danke auch für diese Informationen, wider etwas gelernt. Tja, da sieht 
man den Unterschied zwischen einem Kondensator in der Theorie und in der 
Praxis.

Michael B. schrieb:
> Meine erste Fraghe wäre: Wozu so ein Board, auf dem doch nichts drauf
> ist, ausser dem uC ?
Ich denke ich finde einen Weg, das Board zu nutzen. Ich mag trotzdem 
nicht alles fest auf dem Board haben. Danke trotzdem für den Hinweis.

Jacko schrieb:
> Der Quarz kommt meist mit 2 x 27...33 pF näher an die Sollfrequenz
> und RESET an GND heißt: GEHT NIE! Nimm dort eher 27..47 k als
> PullUp und 10...100 nF als zeitliche Dämpfung.
Danke für die Tipps

Jacko schrieb:
> Vielleicht ist es auch noch sinnvoll, AVCC über eine Mini-Drossel
> 100 µH...1 mH an VCC zu schalten, C16 muss aber direkt an AVCC
> bleiben. - und
> AREF und AGND mit 2-poligem Anschluss von außen "zugänglich" zu
> machen, C11 muss aber direkt an AREF bleiben.
Wozu dient diese Drossel dann?

von Joe (Gast)


Lesenswert?

Mache die Portanschlüsse alle 10-polig mit GND und VCC.

Dann kannst du später die Ports nach belieben austauschen und auch 
externe Elemente wie LCD oder auch I2C-Module anschließen.

von Ulf (Gast)


Lesenswert?

Hallo

Eine kleine Anmerkung noch zum Spannungsregler: Nimm einen, der selber 
schon einen kleinen "Eigenverbrauch" hat, wie z.B. den LP2950. Die 
gängigen 78xx brauchen allein schon mehr Strom als ein ATMEGA der 
zeitweise im sleep-mode ist.

Gruß Ulf

von Vergessen (Gast)


Lesenswert?

Nur so:

Ich verwende seit Jahren dieses Board:

http://www.kreatives-chaos.com/artikel/atmega168-testboard-v2

Lediglich den MAX233 und die D-Sub habe ich gegen einen FTDI Chip und 
entsprechend eine micro-USB Buchse getauscht. Ich habe das Board einmal 
mit 5V und einmal mit einem 3.3V Spannungsregler aufgebaut . Beide haben 
definitiv ihr Geld verdient.

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.