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.
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.
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_ALERT
bis 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.
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.
Ich mache mir Sorgen um das Routing des ~LEVEL_ALERT
Signals, 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_ALERT
parallel 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?
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:
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.
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.
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).
LEVEL_ALERT
. LEVEL_ALERT
ist ein hochohmiger Eingang am µC. Ich denke, ich werde eine Art Sicherung einbauen müssen.
Ian Bland
Emily L.
Ian Bland
Andreas
Emily L.