I recently fried a brand new Adafruit Motorshield v2.3 setting up a project that can be seen on this page (see Wiring section): Arduino Shake It · SHWotever/SimHub Wiki · GitHub
The short version of my setup and issue:
- Arduino Uno with Adafruit Motorshield V2.3
- Power is 12V DC 4A connected via Arduino DC barrel jack.
- The enclosure has 4 x 2.5mm barrel jacks that are wired to each of the 4 x motor terminals (M1 to M4) on the motorshield.
- All 4 x motors worked in all barrel jack connections when tested individually.
- Had 3 x rumble motors attached, M2 to M4 with M1 not connected at time of failure.
Once testing with all 3 motors working under intended use the following occurred:
- Visible burn marks on enclosure where red wire on M1 was touching the enclosure.
- Visible burns marks on the chip nearest the M1 and M2 motor terminals.
- Visible burn marks on the capacitor nearest the M1 and M2 motor terminals.
I’ve just ordered a new motorshield, but I obviously don’t want to repeat the same costly mistake so I am looking to understand exactly what went wrong so I can avoid the same thing in the future.
Please hit me with any questions or guidance to help me diagnose the problem if you can.
EXACTLY how is all of this connected up. Paper circuit please. Quite often photos don’t tell much.
Also which motor shield are you using. Are you exceeding max total current which is nor necessarily the same as 1 motor capability X 4. Probably something a bit less.
Start grabbing info as Bob suggested:
The next thing I’d check is for a shorted coil on your motor. Compare the one that was connected to the blown channel with one that wasn’t.
These motor shields usually have thermal protection that will stop most over-current issues. So I’m intrigued as to what went wrong here!
Where is motor power coming from. Not via Arduino I hope.
Note. When and if comparing motors as James suggested connect to power supply directly, not via motor shield. This will save frying another shield if something is wrong. A current comparison would be useful. If using a Digital MM measure on the 10A range as the mA ranges internal resistance is too high.
Thank you both for the replies.
This image should illustrate how its all connected up. As for which shield am I using, its the Adafruit Motorshield V2.3 as sold by Core Electronics here.
The black circles in the image represent the 2.5mm barrel jack connectors on the enclosure.
All motors were tested individually on different channels successfully before it all went pop so doubt its an issue with a motor.
Power is connected via the Arduino power jack, as instructed in the guide linked to in my original post.
I don’t have time to verify but I am assuming the motor supply gets to the shield from 12V vis Vin pin and so is basically connected to 12V supply.
Lets remove the “doubt” shall we. Do the measurements. Something went pop as you say and there has to be a reason. If all motors worked individually there is something wrong collectively and it stands to reason it is too much total current. Measuring the individual currents will provide some idea.
Yes, that sounds correct.
I have a Digital MM here. Can you be more specific on what you are asking me to test with the motors? I’m happy to diagnose anything but I am new to this kind of troubleshooting so am just looking to understand exactly what I need to test. There was no motor connected to the M1 channel when things went pop, and that is the connection that seems to have the burn marks on the enclosure.
Thanks for the help!
the current consumption of each motor preferably under normal load. Do you know how to do a current measurement?.Voltage is easy, the meter is connected across the DUT (Device under test). Current is a bit awkward, the meter is connected in SERIES with the DUT. In either pos or neg side, it doesn’t matter, same current. Polarity is not too important. If “wrong” the meter will display a negative sign. It is the numbers that are important.
Important: Use the 10A scale to minimise voltage burden. That is the voltage drop across the meter itself due to the internal measuring resistor.
Note the following graph
The IC data sheet says 1.2A per channel but if 2 channels are operating at once this drops to 0.9A per channel. That is at 25ºC. This should be derated for higher temperatures.
One would really have to sight this to form an opinion. Something has obviously happened. Short to ground maybe, only guessing which could be misleading.
Have you fried the whole board or are there some sections still working. You have not indicated.
Thanks Bob, very helpful.
M1 and M2 are not working, which are the ones closest to the burnt chip and capacitor. M3 and M4 still work just fine.
I’ll look into doing a current measurement on the motors next.
It looks like you are using 5v motors. That arrangement will work with 5v motors, but it is not recommended. If you are using 12v motors it definately won’t work.
For both 12v and 5v motors you should use split power supplies - one to the Arduino and one to the motor driver shield. If you are using 12v motors then you can use the same power source for both. If your motors are 5v then the recommendation is to use a separate 5v supply for the motor shield. This could be derived from the 12v supply, through a regulator.
Whatever the voltage, supplying the motors via the Arduino power plug and the Arduino pins is not good practice. Some of the reasons are discussed here along with good descriptions of the different options.
It’s not obvious that the existing arrangment caused the problem (unless you had the VIN jumper the wrong way around) , but when you wire up the new motor shield, splitting the supplies is definitely the way to go.
@Robert93820 … I’ve tested the motors under USB power only to keep things safe. Results were the same for all three connected motors when using the same connection to the shield (M3).
At 75% power the motors stabilised around 0.480 A.
At 100% power they weren’t very stable. Starting at around 0.720 A and quickly dropping to around 0.005 A.
In both instances, as soon as I make a connection with both points on the multimeter the motors stop turning. I assume this is normal?
@Jeff105671 … the motors I have can be seen here. I have the 12V 6000rpm versions.
I’ve seen others use a 12V 2A power supply connected up directly to the motorshield’s power terminal block and VIN jumper removed. However, I went with the documentation for the application I am using which states a 12V 4A source connected via the Arduino barrel connector and VIN installed on the shield.
This may be a silly question but how on earth do I tell if the VIN jumper is installed the wrong way around? I haven’t seen any guidance on that before and it seems to easily fit on both ways.
Why are you testing them with USB (5V). What is the normal operating voltage. If it is 12V it is pointless testing at 5V as the results mean nothing. I doubt the USB would supply enough current anyway. This statement is reinforced when you said you had stable rotation at 0.48A and instability at 0.72A quickly dropping to 0.005A (essentially zero). This is most likely the USB port shutting down due to over current.
This is what I asked you to do. Obviously did not happen.
Don’t quite know what you are doing here. I would not think this is normal. When you make DMM connections the motor should start spinning unless you are connecting the current meter ACROSS the motor instead of in series which would be a short circuit across the supply/motor and it would certainly stop. Please draw a sketch of how you are connecting this as it is very hard to imagine exactly what you are doing.
This is what Jeff is getting at above. It is best practise to connect the motor supply directly to the motor shield. As well as being best practise it tends to avoid accidental Arduino damage due to over voltage getting to the wrong place.
Another point. I have assumed you are aware of how to use a DMM and what I mean by “connect meter in series”. You have me a bit baffled by your above statement re the motor stopping so please provide the sketch.
I tested them with USB power first to gauge if all the motors gave the same consistent results. Not knowing the root of the issue I figured that would be a safe first step before connecting back up the 12V power. I’ll try again with the 12V power connected, and test one motor connected at a time.
Please note, I’m not a trained electrician or have any kind of long-standing experience with this sort of thing, hence why I came here for some help and guidance. I appreciate the help you’ve given me today, so thank you! But please don’t talk down to me because I don’t have the same level of experience in this field as you. If we can keep things respectful, I’d appreciate that even more
I’m likely going to misinterpret things in this process and will learn from them. If I do, just politely point out what I may need to do instead and I’ll happily give it a shot.
As for the testing, here is how I connected the multimeter connections to the motor. Reading your last post, I assume this is incorrect. I understand a series connection is a singular looping connection, and if I have this wrong, I’d be grateful to learn how I can correct it.
The VIN jumper is either installed or removed - it doesn’t have a right or wrong way round. The correct setting for VIN is described at the site I linked:
Powering Motors | Adafruit Motor Shield V2 | Adafruit Learning System
For 12v motors, running a power lead direct to the shield is the proper way to go.
The option that applies in that case is "If you would like to have the Arduino powered off of USB and the motors powered off of a DC power supply. The instruction for that option is “Plug in the USB cable. Then connect the motor supply to the power terminal block on the shield. Do not place the jumper on the shield.”. In this configuration the Arduino regulator provides 5v for both devices, from the USB supply.
When you have finished with debugging and testing the code and you unplug the USB cable, then put the jumper back on, and the 12v motor supply will power the Arduino regulator for the 5v supply. Do not have the VIN jumper on while the USB cable is connected.
@Matt39018 Sorry you having all this trouble.
Forget about using the VIN connection for the motor power. Remove the jumper.
Connect a 12V supply to the pins on the Adafruit shield because the motors are 12V.
If using 5V motors connect a 5V supply.
Running a 5V motor at 12V will damage the motor and draw excessive current.
Running a 12V motor on 5V will result in the motor not running or very slowly.
Remove the wires to any motor connection not in use. This reduces the chance the wire can short out on something and draw excessive current. This goes for any loose wires.
If you have a standard UNO the USB connection does not provide power to the VIN pin.
Looking at the schematic for the UNO and the Adafuit shield I recommend using the USB only program the UNO and a separate power supply for the motors. The motor driver chips are designed to be set up this way.
To test the motor current, use just a power supply, motor and current meter. Remove the UNO and shield from the equation.
PS hope you get it working and understand why it failed the first time.
Thanks @Jeff105671 and @James46717 for the replies.
This all makes sense to me, and I’ve seen others approaching the power delivery in the same way. It seems obvious now to provide the 12V power directly to the shield as you have described. It’s a shame the original documentation (linked to in my original post) said otherwise which I think was my main cause for confusion.
Your diagram James helps a lot for testing the motor current. I’ll work out how I can achieve this with the current connections I have on the motor, power plug etc and report back with results.
Once again, I appreciate your useful guidance here guys. Cheers!
The last thing I want to do is talk down to anybody. I am just trying to get a handle on what you understand as it is no good using terminology that completely confuses you. As I don’t know you personally questions have to be asked to find out. If there has been a problem understanding the terminology I am sorry but a start has to be made somewhere. I feel if one started to explain everything down to the last nitty gritty detail in every reply not only would it use up a lot of time and space but there are others who would take offence and think you were calling them stupid because they know all that.
Anyway, back to business.
Neither am I. Tried to stay clear of an “electricians license” as insurance costs go through the roof.
It looks like you connected the DMM “across” or as termed “in parallel” with the motor. This is how you measure voltage and would certainly stop the motor if connected this way on the current or Amps range. The correct way for current is as per James’ sketch where the DMM is connected in the line between the supply and motor. This is termed a “series” connection.
Do you still have the handbook for your DMM. I am not trying to be funny here but it would help everybody (especially yourself) if you could become conversant with a multimeters (both digital and analog) use and uses. And just as importantly some of the traps and pitfalls. Being able to interpret what you see or provide accurate information so others can do so are all important.
Lets see if we can get this problem sorted. As I said before it would be a lot easier if one could actually see the results of this failure but we can’t so will have a go remotely.
Possibly also need to check that the DMM doesn’t have a 10A fuse inside of it. Hooking it across the motor might have blown the DMM’s internal fuse…assuming it has one.
Good point. Usually does have but I think the power supply used would give up before that stage was reached. Fuses take a long time to blow and it used to be said that solid state devices are good protectors of fuses.
Getting your head around how to wire up a multimeter for the different types of measurements can be a bit tricky but once you’ve got your head around why it has to be done a certain way it makes a lot more intuitive sense.
We have a tutorial covering the how and why of multimeter connections on the site.
My personal multimeter is a fancy one that beeps at me if I set it to measure current and still have the cables plugged into the wrong sockets which has saved me a couple of times.