Atmega328-Platine, wo hab ich den Fehler?

OP #7680168
Lesenswert?

Hallo zusammen.

Ich bräuchte mal einen Denkanstoß. :S

Vor einiger Zeit habe ich Platinen für eine Universalsteuerung auf Basis eines Atmega328 fertigen lassen, die einige Ein- und Ausgänge, ein Display, 4 Funktionstasten usw. hat.

Jetzt bei der Programmierung habe einige Probleme. Das Flashen habe ich mit dem USBtinyISP gemacht und das geht auch ohne Fehlermeldung. Lade ich aber zu Testzwecken einen Blinksketch für die LED an PD5 hoch, blinkt sie nur, wenn einer der vier Funktionstaster (PB0, 1, 2 und PD7) auch gedrückt ist. Ohne Betätigung bekommt die LED vom Atmega 2,6V und bei Betätigung des Tasters 5V und beginnt zu blinken.

Das ist meine erste "Stand-alone-Arduino"-Platine, wenn man das so nennen will ^^

Hab ich irgendwo etwas übersehen? Bin generell für Verbesserungsvorschläge dankbar.

Viele Grüße, Daniel

#7680177
Lesenswert?

Daniel O. schrieb:

Bin generell für Verbesserungsvorschläge dankbar.

U4: Abblock-Kondensatoren für die Pins Vcc und AVcc fehlen.

U2: Abblock-Kondensatoren für die Pins Vcc und VccIO fehlen.

U21: Abblock-Kondensator fehlt.

Zitat aus "vielen" anderen früheren Threads: "Abblock-Kondensatoren braucht es nicht, es geht ja auch ohne". Ja dann ....

C2 und C3 dürften etwas kleiner ausfallen.

Je nach Strombedarf bei den Relais darf man schon mal einen etwas grösseren Elko für die Pufferung vorsehen.

Wie war das doch? Erst mache ich eine komplette Platine fertig, dann lasse ich im Forum die Fehler finden. Oder wäre es nicht umgekehrt besser?

#7680185
Lesenswert?

Oliver D. schrieb:

Die GND-Leitungen von deinem ATmega hängen leider nicht an GND...

Oha. Gut gesehen. Das lässt sich wenigstens mit ein paar Drahtbrücken korrigieren.

Sollte sowas der ERC nicht direkt anmeckern?

Wastl schrieb:

Wie das allerdings überhaupt funktionieren soll ist mir ein Rätsel.

Wenn die Tasten gedrückt werden, kriegt der AVR sein GND über seine ESD-Schutzdioden...

Persönliche Seite #7680186
Lesenswert?

Oliver D. schrieb:

Die GND-Leitungen von deinem ATmega hängen leider nicht an GND...

Treffer :) Damit ist auch klar warum die Schaltung mit gedrückter Taste funktioniert: Die Taste verbindet den Pin mit GND und weil der intern vermutlich eine Schutzdiode von GND Richtung Pin hat, wird damit der AVR über die Schutzdiode betrieben.

Wastl schrieb:

Wie war das doch? Erst mache ich eine komplette Platine fertig, dann lasse ich im Forum die Fehler finden. Oder wäre es nicht umgekehrt besser?

Hmm, ich hatte das mal in der Reihenfolge probiert. Ergebnis: Ganz viele weniger wichtige Sachen wurden gefunden, aber alles kritische (wie analoger Temperatursensor an einem Eingang der keinen ADC hat) wurde übersehen.

#7680260
Lesenswert?

Daniel O. schrieb:

Hab ich irgendwo etwas übersehen?

Wie kommt man auf so ein irreführendes Symbol für einen Spannungsregler. Auch hier gilt das EVA-Prinzip als Grundlage für eine gut lesbare Schaltplandarstellung. Und aus dem gleichen Grund sollten Spannungen in der Schaltplandarstellung von ob nach unten fallend sein, d.h. nicht auf dem Kopf, wie z.B. bei U1/3/5/6, U22, U23 und U33 bis U40. Wieso heißen U1/3/5/6 eigentlich Ux und nicht Qx, wie die BJTs. Und warum verwendest du für Dioden Ux? Dx oder LEDx wären deutlich sinnvoller. Wenn auch andere den Schaltplan lesen sollen, macht es die Sache einfacher, wenn man sich an gewisse Konventionen hält und nicht eigene Regeln aufstellt.

Was soll der Kondensator am Reset von U2?

  1. Traust du deiner Versorgung nicht?
  2. Warum lässt du den Pin nicht unbeschaltet, wenn du ihn nicht benötigst?

