Überprüfung meines allerersten PCB-Designs für einen Bewässerungssteuerungsroboter.

Ich baue eine kleine Bewässerungssteuerung für eine meiner großen Zimmerpflanzen.

Dies ist mein erstes echtes Elektronikprojekt außerhalb der Schule. Obwohl ich EE an der Universität studiert und meine grundlegende Komponenten- und Filtertheorie gemacht habe; Ich habe fast ausschließlich Digitalelektronik studiert. Daher sind PCB-Design und Mixed-Signal-Schaltungen allesamt neu für mich.

Spezifikationen:

  • Kann 12V Wasserpumpe bis zu 5A antreiben,
  • Verfügt über einen Füllstandssensor im Wasserbehälter, um ein Trockenlaufen der Pumpe zu verhindern.
  • Kann Bodenfeuchtigkeit aus dem Topf ablesen.
  • Kann die Bodentemperatur am Topf ablesen.
  • Stoppt die Pumpe automatisch und sofort, wenn der Topf mit Wasser überläuft.
  • Einzelner Stromanschluss.
  • Erweiterbar.
  • Leicht programmierbar.
  • UART zum Datenabruf.

Die Feuchtigkeit wird mit einem Widerstandsspannungsteiler gemessen, bei dem der Boden als Widerstand betrachtet wird. Die Temperatur wird mit einem Thermistor gemessen. Und der Überlauf wird von großen Elektroden in der Auffangwanne unter dem Topf erkannt, wenn dort jemals Wasser eindringt, werden sie kurzgeschlossen.

Die Pumpe wird von einem 5-V-Relais mit einem Spulenwiderstand von 125 R (40 mA, 200 mW) angetrieben. Der Wasserstandssensor ist ein schwimmender Ring, der einen Mikroschalter betätigt, wenn der Wasserstand zu niedrig wird. Der Mikroschalter ist NO und schließt im geschlossenen Zustand gegen Masse. Der interne Pullup des INT1-Pins hält das Signal hoch, wenn der Schalter offen ist. Der IRQ-Handler für INT1 führt die Entprellung durch.

Ich habe zwei Hauptanschlüsse, P2, der zum Topf geht und die Überlauf-, Temperatur- und Feuchtigkeitssonden beherbergt, und P1, der zur Pumpe geht und den Wasserstandssensor hat.

Schaltplan:

Schema

Ich bin mir über die Widerstandswerte für die LEDs noch nicht sicher, sie werden für die maximale Helligkeit aus den Datenblättern berechnet, aber ich werde möglicherweise dunkler, je nachdem, wie hell das ist. Ich habe wirklich keine Ahnung. Ich werde das anpassen, wenn ich alles in der Hand habe.

Ich habe versucht, den Stromverbrauch des Reglers abzuschätzen, und ich sollte gut innerhalb der Toleranzen liegen, um selbst bei maximaler Entnahme keinen Kühlkörper zu benötigen. Typischerweise untersucht das Mikro jedoch den Boden und wenn er zu trocken ist (alle 4-5 Tage), bewässert er ihn. Dann geht es wieder für 4 Stunden in den Schlafmodus. Die Einschaltzeit ist also wirklich kurz, etwa 20 Sekunden, wenn die Pumpe tatsächlich läuft, verglichen mit 4 Stunden Schlaf.

Der MIC94090 ( Datenblatt ) ist ein High-Side-Lastschalter mit 1,2 A max. Dauerstrom. Brauche ich bei diesem IC die Freilaufdiode?

Soll ich ein Kapitälchen von LEVEL_ALERTbis hinzufügen GND? Ich bin mir bei D2 nicht sicher, brauche ich es? Ist es schädlich?

C1 wird hinzugefügt, weil ich mir Sorgen über den Spannungsabfall mache, wenn die Pumpe aktiviert wird. Ich bin mir nicht sicher, wie ich den Abfall berechnen soll, oder ob es überhaupt eine Sache ist, also würde ich mich über eine Anleitung dazu freuen. D1 ist eine Isolationsdiode, um zu verhindern, dass der Spannungsabfall (falls vorhanden) den Regler verlässt.

