Forum: Mikrocontroller und Digitale Elektronik AVR Projekt - Schaltplan in Ordnung?


von Peter Reither (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

gerade habe ich den Schaltplan für mein erstes größeres Projekt 
fertiggestellt. Da ich noch wenig Erfahrung habe, und bisher bei meinen 
Eagle Schaltplänen die Pins an zwei Händen abzählen konnte, bitte ich 
euch beim Layout um etwas Nachsicht ;) (Was nicht heißt, dass ich nicht 
offen für konstruktive Kritik bin).
Könnt ihr bitte einmal drüberschauen und mir sagen, ob ihr irgendwelche 
Fehler findet, und ob ich etwas verbessern kann?


Es geht darum, einen Raspberry Pi mit einem ATmega8 zu verbinden. Die 
Kommunikation geschieht über die UART Schnittstelle des Pis.
Der uC stellt verschiedene Ein- und Ausgaben bereit:

* 4-Wege Schalter mit Pushbutton (SW1, unten rechts), der 
Benutzereingaben empfängt. Der Schalter hängt mit dem "Common" Pin an 
der Versorgungsspannung, und die einzelnen Zustände werden vom 74HC165 
an den uC weitergeleitet. Jeder einzelne Zustand hat einen 10k Pulldown 
gegen GND. Entprellt wird softwareseitig im uC.

* Intern wird ein 25LC080P SPI EEPROM für die nichtflüchtige 
Datenspeicherung verwendet. Um den MISO Pin bei Nichtverwendung Tristate 
zu halten, ist er an einem 74HC125 angeschlossen. Als CS dient dabei der 
Port QB vom 74HC595.

* Ein Piezzo-Buzzer für Töne hängt am Pin QA des 595.

* Für die Datenanzeige verwende ich ein Nokia 5100 Display. Die 
Displayspannung soll gedimmt werden können, und hängt deshalb an OC1B 
vom ATmega. Der Displaycontroller wird über SPI angesprochen.

* Für die Programmierung wird die ISP Programmierschnittstelle 
verwendet. Damit die Signale während der Programmierung sich nicht auf 
die Bausteine am SPI Bus auswirken, sind die CS Signale von 25LC080P, 
74HC165 und 74HC595 mit einem Pullup ausgestattet. Außerdem wird Pin G 
vom 595 ebenfalls gegen die Versorungsspannung gezogen, damit die 
Ausgänge standardmäßig Tristate sind.

* Der Raspberry verträgt nur 3.3V, der uC wird aber mit 5V betrieben, um 
16MHz zu erreichen. Aus diesem Grund wird die Spannung vom TXD Pin des 
uC mit einem Spannungsteiler auf knapp 3.3V gesetzt.

* Um zu erkennen, wann das Herunterfahren des Raspberrys beendet ist, 
wird ein Trick angewandt: Der TXD Pin des Raspberries führt dann nämlich 
keine 3.3V mehr, weswegen dieser Pin mit AIN1 verbunden ist, um mit dem 
AC festzustellen, wann es so weit ist.

Vielen Dank für eure Mühe!

von Wolfgang (Gast)


Lesenswert?

\CS (IC2.1) und Treiber-Enable (IC3A.1) sind nicht richtig verbunden. 
Eigentlich sollte ERC da einen Fehler melden.

von Michael (Gast)


Lesenswert?

Abblockkondensatoren auf VCC fehlen

von Thomas (Gast)


Lesenswert?

R3 und R2 sind viel zu klein

von Peter Reither (Gast)


Lesenswert?

Wolfgang schrieb:
> \CS (IC2.1) und Treiber-Enable (IC3A.1) sind nicht richtig verbunden.
> Eigentlich sollte ERC da einen Fehler melden.

Stimmt, habe ich übersehen, danke!

Thomas schrieb:
> R3 und R2 sind viel zu klein

Hmm, ausgehend vom Artikel Spannungsteiler dachte ich

Wo liegt mein Fehler?

