Arduino CNC Shield v3 Problem - Motors Shivers But Doesnt Move

Dear Friends

Good day to you all, i have purchased a CNC v3 shield with pololu 4988 drivers, i have connected every thing carefully and burned the GRBL v0.9 to the arduino. then i connected the arduino to the laptop and started the program universal GRBL sender.

the motors starts shivering in their place and will not move. i have tried to switch the wire a1 b1 , a2, b2 but no success ? i wonder what might be the problem ?

Post a link to the datasheet for your motors.

Have you the current limit potentiometers on the A4988s correctly adjusted. The Pololu A4988 web page explains how.

What motor power supply have you (volts and amps)

You could try this Simple Stepper Code to test one of the motors. You will need to figure out what I/O pins are used by the shield for step and direction.

If that works you will at least know that things are connected properly.

…R
Stepper Motor Basics

First thing to be careful of - don't swap motor wires with the shield powered up, that can trash the drivers. That also means you must wire the motor wires securely (plug/socket, solder, never just wound together).

Second thing - never guess your motor connections, get out a multimeter, determine which wires are connected and make sure one winding goes to the A terminals and one goes to the B terminals. You'll also be checking if a winding is broken that way and that the winding resistance is what you were sold.

And as mentioned you must set the current right - it can be somewhat less than the rated current, but start with it set to the nominal value.

Also do you have an adequate power supply?

Dear Friends

Good day to you. it has been a while since i last logged in

i tried the techniques you suggested but nothing worked

here this is the tutorial from pololu on how to adjust the vref on A4988

and take a look at this video that’s what i got still the same problem

This is the motor I am using

This Is The Vref Reading After Calculation

Current Limit = Vref x 2.5
therefore
Vref = Current Limit / 2.5
Vref = 0.6V

:frowning:

I can't make any sense of your second video and I don't understand why you have posted a link to the 9 minute video. I'm sure you are a very nice guy but I'm not going to watch 9 minute videos on your behalf.

Make a simple pencil drawing showing how YOU have everything connected and post a photo of the drawing.

Also post the exact program that YOU are using for testing.

You did not say what power supply you are using for the motor (volts and amps).

It is much easier to help if you respond quickly while I can still remember why I wrote a previous Reply.

It is also much easier if you post images in this Forum. See this Image Guide

...R

For This Build I Am Using GRBL v0.9 From Github & Flashed It To The Arduino

Download Link : https://github.com/grbl/grbl

Software : GRBL Controller

|500x271

This Is A Picture Of The Motors I Am Using

|500x281

This Is The IC I am Using Pololu A4988

|500x281

Winding Connections To The Stepper Motor

|500x302

Box & Connectors

|500x281

RED - 2B BLUE - 2A YELLOW - 1A BLACK - 1B

Motors Wire & Connectors

|500x281

2B - Core Wire #1 2A - Core Wire #2 1A - Core Wire #3 1B - Core Wire Green/Yellow

Motor Winding Wires White / Red = Winding One Orange / Black = Winding Two

For Power I Am Using An ATX Power Supply 12V @16Amps Feeding It To The CNC Sheild

And Based On The Data Shown On The Motor & Datasheet Of Pololu A4988

Phase Voltage : 2.25V Phase Amp : 1.5A

Current Limit = Vref x 2.5

if the current limit was 1.5A then, 1.5/2.5 = 0.6v for Vref

|500x281

Even After Many Trials Of Swaping The Phase Wires Several Time To Get It Moving Sadly The Result Is Shown In The Video Link Below

The Link Of The Video

So I am Hoping That You Could Help Me Solve The Problem

To play the video, click the image:

If you are having problems you need to start with a program that is very much simpler than GRBL. Have you tried the Simple Stepper Code that I linked to in Reply #1.

If this was my project I would stay with that very simple code until I had my motor working properly.

The Pololu wiring diagram that you posted is how it SHOULD be done. I was hoping you would take the trouble to draw a diagram of what YOU have ACTUALLY done. The business of making the drawing can help to find problems.

