Low power motor options for pet door

Imagine you have a pet door, with a flap that swings back and forth along a horizontal hinge. For example, this:


The goal is to “baby proof” the door, so a child cannot crawl through.

Currently, I have a Pololu LIS3MDL magnetometer that reads a magnet field relative to the distance of the pet’s collar, which then sends a signal to a push/pull solenoid to “unblock” the flap so it can swing open. This works but draws significant current for a low power application(1A-800mA). The goal of this post is to eliminate the solenoid and replace it with something that draws less current, as this project runs of 4 AAA batteries. I figured it’s best to break down the questions into 3 parts.

Part 1:

After searching the Pololu website, I found some gear motors that I *think might do the trick, the problem is, there are many to choose from. I was hoping for some help to narrow down the choices. In terms of requirements:

  • Must run at ~6V
  • Torque is not a major factor, just need enough to lift a small plastic blockage mechanism.
  • The less current the better, the caveat being that it needs enough speed to quickly unblock the door if a magnetic collar is detected.

Some have plastic gears, some are metal, I’m guessing the plastic motors are relatively low torque? And if so, does that automatically equate to less current?

Part 2:

One requirement that seems a little grey to me is motor positioning. For example, imagine a servo horn connected to the motor shaft. At 90°, it’s blocking the door, at 0°, the door can swing open. My thought process was that the only way the software could know the difference between 90 and 0 would be with an encoder, such as this. Maybe not the exact degree per say, but some metric of where the motor currently is. Is this the correct assumption?

Part 3:

Finally, given the current thought process above, if I ended up buying a low power gear motor, magnetic encoder, and motor controller, would the current generally be greater than a simple servo-based solution. That’s another thing I am struggling with; the choice between going with a servo, or a motor, gearbox, encoder, and controller. I don’t need variable speed, just go to position(x), at whatever speed is fast enough for the door to open by the time the cat enters the magnetometer range.

Sorry for the long post, and thanks in advance!

Hello, Bert.

This sounds like a really fun application of our LIS3MDL magnetometer. I hope you will continue to make posts that share updates on your progress. Some pictures and videos showing it working would be great!

I cannot make specific recommendations since there are lots of ways you could complete a project like this using our products, but here are some pointers that I hope will help you get going.

Part 1:

Typically, plastic gearmotors will be lower-torque and lower-current than metal ones of a similar size, but if the sizes are very different, you can’t make such a broad generalization. For example we offer low-power Micro Metal Gearmotors that have lower free run currents our plastic gearmotors. If you decide to use brushed DC motors instead of servos, then I would suggest you try to quantify the speed that you need the motor to rotate and then choose the highest ratio low-power Micro Metal Gearmotor that supports that speed (provided the motor will meet whatever your other constraints are).

Part 2:

There are many methods of position feedback that could work in your system, As you suggested, you could use a quadrature encoder like the ones we make for our Micro Metal Gearmotors, but note that our quadrature encoders only provide incremental position feedback, not absolute feedback. You could also consider trying to integrate analog potentiometers into your system to provide absolute position feedback, like what is done in hobby servos, or you could just set up some limit switches so that they activate where you want your motor to stop moving.

Part 3:

Its hard to predict whether a servo or a brushed DC gearmotor device would require more power. If you can quantify the amount of torque the motor will need to apply, then you could use the datasheets for our gearmotors that are available on their product pages under the “resources” tab, like this one for our Micro Metal Gearmotors, to predict their current draw, but not all of our motors have that level of documentation yet, and none of our hobby servos do, (though it is still possible to make some approximations if you at least have information about the stall torque and current).

You might also think about ways your mechanical setup could help minimize the power your motor or servo needs. For example, using a worm gear between your motor and your actuating device would eliminate the need to power your motor while it is holding position.

Also, have you considered just powering the device with a wall power adapter instead of a battery pack?


@PatrickM, you made some great points! Specifically, I didn’t realize the difference between absolute and relative position encoders.

Well, knowing that, I guess I could use the relative position encoder in conjunction with a limit switch so it knows where “home” is, and increment/decrement the pulse count from there based on the direction the motor is spinning?

With that said, I really liked your comment about using an analog potentiometer as an alternative to the encoder. I’m not sure how to interpret the idea though. For example, for projects that I have needed pots for, I would use something like this, but I don’t think that’s what you’re suggesting.

I’m guessing you’re referring to some form of IC that I can use which feeds the motor output into an analog value of sorts? Sorry, it’s probably a simple concept, I just cant seem to wrap my head around it from a visual perspective.

In the interim, I will keep googling the motor to analog pot idea to see what I can find. I look forward to hearing back!

Hello, Bert.

Using a limit switch for a home position and an encoder is definitely a viable approach.

I was not thinking of an IC when I mentioned the option of using an analog potentiometer; I was thinking of an actual potentiometer that would physically interface with your system somehow. It would probably be difficult to make an interface for the particular potentiometer you linked to in your last post, but there are many similar potentiometers available that use a d-shaft which you could potentially interface with through some sort of shaft coupler.

Note with this approach that you would basically just be making your own hobby servo, so maybe you should just buy a servo instead. However, if you decide that you want to go the route of making your own servo, then you might consider using one of our Jrk G2 Motor Controllers with Feedback. Even though the smallest Jrk is probably overkill for your application in that it can handle way more current than you need (assuming you are still planning to use a low-power motor), it would be the easiest way to setup a solid closed-loop position control system using analog voltage feedback from a potentiometer.