On 15 Jan 2014, at 15:52, Charles Steinkuehler <char...@steinkuehler.net> 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)

in lineardeltakins.c something like

int kinematicsForward(const double * joints,
                      EmcPose * pos,
                      const KINEMATICS_FORWARD_FLAGS * fflags,
                      KINEMATICS_INVERSE_FLAGS * iflags) {
    set_geometry(*haldata->r, *haldata->l, *haldata->off_B_wrt_A, 
*haldata->off_C_wrt_A);
    return kinematics_forward(joints, pos);
}

int kinematicsInverse(const EmcPose *pos, double *joints,
        const KINEMATICS_INVERSE_FLAGS *iflags,
        KINEMATICS_FORWARD_FLAGS *fflags) {
    set_geometry(*haldata->r, *haldata->l, *haldata->off_B_wrt_A, 
*haldata->off_C_wrt_A);
    return kinematics_inverse(pos, joints);
}

int rtapi_app_main(void)
{
        …..
        …..
    if(retval == 0)
        retval = hal_pin_float_newf(HAL_IN, &haldata->r, comp_id,
                "lineardeltakins.R");
    if(retval == 0)
        retval = hal_pin_float_newf(HAL_IN, &haldata->l, comp_id,
                "lineardeltakins.L");
   if(retval == 0)
        retval = hal_pin_float_newf(HAL_IN, &haldata->off_B_wrt_A, comp_id,
                "lineardeltakins.off_B_wrt_A");
   if(retval == 0)
        retval = hal_pin_float_newf(HAL_IN, &haldata->off_C_wrt_A, comp_id,
                "lineardeltakins.off_C_wrt_A");

    if(retval == 0)
    {
        *haldata->r = DELTA_RADIUS;
        *haldata->l = DELTA_DIAGONAL_ROD;
        *haldata->off_B_wrt_A = 0;
        *haldata->off_C_wrt_A = 0;
    }


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.


> 
> -- 
> Charles Steinkuehler
> char...@steinkuehler.net
> 
> ------------------------------------------------------------------------------
> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
> Learn Why More Businesses Are Choosing CenturyLink Cloud For
> Critical Workloads, Development Environments & Everything In Between.
> Get a Quote or Start a Free Trial Today. 
> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk_______________________________________________
> Emc-developers mailing list
> Emc-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to