Ich denke, der interne RC-Oszillator, der auf 1 MHz heruntergeteilt ist, wird für meine Anwendung ausreichen. 10 Minuten auf diese oder jene Weise werden die Pflanze nicht töten.

Das Mikro führt eine PID aus, um die Dauer der Pumpe basierend darauf zu steuern, wie oft es bewässert werden muss. Es wird auch einige niederfrequente Datenprotokolle im EEPROM durchführen, die von UART gelesen werden können. Ich werde rechnen, um sicherzustellen, dass ich die Schreibzyklen in meinem Leben nicht überschreite.

Ich habe noch nicht alle Komponenten beschafft oder mich entschieden, welche Pumpe ich verwenden werde.

PCB-Layout

Ich werde dies auf einer zweiseitigen Leiterplatte mit einer Kupferschicht von 1 oz / ft (35 µm) auslegen. Ich ziele auf Seeedstudio ab, um meine Leiterplatte zu produzieren, also verwende ich eine 6/6-Regel und bezahle für 0,12 mm Lötstoppmaske.

Ich mache mir Sorgen über das Löten des µC, wie es aussieht, selbst eine 0,12-mm-Lötmaske hat kaum eine Maske zwischen den Pads. Wird dies ein Problem sein?

Ich habe so viele verschiedene Informationen zum Layout einer Mixed-Signal-Leiterplatte gefunden, Sternmasse, Masseebene, geteilte Masseebene und um ehrlich zu sein, bin ich mir immer noch nicht sicher, welcher Weg der beste ist. Basierend auf den Dokumenten, die ich gefunden habe, habe ich mich für eine solide Grundplatte entschieden und das Routing von analogen und digitalen Signalen getrennt gehalten. Ist dies der bevorzugte Ansatz?

Obwohl die analoge Leistung wichtig ist, ist die Geschwindigkeit nicht so, dass ich zu lange Abtastzeiten kann, um Rauschen zu bekämpfen. Ich verwende auch einen "geräuscharmen Modus" auf dem ATmega, in dem ich das Mikro während der ADC-Konvertierung in den Energiesparmodus versetze, der im Grunde alles außer der ADC-Uhr und dem Timer 2 stoppt, der meine "Wand" -Uhr ist. Analoge und digitale Signale schließen sich also per Software gegenseitig aus.

Ich habe mein Bestes versucht, um Stromschleifen zu vermeiden, aber ich muss sagen, ich bin mir nicht ganz sicher, wie ich die Stromschleifen "sehen" soll und was eine "Patch-Antenne" ausmacht, die ich mehrmals erwähnt habe.

Die Platine hat 3 Sektionen, links ist "High Power", der Relais- und Pumpenstecker zieht bei induktiver Last bis zu 5A. Die Mitte ist 5 V und digital und die rechte Seite ist analog. Beachten Sie, dass sich digitale Kabel auf der analogen Seite befinden, aber per Software ruhig sind, wenn der ADC misst.

Die Platine wird in ein 3D-gedrucktes Gehäuse gelegt und an der Seite des Pflanzkastens befestigt, so dass P2 (mit den in den Boden gehenden Sonden) nach oben und P1 (Pumpe und Wasserstand) nach unten zeigt.

Vorderseitenplatine

Oberseite der Leiterplatte

Rückseitenplatine

Unterseite der Platine

Ich mache mir Sorgen um das Routing des ~LEVEL_ALERTSignals, ich könnte kein Layout verwalten, in dem ich jemals ein anständiges Routing dafür bekommen könnte. Ich mache mir auch Sorgen, ob der möglicherweise große Strom in den Drähten 3 und 4 von P1 einen Strom in dem ~LEVEL_ALERTparallel verlaufenden Draht induzieren könnte, was fälschlicherweise dazu führt, dass der µC die Pumpe stoppt.

Ich habe mein Bestes versucht, sowohl beim schematischen Design als auch beim Layout einen anständigen Job zu machen. Glaubt ihr, dass das so funktioniert wie beabsichtigt?

