New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Hacking an SG90 for continuous rotation to drive a blind from a board slider

Hacking an SG90 for continuous rotation to drive a blind from a board slider

Solved 7 7

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?

Ask me about 4–20 mA.
♥ 0

What does modify mean here, take it apart?

Measure twice, poll once.
♥ 0

Cheaper to just buy a continuous rotation servo? They’re like 5 dollars

Still waiting for the gateway to reconnect.
♥ 2

The FS90R is the continuous version of the SG90, same size.

♥ 0

Whatever you do, put a limit switch at both ends. We had a motorized shade at work wrap itself around the bar.

♥ 0

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.

Accepted solution♥ 6

+1 on the separate supply, my ESP32 kept rebooting every time a servo started.

♥ 0

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.

Ask me about 4–20 mA.
♥ 1
Viewing 8 posts – 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Join the conversation

Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

Share