Нужна помощь в поиске шагового двигателя
Нужна помощь в поиске шагового двигателя
Верю в силу Pikabu, найти самостоятельно ни где не могу
Приказал долго жить МФУ Xerox workcentre 5019, а именно данная запчасть PM35S-048-XQK5, овечающая за перемешку тонера, ни заказать нет ни у кого в наличии нет, в свободной продаже тоже не встречал, буду благодарен за подсказку где найти, может без дела у кого лежит, Спасибо!
Вопрос тем, кто работал с шаговиками
Хочу сделать напольник с управляемой загрузкой с помощью шаговых двигателей и ардуино. Вопрос - какой лучше использовать двигатель, драйвер к нему? В бюджете ограничен, поэтому избыточная мощность или функционал не интересуют - 4 ШД по деньгам уже немало.
Усилие на ручке до 5-7 кг, создавать ее будут пружины, натягиваемые двигателями с помощью тросиков.
Электронная поделка на Ардуино
Всем привет!
Не знаю, пойдет ли тут тема поделок на Ардуино, но попробую :)
Небольшая предыстория: Есть у меня задумка сделать покадровый сканер 8мм (8 и super8) кинопленок, на основе экшн камеры MOBIUS, которую потом планирую заменить на наромальный сенсор. И одна из важных частей сего сканера - лентопротяг, способный достаточно точно перемещать пленку по команде с PC.
Первоначальные прикидки показали, что должно хватить обычного мелкого шаговика с разрешением, 1.8 градуса на шаг.
Собственно эту обвязку между PC и шаговым двигателем я и покажу.
Первое что нам нужно - это собственно двигатель. В последний визит на барахолку за 200р был куплен самый мелкий шаговик с 6 выводами, по факту оказавшийся Moons 14HY5001.
Даташита на именно этот двигатель не нашлось, но нам это и не очень важно. По количеству выводов можно сделать вывод, что шаговик униполярный. В большинстве случаев выводы таких двигателей сделаны по схеме A1-C-A2-B1-C-B2, где A и B - выводы обмоток, а C - общий.
Не вдаваясь в теорию, мне нужны только концы обмоток. Для того что бы их найти можно воспользоваться простым способом. Последовательно закорачиваем выводы и крутим вал пальцами. Если появляется сопротивление вращению - обмотка найдена. В моем случае схема оказалась стандартной.
Теперь заглядываем в запасы запчастей:
и ищем там драйвер для шаговика и подходящую платку Ардуино на 5В. У меня оказалась пачка банальных L239D в DIP корпусах (вон они, снизу слева :) Для тестового стенда более чем достаточно. Ардуино ПроМини на 5 вольт валялась на столе :)
Теперь схема подключения 239
Здесь всё элементарно, 4 вывода на мотор, 4 входа с нашей Ардуино, плюс питание. Достаем паяльник, вешаем "сопли".
В первой итерации тестовый стенд выглядел так:
Теперь нужен скетч для Ардуино. Шьем первое что попалось в интернете, подкорректировав значения пинов для управления двигателем
Шьем, тестируем:
Ура! Хоттабыча не запустили и поделка заработала :)
Теперь время облагородить все это и поменять Ардуино. Дело в том, что мне нужно отправлять команды на Ардуино с PC. У ПроМини нет встроенного usb, поэтому для взаимодействия нужен дополнительный конвертер usb-2-serial. Зато в запасах есть Ардуино Nano у которого уже есть usb.
Поэтому открываем PCBExpress (бесплатный кстати) и разводим платку под Nano.
Естественно я чуть-чуть накосячил, в обозначении выводов для мотора, но на работоспособность это не влияет.
При помощи принтера, утюга и лимонной кислоты изготавливаем платку
Распаиваем компоненты и разъемы. Подключаем двигатель, заливаем скетч. Тестируем что все завелось.
Тут тоже обошлось без дыма, поэтому считаем задачу подключения решенной.
Остается только переписать скетч под управление с PC через компорт. Ну и можно написать простенькую морду с кнопками для управления.
Финальный скетч в комментариях
PS: На истину не претендую, создание девайса в общей сложности заняло 1.5 часа времени из которых большую часть заняло рисование и травление/сверловка платки.
Нужна критика электронщика
Я давеча задумался, есть драйвер uln2003 и шаговики от дисководов, можно ли их задружить? Конечно ясно, что uln2003 подходит только для униполярных движков(или биполярных только без реверса), но если сделать обвес?
Взяв за основу полный мост и безжалостно его обрезав, я получил такую вот схемку питания одной обмотки.
Одноступенчатый редуктор с приводом от Шагового Двигателя
В этом посте я хочу рассказать про изготовление при помощи ранее изготовленного мной станка с ЧПУ одноступенчатой прямозубой передачи.
Не так давно мной был спроектирован портальный станок с ЧПУ, про его разработку и постройку на этом ресурсе расположена моя предыдущая статья.
Сразу хочу сказать, что данный проект служит только для получения опыта проектирования простых зубчатых пар и их изготовления для возможного применения в последующих проектах.
Так как на изготовленном станке планировалось обрабатывать не только дерево и пластики, а еще и дюраль, то интересно было сделать зубчатую пару как раз из этого материала.
По наличию у меня были обрезки дюралевого листа толщиной 6мм. В качестве привода я решил использовать Шаговый Двигатель (ШД) 23HS8430, он тоже у меня был в наличие и валялся без дела.
Проектирование началось с моделирования всего механизма в среде Компас 3Д, сразу же возникло несколько ограничений, ввиду малого размера дюралевой заготовки, а это соответственно повлияло на габариты ведомой шестерни, а так же на количество и размер зубьев, так как наименьший диаметр фрезы которая у меня была, составлял всего 2мм, а это значит что наименьший радиус которым я могу описать контур в процессе изготовления 1мм.
Учтя все ограничения, я перевел двигатель в 3Д модель и дальше стал сопрягать с ним остальные детали…
Теперь что касается построения зубчатой пары: в машиностроительной конфигурации Компас 3Д (v13) есть такая утилита как «Расчеты цилиндрической зубчатой передачи внешнего зацепления», в ней производим геометрический расчет, вводя требуемые параметры: число зубьев, модуль и т.д. Углубляться в это не буду, достаточно будет прочитать главу про построение зубчатых передач из курса механики: детали машин.
Использованная мной утилита производит расчет и построение шестерни, также если при расчете возникают ошибки, то она об этом информирует. После расчета выводит отчет со всеми геометрическими размерами. Из него мне потребовалось только межосевое расстояние, так как саму шестерню он прорисовывает автоматически.
Для большего интереса я решил сделать шестерни с разным количеством зубьев и передаточным отношением 2:1.
Исходя из межосевого расстояния, было нарисовано основание. С ним сопрягли двигатель и ось, на которой будет крепиться ведомая шестерня.
После окончания 3Д проектирования, все детали перевел в 2Д вид и сохранил их в векторном формате *.dxf.
Для того чтобы вырезать все детали на станке, я преобразовал векторный формат в G-code через постпроцессор в программе ArtCam. Полученный файл загрузил в станок и после обнуления координат, вырезал все детали.
В ведомую шестерню запрессовал подшипник, он достаточно плотно вошел, так как я занизил отверстие на несколько соток.
Отдельно на токарном станке выточили ось, на которую устанавливается ведомая шестерня.
Дальше все достаточно просто, собрал узел в едино, и осталось только его закрутить.
Но пришлось подождать месяц, так как драйвера для ШД у меня не оказалось, и я заказал драйвер DM542 на Али.
Для того чтобы ШД закрутился на вход драйвера требуется подать частотный сигнал, для этого я на ардуино уно собрал генератор частоты с изменяемой частотой с помощью внешне подключенного энкодера на 24 импульса.
Сразу хочу оговориться, что код для прошивки ардуино нашел на просторах Интернета.
Генератор частоты может: — генерировать меандр на 16 битном таймере. Диапазон частот 1Гц — 8МГц. Регулировка частоты производится энкодером. До частоты 2,8 кГц разрешение 1 герц, на частотах выше таймер аппаратно уже не может поддерживать это разрешение, поэтому более высокие частоты синтезируются, задавая параметром не требуемую частоту, а просто инкременируя регистр сравнения. Получается чем выше частота — тем больше шаг между щелчками энкодера. Вращая энкодер, с не нажатой кнопкой частота меняется на 1Гц; с нажатой кнопкой один шаг — 100Гц. Выше 2,8кГц. вращение энкодера с нажатой кнопкой так — же ускоряет счёт. Программного подавления дребезга контактов энкодера нет, поэтому нужно повесить конденсаторы 0,01..0,1 мкф. относительно земли. На кнопке конденсатор не обязателен. Рассчитанная математически частота выводится в сериал.
***********************************************************************************
/* Генератор 1 Hz..8 MHz. Энкодер подключен к пинам A0 и A1, кнопка
энкодера подключена к A2. Требуется использовать конденсаторы 0,01..0,1uf
относительно земли на каждый из 2х выводов энкодера.
Скетч для ардуино на мк atmega328 (UNO,Nano, MiniPro)
*/
float freq;
void setup() {
pinMode (9,OUTPUT); // выход генератора
pinMode(A0,INPUT); // с рассчетом, что энкодере внешняя подтяжка-
pinMode(A1,INPUT); // -к шине питания. Если нету, то подтянуть программно.
pinMode(A2,INPUT_PULLUP); //кнопка энкодера
Serial.begin(9600);
PCICR=1<<PCIE1; //разрешить прерывание PCINT
PCMSK1=(1<<PCINT9);// По сигналу на А1 создавать прерывание
TCCR1A=1<<COM1A0; //подключить выход OC1A первого таймера
TCCR1B=0;//
}
ISR (PCINT1_vect){
static boolean gen_mode=0; //флаг режима управления
static uint32_t enc=1; //переменная счёта энкодера
uint32_t ocr=OCR1A;
uint32_t divider=1; //переменная коэфф. деления прескалера
byte n=PINC&3; //считать значение энкодера
boolean knopka = PINC&(1<<2); // 0-кнопка нажата, 1-кнопка НЕ нажата.
if (freq<2848) gen_mode=0; //переключение режима управления по частоте
if (freq>=2848) gen_mode=1; //переключение режима управления по OCR
// Если увеличение частоты
if (n==3||n==0){
if (gen_mode){if (knopka){ if(ocr>0) {ocr--; } } else { if(ocr>9)ocr-=10; } }
else knopka? enc++ : enc+=100; // в нч режиме
} //end GetUP
// Если уменьшение частоты
if (n==2||n==1){
if (gen_mode){ if (knopka){ if(ocr<65535) {ocr++; } } else { if(ocr<=65525)ocr+=10; } }
else {if (knopka) { if (enc>=2)enc--; } else { if (enc>100) enc-=100; } }
} //end GetDown
if(gen_mode){ OCR1A=ocr; freq= (float)F_CPU/2 / (OCR1A+1); }
else { //расчёт прескалера и OCR по нужной частоте
divider=1; ocr = (F_CPU / enc /2 /divider) -1;
if (ocr >65536) { divider=8; ocr = F_CPU / enc /2 /divider;
if (ocr >65536) { divider=64; ocr = F_CPU / enc /2 /divider;
if (ocr >65536) {divider=256; ocr = F_CPU / enc /2 /divider;
if (ocr >65536) { divider=1024; ocr = F_CPU / enc /2 /divider;
if (ocr >65536){ocr=65536; }}}}} OCR1A=ocr-1;
//запись в регистр прескалера
switch (divider) {
case 1: TCCR1B=1|(1<<WGM12); break;
case 8: TCCR1B=2|(1<<WGM12); break;
case 64: TCCR1B=3|(1<<WGM12); break;
case 256: TCCR1B=4|(1<<WGM12); break;
case 1024: TCCR1B=5|(1<<WGM12); break; }
freq= (float) F_CPU/2 / (OCR1A+1) /divider;
} //end if !gen_mode
}
void loop() {
if (freq <10000) { Serial.print(freq,1);Serial.println(" Hz "); }
if (freq >10000) { Serial.print(freq/1000,3);Serial.println(" kHz");}
delay(100);
}
*****************************************************************************************
После того как все собрал, подсоединил и залил в Arduino скетч, можно приступать к включению:
Теперь про работу сего механизма: вращение и работа передачи вполне не плохое хоть и при звоне шестерен. В итоге получилось разогнать до 12,5 оборотов в секунду ведущую шестерню, а на ведомой соответственно в два раза меньше. Сгенерированная частота при этом составила порядка 5кГц при 400 имп/об. выставленное на драйвере. При этой частоте двигатель еще не уходил в ступор, а это значит, что можно было дать частоту и больше.
Спасибо за прочтение! :)