(This is an update to the work of Sam Wong on a fork from github.com/sam0737/machinekit-replicape, which makes the Replicape board useful for Machinekit and 3D printers in velocity extrusion mode.
My (Karl Jacobs) contribution is only to adapt his configuration (and this README) to Machinekit on Debian Stretch
with an rt-preempt kernel and to add delta printer support. I could only test the B3A board version, but A4A should work as well. You need to set the board version in the ini-file, as it cannot be determined automatically in this configuration. I have not touched any of the code for board rev A4A. I also tested only with a delta printer, although the code contains provisions for use with a CoreXY setup which I did not touch. The configuration should also cover conventional trivial kinematics. The Trinamic stepper drivers on the Replicape board make the stepper motors amazingly quiet!)
This is to make the Replicape board usable in Machinekit, essentially this contains:
- Python HAL script linking up the hardware, GPIO, velocity extrusion controlling and exposing remote UI HAL.
- Python HAL module for PWM controlling (Replicape uses a dedicated PWM controller)
- Python HAL module for Stepper configuration such as Enable, Microstepping, Decay, and DAC configuration for the stepper current settings.
- Reprap GCode remap
-
adapt to Machinekit on Debian Stretch with 4.14.x rt-preempt kernel and u-boot overlays:
- using rt-preempt instead of xenomai
- add BOARD_REV variable in ini-file, as u-boot overlays seem not to publish the Replicape board version in dmesg or cmdline
- check for installed REPLICAPE overlay in /proc/cmdline
- export GPIO pins used by pru stepgen (in "set_pru_gpio.sh", not done by REPLICAPE overlay)
- change "localpincount" to "local_pincount" in icomps to make them compile
-
use the stepgen.xx.minvel pin to avoid "pru hunting"
-
add support for delta printers (lineardeltakins)
- detected by looking for DELTA_R in ini file
- add cartesian HOME-DELTA_Z in ini file so that G28 can be modified to go to Z coordinate at top of build space instead of Z=0
-
copy more G- and M-code mappings to ../subroutines from /usr/share/linuxcnc/ncfiles/remap-subroutines/fdm/
-
implement M106 (pwm fan control)
-
implement M710 (jog filament), M207 (set retract parameters), M221 (set extrusion scale)
-
modify G28 to home to X0,Y0,Z(HOME-DELTA_Z) and to disable extrusion
- Machinekit on BeagleBoneBlack
-
This configuration is adapted to Machinekit on Debian Stretch with the rt-preempt kernel 4.14.18-ti-rt-r33, to be found at https://elinux.org/Beagleboard:BeagleBoneBlack_Debian
-
the present configuration uses an image including the machinekit package:
microSD/Standalone: (machinekit) Based on Debian Stretch with 4.14.x rt kernel with U-Boot Overlays, specifically: bone-debian-9.3-machinekit-armhf-2018-02-11-4gb.img.xz
An update to kernel 4.14.25-ti-rt-r38 was tested as well (but needed the addition of the PRU overlay, which was optional in the earlier kernel, see below). Note that the Debian/machinekit packages are frequently updated. -
make sure your boot loader is not too old, must support u-boot overlays, see above link for instructions to update.
-
ssh to BeagleBoneBlack from your host computer and login. If you want X11 support, you will have to "sudo apt-get install xauth" and "touch ~/.Xauthority"
-
make sure /boot/uEnv.txt has the following entries (cape_universal not enabled):
-
enable_uboot_overlays=1
#enable_uboot_cape_universal=1
disable_uboot_overlay_audio=1
uboot_overlay_pru=/lib/firmware/AM335X-PRU-UIO-00A0.dtbo
cmdline=coherent_pool=1M net.ifnames=0 quiet
-
optional: flash eMMC, instructions see above link
-
this config assumes that there is no "sudo" password required, which was the default in the above Debian Stretch image.
cat /proc/cmdline
should show an entry
uboot_detected_capes=BB-BONE-REPLICAP
You can also check the boot protocol on the BBB serial interface for the following entries (board version B3A):
BeagleBone: cape eeprom: i2c_probe: 0x54: /lib/firmware/BB-BONE-REPLICAP-0B3A.dtbo [0xfdcc4bf]
and
uboot_overlays: loading /lib/firmware/BB-BONE-REPLICAP-0B3A.dtbo ...
- Install the following python module, which is used in the HAL
sudo pip install spi
- Clone this repository for the machinekit configuration to your machinekit configs directory:
cd ~/machinekit/configs
git clone https://github.com/airborneastro/machinekit-replicape
- Edit the replicape.ini file according to your needs. The included ini file is for a Kossel Mini delta printer. Be sure to set the new BOARD_REV entry to the actual Replicape board revison (B3A or A4A) of your hardware. See http://www.machinekit.io/docs/setting-up/lineardelta-FDM-printer/ for specifics about delta printer setup. Set the filament diameter in FILAMENT_DIA.
- make sure that replicape/set_pru_gpio.sh is executable. If not
chmod +x machinekit-replicape/replicape/set_pru_gpio.sh
- Clone Machineface under your BBB user home directory:
cd ~/
git clone https://github.com/machinekit/Machineface
-
Enable Machinekit to accept remote connections: edit /etc/linuxcnc/machinekit.ini, change REMOTE to 1
-
Install a machinekit client for your host computer from https://github.com/machinekit/QtQuickVcp
-
start mklauncher on BBB (watch the period):
cd ~/machinekit/configs/machinekit-replicape
mklauncher .
- Start the machinekit client on your host computer. Be aware that for a delta printer the jog controls of Machineface work on the joints (carriages on the towers) and not on the cartesian x,y,z coordinates. Switching to teleop mode does not (yet) work in the version (March 2018) that I used. You can however jog the extruder. You can change the filament diameter on the Settings tab, or by adding M200 D[filament_diameter] to the start G-code.
- For Cura 3.1.2, machinekit velocity extrusion G-code is created with the "NGCWriter" plugin written by Alexander Rössler. As of March 19, 2018, this is now an official Cura plugin, so you can install it via Plugins > Browse Plugins. For an older version you can get NGCWriter from https://github.com/machinekoder/NGCWriter. Read https://machinekoder.com/machinekit-and-cura/ for explanations. For the Linux version of Cura 3.2.1 (AppImage), copy the NGCWriter folder to ~/.local/share/cura/3.2/plugins/
Slice and save the file using the "RS-274 GCode file (*.ngc)" option. The NGCWriter postprocessing scripts can also be used to process GCode of other slicers.
The MIT License (MIT)
Copyright (c) 2015 Sam Wong
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.