v 1.0.48 Steps per mm calcs

pull/110/head
openbuilds-engineer 2018-08-07 17:40:04 +02:00
rodzic 2bcc8dd4d2
commit a1e92dcdb7
4 zmienionych plików z 284 dodań i 46 usunięć

Wyświetl plik

@ -785,6 +785,7 @@
<script type="text/javascript" src="js/grblsettings.js"></script>
<script type="text/javascript" src="js/metroactions.js"></script>
<script type="text/javascript" src="js/jog.js"></script>
<script type="text/javascript" src="js/calibrate.js"></script>
</html>

231
app/js/calibrate.js 100644
Wyświetl plik

@ -0,0 +1,231 @@
var grblcalctemplate = `<div>
<ul class="tabs-expand-sm" data-role="tabs">
<li><a href="#_stepspermm_1">Preset</a></li>
<!-- li><a href="#_stepspermm_2">Calibrate</a></li -->
</ul>
<div id="_stepspermm_1">
<div class="card">
<div class="card-content">
<table class="table striped compact">
<tbody>
<tr id="actuatorrow">
<td>Actuator Type</td>
<td>
<select data-role="select" data-filter="false" id="actuatorselect" data-on-change="actuatorselect();">
<option value="belt" selected>Belt Driven</option>
<option value="lead">Leadscrew Driven</option>
</select>
</td>
</tr>
<tr id="motorrow">
<td style="width: 30%;">Motor Type</td>
<td style="width: 70%;">
<select data-role="select" data-filter="false" id="motorselect" data-on-change="processpreset();">
<option value="200">1.8&deg; (200 steps per rotation)</option>
<option value="400">0.9&deg; (400 steps per rotation)</option>
</select>
</td>
</tr>
<tr id="microsteprow">
<td style="width: 30%;">Microstepping Type</td>
<td style="width: 70%;">
<select data-role="select" data-filter="false" id="microstepselect" data-on-change="processpreset();">
<option value="32">1/32 Step</option>
<option value="16" selected>1/16 Step</option>
<option value="8">1/8 Step</option>
<option value="4">1/4 Step</option>
<option value="1">Full Step</option>
</select>
</td>
</tr>
<tr id="beltrow">
<td>Belt Type</td>
<td>
<select data-role="select" data-filter="false" id="beltselect" data-on-change="processpreset();">
<option value="3">GT3 (GT2-3M)</option>
<option value="2">GT2 (GT2-2M)</option>
</select>
</td>
</tr>
<tr id="pulleyrow">
<td>Pulley Type</td>
<td>
<select data-role="select" data-filter="false" id="pulleyselect" data-on-change="processpreset();">
<option value="14">14 Teeth</option>
<option value="16">16 Teeth</option>
<option value="20" selected>20 Teeth</option>
<option value="30">30 Teeth</option>
</select>
</td>
</tr>
<tr id="leadscrewrow" style="display: none;">
<td>Leadscrew Type</td>
<td>
<select data-role="select" data-filter="false" id="leadscrewselect" data-on-change="processpreset();">
<option value="8">Openbuilds ACME Screw (2mm x 4start, 8mm pitch)</option>
</select>
</td>
</tr>
<tr>
<td><b>Calculated Value</b></td>
<td><input type="text" id="calculatedstepspermm" readonly></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="_stepspermm_2">
</div>`
function xstepspermm() {
console.log("x")
Metro.dialog.create({
width: 600,
toTop: true,
title: "Calibrate Steps per mm for X-Axis ($100)",
content: grblcalctemplate,
actions: [{
caption: "Apply",
cls: "js-dialog-close success",
onclick: function() {
$('#val-100-input').val($('#calculatedstepspermm').val());
checkifchanged();
}
},
{
caption: "Cancel",
cls: "js-dialog-close",
onclick: function() {
// alert("You clicked Disagree action");
}
}
]
});
setTimeout(function() {
processpreset()
}, 100)
}
function ystepspermm() {
console.log("y")
Metro.dialog.create({
width: 600,
toTop: true,
title: "Calibrate Steps per mm for Y-Axis ($101)",
content: grblcalctemplate,
actions: [{
caption: "Apply",
cls: "js-dialog-close success",
onclick: function() {
$('#val-101-input').val($('#calculatedstepspermm').val());
checkifchanged();
}
},
{
caption: "Cancel",
cls: "js-dialog-close",
onclick: function() {
// alert("You clicked Disagree action");
}
}
]
});
setTimeout(function() {
processpreset()
}, 100)
}
function zstepspermm() {
console.log("z")
Metro.dialog.create({
width: 600,
toTop: true,
title: "Calibrate Steps per mm for Z-Axis ($102)",
content: grblcalctemplate,
actions: [{
caption: "Apply",
cls: "js-dialog-close success",
onclick: function() {
$('#val-102-input').val($('#calculatedstepspermm').val());
checkifchanged();
}
},
{
caption: "Cancel",
cls: "js-dialog-close",
onclick: function() {
// alert("You clicked Disagree action");
}
}
]
});
setTimeout(function() {
processpreset()
}, 100)
}
// function motorselect() {
// var select = $("#motorselect").data('select');
// console.log("Current value: " + select.val());
// }
function actuatorselect() {
var select = $("#actuatorselect").data('select');
console.log("Current value: " + select.val());
if (select.val() == "belt") {
$('#beltrow').show();
$('#pulleyrow').show();
$('#leadscrewrow').hide();
} else if (select.val() == "lead") {
$('#beltrow').hide();
$('#pulleyrow').hide();
$('#leadscrewrow').show();
}
processpreset()
}
function processpreset() {
var actuatorselect = $("#actuatorselect").data('select');
// console.log("actuatorselect value: " + actuatorselect.val());
var motorselect = $("#motorselect").data('select');
// console.log("motorselect value: " + motorselect.val());
var microstepselect = $("#microstepselect").data('select');
// console.log("microstepselect value: " + microstepselect.val());
var beltselect = $("#beltselect").data('select');
// console.log("beltselect value: " + beltselect.val());
var pulleyselect = $("#pulleyselect").data('select');
// console.log("pulleyselect value: " + pulleyselect.val());
var leadscrewselect = $("#leadscrewselect").data('select');
// console.log("leadscrewselect value: " + leadscrewselect.val());
if (actuatorselect.val() == "belt") {
//step/mm = stepsperrev / beltpitch / pulleyteeth
var stepsperrev = motorselect.val() * microstepselect.val();
var beltpitch = beltselect.val();
var pulleyteeth = pulleyselect.val();
var calculatedstepspermm = stepsperrev / beltpitch / pulleyteeth
// console.log(stepsperrev, beltpitch, pulleyteeth)
$('#calculatedstepspermm').val(calculatedstepspermm.toFixed(3))
} else if (actuatorselect.val() == "lead") {
//steps/mm = stepsperrev / screwpitch
var stepsperrev = motorselect.val() * microstepselect.val();
var screwpitch = leadscrewselect.val()
var calculatedstepspermm = stepsperrev / screwpitch
// console.log(stepsperrev, screwpitch)
$('#calculatedstepspermm').val(calculatedstepspermm.toFixed(3))
}
}

