diff --git a/.gitignore b/.gitignore index c19be04..52ca8a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ fluidnc-v* +KiCad/*-backups diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_1.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_1.ttf new file mode 100644 index 0000000..9d59324 Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_1.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_2.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_2.ttf new file mode 100644 index 0000000..dc25a9c Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_2.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_3.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_3.ttf new file mode 100644 index 0000000..cd9be3c Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_3.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_4.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_4.ttf new file mode 100644 index 0000000..f44c9f2 Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_4.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_5.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_5.ttf new file mode 100644 index 0000000..0df7bcc Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_5.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_6.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_6.ttf new file mode 100644 index 0000000..990f4a9 Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_6.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_7.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_7.ttf new file mode 100644 index 0000000..6a6f11c Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_7.ttf differ diff --git a/1CamBam_Stick_Fonts/1CamBam_Stick_8.ttf b/1CamBam_Stick_Fonts/1CamBam_Stick_8.ttf new file mode 100644 index 0000000..a601b4e Binary files /dev/null and b/1CamBam_Stick_Fonts/1CamBam_Stick_8.ttf differ diff --git a/KiCad/PiBot-FluidNC-GRBL-CNC-Controller-V4.7A.kicad_prl b/KiCad/PiBot-FluidNC-GRBL-CNC-Controller-V4.7A.kicad_prl index 43a0e71..d47a5d1 100644 --- a/KiCad/PiBot-FluidNC-GRBL-CNC-Controller-V4.7A.kicad_prl +++ b/KiCad/PiBot-FluidNC-GRBL-CNC-Controller-V4.7A.kicad_prl @@ -54,6 +54,7 @@ "zone_display_mode": 0 }, "git": { + "integration_disabled": false, "repo_type": "", "repo_username": "", "ssh_key": "" diff --git a/Readme.md b/Readme.md index b215110..9d30198 100644 --- a/Readme.md +++ b/Readme.md @@ -30,9 +30,9 @@ * *More info:* [wiki.fluidnc.com](http://wiki.fluidnc.com/en/hardware/existing_hardware#pibot-fluidnc-grbl-cnc-controller-v47) * *Schematics/PCB:* [oshwlab.com](https://oshwlab.com/pi3d14/pibot-fluidnc-grbl-cnc-controller-v4-7a) * **Stepper Drivers:** 3x **DM542** (Digital External Drivers). -* **Motors:** 3x **NEMA 23** 57BYGH76 Stepper Motors (3.0A, ~1.5Nm+ torque). +* **Motors:** 3x **NEMA 23** 57BYGH76 Stepper Motors (3.0A, 1.5Nm torque). * **Limit Sensors:** 3x **LJ12A3-4-Z/BX** (Inductive NPN NO). -* *Note: The PiBot V4.7 features built-in 0-10V analog output and opto-isolated inputs, eliminating the need for separate converter modules and isolation boards.* +* *Note: The PiBot V4.7 features built-in RS485 module and 0-10V analog output and opto-isolated inputs, eliminating the need for separate converter modules and isolation boards.* ![PiBot FluidNC GRBL Laser CNC Controller V4.7B top](images/PiBot_Board_top.jpg) ![PiBot FluidNC GRBL Laser CNC Controller V4.7B bottom](images/PiBot_Board_bottom.png) @@ -92,7 +92,7 @@ The PiBot V4.7 uses 5V logic shifting for axis signals. The following diagram il ### D. Spindle Control (0-10V Direct) The PiBot V4.7 includes an integrated 0-10V circuit. -**1. 0-10V Signal Connection** +**Option A: 0-10V Signal Connection (5-Core Shielded Cable)** Locate the **10V Spindle Interface** terminal on the PiBot. | PiBot Output | VFD Terminal | Function | @@ -103,20 +103,18 @@ Locate the **10V Spindle Interface** terminal on the PiBot. | **out2/Rev** | **REV** | Reverse Signal | | **out common** | **DCM** | Digital Common | -**2. RS485 Implementation Detail (4-Core Shielded)** +**Option B: RS485 Implementation Detail (2-Core Shielded Twisted Pair Cable)** It allows for digital precision (no voltage drift), real-time RPM feedback, and the ability to monitor VFD temperature and current via the FluidNC Web UI. To ensure zero-error communication at 24,000 RPM, the RS485 cable must be paired as follows: 1. **Signal Pair:** [RS+] and [RS-] must share a single twisted pair to maximize differential noise cancellation. -2. **Reference Pair:** Both wires of the remaining twisted pair are joined for [GND] to provide a stable common-mode reference between the PiBot and VFD logic. -3. **Shielding:** The drain wire/braid is connected to the VFD Earth terminal (PE) only. The PiBot side of the shield is left floating (cut and insulated) to prevent ground loops. -4. VFD Config (Huanyang): +2. **Shielding:** The drain wire/braid is connected to the VFD Earth terminal (PE) only. The PiBot side of the shield is left floating (cut and insulated) to prevent ground loops. +3. VFD Config (Huanyang): Set PD001=2 and PD002=2 for RS485 control. Set PD163=1, PD164=1, PD165=3 for 9600 baud communication. -5. Wiring: +4. Wiring: PiBot [A] → VFD [RS+] PiBot [B] → VFD [RS-] -PiBot [GND] → VFD [DCM] (If required) Shield → VFD PE (Earth Ground screw) ### E. Probe (GX12) @@ -131,7 +129,7 @@ Shield → VFD PE (Earth Ground screw) Proper shielding is critical to prevent EMI from the VFD from interfering with the limit sensors or stepper signals. * **Spindle:** **GX20-4** (Double shielded **TRVVP 4x1.5mm²**). *Note: High-flex, oil-resistant for drag chains.* -* **Motors:** **GX16-4** (Double shielded **RVVP 4x0.5mm²**). +* **Motors:** **GX16-4** (Double shielded **TRVVP 4x0.5mm²** for moving parts and **RVVP 4x0.5mm²** for the rest). * **Sensors/E-Stop:** **GX12-3/GX12-2** (Shielded **RVVP 0.3mm²**). | TRVVP (High-Flex Drag Chain) | RVVP (Standard Shielded) | @@ -146,8 +144,8 @@ Proper shielding is critical to prevent EMI from the VFD from interfering with t 2. Unzip and run: ```bash ./erase.sh - ./install-fs.sh ./install-wifi.sh + ./install-fs.sh ``` 3. Use `fluidterm.sh` to set your WiFi: ``` @@ -190,4 +188,6 @@ For **1.5kW, 220V, 400Hz** spindle: | **PD070** | Analog Input | **0** | **0-10V** (Standard for PiBot). | | **PD072** | High Analog Freq | **400.0** | Scales the knob so "Max" = 400Hz. | -*For advanced spindle control, see [FluidNC Spindle Config Documentation](http://wiki.fluidnc.com/en/config/config_spindles).* \ No newline at end of file +Set the jumper **J1** to short pins **1** and **2** for using the external power supply (0-10V comming from the PiBot Controller). The onboard potentiometer will be disabled. + +*For advanced spindle control, see [FluidNC Spindle Config Documentation](http://wiki.fluidnc.com/en/config/config_spindles).* diff --git a/docs/HY01D523B-VFD-Manual.pdf b/docs/HY01D523B-VFD-Manual.pdf new file mode 100644 index 0000000..c74b64a Binary files /dev/null and b/docs/HY01D523B-VFD-Manual.pdf differ diff --git a/config.yaml b/examples/fluidnc_config/config.yaml similarity index 72% rename from config.yaml rename to examples/fluidnc_config/config.yaml index 2e6fc64..5924865 100644 --- a/config.yaml +++ b/examples/fluidnc_config/config.yaml @@ -11,11 +11,11 @@ stepping: axes: shared_stepper_disable_pin: NO_PIN x: - steps_per_mm: 320.000 - max_rate_mm_per_min: 3000.000 - acceleration_mm_per_sec2: 150.000 - max_travel_mm: 290.000 - soft_limits: false + steps_per_mm: 1000.000 + max_rate_mm_per_min: 4000.000 + acceleration_mm_per_sec2: 400.000 + max_travel_mm: 230.000 + soft_limits: true homing: cycle: 2 positive_direction: false @@ -27,7 +27,7 @@ axes: feed_scaler: 1.100 motor0: - limit_neg_pin: gpio.35:low + limit_neg_pin: gpio.33:low limit_pos_pin: NO_PIN limit_all_pin: NO_PIN hard_limits: false @@ -38,11 +38,11 @@ axes: disable_pin: I2SO.0 y: - steps_per_mm: 320.000 - max_rate_mm_per_min: 3000.000 - acceleration_mm_per_sec2: 150.000 - max_travel_mm: 390.000 - soft_limits: false + steps_per_mm: 1000.000 + max_rate_mm_per_min: 4000.000 + acceleration_mm_per_sec2: 400.000 + max_travel_mm: 350.000 + soft_limits: true homing: cycle: 2 positive_direction: false @@ -54,7 +54,7 @@ axes: feed_scaler: 1.100 motor0: - limit_neg_pin: gpio.34:low + limit_neg_pin: gpio.32:low limit_pos_pin: NO_PIN limit_all_pin: NO_PIN hard_limits: false @@ -65,10 +65,10 @@ axes: disable_pin: I2SO.7 z: - steps_per_mm: 320.000 + steps_per_mm: 1000.000 max_rate_mm_per_min: 1500.000 - acceleration_mm_per_sec2: 100.000 - max_travel_mm: 80.000 + acceleration_mm_per_sec2: 50.000 + max_travel_mm: 110.000 soft_limits: false homing: cycle: 1 @@ -82,13 +82,13 @@ axes: motor0: limit_neg_pin: NO_PIN - limit_pos_pin: gpio.39:low + limit_pos_pin: gpio.34:low limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: I2SO.10 - direction_pin: I2SO.9 + direction_pin: I2SO.9:low disable_pin: I2SO.8 i2so: @@ -105,10 +105,25 @@ sdcard: card_detect_pin: NO_PIN cs_pin: gpio.5 +parking: + enable: true + axis: Z + pullout_distance_mm: 5.000 + pullout_rate_mm_per_min: 250.000 + target_mpos_mm: -5.000 + rate_mm_per_min: 800.000 + +#control: + # NOTE: safety_door_pin is repurposed as coolant flow monitor. + # "Door opened" status = NO COOLANT FLOW detected. +# safety_door_pin: gpio.39:high + probe: - pin: gpio.33:low + pin: gpio.36:low + toolsetter_pin: NO_PIN check_mode_start: true hard_stop: false + probe_hard_limit: true start: must_home: false @@ -158,10 +173,10 @@ coolant: direction_pin: NO_PIN disable_with_s0: false s0_with_disable: true - spinup_ms: 0 - spindown_ms: 0 + spinup_ms: 10000 + spindown_ms: 10000 tool_num: 0 - speed_map: 0=0% 6000=25% 24000=100% + speed_map: 0=0% 0=25% 6000=25% 24000=100% off_on_alarm: false -# End of File \ No newline at end of file +# End of File diff --git a/examples/gcode/AccelTest.nc b/examples/gcode/AccelTest.nc new file mode 100644 index 0000000..8b66c9d --- /dev/null +++ b/examples/gcode/AccelTest.nc @@ -0,0 +1,39 @@ +(X-Axis Accel Test - RELATIVE POSITIONING) +(WARNING: Ensure you have 200mm of travel to the RIGHT of your starting point) + +G21 (Set units to millimeters) +G91 (Set relative positioning mode) + +(Long moves: Test acceleration up to full max speed) +G0 X200 (Move 200mm right) +G0 X-200 (Move 200mm left) +G0 X200 +G0 X-200 + +(Medium moves) +G0 X100 +G0 X-100 +G0 X100 +G0 X-100 + +(Short, aggressive back-and-forth moves to stress rotational inertia) +G0 X20 +G0 X-10 +G0 X20 +G0 X-20 +G0 X30 +G0 X-30 +G0 X40 +G0 X-30 +G0 X40 +G0 X-40 +G0 X50 + +(Return to Start Position) +(The net travel of the short moves above is +70mm) +(We must move -70mm to get exactly back to the start point) +G0 X-70 + +G90 (Set back to absolute positioning for normal operation) +(End of test) +M30 diff --git a/examples/gcode/FeedTest_X150.nc b/examples/gcode/FeedTest_X150.nc new file mode 100644 index 0000000..918bfaa --- /dev/null +++ b/examples/gcode/FeedTest_X150.nc @@ -0,0 +1,102 @@ +; === Feed Rate Test — X axis, relative mode === +; Range: 1000–6000 mm/min | Step: 200 mm/min +; Pass: 150mm | Return: 2000 mm/min | Pause: 2s +; DRY RUN — Z is not moved. Ensure spindle is off. +; Jog to a clear position with >155mm free on X before starting. +; ================================================ + +G21 ; mm units +G91 ; relative positioning + +; --- Pass 12 of 26: F3200 mm/min --- +G1 X150.0 F3200 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 13 of 26: F3400 mm/min --- +G1 X150.0 F3400 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 14 of 26: F3600 mm/min --- +G1 X150.0 F3600 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 15 of 26: F3800 mm/min --- +G1 X150.0 F3800 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 16 of 26: F4000 mm/min --- +G1 X150.0 F4000 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 17 of 26: F4200 mm/min --- +G1 X150.0 F4200 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 18 of 26: F4400 mm/min --- +G1 X150.0 F4400 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 19 of 26: F4600 mm/min --- +G1 X150.0 F4600 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 20 of 26: F4800 mm/min --- +G1 X150.0 F4800 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 21 of 26: F5000 mm/min --- +G1 X150.0 F5000 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 22 of 26: F5200 mm/min --- +G1 X150.0 F5200 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 23 of 26: F5400 mm/min --- +G1 X150.0 F5400 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 24 of 26: F5600 mm/min --- +G1 X150.0 F5600 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 25 of 26: F5800 mm/min --- +G1 X150.0 F5800 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +; --- Pass 26 of 26: F6000 mm/min --- +G1 X150.0 F6000 +G4 P2 +G1 X-150.0 F2000 ; return +G4 P0.5 ; settle 0.5s + +G90 ; restore absolute positioning +M2 ; end program diff --git a/examples/gcode/Lavy.nc b/examples/gcode/Lavy.nc new file mode 100644 index 0000000..6a099d5 --- /dev/null +++ b/examples/gcode/Lavy.nc @@ -0,0 +1,2 @@ +G1 X22.8 Y86.8 F1500 + diff --git a/examples/gcode/Pravy.nc b/examples/gcode/Pravy.nc new file mode 100644 index 0000000..8f82a1c --- /dev/null +++ b/examples/gcode/Pravy.nc @@ -0,0 +1,2 @@ +G1 X204.4 Y86.8 F1500 + diff --git a/examples/gcode/Predny.nc b/examples/gcode/Predny.nc new file mode 100644 index 0000000..393a45b --- /dev/null +++ b/examples/gcode/Predny.nc @@ -0,0 +1 @@ +G1 X111 Y0 F1500 diff --git a/examples/gcode/Stred.nc b/examples/gcode/Stred.nc new file mode 100644 index 0000000..37fa619 --- /dev/null +++ b/examples/gcode/Stred.nc @@ -0,0 +1,2 @@ +G1 X111 Y86.8 F1500 + diff --git a/examples/gcode/Zadny.nc b/examples/gcode/Zadny.nc new file mode 100644 index 0000000..ebb50b8 --- /dev/null +++ b/examples/gcode/Zadny.nc @@ -0,0 +1,2 @@ +G1 X113.6 Y176.8 F1500 + diff --git a/examples/gcode/one_revolution_macro.nc b/examples/gcode/one_revolution_macro.nc new file mode 100644 index 0000000..3ac4646 --- /dev/null +++ b/examples/gcode/one_revolution_macro.nc @@ -0,0 +1,3 @@ +G21 ; Set units to millimeters +G91 ; Set relative positioning +G1 X5 F100 ; Move X axis +5mm at feed rate 100 diff --git a/images/PiBot V4.7B Controller Board Overview [ULdV1RMgzHM].mkv b/images/PiBot V4.7B Controller Board Overview [ULdV1RMgzHM].mkv new file mode 100644 index 0000000..4c56a5a Binary files /dev/null and b/images/PiBot V4.7B Controller Board Overview [ULdV1RMgzHM].mkv differ