Skip to main content

Automatischer kabelloser Staubabscheider

Ich arbeite in einem Theatergeschäft und dachte, es wäre eine lustige Herausforderung, das Staubsammelsystem für unsere Elektrowerkzeuge zu automatisieren. In der Ecke des Ladens befindet sich ein großer Staubsammler mit Leitungen, die zu verschiedenen Werkzeugen führen, darunter Gehrungssäge, Bandsäge, Plattensäge und Bandschleifer. Zuvor hatten wir eine Fernbedienung, die mit dem Staubsammler geliefert wurde, der sie aus der Ferne einschaltete, wenn wir eines der Werkzeuge verwenden wollten. Mein Projekt hat dies so automatisiert, dass der Staubsammler beim Einschalten eines Werkzeugs automatisch eingeschaltet wurde. Dies wurde durch Überwachen des Stroms der Werkzeuge erreicht. Immer wenn der Stromwandler Strom erkennt, sendet er das Funksignal aus, um den Staubsammler einzuschalten und einen Countdown-Timer zu starten. Dieser Timer wurde installiert, weil der Motor am Staubsammler nicht wiederholt ein- und ausschalten möchte. Es ist glücklicher und hält daher länger an, wenn es ein- oder ausgeschaltet bleibt. Mit dieser Zeitschaltuhr kann sich der Schreiner Zeit nehmen, um den nächsten Schnitt zu messen, ohne sich Gedanken darüber zu machen, dass sich der Staubsammler ausschaltet. Der Timer wird auf dem Gehäusedeckel mit einer 7-Segment-Anzeige angezeigt. Die Dauer des Timers kann von Hand geändert werden, indem der Deckel geöffnet, eine Taste auf der Platine gedrückt und das Multiturn-Potentiometer gedreht wird. Wenn ein Werkzeug eingeschaltet wird, während das Vakuum eingeschaltet ist, beginnt der Timer wieder mit seiner ursprünglichen Zeit.

Zubehör:

Schritt 1: Hardware

Dies sind die im Projekt enthaltenen Teile

1 @ Arduino Uno

1 @ Stromwandler (Strommonitor)

1 @ Drehpotentiometer

1 @ 315 MHz Transmitter (oder auf welcher Frequenz auch immer Ihr System arbeitet)

1 @ 7 Segmentanzeige

33 Ohm Widerstand oder was auch immer bringt Sie dorthin und 2 10k Widerstände

1 @ Kondensator

1 @ staubdichte Box

1 @ 120V AC zu 12V DC Stromversorgung

Damit der Arduino den Stromwandler interpretieren kann, müssen Sie einige unterstützende Schaltkreise hinzufügen. Ich habe das Bild eingefügt, das ich als Referenz verwendet habe. Der Widerstand zwischen den Leitungen beträgt speziell 33 Ohm und die anderen 10 kOhm.

Ich habe ein Bild eingefügt, mit dem ich die Antenne für den Sender erstellt habe. Antennen sind sehr speziell und temperamentvoll, aber dieser Stil scheint für diese Frequenz und mein Setup zu funktionieren. Ich platzierte den Arduino strategisch, um die Antenne in der Ecke zu platzieren, die dem Staubsammler am nächsten liegt, um mir eine Chance zum Kampf zu geben.

Für die 7-Segment-Anzeige habe ich etwas Plexiglas geschliffen, um ein diffuseres Display zu erhalten, das als Schutzschild für das Loch in der Box fungiert. Ich habe Abstandshalter verwendet, um das 7-Segment und das Plexiglas miteinander zu verbinden, und das Plexiglas heiß auf den Deckel geklebt, um das Eindringen von Staub zu verhindern. Ich habe einen Teiler zwischen den Bereichen niedriger Spannung und Hochspannung eingebaut, einfach weil es so schien, als ob es das Richtige wäre.

Schritt 2: Software

