How to use 7 different motor driver modules with an Arduino or any microcontroller. Hookup, code & demonstrations with motors big and small.
Today we will be working with lots of motor drivers and lots of motors!
You’ll see how there are actually three methods used among all of these drivers for controlling speed and direction. Because of this, it’s pretty easy to swap drivers and use a sketch for small motors to be used with much larger ones (or vice-versa).
I’ll be driving everything with a simple Arduino Uno today, but you could use any microcontroller to work with these motor drivers.
The code for all these motors is pretty simple, I’ll show it to you, and I’ll also introduce you to a few libraries that make coding for these motor drivers a breeze. We’ll also check out a motor driver library from Cytron that is a hidden gem, as it can be used with ANY of these drivers!
Here is the Table of Contents for today's video:
00:00 - Introduction 01:17 - DC Motor Driver Basics 08:05 - L298N Dual H-Bridge 16:13 - TB6612FNG Dual H-Bridge 25:24 - DRV8871 Single H-Bridge 31:08 - MX1508 Dual H-Bridge 38:54 - DBH-12 Dual H-Bridge 46:27 - IBT-2 Single H-Bridge 51:17 - MD25HV Single H-Bridge & Controller 1:02:27 - Conclusion
Hope you enjoy this, remember that the article on the DroneBot Workshop website has all the code I used today.
"Never trust a computer you can’t throw out a window." — Steve Wozniak
Good timing, I am just starting to experiment with these.
Arduino says and I agree, in general, the const keyword is preferred for defining constants and should be used instead of #define
"Never wrestle with a pig....the pig loves it and you end up covered in mud..." anon
My experience hours are >75,000 and I stopped counting in 2004.
Major Languages - 360 Macro Assembler, Intel Assembler, PLI/1, Pascal, C plus numerous job control and scripting
@me-chiel What is it, why is it a good choice? I had a quick look at specs, didn't see much to catch my attention, what caught yours?
Arduino says and I agree, in general, the const keyword is preferred for defining constants and should be used instead of #define
"Never wrestle with a pig....the pig loves it and you end up covered in mud..." anon
My experience hours are >75,000 and I stopped counting in 2004.
Major Languages - 360 Macro Assembler, Intel Assembler, PLI/1, Pascal, C plus numerous job control and scripting
I was looking for simple 12V controllers that could handle some current. These are not PWM controlled but just "FWD" "REV" "STALL" and it works on 3.3V so I could use them with my ESP32's.
The form-factor is the smallest, and they just work:) It doesn't get any simpler than that. My humble opinion is that these tiny IC's deserve some mentioning as well.
@me-chiel Thanks for the clarification. The 'tiny' is a problem for me, and I suspect a lot of us older folks, but I will soon get a decent hot air gun, so maybe I can handle the 'tiny' chips. Since I am fairly sure I want more control than that I don't see a use for wheeled propulsion, but may be useful for a hovercraft.
Arduino says and I agree, in general, the const keyword is preferred for defining constants and should be used instead of #define
"Never wrestle with a pig....the pig loves it and you end up covered in mud..." anon
My experience hours are >75,000 and I stopped counting in 2004.
Major Languages - 360 Macro Assembler, Intel Assembler, PLI/1, Pascal, C plus numerous job control and scripting
I'm new to electronics so some terms are unfamiliar to me. PWM? I know what it does but still confused. Not sure if this is true but I read that the PWM of a motor controller is not the same PWM of an RC receiver. Is this True?
The reason I'm asking is that I want to control the same very large motor with the MD25HV controller that Bill used in this video. I would like to attach the RC receiver PWM to the PWM of the MD25HV? Is this possible or do I need an Arduino UNO to be in-between. I've searched for this info and can not get the information I need, everything is through an Arduino.
If it is possible to direct connect the RC receiver to the Md25HV, what would be connected to the DIR pin on the MD25HV?
Thank you in advance for your help.
This post was modified 2 weeks ago 3 times by Rob7912
@rob7912 The PWM signal from your radio controller is not the same as the type used by the Cytron driver. The signal from your RC controller incorporates both speed and direction, whereas the Cytron expects a separate PWM and direction input.
You COULD use an Arduino or other microcontroller to do the conversion, my article and video about using RC remotes has what you need to do that. But that's not the way I would do it.
A simpler, "plug and play" solution is to use a DC Motor ESC (Electronic Speed Control). While most ESC devices are for brushless motors, you can get ones from DF Robot (and probably others) for brushed motors. I've used the DF Robot ones, and they work perfectly with my Flysky FS 16-X.
If you want to learn more about PWM (Pulse Width Modulation) I covered it a long time ago in my H-Bridge article and video.
And, BTW, welcome to the forum!
😎
Bill
"Never trust a computer you can’t throw out a window." — Steve Wozniak
I did view these videos before and just re-viewed again. I'm confused, are Motor Drivers/Controllers only to be used with an Arduino or other microcontrollers?
I'm guessing that ESCs have motor drivers/controllers built in? Like I said I confused.
This is the list of equipment I have purchased for the project:
MD25HV Cytron 25Amp 7V-58V High Voltage DC Motor Driver Speed Controller
24VDC Rated Current 16.5 350W Brushed Electric Motor Permanent Magnet Motor
ASMC-04B Robot Digital Servo High Power Torque 12V/24V 180kg.cm
I will be using a 12 volt battery to power the motor and servo. I was going to use the 5VDC out from the MD25HV to power the RC receiver.
I can see that the 20A Bidirectional Brushed ESC Speed Controller without Brake (XT60 Connector), has the connection for the RC receiver, and the other set of wires looks like they are for battery and motor.
Would I still need the MD25HV? I purchased the MD25HV because it looked like an all inclusive board. I can return it if I don't need it.
The project is to build RC controls to put on a child sized 4 wheel pedal cart, no one will ride it, it is for a skeleton to pedal around for Halloween, I need to get it working before October.
Any help would be appreciated, this got more involved than I was expecting. Any help would be greatly appreciated.
Please note your question is dealing with equipment that I am not familiar ... this is just a comment based on what I can gather from data specs, etc on the web. Of course, I am just expanding on the information Bill (@dronebot-workshop) has provided, since he is definitely the expert in this field. Hopefully someone else will provide further information, including pointing out any mistakes of mine. And of course, if I do make any mistakes, all I can do is apologise in advance, which I do.
-----------
PWM ... Pulse Width Modulation ... is very generic term ... the principle it is based on, is that it is a signal, which has two levels, and each of the 2 levels are assigned a descriptive name, so you will see pairs of names like: On & Off, 0 & 1, 0V & 5V, etc. The pair of names will be chosen to suit the particular circuit and circumstances. I'll use 0 & 1 for convenience here.
Now a signal carries information or data ...and for PWM, the data is encoded by varying the width (amount of time) when it '1', compared to when it is '0'. In a practical code, there will be 'rules' as to what range of time values are allowed, and possibly more sophisticated 'rules', of particular patterns of 0 & 1 timings, that the transmitter can encode, and the receiver can decode, to pass more complex messages.
----
The simplest case of PWM is when it is being used to send a 'value' between 0.0 and 1.0, so that for example) 0.5 will have equal time periods of 0 and 1, whilst 0.25 would have a 0 time period 3 times the length of the 1 period. Providing the actual time periods are kept short, this signal can often be directly used to control power output transistors (or similar) for speed of a motor or brightness of a light.
This simplest case appears to apply to the Cytron controller. Note that this signal can only control the speed of the motor. A second signal (DIR) is needed to specify direction, forward or reverse.
It is easy to construct a programme for an Arduino or similar microcontroller to produce the two required signals (PWM-speed + direction), but it is not the 'traditional' signalling convention for Radio Control, so it may be difficult/impossible to find a suitable 'off the shelf' RC decoder to drive the Cytron decoder. Bill has provided a link to using an Arduino, whilst advising you to look for an alternate course of action.
-----
Radio Control (RC) has 'traditionally' used PWM to signal servo control messages, using protocols defined for the purpose. A brief description of the underlying protocol is given in
There are clearly individual RC manufacturer's adaptations, but that is beyond my experience, so please read the specifications of an individual product, to see if it is compatible. (I suspect there will be a fair degree of compatibility, but I don't know, and this type of situation often ends up with 'odd' cases that don't work.)
-----
Bill provided a useful reference for a product that appears to be designed to decode the RC protocol and directly drive a motor.
This shows the style of product, which if suitable, would drive the motor without the need for the Cytron unit. Unfortunately, the voltage specification says:
specifying a maximum of 8.4 V, whilst your motor says it requires 24V
So I think you need to find a 'similar' style device, but with higher voltage rating.
--------------
So, sorry, this is not a 'I have built one, so I know it works', but rather 'I had a quick look on the web, and thought this might be worth you looking at', type of answer. Please be careful, as the motor is nearly 0.5 horsepower, so make sure you have fused the line from the battery and an emergency power interrupt mechanism, in case the controller decides to go haywire.
@rob7912@davee I second everything that Dave says. I would add that your best course forward might be to find a project either here or elsewhere that is a close match to what you want. Perhaps Bill's RC Robot Car.
I may be misunderstanding, but is that the right kind of motor?
CONCERNED: I am a little concerned with the size and power of a moving device especially after dark during a time when many kids are about. Make sure you have line of sight, and a self centering throttle.
Good luck
Arduino says and I agree, in general, the const keyword is preferred for defining constants and should be used instead of #define
"Never wrestle with a pig....the pig loves it and you end up covered in mud..." anon
My experience hours are >75,000 and I stopped counting in 2004.
Major Languages - 360 Macro Assembler, Intel Assembler, PLI/1, Pascal, C plus numerous job control and scripting
This shows the style of product, which if suitable, would drive the motor without the need for the Cytron unit. Unfortunately, the voltage specification says:
specifying a maximum of 8.4 V, whilst your motor says it requires 24V
So I think you need to find a 'similar' style device, but with higher voltage rating.
Good catch, I hadn't read that far back to get the motor specs.
There are other Brushed Motor ESC devices of course, this one from Ali Express seems to handle the voltage and more current than most of us will ever need. I haven't used it before, just found it with a quick Google search.
Just be sure you get an ESC for BRUSHED DC motors, most of them are for brushless motors.
😎
Bill
"Never trust a computer you can’t throw out a window." — Steve Wozniak
@zander Hi Ron, The motor I'm using is the large at the end of the video. We were not sure what we were going to us as a vehicle so we decided on the largest. I'm new to RC so I don't understand the motor or servo strengths, I'm sure we over engineered what we needed.
We expect to only go about 2-3 mpg and it will mostly be run during the day in our campground. We go all out in October for Halloween, I think we can give Disney World a run for their money when it comes to Animatronics. We though this would be our home grown Animatronic that the guests will get a kick out of. If we can pull it off.
Working on this same project, I will need a large battery to be able to run the project for a few hours a day. Is it OK to use a 6 or 8 volt golf cart battery, we have many sitting around? Or is there a better smaller choice other than the S battery packs?
We use cookies on the DroneBot Workshop Forums to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.