From: Charles S. <ch...@st...> - 2014-01-15 16:29:10
|
On 1/15/2014 10:02 AM, Bas de Bruijn wrote: > > On 15 Jan 2014, at 15:52, Charles Steinkuehler > <ch...@st...> wrote: > >> On 1/15/2014 7:55 AM, Bas de Bruijn wrote: >>> >>> Hi Charles, >>> >>> I’d like to support you with testing/adding to the >>> lineardeltakins types of 3D printer. I recently added rudimentary >>> M109 and M106 in the linuxcnc/nc_files directory. >> >> Yes, there will be an example of a lineardeltakins configuration in >> the next release. This is long overdue. >> >>> During calibrating I noticed that i should add a variable to >>> change height of the home position in real time. Now i change >>> lineardeltakins.L (rod length) and lineardeltakins.R (radius) via >>> a halcmd in the terminal when tuning the printer. This is needed >>> for getting straight movement in the plane, instead of >>> convex/concave movement. Nice about it is that the position gets >>> adjusted in real time. very nifty and fast for calibrating, no >>> homing in between. >>> >>> The heights of the end positions are still adjusted via the .ini >>> file and i’d like to change them in real time to find the >>> correction, and then once adjust the values in the .ini file. >>> Because changing them means reloading linuxcnc. >>> >>> in addition to the Pinout/Driver board let’s add BeBoPr++ too. >> >> I believe the BeBoPr++ uses the same pins as the BeBoPr+ which is >> the same as the BeBoPr-Bridge, so hopefully one configuration will >> work with all of them, but I don't have details yet. >> >> As for the end positions, some things cannot be changed at runtime >> via HAL (apparently some really old stuff that pre-dates HAL and >> never got migrated to HAL signals/parameters). But you may be able >> to do what you want using G92 offsets. You should at least be able >> to use G92 to do a bit more testing between re-launches of >> LinuxCNC. > > I’m not trying to hijack this thread but I’ll try to explain what I > have in mind. > > I use G92 to set the offset the nozzle from the bed. I have not found > a way yet to change the homing height, that pin is not writable. The > homing height is important and have effect on the delta radius. so > when i calibrate a machine i need to do a few iterations. > > for now it’s not a problem, but in the future i hope to calibrate > more machines per day (and I’m a lazy guy) > > I propose to add calibration functionality in the kinematics module > (need to compile and test it though) <snip> > and then in lineardeltakins-common.h i can take these offset heights > to narrow down the offset height during calibration. Then when i have > written them down i need to change the .ini file once for everything. > radius, rod length and homing heights. > > that way i could calibrate everything in one go, via Axis and halcmd > in a terminal. Yes, it is annoying that some machine parameters can not be adjusted at runtime, and for non-trivial kinematics, the conventional 'touch-off' performed in XYZ space doesn't help fix any mis-alignment in joint space. I'd like to fix this so everything could be updated live via HAL, but that's for further down the road. You can add offsets to the kinematics module, as you propose, but for what you're wanting, I think you could just add an offset between the step/dir generator and the motion module via HAL, ie: Connect hal_pru_generic.stepgen.00.position-fb to the input of a new sum2 component (http://linuxcnc.org/docs/html/man/man9/sum2.9.html) where you add an offset, then connect the sum2 output to the motion controller's axis.0.motor-pos-fb pin. Then you won't need to add code. Don't forget to add the sum2 function to the servo-thread (using addf, there's a list of them at the top of the HAL file). The sum2 functions should go between the capture-position function that reads the current stepper position and the motion-* functions that calculate new motor positions. -- Charles Steinkuehler ch...@st... |