1.0.6 Firmware release. More Github cleanup.
This commit is contained in:
@@ -4,6 +4,14 @@ OneFinity CNC Controller Firmware Changelog
|
||||
Note: This firmware was forked from version 0.4.14 of the Buildbotics firmware
|
||||
Buildbotics Changelog is provided below
|
||||
|
||||
## v1.0.6
|
||||
- Tweaked stall homing procedure to clear stepper stall condition before homing
|
||||
- Modified motor homing parameters (8 microsteps, 1.688 m/min search velocity, 2 stall volts, 1 stall current, 1.5mm zero backoff)
|
||||
- Added pop up message while loading/simulating file on upload
|
||||
- Decreased max velocity in default settings for X and Y axes
|
||||
- Restored jerk to 1000 on all axes
|
||||
- Fixed issue with default units not displaying on Control page (thanks to Robin Goldstone)
|
||||
|
||||
## v1.0.5
|
||||
- Changed the jog commands so that save/restore modal states are not used to avoid situation where spindle/loads could
|
||||
turn back on if the stop button was used instead of the M5/M9 gcode commands.
|
||||
|
||||
2
Makefile
2
Makefile
@@ -62,7 +62,9 @@ $(GPLAN_MOD): $(GPLAN_IMG)
|
||||
git -C rpi-share/cbang reset --hard FETCH_HEAD
|
||||
git -C rpi-share/camotics fetch
|
||||
git -C rpi-share/camotics reset --hard FETCH_HEAD
|
||||
git -C rpi-share/camotics checkout ec876c80d20fc19837133087cef0c447df5a939d
|
||||
cp ./scripts/gplan-build.sh rpi-share/
|
||||
chmod +x rpi-share/gplan-build.sh
|
||||
sudo ./scripts/rpi-chroot.sh $(GPLAN_IMG) /mnt/host/gplan-build.sh
|
||||
|
||||
$(GPLAN_IMG):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bbctrl",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.6",
|
||||
"homepage": "https://onefinitycnc.com/",
|
||||
"repository": "https://github.com/OneFinityCNC/onefinity",
|
||||
"license": "GPL-3.0+",
|
||||
|
||||
0
scripts/gplan-build.sh
Normal file → Executable file
0
scripts/gplan-build.sh
Normal file → Executable file
1
scripts/gplan-init-build.sh
Normal file → Executable file
1
scripts/gplan-init-build.sh
Normal file → Executable file
@@ -24,6 +24,7 @@ if [ ! -e $GPLAN_IMG ]; then
|
||||
# Init image
|
||||
mkdir -p rpi-share
|
||||
cp ./scripts/gplan-init-dev-img.sh rpi-share
|
||||
chmod +x ./rpi-share/gplan-init-dev-img.sh
|
||||
sudo ./scripts/rpi-chroot.sh $GPLAN_IMG.tmp /mnt/host/gplan-init-dev-img.sh
|
||||
|
||||
# Move image
|
||||
|
||||
0
scripts/gplan-init-dev-img.sh
Normal file → Executable file
0
scripts/gplan-init-dev-img.sh
Normal file → Executable file
0
scripts/install.sh
Normal file → Executable file
0
scripts/install.sh
Normal file → Executable file
2
scripts/rpi-chroot.sh
Normal file → Executable file
2
scripts/rpi-chroot.sh
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
ROOT="$PWD/rpi-root"
|
||||
LOOP=9
|
||||
LOOP=12
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <image> <exec>"
|
||||
|
||||
0
scripts/update-bbctrl
Normal file → Executable file
0
scripts/update-bbctrl
Normal file → Executable file
0
scripts/upgrade-bbctrl
Normal file → Executable file
0
scripts/upgrade-bbctrl
Normal file → Executable file
@@ -1,4 +1,5 @@
|
||||
hostinfo.sh &
|
||||
|
||||
ratpoison &
|
||||
|
||||
xset -dpms
|
||||
|
||||
@@ -118,7 +118,8 @@ module.exports = new Vue({
|
||||
password: '',
|
||||
ipAddress: '0.0.0.0',
|
||||
wifiSSID: '',
|
||||
confirmShutdown: false
|
||||
confirmShutdown: false,
|
||||
diskSpace: ''
|
||||
}
|
||||
},
|
||||
|
||||
@@ -309,6 +310,7 @@ module.exports = new Vue({
|
||||
|
||||
this.check_ip_address();
|
||||
this.check_ssid();
|
||||
//.check_disk_space();
|
||||
|
||||
|
||||
}.bind(this))
|
||||
@@ -342,6 +344,20 @@ module.exports = new Vue({
|
||||
}.bind(this))
|
||||
},
|
||||
|
||||
// check_disk_space : function() {
|
||||
// $.ajax({
|
||||
// type: 'GET',
|
||||
// url: 'diskinfo.txt',
|
||||
// data: {hid: this.state.hid},
|
||||
// cache: false
|
||||
//
|
||||
// }).done(function (data) {
|
||||
// console.debug('>', data);
|
||||
// this.diskSpace = data;
|
||||
// this.$broadcast('diskSpace', data);
|
||||
// }.bind(this))
|
||||
// },
|
||||
|
||||
get_ip_address : function() {
|
||||
console.debug('get_ip>', this.ipAddress);
|
||||
return this.ipAddress;
|
||||
@@ -352,12 +368,22 @@ module.exports = new Vue({
|
||||
return this.wifiSSID;
|
||||
},
|
||||
|
||||
// get_disk_space : function() {
|
||||
// console.debug('get_disk>', this.diskSpace);
|
||||
// return this.diskSpace;
|
||||
// },
|
||||
|
||||
shutdown : function() {
|
||||
this.confirmShutdown = false;
|
||||
api.put('shutdown');
|
||||
|
||||
},
|
||||
|
||||
reboot : function() {
|
||||
this.confirmShutdown = false;
|
||||
api.put('reboot');
|
||||
},
|
||||
|
||||
connect: function () {
|
||||
this.sock = new Sock('//' + window.location.host + '/sockjs');
|
||||
|
||||
|
||||
@@ -73,7 +73,8 @@ module.exports = {
|
||||
ask_home: true,
|
||||
ask_home_msg: false,
|
||||
ask_zero_xy_msg: false,
|
||||
ask_zero_z_msg: false
|
||||
ask_zero_z_msg: false,
|
||||
showGcodeMessage: false
|
||||
}
|
||||
},
|
||||
|
||||
@@ -93,6 +94,19 @@ module.exports = {
|
||||
immediate: true
|
||||
},
|
||||
|
||||
'state.bitDiameter': {
|
||||
handler: function (bitDiameter) {
|
||||
console.log("New bitDiameter " + bitDiameter);
|
||||
console.log("Units: " + this.mach_units);
|
||||
if(this.mach_units == 'IMPERIAL')
|
||||
this.tool_diameter = bitDiameter / 25.4;
|
||||
else
|
||||
this.tool_diameter = bitDiameter;
|
||||
console.log("Tool diameter: " + this.tool_diameter);
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
|
||||
|
||||
mach_units: function (units) {
|
||||
if ((units == 'METRIC') != this.metric)
|
||||
@@ -508,6 +522,7 @@ module.exports = {
|
||||
if (typeof toolpath.progress == 'undefined') {
|
||||
toolpath.filename = file;
|
||||
this.toolpath_progress = 1;
|
||||
this.showGcodeMessage = false;
|
||||
this.toolpath = toolpath;
|
||||
|
||||
var state = this.$root.state;
|
||||
@@ -518,6 +533,7 @@ module.exports = {
|
||||
}
|
||||
|
||||
} else {
|
||||
this.showGcodeMessage = true;
|
||||
this.toolpath_progress = toolpath.progress;
|
||||
this.load_toolpath(file, file_time); // Try again
|
||||
}
|
||||
|
||||
@@ -87,13 +87,15 @@ html(lang="en")
|
||||
li.pure-menu-heading
|
||||
a.pure-menu-link(href="#help") Help
|
||||
|
||||
button.pure-button.pure-button-primary(@click="confirmShutdown = true") Shutdown
|
||||
button.pure-button.pure-button-primary(@click="confirmShutdown = true", style="width: 100%")
|
||||
.fa.fa-power-off
|
||||
message(:show.sync="confirmShutdown")
|
||||
h3(slot="header") Confirm shutdown?
|
||||
p(slot="body") Please wait for black screen before switching off power.
|
||||
div(slot="footer")
|
||||
button.pure-button(@click="confirmShutdown = false") Cancel
|
||||
button.pure-button.button-success(@click="shutdown") Shutdown
|
||||
button.pure-button.button-success(@click="reboot") Restart
|
||||
|
||||
|
||||
#main
|
||||
|
||||
@@ -29,8 +29,8 @@ script#admin-general-view-template(type="text/x-template")
|
||||
#admin-general
|
||||
h2 Firmware
|
||||
button.pure-button.pure-button-primary(@click="check") Check
|
||||
button.pure-button.pure-button-primary(@click="upgrade") Upgrade
|
||||
label.pure-button.pure-button-primary(@click="upload_firmware") Upload
|
||||
button.pure-button.pure-button-primary(@click="upgrade") Upgrade via Web
|
||||
label.pure-button.pure-button-primary(@click="upload_firmware") Upgrade via File
|
||||
form.upload-firmware.file-upload
|
||||
input(type="file", accept=".bz2", @change="upload")
|
||||
|
||||
|
||||
@@ -114,6 +114,17 @@ script#control-view-template(type="text/x-template")
|
||||
button.pure-button(@click=`toolpath_msg['${axis}'] = false`)
|
||||
| OK
|
||||
|
||||
|
||||
message(:show.sync="showGcodeMessage")
|
||||
h3(slot="header") Processing New File
|
||||
|
||||
div(slot="body")
|
||||
h3 Please wait..
|
||||
p Simulating GCode to check for errors, calculate ETA and generate 3D view.
|
||||
|
||||
div(slot="footer")
|
||||
label Simulating {{(toolpath_progress || 0) | percent}}
|
||||
|
||||
message(:show.sync=`ask_home_msg`)
|
||||
h3(slot="header") Home Machine
|
||||
|
||||
|
||||
@@ -369,7 +369,7 @@ static void validate_input_voltage() {
|
||||
static void charge_caps() {
|
||||
IO_PORT_SET(SHUNT_PIN); // Disable shunt (hi)
|
||||
|
||||
delay(5);
|
||||
delay(1000);
|
||||
IO_PORT_SET(PC2_PIN); //Enable pre-charge circuit
|
||||
delay(CAP_PRECHARGE_PERIOD); //Wait for Vs caps to charge
|
||||
IO_PORT_CLR(PC2_PIN); //Disable pre-charge circuit
|
||||
|
||||
@@ -101,6 +101,7 @@ class Ctrl(object):
|
||||
def configure(self):
|
||||
# Indirectly configures state via calls to config() and the AVR
|
||||
self.config.reload()
|
||||
self.state.init()
|
||||
|
||||
|
||||
def ready(self):
|
||||
|
||||
@@ -51,6 +51,10 @@ axis_homing_procedure = '''
|
||||
'''
|
||||
|
||||
stall_homing_procedure = '''
|
||||
G91 G1 %(axis)s [#<_%(axis)s_zero_backoff> * -1] F[#<_%(axis)s_search_velocity>]
|
||||
G4 250
|
||||
G91 G1 %(axis)s [#<_%(axis)s_zero_backoff>] F[#<_%(axis)s_search_velocity>]
|
||||
G4 250
|
||||
G28.2 %(axis)s0 F[#<_%(axis)s_search_velocity>]
|
||||
G38.6 %(axis)s[#<_%(axis)s_home_travel>]
|
||||
G91 G1 G53 %(axis)s[#<_%(axis)s_zero_backoff>] F100
|
||||
|
||||
@@ -82,6 +82,7 @@ class Planner():
|
||||
def get_config(self, mdi, with_limits):
|
||||
state = self.ctrl.state
|
||||
config = self.ctrl.config
|
||||
is_pwm = config.get('tool-type') == 'PWM Spindle'
|
||||
|
||||
cfg = {
|
||||
# NOTE Must get current units not configured default units
|
||||
@@ -89,7 +90,7 @@ class Planner():
|
||||
'max-vel': state.get_axis_vector('vm', 1000),
|
||||
'max-accel': state.get_axis_vector('am', 1000000),
|
||||
'max-jerk': state.get_axis_vector('jm', 1000000),
|
||||
'rapid-auto-off': config.get('rapid-auto-off'),
|
||||
'rapid-auto-off': config.get('rapid-auto-off') and is_pwm,
|
||||
'max-blend-error': config.get('max-deviation'),
|
||||
'max-merge-error': config.get('max-deviation'),
|
||||
'junction-accel': config.get('junction-accel'),
|
||||
|
||||
@@ -73,14 +73,25 @@ class State(object):
|
||||
self.set_callback(str(i) + 'latch_velocity',
|
||||
lambda name, i = i: self.motor_latch_velocity(i))
|
||||
|
||||
self.set_callback('metric', lambda name: 1 if self.is_metric() else 0)
|
||||
self.set_callback('imperial', lambda name: 0 if self.is_metric() else 1)
|
||||
#self.set_callback('metric', lambda name: 1 if self.is_metric() else 0)
|
||||
#self.set_callback('imperial', lambda name: 0 if self.is_metric() else 1)
|
||||
|
||||
self.reset()
|
||||
self.load_files()
|
||||
|
||||
|
||||
def is_metric(self): return self.get('units', 'METRIC') == 'METRIC'
|
||||
#def is_metric(self): return self.get('units', 'METRIC') == 'METRIC'
|
||||
|
||||
def init(self):
|
||||
# Init machine units
|
||||
metric = self.ctrl.config.get('units', 'METRIC').upper() == 'METRIC'
|
||||
self.log.info('INIT Metric %d' % metric)
|
||||
if not 'metric' in self.vars: self.set('metric', metric)
|
||||
if not 'imperial' in self.vars: self.set('imperial', not metric)
|
||||
#Bit diameter for probing
|
||||
diameter = self.ctrl.config.get('probe-diameter',6.35)
|
||||
self.log.info('INIT Diameter %f' % diameter)
|
||||
self.set('bitDiameter',diameter)
|
||||
|
||||
|
||||
def reset(self):
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../../build/http/
|
||||
1
src/py/bbctrl/http
Symbolic link
1
src/py/bbctrl/http
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../build/http/
|
||||
@@ -462,6 +462,13 @@
|
||||
},
|
||||
|
||||
"probe": {
|
||||
"probe-diameter": {
|
||||
"type": "float",
|
||||
"min": 0,
|
||||
"max": 10,
|
||||
"unit": "mm",
|
||||
"default": 6.35
|
||||
},
|
||||
"probe-xdim": {
|
||||
"type": "float",
|
||||
"unit": "mm",
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
{
|
||||
"latch-velocity": 0.1,
|
||||
"max-accel": 750,
|
||||
"max-velocity": 12.75,
|
||||
"search-velocity": 0.844,
|
||||
"max-velocity": 10,
|
||||
"search-velocity": 1.688,
|
||||
"travel-per-rev": 10,
|
||||
"idle-current": 0.5,
|
||||
"drive-current": 2.8,
|
||||
@@ -44,11 +44,11 @@
|
||||
"enabled": true,
|
||||
"homing-mode": "stall-min",
|
||||
"reverse": false,
|
||||
"stall-microstep": 16,
|
||||
"stall-microstep": 8,
|
||||
"min-soft-limit": 0,
|
||||
"max-switch": "disabled",
|
||||
"step-angle": 1.8,
|
||||
"stall-current": 0.9,
|
||||
"stall-current": 1.0,
|
||||
"stall-sample-time": 200,
|
||||
"microsteps": 16,
|
||||
"stall-volts": 2,
|
||||
@@ -61,8 +61,8 @@
|
||||
{
|
||||
"latch-velocity": 0.1,
|
||||
"max-accel": 750,
|
||||
"max-velocity": 12.75,
|
||||
"search-velocity": 0.844,
|
||||
"max-velocity": 10,
|
||||
"search-velocity": 1.688,
|
||||
"travel-per-rev": 10,
|
||||
"idle-current": 0.5,
|
||||
"drive-current": 2.8,
|
||||
@@ -70,7 +70,7 @@
|
||||
"enabled": true,
|
||||
"homing-mode": "stall-min",
|
||||
"reverse": false,
|
||||
"stall-microstep": 16,
|
||||
"stall-microstep": 8,
|
||||
"min-soft-limit": 0,
|
||||
"max-switch": "disabled",
|
||||
"step-angle": 1.8,
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
{
|
||||
"latch-velocity": 0.1,
|
||||
"max-accel": 750,
|
||||
"max-velocity": 12.75,
|
||||
"search-velocity": 0.844,
|
||||
"max-velocity": 10,
|
||||
"search-velocity": 1.688,
|
||||
"travel-per-rev": 10,
|
||||
"idle-current": 0.5,
|
||||
"drive-current": 2.8,
|
||||
@@ -44,7 +44,7 @@
|
||||
"enabled": true,
|
||||
"homing-mode": "stall-min",
|
||||
"reverse": false,
|
||||
"stall-microstep": 16,
|
||||
"stall-microstep": 8,
|
||||
"min-soft-limit": 0,
|
||||
"max-switch": "disabled",
|
||||
"step-angle": 1.8,
|
||||
@@ -61,8 +61,8 @@
|
||||
{
|
||||
"latch-velocity": 0.1,
|
||||
"max-accel": 750,
|
||||
"max-velocity": 12.75,
|
||||
"search-velocity": 0.844,
|
||||
"max-velocity": 10,
|
||||
"search-velocity": 1.688,
|
||||
"travel-per-rev": 10,
|
||||
"idle-current": 0.5,
|
||||
"drive-current": 2.8,
|
||||
@@ -70,7 +70,7 @@
|
||||
"enabled": true,
|
||||
"homing-mode": "stall-min",
|
||||
"reverse": false,
|
||||
"stall-microstep": 16,
|
||||
"stall-microstep": 8,
|
||||
"min-soft-limit": 0,
|
||||
"max-switch": "disabled",
|
||||
"step-angle": 1.8,
|
||||
|
||||
Reference in New Issue
Block a user