Идея сделать станок дома руками не нова. Каждый кто задумывается над реализацией такого оборудования в домашних условиях, должен руководствоваться своим мотивом создания. Мне это необходимо, потому, что от природы у меня не на столько ровные руки, чтобы сделать хорошие, даже более или менее габаритные, детали, а часто возникает задача изготовить точную сложную деталь, с чем станок хорошо справится. Всегда хватает новых идеи и задумок для реализации, а времени не очень много.



Коротко об авторе

Студент 4-го курса Белорусского государственного университета информатики и радиоэлектроники, факультета «Компьютерных систем и сетей», кафедры «Электронных вычислительных машин», специальности «Вычислительные машины системы и сети».

Спойлер

Полученный результат не претендует на звание станок года. Да, реализация контроллера ШД на микроконтроллере не очень хороший вариант. Да, станина из дерева, тоже не лучшее, что можно придумать. В тексте статьи будут пояснения и обоснования выборов. Не стоит забывать, что это всего лишь попытка что-то собрать, получить опыт и двигаться дальше.

Техническое задание или что стоит ожидать на выходе


Полученный фрезерный станок должен удовлетворять следующим условиям:

  • Иметь приемлемую рабочую область
  • Иметь приемлемую скорость движения по осям
  • Обрабатывать детали из дерева средней и высокой твердости. В идеале обрабатывать алюминий

Главное правило станков — жесткость. Чем выше жесткость станка, тем меньше вибраций, люфтов, проседаний, изгибов и прочих дефектов которые повлияют на качество обрабатываемой болванки. Так как станок будет изготавливаются полностью в домашних условиях, то единственным материалом который можно реально обработать в таком количестве дома и из которого получится сделать станину станка — дерево. Есть конечно разные виды. И за неимением большого капитала ибо студент для создания будет использовано все, что найдется. А это по сути доски на пробу сверлом довольно мягкого дерева. Хотя так же есть и небольшие листы фанеры. Чем богаты, то и будет использовано.

Так же стоит отметить на чем будет запущено управление станком. Есть один очень древний компьютер, берег его как раз примерно для таких целей. AMD Duron 1.2 ГГц, RAM 768 МБ, 64 МБ Video Mem, HDD 20ГБ. Как раз для этих целей сгодится. Управление будет под Linux CNC. Ибо Mach3 под Win не захотел толково работать. Ресурсов ему немного больше нужно.

Разработка


Разработка станка будет разбита на несколько частей.

  • Разработка контроллера шагового двигателя
  • Разработка драйвера шагового двигателя
  • Разработка оптической развязки
  • Разработка планки питания

Стоит сразу сказать, что разработка механической части как таковая отсутствовала, ибо, нету столько опыта чтобы что-то разрабатывать и предвидеть. По этому разработка велась сразу на этапе сборки.

Разработка контроллера шагового двигателя


Контроллера шагового двигателя будет разработан на PIC микроконтроллере. Почему? Во-первых, нужно было окончательно усвоить как работают шаговые двигатели, во-вторых, так интереснее, в-третьих, та же готовая микросхема L297 стоила почему-то дороговато, и в итоге получалось собрать на микроконтроллере немного дешевле.



В качестве управляющего микроконтроллера был взят PIC16F630. Имеет минимум периферии и достаточное количество ног для управления. Порт C служит для прямого вывода управляющих импульсов. На пины A1, A2 заведены входные сигналы DIR, STEP. Пин A2 включен в режиме внешних прерываний, а DIR работает как обычный пин ввода. Контроллер запущен через кварц на 20 MHz.

Код был написан на С с использованием маленькой asm вставки и собран на CCS C компиляторе.

#include <16f630.h>
#case  
#FUSES NOWDT                    
#FUSES NOMCLR                   
#FUSES HS                     
#FUSES PUT                    
#FUSES BROWNOUT 

#use delay(clock = 20 MHz)                                                                                                                         
#use fast_io(C)                                                     
#opt 9  
                                
#define DIR		PIN_A1                                                             
#define CLK		PIN_A2   
#define LED		PIN_A0                                
                                                                          
#zero_ram       
                             
//half step array     
const int steps[256] =    
{                 
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                         
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                          
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                          
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                          
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                          
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                          
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,                                                                                          
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101,
	0b00000100,0b00000110,0b00000010,0b00001010,0b00001000,0b00001001,0b00000001,0b00000101                                                                                             
};                                                         
             
unsigned int8 nowStep = 0;        
                                                                                                                 
#INT_TIMER1                                                     
void LoadDrop_isr()      
{                                                                           
	output_c(0);              
}                                                                                                          
                                                                                                       
#INT_EXT                    
void clk_isr()
{                                    
   //input_state(DIR) ? nowStep++ : nowStep--;                                                 
  	#asm asis              
  	BTFSC  05.1 
  	INCF   nowStep,F         
  	BTFSS  05.1                                                      
  	DECF   nowStep,F    
  	#endasm             
                    
	output_c(steps[nowStep]);
	set_timer1(0);		
}                                       
                                                                                                                                                    
void main()                                                                                                                                  
{                            
	output_a(0);                         
	input_a();  
	        
	set_tris_c(0);                    
	output_c(0);  
	                           
	setup_comparator(NC_NC_NC_NC);                        
	setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);                       
	set_timer1(0);                                                          
	                          
	ext_int_edge(L_TO_H);    
	                                                          
	enable_interrupts(INT_TIMER1);             
	enable_interrupts(INT_EXT);                   
	enable_interrupts(GLOBAL);  
	                                                                    
	unsigned int16 blinkCounter = 0; 
	             
	MAIN_LOOP:                    
	                                  
		 if(!blinkCounter++)              
		 	output_toggle(LED);        
		 	                
	goto MAIN_LOOP;                                                                                                                                                      
}                                               

