Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Только не пинайте строго рисовал под себя первый раз ......
По компонентам буферы SN74HC541N , стаб на 12 вольт XL4005E1стаб на 5 вольт MP1584-MICRO-POWER самовостонавливающийся предохранитель на 3 ампера ну и оптроны брал EL817. Вторая плата Arduino Pro Mini это тахометр для драйвера шпинделя WS55-200 питается от него сигналы от STM32 развязаны оптронами. С PWM сигналом не все так гладко как хотелось ..... сильно по экспоненте напряжение растет нет линейности управления скоростью.
По подключению Блютуза сделана развязка через два диода и подтягивающий резик линии ТХ блютуза (эксперимент по созданию управления станком через свой офлайн контроллер).
Учтите что некоторые полигоны на землю в Coopercam надо удалить оставив только сверловку.
Ну и ссылка на на первоисточник платы GitHub - avizienis/Minimal-Black-Pill--STM32F4xx-BOB-for-grblHAL: Single layer breakout board for the popular Black Pill. Features 4 axes, 5V outputs, optoisolated inputs.
Ваши сообщения автоматически объединены:
Да еще момент управляющие провода на драйверы скручены витой парой по принципу Dir + GND, Step + GND, EN + GND и длиной около 10 см.
Прогресивная кинематика.
Возможность работать с большим количеством шагов в еденицу времени.
Я с родной не мог вырезать одны платы с картой высот.
А вот с этой все отлично.
Атмега 328 прошлый век.
А тут stm32 и частота почти в 10 раз выше.
Прогресивная кинематика.
Возможность работать с большим количеством шагов в еденицу времени.
Я с родной не мог вырезать одны платы с картой высот.
А вот с этой все отлично.
Атмега 328 прошлый век.
А тут stm32 и частота почти в 10 раз выше.
Немного поширше, я на Гитхабе глянул. Но ожидаемого поворота плоскостей (G68), не нашёл . А может и есть, только под другими командами. Расшифровки команд не нашел.
Немного поширше, я на Гитхабе глянул. Но ожидаемого поворота плоскостей (G68), не нашёл . А может и есть, только под другими командами. Расшифровки команд не нашел.
Немного поширше, я на Гитхабе глянул. Но ожидаемого поворота плоскостей (G68), не нашёл . А может и есть, только под другими командами. Расшифровки команд не нашел.
Здесь все, что понимает (смайликов в кодах нет,сайт автоматически расставил) Небольшая просьба - исходный код помещать в тэги "Код" (тогда и смайликов не будет), а длинный код ещё и помещать под спойлер.
C++:
// Determine 'G' command and its modal group
switch(int_value) {
case 10: case 28: case 30: case 92:
// Check for G10/28/30/92 being called with G0/1/2/3/38 on same block.
// * G43.1 is also an axis command but is not explicitly defined this way.
if (mantissa == 0) { // Ignore G28.1, G30.1, and G92.1
if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict]
axis_command = AXIS_COMMAND_NON_MODAL;
}
// No break. Continues to next line.
case 4: case 53:
word_bit = MODAL_GROUP_G0;
gc_block.non_modal_command = int_value;
if :(int_value == 28) || (int_value == 30) || (int_value == 92:) {
if (!:(mantissa == 0) || (mantissa == 10:)) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); }
gc_block.non_modal_command += mantissa;
mantissa = 0; // Set to zero to indicate valid non-integer G command.
}
break;
case 0: case 1: case 2: case 3: case 38:
// Check for G0/1/2/3/38 being called with G10/28/30/92 on same block.
// * G43.1 is also an axis command but is not explicitly defined this way.
if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict]
axis_command = AXIS_COMMAND_MOTION_MODE;
// No break. Continues to next line.
case 80:
word_bit = MODAL_GROUP_G1;
gc_block.modal.motion = int_value;
if (int_value == 38){
if (!:(mantissa == 20) || (mantissa == 30) || (mantissa == 40) || (mantissa == 50:)) {
FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G38.x command]
}
gc_block.modal.motion += (mantissa/10)+100;
mantissa = 0; // Set to zero to indicate valid non-integer G command.
}
break;
case 17: case 18: case 19:
word_bit = MODAL_GROUP_G2;
gc_block.modal.plane_select = int_value - 17;
break;
case 90: case 91:
if (mantissa == 0) {
word_bit = MODAL_GROUP_G3;
gc_block.modal.distance = int_value - 90;
} else {
word_bit = MODAL_GROUP_G4;
if :(mantissa != 10) || (int_value == 90:) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G90.1 not supported]
mantissa = 0; // Set to zero to indicate valid non-integer G command.
// Otherwise, arc IJK incremental mode is default. G91.1 does nothing.
}
break;
case 93: case 94:
word_bit = MODAL_GROUP_G5;
gc_block.modal.feed_rate = 94 - int_value;
break;
case 20: case 21:
word_bit = MODAL_GROUP_G6;
gc_block.modal.units = 21 - int_value;
break;
case 40:
word_bit = MODAL_GROUP_G7;
// NOTE: Not required since cutter radius compensation is always disabled. Only here
// to support G40 commands that often appear in g-code program headers to setup defaults.
// gc_block.modal.cutter_comp = CUTTER_COMP_DISABLE; // G40
break;
case 43: case 49:
word_bit = MODAL_GROUP_G8;
// NOTE: The NIST g-code standard vaguely states that when a tool length offset is changed,
// there cannot be any axis motion or coordinate offsets updated. Meaning G43, G43.1, and G49
// all are explicit axis commands, regardless if they require axis words or not.
if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] }
axis_command = AXIS_COMMAND_TOOL_LENGTH_OFFSET;
if (int_value == 49) { // G49
gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_CANCEL;
} else if (mantissa == 10) { // G43.1
gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC;
} else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported G43.x command]
mantissa = 0; // Set to zero to indicate valid non-integer G command.
break;
case 54: case 55: case 56: case 57: case 58: case 59:
// NOTE: G59.x are not supported. (But their int_values would be 60, 61, and 62.)
word_bit = MODAL_GROUP_G12;
gc_block.modal.coord_select = int_value - 54; // Shift to array indexing.
break;
case 61:
word_bit = MODAL_GROUP_G13;
if (mantissa != 0) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G61.1 not supported]
// gc_block.modal.control = CONTROL_MODE_EXACT_PATH; // G61
break;
default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G command]
}
if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [Unsupported or invalid Gxx.x command]
// Check for more than one command per modal group violations in the current block
// NOTE: Variable 'word_bit' is always assigned, if the command is valid.
if ( bit_istrue(command_words,bit(word_bit:) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); }
command_words |= bit(word_bit);
break;
Только не пинайте строго рисовал под себя первый раз ......
По компонентам буферы SN74HC541N , стаб на 12 вольт XL4005E1стаб на 5 вольт MP1584-MICRO-POWER самовостонавливающийся предохранитель на 3 ампера ну и оптроны брал EL817. Вторая плата Arduino Pro Mini это тахометр для драйвера шпинделя WS55-200 питается от него сигналы от STM32 развязаны оптронами. С PWM сигналом не все так гладко как хотелось ..... сильно по экспоненте напряжение растет нет линейности управления скоростью.
По подключению Блютуза сделана развязка через два диода и подтягивающий резик линии ТХ блютуза (эксперимент по созданию управления станком через свой офлайн контроллер).
Учтите что некоторые полигоны на землю в Coopercam надо удалить оставив только сверловку.
Ну и ссылка на на первоисточник платы GitHub - avizienis/Minimal-Black-Pill--STM32F4xx-BOB-for-grblHAL: Single layer breakout board for the popular Black Pill. Features 4 axes, 5V outputs, optoisolated inputs.
Ваши сообщения автоматически объединены:
Да еще момент управляющие провода на драйверы скручены витой парой по принципу Dir + GND, Step + GND, EN + GND и длиной около 10 см.
Параметр.
Введите его и кнопки инвертируются.
Введите $help и контроллер выдаст доп меню, добавляя к help без пробела название раздела увидите желаемые опци.
Конкретно эту мне разраб написал .... чтоб можно было без обвязки и кнопок тестить на столе.
Как по мне то лучше.
Я уже писал что наткнулся на глюк со сложной платой и картой высот....
На этой еще ни разу ни че не глючило.
Но опять же тут еще от платы зависит как развести и в платах на атмеге я буферных драйверов вроде не видел, а на своей поставил.
Да и с прогресивной кинематикой както интересней ( это когда в начале движения разгоняется до макс. Заданой скорости а в конце пути притормаживает плавно).
Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.