Control a DC Motor with Arduino (Lesson #16)
Complete Arduino tutorial playlist: www.sciencebuddies.org/scienc...
Science Buddies Electronics Kit for Arduino: www.homesciencetools.com/prod...
Learn how to control a DC motor with an Arduino and a transistor and an external power supply. This approach only lets you spin the motor in one direction - check out the next video in our series to learn how to make the motor reverse directions with an H-bridge. See our complete playlist of Arduino tutorials here: • How to Use an Arduino and the Science Buddies website for cool science projects you can do with an Arduino: www.sciencebuddies.org/search...
0:00 introduction
0:32 revisiting LED code
2:03 adding a motor to the circuit
2:51 transistor (MOSFET)
5:49 external batteries
8:19 simulation
9:10 controlling motor speed
12:02 capacitor
12:33 diode
Science Buddies also hosts a library of instructions for over 1,500 other hands-on science projects, lesson plans, and fun activities for K-12 parents, students, and teachers! Visit us at www.sciencebuddies.org to learn more.
#STEM #sciencebuddies #arduino #electronics #programming
*******************************
Connect with Science Buddies:
TWITTER: / sciencebuddies
FACEBOOK: / sciencebuddies
INSTAGRAM: / scibuddy
PINTEREST: / sciencebuddies
Пікірлер: 123
This is a phenomenal video. So clear, thank you 🙏
Super helpful, exactly the information I needed. Thanks
I love your lessons is simple and powerful
TY very much for the capacitor and diode demo. Yes, this is more EE, but much needed for those trying to make real world circuits.
Great video man, I appreciate it!
THANK YOU SO MUCH!!! SUCH AN AMAZING VIDEO, AND IT WORKS!!😀😀😃
Very good video, well explained and helpful.
The best explanation i have ever seen ❤
The explanations are very clear and simple, which allows us to understand well what we are doing. Thank you very much for sharing these videos.
@wadebrewer7212
4 ай бұрын
Yup....just getting started in this mess. About 1000 hours living in VBA certainly helps for the thinking process....but is still a lot to take in. These videos are amazing.
@user-ft3rs2tu8o
3 ай бұрын
1
Amazing way to explain
Thank you I was struggling about how to make my electric little car, unfortunately my arduino broke before I realized of this video, now I know how to do it
thanks so much this video help me so much😃
Thank you so much
So nice very usefull this videos
I could listen to your lessons all day. i could listen to it for sleep aid too.
thanks
can i use a BC 548B transistor? and a 9v battery with resistors?
Thank you. Though if I may ask, is there any way to power the arduino with the same power supply without risk of short circuiting? I've made a similar configuration which works just fine but just like in the video, the arduino is still uses power from the USB.
@SynisterFour
10 ай бұрын
I was thinking of connecting the Vin port to the positive rail that's connected to the power supply. Currently unsure as I am still new to arduinos and don't wanna break my components. Some answers would be helpful, cheers.
@Science.Buddies
10 ай бұрын
We have a new video that is all about different ways to power your Arduino project! kzread.info/dash/bejne/e2uB1K5ugZrgprw.htmlsi=ONWYTIxMbwE16vR7. You will also find this official help page useful: docs.arduino.cc/learn/electronics/power-pins. But the short answer is yes, you can use a single power supply and connect it to both the Arduino's Vin pin and the motors to power everything at once. That way the power for the motors comes directly from the power supply and not through the Arduino. Here's an example of a project on our site that uses this configuration - an ROV powered by a single LiPo battery: www.sciencebuddies.org/science-fair-projects/project-ideas/Robotics_p052/robotics/arduino-underwater-ROV
Question! What kind of DC motor do you recommend for more hard / motor heavy projects
@Science.Buddies
Жыл бұрын
These motors are internally geared: www.amazon.com/Dagu-HiTech-Ele-DG01D-W-Breadboard/dp/B01KHWFD16/ and are very popular for a variety of robotics projects like our jumping robot www.sciencebuddies.org/science-fair-projects/project-ideas/Robotics_p047/robotics/rubber-band-jumping-robot and our bluebot kit: www.homesciencetools.com/product/bluebot-4-in-1-educational-robotics-kit/. The type of motor shown in this video has a very high speed, so works well for projects like our artbot, junkbot, or brushbot: www.homesciencetools.com/product/bristlebot-robots-kit/, but the motors can't really drive wheels directly.
Hello! Very good explanation, I just want to know if the exact same logic applies to a physical project programmed on assembly, thank you!
@Science.Buddies
2 ай бұрын
Hi - the same concepts would apply to controlling a motor regardless of what programming language you're using. We don't have any of our own tutorials on assembly though!
Newbie here: can you have the battery pack also power the Arduino so that nothing needs to be plugged in?
How would I change the code so that on a single press of the button the motor constantly spins until the button is pushed again?
@onebruno
3 ай бұрын
create a flag that will hold the last value. By default it is 0 and when you press you assign it to 1. on second press you have you have to assign to 0 and vice versa. and use that variable to turn on and off the motor.
which SOFTWARE is being used in this tutorial to simulate
@Science.Buddies
10 ай бұрын
The software is called Tinkercad, we have a tutorial about it here: kzread.info/dash/bejne/a4Z6waSTYabNZM4.htmlsi=LwDVK2XtAwbA-SlM
Any idea why my digital pwm pins seem to be getting shorted out with too much current via this configuration?
@Science.Buddies
27 күн бұрын
This isn't really something we can troubleshoot in a KZread comment - we'd recommend checking out a forum dedicated to electronics (the official Arduino forum, Reddit, Stackexchange, etc) where you can post pictures of your circuit.
Are there external power supplies that just connect to another 9v power cable? If you want to do a project that doesn't need to be portable and would be useless to have batteries on it seems like there should be a way to bypass the batteries.
@Science.Buddies
8 ай бұрын
Check out this video that is all about powering Arduino projects, it may help: kzread.info/dash/bejne/e2uB1K5ugZrgprw.htmlsi=3vHons6WmIVFZP39
Hi I was recently exposed to your channel and I really liked your videos you really explain everything the best way I have a question I came across a motor with three ports how am I supposed to use it and what does the third port mean thank you very much❤❤❤
@Science.Buddies
Ай бұрын
Hi - we can't really tell without seeing the motor, you may be able to get an answer to your question on the official Arduino forums or another electronics forum on a site like Reddit or Stackexchange.
i wanted to do this but i dont have any n-channel mosfet and h-bridge integrated, where did you buy those/ where do you think i could buy cheap ones?
@Science.Buddies
2 ай бұрын
These parts are available on Amazon and electronics vendors like SparkFun, Adafruit, Digikey, Jameco, Mouser, etc.
Why isn't the button being connected to the 5v of the arduino as shown in you button LED video? :(
@Science.Buddies
5 ай бұрын
In our button video, we use an external pull-down resistor to ground so the button is low when not pressed, and wire the other side of the button to 5V so it is high when pressed. This approach is a little more intuitive when first learning buttons (pressed = high/on, not pressed = low/off). However, the Arduino also has an internal *pull-up* resistor that you can set using INPUT_PULLUP as shown in the code. If you do this, then you only need to wire the button to ground externally and not 5V. It's a little less intuitive because the input will be high when *not* pressed and will go *low* when you press the button, but it requires fewer external parts and wires. Sorry for not explaining that clearly in the video!
Sir. How about pressing a button to start the motor for a period of time rather than using a potentiometer?
@Science.Buddies
9 ай бұрын
You could do this by detecting the button press (see video on buttons earlier in our tutorial series), turning the motor on, using a delay() command for a set amount of time, and then turning the motor off. The disadvantage here is that the code cannot do anything else while it is stuck in the delay() command. There are other ways to keep track of elapsed time on the Arduino, like the millis() command. We do not have a video on it but you can look it up on the Arduino website.
Hello, Could you please tell the name of the software you are using to simulate this circuit ? Thank you
@Science.Buddies
Ай бұрын
It's called Tinkercad Circuits and we have a tutorial about it here! kzread.info/dash/bejne/a4Z6waSTYabNZM4.htmlsi=VHRhSg4prsutotVv
I am trying to build an ardunio that can pull my curtains up/down. Is a DC motor enough and is it possible to control that thing via bluetooth/ an app?
@Science.Buddies
10 ай бұрын
Hi - we don't have our own video on it, but you should be able to find many tutorials out there on using Arduino with Bluetooth and controlling things with apps. DC motors come in many different sizes and whether one is "enough" will also depend on whether there is a mechanism, such as gears or pulleys, that create a trade-off between speed and torque. This topic is a little more advanced than what we cover in this video but again you should be able to find other KZread tutorials about it.
how do we know how much current the transistor is controlling and allowing into the motor?
@Science.Buddies
2 ай бұрын
You can connect a multimeter in series with the motor to measure the current: kzread.info/dash/bejne/pqdkp7icadm-k9Y.htmlsi=RWhOz3Z-QDKvApzs
@RunTheProgram
2 ай бұрын
@@Science.Buddies In the video you mentioned that the motor would require more current than than the LED, so when you connected the transistor into the circuit does that mean the transistor automatically drew the correct amount of current for the motor? If so, can you adjust the amount of current the transistor draws for the motor?
@Science.Buddies
Ай бұрын
Hi - this is a little more than we can explain in a KZread comment, you might want to look up some intro electrical engineering tutorial series.
7:23 I use to think that the electricity flowed out of the positive terminal as well, but recently I learned that in a typical use case such as this, they flow out the negative and in the positive. Apparently the logic behind this was that the + side is "gaining" electrons and the - side is "losing" them. Very backwards from everything I learned playing with electronics as a kid, lol.
@Science.Buddies
9 ай бұрын
The convention was defined before scientists really knew about electrons as the mobile charge carriers - for better or worse, that's what we've stuck with!
Will it work with 2 other trigger button & 2 dc motor?????
@Science.Buddies
11 ай бұрын
Yes - the Arduino UNO has 13 I/O pins, so you have plenty of room to add more buttons and motors.
@360101
11 ай бұрын
Thx, I can modify my big mouth billy bass Fish
Nice video! How can I choose the size of the capacitor?
@Science.Buddies
10 ай бұрын
We don't have a simple answer for this because it can depend on the motor and power supply you're using - you might want to do some more research on more electronics-specific forums for this one.
Hello guys i was wondering why is the black wire leading to the ground pin necessary?
@Science.Buddies
3 ай бұрын
It's important for the entire circuit to have a "common ground" - this is a bit more than we can explain in a KZread comment, but you can find other tutorials online about what "ground" means in a circuit and why it's important.
@lerdings
3 ай бұрын
Interesting, however I find it confusing because doesn't the motor already have a ground? When I don't use Arduino for example, and I just use wires and a motor, the motor runs just fine; however in this with the Arduino it doesn't work? Can you explain why this is?
@Science.Buddies
3 ай бұрын
Hi - this is a little more than we can explain in a KZread comment, you may want to start with a KZread intro to electronics lecture series if you want to get deeper into these topics.
Great video! One thing that I've been struggling to understand is the purpose of the "common ground". Why does this need to happen in these types of circuits?
@Science.Buddies
7 ай бұрын
It's a bit much for us to explain in a single KZread comment. The very short answer is that voltage is measured between two points, so all parts in the circuit need a "common" or reference level. Think of it like using sea level as a reference for "zero" elevation everywhere in the world. If you search KZread for videos about "what is ground in a circuit?" you will find some more detailed explanations.
@brotherx6205
7 ай бұрын
@@Science.Buddies my problem with this has been that when you have an external power source, you need to connect it to a common ground (with the Arduino) when the external power source already has a potential difference between its poles. Ill have to keep building to understand why this connection needs to happen.
I am trying to build a system with a humidity sensor that will detect the low temperature and then activate the DC motor. Can I combine this project using the same arduino? Please help me.
@Science.Buddies
9 ай бұрын
Hi - yes, you can combine pretty much whatever sensors and motors you want with an Arduino, at least until you run out of pins. We do not have our own tutorials for temperature or humidity sensors yet, but you should be able to find plenty on KZread.
Do i need to place 10k Resistor between Gate and Ground and 220Ohm Resistor between Gate and Arduino Pin?
@swaggybanana6909
4 ай бұрын
Yes or MOSFET will stay on
Thank you for helping me in theis journey was i was able yto do this and not commit suicide, LOLZ
Hello, how make a dc motor position with potenciometer?
@lauthomas7179
3 ай бұрын
Use a proportional control (P control) circuit to do that.
why would my motor be humming/whining I used a similar setup using a IRF520 MOSFET, a potentiometer, and a 9V battery as the motor's power source
@Science.Buddies
9 ай бұрын
Depending on the motor, you may near a humming or whining noise when changing the speed with analogWrite. analogWrite does not allow you to adjust the frequency of the PWM signal, and different motors will respond differently to different frequencies.
Which MOSFET are you using?
@Science.Buddies
9 күн бұрын
It is a generic N channel MOSFET such as www.amazon.com/gp/product/B07CTF1JVD
No matter how often I watch your Tutorial, I just can‘t manage to shut the motor off. On PWM 255 it looks like it‘s at full speed. However, if I PWM 0, the Motor just keeps spinning slightly slower. What have I been missing? My setup is exactly the same, except that I‘m using an arduino r4 minima instead of a r3.
@Science.Buddies
5 ай бұрын
This code should work the same on an R4 as it does on an R3. There may be something wrong with your circuit or code but we can't say for sure without seeing them. If you are a K-12 student working on a school science project, you can ask for help in the Ask an Expert forums on our website, where we have volunteers to help answer questions: www.sciencebuddies.org/science-fair-projects/ask-an-expert-intro. Unfortunately we are a small organization and cannot provide support beyond that, but you could try asking for help in the official Arduino forums or other forums like Stackexchange or Reddit.
What's the software program you used??
@Science.Buddies
9 ай бұрын
The program is called Tinkercad Circuits, available at www.tinkercad.com. We have a tutorial video about it here: kzread.info/dash/bejne/a4Z6waSTYabNZM4.htmlsi=2agLPUXS-H3lGFo1
would it work with a 9.V battery (I'm very new to everything)
@Science.Buddies
10 ай бұрын
The very short answer is that technically it would work but 9V batteries are not a good choice for powering a motor. We have a more detailed video about powering your Arduino projects here: kzread.info/dash/bejne/e2uB1K5ugZrgprw.htmlsi=FHJb_28Zbzr-_sZF
Please help me to replace the button with ultrasonic sensor
@Science.Buddies
7 ай бұрын
We have a separate video in our Arduino tutorial series (linked in the description) about using an ultrasonic sensor.
what if you add 4 motors? how do you connect?
@Science.Buddies
Жыл бұрын
You would need to use a separate Arduino pin and transistor for each motor.
Could you just put two transistors one for forward and one for reverse and put diodes in between so you don't put power through another transistor when not in use. But they are connected to the same motor they just output a different polarity.
@Science.Buddies
6 ай бұрын
You can build an H-bridge using discrete transistors yourself but it actually requires four transistors, not two. This allows you to reverse the direction of current through the motor. We don't have our own tutorial on it, but you can find example circuit diagrams online. It's easier to make a mistake when building a circuit with multiple transistors though, so at that point you might as well just use an H-bridge IC.
How can I use a microphone instead of a button to control the motor with the voice?
@Science.Buddies
3 ай бұрын
Hi - we have a microphone tutorial as part of our Arduino series (playlist linked in the description) but on its own that only works for basic loudness detection, not voice recognition. If you search our channel you will also find several videos about voice recognition.
Why we meed transistors. Can we avoid
@Science.Buddies
10 ай бұрын
The Arduino's I/O pins can only supply 20 milliamps each, which is enough to drive a small load like an LED, but not enough to drive a motor directly. The transistor acts as an electronic "control valve" that lets you control more current flowing from a power source like the Arduino's 5V pin for an external battery.
what is this software to draw?
@Science.Buddies
5 ай бұрын
The software is called Tinkercad Circuits and we have a tutorial about it here! kzread.info/dash/bejne/a4Z6waSTYabNZM4.htmlsi=jFo8k2vp6V7eUPOU
Bro what is the model number of that mosfet
@Science.Buddies
4 ай бұрын
www.amazon.com/gp/product/B07CTF1JVD/
what app you use ?
@AidinZolghadr
4 ай бұрын
Tinkercad
@AidinZolghadr
4 ай бұрын
kzread.info/dash/bejne/a4Z6waSTYabNZM4.html
@yazanjarjous1872
4 ай бұрын
Tinkercad
how can i connect TWO dc motors with arduino?
@Science.Buddies
3 ай бұрын
You just need to duplicate the setup shown in this video using an additional pin.
What is the name of the software
@Science.Buddies
4 ай бұрын
The simulation software we use in this video is called Tinkercad Circuits: kzread.info/dash/bejne/a4Z6waSTYabNZM4.htmlsi=anM2bLtx0hgG71lF
What's the transistor number
@Science.Buddies
8 ай бұрын
The transistor is an N-channel MOSFET, something like this or equivalent will work: www.adafruit.com/product/355
i will make a Drone and it will be awsome!!!!!!!!!
I need to learn how to connect a sound module to a dc motor.
@Science.Buddies
6 ай бұрын
What exactly do you mean by "sound module"? We have a tutorial about using a microphone here: kzread.info/dash/bejne/lIGnl6xtkq21dJM.htmlsi=DTllbdrN_A78mYcU
@spectatorsturner
6 ай бұрын
@@Science.Buddies I need the motor running and the sound module playing music at the same time
This doesn't make any sense, an ordinary mosfet has a minimum voltage threshold on the gate, which allows it to open, so lower voltage values from the potentiometer won't even open it, causing the motor to be left turned off, and high enough voltage values from the potentiometer will exceed the gate's threshold, causing it to open, causing the motor to run at full speed. A mosfet can be either open or closed, so the motor will either run at full speed or not run at all, so please explain what am I missing here
@Science.Buddies
5 ай бұрын
The voltage from the potentiometer is not going directly to the MOSFET's gate. It is going to an analog input pin on the Arduino, which is read with the analogRead command, and then converted to a pulse-width modulation value and sent to one of the Arduino's output pins using the analogWrite command. The trick is that the UNO R3 does not have a true analog output - it is a pulse-width modulation (PWM) signal that just alternates between high and low (fully on or fully off, as you noted). By adjusting the duty cycle (percentage of each period the signal is high) you can control the motor speed.
Hey, i've copied everything exactly from this project but when I use analogwrite in an attempt to control the speed of the motor, it's not working. I'm not using a potentiometer, but here's my code: const int MOTORPIN = 3; void setup() { // put your setup code here, to run once: pinMode(MOTORPIN, OUTPUT); analogWrite(MOTORPIN, 0); } void loop() { // put your main code here, to run repeatedly: analogWrite(MOTORPIN, 0); } I've ensured that pin 3 is indeed a PWM pin, and my circuit setup is exactly the same as yours, I've double and triple checked. What could be the problem? Thanks in advance!
@Science.Buddies
9 ай бұрын
Hi - since you have analogWrite(MOTORPIN,0), you are setting the speed to 0 and the motor will not spin. Does it spin if you change the 0 to a different number, between 0-255?
@Chan-og3yk
9 ай бұрын
@@Science.Buddies sorry I should have clarified, when I set the speed to 0 with the analogWrite it still spins. It doesn't stop. No matter what number I put it spins at the same speed.
@Science.Buddies
9 ай бұрын
Ok - this could be a problem with your circuit and not your code. You could test with an LED instead of a motor to make sure the analogWrite function is working properly, since wiring an LED does not require a transistor and is less complicated than wiring a motor. We have videos earlier in our tutorial series about controlling LEDs.
My code keeps getting stuck on line 17
Use PWM, this hurts my brain
I literally understood nothing from this video. I am not saying it to just be mean, I personally could not understand how it is done.
@Science.Buddies
8 ай бұрын
We would recommend starting at the very beginning of our Arduino tutorial playlist instead of jumping right to this video, which is more advanced. You can find the entire playlist here: kzread.info/head/PLlBVuTSjOrclb0iCMSRpS_H1lSrlSVeEm&si=Mk1cQfK7YIpuIpq0
Really? Using analogWrite to control motor speed? That's a bit dumb. I guess it could work, but it's going to burn part of battery energy on mosfet. Better way of controlling motorspeed is using PWM signal.
@Science.Buddies
7 ай бұрын
The Arduino UNO R3 does not have a true analog output, it's actually generating a PWM signal. We glossed over that in this video. Note that the new Arduino R4 *does* have a true analog output available, but you would still use PWM on a digital pin to control motor speed.