The following is a project I developed to meet the requirements for the motion system of the project LELA . Using multiple DC motor I had the necessity to pilot, independently and sincronously 4 motors. I choose DC motors since the cost, lightweight and size compared to more complex or expensive solutions. Moreover I wanted the motor -even if using simple DC motor – to behave like step-motor. A specific library is used to obtain a similar effect, basically a slow motion motor that does not account for the motor gear box but instead to a wise PWM setup.
The piloting board allows to control, contemporary and sincronously, 4 DC motor (3-30 volts although I never tested over 10 volts supply voltage for the motors -because my use was limited up to 10 volts- but the components specs used theoretically allows it). The board is a perfect -and compact- addition to your Arduino microcontroller. The setup is ready to plug for Arduino MEGA2650 or Arduino Uno. Personally I used Arduino Uno with the option of stackability (cheaper). Stacking one on top of the oder you can multiply the numebr of motors driven simoultaneously.
The board is set in a way to allows different ways -via software- to control motors.
- by CAPACITIVE SENSING (proximity sensor – C+)
- by LIGHT RESISTOR (proximity sensor – R^)
- by single PUSH BOTTON (digital control/activation of single motors – dig SW )
- by single PUSH BOTTON (analogic control/activation of single motors – an SW)
- a generic analog input meant to be used for analogic control via a series of restistors in cascade, using only one analogic input of the board (to be set on the code)
The board is easy to configure and allow to be stacked one on top of the other (this is the case of a collection of motors >4 that will be controlled in set of 4 each group permorming the same, it maybe of some use for large set of motors to be used)
The input power of the driver board is the same of Arduino, 5 volts. A separate Vin (Voltage input) plug is available to feed from 9 to 12 volt, according to the generic specifics of the components. Such is the case when I power independently the Arduino controller together with the driver board by an external logic voltage supply -like battery- other than the USB cable of the power jack of the Arduino. In such case: load the code into the controller, unplug the USB, plug the jack of the Arduino controller or the Vin Molex plug of the driver board in to the external supply (battery).
The input voltage supply for the motors has also two possible settings by a switch. The first, powered by the supply of the microcontroller/board itself (5 volts or the Vin). This is the case of using small motors or just for testing the code and have minimum output signal at the Molex plug of the motors. The second, powerd by an external input Molex plug (Vss 3-30 V). The latest is an advasible solution to power motors. I though to use external supply because I prefer to keep separate the characteristics of power supply (thermal and signal performance).
A reset botton connect directly to the reset of the controller, while a SET botton, via analogic input is meant to be a selector of preset motors activation by supplying via code a matrix of activation. In the Matrix row are motions requested to the motor at the same time, while different row are sequence of activation over time.
I personally used PCBWAY.com as a service to manufacture the EAGLE file here attached. You can judge the result.
to be completed soon ….
(with more detail on the code and sensor input)
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.