Michael schrieb:
> Abblockkondensatoren auf VCC fehlen

Sind die bei allen ICs notwendig, oder nur für den ATmega?

von Peter Reither (Gast)


Angehängte Dateien:

Lesenswert?

Hier die aktualisierte Version mit Abblockkondensatoren für die ICs und 
korrekt verbundenem IC2/IC3.

von Karl H. (kbuchegg)


Lesenswert?

Peter Reither schrieb:

> Thomas schrieb:
>> R3 und R2 sind viel zu klein
>
> Hmm, ausgehend vom Artikel Spannungsteiler dachte ich
>
>
> Wo liegt mein Fehler?

Spannung ist eine Sache. Strom die andere.

Wieviel Strom rinnt durch (12+22)Ohm aus dem Ausgansgpin nach Masse? 
Kann der µC das überhaupt liefern?

Wenn du die Widerstände 10mal (100mal, 1000mal) so groß machst, hast du 
immer noch dasselbe Spannungsverhältnis. Aber es rinnt nur 1/10 (1/100, 
1/1000)-tel soviel Strom.


Durch einen Strohhalm kannst du auch Wasser mit 2m/s durchjagen. Wird 
aber trotzdem nicht reichen um ein FLusskraftwerk anzutreiben.
Also: Es gibt 2 Dinge, auf die man achten muss - Spannung und Strom.

von Thomas (Gast)


Lesenswert?

Peter Reither schrieb:
> Wo liegt mein Fehler?

Das Teilerverhältnis ist ok, aber der µC kann den Strom nicht liefern.

von Karl H. (kbuchegg)


Lesenswert?

Peter Reither schrieb:
> Hier die aktualisierte Version mit Abblockkondensatoren für die ICs
Bei AVcc fehlt er immer noch

JEDES Pärchen  Versorgungsspannung/Masse  bekommt einen 100nF 
Kondensator. Jedes! Und wenn ein IC eben mehrere derartige Anschlüsse 
hat, dann kriegt es auch an jedem einen derartigen Kondensator.

