Мазмуну:

Arduino Uno шпиндель жана поток мотору менен: 19 кадам
Arduino Uno шпиндель жана поток мотору менен: 19 кадам

Video: Arduino Uno шпиндель жана поток мотору менен: 19 кадам

Video: Arduino Uno шпиндель жана поток мотору менен: 19 кадам
Video: Прототип 4-х осевого робота-манипулятора 2024, Июль
Anonim
Image
Image
Колдонулган ресурстар
Колдонулган ресурстар

Бүгүн биз механиканын жана мехатрониканын абдан маанилүү темасы жөнүндө сүйлөшөбүз: машиналардын элементтери. Бул макалада биз кээ бир кызыктуу өзгөчөлүктөрдү жана тиркемелерди камтыган шпиндельдерге атайын кайрылабыз. Ошентсе да, биз шпинделден келип чыккан кыймылды эсептөөнүн жана сыноо куралын көрсөтүүнүн айрым жолдорун көрсөтөбүз.

Мен жыйынды төмөндө жасадым, андыктан 2 мм жана башка 8 мм шпиндельдин алдыга жылышын көрсөтөт. Мен колдонгон TR8 шпинделдери көбүнчө кичине роутерлерде жана 3D принтерлерде, айрыкча Z огунда колдонулат. Бул жерде иштей турган кээ бир түшүнүктөрдү өздөштүрүү менен, сиз машинанын каалаган түрүн жасай аласыз.

1 -кадам: Колдонулган ресурстар

  • Трапеция сымал диаметри 8мм жана кадамы 2мм
  • Трапеция сымал диаметри 8мм жана кадамы 8мм
  • 8x2 шпиндель фланецдүү каштан
  • 8x8 шпиндель фланецдүү каштан
  • Диаметри 8 мм шпиндельдер үчүн подшипниктер
  • Сызыктуу цилиндрдик жол диаметри 10 мм
  • Цилиндрдик ролик подшипниктер 10мм гиддер үчүн
  • 10 мм цилиндр түрүндөгү гиддер үчүн кронштейндер
  • NEMA 17 Motors
  • Буттун муфталары
  • Arduino Uno
  • Айдоочу DRV8825
  • 4x4 матрицалуу клавиатура
  • Nokia 5110 дисплейи
  • Ар кандай пластикалык бөлүктөр
  • Болт жана гайкалар
  • Жыгач негизи
  • Тышкы 12В электр менен камсыздоо

2 -кадам: Шпиндельдер жөнүндө - Алар эмне?

Шпиндельдер жөнүндө - Алар эмне?
Шпиндельдер жөнүндө - Алар эмне?

Шпиндельдер - бурамалар сыяктуу машиналардын элементтери. Башкача айтканда, алар үзгүлтүксүз кадамдардын жиптеринен түзүлгөн түз тилкелер. Алар сызыктуу кыймылды жана жайгашууну талап кылган механизмдерде колдонулат. Алар жогорку тартылуу жана кысуу күчтөрүн колдонуп, моментти өткөрө алышат. Алар автоматтык кулпулоо менен кыймылга уруксат берет. Алар эң кеңири тараган алюминий жана болот болуп, ар кандай материалдардан курулушу мүмкүн.

Кытайлык компаниялар трапеция түрүндөгү шпиндельдерди өндүрүп жаткандыктан, мен сизге белгилүү гайка болттун ордуна ушул түрдөгү продукцияны алууну сунуштайт элем. Бул жагымдуу баага жана мен уят деп эсептеген сүйрөөгө байланыштуу.

Сүрөттө мен эң жакшы шпинделди койдум, менин оюмча, бул айланма шар шпиндели. Ал, адатта, абдан катуу болоттон жасалган жана шарлар каштан ичинде, анын айланасында айланат. Мыкты тактыктан тышкары, мен бышыктыкты да баса белгилейм, анткени бул шпиндель механизмге зыян келтирбестен миллиарддаган кыймылдарды кайра жаратат. Биз колдонгон эң арзан вариант - бул трапеция шпиндели.

