Arduino with AccelStepper library and TB6600 stepper motor controller

  Рет қаралды 68,567

Curious Scientist

Curious Scientist

Күн бұрын

Пікірлер: 187
@F111BMATHIS
@F111BMATHIS Жыл бұрын
This is it! So PUL+, ENA+, and DIR+ all to 5V, type in a "C" to serial monitor to get all the commands. Command example would be "R 2000 1000" Rotate +, 2000 steps? at 1000 speed? Still figuring it out, but I love it!
@CuriousScientist
@CuriousScientist Жыл бұрын
Why don't you watch the video and read the code? I explain the answer your question at @14:58... The motor will only move once with this code, since it moves on an absolute scale. You might want to use "P" if you want to move let's say 1000 steps, then pause and do something else, then move 1000 steps again.
@ortizenrique
@ortizenrique 4 жыл бұрын
Nice implementation, I just had one problem with it, I had to remove the default case in the serial switch otherwise it will only move one step regardless of any command I give to move at any direction, regards!
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Thanks! That's interesting, I will check it. I uploaded the code as it is presented in the video, so it was working for me with the default case as well.
@sshah876
@sshah876 3 жыл бұрын
Awesome tutorial, after movement or so the motor is hard to turn by hand it appears that it is consuming current and is getting hot, looks like that disable output function is not working in my setup, don't know what could be wrong, my setup is same as yours do we need to use the enable input in the tb6600? second question is can you embed your limit switch in this code ?. cheers
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Thanks! Check my more recent videos. I have implemented 2 limit switches and also an option to turn the power on\off via switching the enable pins on the motor drivers.
@sshah876
@sshah876 3 жыл бұрын
@@CuriousScientist That is great, thanks for the feedback
@sshah876
@sshah876 3 жыл бұрын
@@CuriousScientist Hi Sir, could that be the video with ping pong setup, enable pin was not used there. kindly point me to the video/link/title at your leisure if possible. Most of your great tutorials are using your specialized controller, that is great. In my case I just want to use bare minimums with no controller, like a simple turntable/curtain control. Thank you very much and kind regards.
@CuriousScientist
@CuriousScientist 3 жыл бұрын
You can always modify my code to your own needs. My special controller has 2 different ping-pong implemented.
@sshah876
@sshah876 3 жыл бұрын
@@CuriousScientist Thank you so much... cheers
@projects4home
@projects4home 2 жыл бұрын
works perfect. Instant perfect code, so I could skip hours of programming and go straight to test the mechanics :-) thanks mate. You are amazing
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Hi! Glad to hear that it works!
@speloto
@speloto 3 жыл бұрын
Just what I want to do!!! Thanks a lot great job
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Thanks! I am glad you found what you were looking for!
@KW-ei3pi
@KW-ei3pi Жыл бұрын
An excellent demonstration. Most Arduino/Stepper videos on KZbin are very basic and not that useful in practical situations. You give many different applications that can be adapted for practical use. Thank you. How can I find out what functions are available in the AccelStepper library and what parameters they use? I can't figure that out. Thanks again. Regards.
@CuriousScientist
@CuriousScientist Жыл бұрын
Hi and thanks. Just Google accelstepper library. It is very well documented.
@reaper060670
@reaper060670 2 жыл бұрын
Are these TB6600 drivers OK for using with the Nema-17 or 23 stepper motors?? I know they are cheap and cheerful but are the good enough if I want to build a CNC Router of my own.. I'm new to all of this kind of electronics guys so I would be very grateful for any helpful hints and tips and if u could recommend any information a out building my own CNC machine I would be ever so grateful to u all.. Thanks for ur time good ppl
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Hi! They are good enough for hobby purposes. I haven't gotten any issues with them so far.
@mattivirta
@mattivirta 6 ай бұрын
IF build own cnc router, some basic rules have, you need first minimum nema 23 3Nm /450 Oz torque motors, then stepper motors drivers etc, DM554 or 556 4 or 6 mean max current for motor, need be drivers more handle current than motor maximum have not burn driver, normal used 3-4Ampere motors, power supply need be if use 3 pcs 4 ampere motors maximum need be 3x4=12 ampere power supply minimum. then need cheap 10-20$ breakoutboard, paraller port or USB port, parallerport better safe board, and parallerport pcie card to computer, 7-14$ and best easy FREE software controller all machine linuxcnc, i use version 8.2.4 worst cnc can build whit arduino and cnc shield but not have millin cnc only draving pen plotter or laser or 3D printer used. windows and USB port can use only mach3 software and not have real time controller and thats mean not have safety. better use factory quality safe controller thats can use only linuxcnc and paraller port controller have true real time controll and safe.
@davidstewart5291
@davidstewart5291 3 жыл бұрын
Great video. You are putting up video of projects that are the next thing on my mind. But there is a bit of an issue that I really want to clear up. In the first part of the video, you moved the stepper by 1500 steps or 3 cm. But in reality the stepper moved something like 3.6 or 3.8 cm. Even after taking into account the fact that you used a cardboard to attach the linear bearing to the moving block, this is a significant gap. What extra thing should I do to precisely move 3 cm? I am aiming for an accuracy of 0.01 mm. I am going to build a similar configuration but use TB6560 and also a backlash prevention nut. I am also going to use the same type of lead screw.
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi and thank you! The lines on the aluminium profile were not perfectly 10 mm apart and also I recorded everything with a tiny action camera, so there is always some distortion. If you use an anti-backlash nut, and you do not overload the lead screw mechanically (which would lead to skipping steps), it will be very precise. If you want more precision, you can use a lead screw with finer threads, for example with 1 mm pitch. The one I use is a 4-start 2 mm pitch lead screw, so one turn results in 8 mm linear displacement of the nut.
@michaelPatriot5678
@michaelPatriot5678 Жыл бұрын
Hello, Is there a way to change the serial commands to something else? I have a control program that generates specific serial commands for "Open", "Close", and "Park" Thank you! Great video
@CuriousScientist
@CuriousScientist Жыл бұрын
Hi! Thanks! Sure, it can be anything as long as you can parse it on the Arduino.
@TheSterlingwright1
@TheSterlingwright1 Жыл бұрын
Will this work for a nema 23 as well? Also, is there a wiring diagram available? Thank you. I really appreciate your information.
@CuriousScientist
@CuriousScientist Жыл бұрын
It will work, yes, this driver can drive it. The wiring diagram is unnecessary because you can see all the connections in the source code, just follow it.
@-RullySianipar
@-RullySianipar Жыл бұрын
where do i put the tb6600 ENA+ pin to arduino pin? can you give us the wiring pls?
@CuriousScientist
@CuriousScientist Жыл бұрын
You only need it if you want to manually enable/disable the power to the stepper motor driver. In that case, you can pick any GPIO pins. Then you just need to tell the accelstepper library this pin (see setEnablePin() function) and then you use the enableOutputs() and disableOutputs() functions.
@scrosby1000
@scrosby1000 3 жыл бұрын
Hi there, great video. I need the exact setup with one difference. Instead of programming the points I need to have two physical buttons. One for CCL and one for clockwise. Can I easily add this to your code somehow.
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi and thank you! Please check my most recent video, and also look around in the stepper motor related playlist on my KZbin channel and also on my website. You will find ready-made solution for your question with code and wiring published. Just invest a little time and watch my videos and read the descriptions carefully.
@shashikantgupta611
@shashikantgupta611 2 жыл бұрын
Hi ! can you plz explain how did u define Home position on the screw and in the code as well?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Hi! It is explained in the video...
@paulocella9745
@paulocella9745 4 жыл бұрын
Ok tks. I loaded the code for this video, but when the engine stops (With "S") it gets stuck and consumes approximately 0.650a. The stepper.disableOutputs () function; shouldn't I prevent this? The ENA- pin in the photo of this video appears connected to the arduino. In your blog the photo says that it is not to connect this pin (ENA-) or am i mistaken?
@CuriousScientist
@CuriousScientist 4 жыл бұрын
For some reason, my reply disappeared. The disableoutputs depend on the board you use. It will not always work. The wire goes into one of the holes in the PCB of the Arduino. I just use it to hold the Arduino in the breadboard. It is not in an electrical connection. If you watch it carefully, you can see that it is just a hole and not an electrical terminal.
@canario430
@canario430 3 жыл бұрын
I would like to control the motor with push buttons and a speed regulator and not have to depend on a notebook, what would I have to do?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi! You need to watch my more recent videos. I built something which can do all those things that you mentioned. This is the video: kzbin.info/www/bejne/aojVpWqprL2dqbM
@mattivirta
@mattivirta 6 ай бұрын
i has build many push button system, etc, motoriced vise, angle grinder cutting machine, grinder run front/back to rail and cut sheet.
@aliumara1205
@aliumara1205 3 жыл бұрын
thank you for your video its posibel with pinball moving with wout serial , i mean just give the speed and distance
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Look around on my channel, there are plenty of stepper motor related videos.
@aliumara1205
@aliumara1205 3 жыл бұрын
@@CuriousScientist thank you for your answer , myporbelm in i should know the RPM of motor i have range 80-200
@CuriousScientist
@CuriousScientist 3 жыл бұрын
@@aliumara1205 What do you mean by "you should know"? You are the one who determines the RPM.
@aliumara1205
@aliumara1205 3 жыл бұрын
@@CuriousScientist how can i determine this RPM ?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
You can calculate it from the speed of the stepping and the number of steps required to achieve a full rotation on the shaft of the stepper motor.
@sinumihai7495
@sinumihai7495 4 жыл бұрын
hey! Thanks a lot for this video! Can you tell me what microsteppin setting you used here? I had problems with normal running of the motor, and a pitchy noise came out of it. I did the wiring with the TB6600 from your other video.
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Hi! I always use 400. Cheers!
@sinumihai7495
@sinumihai7495 4 жыл бұрын
Should I have the ENA- pin connected to arduino? But where?
@CuriousScientist
@CuriousScientist 4 жыл бұрын
@@sinumihai7495 Nowhere, do not even touch that terminal. ENA(-) is not connected, don't put any wires into that terminal.
@sinumihai7495
@sinumihai7495 4 жыл бұрын
@@CuriousScientist Ok, I didn't. Your code still not working for me, but somehow I reconstruct by myself line-to-line, and i manage to start and stop the stepper. Thank you again for your help!
@sinumihai7495
@sinumihai7495 4 жыл бұрын
@@CuriousScientist And I wanna know if the changes of direction (from positive to negative) have to be gradually? Can be implemented some deceleration function , and how? Sorry for spaming.
@adan20able
@adan20able 3 жыл бұрын
hey! thanks for the video and the code. can you tell me how to change the way to input the steps from serial ide to keypad? i want to run the motor using keypad. and im confuse how to configure it in the code. thanks a lot
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi! You just need to replace the commands received from the serial with the commands received from the keypad.
@paulocella9745
@paulocella9745 4 жыл бұрын
HI ! In the code comments you write: "// We only use non-blocking commands, so something else (should also be non-blocking) can be done during the movement of the motor." does the command below block the code ?: Serial2.print ("tm0.en = 0"); // (using arduino Mega and Display Nextion - serial2) Serial2.write (0xff); Serial2.write (0xff); Serial2.write (0xff); I have a stepper motor control project and a timer, based on your code, and when I send this command to the Nextion display , for stop the timer, the motor stops momentarily. Would you help me? tks!
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Hi Paulo and thank you for your kindness! ;) Anything that keeps the microcontroller busy is blocking. This can be anything such as reading a sensor, sending data through the terminal, printing values on the LCD...etc. So, I would say that the above code is _blocking_ for sure. The idea behind the non-blocking instructions and stepper motor control is that while there is time between two step pulses, the microcontroller can do something else. The higher the speed of the stepper motor, the smaller the distance (time) between two step pulses. Therefore, you have less time to do something else. The reason why your stepper stops for a little moment is probably because the above set of commands take more time than the time between the two step pulses. Serial.print/write or any serial related command is relatively time consuming, so if your stepper is not "slow enough", you will always experience the little stops. Do you really need to send the "0xff" three times? There, you can cut back some delay. But, to run the motor and the display at the same time, Arduino is not necessarily the best solution. You can use 2 Arduinos. Wire them together. The master takes care of the screen, sensors....etc. The slave just receives the commands from the master and performs the stepping. I already implemented this, but haven't yet made a video about it. Since this can be interesting and useful for many people, I might make a video on the topic soon.
@paulocella9745
@paulocella9745 4 жыл бұрын
@@CuriousScientist tks for return !! tks for return I will study and try this possibility of 2 microcontrollers..
@paulocella9745
@paulocella9745 4 жыл бұрын
@@CuriousScientist TKS !! I did it as suggested and I'm using an arduino nano only for the engine, the arduino mega controls the display and data for the engine and is working without crashes! My project now has: 1 MEGA arduino (I need 3 serial ports) which is the central (receives and sends data, to the Nextion and to the engine arduino and to the arduino with weight sensors) 2 nano arduinos: - the 1st controlling the motor and connected via serial to the arduino MEGA - the 2nd nano controls 3 weight sensors and sends data via serial port to the mega that sends for Nextion 1 NEXTION display connected to the Mega 1 OLED display connected to the 2nd arduino (shows data from weight sensors. It was a little confusing, but it works without crashes! Tks !!
@paulocella9745
@paulocella9745 4 жыл бұрын
@@CuriousScientist TKS !! I did it as suggested and I'm using an arduino nano only for the engine, the arduino mega controls the display and data for the engine and is working without crashes! My project now has: 1 MEGA arduino (I need 3 serial ports) which is central (receives and sends data, to the Nextion and to the engine arduino and to the arduino with weight sensors) 2 nano arduinos: the 1st nano controlling the motor and connected via serial to MEGA the 2nd nano controls 3 weight sensors and sends data via serial port to the mega that sends to Nextion 1 NEXTION display connected to the Mega 1 OLED display connected to the 2nd arduino (shows data from weight sensors. It was a little confusing, but it works without crashes! Tks !!
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Nice one, I am extremely happy that you figured this out! I will also share some ideas about this next week. I already have this implemented for years (see my DIY tensile testing machine), but I haven't though about publishing it. Now I can see that this can be interesting for others too. Cheers!
@amirmkr547
@amirmkr547 2 жыл бұрын
THANK YOU SO MUCH, THAT IS THE BEST CODE FOR STEPPER MOTORS. Would you please give some advice on how to give the required Torque to the motor? My guess is to make a lookup table. I have an MST342 Stepper and I want to make a closed-loop to damp the vibration on a 100 kg flexible robot. The controller that I have designed calculates the amount of Torque to be given to the motor. also, there is no encoder on the motor.
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Thanks! You need to be able to measure the torque somehow to be able to control it.
@amirmkr547
@amirmkr547 2 жыл бұрын
@@CuriousScientist Can Arduino measure the torque by the current, since in DC motors T=c*I and c is a constant?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
If you know the value of the constant, then you can just use an external circuit that can measure the current with high enough precision and program the formula so you can calculate the torque. Looks straightforward.
@amirmkr547
@amirmkr547 2 жыл бұрын
@@CuriousScientist I don’t want to use external circuit, since they are already built and packed. For stepper motors there is a curve between full-step/s and Torque and that’s in the nominal current. In my case that’s 7nm in 1000 fstep/s with nominal 9.5 phase current. I guess there should be some way to program Arduino to adjust the current to give 5 nm in 1000 fstep/s.
@CuriousScientist
@CuriousScientist 2 жыл бұрын
I would think that those curves are also a function of load to some extent. Different load would require torque that would also result in different speed, I guess. I am not entirely sure. But if you trust the motor and you say it will have the torque at a certain speed, or the other way around, then it is just simple mathematics. Since you dictate the speed, you can use the value of that variable to calculate the torque.
@rajatgupta258
@rajatgupta258 2 жыл бұрын
which interface are you using, I am not getting any window for writting comment in IDE
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Visual Studio with VisualMicro.
@nguyenluu3082
@nguyenluu3082 3 жыл бұрын
Can you explain how can we check the running status of motor while using serial ?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
If you are controlling the motor you should know when it is running. If it is more or less automated, then you can use the isRunning() function from the accelstepper library to know if the motor is running. The isRunning() function returns a boolean.
@Lee.coopee
@Lee.coopee Жыл бұрын
Hello sir ,this code is works perfectly to me ...as you said in this video i need a suggestion from u that my Current location of the motor is : 90935 displayed in the serial monitor ....in this circumstances when i get to the home postion it runnning to the home position slowly...while returning back how can i speed up the home position ?? or whether i want to add any line in the code ? for getting speed to the home position sir? If i want to add the code means ...what command line i have to insert sir? kindly reply me sir.....
@CuriousScientist
@CuriousScientist Жыл бұрын
Hi! Change the speed with the setSpeed() command to the preferred speed value.
@RixtronixLAB
@RixtronixLAB Жыл бұрын
Creative video, well done, thanks for sharing it :)
@CuriousScientist
@CuriousScientist Жыл бұрын
Thank you!
@ashishsahu2347
@ashishsahu2347 3 жыл бұрын
SOund is coming from the motor inside but the shaft is not moving?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Sometimes, depending on the setup the motor gives a buzzing/humming sound when the coils are powered. It is "normal", or at least, not unusual.
@harikrishna-zo1us
@harikrishna-zo1us 2 жыл бұрын
Great explanation. Here I have to ask two questions. 1) If I want to add one more motor(not in this example ... taking Rough case).How can add 2nd Stepper motor code? and can rotate the each stepper motor independently with some interval? 2) If add sensor then how can give the command line at last?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Thank you! 1) I have several videos with 2 motors, check my channel to see how I implemented their control. They can move independently and simultaneously. 2) In the same way as you would give any other command. I have many explained examples, check them carefully.
@harikrishna-zo1us
@harikrishna-zo1us 2 жыл бұрын
@@CuriousScientist not by using Joystick . if I want to add one more motor what changes I have to do accordingly? for example I want to move the 1st motor 90 degrees cw and then 2nd 90 degrees cw with delay 1 st motor come back to 90degrees ccw and then 2nd motor also 90 degrees ccw. how can I add this type of case in code.
@CuriousScientist
@CuriousScientist 2 жыл бұрын
The code is still the same, it does not matter what provides the input, whether it is a joystick, a command or some other thing... Also, you just defined an algorithm in your comment, you just need to code it, it is not too difficult.
@vp.8181
@vp.8181 2 жыл бұрын
the disable command does not work. Yours everything was correct but we need to add a pin as digital pin and connect enable negative at it. With this we can disable the holding torque and rotate the shaft with hand while on power mode. Thanks a lot man. I am just very grateful to you. Keep it up.
@vp.8181
@vp.8181 2 жыл бұрын
with enable pin high we can disable and with low command we can enable . no changes in rest of wire connections and code only u need to add this new digital pin (eg-7) and mention in setup and call in loop.
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Thanks for the feedback. Seems like I forgot to add this part to the code. But I am glad that you've figured it out!
@vp.8181
@vp.8181 2 жыл бұрын
@@CuriousScientist All credits to you sir ❤️ .. i am also working on a stepper based industrial arm can u please help out with the motor that I should use . Because I have done some calculation for stepper kgcm and i will have to use nema 42 -25Nm motor for the base motor so that it can hold atleast 8 kg at a distance of 35 cm .... So please can u make a video in which how to calculate which motor to use using stepper specs.
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Sorry, but I don't make videos on request for free. You can always read the datasheet of the motors where they show the torque vs speed chart.
@vp.8181
@vp.8181 2 жыл бұрын
@@CuriousScientist No issue sir and thank you
@unlimitedtechniqs3395
@unlimitedtechniqs3395 3 жыл бұрын
hi i want to run a nema 23 with tb6600 and flysky rc controller can you give some idea for tis and also code thank-you.
@CuriousScientist
@CuriousScientist 3 жыл бұрын
I already answered you under the other video, you don't need to write everywhere. And you should watch the videos and read the descriptions of them since everything is provided in the mentioned places...
@mouneeshellur8156
@mouneeshellur8156 2 жыл бұрын
i have connected my TBB6600 motor driver pins direction+=3 and pulse+=2 in Arduino using ur code can I run the stepper motor and my lead screw width is 600 mm and 8mm diameter and I am using nema 23
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Just follow the exact instructions which I tell in the video. The driver should work with the motor you mentioned.
@apdevoocomany1179
@apdevoocomany1179 4 жыл бұрын
Hi this Version of your code is not working at all. The previous Version ie with the stop switch is working fine . The main differnce i see it that you have used switch case instead of Ifs . I have copied your coded exactly as in the previous versios . So i dont know why its not working . The Commands are printed on the Serial Monitor but the motor does no move at all . the connections are as in the previous versions . IF i download the privious version then it works . so its puzzling . can you please help . many thanks .
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Hi! I will check it this weekend and come back with an answer. Cheers!
@apdevoocomany1179
@apdevoocomany1179 4 жыл бұрын
Many Thanks look forward it .
@CuriousScientist
@CuriousScientist 4 жыл бұрын
@@apdevoocomany1179 I checked the code, and it works after a tiny modification. Another viewer pointed out that the 'default' case should be removed from the switch-case part of the code. So, if you comment out the runallowed = false; and the stepper.disableOutputs(); parts and upload the code, it should work. However, it is puzzling for me to see why it is not working. I basically recorded the two videos simultaneously (the code demonstration and the moving of the stepper motor) and it was working with the presented code. Maybe something changed in the libraries or something. I changed the code in PasteBin too and added some comments there. PS: Do not just copy and paste everything, try to think like the other viewer, Enrique did! He found the error and he fixed it himself.
@injamulhaque5439
@injamulhaque5439 Жыл бұрын
Sir is it vibrant when move .
@CuriousScientist
@CuriousScientist Жыл бұрын
You may use too weak power supply or want to run at a too high speed or acceleration.
@saifm.shakir8665
@saifm.shakir8665 2 жыл бұрын
Hello please answer me I am planning to make Stepper Motor + stop Switch + speed controller Can I make it in one circuit ??? 🥲🥲🥲🥲🥲
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Hi. Since you have to ask it, I don't know if _you_ can make it, but it is possible to make it. I have several video examples with the described features.
@omidsharifi974
@omidsharifi974 4 жыл бұрын
Hi man thanks for your nice tutorial i use and change your code for my DIY slider camera and every thing seems OK . one problem when i use stepper.disableOutputs(); motor immediately stop but when press any button and use stepper.enableOutputs(); motor first finish last command and then start new command i hope that i can explain my situation correctly i use nema 17 - uno - cnc shield ver3 - and a4988 driver
@omidsharifi974
@omidsharifi974 4 жыл бұрын
this is my code : #include #include AccelStepper stepper(1, 2, 5); SoftwareSerial Bluetooth(4, 3); const byte enablePin = 8; bool newData, runallowed = false; // booleans for new data from serial, and runallowed flag char receivedCommand; long Set_Speed = 3000; long A_position; long B_position; void setup() { pinMode(enablePin, OUTPUT); digitalWrite(enablePin, HIGH); Bluetooth.begin(9600); Serial.begin(9600); //define baud rate //setting up some default values for maximum speed and maximum acceleration Serial.println("Default speed: 400 steps/s, default acceleration: 800 steps/s^2."); } void loop() { //Constantly looping through these 2 functions. //We only use non-blocking commands, so something else (should also be non-blocking) can be done during the movement of the motor checkSerial(); //check serial port for new commands RunTheMotor(); //function to handle the motor } void RunTheMotor() //function for the motor { if (runallowed == true) { digitalWrite(enablePin, LOW); //enable pins stepper.run(); //step the motor (this will step the motor by 1 step at each loop) } else //program enters this part if the runallowed is FALSE, we do not do anything { digitalWrite(enablePin, HIGH); //disable outputs return; } } void checkSerial() //function for receiving the commands { if (Bluetooth.available() > 0) //if something comes from the computer { receivedCommand = Bluetooth.read();// pass the value to the receivedCommad variable Serial.println(receivedCommand); newData = true; //indicate that there is a new data by setting this bool to true if (newData == true) //we only enter this long switch-case statement if there is a new command from the computer { switch (receivedCommand) //we check what is the command { case '1': //when press left button slder move left runallowed = true; Serial.println("Slider Move To Left"); //Print the message GoLeft();// Run the function break; case '2': //when release left button stepper.stop();//stop motor digitalWrite(enablePin, HIGH); break; case '3': //when press left button slder move Right runallowed = true; Serial.println("Slider Move To Right"); //Print the message GoRight();// Run the function break; case '4': //when release Right button stepper.stop();//stop motor digitalWrite(enablePin, HIGH); break; case '5': // set current position as A_position . runallowed = false; //we still keep running disabled Serial.print("Current location of the motor: ");//Print the message Serial.println(stepper.currentPosition()); //Printing the current position in steps. A_position = stepper.currentPosition(); break; case '6': //set current position as B_position . runallowed = false; //we still keep running disabled digitalWrite(enablePin, HIGH); //disable power Serial.print("Current location of the motor: ");//Print the message Serial.println(stepper.currentPosition()); //Printing the current position in steps. B_position = stepper.currentPosition(); break; case '7': //slider mfirst go to A then move to B // // runallowed = true; // Serial.println("Slider Move A To B"); //Print the message // GoA(); // Go To A // digitalWrite(enablePin, LOW); //disable power stepper.setMaxSpeed(5000); //SPEED = Steps / second stepper.setAcceleration(3000); //ACCELERATION = Steps /(second)^2 stepper.moveTo(A_position); while (stepper.currentPosition() != A_position) // Full speed up to 300 stepper.run(); // stepper.stop(); // Stop as fast as possible: sets new target // stepper.runToPosition(); Serial.print("Current location of the motor: ");//Print the message Serial.println(stepper.currentPosition()); //Printing the current position in steps. // Now stopped after quickstop // Now go backwards stepper.setMaxSpeed(Set_Speed); //SPEED = Steps / second stepper.setAcceleration(Set_Speed); //ACCELERATION = Steps /(second)^2 stepper.moveTo(B_position); while (stepper.currentPosition() != B_position) // Full speed basck to 0 stepper.run(); // stepper.stop(); // Stop as fast as possible: sets new target // stepper.runToPosition(); Serial.print("Current location of the motor: ");//Print the message Serial.println(stepper.currentPosition()); //Printing the current position in steps. // Now stopped after quickstop break; case '8': //decrease speed runallowed = false; //we still keep running disabled, since we just update a variable digitalWrite(enablePin, HIGH); //disable power Set_Speed = Set_Speed - 290; //receive the acceleration from serial Serial.print("New Speed value: "); //confirm update by message Serial.println(Set_Speed); //confirm update by message break; case '9': //increase speed. runallowed = false; //we still keep running disabled, since we just update a variable digitalWrite(enablePin, HIGH); //disable power Set_Speed = Set_Speed + 290 ;//receive the acceleration from serial Serial.print("New Speed value: "); //confirm update by message Serial.println(Set_Speed); //confirm update by message break; default: runallowed = false; //we still keep running disabled stepper.disableOutputs(); //disable power break; } } //after we went through the above tasks, newData is set to false again, so we are ready to receive new commands again. newData = false; } } void GoLeft() { stepper.setMaxSpeed(Set_Speed); //SPEED = Steps / second stepper.setAcceleration(6000); //ACCELERATION = Steps /(second)^2 stepper.moveTo(stepper.currentPosition()+75000); //set abolute distance to move } void GoRight() { stepper.setMaxSpeed(Set_Speed); //SPEED = Steps / second stepper.setAcceleration(6000); //ACCELERATION = Steps /(second)^2 stepper.moveTo(stepper.currentPosition()-75000); //set abolute distance to move }
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Hi! Sorry, but I won't go through your code, as I do not have time and resources to do these kinds of works for free. However, one part of your sentence struck me and I think I know what is your issue. You said you use the stepper.disableOutputs() to stop the motor. That is not correct! That just disables the outputs but does not stop/finish the instruction. It just "removes the power" from the outputs for the stepper motor. The rest of the command will be suspended and it will be continued once you enable the outputs again, because the motor still haven't reached the target position. The correct way is to use stepper.stop() to stop the motor because this command resets the target position to the position (or very close to that) where the command was given. Also, avoid using Serial.println when running the motor as it will slow down your motor.
@omidsharifi974
@omidsharifi974 4 жыл бұрын
@@CuriousScientist Thanks man but when use stepper.stop() then i can't stop motor immediately for example when motor go to end of the rail and press end switch
@CuriousScientist
@CuriousScientist 4 жыл бұрын
I don't really understand what you mean. The stepper.stop() should stop almost immediately.
@dantocvn1
@dantocvn1 2 жыл бұрын
@@omidsharifi974 Try to find some where to your code then reset the position to zero.
@EbbyBuchta
@EbbyBuchta Жыл бұрын
This was super helpful thank you. I was wondering if there is a way to manipulate it to go the needed amount of steps in a certain amount of time. I have almost an identical setup but I need to go about 7 rotations per second (about 420 RPM). Then change directions and do the same speed and amount steps back to the origin and wait a few seconds until doing it again. Any suggestions?
@CuriousScientist
@CuriousScientist Жыл бұрын
Sure, it is absolutely possible. And it is done in the same way as you just described. You tell the code to go a certain distance with a certain speed, and then just change the parameters. But 420 RPM is somewhat high, so you'll need acceleration and maybe even a larger motor depending on the load.
@electronicsideas1361
@electronicsideas1361 3 жыл бұрын
How to run nema17 stepper motor with increasing speed
@CuriousScientist
@CuriousScientist 3 жыл бұрын
By accelerating it.
@nilugajjar182
@nilugajjar182 Жыл бұрын
Jow can I contact you I am from Canada I need your help how
@CuriousScientist
@CuriousScientist Жыл бұрын
You just contacted me by writing comment. :)
@Robotica101
@Robotica101 11 ай бұрын
can you please give the circuit for pinout from tb6600 to arduino uno
@CuriousScientist
@CuriousScientist 11 ай бұрын
It is available in many of my videos and blog articles. Please look at my website.
@Robotica101
@Robotica101 11 ай бұрын
@@CuriousScientist thanks for the instant reply . Love from india
@CuriousScientist
@CuriousScientist 11 ай бұрын
You're welcome!
@mouneeshellur8156
@mouneeshellur8156 2 жыл бұрын
bro did u use arduino 1.8 software for code
@CuriousScientist
@CuriousScientist 2 жыл бұрын
For presenting my code, either I use the general Arduino IDE, or sometimes I also use Visual Studio. For developing more complex code, I use Visual Studio with Visualmicro.
@MohammedIbrahim-bc8hw
@MohammedIbrahim-bc8hw 3 жыл бұрын
Thanks for the amazing effort that you put in those videos. How do you calculate the linear velocity of the power screw? Do you multiply the pitch*rpm*pi/180?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi and welcome! The linear speed is calculated in the following way: You know that you stepper motor has to do a certain number of steps to rotate the shaft 1 full turn (360°). Usually, this is 200 steps. Supposing that you use a "full step" microstepping, 200 steps of the motor will rotate the shaft of the stepper motor 1 turn. If you for example want to reach 60 RPM, that is 60 turns per minute -> 1 turn per second, so 200 steps/second. Now, we move to the lead screw. The lead screw's most important parameter here is the pitch. If the pitch is 8 mm (usually a 4-start lead screw) it means, that one turn of the shaft will cause 8 mm linear displacement of the nut. So, for example 200 steps will move the nut 8 mm. 200/8 = 25 -> 25 steps will move 1 mm. Now you know the steps to move 1 mm as well as the speed. 25 steps/s on the motor is 1 mm/s on the shaft. So, with full step microstepping, the magic number is 25. Example: you want to move 14.3 mm -> 14.3 mm * 25 steps/mm = 357.5 steps. Similarly, if you need for example 10 mm/s speed, then you need to move 10 mm/s * 25 steps/s = 250 steps/s.
@bitsurfer0101
@bitsurfer0101 2 жыл бұрын
What was the approximate total cost for the project?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
You can easily estimate it yourself because I published all the parts I used. Sorry, but I don't have the time to summarize it.
@mattivirta
@mattivirta 6 ай бұрын
stepper motor 5-50$ ,driver 8-14$ ,power supply 10-30$ ,arduino 3-12$ ,hardware what need build. screws,linear rails,bearings, etc.
@paulocella9745
@paulocella9745 4 жыл бұрын
how to configure the motor to run continuously in one direction and stop only at the "S" command?
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Check my other stepper motor-related videos, you will find the answer in one of the videos/source codes. Also, if you watch my videos carefully, you will be able to write any kind of code for stepper motors easily.
@aashishsahu5448
@aashishsahu5448 3 жыл бұрын
have you code for three motors? this is only for one
@CuriousScientist
@CuriousScientist 3 жыл бұрын
You can easily expand it to three based on my other examples.
@aashishsahu5448
@aashishsahu5448 3 жыл бұрын
@@CuriousScientist where is your other examples can you share link hear
@CuriousScientist
@CuriousScientist 3 жыл бұрын
I have a whole playlist of stepper motor related videos on my channel.
@코택룡룡죽겟다
@코택룡룡죽겟다 2 жыл бұрын
Hi, I am an electronic engineering college student living in Korea, and Arduino has a problem with slowing down, so can you check the code?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Hi! What do you mean?
@코택룡룡죽겟다
@코택룡룡죽겟다 2 жыл бұрын
@@CuriousScientist We're having a hard time writing Arduino codes that accelerate each using five motors. Can you take a look at our codes?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Sorry, but I am not a free support service. I can't just troubleshoot other people's issues for free.
@saeidkasraeian190
@saeidkasraeian190 3 жыл бұрын
Help me please 😭 I have a project like this with some differences. If the 0 position was in bottom and by pressing the button once it starts to Go up and down.i forgot explain that there are two micro switch in top and bottom.when object hits every micro switch it will change the direction until i press the button for second time.and by this the object goes to 0 position automatically and finish.🙏 Please tell me how programming it. Thanks a lot 🌹🙏 For more information when I press for second time, the object might be very point of the path.imagine we don't know where is the object.and when we press the button for second time the object goes to homing point or zero point.
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi! Watch my other, more recent tutorials, I talk a lot about limit switches and their usage in different cases.
@saeidkasraeian190
@saeidkasraeian190 3 жыл бұрын
Thanks 🥴🙏🌹
@saeidkasraeian190
@saeidkasraeian190 3 жыл бұрын
Unfortunately I can't find it. It's very important for me to make it Please help me.thank you very much 🙏🙏🙏
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Sorry, but I won't write a code for you for free. I am not a support service.
@saeidkasraeian190
@saeidkasraeian190 3 жыл бұрын
Ok my friend.there were many videos in your KZbin for free and why now you don't do it?😜however i will pay you🙏.how does it cost?
@Top-notchShorts
@Top-notchShorts 4 жыл бұрын
Nice video!
@CuriousScientist
@CuriousScientist 4 жыл бұрын
Thank you! Don't forget to subscribe!
@dikanoviandi5524
@dikanoviandi5524 2 жыл бұрын
Motorcycle sttepper nema?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
A what? I used a NEMA17.
@RahmanIITDelhi
@RahmanIITDelhi 2 жыл бұрын
How to add buttons with these L and all functions pls tell that..as well..
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Check my KZbin channel more carefully...as well.
@RahmanIITDelhi
@RahmanIITDelhi 2 жыл бұрын
@@CuriousScientist ok..
@RahmanIITDelhi
@RahmanIITDelhi 2 жыл бұрын
In one video u have shown in one video about all the controller DRv and A4988 don't need different coding ...but TB6600 also will work same for that same source code .?
@CuriousScientist
@CuriousScientist 2 жыл бұрын
Why don't you watch my videos? The answer is already there in my videos. kzbin.info/www/bejne/lZbRiauZd7mCmq8
@RahmanIITDelhi
@RahmanIITDelhi 2 жыл бұрын
@@CuriousScientist yeah got it thanks.... actually I wanted to feed wire ....with length of 150 mm and cut it..with pneumatic cylinder...how can I synch both...can you suggest
@diytricks7234
@diytricks7234 3 жыл бұрын
Can you please share the IDE name ?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
Hi! It is Microsoft Visual Studio with the Visual Micro extension.
@shrill_kill9929
@shrill_kill9929 Жыл бұрын
Thanks mate
@CuriousScientist
@CuriousScientist Жыл бұрын
It is my pleasure!
@TheWindtalker2011
@TheWindtalker2011 3 жыл бұрын
can increase the speed 4000rpm?
@CuriousScientist
@CuriousScientist 3 жыл бұрын
No. The max RPM value of a NEMA 17 is around 1800 RPM.
@TheWindtalker2011
@TheWindtalker2011 3 жыл бұрын
@@CuriousScientist thnx sir coz i try many times to change the code but cannot do any change
@CuriousScientist
@CuriousScientist 3 жыл бұрын
You should keep in mind that stepper motors are for precision operation and not really for high speed operation. Use some DC servo if you need such high speeds.
@andrewdollins2321
@andrewdollins2321 Жыл бұрын
No that is not a good library it is not giving you accurate positions it is overshooting by alot.
@CuriousScientist
@CuriousScientist Жыл бұрын
Are you sure it's not your system? I haven't noticed any positioning issues with the library yet.
Homing with the AccelStepper library and a limit switch
17:09
Curious Scientist
Рет қаралды 64 М.
Big Stepper Motors with Arduino
29:43
DroneBot Workshop
Рет қаралды 1,2 МЛН
FOREVER BUNNY
00:14
Natan por Aí
Рет қаралды 34 МЛН
Twin Telepathy Challenge!
00:23
Stokes Twins
Рет қаралды 130 МЛН
Long Nails 💅🏻 #shorts
00:50
Mr DegrEE
Рет қаралды 18 МЛН
TB6600 and Arduino - Wiring and demonstration
15:39
Curious Scientist
Рет қаралды 100 М.
Arduino UNO - cheap vs. expensive
10:39
upir
Рет қаралды 23 М.
Build a CNC Controller with Arduino, TB6600 and GRBL
14:19
Kalaakaar Makerspace
Рет қаралды 342 М.
Coordinated stepper motor control (arduino)
47:11
iforce2d
Рет қаралды 358 М.
Arduino with TB6600 using AccelStepper library
27:33
Curious Scientist
Рет қаралды 70 М.
09  Stepper Motors interfaced with C# - CNC Drawing Machine | Embedded Systems Application
25:51
How to Use Arduino Interrupts The Easy Way
33:28
Rachel De Barros
Рет қаралды 92 М.
FOREVER BUNNY
00:14
Natan por Aí
Рет қаралды 34 МЛН