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 Setuptab - Traverse the list to the
Driverssection, select and expand it. - Click the
+(add) icon and selectGcodeDriver. - Select the newly created
GcodeDriver GcodeDriverentry. - Set the
Nameso it can be easily identified later. - Set
Communications Typetotcp. - Scroll down to the
TCPsection. - Set
IP Addressbased on the reported IP address in the serial output. - Set
Portto8989. - Click the
Applybutton to save the updates. - In the
Filemenu selectSave Configurationto 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 Setuptab - Traverse the list to the
Actuatorssection, select and expand it. - Click the
+(add) icon and selectReferenceActuator. - Select the newly created
ReferenceActuator ReferenceActuatorentry. - Set
Driverto the Esp32FeederController driver created previously. - Set the
Nameso it can be easily identified later. - Set
Value TypetoDouble. - Click the
Applybutton to save the updates. - In the
Filemenu selectSave Configurationto 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 Setuptab - Traverse the list to the
Driverssection, select and expand it. - Click the
GcodeDriver Esp32FeederController(or whatever name was provided previously). - Navigate to the
Gcodetab. - In
Head Mountabledrop down selectDefault.- In
SettingselectCOMMAND_CONFIRM_REGEXand enter^ok.*, be sure to clickApplybefore moving further. - In
SettingselectCOMMAND_ERROR_REGEXand enter^error.*, be sure to clickApplybefore moving further.
- In
- In
Head Mountabledrop down selectActuator: [No Head] Feeder Advancement.- In
SettingselectACTUATE_DOUBLE_COMMANDand enterM610 N{IntegerValue}*, be sure to clickApplybefore moving further.
- In
- In
Head Mountabledrop down selectActuator: [No Head] Feeder Post Pick.- In
SettingselectACTUATE_DOUBLE_COMMANDand enterM611 N{IntegerValue}*, be sure to clickApplybefore moving further.
- In
- In the
Filemenu selectSave Configurationto 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
Feederstab - Click the
+(add) icon and selectReferenceAutoFeederorReferenceSlotAutoFeeder. - Select the newly created
ReferenceAutoFeeder ReferenceAutoFeederorReferenceSlotAutoFeeder ReferenceSlotAutoFeederentry. - Double click on the newly created row in the
Namecolumn and rename it for easier identification. - Set
Feed ActuatortoFeeder Advancement(or whichever name you provide theActuator) - Set
Post Pick ActuatortoFeeder Post Pick(or whichever name you provide theActuator) - Set
Actuator Valueon bothActuatorsto the feeder number on the Esp32FeederController PCB minus one (zero indexed). - Click the
Applybutton to save the updates. - In the
Filemenu selectSave Configurationto 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.