Ich strecke meinen Hals ein bisschen raus, aber da sich noch niemand geirrt hat, frage ich mich, ob Sie sich ein bisschen zu viele Sorgen machen. Nichts hier läuft mit besonders hoher Geschwindigkeit und designtechnisch nahe am Rand, und ich wäre geneigt zu glauben, dass dies auf einem Stück Veroboard für einen Prototyp gut laufen würde.
@IanBland Du hast wahrscheinlich recht. Aber ich möchte vermeiden, dass ich mir von Anfang an schlechte Gewohnheiten aneigne, also möchte ich die Dinge "richtig" machen :)
Oh, absolut, ich meinte nur, dass Sie wahrscheinlich nicht zu viele Probleme bekommen werden, da Sie keine Gigabits an Daten herumschieben :)
Keine Showstopper, die ich sehen kann, aber zwei kleine Punkte - 1) Stellen Sie die LED-Widerstände auf ~ 5 mA ein, der Unterschied zwischen diesem und 20 mA ist kaum wahrnehmbar und der maximale Strom fällt mit der Temperatur, wenn dies in der Sonne sitzt (wie Pflanzen tun dies oft), dann könnten sie ziemlich heiß werden und den maximalen Strom nicht bewältigen. 2) (Dies ist sehr meinungsbasiert) Aus stilistischer Sicht fehlt dem Schaltplan ein echter Fluss. Um herauszufinden, wie die Dinge miteinander verbunden sind, müssen Sie nach den Signalnamen suchen. Benannte Signale haben ihren Platz, aber wo praktisch, ohne übermäßiges Durcheinander hinzuzufügen, verbinden Sie die Teile direkt.
@Andrew danke, der Schaltplan hat viele Iterationen durchlaufen und ich fand es einfacher, die Etiketten zu verschieben, als das Ding jedes Mal neu zu verkabeln, wenn ich etwas geändert habe.

Antworten (1)

Sie scheinen seit Ihren ersten Gedanken zu diesem Projekt einen ziemlichen Weg zurückgelegt zu haben.

Sie haben sich große Mühe gegeben, und ich sehe keinen Grund, warum es nicht funktionieren wird. Ich habe jedoch einige Anmerkungen:

  1. Sie haben sich für einen Atmeg168-20AU entschieden, scheinen jedoch die interne RC-Uhr mit externem ICSP zum Programmieren zu verwenden. Warum sollten Sie ein 3-Dollar-Mikro verwenden, wenn Sie ein ganzes Board ( Arduino Nano ) mit integriertem Bootloader und integrierter ICSP-Unterstützung kaufen können. Sie könnten Ihr PCB mit dem Nano als Lötkomponente anlegen und ein besseres bekommen (Low-Power-Controller, mehr Flash, mehr RAM, Leistungsregler, serielle USB-ZF, LEDs und Reset-Schalter) Lösung für etwa 3 $ bei Ebay. Sie müssen nicht die Arduino-Umgebung verwenden, um es zu programmieren, Sie können den Bootloader überschreiben, sodass es keinen Nachteil zu geben scheint. Die PCB-Komplexität würde dann ohne Verlust von Funktionalität oder Auswahlmöglichkeiten für das Projekt erheblich reduziert.

  2. Ihre Pegelalarm- und Feuchtigkeitssignale sind rohe I/O-Pins, die von der Platine genommen wurden. Ich bin immer dagegen, ungeschützte I/O-Pins von der Platine in die Verkabelung zu nehmen, es besteht immer das Risiko, dass ein Kurzschluss Ihre I/O-Struktur oder Ihren Controller durchbrennen könnte. In diesem Fall hat Ihr Anschluss sowohl einen rohen I/O-Pin als auch 12 V für den Füllstandsalarm.

  3. D3 muss nicht Schottky sein. D2 muss kein Schottky sein und ist aller Wahrscheinlichkeit nach überhaupt nicht erforderlich (vorausgesetzt, Ihre Pumpe ist ein tauchbarer BLDC-Typ).

