moggieuk / ercf-software-v3 Goto Github PK
View Code? Open in Web Editor NEWNew software driver for ERCF control under Klipper
License: GNU General Public License v3.0
New software driver for ERCF control under Klipper
License: GNU General Public License v3.0
After running your script, i am getting the following error.
Klipper reports: ERROR
Section 'variables' is not a valid config section
Once the underlying issue is corrected, use the "RESTART"
command to reload the config and restart the host software.
Printer is halted
I dunno what more to do. Everything works fine, I can change tools succesfully but i'm trying out endless spool but It always crashes with Internal error on command:"ERCF_ENCODER_RUNOUT".
Help ?
11:51
Internal error on command:"ERCF_ENCODER_RUNOUT"
11:51
Klipper state: Shutdown
11:51
Unloaded 955.6mm of filament
11:51
Hi, since the latest moonraker/klipper setup now has the config files in /home/pi/printer_data/config, everything has to be moved and renamed manually before it starts working after running your install.sh.
The py file gets linked properly to the klippy folder still.
Just a heads up,
Ps.
Also i can't seem to get a usable calibration out of your script, where the toolhead sensorless ercf software rams filament violently into the extruder, yours doesn't even reach the extruder before giving up.. (every parameter copied from otherwise tuned ercf)
I'm about to give up xD
Hi,
Would like to use my existing filament switch I made for CW2 that is located above the extruder gears. Filament trips the switch, extruder gears start spinning, feeder pushes the filament a set amount of distance so it gets past the gears and then disengages. Kinda like the Prusa's MMU2S with MK3S works.
At the moment, the calibration fails with 'filament detected before it entered extruder'. I was unable to make the collision or stallguard homing method work (it is marked as experimental so not sure if it's even supposed to be working).
Thanks.
David.
When i edited the Gates via KlipperScreen, the Values will be saved in ercf_vars.cfg. But when i restart KlipperScreen or Firmware or whole printer, everything on KlipperScreen is back to default. ercf_vars.cfg still shows the edited Values.
I am in the process of tuning sensorless homing on the selector. While doing so i realized that ERCF_CHECK_GATES crashes klipper when selector blockage is being detected:
Internal error on command:"ERCF__CHECK_GATES" Internal Error on WebRequest: gcode/script Traceback (most recent call last): File "/home/pi/klipper/klippy/webhooks.py", line 256, in _process_request func(web_request) File "/home/pi/klipper/klippy/webhooks.py", line 425, in _handle_script self.gcode.run_script(web_request.get_str('script')) File "/home/pi/klipper/klippy/gcode.py", line 216, in run_script self._process_commands(script.split('\n'), need_ack=False) File "/home/pi/klipper/klippy/gcode.py", line 198, in _process_commands handler(gcmd) File "/home/pi/klipper/klippy/gcode.py", line 135, in <lambda> func = lambda params: origfunc(self._get_extended_params(params)) File "/home/pi/klipper/klippy/extras/gcode_macro.py", line 186, in cmd self.template.run_gcode_from_command(kwparams) File "/home/pi/klipper/klippy/extras/gcode_macro.py", line 68, in run_gcode_from_command self.gcode.run_script_from_command(self.render(context)) File "/home/pi/klipper/klippy/gcode.py", line 213, in run_script_from_command self._process_commands(script.split('\n'), need_ack=False) File "/home/pi/klipper/klippy/gcode.py", line 198, in _process_commands handler(gcmd) File "/home/pi/klipper/klippy/gcode.py", line 135, in <lambda> func = lambda params: origfunc(self._get_extended_params(params)) File "/home/pi/klipper/klippy/extras/ercf.py", line 2930, in cmd_ERCF_CHECK_GATES self._select_gate(gate) File "/home/pi/klipper/klippy/extras/ercf.py", line 2275, in _select_gate self._move_selector_sensorless(offset) File "/home/pi/klipper/klippy/extras/ercf.py", line 2199, in _move_selector_sensorless raise ErcfError("Selector path is probably externally blocked") ErcfError: Selector path is probably externally blocked
The servo gets stuck in LOCKED/DOWN position when the filament is inserted. I can do SERVO_UP as many times as I want, but it will not open. This only happens when filament is inserted. When there is no filament, the servo goes up and down freely.
Troubleshooting steps I took so far:
I tried running the "Pro tip" installation for placing the new configuration files in the /tmp folder but I received the following error:
Klipper service found Linking ercf extension to Klipper... ln: failed to create symbolic link '/tmp/klippy/extras/ercf.py': No such file or directory
Which is expected as klipper does not exist under /tmp.
Maybe, introduce a new option like "-t" (for test?) which will clone the klipper existing files under /tmp either with -k and -c custom location or without for the standard location under ~/printer_data
per new MainsailOS 1.x and link per MainsailOS 0.9x.
After a print has completed successfully I attempted to change filament by starting with bringing up the extruder temperature and selecting ERCF_EJECT.
Filament was NOT unloaded from the extruder with tipforming. Observed behavior was:
Servo Down
ERCF Motor in reverse at full speed.
Because the filament was still held by the extruder, this quickly ate away at the filament at the ERCF side and the filament did not move.
Full log is attached:
$ ercf__eject
17:16:04
// - DEBUG: Unloading tool T5
17:16:05
// Unloading filament...
17:16:05
// ERCF [T5] <<<<< [encoder] <<<<<<<<<<<<< [extruder] ... [sensor] ... [nozzle] (@0.0 mm)
17:16:05
// - DEBUG: Unloading bowden tube
17:16:05
// - DEBUG: Setting servo to down angle: 118
17:16:05
// - - TRACE: Processing idle_timeout Printing event
17:16:05
// - - TRACE: Determined print status as: complete from print_stats
17:16:05
// - - TRACE: Determined print status as: complete from print_stats
17:16:05
// - - TRACE: Servo turned off
17:16:05
// - - TRACE: Servo turned off
17:16:05
// - DEBUG: Moving the gear and extruder motors in sync for -10.0mm
17:16:06
// - - TRACE: Sync unload. Stepper: 'both' moved -10.0mm, encoder measured 10.6mm (delta -0.6mm). Counter: @10.6mm
17:16:17
// - - TRACE: Course unloading move #1 from bowden. Stepper: 'gear' moved -999.7mm, encoder measured 11.3mm (delta 988.3mm). Counter: @22.0mm
17:16:17
// ERCF [T5] <<<<< [encoder] <<<<<<<...... [extruder] ... [sensor] ... [nozzle] (@22.0 mm)
17:16:17
// - - TRACE: Determined print status as: complete from print_stats
17:16:17
// - - TRACE: Determined print status as: complete from print_stats
17:16:17
// - DEBUG: Setting servo to up angle: 20
17:16:17
// - - TRACE: Servo turned off
17:16:18
!! An issue with the ERCF has been detected whilst out of a print
17:16:18
// Reason: Failure to unload bowden. Perhaps filament is stuck in extruder. Moved 999.7mm, Encoder delta 988.3mm
17:16:18
// - - TRACE: Processing idle_timeout Ready event
ERCF_HOME works as expected, ejecting the filament by first using tipforming and the eject at the extruder.
Currently, when running ERCF_EJECT in an unknown state, the hotend heats up to extract the filament out of the nozzle.
Right now, this does not take the toolhead sensor into account. When the toolhead sensor does not see filament, the heating of the hotend should be skipped.
When upgrading from V1.9.1 to V1.2.1 the servo on my ERCF stops working. When inspected with an oscilloscope there is no PWM being output. If the update is rolled back from V1.2.1 to V1.1.9 the servo is functional. I am using an easy board to control the ERCF, but with Adafruit QT Py rather than an Seeeduino XIAO. (Same processor but different pinouts). The servo is an MG90S servo. The configuration files were updated according to the error message and online documentation, and the install script was ran. All other commands and operations appeared to be functional in V1.2.1.
I randomly hit eject (macro button) during a print and it unexpectedly ejected the filament. I assumed filament actions would be rejected if the printer wasn't paused, in an error state or had just been unlocked and wasnt expecting it to interrupt the print to do so. It was stupid but might be a valid edge case not envisioned....it might also be operating as intended ;-). If so, please close the issue.
HH v1.2.3-11-g4d3383f
Klipper v0.11.0-86-g6026a99a
ningj#6911
Moonraker has recently changed its default file paths, see here.
Going forward the new default config directory is ~/printer_data/config
This is currently workable with -c <dir> options on the install script but it is not changed in the save_variables section of ercf_software.cfg
since the update to 1.3 klipper brings the following error
Option 'extruder_name' is not valid in section 'ercf'
Hi, Ive been using stall guard with easy brd and the patch whi-tw posted on pull request (EtteGit/EnragedRabbitProject#150) for some time with good success and have subsequently removed my hall affect sensor. Its doable with easy brd provided sensorless selector homing is disabled and manually jumper the 2209 diag pin. With the original patch, Klipper would occasionally cancel the print with "!! No trigger on manual_stepper gear_stepper after full movement" if stall guard failed to home & triggered the limit. Changing homing_move(self, movepos, speed, probe_pos=False, triggered=True, check_triggered=false) solved this problem and haven't had a repeat issue. I also added a short 4mm move to detention the filament path much like your 2mm delay before releasing the servo.
I'm keen to move to your driver (v1.1.4) but couldnt get stallguard to work at all and have reverted to my previous setup. Sensorless homing without stallguard was reliable but noisy even after dropping currents to 10% (now 8% of 0.5A Nema 14). The sync load was also unexpectedly noisy and disabled it but ran out of time to debug fully. Likely some feed rate miss-match or contention between gear & extruder stepper. Seems to work fine on unload.
Happy to help debug stallguard if you arent already working on this with others as zero grinding and practically silent feed through to the extruder is possible with it.
With the BTT ebb2240 being released, might not be a bad idea to have the 2240 as an option for tip forming.
Hi. I can not calibrate, doing ERCF_CALIBRATE_SINGLE TOOL=0, it just keeps sending filament when the toolhead sensor is already triggered.
Also it seams "home_to_extruder" is missing from parameters.cfg ?
Any suggestions on what I'm doing wrong ?
I'm running my ERCF on my Prusa MK3S+ Bear that is using a SKR Mini e3 V3 and Klipper, I've been running into an issue where I keep getting the error "Toolhead sensor malfunction - filament detected before it entered extruder!." when trying to load filament and I realized it is because my toolhead sensor is right before the extruder gears and not after the extruder gears. I took a look through the documentation and I couldn't find anything about switching the software so it knows the toolhead sensor is before the extruder, is this something that I am able to do with the ERCF-Software-V3?
Hi there,
ERCF_TEST_GRIP does not work in the current version. This is because TEST_GRIP call SERVO_DOWN and then ERCF_MOTORS_OFF. Unfortunatly the latter calls SERVO_UP, which immediately pulls the servo up again, not allowing the grip to test. A workaround to the test filament grip atm is calling ERCF_SERVO_DOWN and then M84 to disable all steppers.
I just installed Happy Hare new on my old printer on a new pi. I used only my old gpio infos and nothing else and it shows the mentioned error in the subject line.
I looked into the ercf.log but debug shows only this exact error.
I don't know where to look. I tried compare the macros/config between my old (newest version of HH) and my new (newest version of HH) and they are very different. Since I installed fresh, I wonder, why I get this error. Unfortunately, I don't have an angle to work on.
My most common need for intervention is a failed to load toolhead, almost 100% of the time if I do an eject and reload that same gate it works the second time. Is there a way to make happy hare attempt this a certain number of times before requiring intervention?
Homing the selector might fail if the endstop is particularly springy.
The 2nd slow homing move stops when the endstop is reached src
In the lines below, you verify if the endstop is actually pressed, which might fail if the toolhead moved slightly in the meantime.
This can be fixed by passing homing_move=1
to the _selector_stepper_move_wait
call. That results in klipper throwing a command_error
when the endstop is not reached in time.
I have a mellow fly ercf can board with tmc2209 and a toolhead (SB2240 of BTT) with a TMC2240. Does this combination works? the TMC2209 have UART configured, while the TMC2240 is via SPI connected.
Are those two different things working with the new feature?
When i look in the logs I see
TMC driver not found for extruder, cannot use current increase for tip forming move
I'm running into an issue homing to the extruder. I think it's related to the 'spring-back' collision detection process putting too much force on the selector/encoder which pops the entire ECAS out.
Since I have a toolhead sensor can I disable the homing to extruder portion? Looking at the code it seems accounted for but not possible due to a configuration issue?
I was thinking it would be nice to have the clog detection only enabled when a filament has actually been loaded. I am using the sensorless mode and I find that even after an ERCF home and no filament has been loaded if the clog detection will trigger. It is very minor, I found this when I realized I left the "purge" on during nozzle cleaning before I loaded any filament.
Or even simpler would be to have a macro to enable/disable the clog feature without requiring a klipper restart? Previously I was using a dummy rspi io value to add an enable/disable function to Mainsail.
When I ERCF run into a clog, I can manually declog and resume the print. But the last few mms of extrusion will be lost due to clogging.
I would love the possibility to analyze the running gcode file and trace back a few lines and restart at where the clog might have happened.
Do you think it could be possible yo add the opyion to use the gear ercf motor simultaneously with the Extruder to do a push pull cobfiguration to help wiyh the long bowden tube??? I have comprnsated that eith a second extruder but it's not the best.....
Thanks
First off great work on happy hare and the new klipper screen. Happy hare has been great at tuning my system but have been unable to get reliable swaps on silk filaments. Probably due to them swelling. Looking into some sort of cutter like on my bambu labs x1 I came across SMuFF. I have since added a servo operated cutter on to my tool head for perfect swaps every time. Down side is the large amount of purge needed. SMuFF solves this with a post processor. Anyways I am just bringing this to your attention incase you hadn't see it before and maybe in the future happy hare might offer similar features.
Setting the config requires the config section for [ercf_encoder]
to be named ercf_encoder
ie [ercf_encoder encoder]
is not valid but [ercf_encoder ercf_encoder]
is.
I've installed Happy Hare on my new ERCF and trying to get sensorless selector homing to work. I'm using ERCF Easy Board with these Moons motors.
For some reason, it always fails with the following output:
2:19 AM
An issue with the ERCF has been detected whilst out of a print
Reason: Homing selector failed because error. Klipper reports: Homing selector failed because of blockage
2:19 AM
ERCF [T?] <.... [encoder] ............. [extruder] ... [sensor] ... [nozzle] UNLOADED (@0.7 mm)
2:19 AM
ERCF [T?] <.... [encoder] ............. [extruder] ... [sensor] ... [nozzle] UNLOADED (@0.0 mm)
2:19 AM
Unknown filament position, recovering state...
2:19 AM
Homing ERCF...
2:19 AM
You are running an old calibration version.
It is strongly recommended that you rerun 'ERCF_CALIBRATE_SINGLE TOOL=0' to generate updated calibration values
2:19 AM
ERCF_HOME
Attaching configuration files
ercf_parameters.cfg.txt
ercf_hardware.cfg.txt
ercf_software.cfg.txt
Warning: Error booting up ERCF: '>' not supported between instances of 'float' and 'NoneType'
why I have this syntax error, it is in ercf_software.cfg but why klipper can't read it?
I was looking at klipper PA docs, and my understanding is that PA changes the speed of any single extruding and retraction.
This makes me wonder if PA will actually cause less/more moved distance of the filament?
If PA indeed introduces a small "error" to the moved distance, the consequence of enabling PA during loading and unloading then would be that we get a small inaccuracy of the filament movement.
These said,
When starting after install I get this error "Option 'encoder_pin' in section 'ercf' must be specified"
I'm having some issues to use the purge bucket in the color changes.
In SuperSlicer I've set under the GCODE for Tool Change:
"
T[next_extruder]
CLEAN_NOZZLE
"
Seems to do the process but when the part is taller, the nozzle crash to the part like is loosing the Z. Anyone is using the purge bucket + ERCF?
It's a great job!
I don't want to change filament when print_start,how to do that,please
Hi!
I need help with the following problem.
I use clipper in repetier server. When I include the .cfg files in my printer config, I get the message: ercf_servo ercf_servo is not a valid config section! Please help, what am I doing wrong.
Rainer
When I do ERCF_CALIBRATE filament gets caught in extruder and ERCF_CALIBRATE can not complete it's retractions (even thought it does not show any error and it says it passes to next tool has notjhing happenned, but really keeps at same same tool), maybe it was a good idea to do some retract at extruder side before or at the same time that ERCF_CALIBRATE retracts....
Just an Idea.
Nice Job you have done
Best regards
When testing tool swaps (issuing T0
, for example) WITHOUT a print running, the software still issues a PAUSE command on failure. I don't think it should, when the printer becomes paused without a running print KlipperScreen goes into a weird state and cannot be recovered from its GUI (separate issue, that was brought to light by this one).
To recover the printer's state, I have to get to the console and issue ERCF_UNLOCK and RESUME.
Greetings!
I made the change to the Happy Hare somewhere in the end of 2022 which worked fine but today after making the Update to the most recent version it appears for this having been a classic case or Never change a running System
😑
I did both a Manual and then a Scripted Install of the Files
Two problems have come up so far:
The first one that popped into view would be this Error Message which appears to come up somewhere along the Unloading Process - After the Tip Forming / Before the Unloading:
The above Image being after I was somehow able to coax it into finishing the print but the Filament still in the Tool Head.
The second one would be the Servo not behaving properly whenever anything but T0 is active which I kinda suspect to be the root cause for the first Problem...
Video of running an ERCF_CHECK_GATES
...as I've observed the Gear Wheel attempting to retrieve the Filament without the Top Hat Locker being engaged 🤔
I changed my ercf parameters file to turn on all 6 gates and immediately crashed the printer to restart.
I suspect that there is no range checking on this parameter, so increased it by hand.
Could be an improvement.
ercf_state_tool_to_gate_map = [0, 1, 2, 3]
Hello,
I did not find in documentation a command to disable clog detction on fly while print. Is it Possible?
Doing some large print during night and in the beggining it triggered a false clog detection. It would be useful to disable it for till restart (for example) so I don't have a false trigger when I am away from printer
Best Regards
BeOddTodd found a typo in the ercf.py file:
ERCF-Software-V3/extras/ercf.py
Line 1595 in 84d86d7
I think it should be home_position_to_nozzle_speed
, not home_poaition_to_nozzle_speed
when commissioning my ERCF, I have an error "Extruder not configured" with the command "M104 T1 S0" generated by cura
Following Error
Option 'extra_servo_dwell_up' is not valid in section 'ercf'
Since I updated the new soft!! :(
ERCF_CHANGE_TOOL STNDALONE=1 TOOL={initial_tool}
must be change to:
ERCF_CHANGE_TOOL STANDALONE=1 TOOL={initial_tool}
ERCF-Software-V3/extras/ercf.py
Line 1391 in 60711f7
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.