Steuerungsbox
Verfasst: Do 11. Jun 2015, 02:18
Hallo RF`ler,
hab jetzt schon einige Zeit nicht mehr ins Forum geschaut, deshalb gebe ich mal einen Einblick zu meinen (etwas explodierten) Projekt:
Ich habe mir mittels Raspberry2 eine Temperatur-Regel-Steuerung gebaut. Hintergrund dazu: ich möchte den RF in einem Zimmer ohne Fenster betreiben, lediglich ein Abzug befindet sich in den Raum. Meine Anfangsidee war folgende:
Eine Plexiglas-Container für den Druckbereich (nur für den Druckbereich, die Steuerung soll sozusagen im "freien" liegen), wobei oben ein 120mm PWM Lüfter als Luftausgang dient, und seitlich am Plexi-Cont. sind Lüfteinlässe (diese sind mit Feinstaubfiltern versehen, und relativ dick). Oben am 120mm Lüfter steckt ein Schlauch, der zum Abzug geführt wird, wo wiederrum ein 2ter 120mm PWM Lüfter montiert ist.
Die Teile für den Kasten hab ich schon alle beisammen, mit dem Zusammenbau beginne ich wohl am Wochenende.
Was aber schon fertig ist, ist die Raspi Steuerung (Bilder anbei, wobei ich dazusagen muss, dass ich gerade eine V2 davon drucke, da ich bei meinen ersten Live Test auf einige Probleme bzgl. Timelaps Videos gestoßen bin, später dazu mehr).
Folgende Funktionen habe ich beim Raspi mittels Python bzw. .sh implementiert:
Hardware:
2x 120mm PWM Lüfter mittels PWM Signal ansteuern (das sind die 2 bereits erwähnten - die Logik dahinter grob:
ich Schalte im Druckmodus per Taster zwischen PLA und ABS um, jeweils mit einer bestimmten Soll-Temperatur im Druckbereich. Überschreitet die per Temp.fühler gemesene Temp. um 1 Grad -> Lüfter 10%, 2 Grad 20%, 3 Grad 50%, 40 Grad 100%).
1x 120mm Lüfter, der auf der Raspi-Box sitzt, und ähnlich reagiert wie die 2 erwähnten Lüfter, nur dass der Raspi leider nur 2 getrennt steuerbare PWM Ausgänge hat, also schalte ich diesen Lüfter einfach ein, wenn die Raspi-CPU-Temp oder die Raspi-Box-Temp. einen Schwellwert überschreitet
2x 40mm Lüfter, die an den Lufteinlässen des RF befestigt sind (zur Kühlung der RF Steuerung). Die laufen einfach immer, sobald die Steuerugn gestartet wird
3x Temp.fühler: einer im Plexglas-Druck-Container, einer in der Raspi-Box, und einer im Raum
1x Raspi-Webcam
1x usb-schaltbare Steckdose mit 4 schaltbaren Eingängen, und 2 Eingängen mit Dauerstrom
2x Taster für die Raspi Box
1x LCD-Display für den Raspi
6x Transistor
15x div. Widerstände
Softwarefunktionen:
-Lüftersteuerung temp.abhängig
-Webserver zur Darstellung der Livedaten, sowie zum Steuern (siehe Screenshot - diesen habe ich am Ipad gemacht, da ich hauptsächlich übers Ipad mitverfolge, wie gerade aussieht).
-Repetier-Server (zurzeit eigentlich hauptsächlich zum auslesen der Extr. und HB Temp.- ich muss da noch ein bisschen testen, aber bei der Vorschau von übertragenen g-codes sieht das ganz komisch aus, obwohl am lokalen Repetier Host alles gut aussieht...)
-Steuerung der Steckdosen: zurzeit sieht das ganze so aus: am fixen Stromeingang ist der Raspi angeschlossen (eine seperate Schaltsteckdose, sodass ich per Druck auf deren Knopf den Raspi einschalten kann. RF an einer schaltbaren Steckdose (RF-Strom wird Software-mäßig vom Raspi gesteuert). Die ganzen Lüfter laufen alle mit 12V und brauchen ein extra Netzteil (weil der Raspi nur 5V versorgen kann, und auch nur wenig Strom zur Verfügung stellt - auch diese Versorung schaltet der Raspi aus/ein.
-Raspi-Webcam: betreibe ich im Timelapse Modus (einstellung: 5MP, volle Qualität, 2 Sekunden Timelapse). Hierzu gleich eine Anmerkung, weil ich dazu in einem anderen Thread etwas gelesen habe: das Problem mit stockender Bildübertragung (bei allen Raspi-Modellen, 1,2,A,B,+...) liegt daran, dass auf einem internen USB-Datenübertragungsbus alle externen USB-Slots (und damit WLAN) sowie das Ethernet angeschlossen sind. Das hat zur Folge, dass man den ganzen Verfügbaren I/O vom Raspi mit einem intensiven Stream zumachen kann, und dann auch eine USB-Kommunikation zum RF im Schlimmstenfall warten muss, und dadurch der Drucker ins stocken kommt. Da mir bei der Bildübertragung aber Auflösung wichtiger ist, als FPS, fahre ich mit den erwähnten Einstellungen ganz gut (da ist auch noch genug Spielraum am Datenbus vorhanden).
-Mails: prinzipiell werden in jeden Fehlerfall (z.B.: maximale Temperaturüberschreitung, Prozesse tod,...) alle Logfiles (vom kompletten Raspi-Steuerkreislauf über RF-Logfiles) an meine Mailadresse geschickt. Ausserdem habe ich einen "nicht-daheim-Modus" eingebaut, sodass ich alle 30min eine Mail mit den Logfiles sowie einen Thumbnail Screenshot der Webcam (1280x1024, q50 -> damit nicht soviel Webtraffic entsteht). Diesen Modus kann ich sowohl per Taster am Raspi, als auch im Webgui aktivieren bzw. deaktivieren.
-Dead-Check: ein Überwachungsscript, dass überprüft, ob eh noch alle Dienste am Raspi laufen, und wenn nicht, diese ggfl. neustarten. Wenn das auch nicht hilft, startet sich der Raspi selbst neu, und geht sofort wieder in den letzten bekannten Modus über (z.B.: war PLA eingestellt, also wird nach dem Reboot gleich wieder PLA gestartet. Bei so einen Reboot werden natürlich nicht die schaltbaren Steckdoesen deaktiviert, sonst wäre ja der RF stromlos....
-Webgui: alle Funktionen können hier aktiviert / deaktiviert werden (z.B. Steckdosen schalten, Steuerprogramm ABS/PLA starten, sowie Anzeige des aktuellen Status (Raspi-, Raum, 3D-Druckbereich, Extruder und Heatbed Temperatur)
-beim beenden des Steuerprogramms: automatische Erstellung eines .mp4 Timelapse Videos aus den erstellten .jpg`s (-> 5MP Timelapse Video, schaut echt fein aus), sowie Übertragung aller Rohdaten (Durckerlogfiles, Raspi-Logfiles, jpgs und Timelapse Video) auf meine Netzwerkfestplatte.
Anmerkung zum Raspi-Box Screenshot: Die Webcam hab ich provisorisch mit Klebeband befestigt, deshalb sieht das so komisch aus, aber wie gesagt, ich drucke gerade das V2 Gehäuse.
Zwei Fragen zum Repetier-Server:
verwendet hier jemand die API, um den RF per SH, Python, oder sonstwie zu steuern?
Weiß vielleicht jemand, woher das WebGUI vom Rep.Server solche Infos wie die aktuelle Layer Position nimmt? Bzw. die Restzeitanzeige? Ich kann das in keinem Logfile finden, und würde das noch gerne in meinen GUI anzeigen...
Falls jemand an etwas ähnlichen arbeitet, kann ich gerne Code zur Verfügung stellen.
LG Thomas
hab jetzt schon einige Zeit nicht mehr ins Forum geschaut, deshalb gebe ich mal einen Einblick zu meinen (etwas explodierten) Projekt:
Ich habe mir mittels Raspberry2 eine Temperatur-Regel-Steuerung gebaut. Hintergrund dazu: ich möchte den RF in einem Zimmer ohne Fenster betreiben, lediglich ein Abzug befindet sich in den Raum. Meine Anfangsidee war folgende:
Eine Plexiglas-Container für den Druckbereich (nur für den Druckbereich, die Steuerung soll sozusagen im "freien" liegen), wobei oben ein 120mm PWM Lüfter als Luftausgang dient, und seitlich am Plexi-Cont. sind Lüfteinlässe (diese sind mit Feinstaubfiltern versehen, und relativ dick). Oben am 120mm Lüfter steckt ein Schlauch, der zum Abzug geführt wird, wo wiederrum ein 2ter 120mm PWM Lüfter montiert ist.
Die Teile für den Kasten hab ich schon alle beisammen, mit dem Zusammenbau beginne ich wohl am Wochenende.
Was aber schon fertig ist, ist die Raspi Steuerung (Bilder anbei, wobei ich dazusagen muss, dass ich gerade eine V2 davon drucke, da ich bei meinen ersten Live Test auf einige Probleme bzgl. Timelaps Videos gestoßen bin, später dazu mehr).
Folgende Funktionen habe ich beim Raspi mittels Python bzw. .sh implementiert:
Hardware:
2x 120mm PWM Lüfter mittels PWM Signal ansteuern (das sind die 2 bereits erwähnten - die Logik dahinter grob:
ich Schalte im Druckmodus per Taster zwischen PLA und ABS um, jeweils mit einer bestimmten Soll-Temperatur im Druckbereich. Überschreitet die per Temp.fühler gemesene Temp. um 1 Grad -> Lüfter 10%, 2 Grad 20%, 3 Grad 50%, 40 Grad 100%).
1x 120mm Lüfter, der auf der Raspi-Box sitzt, und ähnlich reagiert wie die 2 erwähnten Lüfter, nur dass der Raspi leider nur 2 getrennt steuerbare PWM Ausgänge hat, also schalte ich diesen Lüfter einfach ein, wenn die Raspi-CPU-Temp oder die Raspi-Box-Temp. einen Schwellwert überschreitet
2x 40mm Lüfter, die an den Lufteinlässen des RF befestigt sind (zur Kühlung der RF Steuerung). Die laufen einfach immer, sobald die Steuerugn gestartet wird
3x Temp.fühler: einer im Plexglas-Druck-Container, einer in der Raspi-Box, und einer im Raum
1x Raspi-Webcam
1x usb-schaltbare Steckdose mit 4 schaltbaren Eingängen, und 2 Eingängen mit Dauerstrom
2x Taster für die Raspi Box
1x LCD-Display für den Raspi
6x Transistor
15x div. Widerstände
Softwarefunktionen:
-Lüftersteuerung temp.abhängig
-Webserver zur Darstellung der Livedaten, sowie zum Steuern (siehe Screenshot - diesen habe ich am Ipad gemacht, da ich hauptsächlich übers Ipad mitverfolge, wie gerade aussieht).
-Repetier-Server (zurzeit eigentlich hauptsächlich zum auslesen der Extr. und HB Temp.- ich muss da noch ein bisschen testen, aber bei der Vorschau von übertragenen g-codes sieht das ganz komisch aus, obwohl am lokalen Repetier Host alles gut aussieht...)
-Steuerung der Steckdosen: zurzeit sieht das ganze so aus: am fixen Stromeingang ist der Raspi angeschlossen (eine seperate Schaltsteckdose, sodass ich per Druck auf deren Knopf den Raspi einschalten kann. RF an einer schaltbaren Steckdose (RF-Strom wird Software-mäßig vom Raspi gesteuert). Die ganzen Lüfter laufen alle mit 12V und brauchen ein extra Netzteil (weil der Raspi nur 5V versorgen kann, und auch nur wenig Strom zur Verfügung stellt - auch diese Versorung schaltet der Raspi aus/ein.
-Raspi-Webcam: betreibe ich im Timelapse Modus (einstellung: 5MP, volle Qualität, 2 Sekunden Timelapse). Hierzu gleich eine Anmerkung, weil ich dazu in einem anderen Thread etwas gelesen habe: das Problem mit stockender Bildübertragung (bei allen Raspi-Modellen, 1,2,A,B,+...) liegt daran, dass auf einem internen USB-Datenübertragungsbus alle externen USB-Slots (und damit WLAN) sowie das Ethernet angeschlossen sind. Das hat zur Folge, dass man den ganzen Verfügbaren I/O vom Raspi mit einem intensiven Stream zumachen kann, und dann auch eine USB-Kommunikation zum RF im Schlimmstenfall warten muss, und dadurch der Drucker ins stocken kommt. Da mir bei der Bildübertragung aber Auflösung wichtiger ist, als FPS, fahre ich mit den erwähnten Einstellungen ganz gut (da ist auch noch genug Spielraum am Datenbus vorhanden).
-Mails: prinzipiell werden in jeden Fehlerfall (z.B.: maximale Temperaturüberschreitung, Prozesse tod,...) alle Logfiles (vom kompletten Raspi-Steuerkreislauf über RF-Logfiles) an meine Mailadresse geschickt. Ausserdem habe ich einen "nicht-daheim-Modus" eingebaut, sodass ich alle 30min eine Mail mit den Logfiles sowie einen Thumbnail Screenshot der Webcam (1280x1024, q50 -> damit nicht soviel Webtraffic entsteht). Diesen Modus kann ich sowohl per Taster am Raspi, als auch im Webgui aktivieren bzw. deaktivieren.
-Dead-Check: ein Überwachungsscript, dass überprüft, ob eh noch alle Dienste am Raspi laufen, und wenn nicht, diese ggfl. neustarten. Wenn das auch nicht hilft, startet sich der Raspi selbst neu, und geht sofort wieder in den letzten bekannten Modus über (z.B.: war PLA eingestellt, also wird nach dem Reboot gleich wieder PLA gestartet. Bei so einen Reboot werden natürlich nicht die schaltbaren Steckdoesen deaktiviert, sonst wäre ja der RF stromlos....
-Webgui: alle Funktionen können hier aktiviert / deaktiviert werden (z.B. Steckdosen schalten, Steuerprogramm ABS/PLA starten, sowie Anzeige des aktuellen Status (Raspi-, Raum, 3D-Druckbereich, Extruder und Heatbed Temperatur)
-beim beenden des Steuerprogramms: automatische Erstellung eines .mp4 Timelapse Videos aus den erstellten .jpg`s (-> 5MP Timelapse Video, schaut echt fein aus), sowie Übertragung aller Rohdaten (Durckerlogfiles, Raspi-Logfiles, jpgs und Timelapse Video) auf meine Netzwerkfestplatte.
Anmerkung zum Raspi-Box Screenshot: Die Webcam hab ich provisorisch mit Klebeband befestigt, deshalb sieht das so komisch aus, aber wie gesagt, ich drucke gerade das V2 Gehäuse.
Zwei Fragen zum Repetier-Server:
verwendet hier jemand die API, um den RF per SH, Python, oder sonstwie zu steuern?
Weiß vielleicht jemand, woher das WebGUI vom Rep.Server solche Infos wie die aktuelle Layer Position nimmt? Bzw. die Restzeitanzeige? Ich kann das in keinem Logfile finden, und würde das noch gerne in meinen GUI anzeigen...
Falls jemand an etwas ähnlichen arbeitet, kann ich gerne Code zur Verfügung stellen.
LG Thomas