The Esp32FeederController project allows controlling of multiple 0816 Feeders using four wire cables.
At this time the following feeder designs should work:
The Max Feeder is the preferred version of the feeder design as it supports adding a QR Code to the feeder that can be used for automatic part identification.
Adding Esp32FeederController to OpenPnP consists of three steps:
- Create GcodeDriver.
- Create Actuators for Feeder actions.
- Create Feeders.
Each Esp32FeederController PCB should have it's own GcodeDriver.
Steps to add a new GcodeDriver for Esp32FeederController:
- Navigate to the
Machine Setup
tab - Traverse the list to the
Drivers
section, select and expand it. - Click the
+
(add) icon and selectGcodeDriver
. - Select the newly created
GcodeDriver GcodeDriver
entry. - Set the
Name
so it can be easily identified later. - Set
Communications Type
totcp
. - Scroll down to the
TCP
section. - Set
IP Address
based on the reported IP address in the serial output. - Set
Port
to8989
. - Click the
Apply
button to save the updates. - In the
File
menu selectSave Configuration
to ensure settings are not lost when restarting OpenPnP.
Each Esp32FeederController PCB requires two Actuators
:
- Feeder Advancement
- Feeder Post Pick
The following steps should be executed for the two Actuators
:
- Navigate to the
Machine Setup
tab - Traverse the list to the
Actuators
section, select and expand it. - Click the
+
(add) icon and selectReferenceActuator
. - Select the newly created
ReferenceActuator ReferenceActuator
entry. - Set
Driver
to the Esp32FeederController driver created previously. - Set the
Name
so it can be easily identified later. - Set
Value Type
toDouble
. - Click the
Apply
button to save the updates. - In the
File
menu selectSave Configuration
to ensure settings are not lost when restarting OpenPnP.
After the two Actuators
have been defined it is necessary to configure the
Gcode commands to send for actuation, use the following steps to configure this:
- Navigate to the
Machine Setup
tab - Traverse the list to the
Drivers
section, select and expand it. - Click the
GcodeDriver Esp32FeederController
(or whatever name was provided previously). - Navigate to the
Gcode
tab. - In
Head Mountable
drop down selectDefault
.- In
Setting
selectCOMMAND_CONFIRM_REGEX
and enter^ok.*
, be sure to clickApply
before moving further. - In
Setting
selectCOMMAND_ERROR_REGEX
and enter^error.*
, be sure to clickApply
before moving further.
- In
- In
Head Mountable
drop down selectActuator: [No Head] Feeder Advancement
.- In
Setting
selectACTUATE_DOUBLE_COMMAND
and enterM610 N{IntegerValue}*
, be sure to clickApply
before moving further.
- In
- In
Head Mountable
drop down selectActuator: [No Head] Feeder Post Pick
.- In
Setting
selectACTUATE_DOUBLE_COMMAND
and enterM611 N{IntegerValue}*
, be sure to clickApply
before moving further.
- In
- In the
File
menu selectSave Configuration
to ensure settings are not lost when restarting OpenPnP.
There are two types of feeders that will work well with Esp32FeederController:
Both operate similarly using the Actuators
defined above.
- Navigate to the
Feeders
tab - Click the
+
(add) icon and selectReferenceAutoFeeder
orReferenceSlotAutoFeeder
. - Select the newly created
ReferenceAutoFeeder ReferenceAutoFeeder
orReferenceSlotAutoFeeder ReferenceSlotAutoFeeder
entry. - Double click on the newly created row in the
Name
column and rename it for easier identification. - Set
Feed Actuator
toFeeder Advancement
(or whichever name you provide theActuator
) - Set
Post Pick Actuator
toFeeder Post Pick
(or whichever name you provide theActuator
) - Set
Actuator Value
on bothActuators
to the feeder number on the Esp32FeederController PCB minus one (zero indexed). - Click the
Apply
button to save the updates. - In the
File
menu selectSave Configuration
to ensure settings are not lost when restarting OpenPnP.
Use the Test Feed
and Test post pick
to confirm the feeder is responding correctly.
The Esp32FeederController supports multiple Gcode commands, many of which are
not directly used by OpenPnP. Many of the commands are intended to be used with
substitution of values within { }
marks, anything within [ ]
are optional
arguments.
M610 N{feeder} [D{distance}]
{feeder}
is the Feeder to be moved forward.{distance}
is the distance to move the feeder and is optional.
M611 N{feeder}
{feeder}
is the Feeder to be moved as part of post-pick.
M612 N{feeder}
{feeder}
is the Feeder to retrieve status for.
M613 N{feeder} [A{advance angle}] [B{half advance angle}] [C{retract angle}] [D{degrees}] [F{feed length}] [S{speed}] [U{settle time}] [V{min pulse}] [W{max pulse}] [Z{feedback enabled}]
All parameters except {feeder}
are optional.
{feeder}
is the Feeder to be configured.{advance angle}
is the angle to move the servo to for full extension.{half advance angle}
is the angle to move the servo to for half extension.{retract angle}
is the angle to move the servo to for retraction.{degrees}
is the maximum number of degrees to move at one time, set to zero to move immediately.{feed length}
is the number of millimeters (pitch) to move the feeder forward when moving to the next part and must be a multiple of 2.{speed}
is the interval at which to move the servo between two angles, used in conjunction with{degrees}
.{settle time}
is the number of milliseconds to delay between servo movements.{min pulse}
is the minimum number of pulses to send the servo.{max pulse}
is the maximum number of pulses to send the servo.{feedback enabled}
is used to enable or disable feedback checking as part of movement, set to zero to disable or one to enable
M614 N{feeder}
{feeder}
is the Feeder to enable.
M615 N{feeder}
{feeder}
is the Feeder to disable.