von Peter Reither (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Spannung ist eine Sache. Strom die andere.

Stimmt, daran habe ich gar nicht gedacht. Danke! Mit diesem Hinweis habe 
ich die Widerstände in 1,2k und 2,2k geändert.

von Karl H. (kbuchegg)


Lesenswert?

Welchen Sinn haben eigentlich der 595 bzw. der 165?

Du hast 3 Millionen Pins am Mega frei und benutzt einen 'Portexpander'?
Den Sinn dahinter versteh ich noch nicht. Aber vielleicht gibt es ja 
einen.

von Peter Reither (Gast)


Angehängte Dateien:

Lesenswert?

Karl Heinz Buchegger schrieb:
> Welchen Sinn haben eigentlich der 595 bzw. der 165?

Ich möchte die entsprechenden Pins nach außen legen, um sie später 
kaskadieren zu können. Erst einmal möchte ich mich auf die Anbindung an 
den Pi kümmern, und ein solides Kontrollboard dafür bauen. Und später 
gibt es weitere Anwendungen, die dann die Raspberry Pi / Kontrollboard 
Konstruktion steuern soll. Und um nicht später die Platine wegschmeißen 
zu müssen, möchte ich das Ganze so gestalten, dass die I/O Ports 
erweiterbar sind.

--

Anbei noch einmal der aktualisierte Schaltplan.

von Peter Reither (Gast)


Lesenswert?

Peter Reither schrieb:
> Anbei noch einmal der aktualisierte Schaltplan.

Und C10 ist nicht richtig angeschlossen. Ist inzwischen korrigiert.

von Karl H. (kbuchegg)


Lesenswert?

Peter Reither schrieb:

> Konstruktion steuern soll. Und um nicht später die Platine wegschmeißen
> zu müssen, möchte ich das Ganze so gestalten, dass die I/O Ports
> erweiterbar sind.

Kennst du die Rubrik: "Berühmte letzte Worte"?

Bis du da das erste mal eine Erweiterung planst, hast du schon ein paar 
von diesen Platinen gefertigt. Mach deine erste Platine einfach (auch 
einfach zu programmieren) und denk erst in Version 2.0 darüber nach, 
nachdem du Erfahrung gesammelt hast, wie du daraus die eierlegende 
Wollmilchsau entwickeln kannst. Du musst nicht mit deiner ersten Platine 
gleich die Welt der µC revolutionieren.
Du kannst dir aber mit einem zu gefinkelten Aufbau selbst das Leben 
unendlich schwer machen.

von Peter Reither (Gast)


Angehängte Dateien:

Lesenswert?

Karl Heinz Buchegger schrieb:
> ach deine erste Platine einfach (auch
> einfach zu programmieren) und denk erst in Version 2.0 darüber nach,
> nachdem du Erfahrung gesammelt hast, wie du daraus die eierlegende
> Wollmilchsau entwickeln kannst.

Du hast wahrscheinlich Recht. Ein Schritt nach dem Anderen.

Das Layout habe ich entsprechend angepasst. Ist der 74HC125 eigentlich 
wirklich notwendig? Ich denke schon, da der SO Pin nicht Tri-State ist, 
auch wenn CS high ist, oder?

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


Lesenswert?

Peter Reither schrieb:
> Es geht darum, einen Raspberry Pi mit einem ATmega8 zu verbinden.

Überleg dir, ob du für ein neues Projekt wirklich den längst überholten 
ATmega8 einsetzen willst.

Wenn, dann würde ich den ATmega88A vorsehen (ist oft auch billiger). Das 
hat zudem den Vorteil, dass der dieser weitgehend aufwärtskompatibel ist 
zu den pingleichen Typen mit mehr Speicher: ATmega168A und ATmega328 
(sogar das Datenblatt ist das gleiche).

von Peter Reither (Gast)


Lesenswert?

Markus Weber schrieb:
> Überleg dir, ob du für ein neues Projekt wirklich den längst überholten
> ATmega8 einsetzen willst.

Da hast du wohl Recht. Werde ich noch einmal die Datenblätter in Ruhe 
durchgehen, danke für den Hinweis!

von Peter Reither (Gast)


Angehängte Dateien:

Lesenswert?

So, mit all euren Anmerkungen habe ich das Ganze noch ein wenig 
überarbeitet und vereinfacht. Als EEPROM habe ich nun auch einen IC 
genommen, der bei Nichtselektierung laut Datenblatt den Ausgang 
freigibt. Damit konnte noch ein IC wegfallen.
Auch den ATmega8 habe ich ersetzt.

Einen Fehler habe ich jedoch noch in der Schaltung: Die Leitungen 3-6 
von LCD1 vertragen auch nur 3.3V. Was würdet ihr hier vorschlagen, um 
die Spannung zu reduzieren, 4 Spannungsteiler wie bei Pin 10 des 
Raspberry Headers? Kann ich das mit dem SPI Bus einfach so machen, 
Spannungsteiler an Takt und MOSI hängen?

von Karl H. (kbuchegg)


Lesenswert?

Was ist das für ein LCD und warum muss es ausgerechnet dieses sein?
Es gibt doch genug LCD im Handel, auch mit SPI Anschluss, die mit +5V 
laufen.

So wie ich das sehe, ist das LCD dein einziger 3.3V Konsument. D.h. 
tauscht du das LCD gegen einen 5V Typ aus, fällt dir auch der ganze 
Bereich 3.3V Versorgung weg.

von Peter Reither (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Was ist das für ein LCD und warum muss es ausgerechnet dieses sein?

Das ist ein Nokia 5100 Display, und das war sehr günstig zu bekommen. 
Außerdem habe ich inzwischen meine Routinen für die Anzeige daran 
angepasst. Der Controller ist ein PCD8544, und der verträgt leider nicht 
mehr (laut Datenblatt).

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.