...R

Power everything down and measure the resistance between the two wires for the A winding at the DRV8825 module. Then repeat for the B winding. You'll be ensuring you have wired things correctly end-to-end. That sort of vibration can happen for several reasons:

1) Trying to step too fast and/or without a modest enough acceleration ramp. 2) only one winding connected 3) windings cross-connected 4) using full steps at the resonant frequency without any physical damping (such as a real load)

Definitely try to use a simple test program, verify one DRV8825 module at a time, ditto for your motors, before connecting everything together.

MarkT: Power everything down and measure the resistance between the two wires for the A winding at the DRV8825 module. Then repeat for the B winding. You'll be ensuring you have wired things correctly end-to-end. That sort of vibration can happen for several reasons:

1) Trying to step too fast and/or without a modest enough acceleration ramp. 2) only one winding connected 3) windings cross-connected 4) using full steps at the resonant frequency without any physical damping (such as a real load)

Definitely try to use a simple test program, verify one DRV8825 module at a time, ditto for your motors, before connecting everything together.

Thanks For That I Tested It The Way You And Robin Sujested

Watch The Test Video

well i have done the stepper motor example and the motor worked perfectly with no problem its moving in the right direction. but when i switch bact to the sheild and give G0 Y10 for example the same thing hapens its shivering in its place

i guess its in the settings of my arduino

here is an image of my settings

|469x500

might be as you said the acceleration thing or the movment

but here is the problem i couldnt find the datasheet of the motor its too old and i baught it second hand

wolf4ce: worked perfectly with no problem its moving in the right direction. but when i switch bact to the sheild

I don't understand what you mean by switch back to the shield? What were you using when the motor was working?

Don't post pictures of settings. Post them as text so we can read them. And what are the settings from?

...R

Robin2: I don't understand what you mean by switch back to the shield? What were you using when the motor was working?

Dear Friend

in a previous reply you asked me to build a circuit with Arduino dedicated for only running a stepper motor to find out why my motor wasn't spinning and keep on shivering. and you posted a link to the post. so i have take a look at the code and burned it to an Arduino nano on a test board and ran the motor perfectly with a pololu driver its on the video i posted prior to your reply

when i made sure all pololu drivers worked. which i am using on the shield by unplugging them from the shield to the test board running the program you suggested.

now till here all is fine

i put back all the pololu drivers back to the sheild. and connected the motors to the sheild and made sure all are connected perfectly end to end.

i tried to test a gcode command to run the y motor which is G0 Y10 but the motor kept on shivering in its place and didn't move on any direction. i made sure all vref are suitable for the motors.

now after all this i came to a conclusion that i guess that it might be the settings of the gcode interpreter in the Arduino

here take a look at the setting and plz pinpoint what i have to change for a test.

Grbl 0.9j ['

for help] $ (view Grbl settings) $# (view # parameters) $G (view parser state) $I (view build info) $N (view startup blocks) $x=value (save Grbl setting) $Nx=line (save startup block) $C (check gcode mode) $X (kill alarm lock) $H (run homing cycle) ~ (cycle start) ! (feed hold) ? (current status) ctrl-x (reset Grbl) ok ok $0=10 (step pulse, usec) $1=25 (step idle delay, msec) $2=0 (step port invert mask:00000000) $3=0 (dir port invert mask:00000000) $4=0 (step enable invert, bool) $5=0 (limit pins invert, bool) $6=0 (probe pin invert, bool) $10=3 (status report mask:00000011) $11=0.010 (junction deviation, mm) $12=0.002 (arc tolerance, mm) $13=0 (report inches, bool) $20=0 (soft limits, bool) $21=0 (hard limits, bool) $22=0 (homing cycle, bool) $23=0 (homing dir invert mask:00000000) $24=25.000 (homing feed, mm/min) $25=500.000 (homing seek, mm/min) $26=250 (homing debounce, msec) $27=1.000 (homing pull-off, mm) $100=250.000 (x, step/mm) $101=250.000 (y, step/mm) $102=250.000 (z, step/mm) $110=100.000 (x max rate, mm/min) $111=100.000 (y max rate, mm/min) $112=100.000 (z max rate, mm/min) $120=10.000 (x accel, mm/sec^2) $121=10.000 (y accel, mm/sec^2) $122=10.000 (z accel, mm/sec^2) $130=200.000 (x max travel, mm) $131=200.000 (y max travel, mm) $132=200.000 (z max travel, mm) ok ok ```

