RoboBlinds Part 6: Actually the last one

    The point of this project was to automate the window blinds in my apartment. I need to open my blinds every single day because my apartment is a tomb with the blinds closed, but my apartment is at the front of my building at street level so I like having the blinds closed before sunset. But I have fourteen-foot ceilings and ten-foot-tall windows. Raising the blinds is easy enough, just pull down ten feet of cord, but lowering them is much more annoying since I have those aluminum blinds where you have to pull the cord at the right angle lower them. With a ten foot height, that means I have to carry the cord to the other side of the room and climb around or over furniture to maintain the proper angle. So it genuinely made sense to automate them. And besides, I hadn't designed or built an actuator in quite a few years and it sounded fun.

    I started out building a cheap actuator from scratch. I managed to incorporate some clever details like roller nuts and v1 was extremely compact and simple. I was pretty proud of that design. Unfortunately it sounded like I was running a blender for several minutes every morning and evening. It wasn't very pleasant to actually be in the room while the blinds were moving. And so began the long and slow process of multiple iterations of redesign. I kept making the smallest possible changes. Upgrading from brushed DC motors to brushless. Upgrading from spur gears to worm gears. Upgrading from plastic screws to metal screws. So many small changes. All to save a few dollars per window. And in doing so I spent an absurd amount of time on the project. I should have just jumped straight to the ultimate solution I knew on day one because that's where I ended up.

    Here I am, at version 5 of this actuator. Version 5 that I actually built. I designed several other revisions that never made it to production. And version 5.4 of my electrical system. And who knows what version of code. The whole point of all of this redesign was to minimize noise. And like I said, I ended up going with the solution that I knew would be best on day one. I've built a very simple actuator that uses BLDC motors wound for low-speed/high-torque and harmonic drives for compact silent gear reduction. That's as quiet as you can get short of direct drive (which has plenty of its own problems). I planned on using FOC for control, but before I implemented it I was able to get the noise levels I wanted with open-loop position control, so I stuck with that. These v5 actuators cost about $100/each, compared to $20/each for v1. But how much time would it have saved me to just go with this from the beginning? More than $480 worth, I can promise you. 

    But v5 works great. Not completely silent, but pretty close. The only noise comes from the harmonic drives spinning at moderate speed, and that's not too bad. It's about as loud as the noise of the blinds themselves moving up and down. And they're much faster than v4, which had to be speed-limited due to the amount of noise the planetary spur gears and motor drivers generated. v3 was actually pretty okay, faster and quieter than v4, but still not as fast or quiet as I wanted. v5 is good. I have no complaints. I'm ending this project here.

Update 2025-12-22: 

    I tuned these a bit more and added some new features in software. Originally my goal was to speed them up as much as possible. They easily drive up to 1800RPM at the motor, 1rev/second at the output, which means they open or close in 15 seconds. But at that speed they're quite loud and also some of them vibrate a lot. So I've gone in the opposite direction and I'm opening them at 450RPM and closing at 600RPM, which makes them almost silent. And if they're silent, then I really don't care how fast they move.

 

    I've also given them some new abilities, like opening at one speed and closing at a different speed. The reason for this was, as I said, to have them move as fast as possible in the evening, when I'm going to be awake, and slower/quieter in the morning, when I'll sometimes still be asleep. I've also considered other options, like making speed a function of time of day, so they move slowly when I'm expected to be asleep and fast at all other times. But honestly, like I said, if they're silent I don't care that they're slow. Silent is really nice. I also configured the software to store all motion config params on the master board and publish these values to actuators at each boot. That way I can change behavior just by flashing the master. I no longer have to get out ladders and connect to each actuator. Very nice.

    They've been running for a month now and I've only noticed one problem. On some of the windows, there's too much friction on some of the blinds draw strings and the distal side (the side opposite where the cords hang down) sticks and doesn't fall all the way down when the blinds are lowered. It sticks in the last few inches. I can solve this by adding a weight onto that side of the blind slats, but that's pretty inelegant. If I take the blinds down off the wall, I see that they're warped. And in some cases, the window frame wood is warped. So I'm trying to shim the mounts on the walls to fix this. Hopefully this doesn't become a bigger problem, but every once in a while the string comes off the spool and I have to get out the ladder and put it back in place. I'm looking at solutions for this. But the electronics and software seem to be very stable. No problems with them. I'm also really happy that after glueing the cables in place, the cables are holding perfectly and they're almost invisible.