Только не пинайте строго рисовал под себя первый раз ......
По компонентам буферы 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 groupswitch(int_value){case10:case28:case30:case92:// 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.1if(axis_command){FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT);}// [Axis word/command conflict]
axis_command = AXIS_COMMAND_NON_MODAL;}// No break. Continues to next line.case4:case53:
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;case0:case1:case2:case3:case38:// 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.case80:
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;case17:case18:case19:
word_bit = MODAL_GROUP_G2;
gc_block.modal.plane_select = int_value -17;break;case90:case91: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;case93:case94:
word_bit = MODAL_GROUP_G5;
gc_block.modal.feed_rate =94- int_value;break;case20:case21:
word_bit = MODAL_GROUP_G6;
gc_block.modal.units =21- int_value;break;case40:
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; // G40break;case43:case49:
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;}elseif(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;case54:case55:case56:case57:case58:case59:// 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;case61:
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; // G61break;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 без пробела название раздела увидите желаемые опци.
Конкретно эту мне разраб написал .... чтоб можно было без обвязки и кнопок тестить на столе.
Как по мне то лучше.
Я уже писал что наткнулся на глюк со сложной платой и картой высот....
На этой еще ни разу ни че не глючило.
Но опять же тут еще от платы зависит как развести и в платах на атмеге я буферных драйверов вроде не видел, а на своей поставил.
Да и с прогресивной кинематикой както интересней ( это когда в начале движения разгоняется до макс. Заданой скорости а в конце пути притормаживает плавно).
Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.