Changes made to Grbl - jasonwebb/grbl-mega-wall-plotter GitHub Wiki

Although all of my changes will be obvious by comparing the various commits of this branch to the master, I've created a descriptive list of tasks to help me focus my efforts and verify my thought processes. If you feel that any of these changes are not needed, or that there are other things that need to be changed that I did not think of, please get in touch.


Currently this branch is an extension of Grbl v1.1e. If newer versions of Grbl come out I cannot guarantee that this branch will be updated along with it, though you are welcome to do so in a new fork.


  • config.h - add a new high-level #define flag (WALL_PLOTTER) that can be used throughout the system to control program flow (see lines 182-184).

  • defaults.h

    • Add a new defaults group (DEFAULTS_WALL_PLOTTER) and update all values to match my test rig (see lines 455-492).
    • Add an additional documentation block to describe how various #defines are used that may not be as intuitive as typical Cartesian machines.
  • limits.c - update to include new custom homing routine. Need to test out a few homing routine ideas before deciding on one, so I’ll opt to skip this in favor of manual calibration for first release.

  • nuts_and_bolts.h - extend #ifdef conditional for mapping the X_AXIS, Y_AXIS motors to A_MOTOR, B_MOTOR (see line 39) to also include WALL_PLOTTER.

  • planner.c

    • plan_buffer_line()

      • Add a new conditional to update position_steps using new custom wall plotter kinematic calculation functions (see lines 335-338)
      • Add a new conditional to update target_steps (see lines 344-347) and block->steps (see lines 352-354) based on new kinematic calculations.
      • Add a new conditional to calculate delta_mm based on kinematic calculations (see lines 377-384).
    • plan_sync_position() - update to call new custom system functions to convert X,Y to polar coordinates (see lines 507-514).

      _Make sure to follow the NOTE ([line 478](https://github.com/gnea/grbl/blob/af17f0071f1b964c32962d486f0351bdc6f7a6d9/grbl/planner.c#L478-L479)) about accommodating motor configurations that are not in the same coordinate frame as the machine._
      
  • report.c - update report_buld_info() to output a new, unique character over serial to indicate WALL_PLOTTER has been defined (see lines 364-366). Since 'P', 'W' and 'V' are all used already, I need to decide on a new one. How about 'G'?``

  • system.c - add new kinematic equations allowing other parts of the system to convert back and forth between X,Y and A,B coordinates.

    • Add new kinematic functions to convert position to steps (see lines 330-342):
      • system_convert_wall_plotter_to_x_axis_steps()
      • system_convert_wall_plotter_to_y_axis_steps()
    • Update system_convert_axis_steps_to_mpos() to call custom kinematic functions for converting Cartesian position to steps (see lines 292-299).
  • system.h - add function headers to reflect new custom kinematic functions (see lines 182-186).