Намотувальний станок на Arduino версія 2.0

З моменту публікації першої версії намотувального станка на Arduino пройшло вже більше року. З тих пір я переосмислив деякі важливі моменти по механіці, електроніці та програмі управління, і в цій статті розповім про реалізацію оновлення 2.0. По базовій конструкції та електросхемі обидві версії досить схожі і, щоб не повторюватися, я буду робити посилання на першу статтю і рекомендую шановному читачеві ознайомитися з нею перед прочитанням цієї.

В ході обговорення на форумі та роботи зі станком однією з головних проблем було виявлено "дриганий" режим автонамотки, коли основному двигуну доводилося зупинятися під час роботи укладчика, що призводило до ривків дроту та розхитування всієї конструкції. У доповнення до попереднього відсутній розгін основного двигуна, що ще більше ускладнювало ситуацію. Другою проблемою був вкрай незручний спосіб установки та зняття оправки, на яку відбувалася намотка. Для цього потрібно було розібрати всю намотувальну вісь, що вкрай ускладнювало роботу.

Отже, про все по порядку. Програма роботи обох крокових двигунів тепер організована в одному перериванні, що дозволило "рулити" ними одночасно. При цьому для кращої щільності витків двигун укладчика робить переміщення в кінці циклу витка, що дозволяє підтискати новий виток до попереднього. Плюсом до цього, основний двигун виходить на задану швидкість з розгоном, а якщо точніше, то починає рух з деякою швидкістю Vo≈4 об/хв і розганяється за оберт до заданої. Це зменшує ривок дроту на початку намотки. Параметр меню "Швидкість" тепер встановлює швидкість у обертах на хвилину, програмний ліміт 300 об/хв, хоча я не тестував при реальній намотці швидкості навіть близькі до граничної, оскільки для цього необхідно виключити всі або майже всі пластикові деталі з механіки. У меню автонамотки додано параметр Напрямок, який призначає початковий напрямок укладчика.

Це було важким рішенням, але скасована друга опора під вісь оправки, що дозволяє тепер ставити і знімати її значно зручніше. Шпильку М8 тримає на осі двигуна жорстка муфта, але автор залишає за читачем право замінити це, не зовсім надійне з'єднання, на цанговий патрон. Також варто зазначити, що багато залежить від жорсткості опори двигуна 23HS5628 і, ймовірно, що її потрібно замінити на більш міцний варіант. У файлах проєкту є два варіанти 3D друку цієї опори, пропоную самостійно оцінити їх міцнісні характеристики або виготовити опору самостійно. Укладчик тепер - це різьбовий вал М8 з кроком 1мм, по якому ходить гайка "анти-люфт", і звичайний вал ø8. Всі STL моделі прикладені внизу статті, діаметри отворів надані переважно під розсвердлювання. Крок різьби укладчика можна змінити в коді:

#define ShaftStep 50 // ShaftStep = Крок різьби*50

У зв'язку з використанням ШД 23HS5628 живлення тепер забезпечує БП LRS-75-24 з вихідним 24 Вольта, драйвер для великого двигуна тепер TB6600, а для маленького залишений попередній DRV8825. Про установку струму на DRV8825 читай попередню статтю. Керуючі виводи мікроконтролера для драйверів залишилися незмінними. Якщо встановлений CNC Shield, то це будуть вісь "A" для укладчика та вісь "Z" для намотувального двигуна. Підшипники KP08 замінені на KFL08, але це вже деталі і обидва варіанти цілком працездатні.

Ще варто сказати про натягувач дроту. Окремого конструктиву під нього немає, автор реалізував його парою гумових шайб і гайок, які піджимаются до підшипника котушки і тим створюють тертя. Працює, але не ідеально, сподіваюся з вашою допомогою знайду краще рішення.

Ще трохи про програму:

Протокол обміну даними LCD з послідовного I2C замінено на паралельний полубайтовий (див. схему), він швидший і, при наявності вільних ніжок, я не знайшов причин стиснутися. Хоча на даний момент програма використовує 2 рядки і 16 символів (1602 LCD), але я до своєї версії вже підключив LCD 2004 в зборі з енкодером і бузером, що є заделом на майбутнє. Повернутися до варіанту 1602 I2C у поточній версії ПО все ще можливо, раскоментувавши потрібні рядки:

#include <LiquidCrystal.h>
// #include <LiquidCrystal_I2C.h>
// #include <Wire.h>
LiquidCrystal lcd(RS,EN,D4,D5,D6,D7); // Призначаємо піни для управління LCD 
// LiquidCrystal_I2C lcd(0x27,16,2); // 0x3F I2C адреса для PCF8574AT, дисплей 16 символів 2 рядки 
lcd.begin(20,4); // Ініціалізація LCD Дисплей 20 символів 4 рядки   
// lcd.begin(16,2); // Ініціалізація LCD Дисплей 16 символів 2 рядки   

В подальшому я все ж таки перейду на 4 рядки і підтримку 2 рядкових дисплеїв обіцяти не можу. Версія програми 2.0 є "альфою" і я думаю в темі для обговорення статті ми з вами швидко виправимо баги. 

Список радіоелементів

Обозначення Тип Номінал Кількість Примітка
Плата Arduino
Arduino Uno
1
Плата розширення Arduino CNC Shield v3.0 1
Драйвер ШД DRV8825 1
Драйвер ШД TB6600 1
Модуль поворотного енкодера KY-040 1
Кроковий двигун 17HS3401 1
Кроковий двигун 23HS5628 1
LCD Дисплей HD44780 2004 1 HD44780 1602
 
Конденсатор 10 нФ 3
Резистор
10 кОм
6

Прикреплені файли:

Top