====== M-Code-Commands List ======
^ Command ^ Short Description ^
| click tensioner | advance feeder by it's configured default advance length |
| M600 | Advance a Feeder |
| M601 | Retract after Pick |
| M602 | Feeder is OK? |
| M603 | Drive servo to a specific angle |
| M610 | Enable/Disable feeder globally (call before/after any feed operation) |
| M620 | Update feeder config |
| M143 | Get ADC raw values |
| M144 | Get ADC scaled values |
| M145 | Set scaling factors and offsets |
| M155 | Switch digital IOs for power output |
| M799 | Factory Reset |
==== Clicking Tensioner ====
This is obviously not an M-Command but very useful for setting up a feeder. First enable the feeder. Afterwards if pressing the tensioner short, the feeder advances by it's configured default length. This is very useful to load a new reel and setting up the feeder. Fot this feature the feedbackline is used, so it works only for the native shield.
=== Usage ===
* Press down the tensioner to make the microswitch toggle. A duration between 50ms and 500ms is detected as a valid command to feed.
=== Examples ===
M610 S1 ; enable feeder, power on
press tensioner.
==== M610: Enable Feeder ====
Command issued before any feeder shall be used. Turns a mosfet wired to FEEDER_ENABLE_PIN on/off
=== Usage ===
* ''M610 S''
^Argument^Description^
|S| 1 -> On, 0 -> Off|
=== Examples ===
M610 S1 ; enable feeder, power on
M610 S0 ; disable feeder, power off
==== M600: Advance ====
Command issued to advance tape by one feeder.
=== Usage ===
''M600 N F''
^ Argument ^ Description ^
| ''N'' | Number of Feeder: 0...NUMBER_OF_FEEDER |
| ''F'' | Feedlength, optional: If given, has to be a multiple of 2 mm, 24mm maximum |
| ''X'' | If feedback line presents an error for feeder, it is temporarily ignored with X1 |
=== Example commands ===
M600 N3 F4 ; Advance Feeder No. 4 (0 based index) on port F3 by 4mm
M600 N0 ; Advance Feeder No. 0 (port F1) by FEEDER_MECHANICAL_ADVANCE_LENGTH (mechanical default)
M600 N11 ; Advance Feeder No. 11 (F12) by 2 mm (feeder holds on half way at configured HALF_ADVANCED_ANGLE), might need to be tweaked for accuracy
==== M620: Set feeder config ====
Tweak feeder parameters for specific servo, to improve accuracy, etc.
=== Usage ===
''M620 N A B C F U V W X''
^Argument^Description^
| N| Number of Feeder: 0...(NUMBER_OF_FEEDERS-1)|
| A| advanced angle, defaults to FEEDER_DEFAULT_FULL_ADVANCED_ANGLE|
| B| half advanced angle, defaults to FEEDER_DEFAULT_HALF_ADVANCED_ANGLE|
| C| retract angle, defaults to FEEDER_DEFAULT_RETRACT_ANGLE|
| F| standard feed length, defaults to FEEDER_DEFAULT_FEED_LENGTH, which is FEEDER_MECHANICAL_ADVANCE_LENGTH, which is 4mm usually|
| U| settle time to go from advanced angle to retract angle and reverse, defaults to FEEDER_DEFAULT_TIME_TO_SETTLE. make sure the servo is fast enough to reach the angles within given settle time|
| V| pulsewidth at which servo is at about 0°, defaults to FEEDER_DEFAULT_MOTOR_MIN_PULSEWIDTH|
| W| pulsewidth at which servo is at about 180°, defaults to FEEDER_DEFAULT_MOTOR_MAX_PULSEWIDTH|
| X| ignore feedback pin, defaults to FEEDER_DEFAULT_IGNORE_FEEDBACK|
=== Examples ===
M620 N18 A90 B40 C20 F4 U240 V544 W2400 X0 ; set new settings for feeder index 18 and store to eeprom
==== M602: Report Feeder is operational? ====
Command issued to check feeder. Status of feeder is printed to console.
=== Usage ===
''N''
^Argument^Description^
|N|which feeder to check?|
=== Example ===
M602 N3 ; check feedback line and print status of feeder 3
==== M603: Set Servo to Angle ====
While setting up the feeder, it is useful to bring the servo to a defined angle. For this reason, this command was implemented.
=== Usage ===
''M600 N A''
^ Argument ^ Description ^
| N | Number of Feeder: 0...NUMBER_OF_FEEDER |
| A | Angle to set servo to. Must be beween 0-180°. If omitted, defaults to 90°. |
=== Example commands ===
M603 N2 A44 ; Set servo for feeder no. 2 (port F3) to 44°
M603 N0 ; Set servo for feeder no. 1 to default (90°)
==== M799: Factory Reset ====
Invalidate EEPROM and restore default settings given from config.h. No parameters, no safety questions!
==== M143: Report Analog Input Raw Value ====
Read out raw values from ADC and report.
=== Usage ===
''M143 A''
^Argument^Description^
|''A''|0, 1 for vacuum sensors, 2...7 for adc aux|
=== Example ===
M143 A0 ; report vacuum sensor 0
==== M144: Read Analog Input, return scaled value ====
Read out scaled values from ADC instead raw values. Scaling factors are printed to console on startup of microcontroller.
=== Usage ===
''M144 A''
^Argument^Description^
|''A''|0, 1 for vacuum sensors, 2...7 for adc aux|
=== Example ===
M144 A0 ; report vacuum sensor 0
==== M145: Set Analog Input Scaling Factor and Offset ====
Set scaling factor and offset to convert raw values from adc to real units.
=== Usage ===
''M145 A S O''
^Argument^Description^
|''A''|0, 1 for vacuum sensors, 2...7 for adc aux|
|''S''|scaling factor, multiplied with raw value read from adc|
|''O''|offset, added to raw value read from adc. can be negative|
=== Examples ===
* ''M145 A3 S1.00 O0.00'' -> Set scaling to 1 offset to 0 for A3 (that is no scaling active)
* ''M145 A0 S0.1277 O-120.23'' -> Set scaling to 0.1277 offset to -120.23 for A0 (scale example for NXP vacuum sensors)
==== M155: Switch Mosfet-Power Output ====
=== Usage===
''M155 D S''
^Argument^Description^
|''D''|digital output to switch, see config.h for maptable|
|''S''|turn on (1) or off (0)|
=== Examples ===
M155 D0 S1 ; turn on output D0 mapped to pin via config.h
M155 D2 S0 ; turn off output D2 mapped to pin via config.h