C2 und C3 erscheinen arg groß. Verlangt das Datenblatt des Quarzes so große Kondensatoren? Vergiss die Kapazität des Layouts und des Oszillatoreingangs bei der Auslegung nicht.

Du bist sicher, dass deine Optokoppler U7 bis U15 das nötige CTR besitzen, um mit ihrem Ausgang U33 bis U40 zu treiben und gleichzeitig noch einen korrekten Logikpegel für U21 zu liefern?

#7680495
Lesenswert?

Jens G. schrieb:

Ich würde Dir zuerst einen PC-Führerschein-Lehrgang empfehlen.

Danke gleichfalls - mehr als die PNG-Datei herunterzuladen und in der Originalauflösung anzusehen, kann ich leider nicht tun.

Zeigt doch einfach, was du "Experte" dann sieht - vielleicht zur Klarheit direkt in 2- oder 4-facher Vergrößerung, ohne dran rum zu interpolieren.

#7680540
Lesenswert?

Daniel O. schrieb:

Hallo zusammen.

Ich bräuchte mal einen Denkanstoß. :S

Wenn du bei den IRF9540 die +24V Versorgung wie üblich nach oben gezeichnet hättest, wäre es dir vielleicht selbst aufgefallen. Zeichne mal exemplarisch die beiden OUT1 Knoten zusammen, und überlege dir welche Gate-Source-Spannung sich durch den Widerstandsteiler R18/R43 einstellt und was der MOSFET dabei macht. Und bei der Gelegenheit kannst du auch noch die Gate-Source-Spannung bei durchgeschaltetem Q8 mit VGSmax aus dem Datenblatt vergleichen. Ebenso hängst du die OUT5 mal zusammen und betrachtest die Auswirkungen auf das Relais.

#7680589
Lesenswert?

Rainer W. schrieb:

Zeig, was du dann siehst, bevor du neunmalkluge Tipps gibst.

Besser als Dein Geschreibsel, was nur in extrem seltenen Ausnahmefällen mal Sinn ergibt.

Den Plan vom Eröffnungsbeitrag kann ich nach Belieben vergrößern und alle Beschriftungen einwandfrei lesen . Ich kann ihn auch herunterladen und lokal angucken, 236kb groß und ebenfalls vollständig lesbar.

Loco M. schrieb:

Wenn du bei den IRF9540 die +24V Versorgung wie üblich nach oben gezeichnet hättest, wäre es dir vielleicht selbst aufgefallen.

Warum er dort einen 100V-Typ braucht?

Die zulässige G-S-Spannung 20V wird überschritten.

1 kOhm an 24Volt gibt über ein halbes Watt, nicht toll. Für gelegentliches Schalten reichen auch 10 oder 100 kOhm.

Die LEDs nach GND werden dafür sorgen, dass die FETs niemals schließen.

Na immerhin sinnvoll BC817 anstatt eines FETs, aber deren Basisstrom ist unnötig groß.

#7680628
Lesenswert?

Moin,

Betreff Quarz Cs:

Es gibt da eine vereinfachte (Faust) Formel zur überschlägigen Berechnung der Last-Cs:

Gegeben: Hersteller Last C Wert (Datenblatt) z.B. 12pF (CL)

https://www.digikey.ca/en/products/detail/ecs-inc/ECS-160-12-33-AGN-TR/9648827

LP Verdrahtungs-C überschlägig: 2.5-5pF Cs

Dann sind Cl1 und Cl2 = 2 x ( CL - Cs )

Beispiel: Cl1 = Cl2 = 2 x ( 12 - 3 ) = 18pF oder noch etwas höher.

In typischen SMD LP habe ich übrigens C-Werte um 2.4-4pF gemessen. Bei meinem Layoutstil liegt er meist um 2.5pF.

In der Praxis werden 18-27pF kaum zu Versagern führen. Höhere Werte ergeben meist eine kleinere Frequenzabweichung. Minimalwerte führen meist zu etwas höherer Frequenz. Ich verwende bei AVRs mit den üblichen Quarzen mit Cl=12pF 22pF Cs und befinde mich dann meist innerhalb der Toleranzgrenze des Herstellers.

Ich habe kürzlich 14 Quarz uC Schaltungen durchgemessen und kam auf eine Median-abweichung von +3.6ppm. Die Herstellertoleranz des Quarzes war +/- 50ppm. Die Berechnungswerte führen generell zu etwas zu hohen Frequenzwerten. Eine Zugabe von 10-15% vom berechneten Wert ist da meistens günstig.

