С момента публикации первой версии намоточного станка на Arduino прошло уже больше года. С тех пор я переосмыслил некоторые важные моменты по механике, электронике и программе управления, и в данной статье расскажу о реализации обновления 2.0. По базовой конструкции и электросхеме обе версии весьма схожи и, чтобы не повторяться, я буду делать отсылки к первой статье и рекомендую уважаемому читателю ознакомиться с ней перед прочтением данной.
В ходе обсуждения на форуме и работы со станком одной из главных проблем был выявлен «дерганый» режим автонамотки, когда основному двигателю приходилось останавливаться во время работы укладчика, что приводило к рывкам проволоки и расшатыванию всей конструкции. В дополнение к предыдущему отсутствовал разгон основного двигателя, что еще больше усугубляло ситуацию. Второй проблемой являлся крайне неудобный способ установки и снятия оправки, на которую производиться намотка. Для этого необходимо было разобрать всю намоточную ось, что крайне затрудняло работу.
Итак, обо всем по порядку. Программа работы обоих шаговых двигателей теперь организована в одном прерывании, что позволило «рулить» ими одновременно. При этом для лучшей плотности витков двигатель укладчика делает перемещение в конце цикла витка, что позволяет поджимать новый виток к предыдущему. Плюсом к этому, основной двигатель выходит на заданную скорость с ускорением, а если точнее, то начинает движение с некоторой скоростью Vo≈4 об/мин и разгоняется за оборот до заданной. Это уменьшает рывок проволоки в начале намотки. Параметр меню «Speed» теперь устанавливает скорость в оборотах в минуту, программный предел 300 об/мин, хотя я не тестировал при реальной намотке скорости даже близкие к предельной, т.к. для этого необходимо исключить все или почти все пластмассовые детали из механики. В меню автонамотки добавлен параметр Direction, который назначает начальное направление укладчика.
Это было трудным решением, но упразднена вторая опора под ось оправки, что позволяет теперь ставить и снимать ее гораздо удобнее. Шпильку М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 | |||||