Freitag, 26. Dezember 2014

Home automation done in one afternoon

So there they are. The winter holidays. And you finally I have all the time to make that stuff I wanted to do. But what to do first.
Remote-control
The challenge is to build the things as fast as possible. So we start with the home automation thing I had in my mind for a few month now. First up we need a cool name so it does stick out of the masses. Well it's name is going to be Herbert.
Next up we need a processing base station for WiFi integration.

Remote-controlled Socket
This nice Raspberry Pi will do the job pretty well I guess. I have a collection of 6 remote controlled wall-adapters for the power sockets and a remote-control to toggle 3 of them individually on and off. the all-off button also exists. Dismantling the remote I found a circuit-board with an ASIC, 12V battery, four tactile switches, 434MHz crystal, one LED and a 8bit-dip switch bank.
Basically just an ASIC
 A quick glance at the backside of the PCB shows that 7 of the 8 switches are connected to the ASIC. Looks like some sort of channel selection. Nice. The operation voltage for the remote is 12V so we can not directly hook the Pi up.
I need some sort of isolation between the two circuits. Something like a optocoupler or a relay. I just happen to have two dual-relay-modules laying around so why not use them. A really quick solder-job later the tactile switches had a wire attached as well a a wire to short one of the channel-selectors. Now all six sockets can be operated with one remote module. the all-off switch is not connected. So I can not switch them all off at once. For now. A look inside the socket adapters show that they also consist of an ASIC. This one isn't even labeled! A switch mode power-supply and an antenna.

The socket-module seems not to answer the command in a way to determine of the signal was received. I will have a look into this later. For now one-way communication will have to be sufficient.

Everything hooked together like this:
5V -> Relay supply
3.3V -> Relay driver
GPIO -> Relay switch signal
The relays short the tactile switches ans one of the channel-selectors. 


The next step is software. The Pi I use has Raspbian installed. This is a Linux based on the Debian distribution and comes with python and bindings to access the GPIO directly from the script. With Python you get a HTTP-server up and running in no time.

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
import RPi.GPIO as GPIO
class myHandler(BaseHTTPRequestHandler):
    
    #Handler for the GET requests
    def do_GET(self):

        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Send the html message
        self.wfile.write("Hello World")
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(4, GPIO.OUT, initial=1)
        GPIO.output(4, 1)
        
        return

try:
    #Create a web server and define the handler to manage the
    #incoming request
    server = HTTPServer('', 8000), myHandler)
    print 'Started httpserver on ', server.server_address
    
    #Wait forever for incoming http requests
    server.serve_forever()

except KeyboardInterrupt:
    print '^C received, shutting down the web server'
    server.socket.close()

With little additions the first version of Herbert was built. Have look at the git if you want.

Donnerstag, 20. November 2014

Electronica 2014

Ich war am 13.11. auf der Electronica in München. Das ist eine der Großen Elektronik Messen.

Es gab sehr viele interessante neue Dinge zu sehen. Allerdings kann man an einem Tag nicht einmal ansatzweise alles sehen, das ausgestellt ist. Allerdings habe ich einige interessante Neuigkeiten erfahren, die für zukünftige Projekte von Nutzen sein können.


Sonntag, 16. November 2014

Back on track... Es druckt wieder

Nach einigen Reparaturarbeiten ist der Drucker wieder unter den Lebenden. Einige Dinge, die ich dabei gelernt habe und die für andere nützlich sein könnten:


Stotternder Schrittmotor

Nachdem ich die Treiber des Duet Controller-Boards getauscht hatte ist der Y-Motor nicht mehr korrekt verfahren. Ich habe das auf die Tatsache geschoben, dass dieser Treiber eventuell nicht richtig verlötet wurde. Also habe ich das Board noch einmal nachgelötet und mit einem ausgebauten Motor getestet. Das Ausbauen des Motors war schnell erledigt und nachdem ich die Lötstellen noch einmal erwärmt hatte hat der Motor sich auch korrekt gedreht. Also alles wieder eingebaut und diesmal die Verkabelung genau überprüft und der Motor stottert immer noch. Nach Erhöhen des Motorstroms und verringern der Beschleunigungswerte ist die Achse auch wieder verfahren. Allerdings ist der Tisch anstatt der 10mm ist der Tisch aber 80mm verfahren. Ein eindeutiges Zeichen, dass mit den Microstep Jumpern etwas nicht stimmt. Wie im Schaltplan des Duet Boards zu erkennen ist, wird jeder Motortreiber auf 1/16 Microstep konfiguriert. Ein kurzes nachmessen des betroffenen Treibers und siehe da, die Konfiguration für MS2 war auf low statt high. Da hat sich beim Tauschen der Treiber wohl eine Leiterbahn gelöst. Ein Draht von Pin 6 auf 3,3V und schon lief wieder alles wie geschmiert.