wolf4ce: i put back all the pololu drivers back to the sheild. and connected the motors to the sheild and made sure all are connected perfectly end to end.

Thanks for clarifying. I had not realized you had removed the A4988s from the shield.

Before trying the complex GRBL program I would try the A4988s in the shield using my simple program.

I don't see anything in your list of settings that is likely to be a problem but I am not familiar with GRBL.

...R

I am not yet very familiar with GRBL, but I am pretty sure that - if the wiring of the motors is ok (we will come to this as a first check point) - your problem has something to do with the grbl and/or A4988 settings.

Before we come to that point: Could you pls make sure that you really got the right connections at your stepper motor.

Aunt Google told me that your motor belongs to Shinano's 55D series. When I look at the datasheet (admitted: your motor looks much older), then I see that the motors are 2 Phase Hybrid Stepping Motors and come with 6 wires. I guess they only modernized some mechanical and electrical things but not the wiring colours.

Could you check if there are 6 wires and if so, then I bet with you that you only connected half coils, as the white and black wires are the middle connections (half coil) of the two "full coils".

The datasheet says: A1 - Middle - A2 B1 - Middle - B2 Brown - Black - Orange Red - White - Yellow

So, if you find those connections,

  1. Measure the resistance between Brown and Orange this should give you 2x resistance compared to Orange - Black which you used in the video; same value should apply to measuring Red/Yellow
  2. Repeat the simple test which you did according to Robin2's proposal with wiring the full coils (just leave Black and White unconnected)
  3. Remember, what microstepping you set when doing the simple test in 2. -> have a look at the A4988 microstepping table on Pololu's web site (you can find a copy of it in reply #4 here.
  4. Make sure you use the same microstepping when putting the A4988 back into the shield. This link might be useful as well.
  5. Make sure that you use a GRBL version which is compatible with your shield. I don't know exactly, but there are a lot of different versions out and not all of them have been reviewed as being ok, if I remember right. Although this point might not apply for you as I saw in your previous postings that you can "talk" with the GRBL firmware loaded in your Nano.
  6. Give other GRBL controller software a chance - there are some alternatives available. BTW my favourite is chilipeppr.com - a browser based GRBL controller as I work with different operating systems and can use it on my Mac, my Linux and on my Windows machines.
  7. If you compare Robin2's simple stepper program which worked (maybe only on half coils, but it worked) with your stepper, you will notice that the pulse width and idle delay parameters are pretty far away from your GRBL settings. So I would modify:
  8. $0=20 which sets the pulse width to 20 us (compare with: int pulseWidthMicros = 20; // microseconds)
  9. $1=250 which sets the idle time in milliseconds between steps (int millisbetweenSteps = 250;)

Its working its finally working thank you guys Wohoo. its time to try making PCB

but i have to adjust the settings. could you please help me calculate some stuff ?

you see my cnc machine is actually a chinese pcb machine and when i baught it it came with a parallel port card to control the motors.

now i changed it to Arduino its much more better and neater

but now. i would like to make the configration for movment

I have 1 mm ditance between screw teeth

in order to make the machine move 1cm = 10mm

i gave a command of G0 X10 its moving right but the distance is wrong please help me calculate this stuff since i am new to this.

wolf4ce: i gave a command of G0 X10 its moving right but the distance is wrong please help me calculate this stuff since i am new to this.

You have not told how far it actually moves so it is a bit hard to help.

I think there is a GRBL setting for steps per mm (or equivalent)

...R

Congratulations!

Pls let us know what did the trick to get it working? Think of all the newbies (and remember your own situation) who are confronted with the same or similar situation and still don't know what exactly got your system up and run.

I have 1 mm ditance between screw teeth

in order to make the machine move 1cm = 10mm

Calculation for stepping:

  1. Yo need to know how many (FULL) steps your motor needs to turn 360 degrees (assumption: 200)
  2. If you are using microstepping, take the divisor and multiply this with the number in 1. (assumption: 1/4)
  3. Take the pitch (hope this is the correct translation) of your lead screw (in your case: 1mm/rev) and you can calculate how many steps you need to move the axis by 1mm:
    Steps/mm = 200 * 4 = 800

GRBL commands $100 - $102 set the parameters for x, y, z like so:
$100=800 (x, step/mm) ← by keying in the commands in GRBL, omit the comments in brackets
$101=800 (y, step/mm)
$102=800 (z, step/mm)

If this is not exactly correct, but hopefully close to your expectations, than you have to correct these values.
E.g. if you tell one axis to go 100mm and it actually goes 95 mm, then you have to correct the formual like so:

800 * (100/95) = 842.105 → this would then be the correct value to be stored in $100 - $102.

Direction:

its moving right but the distance is wrong

There are two options for you to correct this:

  1. you change the connection order of ONE pair of the stepper which goes into the wrong direction; e.g. change A1 with A2 (and LEAVE the B-coil connections untouched) - this will change the direction of the motor
  2. you study how to program GRBL (which would be my favourite and you might need it anyway to tune your system - there are a lot of parameters to think of!
    So look at this link.

Changing directions: → $3 command
Read carefully through the examples which are well explained.
(-> Grbl’s $x=val settings and what they mean)

@wolf4ce: Still waiting for your feedback ...

Sorry to keep you waiting i was so exited and i am experimenting

1st : Lets talk about the problems

Main Problems where from the connectors between the wires and CNC sheild. because i bought bunch of duo punt female housings and pins and krimped them by my self. apparently they had bad connectivity and didn't connect one of the winding. and some where semi cut. so even though i checked them will multi meter for continuity test they showed good results but i always had the shivering issue.

test #1

in order to clear my head that there was nothing wrong with the pololu A4899 drivers i built the simple stepper motor sketch that runs the motor and i implemented it on a test board and wired the arduino and pololu drivers and removed the duo punt connector and feed the wires directly to the test board. the motor started running without a problem. (test1 success "drivers and motors are ok")

test #2

i have put back the arduino and plugged it into the shield and ran the very same program of the test board on the cnc shield. the motors gave a severing issue again. at the beginning i thought it was the shield that had the issue. but i feed the motor wired again to the connector without the duo punt female connector the motor ran with not problems. then only i know my wiring had the problem (test2 success "shield is ok") but ("wiring is not ok")

so i fixed the wiring all over again and tested the wires end to end with a multi meter and checked the winding resistance from the pololu A1, A2, B1, B2 pins to see if the wires have no problems all was good.

test #3

i uploaded the grbl v0.9j to the arduino and all drivers where in place adjusted the vref voltage based on the data of the motors phase voltage and current. then ran a simple g code command G0 X100 Y100 Z100. all worked well. and that's the last problem that i ever had. (test3 success "grbl worked with the shield").

now since it worked perfectly. i thought of swapping the Chinese cnc mach 3 parallel port board with the arduino cnc shield and all was good. and i added some features to it because the shield had so much to offer compare to the old parallel port controller board.

i will attach some pictures

The Old Board Of Mach 3 |500x281

The CNC Machine Front View After Modification |500x281

The CNC Machine Back View After Modification |500x281

now the MACHINE looks much more neater and compact compare to before. my next step is to control the CNC machine via Bluetooth to avoid using wires (USB)