Für den Umgang mit dem Current Transformer habe ich die Emon-Bibliothek von OpenEnergyMonirto.org verwendet. Das war das schwere Heben und ließ mich einen Befehl verwenden, um eine nette Nummer zu bekommen. Es ist sehr einfach zu bedienen und wird mit hervorragenden Beispielen geliefert. Ich habe die Bibliotheken SevenSegmentTM1637 und SevenSegmentExtended verwendet, um die 7-Segment-Anzeige zu handhaben.

Die extrem langen Arrays sind das Binärsignal, mit dem die Originalfernbedienung mit dem Staubsammler kommuniziert. Mein Freund Chris hat das Signal mithilfe von Prozessen, dem Vorläufer von Arduino, erfasst. Durch Überwachen des Antennen-Pins auf dem Mikrocontroller der Originalfernbedienung hat er die PWM des Signals erfasst und mithilfe von Excel die Reihenfolge von 1s und 0s basierend darauf bestimmt, wie lange der Pin ein- oder ausgeschaltet war. Dieses Array war meine beste Lösung, um diese Binärsequenz zu übertragen und eine zeitgesteuerte Iteration zu ermöglichen, wenn ein Signal gesendet werden soll. Wenn der aktuelle Monitor einen ausreichend hohen Wert liest, durchläuft er das Array und verzögert zwischen den einzelnen 390 Mikrosekunden, um das Timing der Originalfernbedienung zu simulieren. Jedes Mal, wenn ich den Staubsammler ein- oder ausschalten möchte, sende ich zwei Signale, um sicherzustellen, dass er empfangen wird.

// 0nBibliothek Beispiele openenergymonitor.org, Lizenz GNU GPL V3 / * SevenSegmentTM1637 und SevennSegmentExtended Erstellt am 25. September 2015 von Bram Harmsen http://github.com/bremme/arduino-tm1637 #include "SevenSegmentTM1637.h" #include "SevenSegmentExtended.h "#include" EmonLib.h "// Emon-Bibliothek einbeziehen EnergyMonitor emon1; // Eine Instanz erstellen

