Kamaq

From RepRap
Revision as of 10:25, 8 March 2015 by Yope (talk | contribs)
Jump to: navigation, search

This page is a development stub. Please enhance this page by adding information, cad files, nice big images, and well structured data!

Crystal Clear action run.png
Kamaq

Release status: working

[[image:|center|190px]]

Description
Embedded-Linux based firmware and electronics
License
GPL
Author
Contributors
Based-on
Categories
CAD Models
External Link


Kamaq

Project Kamaq is a Linux-based RepRap firmware written in Python, with a web-interface in HTML5/JavaScript and websockets. It controls up to 4 stepper motors (axes) via standard USB audio device, end-switches and heaters via GPIO and hw-mon.

Status

Kamaq is fully functional to the point that it has been used successfully for many prints. It can control the printer hardware, execute gcode-file (stored locally, copied via scp or similar), and monitor progress graphically.

Features

  • Web interface with real-time monitoring and feedback via websockets.
  • Temperature plots for heaters
  • Direct motor control panel
  • Nifty print-speed scale slider to adjust printing speed in real-time
  • Real-time plot of current layer movements in 2D

Hardware Requirements

For running Kamaq, you will need the following hardware:

  • Embedded Linux system with reasonable processing power. Anything like a Raspberry-Pi or more powerful should work (Beagle-bone, etc...).
  • USB Audio device (7.1 channel). You will need to short the output capacitors to get DC-response for better accuracy.
  • 8-channel audio power amplifier with DC response and DC-offset biasing. Preferably class-D, even better if they have current-feedback.
  • HWmon-compatible ADC for measuring temperatures.
  • GPIO-connected power-MOSFET outputs for controlling heaters.
  • GPIO inputs for endswitches.

Software requirements

Any embedded Linux system should do, if it has at least the following:

  • Python 3.4 or newer
  • Cython3 (at least for your build environment if cross-compiling) and GCC if compiling on the platform (i.e. Ubuntu-ARM or similar).
  • GPIO drivers with sysfs interface for your chipset (should be standard on Mainline-Linux kernels).
  • HW-mon driver for your ADC (I use a ADS1015 from TI... it has Mainline-Linux drivers).

System overview

The following diagram shows an overview of the whole system:

Kamaq-software.svg

Electronics

The electronics consists basically of an Embedded-Linux board like a Raspberry-pi, Beagle-Bone or similar with some GPIOs, USB-host, Ethernet and an I2C bus, a common USB 7.1 (8-) channel audio card and 4 nearly identical amplifier PCB's.

USB Audio device

USB Audio devices are powered by positive supply only, and thus need a positive DC-offset on each output in order to be able to produce a symmetric audio waveform. Normally this DC-offset is eliminated from the output by DC-blocking capacitors. For motor control however, we need DC-coupled outputs. For this reason we need to short out these DC-blocking capacitors. The [datasheet] of the C-Media CM6206 shows a typical application schematic in chapter 10.

Amplifier modules

Each amplifier module consists of some OP-amps for DC-biasing, a stereo Class-D audio power-amplifier, an optional low-side switch (MOSFET) for controlling a heater element, and an extra OP-amp for thermistor signal amplification or biasing distribution. At least two of the modules are equipped with a MOSFET switch output: one for the heated bed and the other for the hotend. There is a quad-OPamp on each amplifier board. Of the four OPamps, three are used for biasing the power-amplifier and one for amplifying the thermistor signal. The latter can also be used (with unity-gain) as buffer for distributing the bias voltage from the USB audio device.