Bantam Tools / Chilipeppr Log
Hey All,
I am new to Chilipeppr and also to Othermill / Bantam cnc, but not new to GRBL and UGCS, and have built a few machines over the past 3 years. My primary mission with this tool is to mill very delicate PCB boards that use mostly DNF and QNF packages with 0.6 mm traces. I wanted to start this thread in order to document the trials and tribulations of of getting the Bantam cnc to run Chilipepper and also to see if other folks have had similar experiences with their machine/s.
Here are the system specs that I am working with now
Bantam CNC running TingyG v9
Raspberry Pi 3b running raspbian stretch using SPJS Version 1.86
Alternatively - Dell precision M4700 / windows 7 SP1 - Intel I7 64bit - 16gb ram using SPJS Version 1.86 on localhost
The current stock config of Bantam is as follows - (This is a custom build if the firmware that Bantam has continued developing / using post OMC)
$$
[fb] firmware build 72.73
[fv] firmware version 0.97
[cv] configuration version 6.00
[hp] hardware platform 3.00
[hv] hardware version 0.00
[id] TinyG ID02130215-d4032595-11930323-83021313
[ja] junction acceleration 1000000 mm
[ct] chordal tolerance 0.0100 mm
[sl] soft limit enable 0
[mt] motor idle timeout 600.00 Sec
[pdt] pause dwell time 4 uSec
[ej] enable json mode 0 [0=text,1=JSON]
[jv] json verbosity 4 [0=silent,1=footer,2=messages,3=configs,4=linenum,5=verbose]
[js] json serialize style 1 [0=relaxed,1=strict]
[tv] text verbosity 1 [0=silent,1=verbose]
[qv] queue report verbosity 1 [0=off,1=single,2=triple]
[sv] status report verbosity 1 [0=off,1=filtered,2=verbose]
[si] status interval 250 ms
[gpl] default gcode plane 0 [0=G17,1=G18,2=G19]
[gun] default gcode units mode 1 [0=G20,1=G21]
[gco] default gcode coord system 2 [1-6 (G54-G59)]
[gpa] default gcode path control 2 [0=G61,1=G61.1,2=G64]
[gdi] default gcode distance mode 0 [0=G90,1=G91]
[1ma] m1 map to axis 0 [0=X,1=Y,2=Z…]
[1sa] m1 step angle 1.800 deg
[1tr] m1 travel per revolution 4.8768 mm
[1mi] m1 microsteps 8 [1,2,4,8]
[1po] m1 polarity 1 [0=normal,1=reverse]
[1pm] m1 power management 4 [0=disabled,1=always on,2=in cycle,3=when moving]
[1pl] m1 motor power level 0.275 [0.000=minimum, 1.000=maximum]
[1pli] m1 motor idle power level 0.150 [0.000=minimum, 1.000=maximum]
[2ma] m2 map to axis 1 [0=X,1=Y,2=Z…]
[2sa] m2 step angle 1.800 deg
[2tr] m2 travel per revolution 4.8768 mm
[2mi] m2 microsteps 8 [1,2,4,8]
[2po] m2 polarity 1 [0=normal,1=reverse]
[2pm] m2 power management 4 [0=disabled,1=always on,2=in cycle,3=when moving]
[2pl] m2 motor power level 0.275 [0.000=minimum, 1.000=maximum]
[2pli] m2 motor idle power level 0.150 [0.000=minimum, 1.000=maximum]
[3ma] m3 map to axis 2 [0=X,1=Y,2=Z…]
[3sa] m3 step angle 1.800 deg
[3tr] m3 travel per revolution 4.8768 mm
[3mi] m3 microsteps 8 [1,2,4,8]
[3po] m3 polarity 0 [0=normal,1=reverse]
[3pm] m3 power management 4 [0=disabled,1=always on,2=in cycle,3=when moving]
[3pl] m3 motor power level 0.375 [0.000=minimum, 1.000=maximum]
[3pli] m3 motor idle power level 0.150 [0.000=minimum, 1.000=maximum]
[4ma] m4 map to axis 3 [0=X,1=Y,2=Z…]
[4sa] m4 step angle 1.800 deg
[4tr] m4 travel per revolution 360.0000 mm
[4mi] m4 microsteps 8 [1,2,4,8]
[4po] m4 polarity 1 [0=normal,1=reverse]
[4pm] m4 power management 0 [0=disabled,1=always on,2=in cycle,3=when moving]
[4pl] m4 motor power level 0.050 [0.000=minimum, 1.000=maximum]
[4pli] m4 motor idle power level 0.050 [0.000=minimum, 1.000=maximum]
[5ma] m5 map to axis 4 [0=X,1=Y,2=Z…]
[5sa] m5 step angle 1.800 deg
[5tr] m5 travel per revolution 360.0000 mm
[5mi] m5 microsteps 8 [1,2,4,8]
[5po] m5 polarity 0 [0=normal,1=reverse]
[5pm] m5 power management 0 [0=disabled,1=always on,2=in cycle,3=when moving]
[5pl] m5 motor power level 0.050 [0.000=minimum, 1.000=maximum]
[5pli] m5 motor idle power level 0.050 [0.000=minimum, 1.000=maximum]
[6ma] m6 map to axis 5 [0=X,1=Y,2=Z…]
[6sa] m6 step angle 1.800 deg
[6tr] m6 travel per revolution 360.0000 mm
[6mi] m6 microsteps 8 [1,2,4,8]
[6po] m6 polarity 0 [0=normal,1=reverse]
[6pm] m6 power management 0 [0=disabled,1=always on,2=in cycle,3=when moving]
[6pl] m6 motor power level 0.050 [0.000=minimum, 1.000=maximum]
[6pli] m6 motor idle power level 0.050 [0.000=minimum, 1.000=maximum]
[xam] x axis mode 1 [standard]
[xvm] x velocity maximum 2600 mm/min
[xfr] x feedrate maximum 2600 mm/min
[xtn] x travel minimum 0.000 mm
[xtm] x travel maximum 145.600 mm
[xjm] x jerk maximum 500 mm/min^3 * 1 million
[xjh] x jerk homing 1000 mm/min^3 * 1 million
[xjd] x junction deviation 0.0100 mm (larger is faster)
[xsn] x switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
[xsx] x switch max 4 [0=off,1=homing,2=limit,3=limit+homing]
[st] switch type 1 [0=NO,1=NC]
[st] switch type 1 [0=NO,1=NC]
[xsv] x search velocity 500 mm/min
[xlv] x latch velocity 25 mm/min
[xlb] x latch backoff 5.000 mm
[xzb] x zero backoff 0.400 mm
[yam] y axis mode 1 [standard]
[yvm] y velocity maximum 2600 mm/min
[yfr] y feedrate maximum 2600 mm/min
[ytn] y travel minimum 0.000 mm
[ytm] y travel maximum 119.100 mm
[yjm] y jerk maximum 500 mm/min^3 * 1 million
[yjh] y jerk homing 1000 mm/min^3 * 1 million
[yjd] y junction deviation 0.0100 mm (larger is faster)
[ysn] y switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
[ysx] y switch max 4 [0=off,1=homing,2=limit,3=limit+homing]
[st] switch type 1 [0=NO,1=NC]
[st] switch type 1 [0=NO,1=NC]
[ysv] y search velocity 500 mm/min
[ylv] y latch velocity 25 mm/min
[ylb] y latch backoff 5.000 mm
[yzb] y zero backoff 0.400 mm
[zam] z axis mode 1 [standard]
[zvm] z velocity maximum 2600 mm/min
[zfr] z feedrate maximum 2600 mm/min
[ztn] z travel minimum -60.100 mm
[ztm] z travel maximum 0.000 mm
[zjm] z jerk maximum 500 mm/min^3 * 1 million
[zjh] z jerk homing 1000 mm/min^3 * 1 million
[zjd] z junction deviation 0.0100 mm (larger is faster)
[zsn] z switch min 0 [0=off,1=homing,2=limit,3=limit+homing]
[zsx] z switch max 1 [0=off,1=homing,2=limit,3=limit+homing]
[st] switch type 0 [0=NO,1=NC]
[st] switch type 1 [0=NO,1=NC]
[zsv] z search velocity 500 mm/min
[zlv] z latch velocity 25 mm/min
[zlb] z latch backoff 5.000 mm
[zzb] z zero backoff 0.400 mm
[aam] a axis mode 0 [disabled]
[avm] a velocity maximum 191929 deg/min
[afr] a feedrate maximum 191929 deg/min
[atn] a travel minimum -1.000 deg
[atm] a travel maximum -1.000 deg
[ajm] a jerk maximum 36909 deg/min^3 * 1 million
[ajh] a jerk homing 36909 deg/min^3 * 1 million
[ajd] a junction deviation 0.0100 deg (larger is faster)
[ara] a radius value 0.7762 deg
[asn] a switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
[asx] a switch max 4 [0=off,1=homing,2=limit,3=limit+homing]
[st] switch type 0 [0=NO,1=NC]
[st] switch type 0 [0=NO,1=NC]
[asv] a search velocity 600 deg/min
[alv] a latch velocity 100 deg/min
[alb] a latch backoff 5.000 deg
[azb] a zero backoff 2.000 deg
[bam] b axis mode 0 [disabled]
[bvm] b velocity maximum 191929 deg/min
[bfr] b feedrate maximum 191929 deg/min
[btn] b travel minimum -1.000 deg
[btm] b travel maximum -1.000 deg
[bjm] b jerk maximum 36909 deg/min^3 * 1 million
[bjd] b junction deviation 0.0100 deg (larger is faster)
[bra] b radius value 0.7762 deg
[bsn] b switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
[bsx] b switch max 0 [0=off,1=homing,2=limit,3=limit+homing]
[st] switch type 0 [0=NO,1=NC]
[st] switch type 0 [0=NO,1=NC]
[bsv] b search velocity 600 deg/min
[blv] b latch velocity 100 deg/min
[blb] b latch backoff 5.000 deg
[bzb] b zero backoff 2.000 deg
[bjh] b jerk homing 36909 deg/min^3 * 1 million
[cam] c axis mode 0 [disabled]
[cvm] c velocity maximum 191929 deg/min
[cfr] c feedrate maximum 191929 deg/min
[ctn] c travel minimum -1.000 deg
[ctm] c travel maximum -1.000 deg
[cjm] c jerk maximum 36909 deg/min^3 * 1 million
[cjd] c junction deviation 0.0100 deg (larger is faster)
[cra] c radius value 0.7762 deg
[csn] c switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
[csx] c switch max 0 [0=off,1=homing,2=limit,3=limit+homing]
[st] switch type 0 [0=NO,1=NC]
[st] switch type 0 [0=NO,1=NC]
[csv] c search velocity 600 deg/min
[clv] c latch velocity 100 deg/min
[clb] c latch backoff 5.000 deg
[czb] c zero backoff 2.000 deg
[cjh] c jerk homing 36909 deg/min^3 * 1 million
[p1frq] pwm frequency 100 Hz
[p1csl] pwm cw speed lo 8000 RPM
[p1csh] pwm cw speed hi 26000 RPM
[p1cpl] pwm cw phase lo 0.130 [0…1]
[p1cph] pwm cw phase hi 0.170 [0…1]
[p1wsl] pwm ccw speed lo 0 RPM
[p1wsh] pwm ccw speed hi 0 RPM
[p1wpl] pwm ccw phase lo 0.100 [0…1]
[p1wph] pwm ccw phase hi 0.100 [0…1]
[p1pof] pwm phase off 0.100 [0…1]
[st] switch type 0 [0=NO,1=NC]
[st] switch type 0 [0=NO,1=NC]
[csv] c search velocity 600 deg/min
[clv] c latch velocity 100 deg/min
[clb] c latch backoff 5.000 deg
[czb] c zero backoff 2.000 deg
[cjh] c jerk homing 36909 deg/min^3 * 1 million
[g54x] g54 x offset 0.000 mm
[g54y] g54 y offset 0.000 mm
[g54z] g54 z offset 0.000 mm
[g54a] g54 a offset 0.000 deg
[g54b] g54 b offset 0.000 deg
[g54c] g54 c offset 0.000 deg
[g55x] g55 x offset 19.194 mm
[g55y] g55 y offset 46.610 mm
[g55z] g55 z offset -8.000 mm
[g55a] g55 a offset 0.000 deg
[g55b] g55 b offset 0.000 deg
[g55c] g55 c offset 0.000 deg
[g56x] g56 x offset 0.000 mm
[g56y] g56 y offset 0.000 mm
[g56z] g56 z offset 0.000 mm
[g56a] g56 a offset 0.000 deg
[g56b] g56 b offset 0.000 deg
[g56c] g56 c offset 0.000 deg
[g57x] g57 x offset 8.887 mm
[g57y] g57 y offset 11.858 mm
[g57z] g57 z offset 8.879 mm
[g57a] g57 a offset 30.908 deg
[g57b] g57 b offset 0.000 deg
[g57c] g57 c offset 0.000 deg
[g58x] g58 x offset 136.698 mm
[g58y] g58 y offset 11.907 mm
[g58z] g58 z offset 136.690 mm
[g58a] g58 a offset 30.957 deg
[g58b] g58 b offset 0.000 deg
[g58c] g58 c offset 0.000 deg
[g59x] g59 x offset 0.000 mm
[g59y] g59 y offset 0.000 mm
[g59z] g59 z offset 0.000 mm
[g59a] g59 a offset 0.000 deg
[g59b] g59 b offset 0.000 deg
[g59c] g59 c offset 0.000 deg
[g92x] g92 x offset 0.000 mm
[g92y] g92 y offset 0.000 mm
[g92z] g92 z offset 0.000 mm
[g92a] g92 a offset 0.000 deg
[g92b] g92 b offset 0.000 deg
[g92c] g92 c offset 0.000 deg
[g28x] g28 x position 0.000 mm
[g28y] g28 y position 0.000 mm
[g28z] g28 z position 0.000 mm
[g28a] g28 a position 0.000 deg
[g28b] g28 b position 0.000 deg
[g28c] g28 c position 0.000 deg
[g30x] g30 x position 0.000 mm
[g30y] g30 y position 0.000 mm
[g30z] g30 z position 0.000 mm
[g30a] g30 a position 0.000 deg
[g30b] g30 b position 0.000 deg
[g30c] g30 c position 0.000 deg
When using Bantams custom UI I generally use these settings
The reason for moving to Chilipeppr is as follows
Bantam UI does not have an auto leveling function, which as it turns out is absolutely critical to being able to mill consistent widths and traces with a Vbit. The V bit is the most robust cutter style for milling PCB’s and produces the cleanest cut / at high speeds. They are also cheap !!!
The Chilipepper SPJS allows for a stand alone machine when used with the Raspberry pi and can effectively be embedded in the machine when running headless (which isn’t very difficult to achieve with the latest raspbian releases that come with realVNC)
Open source hardware and software is getting better everyday and this machine would not exist without the support and effort of OS community. It is literally built on open source in every way and the price of the machine reflects this.
So begins my journey of transitioning / hacking this machine in order to use it more effectively and openly.
My first encounter with Chilipeppr a few days ago have revealed a few things right off the bat
Chilipeppr is dense !! The UI is compact to the point of being overwhelming and has an incredible depth and excellent documentation. It is complicated no doubt but it’s possible to learn quickly if you sit down and read while playing
The modules that folks have written for Chilipeppr are powerful and amazing.
The UI is not possible to use meanifully (can’t control any hardware) without the use of its counterpart; the SPJS. It is difficult to understand why the SPJS is so important unless you have a pretty solid understanding of how web pages work and why it’s so difficult to interface a web UI with hardware. Simply put the SPJS is the program, It is an incredible program and you can’t live without it. Everything else is a pretty interphase that interacts with the SPJS. Understanding how the SPJS works is rigorous study and one should not take it lightly. I still barely understand it.
Configuring the buffering setup on the SPJS for Bantams 72.73 firmware is maddening and it crashes reliably. I believe that when this firmware encounters any character that it doesn’t like it completely freezes and you can’t recover by simply hitting the reset button in the TinyG widget in Chilipeppr. You must shut the machine down (or alternatively reset TinyG and then cycle USB ports) shut down the SPJS and then; IN THIS ORDER; turn the machine back on, re execute the SPJS and the reload Chilipepper. What a pain in the ass !! As far as I can tell you need to go into the Gcode gear icon and open up Gcode sender options and turn off preloading, multi line, any play / pause / stop features, tool change and add line numbers. Additionally with 20ms of delay and 1000 lines I can get the machine to run a Gcode file for about 10 min before it encounters a buffer issue or a line of garbage and then effectively has an aneurysm.
Don’t expect to use auto level, touch plate, or super touch plate widgets without erratic changes in Z direction and at least 1 crash to learn what is going on. This turned out to be the most frustrating issue aside from the tweaky buffering issues.
After reading more documentation it’s become clear that the firmware needs to be changed to a Synthetos build and I am not sure of a way to recover to 72.73 if for some reason I would like to go back to the standard Bantam UI. Hopefully more to come on this subject later if / when I hear back from Bantam
Furthermore I have no idea if I will encounter a Firmware Update Verification Failure which would make my dayjob a living hell. More to come on that later.
For now I will wrap up by saying that I love this machine. It’s design is smart. Bantams UI is also amazing (especially for beginners) but limited for advanced folks. The machine is very fast and has an excellent microspindle with a fairly low runout. It is exactly the hardware that I needed and nothing more. Now to improve the brains.