Motor Controller for Cordless Drill Motor

Hi all,

I'm new to electronics and was hoping to get some of your feedback. I want to be able to control the speed of a cordless drill motor in response to an external load (more load, less speed). Originally, I thought that an L298N motor driver would be ideal for this, but I think the drill motor (RS550 10.6V) draws too much current for the L298N and it gets really hot when it's connected.

Are there any high current motor controllers that you have used with Arduino that can help with load sensing and feedback control? Thanks for your help!!

You need to look up the specs for that motor.
I would guess that motor has a stall current over 50A .
You need to know the amps required for a motor before you can select a driver.

detown:
You need to look up the specs for that motor.
I would guess that motor has a stall current over 50A .
You need to know the amps required for a motor before you can select a driver.

Thanks so much for your reply! Yes, from what I've been reading, the stall current can be very high with this motor. Is there any way to limit the current so that if it reaches say 25A or so, the motor will just stop? I'm looking into a BTS7960 chip which can handle 43A and is relatively cheap so I'd want to try and use that if possible.

The motor will briefly draw the stall current every time it starts up. The driver MUST be able to handle it.

Unless the supply itself is current limiting.

Stall current can be measured by measuring the motor terminal resistance, and dividing into the supply voltage.

Be careful measuring small resistances to correct for meter lead resistance (a 4-terminal measurement may be
needed).

If you motor is .3 ohms and 10.6V, then its stall current is 10.6 / 0.3 = 35A, for instance.

You made a good choice, a bit over kill but still very good. The BTS7960 is self protecting, just be sure you do not lose the ground or use the protection shown on the data sheet. You will have minimal heats inking to do with this part. I ran 10 amps through one and it did not get noticeably warmer. If you can get the Arduino cookbook by Michael Margolis and read it. You will find on line many videos etc showing the Arduino and how to do use it some of it may be what you want. This additional information will go a long way in getting your problem solved. There are also many videos showing how to read a data sheet. Once you get past this you then need to select your sensors and actuators. At that point you start on the hardware design and write your software.

Thank you all so much for your help! I finally have the motor running using the BTS7960 Motor Driver Module. I’m still trying to figure out the current sensing bit, so any help is appreciated! I’ve attached a picture of how I’ve wired everything, but I’m thinking that I need to connect the R_IS and L_IS pins to A0 and A1.

I’ve searched all over on how to use the IS pins and haven’t found anything useful yet, and I don’t really under the BTS7960 Spec Sheet. Can I just connect them to A0 and A1, put them on the serial monitor, and have them tell me what the load current is? Thanks a bunch!

The data sheet shows that you connect a resistor (typ. 1K) from IS to ground, and measure the voltage across the resistor.

The data sheet also explains that the current output by IS is proportional to the load current IL, with a ratio of typically 8500. However, you must calibrate your measurements by measuring the voltage across the IS resistor, for one or more known load currents.

IS = VS/R(IS)

I do hope you dont want to use that motor for anything serious or at its higher speed range ?
They are quite prone to vibration and the brass bearings are also subject to failure.

They are fine in thier lower speed ranges and NOT used with intermittent loads such as cutting tools.

They are quite capable of being MOSFET controlled as I had a few here for small CNC work until I worked out how bad they are.

jremington:
The data sheet shows that you connect a resistor (typ. 1K) from IS to ground, and measure the voltage across the resistor.

@jremington and @ballscrewbob thank you so much for your quick replies! It seems like the motor driver is already connected to a resistor, as shown in this schematic.

I've connected the R_IS pin to A0, and L_IS pin to A1, but the values only jump back and forth from 33 to 66. Stalling the motor with my fingers doesn't change these values, and I'm unsure what I'm doing wrong. The end goal is to have something that looks like this.

Here is the code that I used, using Robojax's BTS7960 Library.

 int RPWM = 3;
 int R_EN = 4;
 int R_IS = A0;
 
 int LPWM = 6;
 int L_EN = 7;
 int L_IS = A1;

 int CW = 1;
 int CCW = 0; 
 int debug = 0;

 RobojaxBTS7960 motor(R_EN, RPWM, R_IS, L_EN, LPWM, L_IS, debug);

void setup() {
  //Set up input/output pins
  Serial.begin(9600);
  motor.begin();   //Set R_EN, RPWM, L_EN, and LPWM as outputs. Set R_IS and L_IS as inputs. 
}

void loop() {
  // put your main code here, to run repeatedly:
  motor.rotate(50,CW);                                    // Rotate motor clockwise at 50% speed
  float currentR = analogRead(R_IS);               // Raw A0 analog reading
  float voltageRead = currentR * (5.0/1024.0); // Convert to voltage reading
  Serial.println(voltageRead/0.075);                 // Current Factor: 0.075V per Amp
    
  delay(300);  
}

Start simply, by testing the driver with a dummy load (a resistor) instead of the motor.

For example, a 1 Ohm resistor will draw 1 Ampere per Volt across it. You will need one with a large power rating, like 25 or 50 Watts and limit tests to short periods.

Keep in mind that the IS output is also the Fault Indicator.

Hi,
OPs diagram;

Have you googled

BTS7960 Motor Driver Module arduino

Tom.. :slight_smile:

jremington:
Start simply, by testing the driver with a dummy load (a resistor) instead of the motor.

For example, a 1 Ohm resistor will draw 1 Ampere per Volt across it. You will need one with a large power rating, like 25 or 50 Watts and limit tests to short periods.

Keep in mind that the IS output is also the Fault Indicator.

Thank you, I'll see if I can do that!

TomGeorge:
Have you googled

BTS7960 Motor Driver Module arduino

Tom.. :slight_smile:

Hi @TomGeorge! Thanks for posting the diagram. Yes, I've googled it extensively, but there isn't much information on how to use the IS pins. Most of the other projects don't use those pins.

ballscrewbob:
I do hope you dont want to use that motor for anything serious or at its higher speed range ?
They are quite prone to vibration and the brass bearings are also subject to failure.

Oil-filled sintered bronze bearings, not brass, they will not last forever, whatever speed, but adding a
little drop of oil occasionally will prolong their life. They are a sponge of metal permeated with oil
(until they dry out!).

Most of the Chinese knock off 775's are not properly sintered bushings.
As a millwright with at least 3 of those out of commission I can attest to that.

I would certainly not use oilite type bushings in high speed or vibration type applications.

Well the one I have is sintered from a microscoping examination, its second hand and unknown history but bearings seem in good condition - any knock-off product is awful of course, but I think a lot of these motors
are genuine from an old drill with knackered battery, or bought from reputable robotics suppliers, lets hope so.

I do have an ultra-cheap Dremmel-a-like which had awful bearing bushings, that is true though!

Do an ebay search for 775 motor and you will find multiple offerings with completely different pictures.
It literally is a minefield with even the name Johnson being applied liberally to clearly different motors.
They also use the word “drill” or “cnc” a lot in descriptions to add to the confusion.

Not sure why people are getting all shook up over a cordless drill motor. It is what it is.

zoomkat:
Not sure why people are getting all shook up over a cordless drill motor. It is what it is.

There are motors and then there are good motors and the differences can be light years apart in terms of specifications, durability, and suitability for the task IMHO even with the same "supposed" model.

Hey everyone!

I'm a beginner in electronics so I don't really understand the differences between different types of motors. Here's a picture of the one I have still attached to all the drill accessories (except for the trigger). From all the posts that I've read, the BTS7960 should be more than enough to drive this cordless drill motor for most projects, but every time I use it the wires start smoking, so I guess it can't handle the start current or something.