Pandaplacer A1 - Bamboo Feeder Controllers (BFC)
Intro
The Bamboo Feeder Controllers come bundled with Pandaplacer A1 Full Option & Full Option Plus. The system comprises a mini-serial board and multiple controller boards, typically five, connected in a daisy chain - as described in step 11 of the machine assembly.
Features
- Each controller has support for up to 13 8mm AS1 feeders
- The BFC system supports G-code commands, compatible with most commands of the 0816 feeder controller
- Jumper-configured controller address
- Simple port numbers:
Port number = (board address) * 100 + (port number on board)
Configuration
The default configuration for BFC is included in the OpenPnP machine configuration files.
Basic configuration includes:
- G-code driver
- Enable actuator - used by OpenPnP to enable & disable the BFC subsystem
- OK, ACK and PostPick actuators
- Advance Xmm actuators
Firmware
You can download the latest firmware from the download page. Follow the instructions on the Firmware Update page to ensure all your controllers have the latest version.
G-code Reference
Below is the list of all supported Mxxx G-code commands.
Command | Short Description |
---|---|
M600 |
Advance a specific feeder |
M601 |
Retract after pick |
M602 |
Feeder status |
M603 |
Drive the servo to a specific angle |
M610 |
Enable/Disable all feeders on all controllers |
M611 |
Enable/Disable a specific feeder |
M620 |
Update feeder configuration |
M621 |
Read feeder configuration |
M400 |
Wait for moves to complete |
M600 Advance a specific feeder
Command issued to advance the tape for one feeder.
Usage: M600 N<feeder port> F<feedlength>
Argument | Description |
---|---|
N<feeder port> |
Feeder port number: 000-412 |
F<feedlength> |
Feed length, optional: If given, has to be a multiple of 2 mm, 24mm maximum |
X<override error> |
If feedback line presents an error, it is temporarily ignored with X1 |
Example
M600 N3 F4 ; Advance Feeder No 4 (0 based index) on port F3 by 4mm
M600 N0 ; Advance Feeder No 0 by default amount
M600 N11 F2 ; Advance Feeder No 11 by 2 mm (feeder holds on half way), might need to be tweaked for accuracy
M601 Retract after pick
Command issued to set the feeder to the full retract position.
Usage: M601 N<feeder port>
Argument | Description |
---|---|
N<feeder port> |
Feeder port number: 000-412 |
Example
M601 N103 ; check the status of feeder 103
M602 Feeder status
Command issued to check the feeder. The status of the feeder is printed to the console.
Usage: M602 N<feeder port>
Argument | Description |
---|---|
N<feeder port> |
Feeder port number: 000-412 |
Example
M602 N3 ; check the status of feeder 3
M603 Drive the servo to a specific angle
While calibrating the feeder, it is useful to turn the servo to a specific angle.
Usage: M603 N<feeder port> A<angle>
Argument | Description |
---|---|
N<feeder port> |
Feeder port number: 000-412 |
A<angle> |
Angle to set servo to. Must be beween 0-180°. If omitted, defaults to 90°. |
Example
M603 N2 A44 ; Set servo for feeder no. 2 to 44°
M603 N12 ; Set servo for feeder no. 12 to default (90°)
M610 Enable/Disable all feeders on all controllers
Command issued to enable or disable all feeders on all controllers.
Usage: M610 S<status>
Argument | Description |
---|---|
S<status> |
1=ON, 0=OFF |
Example
M610 S1 ; enable all feeders
M610 S0 ; disable all feeders
M611 Enable/Disable a specific feeder
Command issued to enable or disable a specific feeders or all feeders, usually combined with M600 during feeder advance operations. Implemented since firmware 20231222.
Tip
Some feeders implement mechanical limiters and the servo advance angle would never be reached therefore it is useful after the feed operation to disable the feeder for avoiding excess usage and heat for the servo motor.
Usage: M611 N<feeder port> S<status>
Argument | Description |
---|---|
N<feeder port> |
Optional: Feeder port number: 000-412 |
S<status> |
1=ON, 0=OFF |
Example
M611 S1 ; enable all feeders
M611 S0 ; disable all feeders
M611 N206 S1 ; enable feeder 6 on controller 2, restoring the position from memory
M611 N206 S0 ; disable feeder 6 on controller 2, retaining the position in memory
M620 Update feeder configuration
Command issued to adjust the settings for a specific feeder.
Usage: M620 N<feeder port> A<advance angle> B<half advance angle> C<retract angle> F<default feed length> U<settle time> V<min pulsewidth> W<max pulsewidth> X<ignore feedback pin>
Argument | Description |
---|---|
N<feeder port> |
Feeder port number: 000-412 |
A<advance angle> |
Servo angle for the feeder arm fully advanced |
B<half advance angle> |
Servo angle for the feeder arm half advanced |
C<retract angle> |
Servo angle for the feeder arm retracted |
F<feedlength> |
Feed length, has to be a multiple of 2 mm, 24mm maximum, usually 4mm |
U<settle time> |
Settle time to go from advanced angle to retract angle and reverse |
V<min pulsewidth> |
PWM pulse width at which servo is at 0° |
W<max pulsewidth> |
PWM pulse width at which servo is at 180° |
X<override error> |
If the feedback line presents an error, it is ignored with X1 |
Default values: M620 N<feeder port> A180 B125 C56 F4 U480 V500 W2500 X1
Example
M620 N103 A180 B125 C55 F4 U500 V500 W2500 X1; save new settings for feeder 103
M621 Read feeder configuration
Command issued to read the settings for all feeder ports.
Usage: M621
Argument | Description |
---|---|
none |
- |
Example
M621
M400 Wait for moves to complete
Command issued to wait for all feeding movements to complete.
Usage: M400
Example
M400 ; Wait for all moves to complete