int ant = 2; int butt = 3; int pot = A1; int del = 389; / * Binäres Signal für das Ein-Signal * / int ONsig [164] = {1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0 , 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0 , 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1 , 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0 , 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0 , 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1}; / * Binärsignal für das Aus-Signal * / int OFFsig [164] = {1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0 , 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0 , 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1 , 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0 , 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1}; bool toolstate = false; bool vacState = false; doppelte Irms = 0; const byte PIN_CLK = 8; const byte PIN_DIO = 9; SevenSegmentExtended Display (PIN_CLK, PIN_DIO); / * Minuten und Sekunden dienen zum Speichern der vom Pot angegebenen Zeit. tempMin und tempSec dienen zum Anzeigen der Zeit und Steuern der Verzögerung zum Senden des Signals * / int rawTime = 0; int minutes = 0; int Sekunden = 0; int tempMin = 0; int tempSec = 0; long lastTime = millis (); / * legt fest, wie lange eine Sekunde dauert * / void setup () {pinMode (ant, OUTPUT); PinMode (Butt, INPUT); Serial.begin (9600); emon1.current (A0, 111,1); / * Current: Eingangspin, Kalibrierung. * / Display.begin (); display.setBacklight (100); readPot (); / * speichere die vom Pot vorgegebene Zeit * / delay (5000); / * pausiert das Arduino, damit es sendONSig nicht auslöst, wenn das Netzteil Strom zieht, um es einzuschalten. * /} // ----------------------- loop- -------------------------------------------------- - // void loop () {/ * Aktuellen Detektorpegel lesen * / Irms = emon1.calcIrms (1480); // Nur Irms berechnen / * Sende das Ein-Signal nur, wenn Strom erkannt wird und das Werkzeug nicht eingeschaltet ist, dann schalte den Vakuumzustand und den Werkzeugzustand ein * / if (Irms> 10 &&! Toolstate) {sendONSig (); Verzögerung (1000); / * Verzögerung und erneutes Senden, um sicherzustellen, dass es empfangen wird * / sendONSig (); vacState = true; toolstate = true; readPot (); / * Dies ist hier, um den Timer neu zu starten, wenn das Werkzeug eingeschaltet wird. * /} / * Das Werkzeug ist ausgeschaltet. Notieren Sie den Status. * / if (Irms <6) {toolstate = false; } / * Passen Sie die Countdown-Verzögerung an, indem Sie die Taste drücken und den Pot drehen. * / if (digitalRead (butt) == HIGH &&! vacState) {readPot (); } / * Timer ausführen, wenn das Vakuum aktiviert ist * / if (vacState) startTimer (); / * Wenn das Vakuum ausgeschaltet ist, wird die maximale Verzögerung angezeigt. * / if (! vacState) {display.printTime (Minuten, Sekunden, false); }} // ---------------------- SendONSig ----------------------- -------- // / * Senden Sie das Binär-EIN-Signal an die Antenne und drehen Sie die Antenne nach unten, um eine Störung des Signals der Originalfernbedienung zu vermeiden * / void sendONSig () {für (int i = 0; i <= sizeof (ONsig); i ++) {digitalWrite (ant, ONsig [i]); delayMicroseconds (del); } digitalWrite (ant, LOW); } // ---------------------- SendOFFSig ------------------------ ----- // / * Sende das Binary OFF-Signal an die Antenne und drehe die Antenne auf LOW, um zu verhindern, dass das Signal der Originalfernbedienung gestört wird * / void sendOFFSig () {für (int i = 0; i <= sizeof (OFFsig) ; i ++) {digitalWrite (ant, OFFsig [i]); delayMicroseconds (del); } digitalWrite (ant, LOW); } // --------------------- startTimer ------------------------- ----- // / * Führe die Logik aus, um in Sekunden herunterzuzählen. Die abgelaufene Zeit von lastTime und millis () ist nicht 1000, da der Befehl der Emon-Bibliothek ziemlich viel Zeit in Anspruch nimmt. * / Void startTimer () {if (millis () - lastTime> = 775) {display.printTime (tempMin, tempSec, falsch); lastTime = millis (); / * Wenn der Timer 0 erreicht, senden Sie das AUS-Signal zweimal, um sicherzustellen, dass es empfangen wird. * / if (tempMin == 0 && tempSec == 0) {sendOFFSig (); Verzögerung (1000); sendOFFSig (); vacState = false; Rückkehr; } if (tempSec == 0) {tempSec = 60; tempMin -; } tempSec -; }} // --------------------------------- readPot ------------ ------------------------- // / * Lies den Pot-Level und rechne ihn in einen Bereich von 0 bis 5 Minuten um. Konvertiere die Rohposition in Minuten und Sekunden * / void readPot () {rawTime = map (analogRead (pot), 0, 1023, 0, 300); Minuten = rawTime / 60; TempMin = Minuten; Sekunden = rawTime% 60; tempSec = Sekunden; }

Schritt 3: Endprodukt!

Es funktioniert super Jedes Mal, wenn eine Säge mit Strom versorgt wird, schaltet sich der Staubsammler direkt danach ein und bleibt für die erwartete Zeit eingeschaltet und schaltet sich aus, sobald der Zähler 0 erreicht. Ein Fehler, den ich nicht vorhergesagt habe, war, als die Stromversorgung und der Arduino mit Strom versorgt wurden Der Netzschalter des Werkzeugs wurde umgelegt und das Ein-Signal an den Staubsammler gesendet. Dies geschieht, weil das Netzteil lange genug Strom zieht, damit der Arduino Zeit hat, sich einzuschalten, den Strom zu prüfen und eine Spitze zu erkennen. Dabei wird das Ein-Signal gesendet, der Zähler jedoch aus irgendeinem Grund nicht gestartet. Ich habe dies behoben, indem der Arduino beim Hochfahren 5 Sekunden lang angehalten hat, damit sich das Netzteil befindet und auf den normalen Pegel zurückkehrt. Ansonsten verliefen der Aufbau und das Testen ziemlich reibungslos.