Съдържание:
- Стъпка 1: Използвани ресурси
- Стъпка 2: За вретената - какви са те?
- Стъпка 3: За шпиндели - единични и сачмени нишки
- Стъпка 4: За вретената - Приложения
- Стъпка 5: За шпиндели - параметри
- Стъпка 6: За вретената - Стъпка (изместване и скорост)
- Стъпка 7: Монтаж
- Стъпка 8: Монтаж - Материали
- Стъпка 9: Сглобяване - Стъпка 01
- Стъпка 10: Сглобяване - Стъпка 02
- Стъпка 11: Монтиране - Стъпка 03
- Стъпка 12: Сглобяване - Стъпка 04
- Стъпка 13: Монтаж - Електроника
- Стъпка 14: Електрическа схема
- Стъпка 15: Изходен код
- Стъпка 16: За шпиндели - машинни конфигурации
- Стъпка 17: Марлин
- Стъпка 18: GRBL
- Стъпка 19: Вижте още от моята работа:
Видео: Arduino Uno с мотор с шпиндел и стъпка: 19 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Днес ще говорим за много важен предмет в механиката и мехатрониката: елементите на машините. В тази статия ще се спрем конкретно на вретената, включващи някои интересни функции и приложения. Все пак ще демонстрираме някои начини за изчисляване на движението, причинено от вретено, и представяне на тестово устройство.
Следователно направих монтажа по -долу, който разкрива напредването на вретено от 2 мм и друго от 8 мм. Тези шпиндели TR8, които използвам, обикновено се използват в малки рутери и 3D принтери, особено по оста Z. Помнете, че като усвоите някои концепции, върху които ще работим тук, ще можете да проектирате всякакъв вид машини.
Стъпка 1: Използвани ресурси
- Трапецовиден шпиндел с диаметър 8 мм и стъпка 2 мм
- Трапецовиден шпиндел с диаметър 8 мм и стъпка 8 мм
- 8x2 вретеново фланцово кестен
- 8x8 шпиндел фланцов кестен
- Лагери за шпиндели с диаметър 8 мм
- Линеен цилиндричен водач с диаметър 10 мм
- Цилиндрични ролкови лагери за 10 мм водачи
- Скоби за 10 мм цилиндрични водачи
- NEMA 17 Мотори
- Съединители на вала
- Arduino Uno
- Драйвер DRV8825
- 4x4 матрична клавиатура
- Дисплей Nokia 5110
- Разни пластмасови части
- Болтове и гайки
- Дървена основа
- Външно 12V захранване
Стъпка 2: За вретената - какви са те?
Шпинделите са елементи на машини, като например винтове. Тоест те са прави пръти, образувани от нишки от непрекъснати стъпала. Те се използват в механизми, които изискват линейно движение и позициониране. Те могат да упражняват високи сили на опън и натиск и да предават въртящ момент. Те позволяват движение с автоматично заключване. Те могат да бъдат изработени от различни материали, като са най -разпространените алуминий и стомана.
Тъй като китайските компании произвеждат трапецовидните шпиндели, бих ви предложил да вземете този вид продукт вместо добре познатия болт с гайка. Това се дължи на по -атрактивната цена и съпротивлението, което смятам за ужасно.
На снимката поставям най -добрия шпиндел, който според мен е рециркулиращият сферичен шпиндел. Обикновено е изработена от много твърда стомана и топките се въртят около нея, вътре в кестена. Освен прецизността, която е страхотна, подчертавам и издръжливостта, тъй като този тип шпиндел може да възпроизведе милиарди движения, без да повреди механизма. По -евтин вариант, който използваме тук, е трапецовидното вретено.
Стъпка 3: За шпиндели - единични и сачмени нишки
Въртенето на топката, на снимката вляво, има полукръгли канали, където топките се търкалят. Те са сравнително по -скъпи и имат ниско триене в сравнение с едношнековите шпиндели, което води до много по -голям добив (триене при търкаляне).
Еднонишковите вретена от дясната страна на изображението обикновено имат трапецовидни профили, тъй като тази геометрия е по-подходяща за прилагане на сили в аксиална посока и плавно предаване на движение. Те са сравнително евтини и имат високо триене в сравнение с рециркулиращите сферични вретена, което води до нисък добив, т.е. триене при приплъзване.
Стъпка 4: За вретената - Приложения
Шпинделите могат да бъдат приложени към всеки механизъм, където се изисква линейно движение. Те се използват широко в индустрията в машини и процеси.
Някои приложения включват:
- Товарни асансьори
- Преси
- Ягоди и стругове
- CNC оборудване
- Опаковъчни машини
- 3D принтери
- Оборудване за лазерно рязане
- Индустриални процеси
- Системи за позициониране и линейно движение
Стъпка 5: За шпиндели - параметри
Има няколко характеристики на шпиндела, които трябва да се имат предвид при проектирането на механизъм. В допълнение към неговия диаметър и стъпка, е необходимо да се признаят неговата якост на натиск, инерционният му момент (устойчивост на промяна в ротационното му състояние), конструктивният материал, скоростта на въртене, на която ще бъде подложен, посоката на работа (хоризонтална или вертикално), приложеното натоварване, наред с други.
Но въз основа на вече изградени механизми можем да интуираме няколко от тези параметри.
Нека разпознаем някои общи блага. Нека започнем със СТЪПКА.
Стъпка 6: За вретената - Стъпка (изместване и скорост)
Определя дължината, измината от гайката при всяко завъртане. Това обикновено е в мм / оборот.
2 мм шпиндел на оборот ще доведе до изместване от 2 мм при всяко завъртане, което шпиндела извършва. Това ще повлияе на линейната скорост на гайката, тъй като с увеличаването на скоростта на въртене броят на оборотите за единица време ще се увеличи и съответно и изминатото разстояние.
Ако 2 мм завъртане на оборот се върти при 60 об / мин (един оборот в секунда), гайката ще се движи с 2 мм в секунда.
Стъпка 7: Монтаж
В нашия монтаж имам два двигателя и нашата клавиатура с дисплея, който приличаше на калкулатор, защото им направих корица в 3D принтера. На дисплея на Nokia имаме следните опции:
F1: Полумесец - Fuso преминава от текущата позиция към позицията, която определям
F2: Низходящо - Завийте
F3: Скорост - Мога ли да променя ширината на импулса
F4: ESC
Стъпка 8: Монтаж - Материали
A - 10 мм линейни водачи
B - Трапецовидни вретена от стъпки 2 и 8 мм
C - Пробивна база
D - Лагери за шпиндели
E - Поставки за водачи
F - Кестени
G - Лагери
H - Съединители
I - Двигатели
J - Различни пластмасови части (курсори, скоби на двигателя, клинове, поддръжка на клавиатурата и дисплей
Стъпка 9: Сглобяване - Стъпка 01
След пробиването на основата (C) сглобяваме двата двигателя (I). За да ги закрепим, използваме скоби, направени в 3D принтера (J). Не затягайте нито един от винтовете в тази стъпка на позициониране. Това ще позволи необходимите корекции в стъпката за подравняване.
Стъпка 10: Сглобяване - Стъпка 02
Все още след пробиването на основата (C), поставете направляващите релси (E) и лагерите (D). Детайл за пластмасовата подложка (J), използвана за регулиране на височините на лагерите.
Стъпка 11: Монтиране - Стъпка 03
Създаваме курсор, използвайки отпечатана част, за да свържем лагера (G) с гайката (F). Използвахме два курсора, един отдясно, друг отляво. Неговата функция е да посочва позицията на скалата винаги, когато искаме да определим изместването, причинено от шпиндела.
Стъпка 12: Сглобяване - Стъпка 04
Поставете водача (A) и шпиндела (B) в съответния им лагер (D) и опората (E), срещу двигателя, след това поставете водача и шпиндела в лагера (G) и кестена (F) и при върха на шпиндела също вмъкваме съединителя (H). Взимаме ги и двамата, докато достигнат крайните си точки (противоположна опора и двигател).
Леко затегнете винтовете, за да позволите по -късна настройка. Повторете процедурата, като използвате останалия водач и шпиндела. С всички позиционирани компоненти, ние извършваме подравняването на частите, завършвайки етапа на механично сглобяване.
Стъпка 13: Монтаж - Електроника
С помощта на отпечатан пластмасов държач ние осигурихме дисплея на Nokia 5110 и 4x4 матрична клавиатура. В долното пространство на стойката ще се намира Arduino Uno, драйверът DRV8825.
Използвайки наличното пробиване в основата, закрепваме монтажа.
Стъпка 14: Електрическа схема
Схемата на свързване е проста. Имаме DRV8825 и същите две 17 огледала, тоест същата стъпка, която изпращаме към едно, отива към друго. Това, което се променя, е, че в един от двигателите имам 8 мм шпиндел, а в другия 2 мм шпиндел. Очевидно е, че първият, с 8 мм шпиндел, върви по -бързо. Все още в диаграмата са дисплеят и клавиатурата 4x4, която трябва да е матрична.
Стъпка 15: Изходен код
Включване на библиотеки и създаване на обекти
Тук имаме Lib, който направих, а това е StepDriver.h. Той е подготвен за драйверите 8825, 4988, а също и за TB6600. Създавам в тази стъпка обекта DRV8825, d1.
// Biblioteca responsável por capturar a tecla que foi pressionada no teclado #include // Biblioteca responsável pelos graficos do display #include // Biblioteca responsável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Сериен часовник (SCLK) // пин 5 - Сериен изход на данни (DIN) // щифт 4 - Избор на данни/команда (D/C) // щифт 3 - Избор на LCD чип (CS/CE) // щифт 2 - Нулиране на LCD (RST) Adafruit_PCD8544 дисплей = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;
Константи и глобални променливи
В тази част на кода третирам матрицата, която преподавах в друг видео урок (ВРЪЗКА НА КЛАВИАТУРАТА). Все пак говоря за обекта Keypad, освен разстояние и скорост.
const байт LINHAS = 4; // numero de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // дефинирайте uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { „B“, „4“, „5“, „6“}, {„C“, „7“, „8“, „9“}, {„D“, „c“, „0“, „e '}}; байт PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam като linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, response to capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; без знак дълго разстояние = 0; безпредписана дълга велоцидада = 2000;
Функция за четене от клавиатурата
В тази стъпка имаме код, отнасящ се до дисплея, който работи при увеличаване и намаляване на печата.
// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- без подпис дълъг lerValor () {// Ескревиране на подменю que coleta os valores без дисплей display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (БЯЛ); display.print ("VALOR"); display.setTextColor (ЧЕРЕН); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (БЯЛ); display.print ("CLR"); display.setTextColor (ЧЕРЕН); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (БЯЛ); display.print ("F4"); display.setTextColor (ЧЕРЕН); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); Низ valor = ""; char tecla = невярно;
цикъл в изчакване за натискане на клавиша
Тук обясняваме Loop програмиране, тоест къде въвеждате стойностите.
// Loop infinito enquanto nao chamar o return while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0': valor += tecla; display.print (tecla); display.display (); прекъсване; // Se tecla CLR foi pressionada case 'c': // Limpa a string valor valor = ""; // Apaga o dolor do display display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); прекъсване; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); прекъсване; // Se tecla F4 (ESC) за натискане на случай „D“: връщане -1; по подразбиране: break; }} // Limpa o char tecla tecla = невярно; }}
Функция на моторно задвижване
В тази стъпка се работи по функцията „преместване“. Получавам броя на импулсите и посоката и след това правя "за".
// Funcao responsavel por mover или motor -------------------------------------- void mover (без подпис long pulsos, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}
настройвам ()
Сега премествам дисплея и конфигурацията на драйвера и дори сложих закрепването в изходния код, за да го улесня. Инициализирам определени стойности и се занимавам с методите, които генерират настройките.
void setup () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (ЧЕРЕН); // Конфигуриране на драйвер DRV8825 ----------------------------------------- // щифт GND - Активиране (ENA) // щифт 13 - M0 // щифт 12 - M1 // щифт 11 - M2 // щифт 10 - Нулиране (RST) // щифт 9 - Sleep (SLP) // щифт 8 - Стъпка (STP) // щифт 7 - Посока (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.сън (НИСКО); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }
loop () - 1 -ва част - Чертожно меню
void loop () {// Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (БЯЛ); display.print ("F1"); display.setTextColor (ЧЕРЕН); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (БЯЛ); display.print ("F2"); display.setTextColor (ЧЕРЕН); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (БЯЛ); display.print ("F3"); display.setTextColor (ЧЕРЕН); display.setCursor (17, 26); display.print ("VELOCIDADE");
loop () - Част 2 - Чертожно меню
display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (БЯЛ); display.print ("F4"); display.setTextColor (ЧЕРЕН); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = невярно;
loop () - Част 3 - Тичане
// Включваме циклично a tecla F4 (ESC) nao за pressionada while (! Esc) {// улавяме tecla pressionada до teclado customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {// Trata a tecla apertada switch (customKey) {// Se tecla F1 foi pressionada case 'A': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve a tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (БЯЛ); display.print ("MOVENDO"); display.setTextColor (ЧЕРЕН); display.setCursor (2, 14); display.print (дистанция); display.print ("Passos"); display.display ();
loop () - Част 4 - Тичане
// Move o motor mover (distancia, LOW); // Volta ao меню esc = true; } почивка; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve a tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (БЯЛ); display.print ("MOVENDO"); display.setTextColor (ЧЕРЕН); display.setCursor (2, 14); display.print (дистанция); display.print ("Passos"); display.display ();
loop () - Част 5 - Тичане
// Move o motor mover (distancia, HIGH); // Volta ao меню esc = true; } почивка; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); if (velocidade == -1) {esc = вярно; } else {// Escreve a tela "Velocidade" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (БЯЛ); display.print ("VELOCIDADE"); display.setTextColor (ЧЕРЕН); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");
loop () - Част 6 - Тичане
display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (БЯЛ); display.println ("ОК!"); display.setTextColor (ЧЕРЕН); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); забавяне (2000); // Volta ao меню esc = true; } почивка; // Se tecla F4 (ESC) за случай на натиск „D“: // Se tecla CLR за случай на натиск „c“: // Se tecla ENT за случай на натиск „e“: // Volta ao menu esc = true; по подразбиране: break; }} // Limpa o char customKey customKey = false; }}
Стъпка 16: За шпиндели - машинни конфигурации
При машини с ЦПУ, като например 3D принтери и рутери, програмата, отговорна за позиционирането на контрола, трябва да знае как ще се случват движенията в зависимост от броя на импулсите, подадени на стъпковия двигател.
Ако драйверът на стъпаловия двигател позволява прилагането на микростепени, тази конфигурация трябва да се вземе предвид при изчисляването на произведеното изместване.
Например, ако 200-стъпков двигател на оборот е свързан към драйвер, настроен на 1/16, тогава за един оборот на шпиндела ще са необходими 16 х 200 импулса, тоест 3200 импулса за всеки оборот. Ако този шпиндел има стъпка от 2 мм на оборот, ще са необходими 3200 импулса в задвижващия механизъм, за да се премести гайката с 2 мм.
Всъщност софтуерните контролери често използват причина да посочат това съотношение, „броя на импулсите на милиметър“или „стъпки / мм“.
Стъпка 17: Марлин
В Marlin например виждаме в раздела @section motion:
/ **
* Стъпки по ос по подразбиране за единица (стъпки / мм)
* Замяна с M92
* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]
* /
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}
В този пример можем да заключим, че осите X и Y имат точност от 80 импулса за преместване на 1 mm, докато Z се нуждае от 3200 импулса, а екструдерът E0 се нуждае от 100.
Стъпка 18: GRBL
По -долу виждаме командите за конфигуриране на GRBL. С командата $ 100 можем да регулираме броя на импулсите, необходими за предизвикване на едномилиметрово отместване по оста X.
В примера по -долу можем да видим, че текущата стойност е 250 импулса на мм.
Осите Y и Z могат да бъдат зададени съответно $ 101 и $ 102.
Препоръчано:
Стъпка по стъпка Изграждане на компютър: 9 стъпки
Стъпка по стъпка PC изграждане: Консумативи: Хардуер: Дънна платка CPU & Охладител на процесора PSU (Захранващ блок) Съхранение (HDD/SSD) RAMGPU (не се изисква) CaseTools: Отвертка ESD гривна/матертерна паста с апликатор
Три вериги за високоговорители -- Урок стъпка по стъпка: 3 стъпки
Три вериги за високоговорители || Урок стъпка по стъпка: Схемата на високоговорителя засилва аудио сигналите, получени от околната среда към микрофона и го изпраща до високоговорителя, откъдето се произвежда усилен звук. Тук ще ви покажа три различни начина да направите тази схема на високоговорител, използвайки:
Акустична левитация с Arduino Uno Стъпка по стъпка (8 стъпки): 8 стъпки
Акустична левитация с Arduino Uno Стъпка по стъпка (8 стъпки): ултразвукови звукови преобразуватели L298N Dc женско адаптерно захранване с мъжки dc щифт Arduino UNOBreadboard Как работи това: Първо, качвате код в Arduino Uno (това е микроконтролер, оборудван с цифров и аналогови портове за конвертиране на код (C ++)
RC проследен робот, използващ Arduino - Стъпка по стъпка: 3 стъпки
RC проследен робот, използващ Arduino - Стъпка по стъпка: Хей, момчета, връщам се с друго страхотно шаси от робот от BangGood. Надявам се, че сте преминали през предишните ни проекти - Spinel Crux V1 - Роботът с контролиран жест, Spinel Crux L2 - Робот за избор и поставяне на Arduino с роботизирани ръце и The Badland Braw
Направи си сам Arduino роботизирана ръка, стъпка по стъпка: 9 стъпки
Направи си сам Arduino Robotic Arm, стъпка по стъпка: Тези уроци ви научават как сами да изградите Robot Arm