Оглавление:

Arduino Uno со шпинделем и двигателем шага: 19 шагов
Arduino Uno со шпинделем и двигателем шага: 19 шагов

Видео: Arduino Uno со шпинделем и двигателем шага: 19 шагов

Видео: Arduino Uno со шпинделем и двигателем шага: 19 шагов
Видео: ПОДКЛЮЧАЕМ ШАГОВЫЙ ДВИГАТЕЛЬ К ARDUINO [Уроки Ардуино #14] 2024, Июль
Anonim
Image
Image
Используемые ресурсы
Используемые ресурсы

Сегодня мы поговорим об очень важной теме механики и мехатроники: об элементах машин. В этой статье мы конкретно поговорим о шпинделях с некоторыми интересными функциями и приложениями. Тем не менее, мы продемонстрируем некоторые способы расчета движения, вызванного шпинделем, и представим тестовую сборку.

Поэтому я сделал сборку ниже, которая показывает продвижение шпинделя на 2 мм и другого на 8 мм. Эти шпиндели TR8, которые я использую, обычно используются в небольших маршрутизаторах и 3D-принтерах, особенно на оси Z. Помня, что, овладев некоторыми концепциями, над которыми мы здесь будем работать, вы сможете сконструировать любой тип машины.

Шаг 1. Используемые ресурсы

  • Трапециевидный шпиндель диаметром 8 мм и шагом 2 мм
  • Трапециевидный шпиндель диаметром 8 мм и шагом 8 мм
  • Шпиндель 8x2 фланцевый каштан
  • Шпиндель 8x8 фланцевый каштан
  • Подшипники для шпинделей диаметром 8 мм
  • Линейная цилиндрическая направляющая диаметром 10 мм
  • Цилиндрические роликоподшипники для направляющих 10 мм
  • Кронштейны для цилиндрических направляющих 10 мм
  • NEMA 17 Двигатели
  • Муфты валов
  • Ардуино Уно
  • Драйвер DRV8825
  • Матричная клавиатура 4x4
  • Дисплей Nokia 5110
  • Разные пластиковые детали
  • Болты и гайки
  • Основание из дерева
  • Внешний источник питания 12 В

Шаг 2: О шпинделях - что это такое?

О шпинделях - что это такое?
О шпинделях - что это такое?

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

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

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

Шаг 3. О шпинделях - одинарная и шариковая резьба

О шпинделях - одинарная и шариковая резьба
О шпинделях - одинарная и шариковая резьба

Шариковые шпиндели, на фото слева, имеют полукруглые каналы, по которым шарики катятся. Они относительно дороже и имеют низкое трение по сравнению с одношнековыми шпинделями, что приводит к гораздо более высокому выходу (трение качения).

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

Шаг 4: О шпинделях - Приложения

О шпинделях - Области применения
О шпинделях - Области применения

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

Некоторые приложения включают:

  • Грузовые лифты
  • Прессы
  • Клубника и токарные станки
  • Оборудование с ЧПУ
  • Упаковочные машины
  • 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

Сборка - Шаг 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 и матричную клавиатуру 4х4. В нижнем пространстве подставки разместится Arduino Uno, драйвер DRV8825.

Используя имеющееся сверление в основании, скрепляем сборку.

Шаг 14: электрическая схема

Электрическая схема
Электрическая схема

Схема подключения простая. У нас есть DRV8825 и те же два зеркала 17, то есть один и тот же шаг, который мы отправляем одному, переходит к другому. Что изменилось, так это то, что в одном из двигателей у меня шпиндель 8 мм, а в другом шпиндель 2 мм. Таким образом, очевидно, что первый, с 8-миллиметровым шпинделем, идет быстрее. По-прежнему на схеме изображены дисплей и клавиатура 4x4, которая должна быть матричной.

Шаг 15: Исходный код

Включение библиотек и создание объектов

У нас есть Lib, которую я сделал, это StepDriver.h. Он подготовлен для драйверов 8825, 4988, а также TB6600. На этом этапе я создаю объект DRV8825, d1.

// Biblioteca responseável por capturar a tecla que foi pressionada no teclado # include // Biblioteca responseável pelos graficos do display #include // Biblioteca responseável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Serial clock out (SCLK) // контакт 5 - последовательный выход данных (DIN) // контакт 4 - выбор данных / команд (D / C) // контакт 3 - выбор микросхемы ЖК-дисплея (CS / CE) // контакт 2 - сброс ЖК-дисплея (RST) Adafruit_PCD8544 display = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Создание драйвера DRV8825 DRV8825 d1;

Константы и глобальные переменные

В этой части кода я рассматриваю матрицу, которую я преподавал в другом видеоуроке (LINK KEYBOARD). Тем не менее, я говорю об объекте Keypad, помимо расстояния и скорости.

const byte LINHAS = 4; // количество строк для текущего байта COLUNAS = 4; // número de colunas do teclado // define 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_COLUNA [COLUNAS] = {0, 1, A0, A1}; // отображение индикаторов в качестве символов // отображение клавиатуры, реагирование на ввод текста с клавиатуры customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // различные ответы на оружие или цифровое значение char customKey; беззнаковое длинное расстояние = 0; беззнаковая длинная велосидада = 2000;

Функция чтения с клавиатуры

На этом этапе у нас есть код, относящийся к дисплею, который работает с увеличением и уменьшением печати.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Выход из подменю, в котором все значения не отображаются display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (БЕЛЫЙ); display.print («ВАЛОР»); 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 («ЛИМПАР»); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (БЕЛЫЙ); display.print («F4»); display.setTextColor (ЧЕРНЫЙ); display.setCursor (23, 38); display.print («ВОЛЬТАР»); display.setCursor (2, 14); display.display (); Строка доблесть = ""; char tecla = false;

цикл ожидания нажатия клавиши

Здесь мы объясняем программирование цикла, то есть то, где вы вводите значения.

// Цикл бесконечно многозначный или возвратный 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': доблесть + = текла; дисплей.печать (текла); display.display (); перерыв; // Установить CLR для сжатия case 'c': // Ограничить строку valor valor = ""; // Возможности отображения display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); перерыв; // Задайте ENT для нажатия case 'e': // Вернуть доблесть return valor.toInt (); перерыв; // Установить F4 (ESC) для нажатия регистра 'D': return -1; по умолчанию: перерыв; }} // Limpa o char tecla tecla = false; }}

Функция привода двигателя

На этом этапе прорабатывается функция "перемещение". Я получаю количество импульсов и направление, а затем делаю «за».

// Funcao responsavel por mover o motor -------------------------------------- void mover (unsigned 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 - Enable (ENA) // контакт 13 - M0 // контакт 12 - M1 // контакт 11 - M2 // контакт 10 - Reset (RST) // контакт 9 - Sleep (SLP) // контакт 8 - Step (STP) // вывод 7 - направление (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sleep (НИЗКИЙ); 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 («ПОЛУМЕСЯЦ»); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (БЕЛЫЙ); display.print («F2»); display.setTextColor (ЧЕРНЫЙ); display.setCursor (17, 14); display.print ("ДЕКОРЕСЕНТ"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (БЕЛЫЙ); display.print («F3»); display.setTextColor (ЧЕРНЫЙ); display.setCursor (17, 26); display.print («ВЕЛОЦИДАД»);

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

loop () - Часть 3 - Бег

// Цикл enquanto a tecla F4 (ESC) nao для pressionada while (! Esc) {// захват tecla pressionada do 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 (); // Установить ESC для нажатия if (distancia == -1) {esc = true; } else {// Отменить сообщение "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 («Пассос»); display.display ();

loop () - Часть 4 - Бег

// Двигаться двигателем (distancia, LOW); // Меню Volta ao esc = true; } перерыв; // Задайте F2 для случая "B": distancia = lerValor (); // Установить ESC для нажатия if (distancia == -1) {esc = true; } else {// Отменить команду "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 («Пассос»); display.display ();

loop () - Часть 5 - Бег

// Двигаться двигателем (distancia, HIGH); // Меню Volta ao esc = true; } перерыв; // Задайте F3 для случая 'C': velocidade = lerValor (); если (velocidade == -1) {esc = true; } else {// Прервать телу "Velocidade" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (БЕЛЫЙ); display.print («ВЕЛОЦИДАД»); display.setTextColor (ЧЕРНЫЙ); display.setCursor (2, 14); display.print (велосидада); 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 (); // Конфигурация новой скорости и двигателя d1.motionConfig (50, velocidade, 5000); задержка (2000); // Меню Volta ao esc = true; } перерыв; // Установить F4 (ESC) для нажатия регистра 'D': // Установить CLR для нажатия регистра 'c': // Установить ENT для нажатия регистра 'e': // Ввести в меню esc = true; по умолчанию: перерыв; }} // Не используйте char customKey customKey = false; }}

Шаг 16: О шпинделях - конфигурации машины

О шпинделях - конфигурации машин
О шпинделях - конфигурации машин

В станках с ЧПУ, таких как 3D-принтеры и маршрутизаторы, например, программа, отвечающая за управление позиционированием, должна знать, как будут происходить движения в зависимости от количества импульсов, подаваемых на шаговый двигатель.

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

Например, если 200-шаговый двигатель на оборот подключен к драйверу, установленному на 1/16, то для одного оборота шпинделя потребуется 16 x 200 импульсов, то есть 3200 импульсов на каждый оборот. Если этот шпиндель имеет шаг 2 мм на оборот, то для перемещения гайки на 2 мм потребуется 3200 импульсов в драйвере.

Фактически, программные контроллеры часто используют причину, чтобы указать это соотношение, «количество импульсов на миллиметр» или «шаги / мм».

Шаг 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 мм, в то время как Z требует 3200 импульсов, а экструдеру E0 требуется 100 импульсов.

Шаг 18: GRBL

GRBL
GRBL

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

В примере ниже мы видим, что текущее значение составляет 250 импульсов на мм.

Для осей Y и Z можно установить соответственно 101 и 102 доллара.

Рекомендуемые: