Намоточный станок на Arduino

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

Устройство, о котором пойдет речь, представляет из себя автоматический намоточный станок с укладчиком витков и индикацией процесса на символьном ЖК экране. 
Интеллектуальным ядром устройства является знакомый многим микроконтроллер ATmega328P, расположенный на китайском варианте платы Arduino UNO. Контроллер через CNC Shield (плата расширения ЧПУ) управляет силовой частью устройства, состоящей из двух драйверов шаговых двигателей (ШД) на базе микросхемы DRV8825 и двух ШД 17HS3401 и 17HS4401 (полный оборот 200 шагов). Человеко-машинный интерфейс состоит из модуля поворотного энкодера KY-040 и символьного дисплея 16×2 с контроллером HD44780 и модулем связи по шине I2C на расширителе портов PCF8574A. Питание схема получает от импульсного БП 220AC-12DC 60W. 

Arduino UNO

Микроконтроллер задействует драйвера «Z» и «A» при этом на CNC Shield-е для соединения драйвера «A» с пинами 12 и 13 ардуино необходимо установить перемычки D12-A.STP и D13-A.DIR. Режим работы DRV8825 выбираем с микрошагом 1/16 установив перемычки M2 на плате, это означает что на один шаг ШД (1,8°) необходимо подать 16 фронтов сигнала STP. Установку модулей DRV8825 необходимо произвести так как показано ниже.

После установки драйверов ШД необходимо обязательно выставить ограничение по току. При подключенном напряжении 12В к плате CNC Shield, но без электродвигателей, необходимо вращая подстроечный резистор выставить значения ограничений. Текущее значение контролируем мультиметром и вращая отверткой подстроечник, добиваемся значений напряжения для драйвера «Z» 0,68В и 0,52В для драйвера «A». Эти значения напрямую связаны с номинальным током ШД. Для 17HS4401 In = 1,7А, а для 17HS3401 In = 1,3А. Значение напряжения в щадящем для ШД режиме вычисляем по формуле Vref = 0,8*(In / 2).

Подключение I2C 1602 LCD выполняем к соответствующим выводам SCL, SDA, 5V, GND платы расширения. На модуле энкодера допаиваем подтягивающий резистор R1 10k если его там нет. Для устранения дребезга контактов необходимо собрать схему аппаратного подавления, ее можно оформить в виде модуля, дополняющего модуль KY-040 как показано ниже. Фильтры низких частот на R4-6 и C1-3 устраняют дребезг, а триггеры Шмитта МС 74НС14N восстанавливают фронт и спад сигнала.


Для подключения энкодера к ардуино соединяем пины X.STEP и CLK, Y.STEP и SW, X.DIR и DT а так же GND и +5V с соответствующими выводами платы.


Механическая часть намоточного станка это шесть стоек прикрученных к оргстеклу. Стоики напечатаны пластиком на 3D принтере, но при наличии должной пряморукости могут быть изготовлены другими способами и из других материалов. Основной вал (шпилька М6) приводится в движение ШД 4401 и на нем располагается каркас для намотки. Далее две стоики укладчика с валом диаметром 6мм и шпилькой М4 (шаг резьбы 0,7мм) на валу ШД 3401. Вращение двигателя приводит к линейному перемещению укладчика, при этом один шаг ШД дает перемещение L = шаг резьбы / шагов на оборот = 0,7/200 = 0,0035мм. Последние две стойки держат подающую катушку. Поджатием резиновой шайбы к подшипнику обеспечивается натяжение провода при намотке. 

Программа для ATmega328P написана в среде разработки Arduino IDE на языке C++. Для успешной компиляции кода необходимо иметь установленную библиотеку LiquidCrystal_I2C.

Из основного меню можно попасть в подменю управления позицией шаговых двигателей POS CONTROL это необходимо для установки начальной позиции основного вала и укладчика. Подменю AUTOWINDING предназначено для ввода значений автоматической намотки. Работа с кнопкой энкодера, а также, с самим энкодером и драйверами ШД осуществляется через прерывания.

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

Результаты испытаний показали, что при правильном начальном позиционировании, станок обеспечивает точную автоматическую намотку слоев эмалированного провода диаметром от 0,06 до 0,5 мм. Варьируя значениями кол-ва витков (TURNS) и шага (STEP) можно добиваться режимов «виток к витку» и «равномерное заполнение окна».
На этом у меня все, прошу высказывать свое мнение в комментариях.

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Плата Arduino Arduino Uno 1
Плата расширения Arduino CNC Shield DRV8825 1
Шаговый двигатель 17HS4401S 1
Шаговый двигатель 17HS3401S 1
Модуль поворотного энкодера KY-040 1
LCD-дисплей 1602 HD44780 1
Расширитель портов I2C модуль на PCF8574A для LCD 1
D1 ИС буфера, драйвера SN74HC14 1
R1, R4-R6 Резистор 10 кОм 4
C1-C3 Конденсатор 100 нФ 3