Для описания кода, проще будет начать с логики работы контроллера. При запуске контроллера происходит начальная настройка железа и включение прерываний. Номер шага хранится в беззнаковой 8-и битной переменной nowStep и в начале номер равен нулю. Далее запускается вечный цикл программы в MAIN_LOOP в котором происходит просто моргание светодиодом подключенного к пину A0. Для чего? Во-первых, видно что камень не подвис, во-вторых, спецэффекты! Пин А2 настроен на внешнее прерывание по восходящему фронту. Когда на ноге будет зарегистрировано событие, будет обработано прерывание INT_EXT в котором происходит переключение следующего шага. Для вывода следующего шага происходит инкремент или декремент указателя шага nowStep в зависимости от входного DIR. Затем из массива шагов steps из позиции nowStep целиком в порт выводится новая комбинация коммутации обмоток двигателя. Так же, в начале инициализации микроконтроллера происходит настройка и запуск таймера 1. Этот таймер сбрасывает выходные сигналы, чтобы предотвратить перегрев двигателей. Таймер сбрасывает выходные сигналы через примерно 100 мс после выставления сигнала. То есть это сугубо мера предосторожности.

В симуляции удалось достичь периода сигнала CLK в 15 мкс, что соответствует частоте в 66.(6) КГц. Для первого раза не плохо, я думаю, хотя, дальнейшая оптимизация возможна.

Разработка драйвера шагового двигателя


Тут далеко идти не придется. Схема типовая. Драйвер построен на базе готового драйвера L298N.



Зачем резисторы R1 — R4? Честно сказать, я не знаю. Изначально в документации идет схема в связке с L297, вся связь без резисторов. Однако в интернете находил схемы с резисторами на линиях. Посмотрел на блок-схему в даташите на L298N. Все INPUT линии заходят на инверсный вход И элемента. Ничего случится не должно и без резисторов. Но я решил не рисковать и на всякий случай вставить, на этот раз. Много хуже не будет, упадет крутизна фронта на входе.

В остальном схема повторяет ту, что дана в даташите.

Разработка оптической развязки


Плата опторазвязки служит для защиты управляющей машины, в данном случае компьютера, от силовой части станка. Так, что если что-то начнет дымиться со стороны станка, оно додымит только до платы опторазвязки и минимизирует ущерб.

Схема достаточно габаритная, так что кликайте чтобы увидеть фул сайз.



Изначально были взяты оптопары 4N25. Ибо подумал, что 60 кГц вытянет любая сегодняшняя оптопара. Но на деле, нет, не вытянули, не успевали. По этому в результате пришлось заменить на 6N135, у которых быстродействие значительно выше (до 2MHz по даташиту). По пинам они не совместимы напрямую, однако, удалось их вставить без переделки платы целиком. Новой схемы я не делал, думаю, кому захочется, тот сможет переразвести плату самостоятельно.

Как и должно быть, питание схемы разделено на две части, со стороны станка и стороны компьютера. Со стороны компьютера питание подается через USB кабель, это его единственное назначение. Со стороны станка уже любая связка проводов на 5 В.

Разработка планки питания


Так же, так как делалось все не монолитом, а мелкими блоками, то нужно было развести больше проводов чем обычно для питания и для сигналов. По-этому для упрощения разводки я решил сделать отдельную маленькую планку с коннекторами для разводки питания по линиям 12 В и 5 В.



Планка питания содержит по шесть коннекторов для линий 5 В и 12 В, а так же два отдельных коннектора для подключения кулеров.

Сборка и результат


Так как фотографировать начинал не с самого начала, да и написание статьи не планировалось, то многие шаги сборки отсутствуют, однако те что есть я покажу. Все фото в этом разделе кликабельны.

Изготовление драйвера шагового двигателя


Перенес рисунок ЛУТом:



Вытравил и залудил:



Просверлил:



Запаял:





Далее нужно было повторить успех еще для 2-х осей:



Изготовление платы оптической развязки




Перенес ЛУТом и поправил маркером:



Вытравил:





Залудил:



В сборе вся электроника:







Сборка станка


Станок собирался из фанеры 10 мм толщиной и 18 мм досок. При сборке использовались мебельные направляющие, лучше на первый раз ничего не нашел, а обрабатывать хотя бы те же металлические уголки психологически не был готов.

Сначала была такая конструкция:





Первый вариант оси Z:



Но как я сейчас понимаю, это вообще никуда не годилось, все ездило, шаталось. В общем, ни о какой жесткости и речи не было.
Последовала другая попытка:





В ходе которой оси X и Y были вынесены на отдельную площадку и превратились в подвижный стол:



Уже было лучше, но все равно очень далеко от чего-то не шатающегося. В итоге пришел к такому варианту:



Однако ось Z все еще слишком сильно дергалась и прогибалась. На этот раз я сел и хорошо подумал и уже занялся некоторым проектированием. В итоге получилась такая конструкция:



В качестве направляющих использованы равнополочные алюминиевые уголки с полкой 25 мм и толщиной 2мм. Стальных не смог найти. Они были бы много раз лучше. Направляющие промышленного изготовления, конечно, все равно не идут ни в какое сравнение.

Подвижная каретка:





В сборе новая ось Z:





Результат. Можно заметить, что собранная ось, и конструкция в целом, все же отличается даже от спроектированной. Все же совместить и центрировать ось когда из точных инструментов у тебя только штангенциркуль и ручная дрель довольно не простая задача. По этому пришлось передумывать и экспериментировать на ходу:





Пробы что-то выфрезеровать:



Даже с таким большим количеством если, даже с такой несовершенной конструкцией получилось создать что-то рабочее и полученный результат меня впечатлил.