3 -кадам: Шпиндельдер жөнүндө - Жалгыз жана шардык жиптер

Шпиндельдер жөнүндө - Жалгыз жана Шардык Жиптер
Шпиндельдер жөнүндө - Жалгыз жана Шардык Жиптер

Топтун шпинделдери, сол жактагы сүрөттө, тоголок тоголок жерде жарым тегерек каналдар бар. Алар салыштырмалуу кымбатыраак жана бир бурамалуу шпиндельдерге салыштырмалуу сүрүлүүсү төмөн болгондуктан, түшүмдүүлүк бир кыйла жогору болот (сүрүлүү сүрүлүүсү).

Сүрөттүн оң жагындагы бир жиптүү шпинделдер адатта трапеция профилине ээ, анткени бул геометрия октук багытта күчтөрдү колдонуу жана кыймылды жылмакай берүү үчүн ылайыктуу. Алар салыштырмалуу арзан жана шар айланма дөңгөлөктөргө салыштырмалуу сүрүлүүсү жогору болуп, түшүмдүүлүктүн төмөндүгүнө алып келет, б.а.

4 -кадам: Шпиндельдер жөнүндө - Тиркемелер

Шпиндельдер жөнүндө - Тиркемелер
Шпиндельдер жөнүндө - Тиркемелер

Шпиндельдер сызыктуу кыймыл керек болгон ар кандай механизмге колдонулушу мүмкүн. Алар өнөр жайда машиналарда жана процесстерде кеңири колдонулат.

Кээ бир колдонмолор төмөнкүлөрдү камтыйт:

  • Жүк көтөргүчтөр
  • Пресстер
  • Кулпунай жана токардык станоктор
  • CNC жабдуулары
  • Каптоочу машиналар
  • 3D принтерлери
  • Лазердик кесүү жана кесүү жабдуулары
  • Өнөр жай процесстери
  • Позициялоо жана сызыктуу кыймыл системалары

5 -кадам: Шпиндельдер жөнүндө - Параметрлер

Шпиндельдер жөнүндө - Параметрлер
Шпиндельдер жөнүндө - Параметрлер

Шпинделдин бир нече өзгөчөлүктөрү бар, алар механизмди иштеп чыгууда эске алынышы керек. Диаметри менен чайырынан тышкары, анын кысым күчүн, инерция моментин (айлануу абалынын өзгөрүшүнө каршылык), конструктивдүү материалды, ал дуушар боло турган айлануу ылдамдыгын, иштөө багытын (горизонталдуу) таануу зарыл. же тигинен), колдонулган жүк, башкалардын арасында.

Бирок, буга чейин түзүлгөн механизмдердин негизинде, биз бул параметрлердин бир нечесин сезе алабыз.

Келгиле, кээ бир жалпы жакшылыктарды тааныйлы. КАДАМ менен баштайлы.

6 -кадам: Шпиндель жөнүндө - Кадам (орун которуу жана ылдамдык)

Шпиндель жөнүндө - Кадам (орун которуу жана ылдамдык)
Шпиндель жөнүндө - Кадам (орун которуу жана ылдамдык)

Ар бир революцияда жаңгактын басып өткөн жолун аныктайт. Бул көбүнчө мм / революцияда болот.

Бир айлануу үчүн 2 мм шпиндель, шпиндел аткарган ар бир бурулушта 2 мм жылышууга алып келет. Бул гайканын сызыктуу ылдамдыгына таасирин тийгизет, анткени айлануу ылдамдыгынын жогорулашы менен убакыттын бирдигине айлануу саны көбөйөт, демек, басып өткөн аралык да.

Эгерде 2мм айлануу 60 РПМде айланса (секундасына бир айлануу), гайка секундасына 2мм кыймылдайт.

7 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея

