Eigenständiges Atmega328p-Setup funktioniert nicht richtig

Ich benutze das Arduino Uno-Entwicklungsboard seit einigen Monaten und wollte auf eine kleinere Version desselben umsteigen. Dafür habe ich einen Atmega328p AU-Standalone-Chip mit einem IC-Sockel ( Schema ) verwendet. Der Schaltplan zeigt keine 22pf Kondensatoren mit dem Kristall, den ich verwendet habe.

Alles funktionierte gut, bis ich meinen Mac benutzte, um die Schaltung mit Strom zu versorgen. Aber wenn ich die Wandsteckdose verwende, um meinen Stromkreis mit Strom zu versorgen, verhält sich das Setup immer dann schlecht, wenn ich einen Schalter auf der Schalttafel betätige (Ein- oder Ausschalten von Schaltern, Drehen der Lüfterreglerknöpfe, um die Lüftergeschwindigkeit zu ändern usw.), an der sich die Wandsteckdose befindet angeschlossen. Das gesamte Setup ist nicht mit anderen Schaltern oder Reglern verbunden. Es ist nur an den 5-V-Steckdosenadapter angeschlossen, den ich an die Platine angeschlossen habe, wie im Bild unten gezeigt. Immer wenn ich den Schalter ein- oder ausschalte oder die Reglerknöpfe drehe, denke ich, dass einige Spitzen / Überspannungen durch den Adapter aufgenommen werden. Das gesamte Setup beginnt nur regelmäßig mit dem Zurücksetzen oder friert die meiste Zeit ganz ein. Das Problem tritt jedoch nicht auf der Uno-Entwicklungsplatine auf, die mit 5 V und GND-Pin an denselben Adapter angeschlossen ist. Ich verstehe nicht, was den Unterschied zwischen den beiden ausmacht. Gibt es eine Notwendigkeit für eine Entkopplung oder Isolierung?

Dinge, die ich versucht habe:

  1. Ändern des Kristalls
  2. Austausch des 22pF-Kondensators gegen 18pF-Kondensatoren.
  3. Habe den Blinkcode sowohl im Arduino Board als auch im Chip hochgeladen, das gleiche Problem bleibt bestehen. Der Blinkcode und mein Code funktionieren beide gut mit dem Arduino-Board, aber auf dem eigenständigen Chip gibt es das gleiche unberechenbare Verhalten (LED bleibt an, dh der Code friert ein).
  4. Habe das ganze Setup mehrfach neu verkabelt.
  5. Habe so viel in den Arduino-Foren versucht.

Nachfolgend einige Bilder der Setups

Aufstellen

Links unten in diesem Bild zeigen die beiden Drähte, die ich halte, den 5-V-Stromeingang für die Steckbrettschaltung. Beachten Sie, dass ich den Eingang an den 5-V-Pin des Chips und nicht an VCC gegeben habe (weil es unter Umgehung des Spannungsreglers gut funktioniert).

Die Reglerknöpfe für die Lüftergeschwindigkeit sind nicht mit dem Arduino verbunden. Die einzige Verbindung ist der Adapter, nehme ich an.

Schaltplan http://files.wooler.me/buildatmega/ATMEGA328P-AU-Wire_guide(2).png

Das von Ihnen verwendete Steckernetzteil ist höchstwahrscheinlich ein nicht geerdeter, doppelt isolierter Typ. Zur EMI-Unterdrückung befinden sich im Netzteil Kondensatoren, die als Nebeneffekt eine leichte Kopplung zwischen Netz und Ausgang bewirken. Ihr Stromkreis schwebt folglich auf einer relativ hohen Spannung, und wenn Sie eine Komponente berühren, fließt ein Strom durch Sie zur Erde. Diese Streuströme verursachen dann Chaos in Ihrem Stromkreis
@jms Warum und wie reagiert das Arduino-Board dann nicht darauf? Und welche Korrekturen kann ich in meinem Schaltkreis vornehmen, um ihn vor diesen Spitzen zu schützen? (Batterie ist in dem Fall, den ich verwende, nicht machbar)
Fügen Sie am Stromeingang eine 1000uF-Kappe hinzu. Fügen Sie eine 0,1-uF-Entkopplungskappe an der MCU hinzu. Benutzt du den ADC? Versuchen Sie, die analoge und digitale vcc/Gnd wie im Datenblatt vorgeschlagen zu entkoppeln. Der Kristall und die Kappen auf dem Steckbrett sind sehr anfällig für Probleme mit kapazitiven / Masseebenen. Haben Sie daran gedacht, eine Bare Bones Arduino-Leiterplatte herzustellen oder zu kaufen? Sie könnten immer noch eine Steckdose verwenden, aber die Platine wäre besser für das Kristall-Setup.
Verwenden Sie außerdem kurze Drähte. Die aktuellen 20-cm-Drähte fügen allem viel Induktivität hinzu und sind besonders schlecht geeignet, um den Kristall mit dem AVR zu verbinden.
@Passerby Glaubst du, dass der von mir bereitgestellte Schaltplan mit der nackten Knochenplatine funktioniert? Außerdem kann ich keine Steckdose in das Steckbrett stecken, da auf dem Steckbrett kein Platz mehr vorhanden ist. Auch der Pu/DIP funktioniert nicht. Wie Sie sagten, wird die Verwendung des 1000uF-Kondensators das Problem lösen, ich habe es bereits versucht. Alle Vcc- und GND-Paare sind auch mit einem 0,1-uF-Entkopplungskondensator verbunden, aber es heißt, dass er am nächsten an Vcc und den GND-Pins auf dem Chip angeschlossen werden sollte, aber das ist nicht möglich. Außerdem habe ich eine VT-47 24-V-Komponente auf dem Arduino-Board bemerkt. Wird das das Problem lösen?
Die langen Kabel vom Chip zum Kristall und zurück (sehr schwaches Signal!) geben mir keine gute Schwingung. Kannst du nicht den Chip in das Steckbrett stecken und zumindest den Kristall kann die Kappen direkter verbinden?
@WoutervanOoijen Wie ich Passerby oben geantwortet habe, habe ich dieselbe Schaltung mit dem Pu / DIP-IC von UNO ausprobiert. Auch das Bringen des IC zum Steckbrett lässt keinen Platz.
Ja, es gibt nichts an Ihrem Schaltplan, das auf einer Bare Bones-Leiterplatte nicht funktionieren würde. Alles, was es ist, ist ein kleiner Ausbruch für die MCU, aber mit dem Kristall und den Kappen direkt daneben. Sie könnten Header verwenden, damit Sie immer noch ein Steckbrett verwenden können, wenn Sie möchten.
Siehe thecustomgeek.com/kits/one-square-inch-of-goodness-build-it oder den JeeNode SMD von JeeLabs, die beide kleine Breakouts für den TQFP-Atmega sind. Beide haben unbestückte Platinen oder komplette zum Verkauf. Erwägen Sie für das Prototyping die Verwendung der DIP-Version auf dem Steckbrett mit dem Kristall und den Kappen in der Nähe und vielleicht einem zweiten oder größeren Steckbrett, und erstellen Sie dann die endgültige Version mit dem TQFP auf einer Leiterplatte.
@Passerby Ich werde es mit dem DIP mit dem kürzestmöglichen Stromkreis erneut versuchen und mich bei Ihnen melden.

