Вы когда-нибудь задумывались почему пряжа, из которой вяжут свитера и носки, хранится в клубках? Что это за формация такая... клубок?
Оказывается, на этапе производства, пряжа сматывается в обычные бобины, как леска или провода, но потом её перематывают в клубки и только после этого продают и используют в рукоделии! Перемотка пряжи осуществляется на специальном приспособлении - называется "моталка". И такие устройства выпускают даже для использования у себя дома!
Эти вопросы не появились у меня на пустом месте. Однажды жена говорит мне:
Помоги выбрать моталку для пряжи
Обстоятельный анализ моталок, представленных на рынке, позволил выявить ряд тенденций среди моделей, предназначенных для домашнего использования.
Во-первых, бюджетные и распространённые модели имеют ограниченный функционал и малые габариты мотаемых клубочков (не все), это означает, что работать с толстой пряжей им крайне трудно.
Мне совершенно не нравится внешний вид этих моталок...
Во-вторых, модели с наибольшей эстетикой, например, выполненные из дерева (даже из простой фанеры) имеют сильно завышенную цену (но может это только мне так кажется). Зато на таких можно смотать целые клубищи пряжи!
Выглядят конечно хорошо, но они ведь занимают целый стол! Где такие хранить?
В-третьих, модели с электроприводом стоят ещё бОльших денег и встречаются ещё реже, как правило, это мелкосерийные изделия или устройства, изготовленные любителями мастерить что-то.
Такой станочный парк держим в доме, мы что не сможем сделать эту моталку сами?
Конечно можем! Было решено изготовить станок для перемотки пряжи в клубочки собственными силами и средствами. Поехали!
Базовый механизм
В общих чертах, механизм моталки напоминает планетарный миксер, только соотношения скоростей другие и ещё пара отличий. Для понимания принципов работы достаточно взглянуть на чертёж и помнить, что планетарный механизм состоит из трёх основных элементов: шестерня-сателлит, водило, солнечная шестерня.
Вращающийся вал или бабина (6), на которой и формируется клубок, закреплена под наклоном на вращающимся основании (водило) посредством кронштейна (11). Наклон составляет около 45 градусов, сделано это для того, чтобы пряжа укладывалась не "виток к витку", а в нахлёст. Это облегчает её последующий съём с клубка в процессе вязания. На бабине закреплено колесо (12), которое играет роль сателлита планетарного механизма. Колесо катится по поверхности неподвижного конуса - солнечной "шестерни" (4), который соединён со станиной механизма. Водило соединяется с электродвигателем (1) через контакт двух резиновых роликов (3) и (2). Вот и вся конструкция. При вращении двигателя, бабина совершает сложное движение вращаясь вокруг оси основания и вокруг своей оси.
Обратите внимание, что соотношение диаметров окружностей, которыми зацепляется колесо (12) и конус (4) имеет такое значение, что бабина вращается вокруг своей оси медленнее, чем основание. Соотношение этих скоростей задаёт шаг с которым будут ложиться витки пряжи.
Идея понятна, теперь надо адаптировать под себя.
Кастомизация
Решено было делать автоматическую моталку. Электронщик я или кто! Но просто моторчик с выключателем - слишком просто, поэтому решено добавить следующий функционал:
регулировка скорости намотки;
контроль обрыва пряжи;
счётчик перемотанной пряжи, желательно чтобы отображал именно в метрах, а не в абстрактных оборотах.
Также были сформулированы общие требования к конструкции моталки:
деревянные корпусные элементы;
крепление к столу через струбцину;
небольшие габариты;
возможность работать с пряжей диаметром до 5мм.
Конструкция моталки
- Тебе что делать нечего, кроме как рисовать анимешных девочек на своих поделках?!
А что такого? Мне нравится, к тому же в тему картинка...
Мне тоже!
После пары вечеров обсуждений и моделирования родилась конструкция, удовлетворяющая дизайнерским и технологическим требованиям. Основной материал корпуса - фанера (толщина 4мм), детали механизма должны быть напечатаны на принтере из PLA пластика. Детали из фанеры будут изготавливаться на настольном фрезере-гравере CNC3018.
Моталка состоит из трёх основных частей:
механизм и его привод
счётчик пряжи и кронштейн
корпус
Планетарный механизм
Механизм моталки представляет собой планетарный редуктор. Сателлитом выступает деревянный диск диаметром 110мм. Он перекатывается по поверхности неподвижного конуса, выполненного из PLA пластика. Выемка на боковой поверхности конуса не позволяет диску перемещаться вдоль образующей конуса. В ней установлена резиновая прокладка, улучшающая сцепление диска и конуса.
Водило, также выполнено из PLA имеет угол разворота 135 градусов. На нём установлена пара подшипников, в которых вращается ось бобины (диаметр 5мм). Эта ось удерживает бабину и сателлит на водиле. Конус закреплён на стальной трубке диаметром 10мм, неподвижно соединённой с основанием. Подвижное соединение водила и трубки обеспечивается упорным подшипником KFL000.
Электродвигатель с редуктором GA25Y370 имеет номинальное рабочее напряжение 12В и развивает 175об/мин без нагрузки. Для передачи крутящего момента от двигателя к водилу используется пара зубчатых колёс с передаточным отношением 1:1. Расстояние между осями колёс 30мм. Каждая шестерня имеет 20 зубцов. Были конечно сомнения по поводу надёжности печати шестерней из PLA пластика, поэтому количество зубчиков сделал поменьше, а их высоту побольше.
Отдельное удовольствие доставили токарные работы по изготовлению оси бобины. Она была выточена из 8мм алюминиевой заготовки.
Счётчик пряжи
Счётчик пряжи является простейшим мерным колесом, обороты которого фиксируются посредством датчика холла и магнита. Основной элемент счётчика - мерное колесо диаметром 31,8мм. Длина окружности составляет 100мм. Это и есть минимальный отрезок пряжи, которое может измерить данный счётчик. Надо сказать, что клубки пряжи, продающиеся в магазинах содержат от 50 метров материала, поэтому точность 0,1м является более чем приемлемой.
Хм... отлично выглядит этот механизм, полностью сделанный из фанерки... А почему остальные детали нельзя было сделать такими же?
Очень здорово, что все детали механизма счётчика удалось изготовить только дерева, это придаёт всему изделию более эстетичный вид. В процессе написания статьи мы пришли к выводу, что все же надо было все элементы изготавливать таким образом...
Кронштейн сделан из алюминиевой трубки с внешним диаметром 10мм. Она была аккуратно согнута на необходимый угол. Внутри трубки проходит шлейф к датчику холла, так что снаружи никаких проводов не видно.
Для фиксации кронштейна на корпусе прибора были изготовлены диски (4 штуки) диаметром 40мм, склеены, стянуты болтами. Затем аккуратно просверлено отверстие диаметром 10мм. Это один из опасных моментов, были опасения, что фанера разойдётся, как только мы начнём сверлить. Поэтому начали со сверла диаметром 3мм, затем 5, 8 и 10. Трубка вошла с натягом и дополнительно зафиксирована винтом по центру.
Корпус
Резка деталей из фанеры производилась на фрезерном станке. Станочек из пластиковых деталей не позволял за один проход прорезать фанеру 4мм, поэтому приходилось снимать по миллиметру на малой подаче. Но в конце концов получались ровненькие детальки.
Ну и что что медленно? Зато своё! Зато ЧПУ!
Ещё одно преимущество фрезеровки - торцы остаются цвета дерева, а не чёрными, как от лазерной резки. Кто-то скажет, что это ерунда, но такие мелочи радуют глаз.
Обычно, фанерные корпуса собираются за счёт пазов, которые входят друг в друга с натягом. Такой корпус явно экономит средства на крепёжных элементах, однако прочность сборки не вызывает доверия, а клей использовать как-то не хочется... что если будет ремонт или модернизация? Было решено скрепить стенки корпуса винтиками.
Электроника
Поскольку в проекте имеется счётчик пряжи, то информацию с него нужно куда-то выводить. Значит ставим дисплей и контроллер. Чтобы слишком сильно не мучатся, было решено использовать готовые модули. Порывшись в загашнике, удалось найти знакосинтезирующий двухстрочный дисплей от winstar, сдвоенный мостовой драйвер LM298N, инкрементный энкодер с кнопкой и биполярный датчик холла с цифровым выходом ну и в качестве основы - Arduino NANO. Соединяем все модули согласно схеме.
Драйвер питается от сетевого адаптера 12В 24Вт. На модуле драйвера имеется линейный стабилизатор напряжения на 5В, от него запитываем микроконтроллер, дисплей и датчик холла. Понимаю, кончено, что сдвоенный мостовой драйвер да и вообще мостовой тут избыточен, но, он был в наличии! Поскольку моторчик надо крутить только в одну сторону, то от контроллера к драйверу тянется только один провод. Он подключен к PB1 (выход таймера OC1A), на нём формируется ШИМ с частотой 5кГц.
Для управления дисплеем используем 6-проводную шину, всё как в даташите. Подсветку дисплея решил не подключать, всё вполне видно и без неё. На экране отображается скорость вращения (скважность ШИМ) в процентах и количество перемотанной пряжи за текущий сеанс. После отключения питания счётчик сбрасывается.
Датчик холла подключен к прерыванию INT1. Один из выходов энкодера подключен к INT0. В обработчике INT0 опрашивается второй выход энкодера. В общем, схема классическая. Кнопка энкодера мониторится в цикле.
Энкодер отвечает за регулировку скорости вращения мотора. При нажатии на кнопку моторчик запускается с заданной скоростью. При повторном нажатии - останавливается. Счётчик пряжи работает только при вращении мотора. Сделано это для того, чтобы можно было без проблем подвязывать фрагменты пряжи при обрыве и не боятся, что можно насчитать лишнего.
Программа для среды Arduino IDE довольно простая, поэтому комментировать не буду.
main.ino
#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 4, 5, 6, 7);
struct sensors_t {
int16_t userEncoder = 0;
uint8_t userEncoderButton = 0;
uint8_t userEncoderButtonPrev = 0;
uint16_t yarnEncoderCounter = 0;
};
struct flags_t {
uint8_t displayUpdate = 1; // установить в 1, чтобы обновить информацию на дисплее, сбрасывается в 0 после вызова UpdateDisplay()
uint8_t buttonTrigger = 0; // переключатель по нажатию кнопки, обновляется в UpdateSensors()
};
struct sistem_t {
struct flags_t flags;
struct sensors_t sensors;
uint16_t motorSpeed = 0;
float yarnLenght = 0;
} sistem;
void setup() {
Serial.begin(9600);
Serial.setTimeout(1000);
lcd.begin(8,2);
lcd.clear();
SetupPins();
SetupExtInt();
SetupPWM();
sei();
}
void loop() {
UpdateSensors();
UpdateDisplay();
if(sistem.flags.buttonTrigger == 0) {
MotorOFF();
}
else {
MotorSet(sistem.motorSpeed);
}
}
void UpdateDisplay () {
if(sistem.flags.displayUpdate != 1) return;
sistem.yarnLenght = sistem.sensors.yarnEncoderCounter*0.1; // количество перемотанной пряжи в метрах
if(sistem.sensors.userEncoder < 0) sistem.sensors.userEncoder = 0;
if(sistem.sensors.userEncoder > 100) sistem.sensors.userEncoder = 100;
sistem.motorSpeed = sistem.sensors.userEncoder;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(sistem.motorSpeed);
lcd.setCursor(7,0);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print(sistem.yarnLenght);
lcd.setCursor(7,1);
lcd.print("m");
sistem.flags.displayUpdate = 0;
}
void UpdateSensors () {
if((PINC&(1<<PC1))!=0x00) {
sistem.sensors.userEncoderButton = 0;
}
else {
sistem.sensors.userEncoderButton = 1;
if(sistem.sensors.userEncoderButtonPrev != sistem.sensors.userEncoderButton) {
if(sistem.flags.buttonTrigger == 0) sistem.flags.buttonTrigger = 1;
else sistem.flags.buttonTrigger = 0;
}
}
if(sistem.sensors.userEncoderButtonPrev != sistem.sensors.userEncoderButton) {
sistem.sensors.userEncoderButtonPrev = sistem.sensors.userEncoderButton;
sistem.flags.displayUpdate = 1;
}
}
void MotorOFF () {
TCCR1A &=(~(1<<COM1A1));
OCR1A = 0;
PORTB &=(~(1<<PB1));
}
uint16_t MotorSet (uint16_t value) {
uint16_t timerValue = map(value,0,100,10,ICR1);
TCCR1A |=(1<<COM1A1);
OCR1A = timerValue;
return timerValue;
}
periphery.ino
#define F_CPU 16000000
// обработка пользовательского энкодера
ISR(INT0_vect) {
if((PINC&(1<<PC0))!=0x00) sistem.sensors.userEncoder += 2;
else sistem.sensors.userEncoder -= 2;
sistem.flags.displayUpdate = 1;
}
// обработка датчика количества промотанной пряжи
ISR(INT1_vect) {
if(sistem.flags.buttonTrigger == 1) {
sistem.sensors.yarnEncoderCounter ++;
sistem.flags.displayUpdate = 1;
}
}
void SetupPins (void) {
// пользовательский энкодер
DDRD &=(~(1<<PD2)); // вход прерывания INT0
//PORTD |= (1<<PD2);
DDRC &=(~(1<<PC0));
//PORTC |=(1<<PC0);
// кнопка пользовательского энкодера
DDRC &=(~(1<<PC1));
//PORTC |=(1<<PC1);
// датчик оборотов
DDRD &=(~(1<<PD3)); // вход прерывания INT1
PORTD |= (1<<PD3); // подтяжка к +
// ШИМ для управления мотором
DDRB |= (1<<PB1); // выход OC1A
}
void SetupExtInt (void) {
EICRA = (1<<ISC11)|(0<<ISC10)|(1<<ISC01)|(0<<ISC00); // falling edge для INT0 и INT1
EIMSK = (1<<INT1)|(1<<INT0);
}
void SetupPWM (void) {
// 30кГц
// режим FastPWM, предделитель на 1
TCCR1A = (1<<WGM11)|(0<<WGM10)|(1<<COM1A1)|(0<<COM1A0); // Clear on Compare Match
TCCR1B = (1<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10);
ICR1 = 532;
OCR1A = 250;
}
Компоновка
Теперь механизм и электронику надо упаковать в корпус. Внутри выглядит не супер аккуратно, но с этого ракурса приборчик буду видеть только я, так что всё в порядке.
Результаты работы
Гравировку делаем на том же станке, заменив шпиндель на лазер мощностью 1Вт. Собираем и любуемся получившимся результатом. Красота!
Демонстрация работы устройства. На видео показана перемотка шерстяной пряжи с бобины. Всего 15 минут и аккуратный клубочек в 300 метров готов!
Вот такой получился автоматический станок для перемотки пряжи из бобины в клубочки. Было интересно, а результатом доволен самый главный и требовательный заказчик :)
Комментарии (10)
MechanikArtem Автор
11.08.2023 08:00+1Спасибо за оценку работы :)
1. На этапе разработки концепции не задумались над этим вопросом, но когда собирали всё же края роликов и направляющие для пряжи закруглили шкуркой и напильником. Так что ничего не цепляется.
2. К столу прижимается струбциной. Её взяли от настольной лампы. Да, для фотосессии её сняли, но выглядит она также как на модельке.
Рекомендацию приму к сведенью и понаблюдаю за процессом перемотки. Я понял о чём вы говорите. Может в будущем надо будет ещё один механизм для разматывания бобины сделать.
LF69ssop
11.08.2023 08:00+1А вот вся эта система шестерен, не проще было 2 независимых мотора использовать? Все равно теплая ламповая механичность испорчена гнусными ардуинами.
MechanikArtem Автор
11.08.2023 08:00Пришлось бы заморачиваться с передачей энергии на вращающееся водило.
trikot
11.08.2023 08:00Вся проблема при мотании пряжи не в моталке, а в правильной подаче пряжи из пасмы, чтобы равномерно сматывалась и не тормозила. И соответственно не рвалась. Я в теме, поскольку жена увлеклась вязанием, приходится помогать перематывать.
MaximRV
11.08.2023 08:00Ну в статье именно бобины. Для пасмы есть "Зонтик", сам недавно помогал жене разматывать без него много заморочек. С ним красота. "Зонтик" сильно помогает.
dlinyj
Очень крутая самоделка, очень. Мне понравился подход, основательно и со вкусом. И анимешная девочка на борту к месту.
Хотелось задать несколько вопросов и дать рекомендации. Вопросы:
Рекомендация: Пряжу (и вообще любой материал в бобинах), лучше разматывать, а не снимать витками (как у вас в видео). Потому, что снимая виток и натягивая, мы увеличиваем скручивание, в какой-то момент времени, сила скручивания будет так велика, что появятся узелки. Для кабеля вообще будут заломы. Скорее всего мощности двигателя не хватает чтобы вращать ещё и бобину с пряжей.