Linear actuators: obstruction detection?

I'm just in the beginning stage of planning this project so I don't really have any product links to offer.

I'm here to ask for advice as to what I should be searching for to accomplish what I want to do. I'm not even sure what the correct search terms would be.

I'm looking to build a sit-stand desk. I'm planning to use 2 linear actuators and I'd like to set up an Arduino touch screen shield as a control panel of sorts. I want to program up/down buttons and a couple memory buttons to remember my preferred standing height and preferred sitting height.

I know I need actuators that have potentiometer feedback so the Arduino will know the current height at all times. I assume this will allow the Arduino to keep the two actuators synchronized.

But what I'm having trouble with is what do I search for so that I know that the Arduino will be able to stop the actuators if the desk hits an obstruction on the way up or down?

Depends on the actuator, You can sometimes monitor drive current to the motor to sense an obstruction.
I'd be scared to death of product liability for finger traps.

You can try to shrouding, but you'll need a "cover off" sensor loop for each separately removeable cover.

Most things that move like that are encased in telescoping housings or move so slowly that you'd have to work at it to be trapped, but STILL these days ...

In the future when you are ready to make bunches of these hire the appropriate attorney so you can be indemnified if somebody puts a finger or something where it should not be. Motor current works but will change as the unit ages. You should keep a running average and adjust your fault limit accordingly. Keep this in NVM.

You can use a limit switch to detect the obstruction.
This Arduino controls linear actuator with feedback may be useful for you

I was under the impression that a limit switch just limited how far it could go in either direction.

I've been watching tutorial videos about them and that's the only use case I've seen.

After posting, I did come across a thread in which it was suggested to use a current sensor to detect when the actuator is drawing more current than normal. I thought that was the way to go but now I see a comment that the "normal current" could change this throwing off my obstruction detection check.

Many modern motor drivers report the current draw, and that can be used for stall or obstruction detection.

I use this one with high power 12V linear actuators and it is perfect for the task: Pololu - VNH5019 Motor Driver Carrier

Keep in mind that an actuator briefly (for a few milliseconds) draws the stall current every time it starts moving.

For accurate measurements, calibrate the built in current sensor for both directions of motion, as the sense resistors are different for each direction.

Didn't you already answer your own question? If you use linear actuators with feedback, you'll know if they aren't moving.

With the exception of the really expensive ones, I haven't seen any actuators that will stop when it hits something. They would just keep applying more and more pressure.

The Arduino will need to tell it to stop but first, it needs to know about the obstruction.

That's the point of feedback. The actuator tells the arduino where it is and the arduino tells it to stop if it's stopped moving!

"Tells it to stop if it stops moving."

So if it stops, Arduino should tell it to stop (what it already did)?

It should stop PUSHING when it encounters a block so it doesn't crush any more than it has.
One motion system I did had an Omron optical encoder. In the system we had, it gave us .007" resolution over about 12' (16 bits IIRC). Built in NVRAM so it kept zero and position even when off. If the pulses slowed unexpected we'd command a small reverse and then stop to release whatever we'd hit. We measured pulse period to detect s-l-o-w-i-n-g ...

Ok. That explanation makes more sense to me. Thanks guys.

It sounds like Cedar was right but his message wasn't sinking in.

I just want to make sure I have a good understanding of what you're suggesting. I think I do but I want to be sure.

The Arduino will already be monitoring the speed of both actuators to keep them in synch.

If the desk hits something, that will cause one or both actuators slow down. So if the speed on either actuator drops below X, then assume there's an obstruction and reverse direction Z distance.

I need to figure out what value to use for X speed and what value to use for Z distance.

So my parts list will be 2 actuators, Arduino, the touchscreen shield, 2 relays, a motor driver, wiring and other miscellaneous parts (screws, solder and such).

Am I understanding this correctly?

Do not ever think you can do this! Make one actuator the master and make the second follow the speed of the master. Trying to adjust both to match will try your patience and you will loose.

I'll take that into account and adjust as needed. But do I have the basic gist of the obstruction detection scenario?

NOT if you are attempting to synchronize the speeds.

Two motors will bind and the bind will drive the current up tripping the safety. If you tie both sides together you eliminate one motor & all the associated electronics at the expense of mechanical complexity, i.e. a jack shaft and bevel gears. One motor can't get out of synch, nor can it bind like two can. Only one channel current monitor is needed. Trust us, BTDTGTTS.

Wrong approach. Just ensure the motors (or power supply) is/are sufficient weak that the force exerted when an obstruction is encountered is safe, and that the motor simply stalls (without overheating, or add a temp sensor). Another way to do this is with a slipping clutch between motor and leadscrew.

This is fail-safe design - the safety is guaranteed by the design, not tacked on afterwards. Any approach that required software correctness for physical safety is asking for trouble.

Interesting blog:

More stuff: Tapeswitch

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.