Da der Satzbehälter der Quickmill 5000 recht groß ist, wird er erst als voll gemeldet, wenn ca. 34 Tassen gezapft wurden. Das dauert in unserem Haushalt geraume Zeit, so dass im Sommer durchaus die Gefahr besteht, dass der Satz im Behälter anfängt zu schimmeln. Der Schimmel sieht mit seiner hellrosa Farbe zwar ganz nett aus, ich möchte ihn aber trotzdem nicht in meiner Kaffeemaschine haben ;)
Nun könnte man natürlich den Zähler für den Satzbehälter kleiner einstellen und ihn früher leeren, aber das ist Kindergarten. Viel cooler ist der Einbau eines Lüfters, der die Feuchtigkeit aus dem Satzbehälter nach draußen bläst, den letzten Satzpuck somit trocknet und Schimmelbildung unterbindet.
Damit das erfolgversprechend funktionieren kann, muss der Lüfter wohl länger laufen als vorhandene Timer im Code erlauben, es muss also ein weiterer Timer vorgesehen werden. Das bedingt die Eliminierung von ein paar der vorhandenen Smileys, denn der Codebereich des Arduino ist so gut wie ausgereizt und ich möchte die Laufzeit natürlich im Menü einstellbar implementieren. Dazu später mehr...
Viel größer darf der Lüfter nicht sein, sonst spukt ihm die Kaffeemaschine den Satz auf den Kopf.
Im Netz findet man mengenweise Angebote für sehr ähnlich aussehende Lüfter, teilweise deutlich preiswerter, aber leider immer ohne Angabe der Abmessungen.
An einem Beispiel konnte ich die Abmessungen über Umwege herausfinden. Der angebotene Lüfter gilt als “Ersatz CPU Lüfter für NUC8i7BEH” und andere Typen dieser Mini-PC Motherboards. Auf der Homepage von Intel findet man STEP Dateien für diesen Typ von Motherboard und mit FreeCAD kann man in der 3D-Darstellung Maße abnehmen: 8 cm Kantenlänge, also viel zu groß.
Hier noch ein Blick auf den Spalt mit eingesetztem Satzbehälter. Passt wie vorgesehen :)
Die Anschlussleitungen werden in einem Schlauch in den Technikraum der Maschine geführt und an strategischen Stellen mit Kabelbindern fixiert, so dass sie nicht ins offen laufende Getriebe der Maschine geraten können.
Mein erster Ansatz war, den Lüfter mit einem FET einschaltbar zu machen und die Versorgungsspannung vom vorhandenen Netzteil liefern zu lassen. Leider erwies sich das Netzteil der Quickmill als zu schwachbrüstig für diesen Weg. Sobald der Lüfter angelaufen ist, hat sich der Controller der Kaffeemaschine rückgesetzt und alles blieb stehen - kein Kaffee :( Zum Glück hatte ich die Option implementiert, den Lüfter nicht einzuschalten, weiterer Kaffeebezug war also erst einmal möglich.
Plan B ist der Einsatz eines eigenen Netzteils für den Arduino und den Lüfter. Mit einer kleinen Relais-Zusatzschaltung mit Selbsthaltung kann so auch ein Nachlaufen des Lüfters nach Abschalten der Kaffeemaschine realisiert werden. Der Arduino steuert dann nicht nur den Lüfter, sondern schaltet sich nach Ablauf der Lüfterlaufzeit gleich selbst ab, sollte in der Zwischenzeit die Maschine mit dem Hauptschalter ausgeschaltet worden sein. Ist die Kaffeemaschine noch eingeschaltet, geht nach Ablauf der Laufzeit natürlich nur der Lüfter aus.
Achtung!
Die nachfolgend beschriebene Schaltung arbeitet mit Netzspannung. Bei Missachtung
von einschlägigen Vorschriften und Sicherheitsmaßnahmen kann Netzspannung tödlich sein. Wer sich also mit dem Umgang mit Netzspannung nicht auskennt, sollte
vom Nachbau absehen oder sich zumindest beim Aufbau des Netzspannung führenden Teils der Schaltung sowie bei der Inbetriebnahme von jemandem helfen lassen, der die passende Ausbildung sein Eigen nennt.
Prinzipiell: Bei allen Arbeiten im Innern der Maschine den Netzstecker ziehen!
Im Prinzip läuft es darauf hinaus, das zusätzliche 5 V-Netzteil für den Arduino und den Lüfter über die Zusatzschaltung mit Relais direkt an den Netzeingang der Kaffeemaschine anzuschließen, also an der Lüsterklemme, wo das Netzkabel in die Maschine kommt.
Das Schaltbild der Zusatzschaltung birgt keine großen Geheimnisse.
(Click auf das Bild für größere Darstellung)
Die Dreifachklemme links oben im Schaltbild ist der Anschluss für den Netz-Eingang direkt von der oben erwähnten Lüsterklemme. Da wir hier direkt am Netz arbeiten, ist eine Sicherung vorgesehen. Das Relais schaltet die Netzspannung zweipolig, die Ansteuerung des Relais erfolgt zum einen über das in der Maschine eingebaute Netzteil und zum anderen über einen Ausgang des Arduino. Das Relais wurde so gewählt, dass die Ansprechleistung mit 80 mW bei 5 V sicher im Rahmen eines Arduino Ausgangs liegt, es ist also hierfür keine Leistungsstufe in Form eines FET oder Transistors notwendig.
Der geschaltete Ausgang der Platine geht direkt zum Netzeingang des zusätzlichen Netzteils, das wiederum seine 5 V an den Eingang Vin des Arduino liefert.
Das Layout der Schaltung:
(Click auf das Bild für größere Darstellung)
Die beiden Schaltspannungen für das Relais sind über Schottky-Dioden entkoppelt, hier können wahlweise TH oder SMD Typen eingesetzt werden, beide Pads sind entflochten. Der Anschluss PE wird nicht durchgeschleift, er dient nur zur Trennung des Niedervoltteils vom Netzspannung führenden Teil der Schaltung. Eine Diode 1N4148 parallel zur Relaisspule unterdrückt Spannungsspitzen beim Abschalten des Relais.
Die im Layout rot angedeutete Leitung muss mit einem Draht ausgeführt werden, weil sonst die Abstände zwischen den Leitungen zu gering ausgefallen wären.
Da die Platine auf der CNC-Fräse erstellt wird, sind zwei G-Code Dateien zur Freistellung der Leiterbahnen notwendig. Die Erste nutzt einen Gravierstichel mit 0,1 mm breiter Spitze für die feinen Strukturen.
Die zweite Datei verwendet einen zylindrischen 1,4 mm diamantverzahnten Fräser um alle Reste von Kupfer zwischen den Leiterbahnen zu entfernen.
Die Überlagerung beider Bahnkurven zur Verdeutlichung. Drei statt fünf Runden mit dem 1,4 mm Fräser hätten wahrscheinlich genügt um alle Kupferflächen zwischen den Leiterbahnen zu entfernen.
Das funktioniert nicht zu 100%, es bleiben winzige Reste stehen, die z.B. mit einem Skalpell entfernt werden müssen.
Hinweis
Normalerweise platziere ich Texte auf der Kupferseite im Milling Layer. Auf diese Weise
werden die Zeichen mit einer Fräsbahn und damit sehr fein ausgeführt. Im gegebenen Fall muss ich die Texte aber als Kontur im Bottom Layer platzieren, weil sonst der 1,4
mm Fräser das Kupfer um die Zeichen komplett entfernt hätte und die Texte nicht mehr lesbar wären.
In Natura stellt sich die Schaltung so dar:
Einige Reste der Kupferfläche habe ich an unkritischen Stellen stehen lassen. Die Beschriftung der Anschlüsse ist sehr dünn ausgefallen, in der unten verlinkten Version sind Buchstaben mit dickeren Linie ausgeführt.
Um ein zufälliges Berühren von Netzspannung führenden Teilen der Schaltung zu verhindern, erhält die Schaltung ein Gehäuse aus dem 3D-Drucker.
Im Boden des Gehäuses ist ein Befestigungsloch für eine Senkkopfschraube so platziert, dass von der Schraube keine Netzspannung führenden Leitungen auf der Platine berührt werden können, sollte sie sich unbeabsichtigt im Betrieb lösen.
Die Platine sitzt auf kleinen Abstandshaltern in den Ecken, der Deckel rastet mit den feinen Bahnen vom 3D-Druck im Gehäuse ein und sitzt somit relativ fest. Die Ausschnitte sind so festgelegt, dass Berührschutz gegenüber den Netzspannung führenden Teilen gegeben ist.
Die Designunterlagen für die Platine im Format EAGLE 7 sowie für das Gehäuse im Format Designspark mechanical V6 und als STL-Dateien für den 3D-Druck stelle ich Interessierten zur Verfügung.
Update
Das im Bild oben gezeigte Relais wird zwar mit einer Stromtragfähigkeit von 2 A und
einer Spannungsfestigkeit von 250 V AC beworben (auch im Datenblatt), aber im wirklichen Leben ist davon nicht viel übrig geblieben. Das Zusatznetzteil wurde genau
vier Mal ein- und ausgeschaltet, danach wurde das Netzteil nicht mehr abgeschaltet. Meine Vermutung, dass die Kontakte beim Schalten verschweißt wurden, hat sich nach destruktivem Öffnen des Relais bestätigt.
Rot markiert die zerstörten Kontakte, die grün Markierten ohne Abnutzungsspuren. Die Kontaktfedern habe ich zur besseren Sicht auf die Kontaktstellen nach oben gebogen.
Das führt insgesamt zu Plan C. Das Relais wird unter Aufgabe der zweipoligen Netztrennung durch ein 2A Solid State Relais (SSR) ersetzt, der Rest der Schaltung bleibt mehr oder weniger unverändert.
(Click auf das Bild für größere Darstellung)
Das Layout ist natürlich aufgrund des anderen Formfaktors des SSR in wesentlichen Teilen neu, die Lage der Anschlüsse und der restlichen Bauteile bleibt aber gleich.
Und auch das Gehäuse musste sich eine Runderneuerung gefallen lassen, denn das SSR ist fast doppelt so hoch wie das mechanische Relais. Da ich beim Anschließen der Leitungen in der Kaffeemaschine leichte Probleme hatte, weil alles etwas beengt ist, habe ich den Leerraum unterhalb der Platine ebenfalls ca. 1 cm vergrößert, so dass die Anschlüsse jetzt prima auch im eingebauten Zustand zu erreichen sind.
Damit der Lüfter und das Relais vom Arduino angesteuert werden, braucht es natürlich auch eine passende Version der Quickmill Saver Firmware sowie einen neuen Adapter, der die zusätzlichen Anschlüsse bereit stellt.
Das erweiterte Schaltbild...
(Click auf das Bild für größere Darstellung)
... und das zugehörige Layout
Die beiden neuen Anschlüsse für Relais und Lüfter werden über Pin 11 und Pin 12 angesteuert. Beim Lüfter ist die Zuordnung klar, zwei Leitungen an zwei Pins, Plus 5V liegt außen. Die Steuerspannung für das Relais muss an den beiden äußeren Pins des dreipoligen Steckers abgenommen werden, hier liegt, wie bei den Sensoranschlüssen, GND auf dem zum Platinenrand orientierten Pin.
Alle SMD Bauteile, der FET sowie ein paar Kondensatoren und Widerstände, sitzen auf der Unterseite, der Rest sind Stecker und Buchsen, die von oben bestückt werden.
Auch die Unterlagen für den Adapter biete ich zum Download an, Format ist wieder EAGLE V7.
Jetzt noch die dazu passende Firmware in Version V2.11 und fertig ist die Laube :)
Die Laufzeit des Lüfters nach Bezug einer Tasse kann im Menü eingestellt werden. Der Parameter liegt zwischen 0 und 30 Minuten. Bei 0 (Null) wird der Lüfter nicht eingeschaltet.
Update
Auch bei der Firmware gibt es noch eine weitere Version V13, denn beim Umstieg auf
einen anderen Rechner musste ich alle Arduino Libraries neu installieren. In Folge ist das Compilat um Einiges gewachsen, passte nicht mehr ins Flash des Arduino Nano. Auch
durch beherztes Downgrade aller Libs auf die Versionen wie auf dem ursprünglichen Rechner ist es mir nicht gelungen, die gleiche Firmwaregröße zu erhalten. In letzter
Konsequenz habe ich ein paar Optimierungen vorgenommen, um zu vermeiden, weitere Smileys opfern zu müssen.
Alle Abfragen auf millis() wurden auf die ohnehin zu bevorzugende Variante mit Immunität gegen Zählerüberlauf umgestellt. Aus
if (millis() > (start + 150)) {...};
wird
if ((millis() - start) > 150) {...};
Das ergab bei 8 Vorkommen insgesamt eine Einsparung von ca. 30 Byte.
Zusätzlich werden die beiden Ausgänge für den Lüfter und das Netzteil nicht mehr mit zwei Aufrufen digitalWrite() sondern per direkter Port-Manipulation jetzt gleichzeitig und 22 Byte sparend geschaltet. Nach diesen Maßnahmen passt der Code auch mit den aktuellen Libs und compiliert mit der Arduino IDE V2.0 wieder ins Flash des Arduino Nano.
Hinweis: Arduino IDE 1.8 und IDE 2.0 erzeugen übrigens gleich große Compilate.