Hey guys, first post on this forum but not a newbie to forums in general. Currently I am a senior mechanical engineering student and my group's senior design project is prospected to use an Arduino Uno to control our system. I may be mechanical, but I'm not completely new to electronics (and we even have to take an EE class in our program that involves Arduino) so I should be able to convey our issue.
Our system is a product made to universally open twist-top containers (salsa jars, water bottles, juice, 2 liter soda bottles, etc). Basically we have one motor attached to an opener and 2 motors (in unison) to act as a height adjustment using a rack and pinion mechanism. What I was wondering is how exactly do we control these motors using an Arduino Uno? They'll need an independent power supply (as the Arduino can not supply them the current or voltage they need) so I'm assuming we need some kind of H-bridge setup? Basically we will have one input (a momentary push button) to turn the opener motor on and two inputs (two momentary buttons for the remaining motors to move the assembly up and down respectively) and I'm blanking on how to control this with the Arduino. The power supply should be a dedicated 12 volt DC from a wall wart and I'm not afraid to hard wire some of this.
I believe the single Uno should be able to control everything we need but I would like to check with the experts first. If my explanation is confusing just let me know and I can clear up some issues.
Could I just use a single transistor for each motor (like a tip-120) to allow for the independent power supplies, or would that not allow for reversible motor movement?
Since only one motor is to run at a time you might be able to get by with only one H bridge (just switch with a relay when the H bridge is not powering a motor) . There will have to be a interlock system (software or hardware) to prevent both motors running at the same time.
This means that the height motor should not be designed to have to be powered to hold the opening mechanism stationary which you wouldn't want anyway.
The height mechanism is TWO motors run in unison (two rack and pinions acting as slides, the carriage that they are moving is something in the 6-8" diameter range and will be rather heavy. Mechanically we have that figured out). The height adjustment may have to be powered (though in a lower powered state) to apply a downforce on our containers to assist in opening. So separate H-bridges would be necessary i'm assuming.
Is there any way to read the load off of the height adjustment motors (to sense when the carriage contacts the container) and then put them in a lower powered state?
What is "rather heavy". 1 lb. -5 lbs. ? Heavy enough to provide the "downward" force on it's own?
If the motor(s) strain when lifting you might find that one motor will be a little slower than the other and that might cause some binding. OK they use 2 motors(steppers) on the Z axis of some 3D printers but they run in step with each other. Might want to drive the pinion gears coupled together.
The power can be measured of course to provide feedback. You will need this since you don't want something to get 'crush' ed by accident.
Maybe you could approach the problem of height adjustment from the other end. I have a Black and Decker Lid Off. It uses only a singe motor that turns in a single direction. The gripping mechanism is purely mechanical. It has it's limitations since it can't open soft bottles. I'm not suggesting that you copy it, but look at how some of your problems might be solved in another way. Perhaps a more mechanical way...
With a group project sometimes it's hard to get the mechanics the way you want it. I voted for a single motor control but everyone else wanted dual rack and pinion so I have to make it work now
The binding issue is something that could arise especially if the motors run at slightly different speeds, but I think at this point in the project we have to just build and then fix the bugs. If I can come up with a newer single motor height adjustment I will, but regardless how would I get the arduino to read the motor load and then adjust based off of that?
Take a look at this motor driver. Overkill for your project, but note that there's a current sensor output you can read with an analog input to tell you how hard the motor is working.