Wyświetl plik

@ -63,7 +63,7 @@ function grblPopulate() {
<th class="sortable-column" data-format="number"></th>
<th class="sortable-column">Parameter</th>
<th>Value</th>
<td>calc</th>
</tr>
</thead>
@ -84,6 +84,7 @@ function grblPopulate() {
<option value="7">[7] X:&#9899; Y:&#9899; Z:&#9899;</option>
</select>
</td>
<td></td>
</tr>
<tr><td>$</td><td>3</td><td>Step direction invert</td><td><select id="val-` + 3 + `-input" value="` + grblParams['$3'] + `">
<option value="0">[0] X:&#9898; Y:&#9898; Z:&#9898;</option>
@ -94,7 +95,7 @@ function grblPopulate() {
<option value="5">[5] X:&#9899; Y:&#9898; Z:&#9899;</option>
<option value="6">[6] X:&#9898; Y:&#9899; Z:&#9899;</option>
<option value="7">[7] X:&#9899; Y:&#9899; Z:&#9899;</option>
</select></td></tr>
</select></td><td></td></tr>
<tr><td>$</td><td>4</td><td>Invert step enable pin</td><td><select id="val-` + 4 + `-input" value="` + grblParams['$4'] + `"><option value="0">&#x2717; Disable</option><option value="1">&#x2713; Enable</option></select></td></tr>
<tr><td>$</td><td>5</td><td>Invert limit pins</td><td><select id="val-` + 5 + `-input" value="` + grblParams['$5'] + `"><option value="0">&#x2717; Disable</option><option value="1">&#x2713; Enable</option></select></td></tr>
<tr><td>$</td><td>6</td><td>Invert probe pin</td><td><select id="val-` + 6 + `-input" value="` + grblParams['$6'] + `"><option value="0">&#x2717; Disable</option><option value="1">&#x2713; Enable</option></select></td></tr>
@ -102,9 +103,9 @@ function grblPopulate() {
<option value="0">[0] WPos:&#9899; MPos:&#9898; Buf:&#9898;</option>
<option value="1">[1] WPos:&#9898; MPos:&#9899; Buf:&#9898;</option>
<option value="2">[2] WPos:&#9899; MPos:&#9898; Buf:&#9899;</option>
</select></td></tr>
<tr><td>$</td><td>11</td><td>Junction deviation, millimeters</td><td><input type="text" value="` + grblParams['$11'] + `" id="val-` + 11 + `-input"></td></tr>
<tr><td>$</td><td>12</td><td>Arc tolerance, millimeters</td><td><input type="text" value="` + grblParams['$12'] + `" id="val-` + 12 + `-input"></td></tr>
</select></td><td></td></tr>
<tr><td>$</td><td>11</td><td>Junction deviation, millimeters</td><td><input type="text" value="` + grblParams['$11'] + `" id="val-` + 11 + `-input"></td><td></td></tr>
<tr><td>$</td><td>12</td><td>Arc tolerance, millimeters</td><td><input type="text" value="` + grblParams['$12'] + `" id="val-` + 12 + `-input"></td><td></td></tr>
<tr><td>$</td><td>13</td><td>Report in inches</td><td><select id="val-` + 13 + `-input" value="` + grblParams['$13'] + `"><option value="0">&#9898; Disable</option><option value="1">&#9899; Enable</option></select></td></tr>
<tr><td>$</td><td>20</td><td>Soft limits enable <small>(Enable and Save Homing first before enabling)<small></td><td><select id="val-` + 20 + `-input" value="` + grblParams['$20'] + `"><option value="0">&#x2717; Disable</option><option value="1">&#x2713; Enable</option></select></td></tr>
@ -119,31 +120,31 @@ function grblPopulate() {
<option value="5">[5] X:&#9899; Y:&#9898; Z:&#9899;</option>
<option value="6">[6] X:&#9898; Y:&#9899; Z:&#9899;</option>
<option value="7">[7] X:&#9899; Y:&#9899; Z:&#9899;</option>
</select></td></tr>
<tr><td>$</td><td>24</td><td>Homing locate feed rate, mm/min</td><td><input type="text" value="` + grblParams['$24'] + `" id="val-` + 24 + `-input"></td></tr>
<tr><td>$</td><td>25</td><td>Homing search seek rate, mm/min</td><td><input type="text" value="` + grblParams['$25'] + `" id="val-` + 25 + `-input"></td></tr>
<tr><td>$</td><td>26</td><td>Homing switch debounce delay, milliseconds</td><td><input type="text" value="` + grblParams['$26'] + `" id="val-` + 26 + `-input"></td></tr>
<tr><td>$</td><td>27</td><td>Homing switch pull-off distance, millimeters</td><td><input type="text" value="` + grblParams['$27'] + `" id="val-` + 27 + `-input"></td></tr>
</select></td><td></td></tr>
<tr><td>$</td><td>24</td><td>Homing locate feed rate, mm/min</td><td><input type="text" value="` + grblParams['$24'] + `" id="val-` + 24 + `-input"></td><td></td></tr>
<tr><td>$</td><td>25</td><td>Homing search seek rate, mm/min</td><td><input type="text" value="` + grblParams['$25'] + `" id="val-` + 25 + `-input"></td><td></td></tr>
<tr><td>$</td><td>26</td><td>Homing switch debounce delay, milliseconds</td><td><input type="text" value="` + grblParams['$26'] + `" id="val-` + 26 + `-input"></td><td></td></tr>
<tr><td>$</td><td>27</td><td>Homing switch pull-off distance, millimeters</td><td><input type="text" value="` + grblParams['$27'] + `" id="val-` + 27 + `-input"></td><td></td></tr>
<tr><td>$</td><td>30</td><td>Maximum spindle speed, RPM</td><td><input type="text" value="` + grblParams['$30'] + `" id="val-` + 30 + `-input"></td></tr>
<tr><td>$</td><td>31</td><td>Minimum spindle speed, RPM</td><td><input type="text" value="` + grblParams['$31'] + `" id="val-` + 31 + `-input"></td></tr>
<tr><td>$</td><td>32</td><td>Laser-mode enable</td><td><select id="val-` + 32 + `-input" value="` + grblParams['$32'] + `"><option value="0">&#x2717; Disable</option><option value="1">&#x2713; Enable</option></select></td></tr>
<tr><td>$</td><td>30</td><td>Maximum spindle speed, RPM</td><td><input type="text" value="` + grblParams['$30'] + `" id="val-` + 30 + `-input"></td><td></td></tr>
<tr><td>$</td><td>31</td><td>Minimum spindle speed, RPM</td><td><input type="text" value="` + grblParams['$31'] + `" id="val-` + 31 + `-input"></td><td></td></tr>
<tr><td>$</td><td>32</td><td>Laser-mode enable</td><td><select id="val-` + 32 + `-input" value="` + grblParams['$32'] + `"><option value="0">&#x2717; Disable</option><option value="1">&#x2713; Enable</option></select></td><td></td></tr>
<tr><td>$</td><td>100</td><td>X-axis steps per millimeter</td><td><input type="text" value="` + grblParams['$100'] + `" id="val-` + 100 + `-input"></td></tr>
<tr><td>$</td><td>101</td><td>Y-axis steps per millimeter</td><td><input type="text" value="` + grblParams['$101'] + `" id="val-` + 101 + `-input"></td></tr>
<tr><td>$</td><td>102</td><td>Z-axis steps per millimeter</td><td><input type="text" value="` + grblParams['$102'] + `" id="val-` + 102 + `-input"></td></tr>
<tr><td>$</td><td>100</td><td>X-axis steps per millimeter</td><td><input type="text" value="` + grblParams['$100'] + `" id="val-` + 100 + `-input"></td><td><button class="button" type="button" onclick="xstepspermm()"><i class="fas fa-calculator"></i></button></td></tr>
<tr><td>$</td><td>101</td><td>Y-axis steps per millimeter</td><td><input type="text" value="` + grblParams['$101'] + `" id="val-` + 101 + `-input"></td><td><button class="button" type="button" onclick="ystepspermm()"><i class="fas fa-calculator"></i></button></td></tr>
<tr><td>$</td><td>102</td><td>Z-axis steps per millimeter</td><td><input type="text" value="` + grblParams['$102'] + `" id="val-` + 102 + `-input"></td><td><button class="button" type="button" onclick="zstepspermm()"><i class="fas fa-calculator"></i></button></td></tr>
<tr><td>$</td><td>110</td><td>X-axis maximum rate, mm/min</td><td><input type="text" value="` + grblParams['$110'] + `" id="val-` + 110 + `-input"></td></tr>
<tr><td>$</td><td>111</td><td>Y-axis maximum rate, mm/min</td><td><input type="text" value="` + grblParams['$111'] + `" id="val-` + 111 + `-input"></td></tr>
<tr><td>$</td><td>112</td><td>Z-axis maximum rate, mm/min</td><td><input type="text" value="` + grblParams['$112'] + `" id="val-` + 112 + `-input"></td></tr>
<tr><td>$</td><td>110</td><td>X-axis maximum rate, mm/min</td><td><input type="text" value="` + grblParams['$110'] + `" id="val-` + 110 + `-input"></td><td></td></tr>
<tr><td>$</td><td>111</td><td>Y-axis maximum rate, mm/min</td><td><input type="text" value="` + grblParams['$111'] + `" id="val-` + 111 + `-input"></td><td></td></tr>
<tr><td>$</td><td>112</td><td>Z-axis maximum rate, mm/min</td><td><input type="text" value="` + grblParams['$112'] + `" id="val-` + 112 + `-input"></td><td></td></tr>
<tr><td>$</td><td>120</td><td>X-axis acceleration, mm/sec<sup>2</sup></td><td><input type="text" value="` + grblParams['$120'] + `" id="val-` + 120 + `-input"></td></tr>
<tr><td>$</td><td>121</td><td>Y-axis acceleration, mm/sec<sup>2</sup></td><td><input type="text" value="` + grblParams['$121'] + `" id="val-` + 121 + `-input"></td></tr>
<tr><td>$</td><td>122</td><td>Z-axis acceleration, mm/sec<sup>2</sup></td><td><input type="text" value="` + grblParams['$122'] + `" id="val-` + 122 + `-input"></td></td></tr>
<tr><td>$</td><td>120</td><td>X-axis acceleration, mm/sec<sup>2</sup></td><td><input type="text" value="` + grblParams['$120'] + `" id="val-` + 120 + `-input"></td><td></td></tr>
<tr><td>$</td><td>121</td><td>Y-axis acceleration, mm/sec<sup>2</sup></td><td><input type="text" value="` + grblParams['$121'] + `" id="val-` + 121 + `-input"></td><td></td></tr>
<tr><td>$</td><td>122</td><td>Z-axis acceleration, mm/sec<sup>2</sup></td><td><input type="text" value="` + grblParams['$122'] + `" id="val-` + 122 + `-input"></td></td><td></td></tr>
<tr><td>$</td><td>130</td><td>X-axis maximum travel, millimeters</td><td><input type="text" value="` + grblParams['$130'] + `" id="val-` + 130 + `-input"></td></tr>
<tr><td>$</td><td>131</td><td>Y-axis maximum travel, millimeters</td><td><input type="text" value="` + grblParams['$131'] + `" id="val-` + 131 + `-input"></td></tr>
<tr><td>$</td><td>132</td><td>Z-axis maximum travel, millimeters</td><td><input type="text" value="` + grblParams['$132'] + `" id="val-` + 132 + `-input"></td></tr>
<tr><td>$</td><td>130</td><td>X-axis maximum travel, millimeters</td><td><input type="text" value="` + grblParams['$130'] + `" id="val-` + 130 + `-input"></td><td></td></tr>
<tr><td>$</td><td>131</td><td>Y-axis maximum travel, millimeters</td><td><input type="text" value="` + grblParams['$131'] + `" id="val-` + 131 + `-input"></td><td></td></tr>
<tr><td>$</td><td>132</td><td>Z-axis maximum travel, millimeters</td><td><input type="text" value="` + grblParams['$132'] + `" id="val-` + 132 + `-input"></td><td></td></tr>
</tbody>
</table>
@ -167,30 +168,35 @@ function grblPopulate() {
}, 100);;
$('#grblSettingsTable').on('keyup paste click', 'input, select', function() {
var hasChanged = false;
for (var key in grblParams) {
if (grblParams.hasOwnProperty(key)) {
var j = key.substring(1)
var newVal = $("#val-" + j + "-input").val();
// Only send values that changed
if (parseFloat(newVal) != parseFloat(grblParams[key])) {
hasChanged = true;
}
}
}
if (hasChanged) {
$('#grblSettingsBadge').fadeIn('slow');
$('#saveBtn').attr('disabled', false).removeClass('disabled');
$('#saveBtnIcon').removeClass('fg-gray').addClass('fg-grayBlue');
} else {
$('#grblSettingsBadge').fadeOut('slow');
$('#saveBtn').attr('disabled', true).addClass('disabled');
$('#saveBtnIcon').removeClass('fg-grayBlue').addClass('fg-gray');
}
checkifchanged()
});
$('#grblSettingsBadge').hide();
}
function checkifchanged() {
var hasChanged = false;
for (var key in grblParams) {
if (grblParams.hasOwnProperty(key)) {
var j = key.substring(1)
var newVal = $("#val-" + j + "-input").val();
// Only send values that changed
if (parseFloat(newVal) != parseFloat(grblParams[key])) {
hasChanged = true;
}
}
}
if (hasChanged) {
$('#grblSettingsBadge').fadeIn('slow');
$('#saveBtn').attr('disabled', false).removeClass('disabled');
$('#saveBtnIcon').removeClass('fg-gray').addClass('fg-grayBlue');
} else {
$('#grblSettingsBadge').fadeOut('slow');
$('#saveBtn').attr('disabled', true).addClass('disabled');
$('#saveBtnIcon').removeClass('fg-grayBlue').addClass('fg-gray');
}
}
function grblSaveSettings() {
for (var key in grblParams) {
if (grblParams.hasOwnProperty(key)) {

Wyświetl plik

@ -1,6 +1,6 @@
{
"name": "OpenBuildsMachineDriver",
"version": "1.0.47",
"version": "1.0.48",
"license": "AGPL-3.0",
"description": "Machine Interface Driver for OpenBuilds",
"author": "github.com/openbuilds <webmaster@openbuilds.com>",