Hacking an SG90 for continuous rotation to drive a blind from a board slider
Yes, me again. I want to open and close the roller blind in my office from my Hermetry board. I have a bag of SG90 servos and an ESP32. Plan: a Slider control card, 0 to 100%, sends a command to the ESP32, the servo winds the blind cord.
Problem: the SG90 only turns 180 degrees, the blind needs about 8 turns of the cord pulley. I read you can „modify a servo to run freely“. How do I do that on an SG90, and will it still know where it is?
What does modify mean here, take it apart?
Von English mit KI übersetzt ·
Wäre es nicht günstiger, gleich einen Dauerdrehservo zu kaufen? Die kosten so etwa 5 Dollar
Cheaper to just buy a continuous rotation servo? They’re like 5 dollars
Von English mit KI übersetzt ·
Der FS90R ist die Dauerlauf-Version des SG90, gleiche Baugröße.
The FS90R is the continuous version of the SG90, same size.
Von English mit KI übersetzt ·
Was auch immer du machst, bring an beiden Enden einen Endschalter an. Bei uns auf der Arbeit hat sich ein motorisierter Sonnenschutz selbst um die Welle gewickelt.
Whatever you do, put a limit switch at both ends. We had a motorized shade at work wrap itself around the bar.
Von English mit KI übersetzt ·
Das habe ich bei einem Haufen SG90 für einen Lehraufbau gemacht. Die Modifikation:
1. Gehäuse öffnen, Abtriebszahnrad herausnehmen. Den kleinen Kunststoffnocken auf der Unterseite, der am Endanschlag aufschlägt, abschneiden oder abfeilen.
2. Das Potentiometer unter der Abtriebswelle ist die Positionsrückmeldung. Auslöten und an seiner Stelle zwei 2,2-kΩ-Widerstände als feste Spannungsteiler einsetzen (Enden an die äußeren Pads, die Mitte an das Schleiferpad). Der Servo glaubt jetzt immer, er stehe in der Mitte.
3. Wieder zusammenbauen. Jetzt bestimmt die Pulsbreite Geschwindigkeit und Richtung statt Position: etwa 1,5 ms stoppen ihn, kürzer dreht in eine Richtung, länger in die andere. Den genauen Stoppwert durch Ausprobieren finden, die Widertoleranz verschiebt ihn.
Zu deiner zweiten Frage: Nein, er weiß nicht mehr, wo er steht, genau wie ein FS90R. Bei einem Rollladen ist das wichtig, also mach, was Keisha gesagt hat: einen Reedkontakt oder Mikroschalter bei ganz offen und ganz geschlossen anbringen und die Zeit zählen oder dazwischen einen günstigen Encoder einbauen. Ehrlich gesagt ist ein SG90 auch schwach für einen echten Rollladen. Ein 28BYJ-48-Schrittmotor mit ULN2003-Platine liefert dir die Position gratis und mehr Drehmoment.
Auf der Board-Seite: Füge blind.set mit einem Number-Parameter 0-100 im Commands-Tab des ESP32-Profils hinzu, Basic-Stufe. Der Slider sendet den Wert einmal beim Loslassen, nicht während du ziehst, was für einen Motor passt. Lass den ESP32 seine tatsächliche Position als blind_pct veröffentlichen und binde den Current value des Sliders daran, damit die Karte zeigt, wo der Rollladen wirklich steht.
Versorge den Servo oder Schrittmotor aus einem eigenen 5-V-Netzteil, nicht über den Pin des ESP32.
Did this to a pile of SG90s for a teaching rig. The mod:
1. Open the case, take out the output gear. Cut or file off the little plastic tab on its underside that hits the end stop.
2. The potentiometer under the output shaft is the position feedback. Unsolder it and put two 2.2k resistors in its place as a fixed divider (ends to the outer pads, the middle to the wiper pad). The servo now always thinks it’s at centre.
3. Reassemble. Now the pulse width sets speed and direction instead of position: about 1.5 ms stops it, shorter turns one way, longer the other. Find the exact stop value by trial, resistor tolerance shifts it.
To your second question: no, it no longer knows where it is, same as an FS90R. For a blind that matters, so do what Keisha said, add a reed switch or microswitch at fully open and fully closed, and count time or add a cheap encoder in between. Honestly, an SG90 is also weak for a real blind, a 28BYJ-48 stepper with a ULN2003 board gives you position for free and more torque.
On the board side: add blind.set with a Number parameter 0-100 to the ESP32’s profile Commands tab, Basic tier. The Slider sends the value once on release, not while you drag, which suits a motor. Have the ESP32 publish its real position as blind_pct and bind the Slider’s Current value to it, so the card shows where the blind actually is.
Power the servo or stepper from its own 5 V supply, not the ESP32’s pin.
Von English mit KI übersetzt ·
+1 zur separaten Stromversorgung, mein ESP32 hat bei jedem Start eines Servos ständig neu gestartet.
+1 on the separate supply, my ESP32 kept rebooting every time a servo started.
Von English mit KI übersetzt ·
Den SG90-Umbau habe ich zuerst probiert, weil ich stur bin: Er dreht sich, der Stopp-Wert lag bei mir bei 1,47 ms. Er konnte die Jalousie kaum anheben, deshalb bin ich wie von Laura empfohlen auf den 28BYJ-48 umgestiegen, mit einem Microschalter oben für die Referenzfahrt. Der Slider funktioniert, Current value folgt blind_pct. Der SG90 dreht jetzt auf meinem Schreibtisch ein Papierwindrad.
Did the SG90 mod first because I’m stubborn: it spins, stop value was 1.47 ms on mine. It could barely lift the blind though, so I switched to the 28BYJ-48 like Laura said, with a microswitch at the top for homing. Slider works, Current value follows blind_pct. The SG90 now spins a paper windmill on my desk.
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