Биздин жыйында менде эки мотор жана дисплейи бар клавиатурам бар, алар калькуляторго окшош болчу, анткени мен аларга 3D принтерде капкак жасадым. Nokia дисплейинде бизде төмөнкү параметрлер бар:

F1: Crescent - Fuso учурдагы абалынан мен аныктаган позицияга барат

F2: Азаюу - Бурулуу

F3: Ылдамдык - Мен импульстун туурасын өзгөртө аламбы

F4: ESC

8 -кадам: Монтаж - материалдар

Монтаж - материалдар
Монтаж - материалдар

A - 10 мм сызыктуу гиддер

B - 2 жана 8мм кадамдардын трапеция шпинделдери

C - бургулоо базасы

D - Шпиндельдер үчүн подшипниктер

E - жол көрсөткүчтөр

F - каштан

G - подшипниктер

H - кошкучтар

I - кыймылдаткычтар

J - Ар кандай пластикалык бөлүктөр (курсор, кыймылдаткыч кронштейндери, такалар, клавиатура колдоосу жана дисплей)

9 -кадам: Ассамблея - 01 -кадам

Ассамблея - 01 -кадам
Ассамблея - 01 -кадам

Базаны бургандан кийин (C), биз эки моторду (I) чогултабыз. Аларды бекитүү үчүн биз 3D принтерде (J) жасалган кашааларды колдонобуз. Бул позициялоо кадамында эч кандай бураманы тартпаңыз. Бул тегиздөө кадамында керектүү түзөтүүлөрдү киргизүүгө мүмкүндүк берет.

10 -кадам: Ассамблея - 02 -кадам

Ассамблея - 02 -кадам
Ассамблея - 02 -кадам

Негизди (C) бургулоодон кийин дагы, багыттоочу рельстерди (E) жана подшипниктерди (D) жайгаштырыңыз. Подшипниктердин бийиктигин тууралоо үчүн колдонулган пластикалык шым үчүн деталь (J).

11 -кадам: Монтаж - 03 -кадам

Монтаж - 03 -кадам
Монтаж - 03 -кадам

Биз подшипникти (G) гайкага (F) туташтыруу үчүн басылган бөлүктү колдонуп курсорду түзөбүз. Биз эки курсорду колдондук, бири оң, бири сол. Анын функциясы, биз шпинделдин пайда болгон жылышын аныктагыбыз келгенде, масштабдагы абалды көрсөтүү.

12 -кадам: Ассамблея - 04 -кадам

Ассамблея - 04 -кадам
Ассамблея - 04 -кадам
Ассамблея - 04 -кадам
Ассамблея - 04 -кадам

Колдонмону (A) жана шпиндельди (B) тиешелүү подшипниктерине (D) жана таянычына (E) мотордун каршысына салыңыз, андан кийин багытты жана шпиндельди подшипникке (G) жана каштанга (F) жана шпиндельдин учу биз кошкучун (H) да киргизебиз. Биз экөөнү тең акыркы чекитине жеткенге чейин алабыз (карама -каршы колдоо жана мотор).

Кийинчерээк жөнгө салуу үчүн бурамаларды жеңил тартыңыз. Калган көрсөтмөнү жана шпинделди колдонуп процедураны кайталаңыз. Бардык компоненттер жайгаштырылганда, биз бөлүктөрдүн тегизделишин аткарабыз, механикалык чогултуу этабын бүтүрөбүз.

13 -кадам: Монтаж - Электроника

Монтаж - Электроника
Монтаж - Электроника
Монтаж - Электроника
Монтаж - Электроника
Монтаж - Электроника
Монтаж - Электроника

Басылган пластикалык кармагычты колдонуп, биз Nokia 5110 дисплейин жана 4x4 матрицалуу клавиатураны камсыз кылдык. Трибунанын төмөнкү мейкиндигинде DRV8825 айдоочусу Arduino Uno жайгашкан.

Базада жеткиликтүү бургулоону колдонуп, биз куралды бекемдейбиз.