Vielleicht würde die Verwendung eines Arduino den Spaß daran nehmen, da Emily dieses Projekt eindeutig entwerfen und bauen und daraus lernen möchte. Es gibt eine Linie für den Bastler/Lernenden zwischen „das Rad neu erfinden“ und „einfach hingehen und eins kaufen“ und für jeden ist es etwas anderes. Die Verwendung eines "rohen" Mikrocontrollers ist sowohl lehrreich als auch unterhaltsam. Und wenn Sie wie ich gerne nah am Metall sind, fühlt es sich eher nach Ingenieurskunst an als nach einer sofort einsatzbereiten Lösung. Ich stimme dem ungeschützten IO jedoch vollkommen zu. Es sollte immer etwas Pufferung vorhanden sein, auch wenn es nur ein Widerstand ist.
@IanBland ist auf dem Geld. Dies ist Erholung und Lernen für mich, ich habe bereits ein Arduino Uno-Board und 250-VAC-Relaismodule dafür. Ich kann alles anschließen und zum Laufen bringen, aber das ist nicht der Grund, warum ich das mache. :) Nr2 ist ein sehr guter Punkt, daran habe ich nicht gedacht. Glauben Sie, dass die internen ESD-Dioden des AVRs ausreichen würden, um einen Kurzschluss zu verkraften? Oder sollte ich Vcc einen Schottky hinzufügen? Mit Widerstand meinen Sie einen Strombegrenzungswiderstand wie hundert Ohm oder so?
Das, und ich nehme jede Ausrede, um meinen Lötkolben herauszuholen :)
Persönlich mag ich nichts, was in der Nähe der Außenwelt ist, von dem erwartet wird, dass es mit einem Kurzschluss fertig wird. Vor allem, wenn Wasser in der Nähe ist. Ein einfacher Widerstand reduziert den Fehlerstrom und Sie können einen hohen Wert verwenden, wenn Ihr Eingang gepuffert ist. 100R bei 12V sind 120mA und 1,44W über dem Widerstand ...
Da digitale Eingangspins im Wesentlichen mehrere CMOS-Eingänge sind, kann der Vorwiderstand ziemlich hoch sein ... 10 k oder mehr. Analogeingänge können von geschützten Puffern profitieren. Digitale Ausgänge sind normalerweise robuster, obwohl es ratsam ist, den Strom IMO nur zu senken. Ich verstehe die Vorliebe der Ops zum Lernen, aber wenn es Ihr erster Versuch mit einem Mikrocontroller mit SM-Komponenten ist, ist das Fehlerpotential etwas hoch. Es ist schwieriger, PCB, Schaltplan und Software gleichzeitig zu debuggen. Es lohnt sich, mit einer bekannten Basis (Arduino) zu beginnen und zuerst einfachen Testcode auszuführen.
Stimmt, aber normalerweise gibt es die Zwischenstufe des Breadboardings und/oder Board-Prototypings, um zu prüfen, ob der magische Rauch entweicht, und um die unbekannten Unbekannten zu identifizieren.
Der magische Rauch ist nicht mein Hauptanliegen, die meisten Schaltplan-/PCB-Pakete haben einfache Regelprüfungen. Wenn die Op bereit ist, so viel zu übernehmen, ist alles gut. Die Handhabung von SMT, wenn Sie keinen Ofen haben, ist meiner Ansicht nach eine Herausforderung und erfordert erhebliche Lötfähigkeiten.
@JackCreasey, das scheint ziemlich relativ zu sein, wie viel Sie bereit sind zu üben. Ich ging von keiner Löterfahrung zu einer etwas komplexen, selbst entworfenen SMD-Platine mit 0603-Passiven und einer 0,5-mm-MCU (und einigen SOT363-Transistoren, die ich am schwierigsten fand), indem ich einfach zwei Durchgangsloch-Kits zusammenbaute, ein SMD-Kit, und eine einfache selbst entworfene SMD-Platine. Ich halte mich im Allgemeinen für ziemlich unerfahren im Handwerk, also sage ich nur, dass ich denke, dass es den meisten Menschen nicht über die Fähigkeiten hinausgeht, SMD-Bestückungen mit einem Bügeleisen durchzuführen, wenn sie etwas Übung haben.
Und als sie bemerkt, dass das OP EE studiert hat, hat sie wahrscheinlich bereits Erfahrung im SMD-Löten.
Jetzt, wo ich darüber nachdenke, mache ich mir mehr Sorgen über einen Kurzschluss von + 12 V mit PGND oder GND als über LEVEL_ALERT. LEVEL_ALERTist ein hochohmiger Eingang am µC. Ich denke, ich werde eine Art Sicherung einbauen müssen.