-
Notifications
You must be signed in to change notification settings - Fork 296
Configuring 0.99 Motors
<<< Back to Configuring Version 0.99 Main Page
This page documents motor settings. Each motor object ("group") has a collection of parameters for that motor. There are 6 motor groups, numbered 1,2,3,4,5,6. These are labeled on the v9 board, which breaks out motor1 - motor4. Other platforms may make more or fewer motors available, e.g. the Due has outputs for all 6 motors, which are labeled here
- Motor examples use Motor 1, but any motor active for your platform is OK
Setting | Description | Notes |
---|---|---|
________________ | _________________ | |
{1:{ma:...}} | Map to Axis | Configure axis to which this motor is connected (for Cartesian machines) E.g. {1ma:0}, {2ma:1}, {3ma:2}, {4ma:3} to map motors 1-4 to X,Y,Z,A, respectively |
{1:{sa:...}} | Step Angle | Motor parameter indicating the angle traveled per whole step. Typical setting is {1sa:1.8} for 1.8 degrees per step (200 steps per revolution) |
{1:{tr:..}} | Travel per Revolution | How far the mapped axis moves per motor revolution. E.g. {1tr:2.54} (millimeters) for a 10 TPI screw axis |
{1:{mi:...}} | MIcrosteps | Microsteps per whole step. G2 uses 1,2,4,8,16,32. Other values are accepted but warned |
{1:{su:...}} | Steps per Unit | Direct input and reading of steps per unit - about 7 digits decimal accuracy |
{1:{po:..}} | POlarity | Set polarity for proper movement of the axis. 0=clockwise rotation, 1=counterclockwise - although these are dependent on your motor wiring, and axis movement is dependent on the mechanical system. |
{1:{pm:...}} | Power Mode | 0=motor disabled, 1=motor always on, 2=motor on when in cycle, 3=motor on only when moving |
{1:{pl:...}} | Power Level | 0.000=no power to steppers, 1.000=max power to steppers |
Note: Setting power level to every high values will not necessarily get more power to the motors. At some point you may saturate the coils, get worse motor performance, draw more current, and risk burning out the motors by overheating.
Motor travel settings can be done one of two ways. You can enter the steps per unit {su:...}
, which sets the number of steps the code will emit to travel one complete unit - millimeter, inch, or degree. the SU value is accurate to roughly 7 decimal places, with 5 places available to the right of the decimal point.
Or you can enter the parameters that compute the steps per unit, which are Step Angle: {1:{sa:...}}
, Travel per Revolution: {1:{tr:...}}
and Microsteps: {1:{mi:...}}
. For example, if you want run motor #1 with a 200 step per revolution motor, a 3mm GT2 timing belt with a 20 tooth pulley, and 8 microsteps you enter:
- Step angle:
{1:{sa:1.8}}
or{1sa:1.8}
- Travel per revolution:
{1tr:20}
- Microsteps:
{1mi:8}
...and it will compute and set the SU value. If the SU is set directly the TR value is changed to agree with the SU value. The values entered for step angle and microsteps are not changed.
Axes must be input as numbers, with X=0, Y=1, Z=2, A=3, B=4 and C=5. As you might expect, mapping motor 1 to X will cause X movement to drive motor 1. The example below is a way to run a dual-Y gantry such as a 4 motor Shapeoko2 setup. Movement in Y will drive both motor2 and motor3.
{1:{ma:0}} Map motor 1 to X axis {2:{ma:1}} Map motor 2 to Y1 axis {3:{ma:1}} Map motor 3 to Y2 axis {4:{ma:2}} Map motor 4 to Z axis
This is a decimal number which is often 1.8 degrees per step, but should reflect the motor in use. You might also find 0.9, 3.6, 7.5 or other values. You can usually read this off the motor label. If a motor is indicated in steps per revolution just divide 360 by that number. A 200 step-per-rev motor is 1.8 degrees, a 400 step-per-rev motor has 0.9 degrees per step.
{1:{sa:1.8}} This is a typical value for many motors
TR needs to be set to the distance the mapped axis will move for one revolution of the motor. - e.g. if motor 1 is mapped to the X axis, then 1tr applies to the Xaxis. If the machine is in mm mode (G21) the TR value for XYZ axes should be entered in mm. If in inches mode (G20) XYZ should be entered in inches. ABC axes are always entered in degrees.
{1:{tr:2.54}} Sets motor 1 to a 10 TPI travel from millimeters (2.54 mm per revolution)
For XYZ the travel-per-revolution value is usually the result of the lead screw pitch or pulley circumference.
- A 10 thread-per-inch (TPI) lead screw moves 0.100" per revolution. TR in inches would be 0.100, or 2.54 in mm mode.
- A 0.500" radius pulley will travel 3.14159" per revolution, absent any other gearing. A typical value for a Shapeoko2 or Reprap belt driven machine is on the order of 36.540 mm per revolution. Don't take this as exact - you will need to do your own calibration on your machine to get this setting exact.
For ABC the travel-per-revolution value is entered in degrees. This value will be 360 degrees for an axis that is not geared down - one revolution = 360 degrees. The value for a geared rotary axis is 360 divided by the gear ratio. For example, a motor-driven rotary table with 4 degrees of table movement per handle rotation has a gear ratio of 90:1. The Travel per Revolution value should be set to 4.
Note that the travel-per-revolution is independent of the radius setting in the rotary axis settings. Set TR first to reflect the gearing, then set any Radius values if that is needed.
Note that Travel per Revolution is a motor parameter, not an axis parameter as one might think. Consider the case of a dual Y gantry with lead screws of different pitch (how weird). The travel per revolution would be different for each motor.
G2core microsteps are set in firmware, not as hardware jumpers as on some other systems. The following microstep values are supported:
{1:{mi:1}} no microsteps (whole steps) {1:{mi:2}} half stepping {1:{mi:4}} quarter stepping {1:{mi:8}} eighth stepping {1:{mi:16}} sixteenth stepping {1:{mi:32}} thirty second stepping
G2core can also drive external stepper drivers using the breakout headers. Some drivers use other values than the above, so any value is accepted. Values other than those above are warned as non-standard.
Note about Microsteps: It is a misconception that higher microstep values are better - beyond a certain point they degrade motor performance. In a typical setup the total power delivered to the motor (and hence torque) will go down as you increase the microsteps, especially at higher speeds. Also, using microsteps to set the finest machine resolution is source of error as the shaft angle isn't necessarily going to be at the theoretical point. Don't just assume that 1/32 microstepping is the right setting for your application. Try out different settings to balance smoothness and power.
This is a floating point number that sets the number of steps the code will emit to travel one complete unit - millimeter, inch, or degree. the SU value is accurate to roughly 7 decimal places, with 5 places available to the right of the decimal point.
Set to one of the following:
{1:{po:0}} Normal motor polarity {1:{po:1}} Invert motor polarity
Polarity sets which direction the motor will turn when presented with positive and negative Gcode coordinates. It's affected by how you wired the motors and by mechanical factors. Set polarity so the indicated axis travels in the correct orientation for your machine.
Travel in X and Y is dependent on the conventions for your particular machine and CAD setup. Typically X is left/right movement, and Y is towards and away from you, but people often set up the machine to agree with the visualization their CAD program provides, and can depend on where you stand when operating the machine. Typically +X moves to the right, -X to the left, +Y away from you, and -Y towards you. Z is by convention the cutting axis, which is the vertical axis on a typical milling machine. +Z should move up, and -Z should move down, into the work.
Power management is used to keep the steppers on when you need them and turn them off when you don't. See Power Management page.
Power level is used to set the stepper driver current. 0
is off, 1.000
is maximum, which is about 2.5 amps for the DRV8825 drivers used on most G2 boards.
Set the current carefully, since the value can be too high or too low. Is short: a higher power level does not necessarily mean a higher torque. Underdriving the motor can yield skipped steps and too low of torque. Overdriving the motor typically yields motor performance that's actually worse than a more moderate power setting. When overdriving the motor "runs rough" (often caused by it skipping over microsteps to full-step positions), heats up excessively, and may even cause damage to the motors over time. If there is too much current the drivers may also heat up until they go into thermal shutdown to protect themselves.
4 motors are enabled by default on the default build target: gShield on ArduinoDue Board. To enable more motors, edit the following: board_stepper.h (uncomment motor_5) board_stepper.cpp (uncomment motor_5) hardware.h (#define MOTORS 5) settings_shapeoko2.h (define the list of M5_ settings)
Getting Started Pages
- Home
- What is g2core?
- Who uses g2core?
- Jerk-Controlled Motion
- Getting Started with g2core
- Connecting to g2core
- Configuring g2core
- Flashing g2core
- Troubleshooting
Reference Pages
- Gcodes
- Mcodes
- Text Mode
- JSON Communications
- GPIO Digital IO
- Alarms & Exceptions
- Power Management
- Coordinate Systems
- Status Reports
- Status Codes
- G2 Communications
- Tool Offsets and Selection
- Probing
- Feedhold, Resume, Job Kill
- Marlin Compatibility
- 9 Axis UVW Operation
- gQuintic Specs
Discussion Topics
- Roadmap
- GPIO for 1.X Releases
- Toolheads
- Raster Streaming Prototol
- g2core REST Interface
- Gcode Parsing
- G2 3DP Dialect
- Consensus Gcode
- Digital DRO
- Overview of Motion Processing
Developer Pages
- Development & Contribution
- Branching and Release - DRAFT
- Getting Started with g2core Development
- Project Structure & Motate
- Compiling G2
- OSX w/Xcode
- OSX/Linux Command Line
- Windows10 w/AtmelStudio7
- Debugging G2 on OSX
- Board and Machine Profiles
- Arduino Due Pinout
- Arduino DUE External Interfaces
- Diagnostics
- Debugging w/Motate Pins
- Development Troubleshooting
- g2core Communications
- Git Procedures
- Windows 10 / VMware 8 Issues
- Dual Endpoint USB Internals
- G2core License
- VSCode Setup
- Compatibility Axioms
- Wiki History