Stotternder Schrittmotor 2

Ein weiteres Stottern der Y-Achse nach dem erfolgreichen Zusammenbauen und dem ersten Druck ließ sich auf eine lose Steckverbindung des Motors zurück führen. Nicht immer ist das Controller-Board der Verursacher. 

Kabelführung

Die Verschiedenen Kabelstränge des Druckers sind jetzt in einem Bündel mit einem Spiralschlauch zusammen gefasst und somit nicht mehr so gefährdet sich zu verheddern. Der Spiralschlauch ist günstig auf Amazon zu haben.

Luftzug

Der Lüfter für die Hotend-Kühlung kann keinen nennenswerten Druck aufbringen. Da die Luftdüsen des Kühlerteils allerdings nicht dem Durchmesser des Lüfters entsprechen, wir eine große Menge der Luft zur Zuführungsseite zurückgedrückt und weht auf das Druckbett. Das soll angeblich zu schlechteren Drucken führen. Mit einer Abdeckung kann dem entgegengewirkt werden. Ob das wirklich funktioniert, wird sich zeigen.

Stromversorgung

Ich habe das ATX Netzteil durch ein 400W LED Netzteil ausgetauscht. Die Druckplatte ist wesentlich schneller auf Temperatur, die Steigung der Temperaturgerade ist fast doppelt so hoch wie vorher, und der Lüfter des Hotends bekommt beim Einschalten der Heizplatte oder des Hotends kein Drehzahleinbruch mehr. Ich hoffe dass dadurch die Druckergebnisse Konstanter werden, da teilweise der gleiche Druck einmal gelungen ist und beim nächsten Mal wieder nicht.
Die 400W sind allerdings auch viel zu hoch ausgelegt, aber was soll's, es funktioniert.

Hotend Kühlung

Wie bereits oben beschrieben ist die Drehzahl des Lüfters am Hotend ab sofort nicht mehr davon abhängig, ob die Heizplatte oder das Hotend eingeschaltet ist. Wie und ob sich da bei den Druckergebnissen bemerkbar macht bleibt abzuwarten. Besonders interessant werden Brücken, die nun konstant gekühlt werden können. 

Wärmeleitpaste

Ich habe zwischen Heizplatte und Aluminiumabdeckung eine gehörige Portion Wärmeleitpaste verteilt. Das Ergebnis ist , dass die Glasplatte jetzt wesentlich näher am Wert der im Web-Interface eingestellt ist liegt als vorher. Der thermische Verlust zwischen PCB und Aluplatte war durchaus signifikant. Wenn ich im Web-Interface 50°C einstelle hat die Glasplatte nach einiger Zeit auch zwischen 48°C und 49°C erreicht. Erstaunlich.
Den Schalttransistoren im Netzteil habe ich ebenfalls eine Portion Wärmeleitpaste verpasst, denn die waren einfach nur auf einen Alu-Heatsink geschraubt. Der Thermistor im Hotend ist durch diverse Unfälle mittlerweile komplett mit PLA im Heizblock eingegossen. Insofern dient hier das dauernd geschmolzene PLA als 'Wärmeleiter'.

Alles wieder am Laufen

Zukunftspläne

In nächster Zukunft werde ich einen Halter für den Kabelschlauch des Trägerarms machen, denn der führt im Moment dazu, dass sich die Steckverbinder zum Controller-Board bewegen und das ist kein guter Zustand.
Ebenso ist das Kabel zum Heizbett zu lang. das werde ich auch noch kürzen.