Elektrischer Schreibtisch wird Intelligent

Ich suchte vor etwa zwei Jahren nach einen neuen Schreibtisch, dieser sollte Elektrisch Höhenverstellbar sein. Doch nach ein wenig Sucherei im Internet war ich erstaunt wie Teuer die alle waren. Ich bin dann aber schlussendlich auf einen Schreibtisch mit elektrischem Defekt gestoßen. Bei diesem war das Mainboard komplett verschmort.

Hier seht ihr die verschmorte Platine von Oben. Nicht wundern, ich habe schon ein paar Teile herunter genommen.
Hier ist sie jetzt von unten.

Die Platine war so Zerstört, dass mir eine Rekonstruktion zu aufwendig war.  Zudem weiß ich auch nicht ob der Mikrocontroller der alles steuert überhaupt noch funktioniert. Daher musste also eine eignende Lösung her.

Ich habe also auch zwei Relais genommen wie es oben auf dem alten Mainboard der Fall war. Das eine Relais schaltet die Drehrichtung des Motors und das andere schaltet ihn an. Zusätzlich ist noch ein N-Channel Mosfet verbaut um die Drehgeschwindigkeit zu regeln.

Der Motor ist ein Garagentor Motor mit eingebauten Hall Sensor. Siehe Datenblatt

Zur Steuerung wollte ich natürlich das bestehende Bedienfeld weiter nutzen. Daher habe ich es mir erstmal angesehen wie dieses Aufgebaut ist.

Hier sieht man die Platine aus dem Bedienfeld
Das Layout ist auch sehr übersichtlich.

Man sieht ja das ist nicht gerade Kompliziert aufgebaut. Also einfach das Weiße Kabel mit GND Verbinden und die anderen beiden mit einem IO-Pin mit aktiviertem Pullup verbinden. Schon ist das Feld fertig verkabelt.

Hier ist mein Mainboard auf Lochraster zusammen gebaut.

Es gibt dann noch vier Endschalter die, die Bewegung des Schreibtisches begrenzen. Zwei davon sind auf dem Bild zu sehen. Zwei weitere sind am Rand der Brücke und in Reihe mit dem Endschalter für unten. Diese haben die Aufgabe zu verhindern das nichts zerquetscht wird was auf der „Brücke“ liegt wenn der Schreibtisch runter fährt.

Hier kann man die Elektronik „Brücke“ von dem Schreibtisch sehen. Da sind auch die beiden Endschalter und der Kunststoff Pin dazwischen zu sehen.

Als Mikrocontroller nutze ich einen Arduino Pro Mini. Dieser hat keinen direkten USB Anschluss wie es der Arduino Uno hätte. Auf beiden sitzt der Atmel ATmega328.

Nun kommen wir zum Pinout:

Pin Funktion
2 Hall Sensor Puls
3 Relais welches den Motor einschaltet
5 Relais welches die Drehrichtung festlegt
6 Endschalter unten
7 Endschalter oben
8 Bedienfeld Taste Hoch
9 Bedienfeld Taste Hoch
10 PWM für den Mosfet zum Drehgeschwindigkeit regeln

Ich nutze zwar 5V Relais aber diese kann man nicht direkt an mit dem Arduino ansteuern. Daher habe ein ULN2003 als Relais Treiber genutzt.

Ich habe dann am selben Tag noch ein primitives Programm geschrieben um dem Schreibtisch dann erstmal auszuprobieren. Mit diesem habe ich den Schreibtisch dann zwei Jahre genutzt.

Jetzt nach dem der Schreibtisch mit mir Umgezogen ist habe ich eine neue Software geschrieben die den Schreibtisch um eine Funktionen ergänzt.

  • Die Geschwindigkeit kann angegeben werden
  • Es können Positionen über die Serielle Schnittstelle angefahren werden
  • Es wird immer die aktuelle Position ausgegeben
  • Es wird immer die angegebene Geschwindigkeiten genutzt, egal wie der Schreibtisch beladen ist

Damit sich der Schreibtisch immer auf Anhieb Smooth bewegt sollte man als erstes den Motor für die einzelnen Geschwindigkeitsstufen einmessen.

Das geht mit dem Seriellen Befehl: ParamsMessen

Der Schreibtisch fährt danach jede Geschwindigkeit einmal ab und Speichert die zugehörigen Paramenter im EEPROM. Bei mir hat das ca 60 Minuten gedauert. Es wird alle 5 „Einmessungen“ eine kurze Pause gemacht damit der Mosfet und der Motor nicht zu heiß werden.

Die Parameter lassen sich mit dem Befehl: GetParams auch auslesen.

Während des normalen Betriebs werden diese Paramenter nach korrigiert, möchte man, dass die neuen Werte ebenfalls gespeichert werden kann man sie mit dem Befehl: SaveParams erneut speichern.

Mit dem SetPosXXXX setzte man die Höhe auf den der Schreibtisch fahren soll. Die XXXX sind mit der Höhe anzugeben. Die Höhe wird in Pulsen gemessen.

Mit GetPos kann man sich die aktuelle Position geben lassen. Diese wird aber automatisch bei einer Änderung ausgegeben.

Mit SetManSpeedXXX kann man die Bewegungsgeschwindigkeit für das Bedienfeld angeben. Die Geschwindigkeit wird in Pulsen/Sekunden angegeben bzw. gemessen.

Und zu guter letzt gibt es noch den Befehl test um zu sehen ob die Verbindung zum Schreibtisch steht. Man erhält als Antwort immer test-ok

 

Der Nächste Schritt ist, dass ich einen ESP8266 einbaue damit ich den Schreibtisch über den PC ohne Kabelverbindung steuern kann. So kann ich dann auch Höhen Profile einstellen.

 

Hier ist jetzt endlich der Quellcode von meinem Arduino:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.