14 -кадам: Электр схемасы

Электр схемасы
Электр схемасы

Кабелдин схемасы жөнөкөй. Бизде DRV8825 жана ошол эле эки 17 күзгү бар, башкача айтканда, биз бир кадамга жөнөткөн кадам экинчисине барат. Кандай өзгөрүүлөр - моторлордун биринде 8 мм, экинчисинде 2 мм. Ачык көрүнүп тургандай, 8мм шпиндели бар биринчи ылдамыраак жүрөт. Дагы эле диаграммада дисплей жана 4x4 баскычтобу бар, ал матрица болушу керек.

15 -кадам: Булак коду

Китепканаларды киргизүү жана объекттерди түзүү

Бул жерде мен жасаган Lib бар, ал StepDriver.h. Бул 8825, 4988 жана TB6600 драйверлери үчүн даярдалган. Мен бул кадамда DRV8825, d1 объектин түзөм.

// Biblioteca жооптору баскычын басып өтүү үчүн эч кандай #киргизилбейт // кошуу // Biblioteca жооптору көрсөтүлбөйт #кошуу // Biblioteca жооптору экранда көрсөтүлсүн #include // Configuracao de pinos do Display // pin 6 - Serial clock out (SCLK) // 5 -пин - Сериалдык маалыматтын чыгышы (DIN) // 4 -пин - Маалыматты/Буйрукту тандоо (D/C) // 3 -пин - LCD чипти тандоо (CS/CE) // 2 -пин - ЖКны баштапкы абалга келтирүү (RST)) Adafruit_PCD8544 дисплей = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Туруктуулар жана глобалдык өзгөрмөлөр

Коддун бул бөлүгүндө мен башка видео сабакта үйрөткөн матрицаны карайм (LINK KEYBOARD). Ошентсе да, мен аралыктан жана ылдамдыктан тышкары, Баскычтоп объектиси жөнүндө айтып жатам.

const байт LINHAS = 4; // катталуучу байт COLUNAS = 4; // Колдонмону иштетүү // чечүү 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_COLUNA [COLUNAS] = {0, 1, A0, A1} байттары сыяктуу эле. // баскычтар баскычтар менен көрсөтүлөт // клавиатура, жооптор баскычын басуу жана басуу клавиатура customKeypad = клавиатура (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // ар кандай жоопторду берүү менен CustomKey; белгисиз узак аралык = 0; кол коюлбаган узак велокидада = 2000;

Баскычтопту окуу функциясы

Бул кадамда бизде дисплейге тиешелүү код бар, ал көбөйүп жана азайып бараткан басууну иштетет.

// Funcao Responsavel pere ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Escreve o submenu que coleta os valores no display 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 (); String valor = ""; char tecla = false;

баскыч басылганын күтүүдө

Бул жерде биз Loop программалоону түшүндүрөбүз, башкача айтканда, сиз маанилерди киргизесиз.

// Loop infinito enquanto nao chamar o return while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se 0 0 9 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 (); тыныгуу; // "C" баскычын басуу менен CLR баскычын басыңыз: // Каармандыктын эрдиги = ""; // Көрсөтүү дисплейи.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); тыныгуу; // "E '" баскычын басуу үчүн ENT: // Retorna o valor return valor.toInt (); тыныгуу; // Se tecla F4 (ESC) "press" учурда "D": кайтаруу -1; демейки: тыныгуу; }} // Limpa o char tecla tecla = false; }}

Мотордук айдоо функциясы

Бул кадамда "жылдыруу" функциясы иштейт. Мен импульстардын санын жана багытын алып, анан "for" жасайм.

// Кыймылдаткычтын кыймылдаткычын иштетүү -------------------------------------- боштукту жылдыруучу (кол коюлган эмес 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 (КАРА); // Driver DRV8825ти конфигурациялоо ----------------------------------------- // пин GND - Иштетүү (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (SLP) // pin 8 - Step (STP)) // пин 7 - Багыты (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sleep (LOW); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1 -бөлүк - Drawing менюсу

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 () - Part 2 - Drawing менюсу

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 = false;

