Одноступенчатый редуктор с приводом от Шагового Двигателя

В этом посте я хочу рассказать про изготовление при помощи ранее изготовленного мной станка с ЧПУ одноступенчатой прямозубой передачи.

Одноступенчатый редуктор с приводом от Шагового Двигателя Своими руками, Arduino, Cnc, ЧПУ, Станок, Станок с ЧПУ, Шестеренки, Шаговые двигатели, Видео, Длиннопост

Не так давно мной был спроектирован портальный станок с ЧПУ, про его разработку и постройку на этом ресурсе расположена моя предыдущая статья.


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


Так как на изготовленном станке планировалось обрабатывать не только дерево и пластики, а еще и дюраль, то интересно было сделать зубчатую пару как раз из этого материала.


По наличию у меня были обрезки дюралевого листа толщиной 6мм. В качестве привода я решил использовать Шаговый Двигатель (ШД) 23HS8430, он тоже у меня был в наличие и валялся без дела.


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


Учтя все ограничения, я перевел двигатель в 3Д модель и дальше стал сопрягать с ним остальные детали…


Теперь что касается построения зубчатой пары: в машиностроительной конфигурации Компас 3Д (v13) есть такая утилита как «Расчеты цилиндрической зубчатой передачи внешнего зацепления», в ней производим геометрический расчет, вводя требуемые параметры: число зубьев, модуль и т.д. Углубляться в это не буду, достаточно будет прочитать главу про построение зубчатых передач из курса механики: детали машин.

Одноступенчатый редуктор с приводом от Шагового Двигателя Своими руками, Arduino, Cnc, ЧПУ, Станок, Станок с ЧПУ, Шестеренки, Шаговые двигатели, Видео, Длиннопост

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

Одноступенчатый редуктор с приводом от Шагового Двигателя Своими руками, Arduino, Cnc, ЧПУ, Станок, Станок с ЧПУ, Шестеренки, Шаговые двигатели, Видео, Длиннопост

Для большего интереса я решил сделать шестерни с разным количеством зубьев и передаточным отношением 2:1.

Одноступенчатый редуктор с приводом от Шагового Двигателя Своими руками, Arduino, Cnc, ЧПУ, Станок, Станок с ЧПУ, Шестеренки, Шаговые двигатели, Видео, Длиннопост

Исходя из межосевого расстояния, было нарисовано основание. С ним сопрягли двигатель и ось, на которой будет крепиться ведомая шестерня.

Одноступенчатый редуктор с приводом от Шагового Двигателя Своими руками, Arduino, Cnc, ЧПУ, Станок, Станок с ЧПУ, Шестеренки, Шаговые двигатели, Видео, Длиннопост

После окончания 3Д проектирования, все детали перевел в 2Д вид и сохранил их в векторном формате *.dxf.


Для того чтобы вырезать все детали на станке, я преобразовал векторный формат в G-code через постпроцессор в программе ArtCam. Полученный файл загрузил в станок и после обнуления координат, вырезал все детали.

В ведомую шестерню запрессовал подшипник, он достаточно плотно вошел, так как я занизил отверстие на несколько соток.


Отдельно на токарном станке выточили ось, на которую устанавливается ведомая шестерня.


Дальше все достаточно просто, собрал узел в едино, и осталось только его закрутить.

Но пришлось подождать месяц, так как драйвера для ШД у меня не оказалось, и я заказал драйвер DM542 на Али.


Для того чтобы ШД закрутился на вход драйвера требуется подать частотный сигнал, для этого я на ардуино уно собрал генератор частоты с изменяемой частотой с помощью внешне подключенного энкодера на 24 импульса.

Одноступенчатый редуктор с приводом от Шагового Двигателя Своими руками, Arduino, Cnc, ЧПУ, Станок, Станок с ЧПУ, Шестеренки, Шаговые двигатели, Видео, Длиннопост

Сразу хочу оговориться, что код для прошивки ардуино нашел на просторах Интернета.


Генератор частоты может: — генерировать меандр на 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 имп/об. выставленное на драйвере. При этой частоте двигатель еще не уходил в ступор, а это значит, что можно было дать частоту и больше.


Спасибо за прочтение! :)

2
Автор поста оценил этот комментарий
boolean knopka

Заебис

1
Автор поста оценил этот комментарий

по схеме:
- разве нижний резистор в r-2r не должен быть 2к?
- не понял зачем тут r-2r и как он работает в программе.

Автор поста оценил этот комментарий

Биение сильно заметное? Отразится на качестве реза, если применять как редуктора под оси на чпу станке?

Автор поста оценил этот комментарий

Посмотрел видео - я плакал, без охлаждения, на сухую алюминий резать, это жесть, да еще и фрезой 2мм.

раскрыть ветку
Автор поста оценил этот комментарий

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


Я предлагаю создать некую последовательность знаний и технологий с помощью которых можно проделать путь от письменности до атомной энергетики и создания ПК.


Что-то типа пошагового мануала как восстановить человечество.

раскрыть ветку