So mache ich es immer. Wenn es genau sein muß, dann ist der Eingangs C ohnehin einstellbar zu machen.

Dann sollte man sich auch Gedanken machen, ob der Oszillator genug Verstärkungreserve (Gain Margin) hat. Meistens genügt man sich mit Werten größer wie 5. zur Erhaltung der Schwingungen genügt ein Gm von 1, ist aber nicht genug zum Anschwingen. Normalerweise braucht man sich aber als Anwender selten darum kümmern. Beim AVR kann man diesbezüglich zum Glück mit den gängigen 8 bis 16MHz Quarzen allerdings ohnehin wenig Überraschungen erleben. Beim 328PB könnte man mit gewissen Quarzen möglicherweise Probleme haben, weil dessen Oszillator schwächer ist als der vom 328P.

Man sollte den Quarz ESR so wählen, daß man nicht versehentlich den Quarz überlastet, weil er dann mechanisch beim Schwingen zerbrechen könnte. Niedrigere ESR werte sind da sicherer. Je höher der angegebene ESR Wert ist, desto höher ist auch die interne Quarzbelastung. Für 8-16MHz Quarze ist ein ESR Wert um 50 Ohm günstig. Normalerweise haben diese Art Quarze, je nach Modell, einen typischen Leistungsbereich von 50-200uW. Falls es sich herausstellen sollte, daß der Quarz zu nahe an der Belastungsgrenze liegt, kann man notfalls einen Serienwiderstand am Ausgang des Oszillator einschleifen um den Quarzstrom günstiger einzustellen.

In Anwendungen wo der uC der Umwelt und ihren T und RH Schwankungen ausgesetzt ist, empfiehlt es sich die Quarzumgebung mit einer Conformal Coating zu versehen. Kondensation kann den Oszillator anhalten.

Der Quarzoszillator von uC wird oft sehr stiefmütterlich behandelt.

Gerhard

OP #7680669
Lesenswert?

Erstmal großen Dank für das zahlreiche Input. Ich werd mich die kommenden Tage/Wochen damit auseinandersetzen und dann (bevor es scharf geht) nochmal Feedback einholen. Ich denke aber auch, dass ich der Einfachheit halber einen Steckplatz für einen Arduino Nano vorsehe, dann lässt sich bei einem Defekt auch einfacher etwas tauschen.

Viele Grüße und schönes Wochenende

Gast #7680689
Lesenswert?

Rainer W. schrieb:

Sicher wird Manfred sich hier bald melden und uns das nach Belieben vergrößerbare und einwandfrei lesbare Label zeigen ...

Roland hat es doch schon gezeigt! Das Label ist nicht schön aber eindeutig erkennbar.

Der Bildkompressor kann nichts dafür, dass die Software die beiden Zeichen D und 6 aneinander geklebt/gerendert hat.

Beim svg Format (ohne Pixelraster) hätte es wahrscheinlich besser ausgesehen, deswegen bevorzuge ich dieses.

#7680736
Lesenswert?

Monk schrieb:

Der Bildkompressor kann nichts dafür, dass die Software die beiden Zeichen D und 6 aneinander geklebt/gerendert hat.

Dann bin ich mal gespannt, welche LED Daniel versucht hat, über den GPIO PD5 anzusteuern. Bei einem derart zerfledderten Schaltplan ist es ohne Suchfunktion und eindeutig lesbare Labels etwas schwierig, Signale zu verfolgen. Und der Überblick geht ebenfalls verloren (s. Spannungsteileransteuerung U1...U6 mit ca. 380/500mW Verlustleistung pro Kanal).

#7681067
Lesenswert?

Monk schrieb:

Rainer W. schrieb:

Du unterschätzt die Gefahr von Expectation Bias

Allerdings. Denn jetzt sehe ich da eindeutig eine 5. Das fühlt sich kurios an.

Das war schon immer klar ein PD5 bei der vertikalen Beschriftung, wenn auch das "D" ein Pixel zu hoch gerendert wurde. Einfach mal die Form der Ziffer mit dem horizontalen "PD5" und "R60" vergleichen, dann wird klar, dass das eine "5" ist.

Aber schön oder sauber lesbar ist etwas anderes, ganz unabhängig vom Bildformat - da ist einfach ein Positionierungsfehler im Schriftrenderer.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren