Помощь в осмыслении.
Re: Помощь в осмыслении.
Есть проект GRBL под STM32. Удалить лишние оси и добавить обработку кнопок с чтением профилей с флешки.
И получится монстр:) для одной оси.
Понимаю что изобретаю велосипед. Стараюсь сделать все сам.
И получится монстр:) для одной оси.
Понимаю что изобретаю велосипед. Стараюсь сделать все сам.
- Реклама
Re: Помощь в осмыслении.
ну... тоже верно. если от этого есть удовольствие и опыт
Re: Помощь в осмыслении.
Вот потренируюсь и начну делать другого монстра:)
Хочу соединить установку HLDI по засветке фоторезиста с ЧПУ. Один контроллер на все с выбором режимов работы.
Загружаешь Gerber и работаешь.
Плюсы Компактность, Один станок значит и меньше расхождений при экспонировании, сверлении.
Но это пока лишь мечты.
Хочу соединить установку HLDI по засветке фоторезиста с ЧПУ. Один контроллер на все с выбором режимов работы.
Загружаешь Gerber и работаешь.
Плюсы Компактность, Один станок значит и меньше расхождений при экспонировании, сверлении.
Но это пока лишь мечты.
Re: Помощь в осмыслении.
точно, засыпать в него горсть компонентов, на выходе спаянная плата 
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Помощь в осмыслении.
Это уже не станок, а живой китаец получается )))))Nranddek писал(а):точно, засыпать в него горсть компонентов, на выходе спаянная плата
Что то мне подсказывает, что если б эта технология была выгодна, то китайские заводы (где горсть плат за 2 бакса делают) об этом кричали на каждом углу своих сайтов... Ан нет... Пишут, что от какого то минимального до какого то максимального диаметра drilling сверлами стандартных метрических и имперских диаметров.. А свыше максимального диаметра грызут фрезой (CNC routed from a smaller drilled hole)...Муркиз писал(а):Ни лазеров, ни гидропробивки нет...
И нигде ни слова про лазер ни про клизму гидропробивку...
Кстати, а как на современных заводах с лазером борятся с обугливанием краев отверстия... Лазер же прожигать должен...
Белая и Пушистая
- Реклама
Re: Помощь в осмыслении.
а может и не борются, а наоборот, используют для последующего омеднения... надо узнать. но вроде, краем уха слышал, что там от эффективности продувки зависит
- Муркиз
- Друг Кота
- Сообщения: 25763
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: Помощь в осмыслении.
Вы не путайте массовое производство и гаражное, где делают платы на заказ частникам.
А крупные заводы все - молчуны. Они не любят выставлять напоказ свои секреты.
А крупные заводы все - молчуны. Они не любят выставлять напоказ свои секреты.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Помощь в осмыслении.
ну так не одними отверстиями под детали плата жива... Крепежные тоже есть... Их от лазера потом чистить надо... Лазер - это локальный нагрев платы, он как прогар - может быть электропроводным. Да и характеристики материала поменять может. а композит платы - он же с определенными характеристиками должен быть, которые перегрев может испортить, не?
ну и если б эта технология была удобна - то явно б китаезы не шифровались. А наоборот, писали б - Super precision LASER drilling technology!
и я не знаю, кроме сквозных отверстий на многослойках и глухари бывают... Сверление дает прогнозируемую и повторяемую точность по глубине сверления... А гидролазер?...
ну и если б эта технология была удобна - то явно б китаезы не шифровались. А наоборот, писали б - Super precision LASER drilling technology!
и я не знаю, кроме сквозных отверстий на многослойках и глухари бывают... Сверление дает прогнозируемую и повторяемую точность по глубине сверления... А гидролазер?...
ну как бы технология если успешна, то шила в мешке утаить нельзя. Но как по мне - CNC и drilling - пока самые дешевые технологии с повторяемым результатомМуркиз писал(а): крупные заводы все - молчуны. Они не любят выставлять напоказ свои секреты.
Белая и Пушистая
Re: Помощь в осмыслении.
Так ведь нагрев - процесс медленный. А если ещё и материал не очень теплопроводный... Полагаю, при мощном лазере и с мощной продувкой там нагрев очень и очень локальный.
Re: Помощь в осмыслении.
Все эти потуги направлены на изучение и практику.
Для конкретной сверлилки. Избыточно.
Это 47 исправление прошивки.
Над пива с неделю попить. А то устал уже:)
Теперь в прошивке:
Удалён Peck Drill.
Есть режимы Drill и DrillPCB.
Управление перемещениями через меню, кнопки UP/DOWN убраны.
Добавлены параметры: speedMoveUp, speedMoveDown, acceleration.
Функция движения переработана: раздельные скорости вверх/вниз + плавный разгон/торможение.
В меню доступны настройки скоростей и ускорения, а также пункт Set Drill Start (сохранение текущей позиции в EEPROM).
Параметры по умолчанию:
Скорость UP: 150-300 мм/мин
Скорость DOWN: 80-150 мм
Структура Config:
struct Config {
// Существующие параметры
float speedMoveDrill;
float speedMovePCB;
// Новые параметры
float speedMoveUp; // скорость движения вверх
float speedMoveDown; // скорость движения вниз
float acceleration; // ускорение в мм/с²
// Остальные параметры...
};
Модификации функции движения:
void moveToPositionMM(float target_mm) {
float current_mm = stepsToMM(stepper.currentPosition());
float speed_mm_min;
// Определение направления движения
if (target_mm > current_mm) {
speed_mm_min = cfg.speedMoveUp;
} else {
speed_mm_min = cfg.speedMoveDown;
}
// Конвертация параметров движения
float speed_steps_sec = mmPerMinToStepsPerSec(speed_mm_min);
float accel_steps_sec2 = cfg.acceleration * stepsPerMM;
// Настройка параметров шагового двигателя
stepper.setMaxSpeed(speed_steps_sec);
stepper.setAcceleration(accel_steps_sec2);
// Выполнение движения
long tgt = mmToSteps(target_mm);
stepper.moveTo(tgt);
while (stepper.distanceToGo() != 0) {
// Проверки на концевики
if (digitalRead(PIN_Z_MIN) == LOW && stepper.distanceToGo() < 0) {
emergencyStop("Z-min");
return;
}
if (digitalRead(PIN_Z_MAX) == LOW && stepper.distanceToGo() > 0) {
emergencyStop("Z-max");
return;
}
stepper.run();
}
}
Изменения в интерфейсе
Обновленное меню:
const char* speedsMenu[] = {
"1. Скорость UP",
"2. Скорость DOWN",
"3. Скорость Drill",
"4. Скорость PCB",
"5. Ускорение",
"6. Возврат"
};
Обработка выбора в меню:
switch(selectedItem) {
case 1: // Скорость UP
menuEditFloat("Speed UP (mm/min)", cfg.speedMoveUp, 1.0f, 10.0f, 3000.0f);
break;
case 2: // Скорость DOWN
menuEditFloat("Speed DOWN (mm/min)", cfg.speedMoveDown, 1.0f, 10.0f, 3000.0f);
break;
case 3: // Скорость Drill
menuEditFloat("Speed Drill (mm/min)", cfg.speedMoveDrill, 1.0f, 10.0f, 3000.0f);
break;
case 4: // Скорость PCB
menuEditFloat("Speed PCB (mm/min)", cfg.speedMovePCB, 1.0f, 10.0f, 3000.0f);
break;
case 5: // Ускорение
menuEditFloat("Acceleration (mm/s²)", cfg.acceleration, 10.0f, 50.0f, 500.0f);
break;
}
Планирую переход на TFT ST7789V 240×320 (SPI, 7 pin) - По цене даже дешевле чем LCD 2004.
ST7789V TFT — TFT-дисплей 240×320 с интерфейсом SPI.
7 пинов: VCC, GND, SCL, SDA, RES, DC, CS.
Буду использовать:
TFT_eSPI (поддерживает STM32).
Код инициализации (пример для Adafruit_ST7789)
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
// Подключение SPI пинов STM32 → ST7789V
#define TFT_CS PB12
#define TFT_RST PB13
#define TFT_DC PB14
Adafruit_ST7789 tft = Adafruit_ST7789(&SPI, TFT_CS, TFT_DC, TFT_RST);
void setup() {
tft.init(240, 320); // разрешение
tft.setRotation(1); // поворот 0-3
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
tft.setTextSize(2);
tft.setCursor(0,0);
tft.print("Drill Controller");
}
Изменения логики меню
Все вызовы lcd.print() заменить на tft.print().
Установка курсора lcd.setCursor(col,row) → на tft.setCursor(x,y) (в пикселях).
Размер символов задаётся tft.setTextSize(n) (например, n=2 для удобного чтения).
Для конкретной сверлилки. Избыточно.
Это 47 исправление прошивки.
Над пива с неделю попить. А то устал уже:)
Теперь в прошивке:
Удалён Peck Drill.
Есть режимы Drill и DrillPCB.
Управление перемещениями через меню, кнопки UP/DOWN убраны.
Добавлены параметры: speedMoveUp, speedMoveDown, acceleration.
Функция движения переработана: раздельные скорости вверх/вниз + плавный разгон/торможение.
В меню доступны настройки скоростей и ускорения, а также пункт Set Drill Start (сохранение текущей позиции в EEPROM).
Параметры по умолчанию:
Скорость UP: 150-300 мм/мин
Скорость DOWN: 80-150 мм
Структура Config:
struct Config {
// Существующие параметры
float speedMoveDrill;
float speedMovePCB;
// Новые параметры
float speedMoveUp; // скорость движения вверх
float speedMoveDown; // скорость движения вниз
float acceleration; // ускорение в мм/с²
// Остальные параметры...
};
Модификации функции движения:
void moveToPositionMM(float target_mm) {
float current_mm = stepsToMM(stepper.currentPosition());
float speed_mm_min;
// Определение направления движения
if (target_mm > current_mm) {
speed_mm_min = cfg.speedMoveUp;
} else {
speed_mm_min = cfg.speedMoveDown;
}
// Конвертация параметров движения
float speed_steps_sec = mmPerMinToStepsPerSec(speed_mm_min);
float accel_steps_sec2 = cfg.acceleration * stepsPerMM;
// Настройка параметров шагового двигателя
stepper.setMaxSpeed(speed_steps_sec);
stepper.setAcceleration(accel_steps_sec2);
// Выполнение движения
long tgt = mmToSteps(target_mm);
stepper.moveTo(tgt);
while (stepper.distanceToGo() != 0) {
// Проверки на концевики
if (digitalRead(PIN_Z_MIN) == LOW && stepper.distanceToGo() < 0) {
emergencyStop("Z-min");
return;
}
if (digitalRead(PIN_Z_MAX) == LOW && stepper.distanceToGo() > 0) {
emergencyStop("Z-max");
return;
}
stepper.run();
}
}
Изменения в интерфейсе
Обновленное меню:
const char* speedsMenu[] = {
"1. Скорость UP",
"2. Скорость DOWN",
"3. Скорость Drill",
"4. Скорость PCB",
"5. Ускорение",
"6. Возврат"
};
Обработка выбора в меню:
switch(selectedItem) {
case 1: // Скорость UP
menuEditFloat("Speed UP (mm/min)", cfg.speedMoveUp, 1.0f, 10.0f, 3000.0f);
break;
case 2: // Скорость DOWN
menuEditFloat("Speed DOWN (mm/min)", cfg.speedMoveDown, 1.0f, 10.0f, 3000.0f);
break;
case 3: // Скорость Drill
menuEditFloat("Speed Drill (mm/min)", cfg.speedMoveDrill, 1.0f, 10.0f, 3000.0f);
break;
case 4: // Скорость PCB
menuEditFloat("Speed PCB (mm/min)", cfg.speedMovePCB, 1.0f, 10.0f, 3000.0f);
break;
case 5: // Ускорение
menuEditFloat("Acceleration (mm/s²)", cfg.acceleration, 10.0f, 50.0f, 500.0f);
break;
}
Планирую переход на TFT ST7789V 240×320 (SPI, 7 pin) - По цене даже дешевле чем LCD 2004.
ST7789V TFT — TFT-дисплей 240×320 с интерфейсом SPI.
7 пинов: VCC, GND, SCL, SDA, RES, DC, CS.
Буду использовать:
TFT_eSPI (поддерживает STM32).
Код инициализации (пример для Adafruit_ST7789)
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
// Подключение SPI пинов STM32 → ST7789V
#define TFT_CS PB12
#define TFT_RST PB13
#define TFT_DC PB14
Adafruit_ST7789 tft = Adafruit_ST7789(&SPI, TFT_CS, TFT_DC, TFT_RST);
void setup() {
tft.init(240, 320); // разрешение
tft.setRotation(1); // поворот 0-3
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
tft.setTextSize(2);
tft.setCursor(0,0);
tft.print("Drill Controller");
}
Изменения логики меню
Все вызовы lcd.print() заменить на tft.print().
Установка курсора lcd.setCursor(col,row) → на tft.setCursor(x,y) (в пикселях).
Размер символов задаётся tft.setTextSize(n) (например, n=2 для удобного чтения).
- Муркиз
- Друг Кота
- Сообщения: 25763
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: Помощь в осмыслении.
Позиционные двигатели шаговые ? Редукторные ?
Шаг с пикселом синхронизирован ?
А если на аналоговых движках - то датчиков перемещения ?
Шаг с пикселом синхронизирован ?
А если на аналоговых движках - то датчиков перемещения ?
Re: Помощь в осмыслении.
Использую шаговый двигатель.
Количество шагов автоматически пересчитывается в соответствии с выставленным микрошагом.
1/1 -200 шагов. 1/16 =200х16 = 3 200 шагов. на оборот.
Пример: двигатель работает с расчётом, что один шаг равен 1,8 градуса, полный оборот двигателя (360 градусов) будет совершён за 200 шагов.
Если переключиться на микрошаговый режим 1/16, то количество шагов на оборот составит 3200 (200 × 16)
Количество шагов автоматически пересчитывается в соответствии с выставленным микрошагом.
1/1 -200 шагов. 1/16 =200х16 = 3 200 шагов. на оборот.
Пример: двигатель работает с расчётом, что один шаг равен 1,8 градуса, полный оборот двигателя (360 градусов) будет совершён за 200 шагов.
Если переключиться на микрошаговый режим 1/16, то количество шагов на оборот составит 3200 (200 × 16)
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Помощь в осмыслении.
Zauruss34, а кнопка/педаль "начать сверление" есть? Или каждая дырка через меню?
PS. Научитесь прятать простыни своего кода под спойлер + тут есть блок code, который делает текст моноширинным, вроде даже с автоформатированием..
PS. Научитесь прятать простыни своего кода под спойлер + тут есть блок code, который делает текст моноширинным, вроде даже с автоформатированием..
Белая и Пушистая
Re: Помощь в осмыслении.
Just_Fluffy, Прошу прощения. Исправлюсь.
Кнопка Drill -Ручное сверление.
Кнопка DrillPCB - автомат (после сверления возврат в стартовую позицию = +2мм от поверхности платы - СТОП шпиндель).
Педалька запланирована.
Осталось 3 кнопки:
2 режима сверления и кнопка смены инструмента.
Всё остальное в меню (используется только для настроек).
Пока чищу от режима Peek. Ибо как оказалось только мешает.
Собрал все в кучу:
Вроде прошилось и пока не отваливается:)
Скетч использует 38044 байт (58%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 1792 байт (8%) динамической памяти, оставляя 18688 байт для локальных переменных. Максимум: 20480 байт.
До этого проверял кусками.
Кнопка Drill -Ручное сверление.
Кнопка DrillPCB - автомат (после сверления возврат в стартовую позицию = +2мм от поверхности платы - СТОП шпиндель).
Педалька запланирована.
Осталось 3 кнопки:
2 режима сверления и кнопка смены инструмента.
Всё остальное в меню (используется только для настроек).
Пока чищу от режима Peek. Ибо как оказалось только мешает.
Собрал все в кучу:
Вроде прошилось и пока не отваливается:)
Скетч использует 38044 байт (58%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 1792 байт (8%) динамической памяти, оставляя 18688 байт для локальных переменных. Максимум: 20480 байт.
До этого проверял кусками.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Помощь в осмыслении.
вот как по мне - все эти режимы для _ручной_ сверлилки только мешают. Удобнее всего рукоятка - ею и скорость подачи регулируется, и обратная связь чувствуется... И бегом назад вернуться, если прицелился плохо... А вот такие изыски нужны только если потом это будет полноценный CNC...
Кстати, если будете делать педаль, то сделайте немедленное поднятие шпинделя при отпускании педали. Те. пока нажата педаль - шпиндель идет в нижнюю точку. Далее - ну либо сам поднимается, либо ждет отпускания педали (это можно в настройки вынести). А если педаль отпущена в процессе опускания шпинделя - немедленно поднять его вверх. Тогда при случайном нажатии педали или при плохом прицеливании снизится шанс получить незапланированное отверстие в неправильном месте
Кстати, если будете делать педаль, то сделайте немедленное поднятие шпинделя при отпускании педали. Те. пока нажата педаль - шпиндель идет в нижнюю точку. Далее - ну либо сам поднимается, либо ждет отпускания педали (это можно в настройки вынести). А если педаль отпущена в процессе опускания шпинделя - немедленно поднять его вверх. Тогда при случайном нажатии педали или при плохом прицеливании снизится шанс получить незапланированное отверстие в неправильном месте
Белая и Пушистая
Re: Помощь в осмыслении.
Можно сделать две педали, их сложнее случайно нажать 
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Помощь в осмыслении.
тогда три 
и селектор режимов сверления справа
"...плачет девушка в беемве...
педалек три, а ножек две..."
и селектор режимов сверления справа
"...плачет девушка в беемве...
педалек три, а ножек две..."
Белая и Пушистая
Re: Помощь в осмыслении.
Just_Fluffy,
При нажатии кнопки BTN_DRILL (PA3): (Ручное сверление)
Процесс сверления:
Включается шпиндель с мощностью, заданной в конфигурации (cfg.speedPWMDrill)
Происходит движение вниз с заданной скоростью (cfg.speedDrillDrill)
Шаг движения вниз составляет 0.2 мм
Движение прекращается при:
Достижении нижнего предела (surface_mm - maxManualDepth)
Отпуске кнопки
аварийной ситуации
Завершение операции:
После отпускания кнопки или достижения предела:
Происходит возврат в стартовую позицию (posDrillStart)
Отключается шпиндель
Я понимаю что то что я делаю избыточно.
Но для мастерских где часто производят сверление думаю оправданно.
В том числе и режим peck drill для всех режимов сверления.
А скоростью шпинделя на больших сверлилках можно рулить частотником (0-10v, 4-20ma)
При нажатии кнопки BTN_DRILL (PA3): (Ручное сверление)
Процесс сверления:
Включается шпиндель с мощностью, заданной в конфигурации (cfg.speedPWMDrill)
Происходит движение вниз с заданной скоростью (cfg.speedDrillDrill)
Шаг движения вниз составляет 0.2 мм
Движение прекращается при:
Достижении нижнего предела (surface_mm - maxManualDepth)
Отпуске кнопки
аварийной ситуации
Завершение операции:
После отпускания кнопки или достижения предела:
Происходит возврат в стартовую позицию (posDrillStart)
Отключается шпиндель
Я понимаю что то что я делаю избыточно.
Но для мастерских где часто производят сверление думаю оправданно.
В том числе и режим peck drill для всех режимов сверления.
А скоростью шпинделя на больших сверлилках можно рулить частотником (0-10v, 4-20ma)
Re: Помощь в осмыслении.
[uquote="Zauruss34",url="/forum/viewtopic.php?p=4742085#p4742085"]Но для мастерских где часто производят сверление думаю оправданно.[/uquote]Сомнительно. Для них будет более оправданно купить за 10-15 тысяч маленький CNC3018, или дороже, но побольше, или ещё дороже и ещё больше и т.д.
Re: Помощь в осмыслении.
Nranddek, Смотря что сверлить. При цене управляющей платы + детальки вместе с педалью не более 10 долларов. Вопрос о приобретении нового оборудования и стоять не будет.
CNC3018 уже за бюджет вылез. А если сверлить сталь 5мм то уже и не годится. Все что надёжно и может сверлить от 5мм сильно дороже.
Сверлильный станок с автоподачей шпинделя и регулировкой оборотов начинается от 200000 р.
Либо полноценный ЧПУ станок по металлу.
CNC3018 уже за бюджет вылез. А если сверлить сталь 5мм то уже и не годится. Все что надёжно и может сверлить от 5мм сильно дороже.
Сверлильный станок с автоподачей шпинделя и регулировкой оборотов начинается от 200000 р.
Либо полноценный ЧПУ станок по металлу.