Управляющий компьютер


Управляющее ПО станков с ЧПУ должно работать на системах реального времени, чтобы генерировать точно синхронизированные сигналы. По-этому, Windows не очень хорошо для этого подходит. Конечно, для правильной работы написаны драйвера которые решают эту проблему, но ресурсов обычно это требует больше, а стабильность такой системы ниже чем систем реального времени.
Обработка велась под управлением LinuxCNC. Установка и настройка не должна вызвать больших трудностей. На сайте программы уже есть готовые билды так и исходники для гурманов. Существует несколько способов установки: на уже установленную систему или с нуля вместе с настроенной ОС. Я выбрал второй вариант, так как не на столько опытен в работе с Linux, и времени было маловато, чтобы разбираться с процессом пропатчивания. Второй вариант представляет из себя обычный Debian дистрибутив с RTC ядром и уже установленным LinuxCNC.

После установки необходимо настроить оси станков: маппинг сигналов, скорости движения, величины ускорения и прочее. В результате получится выходной файл для запуска, который, при запуске, покажет саму программу управления станком с заданными параметрами.

Заключение


В итоге проделанной работы осталось как много впечатлений, так и вопросов и задач для улучшения полученного станка.

  1. Повысить напряжение питания двигателей с 12 В до их рабочих 24 В
  2. Укрепить конструкцию, а в идеале подготовить новый проект станка с предварительным полным проектированием
  3. Добавить концевые переключатели и кнопку аварийной остановки
  4. Провести оптимизацию работы контроллеров ШД
  5. Пересобрать электронику станка на одной плате за исключением платы опторазвязки
  6. Заменить шпиндель станка на соответствующий целям. То есть высоко оборотистый и более мощный двигатель, чем текущий китайский гравер.
  7. Заменить двигатель на оси Z, так как текущий двигатель меньше по мощности и самый нагруженный

Полученный станок обладает рабочей областью больше 270 мм по осям X и Y, и около 150 мм по Z. Скорости перемещения по осям X и Y больше 500 мм/с, а по Z 300 мм/с. Это при 12 В рабочего напряжения. То есть половина от их рабочих характеристик. Есть куда расти.

Что можно сказать с уверенностью — это того стоило. Как минимум с одной задачей станок справится хорошо уже сейчас: вырезание плат. Можно забыть о травлении и ЛУТ. У вырезания плат есть, конечно, свои недостатки, но лучше иметь альтернативы, чем единственный вариант. На видео работы было видно как станок фрезой 3 мм фрезеровал букву М, может и с малой скоростью подачи и слоями по 0.1 мм, но это тоже результат.

Выкладывать какие-то исходники или PCB плат не вижу особого смысла пока что. Станок не получился пригодным для каких-либо серьезных нагрузок или достаточно устойчивым и уникальным. Однако, это не последняя попытка что либо сделать и готовится следующая итерация разработки, надеюсь, более качественная.
Поделиться с друзьями
-->

