I have tried to modify homing.py in order to set a bigger sample_time or sample_count in order to force the system to make a longer read of it, but i didn’t work, and even worse, now my machine has a “timer too close error” (see logs).
Unfortunatly, there is still not enough information: you used obscure rare hardware and try to hack firmware instead of fixing your setup.
Like on the official Dyze Design page, it looks like a normal cartesian printer.
With limits to 500g extruder weight, and it will not work on flying gantry printer.
Also, you are ignored configuration refence from Dyze Design, like Z speed limit.
So, if vibrations triggers it, you should eliminate that propably high vibrations.
Btw, there is adc mode for sensor, maybe you will have more flexibility with it, cause it is possible to tune trigger force.
Klipper will not immediately trigger on the probe, there are already software filters for several consecutive trigger values before it has been triggered, same with hardware (oh, no, on ebb42 there is no filter), there is already some sort of input filter to filter out trembling.
Hi @nefelim4ag , thanks for the idea of using adc in order to configure the sensibility of this element!
I had that idea some time ago as this probe has an analog output, not only digital output (the one i’m using right now). But… How can i configure It in order that the adc triggers probe?
Also, the vibrations are not caused by z axis. The main problem comes from the xy axis. When performing safe_z_home and stopping in home_xy_position and the trying to go down, Horizon gets an small vibration, which makes the printer get the error of probe triggered before homing, that’s why i’m trying to set a delay between these elements or increase the sample count.
Could you please tell me how to configure the adc in order to trigger probe? Thanks!
There is no way to implement some kind of software filtering for this input, or to add some delay for measuring this, not affecting to the mcu timer and queues? I would do it on my own obviously, no need to do a FR for this, just need some help or ideas about how to do it.
Also, the adc sensor would be okay for me as horizon has an analog output, i would need only to link the specified value of it to the probe or endstop pin, or whatever the homing procedure needs to detect a trigger (Basically if value_of_horizon >= desired_value set probe_pìn = 1 or true) Maybe i could use something similar to virtual_pins pluggin of pedrolamas, or just link it internally via some python script. What do you rhink?
Out of the box, Klipper only supports the digital-out of this probe
I’m stupid, I somewhat assumed that loadcell code would work with clean analog output. Sineos is right.
I had that idea some time ago as this probe has an analog output,
You can try to use ADC from [loadcell] for that, technically your sensor is loadcell.
Also the hardware filtering is very interesting. How can I configure that?
There is nothing to configure, whether it is implemented on circuit or not, and as your sensor already that it is triggered stable enough to be recognized by klipper, hardware filter will not add a lot.
You can connect it to your manta, it has this sort of filtering for endstops.
“ The Horizon, for all practical purposes, transforms your nozzle into a very sensible force sensor.”
But the sensor is not in the force path. It’s strapped to the side of the extruder. So it can feel motion, but I don’t understand how it can truly sense “force”.
It’s possible that this doesn’t matter and that the analog output behaves like a force sensor, kinda. It may work well enough to work with my code.
(My guess is it’s a strain gauge on a beam, so it can sense the collision as the beam “ringing”. But they don’t provide any details so I can’t tell for sure)
But to find that out, we have to capture the analog data and plot it to see what it looks like.
I’ll take a look on load_cell and also contact dyze design in order to have more details about the parameters of this sensor. Thanks!
About connecting it to the manta in order to use the capacitor as small filter… I’m thinking about using a capacitor in the ebb instead and see if it works, but as you say, this can bring the problem of that once it is triggered, the signal will stay triggered for a longer time than not having the capacitor… We’ll see if this works. Anyways, I prefer to use the pins of the ebb instead of routing a cable upto the main board, as adding cables in the carriage increases a lot the weight of the system (and price).
And also, my homing, quad gantry and bed leveling movements are already limited to smaller accelerations.
Btw, just to let you know, now that you showed up with the image of Manta haha… I already took a deep look into the manta diagrams as I’m currently working in my Bachelor´s Degree Final Project which consists on the development of this machine
The horizon sensor basically connects the rail with the toolhead, so all forces generated in the motors (XYZ) are transmitted to the sensor itself and the extruder. Also, the own inercy of the extruder when accelerating roughly is transmitted to the sensor and it gets triggered.
I dunno exactly how the digital ouput is created (dyze design doesnt show up the internal diagrams of this), ayways, i know that the analog output creates a signal with a sensibility of 0.35mV/g* to *0.6mV/g according to dyze design, so i guess i just need to find the voltage of the output when it is pressing some little the bed, enough to detect that trigger, but not enough to get triggered by vibrations (i need to measure its value when vibrations happen).
So yes, if i’m going to use the analog output, i’ll capture the data when it vibrates and also when it triggers the bed so we can find some suitable values.
Also, after this calibration, i guess it can be considered to give support to horizon sensor as a [load cell] section. But… i guess it would be neccesary to do some calibrations if it is going to be used as probe as the mass of extruder connected might affect to the value of the output.
Anyways, thanks a lot to all of you. I’m developing a very customized printer and all this is very helpul. <3
It might be helpul to take a look on how does RepRap configure this internally, as this is what dyze design says in their website:
Analog output Experimental
The Horizon provides an analog output proportional to the force applied on the nozzle. You can expect to have a sensitivity between 0.35mV/g to 0.6mV/g.
Reprap firmware have an analog mode (mode #1) you can select during z-probe configuration. The detection threshold value can be configured with the Pnnn parameters of the G31 command.
The analog output could be used in other contexts where you would need a sensitive force sensor. You can plug it into the input of an analog to digital converter (ADC) and monitor the force with an external controller.
Likely this will register a force under acceleration. So a typical probe might look like 0 force, then the collision with the build plate will cause force to spike (and possibly oscillate around 0). If the movement isn’t stopped the force will ring down to 0.
This is in contrast to a true force sensor that would continue to register an increasing force after the collision. This is something I’m using as a safety feature. If the filter misses the collision, eventually the force will raise to a point where a safety check fails and the probe is stopped.
So my guess is this probably behaves much more like the ADXL type sensors and have the same set of issues they have with probing.
It might not work with the pullback move and elbow finding algorithm that I’m using because those moves are so slow an gentle. That’s where the real accuracy boost comes from. The overall shape of the Tap force graph would be different and the point where the nozzle breaks contact with the build plate might not register at all.
One day, trying the paper method to calibrate offsets between my toolheads, i noticed that when the noozle touches by first time the bed, the led activated (horizon has a led to show its status), but after a little time, i turned off, and only turned on again when pressing even harder or retracting and pressing again.
So this might not be the way to use this.
Anyways, this might be caused by the digital Converter It has inside… According to dyze design, this is supposed to be a force sensor, and they also suggest the users to try some adc and see what happens, so in that way, i’m open to test anything, develop code, or whatever is needed to bring this to work in klipper.
Meanwhile i’m thinking in a special homing override. Basically, instead of using [homing_override], rename g28 macro and configure all possible situations, allowing me to configure what happens for all axis.
Aaaaalso, just asking:
I have seen in klipper configuration reference the smart effector from duet.
Can horizon be used as the smart effector? Or it would have the same problems you mention now?