Antworten (2)

Eine Zusammenfassung einiger der abgegebenen Kommentare, da ich allen zustimme:

  1. Verwenden Sie keine langen Drähte für Ihren Quarz. Der Quarz soll eine Wellenform erzeugen, die für die Fähigkeit des Mikrocontrollers entscheidend ist, ein stabiles internes Taktsignal zu erzeugen. Dieser Takt steuert die gesamte Logik innerhalb des Chips, eine ausreichende Abweichung hier kann zu einem sehr seltsamen, undefinierten Verhalten führen. Der parasitäre Widerstand und die Kapazität in diesen Drähten können die Wellenform des Kristalls stark verschlechtern.

  2. Fügen Sie Ihren 5-V-Versorgungsleitungen einige größere Kondensatoren hinzu. Beginnen Sie mit etwas in der Größenordnung von 10-100 uF am Steckbretteingang und dann 0,1 uF näher am Mikrocontroller. Es hört sich so an, als hätten Sie in einem Ihrer Kommentare bereits versucht, einen 5-V-Linearregler mit einem 12-V-Eingang (hoffentlich DC?) Mit den richtigen Koppelkondensatoren zu versorgen ... Ich würde tatsächlich dabei bleiben, selbst wenn dies nicht der Fall wäre Es macht keinen Unterschied, dem vertraue ich lieber als der 5-V-Steckdose.

Ich habe den Widerstand an Pin 29 hinzugefügt. (Unten rechts im Bild hinter dem roten Draht). Außerdem kondensiere ich derzeit die Schaltung, indem ich so viele Drähte wie möglich entferne. Wird die Frage aktualisieren, wenn die Ergebnisse herauskommen.
@AyushPahwa, danke für den Hinweis auf den Reset-Pullup-Widerstand, es war schwer zu sehen :)

Der Uno verfügt über integrierte Linearregler, die unerwünschte und hohe Spannungswelligkeiten in Wandsteckdosenadaptern ausgleichen. Es sieht so aus, als hätte Ihr Adapter am Ausgang eine hohe Spannungswelligkeit, die die zufälligen Resets verursacht. Versuchen Sie, Ihr Setup mit einer Batterie zu betreiben, und sehen Sie, was passiert.

Ich habe versucht, mit einer linear geregelten 5-V-Versorgung über eine ungeregelte 12-V-Versorgung mit einem 1000-uF-Kondensator am Eingang, einem 470-uF-Kondensator am Ausgang und einem Keramikkondensator von 0,1 uF sowohl am Eingang als auch am Ausgang zu speisen. Wie ich bereits sagte, habe ich versucht, meinen Laptop über USB mit Strom zu versorgen, daher habe ich keine Zweifel, dass es mit dem Akku funktionieren wird. Aber da ich an einem Heimautomatisierungsprodukt arbeite, ist die Verwendung einer Batterie nicht machbar.
Beachten Sie auch, dass, wenn ich meinen Laptop auflade, während ich die Schaltung über den USB-Anschluss des Laptops mit Strom versorge, das gleiche unberechenbare Verhalten auftritt. Ich habe das Schema des Chips zur Verfügung gestellt, den ich verwende. Ich möchte nur wissen, was den Unterschied zwischen dem UNO-Entwicklungsboard und dem Setup ausmacht.
@Ayush Wenn das Problem AC-gekoppeltes Rauschen ist, liegt das Problem wahrscheinlich daran, dass Steckbretter nicht die beste Lösung für Kristalle sind. Warum Sie es an Drähten haben, anstatt den Abstand zwischen den Teilen zu minimieren (indem Sie den Chip direkt in das Steckbrett stecken), könnte eine Ursache für die Probleme sein. Mal sehen, ob das hilft.
Im Wesentlichen ist dieser 1/2 Fuß Draht zwischen dem Kristall und der MCU das größte Problem, das ich sehe.