Kamaq
This page is a development stub. Please enhance this page by adding information, cad files, nice big images, and well structured data!
Release status: working
[[image:|center|190px]]
Description | Embedded-Linux based firmware and electronics
|
License | GPL
|
Author | |
Contributors | |
Based-on | |
Categories | |
CAD Models | |
External Link |
Contents
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:
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.