Coder Social home page Coder Social logo

marlin-cnc-pendant's Introduction

Marlin-CNC-Pendant

Version Information

Version 1.0-RC.1

What is it?

This repository contains the hardware schematics and software code needed to build a jogwheel based pendant controller to interface to Marlin / Arduino controlled 3D printers & CNCs

The pendant uses an Arduino nano controller to decode data received from a CNC jogwheel / pulse encoder and send it to the Printer / CNC.

The nano mimics an analog joystick and so leverages the new analog joystick functionality available from Marlin 2.0.0. This limits the move queue to prevent overrun.

So why not just use the joystick?

The joystick is a very good control method and works great on both 3D printers and CNCs, however the traditional control input for a CNC machine is a jogwheel and axis selector switch, which gives a very different operating experience.

This method allows existing traditional jogwheel setups to be utilised when retrofitting as well as using universally and commonly available MPG pendant / handwheel controls.

Contributors

  • DeeEmm AKA Michael Percy

Project Goals

Universal pendant / jogwheel / handwheel interface that interfaces to standard Marlin codebase using the joystick function

Project Status

Usage / Getting started

  • Compile and upload to an Arduino nano
  • Connect wiring according to pin connections in configuration.h
  • Connect X, Y, Z and Enable outputs to your CNC / 3D printer in accordance with Marlin instructions.
  • Enable joystick control in Marlin
  • Fine tune speed values as necessary
  • Speed can be set as X1 / X10 / X100 / Adaptive.
  • Adaptive speed mode moves at speed proportional to rotation speed of encoder.

Here's a video of it in operation

Rotary encoder jog wheel

BOM

  • Arduino Nano
  • 3 off MPC4151 Voltage Controlled Resistors (10kohm)
  • X,Y,Z selector switch
  • 1x,10x,100x selector switch
  • Encoder jogwheel
  • OR MPG jogwheel pendant

License

This project is released under the GPLV3 license. For details on usage please refer to the license file included with this project

Further Information

Reference

marlin-cnc-pendant's People

Contributors

deeemm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

marlin-cnc-pendant's Issues

MPG Pedant jogging without using DAC/ADC interface (connected directly to ARDUINO MEGA2560 running Marlin)

Hi Michael, i am working on Marlin project with a mpg pendant directly connected to a ARDUINO MEGA2560. The connection is on PK0 /PCINT16 and PK1/PCINT17. I am implementing a ISR similar to the one of endstops. Do you have an idea how to inject the jogging moves without having to mimic joystick movements with an ADC ? Can i just use the digital values you feed to MCP4151 in the " Joystick::inject_jog_moves() " as the raw values ?
I would be very greatful for your help / input !
Regards,
Phillip

Output pulse width for X1 speed multipler

Need to determine the minimum pulse width for a single event.

  • Too short and movement will not trigger
  • Too long and movement will overshoot

X1 speed should allow very fine jog for accurate tool positioning

Change read input to bitread

Changing from read input to more efficient bitread will improve speed of encoder event and therefore improve responsiveness of system

Direction decide artifacts

Bench testing shows artifacts present in direction decode.

Essentially if jog wheel is rotated in one direction and then stopped. When the wheel is jogged in opposite direction the encoder buffer still contains data and will output three pulses of incorrect direction.

Possible solutions:

  • Improve decode function
  • Ignore initial pulses
  • Empty encoder buffer

Speed referenced encoder output

Make output value proportional to speed encoder is being turned.

This will allow user to directly control speed of movement

Scaling of output

Need to determine correct scaling for outputs and how this can be integrated with move vector value.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.