loop () - Part 3 - Running

// Loop enquanto a tecla F4 (ESC) nao for pressionada while (! Esc) {// capurta a tecla pressionada do customadKey = customKeypad.getKey (); // "customKey" баскычын басуу if (customKey) {// Track a apertada switch (customKey) {// Se '' F1 'pressaada case' A ': distancia = lerValor (); // ESC баскычын басуу 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); дисплей.печат (distancia); display.print ("Passos"); display.display ();

loop () - Part 4 - Running

// Кыймылдаткычты кыймылдаткычка (distancia, LOW); // Volta ao меню esc = true; } тыныгуу; // "F" баскычын баскан F2: distancia = lerValor (); // ESC баскычын басуу 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); дисплей.печат (distancia); display.print ("Passos"); display.display ();

loop () - Part 5 - Running

// Кыймылдаткычты кыймылдаткычка (distancia, HIGH); // Volta ao меню esc = true; } тыныгуу; // "C" баскычын басуу F3: velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Escreve a tela "Velocidade" жок 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 () - Part 6 - Running

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 'fla F4 (ESC) басуу иши' D ': // SECA CLR үчүн басуу иши' c ': // SE ECHA ENT басуу иши' e ': // Вольта же меню esc = true; демейки: тыныгуу; }} // LimPa char customKey customKey = false; }}

16 -кадам: Шпиндельдер жөнүндө - Машинанын конфигурациялары

Шпиндельдер жөнүндө - Машинанын конфигурациялары
Шпиндельдер жөнүндө - Машинанын конфигурациялары

Мисалы, 3D принтерлер жана роутерлер сыяктуу CNC машиналарында, позициялоону көзөмөлдөө үчүн жооптуу программа, кадамдардын моторуна берилген импульстун санынын функциясы катары кандайча болорун билиши керек.

Эгерде тепкич мотору микро кадамдарды колдонууга мүмкүндүк берсе, бул конфигурация өндүрүлгөн орун алмаштырууну эсептөөдө эске алынышы керек.

Мисалы, 200 кадамдык мотор 1/16га орнотулган драйверге туташтырылган болсо, анда шпинделдин бир айлануусу үчүн, башкача айтканда, ар бир айлануу үчүн 3200 импульс үчүн 16 x 200 импульс талап кылынат. Эгерде бул шпинделдин айлануусу 2мм болсо, анда гайка 2мм жылышы үчүн айдоочуда 3200 импульс талап кылынат.

Чынында, программалык камсыздоо контролерлору көбүнчө бул катышты, "миллиметрдеги импульстардын санын" же "кадамдарды / мм" көрсөтүү үчүн негиз колдонушат.

17 -кадам: Марлин

Марлин
Марлин

Мисалы, Марлинде, @section motion бөлүмүндө көрөбүз:

/ **

* Бирдикке По умолчание Октор кадамдары (кадам / мм)

* M92 менен жокко чыгаруу

* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]

* /

#аныктоо DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}

Бул мисалда, X жана Y огунун 1 мм жылыш үчүн 80 импульстун тактыгы бар деп тыянак чыгарууга болот, ал эми Z 3200 импульска муктаж, ал эми E0 экструдер 100гө муктаж.

18 -кадам: GRBL

GRBL
GRBL

Төмөндө биз GRBL конфигурация буйруктарын көрөбүз. $ 100 буйругу менен, биз X огунда бир миллиметрлик жылышуу үчүн зарыл болгон импульстун санын тууралай алабыз.

Төмөндөгү мисалда учурдагы мааниси мм үчүн 250 импульс экенин көрө алабыз.

Y жана Z балталары тиешелүүлүгүнө жараша $ 101 жана $ 102 белгилениши мүмкүн.

Сунушталууда: