I am trying to build shades, which should roll up or down, controlled by a DC motor. This motor can only be turned on or off (1/0 to turn it on/off). Also, it should be noted that the microcontroller behind this is a NI-SPEEDY with a daughter board that provides relay switches (not a range from -1 to 1).

The first thought was that when given a 1, it should roll it up then stop. And when given 0, it should be turned off and let gravity pull it down.

The problem is with stopping: I can't figure out a way to make it stop when it reaches the top. So I thought I should leave it on. But since it won't be able to rotate, I guess it might be damaged. How critical can such a thing be?


This is the datasheet of the DC motor:

Matsushita Electric, Japan
13.2V DC

Similar to this one and that one.

A 12V battery is plugged to the daughter board of the microcontroller. The motor gets 12V DC, but I'm not sure about the current that is drawn to it.

The battery specs: 12V 7.5Ah/20hr

I tried keeping it plugged to the battery for a minute, and the heat produced was negligible, but I guess keeping it for more than that will fry it.


After trying almost all of the technically possible solutions provided, it turns out all the sensors we put were mechanically not possible to set up. They either were never activated or not reliable. Also, the circuitry involved seemed too complex (you might have noticed I'm a beginner) for two states (0/1). And since the controller is a requirement, it was not possible to use PWM or any other technique to control it via software.

All in all, this was very helpful, I learned a lot. Now let's just hope the motor will not be damaged by the time it is presented to the jury.

  • \$\begingroup\$ When the motor is in the stall state, it's current is at maximum, which means that it's heat dissipation is at maximum too. How big damage that can create will depend on the current going through the motor and how much heat the motor can safely take. \$\endgroup\$ – AndrejaKo Dec 18 '12 at 13:36
  • \$\begingroup\$ @AndrejaKo Thanks. The problem is that I would measure these, but I don't have measuring devices at hand... I guess I can add a resistor in parallel to draw less current to the motor, just to be on the safe side. \$\endgroup\$ – jadkik94 Dec 18 '12 at 13:41
  • \$\begingroup\$ Adding some datasheets will be great and will help ppl in answering this. \$\endgroup\$ – xsari3x Dec 18 '12 at 14:44

Yes, leaving it running will stall the motor and thus draw a lot of current and eventually overheat it. A few possible solutions, sorted roughly by increasing cost:

  • Figure out how long it takes to roll them up and program the controller to run the motor for a set time (dead reckoning).
  • Measure the current being drawn by the motor and immediately stop when the current goes over a certain threshold that indicates a stall. If it stops promptly enough the motor won't have a chance to heat up too badly.
  • Add a limit switch at the end of the range of motion. Given that you're rolling up shades, I'm not sure if you could position the switch to do that.
  • Mount a distance sensor of some sort (probably IR) just below the top of the shade so that it becomes exposed once the shade is fully rolled up. This will effectively work like the limit switch idea.
  • Closed-loop speed control of the motor with a shaft encoder.
  • \$\begingroup\$ Thanks a lot for your response. The first option cannot be applied, since once it will be turned off, the shades will drop. And if I made their weight to be too light, I won't be able to let them "drop" back down. As for the second, is there an element that would open the circuit for high current? I'm thinking of a solenoid that mechanically opens it at a certain current, is that feasible? Also, can you elaborate a bit on the last option? \$\endgroup\$ – jadkik94 Dec 18 '12 at 13:56
  • \$\begingroup\$ Most modern electric car side windows use #2 - they have a current sensor and a basic I2R algorithm, then cut power to the window motor using a relay. Note that for smaller motors, using a polyfuse resettable switch (in combination with a conservative timer) can be a cheap and easy way to do this (provided that you can wait a few seconds for the polyswitch to cool before reversing the motor). \$\endgroup\$ – HikeOnPast Dec 18 '12 at 16:21
  • 3
    \$\begingroup\$ @jadkik94, you don't want to rely on the motor to hold the load. Consider adding a counter spring or counterweight. The motor should only do the work of changing the position, not maintaining it, otherwise you'll almost definitely end up overheating the motor. \$\endgroup\$ – HikeOnPast Dec 18 '12 at 16:22

As stated, the stalled motor would probably be damaged by the current flowing into it. Let's look at your specific problem. There are two options:

  • Open loop control
  • Closed loop control

To close the loop you will need some device that tells you where the shade is, such as a switch, an IR sensor, an encoder or whatever you like, as already said. If open loop is enough, and in my opinion it is, you just need a sort of timer. So what am I adding here?

Speaking of the way of sensing the shade position is not going to solve your main problem. How to keep it in up position? You say it will weight enough to fall down, and that's not a bad idea, however you can't just leave the motor on or it will probably be damaged, and it will of course consume a lot of power. You say you have a relais board, so pwm control is not an option. Here is my idea: if you short circuit the two motor terminals, it acts as a brake because the current induced in the coils when it turns produces a magnetic field that is against the turning (thankyou Lenz!). The torque is probably enough to keep the shade in position, especially if there is a speed reduction between the motor and the shade, and I'm quite sure there is one.

Summing up, you will need to use two relais per each motor. Let's call the two relais you are using UP and HANG. One lead of the motor goes to ground, the other goes to the NO lead of both UP and HANG. The COM terminal of HANG goes to ground, while the COM terminal of UP goes to the motor power supply. Now to the microcontroller! Some pseudocode for you:

wait for button press
button is pressed, turn off HANG, wait ~100ms, turn on UP
wait until shade is fully opened
turn off UP, wait ~100ms, turn on HANG
wait for button press
button is pressed, turn off HANG
wait until shade is fully closed
turn on HANG
goto start

Please note that the 100ms delay is purely indicative. The problem is that if HANG and UP are on togheter you are shorting the motor psu to ground, which probably is not a good idea. Lastly, when the code waits for the shade to reach a position, it can either poll your sensor or wait some time.

Before doing anything else just try if the motor can hold the shade with its terminals short circuited, if it is the case this solution should work without a problem.

  • 1
    \$\begingroup\$ The problem with your idea is that a shorted motor only acts as a dynamic brake; i.e., it only develops a braking torque if the armature is actually moving. There's no braking action if it isn't moving. So the net effect of shorting the motor is that the shade will simply drift down more slowly than it would with the motor off (and open-circuited). \$\endgroup\$ – Dave Tweed Dec 18 '12 at 14:54
  • \$\begingroup\$ It seems like a good option, I'll be trying it now. But I don't understand how it would hold it in its place. How is a short circuit different than the open circuit on a motor? \$\endgroup\$ – jadkik94 Dec 18 '12 at 15:42
  • \$\begingroup\$ @DaveTweed you are probably right but I think that if there is a speed reduction this can be enoguh. I have to think about it. \$\endgroup\$ – Vladimir Cravero Dec 18 '12 at 16:25

Your motor controller has only two states - driving, and free-wheeling - but you need three states for the shade: raising, holding, and lowering. Your choices are either to provide a braking method to hold the shade up, or to make the motor bi-directional and balance the shade and motor so it will hold its position with the power off.

If you have to use this controller the braking could be achieved by a mechanical clutch or a ratchet and pawl that engage with a spring and disengage electrically so they would hold with no power applied.

If you aren't limited to this controller and you can afford the power and the motor can tolerate it, a third possibility is to reduce the motor power to only enough to balance the weight of the shade and keep it in position. If this is a roller shade and you need to be able to hold it mid-way, you may need different currents to hold it depending to how much of is unrolled.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.