Hi. I'm a beginner Arduino fan working on a haptic motor control project.
I'm planning to drive 3 motors in series from one feed but terminate each motor separately by using a lane switching device between 3 terminating points and ground one switched lane, therefore driving one motor at a time.
Currently using Arduino Uno with an Adafruit_DRV2605 haptic motor controller module directly connected to the Uno, using ADA1201 disk motors and powering the setup with a 9V battery.
I would like to use a switching device that can be controlled from the Uno, but not sure if this setup can be used without disturbing the voltage and current fed from the motor controller.
Do I understand correctly, you want one motor to run normally, but when you have 2 motors you want them to run at 1/2 speed and when you have 3 motors, you want them to all run at 1/3 speed?
Not quite, I would like to activate either motor 1, motor2 or motor3 at a time, using the same voltage and current supplied by one motor controller, but terminate one of the cathode wires at a time and switch between the terminating cathode lines, so that the flow direction can be manipulated by the switch while keeping the same amount of voltage and ampere from the motor controller.
spacepancakes:
Not quite, I would like to activate either motor 1, motor2 or motor3 at a time, using the same voltage and current supplied by one motor controller, but terminate one of the cathode wires at a time and switch between the terminating cathode lines, so that the flow direction can be manipulated by the switch while keeping the same amount of voltage and ampere from the motor controller.
Sorry about my non-technical language.
Then I submit you want the motors in parallel, not series.
Motor controller per motor is how things are normally done. That DRV2605 is an H-bridge its not feasible
to switch between motors due to the dual polarity. However it appears to have a fixed I2C address so
using multiple ones isn't easy. You cannot ground one side of the motor, the DRV2605 would immediate
burn out/cut out.
Simple unidirectional control using a MOSFET per motor would be one approach to controlling multiple
motors.
A possible, somewhat hacky, solution with the DRV2605 is having the motors in series, and a relay across each motor. You keep
2 relays closed and one open to select which motor. You would need to ensure that at least one relay
was open at all times. Because each relay shorts across a motor, there is no inductive kick back to worry
about as there is a current path available to every motor at all times.
MOSFET is the (switching) device I'm looking for. Thanks for your useful comment.
I've found a guide on how to drive multiple LRA haptic motors from a single DRV2605, but my motors are ERM and this shouldn't be a problem because the motor controller can drive both types of actuators according to this guide: Haptics
The guide also explains the use of analogue switches instead of MOSFETs, but not sure if this could be used in my circuit.
Wow, they've found some 0.5 ohm analog switches (ADG884), I guess that's going to simplify this for very small motors. Analog switches are bidirectional as they use a full CMOS transmission gate topology. Normally
they are in the range 20 to 200 ohms, 0.5 ohms is extreme.
Note that your ERM motors may need too much current for this approach, the ADG884 is only rated for 400mA.
However it appears to have a fixed I2C address so using multiple ones isn't easy.
It's not hard to use a TCA9548A I2C Expander board to connect multiple DRV2605L modules and control them from an Arduino Uno. Setting up the circuit and coding was straight forward.
My next challenge is to get some of those P or N-channel MOSFETs and expand the circuit.
I'm not sure how to choose the right MOSFET for these small motors based on current rating, thermal requirements and switching performances. These haptic motors require 2 - 5V and 90mA to run each.
Any advice on choosing the correct type of MOSFET?