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.
Moin,
an den 4 besagten Pins kann ich keinen Fehler finden. Magst du mal die Software zeigen?
Aber einen anderen Fehler habe ich gefunden: Beim MCP23017 können GPA7 und GPB7 nur als Ausgang benutzt werden! (vgl. Datenblatt S. 11).
Fuses auf Quarz gestellt und ein ungünstiges Layout für diesen?
Blinkt es auch, wenn du statt dem Taster was anderes auf der Platine berührst?
Blinkt es dauernd wenn du den AVR auf seinen internen RC-Oszillator stellst?
Ansonsten: Layout zeigen, da kann auch viel schiefgehen.
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.
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.
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?
Traust du deiner Versorgung nicht?
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?
Laut Schaltplan ist die LED PD5 mit Portpin PD6 verbunden
Kommt drauf an, was der Pixelbrei bedeuten soll ;-)
Ein Label "PD6" ist im Schaltplan an keinem Portpin zu finden, was natürlich nicht ausschließt, dass das Netz an PD6 diesen Namen trägt.
Kommt drauf an, was der Pixelbrei bedeuten soll ;-)
Ich würde Dir zuerst einen PC-Führerschein-Lehrgang empfehlen. Dann findest Du vielleicht auch das "Kreuz" unten rechts im Bild, um das Bild zu vergrößern, und damit aus dem Pixelmatsch raus zukommen ...
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.
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.
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.
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.
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).
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.