Собственно была такая проблема, спасибо добрым людям - помогли решить:
Не крутились движки в GRBL-controller.
Драйвер и движок проверял, прямо на шилде без GRBL, мною написанным скетчем - крутит его отлично.
GRBL-controller ардуину с шилдом видит. Команды принимает, не ругается.
G0 F100
G0 X1 - выполняет Если нажать на стрелочку - движение есть.
Но, например:...
G0 X20 - GRBL-controller изображает, что все в порядке, координаты меняются на +20, но двигатель не крутится...
В это время амперметр показывает ток на движке - 0. Хотя пока стоит без движения примерно 0,5 А.
Более того, пару месяцев назад получалось все и с GRBL-controller.
Но потом снес из памяти ардуины скетч - пример из библиотеки GRBL (использовал ардуину для других проектов).
Да, и если зайти в консоль - Grbl 0.9j ['$' for help] - появляется.
Но если отправить "$" - ничего не происходит...
Хотя непосредственно в Grbl-controller все эти команды работают.
Настройки GRBL по умолчанию. Пока не менял.
Решение - попадались старые левые прошивки GRBL. Вот здесь скачал последнюю и... все )))
добрый день! начел собирать чпу на токихже двигателях, в качестве кантролера в зял ардуино UNO шилд версии 3 и драйвера А4988. вот у меня вопрос к вам не подскажите на шилд для управления двигателями вы какое напряжение использовали 12в или 24в
По нормальному надо подавать 24В, но тогда питание ардуинки нужно делать отдельно - стабилизатор у нее не рассчитан на такое напряжение (максимум 17-19В и то на пределе, будет такой что жарить на нем можно будет). Соответственно линии надо будет разделять. На 12В работать будет, но потеряете в динамике и скорости.
Ну для фанеры простая спиральная фреза не очень подходит. Даже очень острые они довольно сильно мохрят край (хотя у меня пока все они мохрят, но спиральные ужас какой-то). Лучше использовать вертикальную (без спирали) или кукурузу. Фрезы больше 2 мм для совсем мелких нежестких станков я бы не стал брать, но сильно тонкие тоже не стоит, оптимально - 1.5-2мм. При обработке кукурузой стоит учитывать что у нее плохой отвод стружки и заглубляться надо постепенно.
Вопрос к sav13 - брали фрезы по ссылке (кстати эта около 1.5мм - 1/16"=1.5875мм, не очень удобный для вычисления размер)? Интересует кончик, не получается найти двухзаходную фрезу с правильно заточенным кончиком, у всех как будто лопату точили.
Вопрос к sav13 - брали фрезы по ссылке (кстати эта около 1.5мм - 1/16"=1.5875мм, не очень удобный для вычисления размер)? Интересует кончик, не получается найти двухзаходную фрезу с правильно заточенным кончиком, у всех как будто лопату точили.
Брал несколько фрез для акрила у этого продавца, еще разных доложил, так как доставка все равно платная, а так дешевле получалось. Эти фрезы нормально берут не очень толстый акрил без охлаждения. Фанеру не замечал, чтобы мохрили - кромка очень острая у них и рез получается ровный. А вот кукуруза на толстой фанере греется и начинает жечь. Может из-за того что кукуруза китайская, тупая у меня )))
Дюймовые размеры не очень удобно, но один раз приспосабливаешься к размеру и нормально
Добрый день извеняюсь за беспокойство. Я ранее писал что начел сборку станка на двигателях m49sp-2k но шилд решил поменять на версию 4 с arduino NANO а драйвера оставил теже A4988 и вот я его собрал. Залил прошивку grbl 9 но он не хочет работать. двигателя на осях подергиваются иногда на пол шага и все. пробывал подавать 24в сняв перемычку подачи 12 вольт и подал на обозначенные клемы 24v не чего не изменилось. Как новичек я несилен в этом подскажите пожалуйста что нужно сделать буду очень я признатилен. С уважением Михаил.
Добрый день извеняюсь за беспокойство. Я ранее писал что начел сборку станка на двигателях m49sp-2k но шилд решил поменять на версию 4 с arduino NANO а драйвера оставил теже A4988 и вот я его собрал. Залил прошивку grbl 9 но он не хочет работать. двигателя на осях подергиваются иногда на пол шага и все. пробывал подавать 24в сняв перемычку подачи 12 вольт и подал на обозначенные клемы 24v не чего не изменилось. Как новичек я несилен в этом подскажите пожалуйста что нужно сделать буду очень я признатилен. С уважением Михаил.
1. Неправильно подключены движки (перепутаны провода)
2. Движкам не хватает усилия крутить оси - механика слишком тугая
3. Неправильно выставлен ток а драйвере
Когда-то давным давно я тоже начел, но начел с того, что электронику, подключил к движкам, лежащим на столе, настроил ток на драйверах, залил прошивку и попробовал выполнять G-код. Когда убедился, что все работает, приступи к сборке.....но до готового станка у меня дело не дошло....
Полностью согласен с предыдущими. Надо сначала научить двигатели шевелиться без нагрузки, выяснить их предельные возможности на холостых, а уже после ставить на оборудование и делать донастройку.
зы. Механика должна рукой ленгко приводиться в движение пальцами, если винт уже на месте, то он должен легко вращаться от усилия двух пальцев, если винта еще нету, то все должно перемещаться также от легкого толчка.
Да ходовые гайки у меня туговаты ктк чтобы избежать люфтов но пальцами крутятся оси, буду пружины урезать и двигатели сниму буду пробовать обучить. Спасибо за подсказки фото скину позже
Добрый день! я снял электронику со станка и что я только не перепробовал, менял провода местами, проршивки, заливал скетчи нечего не выходит. двигатели либо не двигаются либо вибрируют либо двигаются только в одну сторону рывком и все. может проблема с драйверами? или шилдом может вовсе нужно чтото прописать в прошивке?
Всем доброе утро, долго вдохновлялся вашими успехами)))
Вот собрал свой станок. Станина из профильной трубы 40х20 и 20х20, двигатели Nema17, драйвера A4988, управление программой Mach3. Материалы на его изготовление стоили окло 13 т.р., не считая старого компа с LPT(с БП копьютера 12 В используется для питания моторов). В качестве шпинделя китайский гравер на 135 Вт. В качестве стола доски, фрезерованные самим станком для придания ровности))
Дерево обрабатывать можно, но осторожно. А фрезеровать ПП вроде можно, но тут отдельная проблема как из герберов сделать нормальную УП, что-то простое конечно получается.
Вопрос в том, кто-то смог довести эту идею до конца или это гиблое дело?
И второй вопрос, подскажите какие пути для решения поставленной задачи кто-то из вас встречал?
Я вижу два варианта: 1) - идеальный, управление осями остается у Mach3, но добавляется какая-то программа для контроля температуры и подачи пластика экструдером....
2) Докупаю плату RAMPS 1.4 и прошивкой Maarlin получаю желанный 3д принтер.... но надо будет переключать не только шпиндель, но и двигатели с платы на плату...
У меня работает под МАЧ, без всяких аддонов, просто в текстовом редакторе автозаменой меняем все "E" на "A" и МАЧ проглатывает. Нагрев экструдера и стола-автономный. На 168 ардуинке. Первые запчасти для принтера печатал на большом фрезере, с полем 1000х500х300. Т.к. каретки тяжелые (около 30 кг) то печать была очень медленной. http://3dtoday.ru/blogs/svm/project-dragon/
У меня работает под МАЧ, без всяких аддонов, просто в текстовом редакторе автозаменой меняем все "E" на "A" и МАЧ проглатывает. Нагрев экструдера и стола-автономный.
То что мне надо, но как я понял есть отдельные команды в G-кодах для экструдера, типа подача пластика, скорость, направление.. В том чуде, что я заказал идет термопара (К-type) и как я понял резистор в роли нагревателя, с термопарой нужна схема усилитиля, чтобы ваять что-то свое под Ардуино))
Экструдер включен как ось "А". И соответственно калибруется. В G кодах меняется наименование осей-вместо "Е", указывается "А"и все. По нагревателю- используется стандартный для всех китайцев. В качестве термодатчика NTC резистор на 100 кОм.
Дело было давно, но сейчас попрбую поискать схему и скетч.
Вот скетч, управление две кнопки и два переменных резистора
// Версия для про мини
//входы установки А2 - экструдер, А3 - стол
//входы термисторов А6 - экструдер, А7 - стол
//инверсные выходы нагрева D2 - экструдер, D3 - стол
#include <Wire.h>
float t_extr,t_stol,t_sr;
int rez,Ust_extr,Ust_stol;
unsigned long StartTime;
byte i,e,s,scan_code,rev;
byte simv[15]={63,6,91,79,102,109,125,7,127,111,64,129,65,8,72};//знакогенер ТМ 1650
byte simv_razr[4];//разряды индикатора
//---------------------------------------------------------------------------------------
void setup(void)
{Wire.begin();Wire.beginTransmission(36);Wire.write(17);Wire.endTransmission();//инит индикатора
//Serial.begin(9600);
//analogReference(EXTERNAL);// лучше подключить AREF к 3.3 В,и питать ими цепь термистора
//так как он не так сильно "шумит"
rev=1;// показать реальную температуру экструдера
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop(void)
{
// выбор режима двумя кнопками кратковременное нажатие-реальная температура, длительное установка
Wire.beginTransmission(0x25); // обращаемся к клавиатуре(к любому порту 0х24-0х27)
Wire.requestFrom((0x25), 1); //запрашиваем один байт
scan_code = Wire.read(); // читаем скан код TM 1650
Wire.endTransmission();
if (scan_code == 68)rev=1;//режим экструдер
if (scan_code == 108)rev=3;//режим стол
if (scan_code <60) StartTime=millis();//если кнопки не нажаты
if(millis() - StartTime>1000)rev++;//если долго нажаты показываем установки
// Устновка температуры экструдера
t_sr = 0;
for (i=0; i< 10; i++) {
t_sr += analogRead(A2);
delay(10);
}
Ust_extr=(int(t_sr /= 10)>>4)+187;// измеряем 10 раз, сдвигаем в диапазон 187-250 град.
// Устновка температуры стола
t_sr = 0;
for (i=0; i< 10; i++) {
t_sr += analogRead(A3);
delay(10);
}
Ust_stol=(int(t_sr /= 10)>>4)+77;// измеряем 10 раз, сдвигаем в диапазон 77-150 град.
// измеряем температуру экструдера(10 раз для усреднения)
//int i;
t_sr = 0;
for (i=0; i< 10; i++) {
t_sr += analogRead(A6);
delay(10);
// теория http://arduino-diy.com/arduino-thermistor
}
t_sr /= 10;
t_sr = 1023 / t_sr - 1; // конвертируем значение в сопротивление
t_sr = 9820 / t_sr; // 9820 -реальное значение резистора делителя
t_extr = t_sr / 100000; // (R/Ro)
t_extr = log(t_extr); // ln(R/Ro)
t_extr /= 3950; // 1/B * ln(R/Ro)
t_extr += 1.0 / 298.15; // + (1/To)//(25 + 273.15)
t_extr = 1.0 / t_extr; // инвертируем
t_extr -= 273.15; // конвертируем в градусы по Цельсию
if (t_extr < Ust_extr) digitalWrite(2, LOW);//63+187=250
else digitalWrite(2,HIGH );
// измеряем температуру стола
//int i;
t_sr = 0;
for (i=0; i< 10; i++) {
t_sr += analogRead(A7);
delay(10);
}
t_sr /= 10;
t_sr = 1023 / t_sr - 1; // конвертируем значение в сопротивление
t_sr = 9820 / t_sr;
t_stol = t_sr / 100000; // (R/Ro)
t_stol = log(t_stol); // ln(R/Ro)
t_stol /= 3950; // 1/B * ln(R/Ro)
t_stol += 1.0 / 298.15; // + (1/To)//(25 + 273.15)
t_stol = 1.0 / t_stol; // инвертируем
t_stol -= 273.15; // конвертируем в градусы по Цельсию
if (t_stol < Ust_stol) digitalWrite(3, LOW);// 63+77=150
else digitalWrite(3, HIGH);
Chow_disp();
//Serial.print("Temperature ");
//Serial.print(t_extr);
//Serial.print(" // ");
//Serial.print(rez);
//Serial.print(" *C Rev - ");
//Serial.print(rev);
//Serial.print(" * Ust_extr - ");
//Serial.print(Ust_extr);
//Serial.print(" * Ust_stol - ");
//Serial.println(Ust_stol);
delay(150);
}
//***********************************************************************************
void Chow_disp(){
if (rev==1)rez= t_extr;
if (rev==2)rez= Ust_extr;
if (rev==3)rez= t_stol;
if (rev==4)rez= Ust_stol;
simv_razr[0]=(rez%10);
simv_razr[1]=(rez%100/10);
simv_razr[2]=(rez%1000/100);
simv_razr[3]=(rev+10);
Wire.beginTransmission(55);Wire.write(simv[simv_razr[0]]);Wire.endTransmission();
Wire.beginTransmission(54);Wire.write(simv[simv_razr[1]]);Wire.endTransmission();
Wire.beginTransmission(53);Wire.write(simv[simv_razr[2]]);Wire.endTransmission();
Wire.beginTransmission(52);Wire.write(simv[simv_razr[3]]);Wire.endTransmission();
}
Вот нашел, кажется рабочий вариант, для установки используются два переменных резистора 1-10 кОм
Кнопки подключены с ТМ1650, и обрабатываются ей. Где-то был еще вариант с графическим дисплеем от старенькой Моторолы С115 и ПИД регулятором. Но заметного улучшения он не дает. Только удобство пользования. Если найду выложу.
#include <Adafruit_GFX.h>
#include <ST7558.h>
#include <Wire.h>
#include <PID_v1.h>
//***********************Входа*********************************
#define T1 A6 //thermistor 1 подключен к A1
#define T2 A7 //thermistor 2 подключен к A0
#define Pot_Extruder_Pin A2 // установка температуры экструдера
#define Pot_Bed_Pin A1 // установка температуры стола
//***********************Выхода********************************
#define ExtruderOutput 10 //выход нагрева экструдера
#define BedOutput 9 //выход нагрева стола
#define RST A0 //сброс С115
ST7558 lcd = ST7558(RST);
unsigned long StartTime;
long POT_previousMillis = 0; // will store last time LED was updated
long POT_interval = 300; // Периодичность проверки установок температуры
long Ustan_previousMillis =0;//
long Ustan_interval = 2000; // Длительность режима установки
long Display_previousMillis =0;
long Display_interval = 500;// Периодичность вывода на дисплей
double Current_Extruder_Temp = 0;
double Extruder_Temp = 185;
double Set_Extruder_Temp = 185;
double Current_Bed_Temp = 0;
double Bed_Temp = 75;
double Set_Bed_Temp = 75;
byte rev;
int Extruder_Pot_Value;
int Bed_Pot_Value;
float current_cels;
#define LOGO16_GLCD_HEIGHT 32
#define LOGO16_GLCD_WIDTH 40
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{0x7f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x3,
0xc7, 0xff, 0xff, 0xe3, 0xcf, 0xff, 0xff, 0xf3, 0xcc, 0x0, 0x0, 0x33, 0xcf, 0xff, 0xff, 0xf3,
0xcc, 0x0, 0x0, 0x33, 0xcf, 0xff, 0xff, 0xf3, 0xcc, 0x0, 0x0, 0x33, 0xcf, 0xff, 0xff, 0xf3,
0xcc, 0x0, 0x0, 0x33, 0xcf, 0xff, 0xff, 0xf3, 0xc7, 0xff, 0xff, 0xe3, 0x0, 0x60, 0x6, 0x0,
0x0, 0x78, 0x1c, 0x0, 0x0, 0x3c, 0x38, 0x0, 0x0, 0xe, 0x60, 0x0, 0x0, 0x4, 0x0, 0x0,
0x0, 0x0, 0x40, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x1f, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0,
0x0, 0xf, 0xf0, 0x0, 0xc0, 0x0, 0xf8, 0x3, 0xc0, 0x0, 0x70, 0x3, 0xc0, 0x3, 0xe0, 0x3,
0xc0, 0x7, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x3, 0xdf, 0xff, 0xff, 0xfb, 0xdf, 0xff, 0xff, 0xfb,
0xd8, 0xc1, 0x83, 0x1b, 0xdf, 0xff, 0xff, 0xfb, 0xcf, 0xff, 0xff, 0xf3, 0xc7, 0x0, 0x0, 0xe3,
0xc2, 0x0, 0x0, 0x43, 0xc0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfe };
void setup() {
Wire.begin();
lcd.init();
lcd.setContrast(65);
rev=1;// показать реальную температуру экструдера
pinMode(ExtruderOutput, OUTPUT);
digitalWrite(ExtruderOutput, LOW);
pinMode(BedOutput, OUTPUT);
digitalWrite(BedOutput, LOW);
initPID();
}
void loop() {
if (millis() - POT_previousMillis > POT_interval)
{
POT_previousMillis = millis();
//Extruder_Temp=Current_Extruder_Temp;
// Чтение резистора установки экструдера
Extruder_Pot_Value = analogRead(Pot_Extruder_Pin); // Установка температуры экструдера (150-350 С)
Extruder_Pot_Value = map(Extruder_Pot_Value, 0, 1023, 150, 350);
Set_Extruder_Temp = Extruder_Pot_Value;
// изменения были?
if (abs(Set_Extruder_Temp-Extruder_Temp)> 2) {rev=1; // если да-устанавливаем режим дисплея
Extruder_Temp=Set_Extruder_Temp;
Ustan_previousMillis = millis();}
// Чтение резистора установки стола
Bed_Pot_Value = analogRead(Pot_Bed_Pin); // Установка температуры стола (30-130 C)
Bed_Pot_Value = map(Bed_Pot_Value, 0, 1023, 30, 130);
Set_Bed_Temp = Bed_Pot_Value;
// изменения были?
if (abs(Set_Bed_Temp-Bed_Temp)> 2) {rev=2;// если да-устанавливаем режим дисплея
Bed_Temp=Set_Bed_Temp; Ustan_previousMillis = millis();}
//если время установки вышло - перходим на отображение текущей температуры
if (millis() - Ustan_previousMillis > Ustan_interval) rev=0;
}
//****************************************************************
if (millis() - Display_previousMillis > Display_interval)
{
Display_previousMillis = millis(); // Скорость обновления индикации
Chow_disp();
//СВЕТОФОР
Manage_Temperatures ();}
}
//***********************************************************************************
void Chow_disp(){
lcd.clearDisplay();
lcd.drawBitmap(0, 0, logo16_glcd_bmp, 32, 40, BLACK);
lcd.setTextSize(2);
lcd.setTextColor(BLACK);
//Экструдер
lcd.setCursor(36, 0);
if (rev==1) {lcd.print (int(Extruder_Temp));}
else {lcd.print (int(Current_Extruder_Temp));}
lcd.setCursor(72, -4);
lcd.print("o");
lcd.setCursor(83, 0);
lcd.print("C");
//Стол
lcd.setCursor(36, 24);
if (rev==2) {lcd.print (int(Bed_Temp));}
else {lcd.print (int(Current_Bed_Temp));}
lcd.setCursor(72, 20);
lcd.print("o");
lcd.setCursor(83, 24);//+14+4
lcd.println("C");
lcd.setCursor(0, 48);
if (rev==1) {lcd.print ("SET Extr");}
if (rev==2) {lcd.print ("SET Bed");}
else
{lcd.print (" WORK t ");}
//lcd.println (rev);
//lcd.println (Current_Extruder_Temp);//(rev);
lcd.display();
}
оба файла полжить в одну папку. Подробности уже не помню, поэтому сильно прошу не мучать. Скетчи все равно придется под своё железо переделывать, просто легче начинать не с "0"
Всем добра! Вот я закончил свой станок все двигается не болтается, но столкнулся с проблемой ни где нет ко кого нибудь G код что бы проверить работоспособность, грубую калибровку провёл но ни как не могу разобраться в создании G кода. Использовать решил GcodeUniversalSendor. Буду признатилен за подсказку.
Ребят, появился вопросик про $H. Повесил только один концевик на ось Z, grbl 0.9j поднастроил.
Теперь при нажатии $H станок отлично отрабатывает концевик по Z, но потом начинает искать концевики X Y, которых у меня нету и останавливается по мягким пределам (soft limits) с огромным ругательством.
Как сделать, чтобы он не искал X Y концевики при поиске дома ($H)?
Или на поиск нуля передать как то? Я просто с этим нулем не очень вкурил еще....
P.S. Так странно задавать вопрос - обычно я только отвечал до этого в другой ветке:)))
Да, давно я с грбл не игрался. Если правильно помню:
$20 = 0 (soft limits, bool)
$21 = 1 (hard limits, bool)
$22 = 1 (homing cycle, bool)
софт лимиты отключены, по датчикам включены и включено хомление. Никаких разделений по осям не вижу. Значит вариант только задействовать Z-probe с софт лимитами.
зы.
$130 = 1.000 (x max travel, mm)
$131 = 1.000 (y max travel, mm)
$132 = 10.000 (z max travel, mm)
перемещение по x/y по 1 мм и по z на 10 мм максимум? За что так с софт лимитами?
Перемещение инструмента отсчитывается по шагам двигателя. По этой причине нужна калибровка. Ну тоись какому перемещению соответствует 1000 шагов двигателя, к примеру. Но всю картинку портит back lash. Свободный ход в пределах люфта без перемещения инструмента.
А можно ли по другому? Установить датчик перемещения инструмента по осям, и отсчитывать фактическое перемещение, независимо от числа шагов двигателя. Исчезнет проблема калибровки и back lash заодно.
Есть ли какая софтина, которая работает по этому принципу?
Есть - Mach3, Mach4, linuxcnc и другие того же плана. Ставите линейку с подключением к контроллеру. Настраиваете допуск рассогласования.
немного не понял.
Расcогласование чего с чем?
Мотор крутится, пока линейка не покажет нужное перемещение.
Рассогласования в принципе не может быть. Оно подразумевает два источника данных. Мотор и линейка, к примеру. Контроллер считает шаги мотора, сравнивает с перемещением по линейке, вычисляется разница и цена деления.
А если строго по перемещению - никакого рассогласования быть не может. Ему взяться неоткуда.
Тогда это вами написанная система, на ваш страх и риск.
Все указанные работают так: задается перемещение моторам (количество импульсов), по факту исполнения проверяется позиция по линейке, если в допуске согласования, то мотору дается перемещение для получения нужного значения, если не в допуске, то система уходит в аварию и останавливает станок (мало ли что помешало войти в зону согласования - может мотор сгорел или драйвер, может что-то попало в движущиеся части).
Если же вам нужно убрать "мертвый ход", то это настраивается без всяких линеек (ни одна линейка вам не уберет люфты).
сли же вам нужно убрать "мертвый ход", то это настраивается без всяких линеек (ни одна линейка вам не уберет люфты).
само собой не уберет, это проблема точности механики, а не варианта примененной электроники.
Собственно сам по себе мертвый ход полностью устранить невозможно, его можно только компенсировать.
Да и критичным он становится только в легких любительских конструкциях, потому как зазоры в ходовых парах вызвают вибрацию при обработке. Ну и задержку между началом вращения двигателя и последующим перемещением каретки привода.
(по линку) "They also hint at doing something very clever with a magnetic encoder on the board which allows them, after a calibration routine, to get the accuracy they’ve promised."
Они прилепили датчик угла поворота на шаговый двигатель. И после калибровки он чета там покажет.
Опять таки привязка идет не к реальному перемещению инструмента (каретки, суппорта), а к углу поворота шагового двигателя. Что не одно и то-же.
Двигатель крутится, суппорт стоит на месте. Может быть? Да запросто. Движок мертвый ход выбирает.
Пока все зазоры не выберет, реального перемещения не будет. Стало быть зачем считать его шаги? Как суппорт поехал, считай его перемещение. А сколько там шагов двигатель сделал, без разницы
хм...
Можно всё, но зачем?)
Какой суппорт, какой мёртвый ход?
Нахрена это вообще Ардуине например, как вы это к ней всё агрегатируете?
Но даже на базе Линукс снс, Мач зачем это для домашней реализации снс либо 3д печати?)
Привет, пишешь что очень много добра есть у тебя? Напиши на почту leontev_zhenya@mail.ru
Посмотрим, может что ценное и найду у вас.
"Есть идеи как можно понизить трудоемкость создания таких 3D моделей?" - заказать мне, я сделаю, не дорого.
Почта: leontev_zhenya@mail.ru
Skype: leontev1979
VK: https://vk.com/leontev1979
Portfolio: https://vk.com/public121812933
Telegram: @Vizual_3D
WhatsApp: +79241442570
Проблема с прошивкой GRBL.
Собственно была такая проблема, спасибо добрым людям - помогли решить:
Не крутились движки в GRBL-controller.
Драйвер и движок проверял, прямо на шилде без GRBL, мною написанным скетчем - крутит его отлично.
GRBL-controller ардуину с шилдом видит. Команды принимает, не ругается.
G0 F100
G0 X1 - выполняет
Если нажать на стрелочку - движение есть.
Но, например:...
G0 X20 - GRBL-controller изображает, что все в порядке, координаты меняются на +20, но двигатель не крутится...
В это время амперметр показывает ток на движке - 0. Хотя пока стоит без движения примерно 0,5 А.
Более того, пару месяцев назад получалось все и с GRBL-controller.
Но потом снес из памяти ардуины скетч - пример из библиотеки GRBL (использовал ардуину для других проектов).
Да, и если зайти в консоль - Grbl 0.9j ['$' for help] - появляется.
Но если отправить "$" - ничего не происходит...
Хотя непосредственно в Grbl-controller все эти команды работают.
Настройки GRBL по умолчанию. Пока не менял.
Решение - попадались старые левые прошивки GRBL. Вот здесь скачал последнюю и... все )))
https://github.com/grbl/grbl/
добрый день! начел собирать чпу на токихже двигателях, в качестве кантролера в зял ардуино UNO шилд версии 3 и драйвера А4988. вот у меня вопрос к вам не подскажите на шилд для управления двигателями вы какое напряжение использовали 12в или 24в
По нормальному надо подавать 24В, но тогда питание ардуинки нужно делать отдельно - стабилизатор у нее не рассчитан на такое напряжение (максимум 17-19В и то на пределе, будет такой что жарить на нем можно будет). Соответственно линии надо будет разделять. На 12В работать будет, но потеряете в динамике и скорости.
спасибо понел
спасибо понел
Добрый день! Подскажите пожалуйста какие флезы лучши применять для обработки фанеры и древесины.
Добрый день! Подскажите пожалуйста какие флезы лучши применять для обработки фанеры и древесины.
Неплохие фрезы Kyosera tycom. Острые и долго не тупятся
Для фанеры, например, эта
https://www.ebay.com/itm/151248427803
Также там можно подобрать фрезы для акрила.
Например, эту
https://www.ebay.com/itm/152624581348
Спасибо огромное!
Ну для фанеры простая спиральная фреза не очень подходит. Даже очень острые они довольно сильно мохрят край (хотя у меня пока все они мохрят, но спиральные ужас какой-то). Лучше использовать вертикальную (без спирали) или кукурузу. Фрезы больше 2 мм для совсем мелких нежестких станков я бы не стал брать, но сильно тонкие тоже не стоит, оптимально - 1.5-2мм. При обработке кукурузой стоит учитывать что у нее плохой отвод стружки и заглубляться надо постепенно.
Вопрос к sav13 - брали фрезы по ссылке (кстати эта около 1.5мм - 1/16"=1.5875мм, не очень удобный для вычисления размер)? Интересует кончик, не получается найти двухзаходную фрезу с правильно заточенным кончиком, у всех как будто лопату точили.
Вопрос к sav13 - брали фрезы по ссылке (кстати эта около 1.5мм - 1/16"=1.5875мм, не очень удобный для вычисления размер)? Интересует кончик, не получается найти двухзаходную фрезу с правильно заточенным кончиком, у всех как будто лопату точили.
Брал несколько фрез для акрила у этого продавца, еще разных доложил, так как доставка все равно платная, а так дешевле получалось. Эти фрезы нормально берут не очень толстый акрил без охлаждения. Фанеру не замечал, чтобы мохрили - кромка очень острая у них и рез получается ровный. А вот кукуруза на толстой фанере греется и начинает жечь. Может из-за того что кукуруза китайская, тупая у меня )))
Дюймовые размеры не очень удобно, но один раз приспосабливаешься к размеру и нормально
Кстати, у Kyosera есть и метрические размеры:
https://www.ebay.com/itm/10-2-00mm-0787-KYOCERA-TWO-FLUTE-CARBIDE-ENDMIL...
Добрый день извеняюсь за беспокойство. Я ранее писал что начел сборку станка на двигателях m49sp-2k но шилд решил поменять на версию 4 с arduino NANO а драйвера оставил теже A4988 и вот я его собрал. Залил прошивку grbl 9 но он не хочет работать. двигателя на осях подергиваются иногда на пол шага и все. пробывал подавать 24в сняв перемычку подачи 12 вольт и подал на обозначенные клемы 24v не чего не изменилось. Как новичек я несилен в этом подскажите пожалуйста что нужно сделать буду очень я признатилен. С уважением Михаил.
за рание спасибо!
интересна, какой язык для тебя родной?
а для тебя?
Добрый день извеняюсь за беспокойство. Я ранее писал что начел сборку станка на двигателях m49sp-2k но шилд решил поменять на версию 4 с arduino NANO а драйвера оставил теже A4988 и вот я его собрал. Залил прошивку grbl 9 но он не хочет работать. двигателя на осях подергиваются иногда на пол шага и все. пробывал подавать 24в сняв перемычку подачи 12 вольт и подал на обозначенные клемы 24v не чего не изменилось. Как новичек я несилен в этом подскажите пожалуйста что нужно сделать буду очень я признатилен. С уважением Михаил.
1. Неправильно подключены движки (перепутаны провода)
2. Движкам не хватает усилия крутить оси - механика слишком тугая
3. Неправильно выставлен ток а драйвере
Когда-то давным давно я тоже начел, но начел с того, что электронику, подключил к движкам, лежащим на столе, настроил ток на драйверах, залил прошивку и попробовал выполнять G-код. Когда убедился, что все работает, приступи к сборке.....но до готового станка у меня дело не дошло....
Полностью согласен с предыдущими. Надо сначала научить двигатели шевелиться без нагрузки, выяснить их предельные возможности на холостых, а уже после ставить на оборудование и делать донастройку.
зы. Механика должна рукой ленгко приводиться в движение пальцами, если винт уже на месте, то он должен легко вращаться от усилия двух пальцев, если винта еще нету, то все должно перемещаться также от легкого толчка.
Собственно фото не помешает хотя бы общее.
Да ходовые гайки у меня туговаты ктк чтобы избежать люфтов но пальцами крутятся оси, буду пружины урезать и двигатели сниму буду пробовать обучить. Спасибо за подсказки фото скину позже
Добрый день! я снял электронику со станка и что я только не перепробовал, менял провода местами, проршивки, заливал скетчи нечего не выходит. двигатели либо не двигаются либо вибрируют либо двигаются только в одну сторону рывком и все. может проблема с драйверами? или шилдом может вовсе нужно чтото прописать в прошивке?
...может проблема с драйверами? ...
Ну так проверьте драйвера.
Подаём вручную импульс на STEP. Проверяем уровни на выходах драйвера 1А,2А,1В,2В. Записываем. И повторяем 4-16 раз.
Всем доброе утро, долго вдохновлялся вашими успехами)))
Вот собрал свой станок. Станина из профильной трубы 40х20 и 20х20, двигатели Nema17, драйвера A4988, управление программой Mach3. Материалы на его изготовление стоили окло 13 т.р., не считая старого компа с LPT(с БП копьютера 12 В используется для питания моторов). В качестве шпинделя китайский гравер на 135 Вт. В качестве стола доски, фрезерованные самим станком для придания ровности))
Дерево обрабатывать можно, но осторожно. А фрезеровать ПП вроде можно, но тут отдельная проблема как из герберов сделать нормальную УП, что-то простое конечно получается.
Главный вопрос такой, он уже не раз задавлся, зазал я "экструдер"(https://ru.aliexpress.com/item/Upgrade-MK8-Extruder-Nozzle-Latest-Print-...) и теперь хочу добавить опцию 3д печати: снял шпиндель - поставил "экструдер" и вуаля....
Вопрос в том, кто-то смог довести эту идею до конца или это гиблое дело?
И второй вопрос, подскажите какие пути для решения поставленной задачи кто-то из вас встречал?
Я вижу два варианта: 1) - идеальный, управление осями остается у Mach3, но добавляется какая-то программа для контроля температуры и подачи пластика экструдером....
2) Докупаю плату RAMPS 1.4 и прошивкой Maarlin получаю желанный 3д принтер.... но надо будет переключать не только шпиндель, но и двигатели с платы на плату...
Кто, что думает по этому поводу?
...1) - идеальный, управление осями остается у Mach3, но добавляется какая-то программа для контроля температуры и подачи пластика экструдером....
Читал, что ставят "Mach3 Addon Converting a CNC Machine to a 3D Printer".
Тема интересная. Держите в курсе, как сделаете.
У меня работает под МАЧ, без всяких аддонов, просто в текстовом редакторе автозаменой меняем все "E" на "A" и МАЧ проглатывает. Нагрев экструдера и стола-автономный. На 168 ардуинке. Первые запчасти для принтера печатал на большом фрезере, с полем 1000х500х300. Т.к. каретки тяжелые (около 30 кг) то печать была очень медленной. http://3dtoday.ru/blogs/svm/project-dragon/
У меня работает под МАЧ, без всяких аддонов, просто в текстовом редакторе автозаменой меняем все "E" на "A" и МАЧ проглатывает. Нагрев экструдера и стола-автономный.
То что мне надо, но как я понял есть отдельные команды в G-кодах для экструдера, типа подача пластика, скорость, направление.. В том чуде, что я заказал идет термопара (К-type) и как я понял резистор в роли нагревателя, с термопарой нужна схема усилитиля, чтобы ваять что-то свое под Ардуино))
Как настроить MACH3, экструдер как 4-ая ось?
А температура у вас как задается и измеряется?
Как настроить MACH3, экструдер как 4-ая ось?
А температура у вас как задается и измеряется?
Экструдер включен как ось "А". И соответственно калибруется. В G кодах меняется наименование осей-вместо "Е", указывается "А"и все. По нагревателю- используется стандартный для всех китайцев. В качестве термодатчика NTC резистор на 100 кОм.
Дело было давно, но сейчас попрбую поискать схему и скетч.
Вот скетч, управление две кнопки и два переменных резистора
Вот нашел, кажется рабочий вариант, для установки используются два переменных резистора 1-10 кОм
Кнопки подключены с ТМ1650, и обрабатываются ей. Где-то был еще вариант с графическим дисплеем от старенькой Моторолы С115 и ПИД регулятором. Но заметного улучшения он не дает. Только удобство пользования. Если найду выложу.
оба файла полжить в одну папку. Подробности уже не помню, поэтому сильно прошу не мучать. Скетчи все равно придется под своё железо переделывать, просто легче начинать не с "0"
Всем добра! Вот я закончил свой станок все двигается не болтается, но столкнулся с проблемой ни где нет ко кого нибудь G код что бы проверить работоспособность, грубую калибровку провёл но ни как не могу разобраться в создании G кода. Использовать решил GcodeUniversalSendor. Буду признатилен за подсказку.
Загляни сюда, проще не бывает. http://selenur.ru/?page_id=400 , а вообще стоит набрать в поисковике - генератор G кодов и выбирай.
Спасибо!
Да попробовал софт но он создаёт в двух осях.
Mach3 кушает такой код. F - это скорость.
хм...
36 вольт...
Ребят, появился вопросик про $H. Повесил только один концевик на ось Z, grbl 0.9j поднастроил.
Теперь при нажатии $H станок отлично отрабатывает концевик по Z, но потом начинает искать концевики X Y, которых у меня нету и останавливается по мягким пределам (soft limits) с огромным ругательством.
Как сделать, чтобы он не искал X Y концевики при поиске дома ($H)?
Или на поиск нуля передать как то? Я просто с этим нулем не очень вкурил еще....
P.S. Так странно задавать вопрос - обычно я только отвечал до этого в другой ветке:)))
Подозреваю что никак (или править прошивку).
Можно вывод $$ ? Может там есть параметры какие концевики установлены.
Чисто в теории обнулять Z можно подключив датчик как щуп. В этом случае выставляются нули по осям, а затем делается Z-probe.
Да, давно я с грбл не игрался. Если правильно помню:
Хотя софт лимиты и отключены, но при нахождении хоум он все равно использует их.
А маленькое перемещение по XY - дак это чтобы "станок" далеко не уезжал и не возвращать его постоянно обратно.
У меня вскочил вопрос:
Перемещение инструмента отсчитывается по шагам двигателя. По этой причине нужна калибровка. Ну тоись какому перемещению соответствует 1000 шагов двигателя, к примеру. Но всю картинку портит back lash. Свободный ход в пределах люфта без перемещения инструмента.
А можно ли по другому? Установить датчик перемещения инструмента по осям, и отсчитывать фактическое перемещение, независимо от числа шагов двигателя. Исчезнет проблема калибровки и back lash заодно.
Есть ли какая софтина, которая работает по этому принципу?
Есть - Mach3, Mach4, linuxcnc и другие того же плана. Ставите линейку с подключением к контроллеру. Настраиваете допуск рассогласования.
немного не понял.
Расcогласование чего с чем?
Мотор крутится, пока линейка не покажет нужное перемещение.
Рассогласования в принципе не может быть. Оно подразумевает два источника данных. Мотор и линейка, к примеру. Контроллер считает шаги мотора, сравнивает с перемещением по линейке, вычисляется разница и цена деления.
А если строго по перемещению - никакого рассогласования быть не может. Ему взяться неоткуда.
Тогда это вами написанная система, на ваш страх и риск.
Все указанные работают так: задается перемещение моторам (количество импульсов), по факту исполнения проверяется позиция по линейке, если в допуске согласования, то мотору дается перемещение для получения нужного значения, если не в допуске, то система уходит в аварию и останавливает станок (мало ли что помешало войти в зону согласования - может мотор сгорел или драйвер, может что-то попало в движущиеся части).
Если же вам нужно убрать "мертвый ход", то это настраивается без всяких линеек (ни одна линейка вам не уберет люфты).
само собой не уберет, это проблема точности механики, а не варианта примененной электроники.
Собственно сам по себе мертвый ход полностью устранить невозможно, его можно только компенсировать.
Да и критичным он становится только в легких любительских конструкциях, потому как зазоры в ходовых парах вызвают вибрацию при обработке. Ну и задержку между началом вращения двигателя и последующим перемещением каретки привода.
Похоже готовых решений с линейкой нету. Жаль.
Почему сразу нет? Может и есть, только вы форумом ошиблись. Вам на chipmaker.ru или cnc-club.ru надо.
спасибо, уже иду
хм...
Mechaduino - closed loop stepper controller
не, не полетит
(по линку) "They also hint at doing something very clever with a magnetic encoder on the board which allows them, after a calibration routine, to get the accuracy they’ve promised."
Они прилепили датчик угла поворота на шаговый двигатель. И после калибровки он чета там покажет.
Опять таки привязка идет не к реальному перемещению инструмента (каретки, суппорта), а к углу поворота шагового двигателя. Что не одно и то-же.
Двигатель крутится, суппорт стоит на месте. Может быть? Да запросто. Движок мертвый ход выбирает.
Пока все зазоры не выберет, реального перемещения не будет. Стало быть зачем считать его шаги? Как суппорт поехал, считай его перемещение. А сколько там шагов двигатель сделал, без разницы
Вот тут линейные датчики перемещения интересные
https://www.linearmotiontips.com/linear-encoders-improve-accuracy/
Они дают значение абсолютного перемещения по оси, с неплохой точностью и заодно инкремент.
Правда много буков и по буржуйски.
хм...
Можно всё, но зачем?)
Какой суппорт, какой мёртвый ход?
Нахрена это вообще Ардуине например, как вы это к ней всё агрегатируете?
Но даже на базе Линукс снс, Мач зачем это для домашней реализации снс либо 3д печати?)