Комментарии (71)


  1. roller
    30.05.2016 13:56
    +6

    Трудовик бы восхитился вами!!! Но любой другой человек посоветовал бы купить нормально профиль в Соберизавод и не мучиться)


    1. link0ln
      30.05.2016 14:48
      +1

      +100500, и драйвера ШД ни к чему самому паять, не так уж и дорого стоят. Ну а в целом, за рукодельство +.


    1. supercawa
      30.05.2016 15:28
      +1

      Я заметил, что очень часто покупка v-Slot профиля — это второй шаг у ЧПУ самоделов. На первом просто хотят собрать, что то работающее, поэтому экономят и делают из хлама(того что есть под рукой или в легкой доступности), а когда понимают что работает, но при этом хотелось бы улучшить качество станка, вот тогда и покупают уже конструкционный профиль.
      А вообще автор молодец, не все могут поставить цель и до вести её до конца.


    1. PoliTeX
      30.05.2016 15:56
      +1

      Если делать из профиля — и все остальное должно соответствовать:
      — нормальные станки. Как минимум сверлильный, если продавец его в размер нарежет;
      — Нормальные подшипники, направляющие, ходовые винты и пр.
      — шаговиком из принтера уже не обойдешься.
      А это уже удорожание не меньше чем на порядок. И ошибки проектирования не так просто исправить.


  1. amarao
    30.05.2016 16:03
    +3

    Следующий шаг: выпилить с помощью этого станка более точный станок.


    1. Question_And_Answer
      30.05.2016 16:38
      +1

      Более того, так и задумывалось. Этот инструмент, каким бы кривым он не вышел, получился точнее моих рук. Следующий шаг, собрать новый станок, более жесткий. Уже спроектирован. Уже фанерка 18 мм попилена. Продолжаю делать. А после будет 3D принтер. А после, и еще одна довольно классная штука. Но сначала закончу то, что начал.


      1. levevg
        30.05.2016 20:55
        +1

        Насчёт фанеры это вы очень правильно. Я тоже когда-то думал что у меня руки слишком кривые. А когда увлёкся поглубже работой с деревом, понял что опытные люди с прямыми руками даже не будут пытаться сделать что-то крепкое и точное из сосновых/еловых панелей. Это слишком мягкая древесина, хоть какая-то прочность на изгиб у неё есть только в одном направлении, при изменении влажности она меняет размеры и «выходит из плоскости» :), при сверлении отверсия получаются на десятые доли мм больше, чем сверло (и это на станке) и так далее. Для таких вещей нужна древесина потвёрже, и желательно в виде фанеры (чтобы направления волокн чередовалось по слоям). Англоязычные woodworker-ы на ютубе повально используют балтийскую берёзовую фанеру для таких поделок, правда жалуются на стоимость. По счастью, я живу в Риге и фанера тут дешевле, чем еловые панели :D


    1. roller
      30.05.2016 16:52
      -2

      Нельзя с помощью менее точного станка выпилить более точный. Можно только ухудшить точность. Ну это если говорить про реальный мир.


      1. Question_And_Answer
        30.05.2016 16:57
        +5

        Почему нет? С каждой итерацией погрешности будут уменьшаться. Как же тогда технический прогресс двигался и получал атомные микроскопы в итоге?


        1. roller
          30.05.2016 17:41
          -2

          Рассмотрим одномерный станок (СтА)
          Пусть на нем мы собираем другой старок (СтБ)
          Например нам нужно просверлить отверстие в точке ноль, но СтА дает погрешность и мы просверлим отверстие в интервале от (-1; 1)
          Так как мы не знаем где это отверстие произошло — станок СтБ просверлит нулевое отверстие где то в интервале (-2; 2). И тд


          1. PoliTeX
            30.05.2016 17:55

            Почему не знаем? Нам запрещают померять?


          1. Ezhyg
            30.05.2016 21:50
            +7

            Да ладно?!
            Вот вам исторический факт (способ этот использовался неоднократно и гораздо позже, и сейчас иногда используется):
            «Предпосылки к взаимозаменяемости и стандартизации резьбы были созданы Генри Модсли (Henry Maudslay) приблизительно в 1800 году, когда изобретённый им токарно-винторезный станок сделал возможным нарезание точной резьбы. Ходовой винт и гайку для своего первого станка он изготовил вручную. Затем он выточил на станке винт и гайку более высокой точности. Заменив первый винт и гайку новыми, более точными, он выточил ещё более точные детали. Так продолжалось до тех пор, пока точность резьбы не перестала увеличиваться.»


        1. nmi77
          30.05.2016 22:46
          +3

          Есть анекдот про то как делают кораблики в бутылке.
          Засыпают палки, мусор и клей.
          Потом трясут — чаще всего фигня получается, но иногда кораблики.

          Как делают точные подшипники на оборудовании более низкой точности — партии обойм и шариков делят на группы, в каждую из которых отобраны детали с соответствующими допусками.
          Например оборудование делает обоймы допуском +- 0.5 мм и такие же шарики. Их замеряют и сортируют на 10 групп с допусками +0.5,+0.45,+0.4,...-0.45,-0.5
          Вуаля — на хреновом станке мы сделали подшипники с точностью на порядок выше оборудования, можем заменить их в ШВП исходного станки и улучшить точность перемещения по осям в нем.
          Так и со сложными изделиями типа станков на помощь приходит выборка годных деталей из большой партии произведенных и ручная доводка.
          Появлению точных станков и атомных микроскопов предшествовал длительный период сотрясания бутылок с мусором )))


      1. amarao
        30.05.2016 17:17
        +11

        То есть современные станки — это всё более ухудшающиеся реплики Божественного Станка, выданного Адаму при изгнании? И каждая следующая копия всё хуже и хуже.

        (Ну или предложите свою версию как получились точные станки).


        1. roller
          30.05.2016 17:52
          +1

          https://geektimes.ru/post/276592/#comment_9315974


        1. nomadmoon
          31.05.2016 09:05

          Индиана Джонс и Божественный Станок


        1. agarus
          01.06.2016 01:08

          Прямо по Платону :)


      1. DrReiz
        30.05.2016 17:30

        Из деталей с точностью N можно собрать станок, который будет делать детали с точностью N+1.


      1. levevg
        30.05.2016 21:05
        +1

        Как пример устройства, способного повышать точность — https://ru.wikipedia.org/wiki/Пантограф_(прибор)
        Его можно собрать как угодно криво, лишь бы в шарнирах особых люфтов не было, и плечи сильно не гнулись
        А точность будет в прямом смысле умножаться (по сравнению с шаблоном)


    1. ssneg
      30.05.2016 16:58
      +2

      На двадцатом шаге армия роботов будет производить новых роботов быстрее, чем разрозненные отряды человеческого сопротивления — их убивать.


      1. amarao
        30.05.2016 17:18
        +1

        На 21ом они (роботы для создания роботов и роботы для уничтожения роботов) достигнут эквилибриума. Динамического, с осциляциями.


        1. PanamOS
          30.05.2016 23:03
          +1

          Когда они добрались до него, забавная мысль мелькнула в сознании Хендрикса. От нее он даже почувствовал себя несколько лучше. Граната. Созданная второй моделью для уничтожения остальных. Созданная с одной единственной целью. Они уже начали истреблять друг друга. (с) Филип Дик. Вторая модель


  1. novichek
    30.05.2016 16:57
    +1

    После прочтения множества форумов, пришел к выводу, что делать нужно на станине из чугуния, и заказывать фрезеровку деталей, иначе собрать нормальную механику для обработки твердых материалов не получится, Смотри в сторону подвижного портала на двух двигателях и ШВП, и шпинделя на водяном охлаждении.


    1. angryMyPuK
      31.05.2016 16:48
      +1

      вот человек с бетонием заморочился
      youtu.be/lxqxlexybqE


      1. Question_And_Answer
        31.05.2016 16:48

        Очень суровый аппарат. Нет слов.


  1. ssneg
    30.05.2016 16:59

    Очень крутой проект. Спасибо, что поделились, вдохновляет.


  1. AVKinc
    30.05.2016 18:17
    -11

    Такое поделие достойно выглядит для ученика десятого класса. Можно было даже гордиться.
    Но взрослый человек, самолично выкладывающий подобное на всеобщее обозрение, выглядит как минимум странно.
    На профильном форуме ЧПУшников такого не увидишь. А тут то не в теме все, повосхищаются.


    1. Question_And_Answer
      30.05.2016 19:06
      +3

      Что поделать то теперь? Пойду на форум десятиклассников.
      На профильном форуме ЧПУшников люди на этом сразу деньги стараются делать и вкладывают в производство соответственно.


  1. AVKinc
    30.05.2016 20:34
    -7

    Да нет, надо пойти на профильный форум, почитать, поспрашивать народ.
    Потом сделать нормальный станок. На котором можно много чего интересного и нужного сделать.
    А по факту денег вы потратили, времени очень много, а толку ноль. Вы наверно уже убедились, что гравировать платы не так уж и здорово и лазерный утюг не так уж и плох (когда руку набил)
    И как бы непонятно, для чего вы все это безобразие на публику вывезли. Ну похвалят вас кто не в теме. Скажут, чувак ты крут. Кто в теме, ухмыльнется и мимо пройдет. Я вот не смог, каюсь. Больно уж вопиющее зрелище.


    1. Question_And_Answer
      30.05.2016 21:20
      +6

      Извините, но не все такие таланты с первого наскоку. Форумы терроризировать нету сил. Все будут мычать одну песню. Купи нормальные направляющие. Закажи фрезеровку из металла. Или купи готовый. Все это деньги или некоторые связи. Ни того ни другого, к сожалению, у меня нету. На форумах люди уже забыли, что есть обстоятельства, есть причины по которым все действительно хорошие и качественные варианты иногда не вариант для конкретной ситуации и забывают дать ответ на конкретный вопрос.
      Все постигалось самостоятельно. Не очень хочется слушать продолжение по поводу того, что все плохо. Да, не хорошо. Но это далеко не конец. Именно по-этому в самом начале я написал спойлер. А в конце подвел итог и предложил пути улучшения. И именно потому, что у меня стоит цель сделать это для себя и для собственных нужд, для собственного удовлетворения я это сделал так, как смог, как устраивает меня. Один.

      P.S. Так как это первый для меня подобный вброс, первый раз и отвечу.


    1. Samal
      30.05.2016 23:18
      +9

      Хм, не хочется переходить на личности, но смотреть как твоего студента на пустом месте «разжалывают» в десятиклассники не могу. Итак:

      1. У вас слегка идеалистическое представление о сегодняшних десятиклассниках. 90% из них лампочку поменять не могут. 99% — паяльник в живую не видели. Ибо радиокружков практически не осталось, да и ценности нынче у них не те…
      2. «взрослый человек, самолично выкладывающий подобное на всеобщее обозрение» — а) сделал всё сам, б) довёл проект до рабочего прототипа, в) является студентом специальности, которая отнюдь не учит его изготавливать станки с ЧПУ. Более того, к моему великому сожалению, сопромата они уже лет 20 как не изучают.
      3. «выкладывающий подобное на всеобщее обозрение» ибо: а) это было условие зав. кафедрой, б) кто-то из «последователей» сможет сделать соответствующие выводы, в) хабр всегда был ценен конструктивными комментариями. Ради них (во многом) и публикуемся.
      4. некто, кто "… но я например спроектировал и сделал фрезерный станок с ЧПУ..."(с) мог бы и: а) опубликовать собственных рук творенье, либо б) продемонстрировать конкретную ссылку на то как надо, вместо того, чтобы просто отправлять безадресно на мифические «профильные форумы ЧПУшников».

      Дикси.


      1. impetus
        31.05.2016 12:37
        +1

        а, так это вы гоняете стедентов делать изделия «в железе» и публиковать их на ресурсе со свободным комментированием? Хорошее дело затеяли, годное — как способ актуализации студентов в реальный мир.


        1. Samal
          02.06.2016 14:07

          У вас прямо как у ФрекенБок получилось " А так вот кто ворует мои плюшки" %)

          Да, это я их «стимулирую» на сие действа… Спасибо за одобрение…

          Дабы не повторяться — уже описал нашу систему в соседней статье: https://geektimes.ru/post/276356/#comment_9317014


      1. AVKinc
        31.05.2016 20:21
        +1

        А зачем мне что-то публиковать и ссылки давать?
        Я скромный перец, занимаюсь станками в качестве хобби. Мне ЧСВ повышать особо нужды нет.
        Но если вам уж так хочется, то вот мое творение:
        https://www.youtube.com/watch?v=wS9cTbZ9qb8


        1. Question_And_Answer
          31.05.2016 20:52
          +4

          Извините. Но, что я и писал. Это деньги. Хобби оно у вас хобби, только все решили купить (по крайней мере электронику) и не заморачиватся. Оно и правильно, ваша цель производить. Готов поспорить, но какой-то профит вы от этого имеете. Моя цель, собрать, прокачаться и, если получится, использовать (в результате я не был уверен).
          ЧСВ оно ЧСВ. Свое вы повышаете дивергентным поведением. Уж как вижу я. Никого обижать не хочу. И спорить тоже. Разные условия, разные решения. Просто примите это.


          1. AVKinc
            31.05.2016 21:23
            -2

            Забавно.
            Целиком собрать нормальный ЧПУ дома невозможно. Все равно нужно что-то покупать. Иначе будет бесполезная поделка. Непонятно чем вы прокачались. Вполне очевидно что любая поделка заработает и что-то там будет пилить.
            Электронику можно было сделать и самому, но это бралось еще по старому курсу и смысла морочиться не было, драйвер стоил 1000р.
            Я хотел сделать нормальный станок и сделал его. Просто на слабо в общем и целом. Никаких денег зарабатывать я на нем не собирался.


        1. Samal
          02.06.2016 14:25

          >....Но если вам уж так хочется, то вот мое творение:
          https://www.youtube.com/watch?v=wS9cTbZ9qb8


          Творение достойное, спору нет.
          Аплодирую стоя (если всё собрано с чистого листа и с первой попытки, естественно).

          Но про ссылки остаюсь при своём мнении — коли вы уже послали человека, то посылайте адресно…


    1. dom3d
      02.06.2016 13:35

      20 лет назад мало кто видел в глаза станки с ЧПУ.
      А сейчас уже люди сами делают, молодцы.


  1. ColdPhoenix
    30.05.2016 20:56

    Было бы интересно примерную стоимость узнать


    1. Question_And_Answer
      30.05.2016 21:08
      +1

      Сейчас будут очень приблизительный цифры.

      • Двигатели — 0 (за бесплатно)
      • Дерево — <20$
      • Метал в виде уголков, скоб и стяжек + гайки с болтами и шурупы — <30$
      • Мебельные направляющие — <20$
      • Шпилька — ~3$
      • Электроника (все целиком без компьютера) — ~30$
      • Компьютер — 0$


      В сумме около 100 — 120$. Точнее я не скажу. Но! Больше волосатое Но! Ибо это была первая попытка, то эти цифры на сборку без косяков и правок. А так как оные все же присутствовали, то можно докинуть еще 30$. Итого 150$.


  1. lex9417
    30.05.2016 21:09

    неплохая статья, но хотелось бы подробное описание софта и в целом идеи работы. какой модуль за что отвечает, что конкретно делает софт на пк, а что делает контроллер. как они общаются и все такое


    1. Question_And_Answer
      31.05.2016 17:29

      Будет. Но не в этой статье. Это для начала. Ибо получится очень подробная и длинная статья, если все объяснения привести. Я морально не готов.


  1. tzlom
    30.05.2016 21:33
    +5

    Всё дерево на фанеру замените, дерево будет вести по всем осям от влажности, фанера же играет только по толщине.
    Для портала не хватает жёсткости по Y, на больших подачах это у тебя вылезет в неровность поверхности (на дереве будет гладко но может подгорать).
    Сама схема я бы сказал самая удачная, хотя ещё Г образная неплохая, но там в хобот надо много жёсткости класть, в дереве это не реально.
    Выше советуют подвижной портал — если тебе под раскрой или плоскую гравировку/фрезеровку (например крылья самолётиков) то эта схема идеальна т.к. можно сделать большое поле, однако если охота делать высокие детали (выше 50 мм) то подвижной портал ты проклянёшь — по собственному опыту, ход Z 100 и там уже начинается кривизна на Д16Т, высокие порталы съедают ход по Х и повышают требования к нагрузке.
    Если стоит выбор в направляйках делать сталь с рынка или ал профиль — бери профиль, у него поверхность ровнее, если конечно нет желания пришабрить, тогда только сталь, алюминий тяжелее шабрить (вообще можно ли это отдельный вопрос).
    Для дерева и точности в десятку отличное решение для осей — зубчатое колесо по клиновому ремню, бюджетно и не мнётся в отличии от шпильки.


  1. KTG
    31.05.2016 08:11

    как собрать шаговый двигатель в домашних условиях?


    1. ikaktys
      31.05.2016 14:47

      практически, то что можно будет применять — никак


  1. melchermax
    31.05.2016 12:32

    Замечательная работа: максимум функциональности с незначительными затратами.

    1.Повысить напряжение питания двигателей с 12 В до их рабочих 24 В

    А что это за моторы такие, что питание драйверов только такое низковольтное позволяют? TB6600 в качесте драйверов не рассматривали? Мой первый 3Д принтер был портального типа, всё из профиля 40х40 мм, с ШВП и линейными шинами. ТБ6600 гоняли моторы так, что стол трясся. Вот видео на средней скорости:


    1. ikaktys
      31.05.2016 14:51

      товарищ так и не понял основное предназначение L297, а именно — ее чопперный режим, у него банально нет стабилизации тока через моторы, т.е. при 12в ему просто повезло, что суммарное падение на мостах в L298 достаточно большое что бы оставшееся напряжение не пожгло ее и моторы, если ж он подаст 24в, то L298 тут же сгорит. А без стабилизации тока ни на какую скорость рассчитывать даже близко нельзя, т.е. он не прочитал вдумчиво ни даташыты на L297/L298 ни про принципы управления шаговиками.


      1. Question_And_Answer
        31.05.2016 17:26

        Ну. Вроде как, когда первый раз увидел даташит и схемы в сети, сразу задался вопросом зачем резисторы через SENSA/B. Понимал, что для обратной связи по току, но не понял как рассчитывать и что мне это даст. И нашел, в принципе, то что искал, а именно, что вроде можно и без них, так как чего-то сверх классного не планировал делать, все равно не вышло бы с первой попытки, а найти на пару Ватт резисторы по 0.5 Ом поленился, если честно.

        Пересмотрел даташит. Вроде понял, что чопперный режим просто рубит сигналы обмоток (почти как ШИМ, только не по времени, а по току) чтобы стабилизировать ток на обмотках ШД, что, в принципе, должно убить лишние вибрации и ускорения, что сделает вращение стабильнее. Однако, я не знаю точных цифр, но что-то мне подсказывает, что это позволит дожать еще 10% до максимума двигателей, что, пока, что не такой приоритет для меня.

        Почему если я вкачу 24 В на двигатели драйвера сразу выгорят? Если по току не будет превышений, и взяв запас на выбросы от катушек при переключении, то ничего не должно выгореть. Конечно, у меня сопротивление обмоток 5 Ом, что дает 4.6 А через драйвер. И это много. Но ведь я же и не собирался вкатывать эти 24 на ту же схему. Я всегда рассчитываю максимальные параметры, чтобы не пожечь. По-этому схема нового драйвера тоже будет другая.
        В общем. Я понял ваше замечание и перечитал даташит. Извлек новое про стабилизацию. Спасибо. Учту.


        1. ikaktys
          31.05.2016 18:13
          +4

          Еще раз советую прочитать как работает шаговик вообще, но не самый примитив как вообще шагает, + как работает связка L297/L298.

          А именно — в шаговике активное сопротивление обмотки в идеале не роляет никак, максимум — в статическом режиме или особо низкой скорости шагов. Но обмотки имеют индуктивность, и с повышением скорости шагов повышается частота тока через обмотки т.е. индуктивная составляющая сопротивления начинает расти, т.е. ток, как и момент вращения начнет падать.

          Для этого и нужна стабилизация тока через мотор, иначе нельзя будет получить сколько-нибудь нормальных скоростей, например при питании 12в без стабилизации тока на моторе после L298 останется вольт 9, при сопротивлении 5 Ом — ток в покое 1.8А, но как только ты начнешь крутить мотор — ток начнет резко падать, в разы, так же начнет падать крутящий момент.

          При 24в мотор и/или L298 банально сгорит, так как ты будешь в статике прогонять 4-5А через КАЖДУЮ фазу, т.е. 8-10А на мотор, L298 умрет сразу. Т.е. три мелких мотора — а тебе надо БП на 24В и 25+А!

          Именно против этого и используется чопперный режим, когда индуктивность мотора становится как бы индуктивностью импульсного БП и ток мотора и момент вращения становится независим от скорости вращения. А так же потребление в статике становится резко ниже, ток обмоток будет, например, 2А, но от БП на 24в будет фактически потреблятся ~0.5А на весь мотор, т.е. на три твоих мотора БП на 24В/6А будет достаточен, а 24В/10А — с запасом на все, точно так же теперь можно задрать напряжение уже до 30-35В, и мотор так же не сгорит, если не крутить его слишком быстро, но зато позволит разгонятся намного резвее без потери шагов (ключевoе слово — ramp).

          Помимо этого используются стратегии шагания в виде не только 1/1 шага, а и 1/4, 1/8 или 1/16, позволяющие создавать в обмотках мотора почти синусоидальный ток и проскочить механические и электрические резонансы.

          а сейчас кроме старушки L298 давно есть куча нормальных микрух на любые (бытовые) токи и напряжения, например A4988 на 35в/2А или TB6560 40В/3.5А или более новая TB6600 на 50В/4.5А. как и готовые модули на них за копейки.


          1. Question_And_Answer
            31.05.2016 19:06

            Да. Понял. Забыл про индуктивное сопротивление.

            На случай про прогонять через каждую обмотку 1.8 А в статике я как раз это предусмотрел в контроллере. Чтобы не держать двигатель под напряжением, завел дополнительный таймер сброса. Сбрасывается счетчик таймера в 0, на каждую коммутацию. Когда прерывание по этому таймеру сработает, все выводы коммутации обмоток будут сброшены в 0, и на драйвере соответственно тоже. Период таймера 104,576 мс. Собственно, можно уменьшить.

            Да, вариант не лучший, но делался специально, чтобы не гонять через двигатель токи. Такое большое время выбрал, потому, что не придумал как это рассчитать или чем руководствоваться. Когда придет «последний» перед задержкой такт, ротор успеет занять новое положение.

            В статье я про это писал. Кажется это похоже на заготовку чоппера. Только чоппер, все же, использует данные о токе и режет соответственно. На контроллере есть один свободный компаратор. Можно будет попытаться и это расширить, но наверно, все же, буду делать на готовом железе. Делать контроллер на МК, как-то получается не слишком качественно.

            Про микрошаги я в курсе. Думаю, пока не время для этого. Есть много других более значительных косяков, как вы можете видеть.


            1. melchermax
              31.05.2016 21:12

              Обесточивать шаговый мотор в процессе работы станка — так себе идея. Вот здесь немножко информации: https://geektimes.ru/post/275904/


            1. ikaktys
              01.06.2016 10:51

              без ОС по току через sense резисторы невозможно проконтролировать ток просто никак, индуктивность и параметры мотора нифига не линейны в зависимости от скорости. На контроллере делать это практически не имеет смысла, только если ты попробуешь сделать ну очень умный контроллер шаговика, типа уже имеющихся, которые через противоЭДС умеют контролировать пропуск шагов и нагрузку на мотор без обратной связи через энкодер.

              А совсем обесточивать мотор — полная задница, потому что будут теряться шаги, да не по одному, а можно сразу минимум люфт в гайке потерять, т.е. десятые доли мм. Поэтому то и делают этот чоппер + современные чипы сами в покое снижают ток через мотор для экономии, обычно раза в два, но продолжают удерживать мотор.


              1. Question_And_Answer
                01.06.2016 11:05

                Понятно. Сработает, если я не буду обесточивать, а устрою ШИМ в статике на двигателе как временную меру на сейчас? То есть, по крайней мере снижу ток на двигателе, но не буду так по харду обесточивать.


                1. melchermax
                  01.06.2016 11:20

                  Простой ШИМ длы снижения тока в статике можно сделать, только если Вы не используете микростеппинг (микрошаг), при микростеппинге надо подедерживать строго определённый (в большинстве случаев неодинаковый) ток в обмотках. А вообще, зачем городить костыли, когда Вы такие замечательные печатные платы делаете? TB6600 имеет минимум внешних компонентов, хорошую нагрузочную способность и т.д.


                  1. Question_And_Answer
                    01.06.2016 11:40

                    когда Вы такие замечательные печатные платы делаете


                    Я не понял сарказм это или нет. Но в любом случае, костыли, как уже писалось, захотелось. Уж извиняйте.
                    Я уже понял, что тут не нужно костылировать и лучше использовать готовые схемы. Это будет. Но нужно подготовится. К этому и идет. Просто не могу так сразу все купить.


                    1. melchermax
                      01.06.2016 14:46

                      Это не сарказм, платы действительно аккуратные. Один раз сделать нормальные драйвера дешевле, чем много раз переделывать или сгоревшие моторы докупать


                1. ikaktys
                  01.06.2016 11:25

                  Проще выкинуть L298 и купить готовые платки с A4988, 35v/2A, все прибамбасы на борту, типа чоппера, микрошага и пр., радиатор не нужен вообще, и готовые платки стоят $10-11 за 10 штук включая доставку.

                  http://www.aliexpress.com/item/Nes-product-10pcs-lot-Reprap-Stepper-Driver-A4988-stepper-motor-driver-with-Heatsink-Free-Shipping/1609553631.html

                  держалка/шилд на 4 платы стоит $3:

                  http://www.aliexpress.com/item/V3-Engraver-3D-Printer-CNC-Shield-Expansion-Board-A4988-Driver-For-Arduino-Brand-New/32591551226.html

                  ну или все вместе

                  http://www.aliexpress.com/item/RAMPS-1-4-3D-printer-kit-control-panel-printer-Control-Reprap-MendelPrusa-with-5-pcs-A4988/1798752650.html


                  1. melchermax
                    01.06.2016 11:43

                    Эти два ампера у А4988 обозначают пиковый ток. Долговременный ток максимум 1,5 Ампера, и то только с приклеенным радиатором, зачастую и обдув нужен. Косвенно о малом расчётном токе говорит также малая мощность рассеивания Rsense на платах этих драйверов.


                    1. ikaktys
                      01.06.2016 12:09

                      это если бюджет совсем уж ограничен, как у автора, и/или моторы мелкие, зато очень дешего.

                      Иначе есть, как я уже упоминал, TBшки, например мне очень новые TB6600 понравились, плата на них на 4 канала стоит менее $50, они без проблем смогут с запасом 40в/4А, там сразу радиатор с вентилятором, с ними я из свого станка выжимаю до 4000мм/мин, вместо 1500 со старыми TB6560.


                      1. melchermax
                        01.06.2016 14:50

                        Я тоже только с TB6600 работаю.


                  1. Question_And_Answer
                    01.06.2016 11:49

                    Честное слово, электроника в следующий раз будет уже не такая велосипедная.) Но, скорее всего соберу сам, если и не куплю, но соберу уже на готовых чипах и использую проверенные решения.


  1. JC_Piligrim
    31.05.2016 14:36

    А есть ли что-то уже готовое в пределах $200 у Китайцев? (Как в случае со сносными 3D-принтерами, на которых можно даже печатать. И тоже в пределах данной суммы)?


    1. PoliTeX
      31.05.2016 14:59

      Есть, но с доставкой — от $250.


  1. dron_k
    31.05.2016 23:15

    К сожалению самое интересное — результат, остался под опилками.
    Покажите хоть что получается, вдруг кому результат понравится — будет информация о соотношении деньги / качество.


  1. UA3MQJ
    02.06.2016 13:25

    Сразу как-то самодельный плазморез вспомнился у друга в цехе

    фото
    image

    image

    image

    image

    image

    image

    image


    1. Question_And_Answer
      02.06.2016 13:37
      +2

      Очень мощно выглядит.


    1. dron_k
      08.06.2016 01:17

      Брутально!


  1. pencilTM
    03.06.2016 07:02

    мда… такое *** собрать, да ещё в нескольких вариантах.
    Тут не руки кривые (руки, как раз, что надо). Тут мозги прямые — видно, что человек никогда ничего руками не делал и не видел как делают другие.
    Почему бы, действительно, не сходить на форумы ЧПУшников? Ну, элементарные представления о механике и сопромате надо же получить?
    Вы код пишите не понимая что исполнят конкретные команды? Нет. А тут собираете объёмную конструкцию раз за разом повторяя одну и ту же ошибку, которую не делает пятикласник на уроке труда, собирая табуретку.
    Вы о косынках когда-нибудь слышали? О треугольнике в конструкции? Вы видели опоры ЛЭП? они все из треугольников.
    Откройте учебник физики класс за 7-ой. Познакомьтесь с Архимедом, рычагом. Поинтересуйтесь что такое момент.
    Вы собрали первый раз хорошую конструкцию. И если хотя бы прибили/привентили простую рейку по диагонали, то ничего не шаталось бы.
    Но так вы не понимаете механики в принципе, то пошли по пути утолшения конструкции, что, понятное дело, не привело ни к чему хорошему.
    Кто же ставит сраные тощие уголки для крепления перпендикулярных плоскостей? Минимум косынки надо ставить.

    Так что вперёд, за знаниями! И не важно от куда растут руки, если они золотые. Всё получится — упорства и трудолюбия вам не занимать!


    1. vvzvlad
      04.06.2016 06:24

      А что такое косынка?


      1. Ezhyg
        04.06.2016 20:30
        -1

        Разновидность пасьянса же ;).
        Тот самый который учил работе с мышкой.


  1. vvzvlad
    04.06.2016 06:24

    LPT? Серьезно? Зачем?
    Возьмите железо и прошивку от любого 3Д-принтера/CNC-станка опенсорсного — будет и USB(которое не будет требовать ресурсов компьютера, потому как оперирует G-code c буфером на стороне станка, а не командами на двигатели) и проверенные драйвера, и отлаженная прошивка. И как уже сказали, драйвера нормальные поставить, типа TBххх
    Зачем делать кучу плат, а затем соединять их проводами?
    Зря вы корпус от вентилятора убрали — он так в стороны дует половиной воздуха, а не на радиаторы.
    BMP-картинки это олдскул такой?