Оглавление:

Меню шагового управления скоростью для Arduino: 6 шагов
Меню шагового управления скоростью для Arduino: 6 шагов

Видео: Меню шагового управления скоростью для Arduino: 6 шагов

Видео: Меню шагового управления скоростью для Arduino: 6 шагов
Видео: Шаговый двигатель 28BYJ-48 с драйвером ULN2003 - Подключение к Arduino 2024, Ноябрь
Anonim
Меню шагового управления скоростью для Arduino
Меню шагового управления скоростью для Arduino
Меню управления скоростью шагового двигателя для Arduino
Меню управления скоростью шагового двигателя для Arduino
Меню управления скоростью шагового двигателя для Arduino
Меню управления скоростью шагового двигателя для Arduino

Эта библиотека SpeedStepper представляет собой переписанный вариант библиотеки AccelStepper, позволяющий управлять скоростью шагового двигателя. Библиотека SpeedStepper позволяет вам изменять заданную скорость двигателя, а затем ускорять / замедлять до новой заданной скорости, используя тот же алгоритм, что и библиотека AccelStepper. Библиотека SpeedStepper также позволяет вам установить положительный и отрицательный предел и «исходное» положение. Есть команда goHome для возврата в исходное положение.

Ограничения: библиотека SpeedStepper управляет только выходами направления и шага, поэтому ее необходимо подключить к драйверу двигателя, например Easy Driver, для фактического управления шаговым двигателем. Библиотека AccelStepper предоставляет больше возможностей вождения, которые при необходимости можно скопировать в эту библиотеку.

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

Хотя библиотека AccelStepper обеспечивает хорошее управление положением, контроль скорости был необходим для прототипа зонда таяния льда для сбора биологических образцов на Европе. Вот видео более ранней версии прототипа, в которой вместо двигателя использовался вес. Версия 1.1 добавила профили скорости после того, как пользователь запросил средства для управления профилем скорости насоса.

Эта библиотека работает на Arduino Uno и Mega2560, но для прототипа использовался процессор с большей памятью / более быстрым процессором SparkFun Redboard Turbo.

Это руководство также доступно в Интернете в библиотеке Stepper Speed Control Library для Arduino.

Запасы

Для запуска примеров скетчей необходимы только Arduino UNO или Mega2560 и программные библиотеки.

Для стендового тестирования библиотеки использовался SparkFun Redboard Turbo с Easy Driver, шаговым двигателем на 200 шагов / оборот, 12 В, 350 мА и источником питания 12 постоянного тока 2 А или больше, например https://www.sparkfun.com/products/14934. Кабель USB A - Micro USB - TTL Serial Cable Arduino IDE V1.8.9 и компьютер для его запуска. Библиотека SpeedStepper. Библиотека pfodParser для классов nonBlockingInput и pfodBufferedStream. Библиотека millisDelay для неблокирующих задержек.

Шаг 1. Библиотечные функции

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

Положение шагового двигателя отслеживается путем подсчета количества шагов (импульсов). Библиотека ограничивает позицию между позициями setPlusLimit (int32_t) и setMinusLimit (int32_t). Положительный предел всегда> = 0, а отрицательный предел всегда <= 0. При запуске положение двигателя равно 0 (исходное положение), а пределы устанавливаются на очень большие числа +/- (примерно +/- 1e9 шагов). setAcceleration (float) устанавливает, насколько быстро двигатель будет изменять скорость вверх или вниз. Когда двигатель приближается к положительному или отрицательному пределу, он будет замедляться с этой скоростью до тех пор, пока не остановится на пределе. При запуске ускорение установлено на 1,0 шаг / сек / сек. Параметр ускорения всегда положительный. Знак настройки setSpeed (float) устанавливает направление, в котором будет двигаться двигатель.

setSpeed (float) устанавливает скорость для ускорения / замедления двигателя от его текущей скорости. Скорость, которая может быть установлена с помощью setSpeed (float), ограничена по абсолютной величине настройками setMaxSpeed (float), по умолчанию 1000 шагов / сек и setMinSpeed (float), по умолчанию 0,003 шага / сек. Эти значения по умолчанию также являются абсолютными жестко заданными ограничениями скорости, которые библиотека примет для setMaxSpeed () и setMinSpeed (). Если вы хотите установить максимальную скорость> 1000 шагов / сек, вам нужно будет отредактировать первую строку в файле SpeedStepper.cpp, чтобы изменить maxMaxSpeed (1000) на максимальную скорость, которую вы хотите. На практике максимальная скорость также ограничена временем между вызовами метода библиотеки run (). Для 1000 шагов / сек метод run () должен вызываться как минимум каждые 1 мс. См. Раздел «Задержка» ниже.

Попытка установить скорость ниже минимальной приведет к остановке двигателя. У каждого из этих сеттеров есть соответствующий геттер, см. Файл SpeedStepper.h. Для скорости getSetSpeed () возвращает скорость, которую вы установили с помощью setSpeed (), а getSpeed () возвращает текущую скорость двигателя, которая изменяется по мере ускорения / замедления до установленной вами скорости. Если двигатель не движется в том направлении, которое вы считаете положительным, вы можете вызвать invertDirectionLogic (), чтобы поменять направление движения двигателя на положительную скорость.

getCurrentPosition () возвращает текущее положение двигателя по сравнению с 'home' (0). Вы можете изменить текущее положение двигателя setCurrentPosition (int32_t). Новая позиция ограничена установленными пределами плюс / минус.

Первоначально двигатель остановлен в положении 0. Вызов setSpeed (50.0) заставит его начать ускорение в положительном направлении до максимальной скорости 50 шагов / мин. Вызов hardStop () немедленно остановит двигатель на месте. С другой стороны, вызов метода stop () установит нулевую скорость и замедлит двигатель до остановки. Вызов stopAndSetHome () немедленно остановит двигатель и установит его положение в 0. Значения пределов плюс / минус не изменяются, но теперь относятся к этой новой 0 (исходной) позиции. Вызов goHome () вернет шаговый двигатель в это 0 (исходное) положение и остановится. Вызов setSpeed () отменит возвращение домой.

Библиотека SpeedStepper также обеспечивает управление профилем скорости с помощью методов setProfile (SpeedProfileStruct * profileArray, size_t arrayLen), startProfile (), stopProfile () для прерывания работающего профиля и isProfileRunning (). См. Пример скетча speedStepperProfile.

Шаг 2. Запуск примера SpeedStepperPlot без двигателя

Запуск примера SpeedStepperPlot без двигателя
Запуск примера SpeedStepperPlot без двигателя

Установите Arduino IDE V1.8.9. Загрузите и установите библиотеку SpeedStepper. Сохраните SpeedStepper.zip, а затем используйте пункт меню Arduino IDE Sketch → Include Library → Add. ZIP library, чтобы импортировать библиотеку. Загрузите и установите также библиотеку millisDelay.

Откройте пример скетча Примеры → SpeedStepper → speedStepperPlot (при необходимости перезапустите IDE). Этот скетч настроен для работы с последовательным интерфейсом, например UNO и Mega и т. Д. Информацию о работе на SparkFun Redboard Turbo см. Ниже.

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

Загрузите эскиз на плату, а затем откройте Инструменты → Последовательный плоттер на скорости 115200 бод, чтобы показать график скорости (КРАСНЫЙ) и положения (СИНИЙ). Положительный предел установлен на 360, что приводит к постепенному нарастанию скорости до нуля примерно от 100 точек. по оси абсцисс. Минус-предел -510. Положение останавливается на ~ -390, потому что скорость была запрошена на 0,0. В точке 380 на оси x выдается команда goHome, которая возвращает шаговый двигатель в нулевое положение.

Этот скетч speedStepperPlot использует millisDelays для переключения времени между различными скоростями и ускорениями. Во многих случаях использование SpeedStepperProfile, как в следующем примере, проще.

Шаг 3. Запуск примера SpeedStepperProfile без двигателя

Запуск примера SpeedStepperProfile без двигателя
Запуск примера SpeedStepperProfile без двигателя

Откройте пример эскиза Примеры → SpeedStepper → speedStepperPlot, этот эскиз создает вышеуказанный график с использованием последовательного плоттера Arduino и является примером выполнения заданного профиля скорости, например, при работе насоса.

Профили скорости шагового двигателя состоят из массива SpeedProfileStruct, который определен в файле SpeedStepper.h.

struct SpeedProfileStruct {

скорость поплавка; // целевая скорость в конце этого шага unsigned long deltaTms; // время для ускорения от текущей скорости (в начале этого шага) до целевой скорости};

Определите массив SpeedProfileStruct, содержащий целевую скорость для каждого шага и время deltaTms в миллисекундах для достижения этой целевой скорости по сравнению с предыдущей целевой скоростью. Если deltaTms равно нулю или очень мало, то скорость сразу же перескочит до новой целевой скорости. В противном случае будет вычислено необходимое ускорение. Будет вызвана функция setAcceleration (), за которой следует вызов setSpeed () для новой целевой скорости. Во всех случаях профиль будет ограничен существующими ограничениями положительного и отрицательного положения и настройками максимальной / минимальной скорости. Если вы хотите сохранить скорость, просто повторяйте предыдущую скорость со временем, которое вы хотите удерживать. Поскольку новая целевая скорость совпадает с текущей скоростью, вычисленное ускорение будет нулевым и никаких изменений скорости не произойдет.

Этот массив SpeedProfileStruct создал приведенный выше график

const SpeedProfileStruct profile = {{0, 0}, // немедленно остановить, если еще не остановлен {0, 1000}, // удерживать ноль в течение 1 секунды {-50, 0}, // перейти к -50 {-200, 2000}, // увеличение до -200 {-200, 6000}, // удержание на -200 в течение 6 секунд {-50, 2000}, // снижение до -50 {0, 0}, // // немедленная остановка {0, 1500}, // удерживать ноль в течение 1,5 с {50, 0}, // переходить на 50 {200, 2000}, // увеличиваться до 200 {200, 6000}, // удерживать 200 в течение 6 секунд {50, 2000}, // увеличение до 50 {0, 0}, // // немедленная остановка {0, 1000} // удержание нуля // для вывода вывода на график}; const size_t PROFILE_LEN = sizeof (профиль) / sizeof (SpeedProfileStruct); // вычисляем размер массива профиля

Профиль устанавливается путем вызова setProfile (SpeedProfileStruct * profileArray, size_t arrayLen), например. stepper.setProfile (профиль, PROFILE_LEN);

После того, как профиль установлен, вызовите startProfile (), чтобы запустить его с текущей скорости двигателя (обычно вы начинаете с остановки). В конце профиля двигатель просто продолжит работать с последней заданной скоростью. Можно вызвать метод isProfileRunning (), чтобы узнать, работает ли профиль по-прежнему. Если вы хотите остановить профиль раньше, вы можете вызвать stopProfile (), который оставит профиль и остановит двигатель.

Шаг 4. Запуск примера SpeedStepperSetup без двигателя

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

Этот набросок иллюстрирует ряд программных функций, которые обеспечивают отзывчивость loop (), так что вы можете добавлять собственные входы датчиков для управления шаговым двигателем. Требуются усилия, чтобы избежать задержек, которые могут помешать регулированию скорости. (См. "Задержки - зло")

Установите библиотеки, используемые для запуска SpeedStepperPlot, описанные выше, а затем также установите библиотеку pfodParser. Библиотека pfodParser предоставляет классы NonBlockingInput и pfodBufferedStream, которые используются для обработки пользовательского ввода и вывода меню с блокировкой запуска loop ().

Откройте пример Примеры → SpeedStepper → speedSpeedSetup. Этот скетч настроен для работы с последовательным интерфейсом, например UNO и Mega и т. Д. Информацию о работе на SparkFun Redboard Turbo см. Ниже.

Для запуска этого примера не требуется плата драйвера или шаговый двигатель. В этих примерах в качестве выходов используются D6 и D7. Вы можете изменить выходные контакты на любой цифровой выход, изменив настройки STEP_PIN и DIR_PIN в верхней части скетча. Загрузите эскиз на плату, а затем откройте Инструменты → Последовательный монитор на 115200, чтобы увидеть меню НАСТРОЙКА.

SETUP pos: 0 sp: 0.00 + Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p - set Home l - установить пределы h - goHome r - run>

При запуске эскиза текущее положение шагового двигателя принимается как его «исходное» (0) положение. Если вам нужно переставить шаговый двигатель в его истинное «исходное» положение, введите команду p, чтобы отобразить меню SET HOME.

SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x - setHome here and exit + - Forward - - Reverse s - swap Forward / Reverse - hardStop >

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

Используйте + cmd, чтобы начать движение шагового двигателя вперед, если вы обнаружите, что он движется в неправильном направлении, введите не команду или просто пустую строку, чтобы остановить его, а затем используйте scommand, чтобы поменять направление вперед. Вы должны обновить скетч, включив в настройку вызов invertDirectionLogic (), чтобы исправить это при следующем запуске.

Используйте + / - cmds, чтобы установить шаговый двигатель в правильное нулевое положение. Двигатель запускается медленно, а затем набирает скорость по мере продвижения, просто используйте пустую строку, чтобы остановить его. Максимальная скорость для этого и меню ограничений устанавливаются параметром MAX_SETUP_SPEED в верхней части setupMenus.cpp.

Как только двигатель будет установлен в исходное положение, используйте команду x cmd, чтобы повторно установить текущее положение на 0 и вернуться в меню НАСТРОЙКА.

Если вам нужно установить пределы, обычно только при начальной настройке, используйте l cmd для входа в меню SET LIMITS.

SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l - setLimit here + - Forward - - Reverse h - goHome x - exit - hardStop>

Используйте + cmd, чтобы перейти к положительному пределу, а затем используйте l cmd, чтобы установить его как положительный предел. Затем можно использовать команду h для возврата к 0, а - cmd использовать для перемещения, если возвращается в положение двигателя на минусовой границе. Снова используйте команду l, чтобы установить минусовый предел. Обратите внимание на положения плюсов и минусов и обновите операторы setPlusLimit и setMinusLimit метода setup () этими значениями.

Когда пределы установлены, используйте x cmd, чтобы вернуться в меню SETUP, а затем вы можете использовать r cmd, чтобы открыть меню RUN.

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + - Speed up - - Speed down h - goHome. - hardStop - freeze Speed> + pos: 4 sp: 9.49 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 42 sp: 29.15 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 120 sp: 49.09 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

+ Cmd начинает ускоряться в прямом направлении и распечатывает положение и скорость каждые 2 секунды. Когда двигатель достигнет желаемой скорости, вы можете остановить ускорение любой другой кнопкой (или пустым вводом). Вы можете уменьшить скорость, используя - cmd вниз для остановки. Если остановить - cmd ускорится в обратном направлении.

Это меню RUN обеспечивает ручное управление вашим проектом. Для автоматического управления вам нужно будет добавить некоторые другие датчики.

Шаг 5: задержка

Управление шаговым двигателем зависит от программного обеспечения, управляющего каждым шагом. Чтобы поддерживать заданную скорость, ваш скетч должен вызывать метод stepper.run () достаточно часто, чтобы выполнить следующий шаг в нужное время для текущей скорости. Для управления через датчики необходимо иметь возможность оперативно обрабатывать новые измерения. Распечатка положения / скорости включает два измерения ЗАДЕРЖКИ, чтобы вы могли проверить, достаточно ли быстр ваш эскиз.

Шаговая задержка (pfodBufferedStream)

Задержка шагового двигателя измеряет максимальную задержку между последовательными вызовами метода stepper.run (). Чтобы шаговый двигатель работал со скоростью 1000 шагов в секунду, задержка шагового двигателя должна быть менее 1000 мкс (1 мс). Первая версия этого скетча имела задержку в несколько миллисекунд. Чтобы преодолеть эти дополнительные вызовы метода runStepper () (который вызывает stepper.run ()), добавленный через код. Это не решило проблему полностью, потому что операторы меню и вывода на печать блокировали скетч после заполнения небольшого буфера Serial Tx. Чтобы избежать этой блокировки, pfodBufferedStream из библиотеки pfodParser использовался для добавления 360-байтового выходного буфера печати, в который операторы печати могли быстро записывать. Затем pfodBufferedStream освобождает байты со скоростью передачи, указанной в этом случае 115200. pfodBufferedStream должен иметь возможность либо блокировать, когда буфер заполнен, либо просто отбрасывать символы переполнения. Здесь установлено, что при заполнении буфера все лишние символы удаляются, чтобы скетч не блокировался, ожидая, пока Serial отправит символы.

Задержка цикла (неблокирующий ввод)

Задержка цикла измеряет максимальную задержку между последовательными вызовами метода loop (). Это устанавливает, насколько быстро вы можете обрабатывать новые измерения датчика и регулировать заданную скорость двигателя. Насколько быстро тогда нужно быть, зависит от того, что вы пытаетесь контролировать.

Задержки из-за операторов печати были удалены с помощью pfodBufferedStream выше, но для обработки пользовательского ввода вам нужно взять только первый символ ввода и игнорировать остальную часть строки. Класс NonBlockingInput в библиотеке pfodParer используется для возврата ненулевого символа при вводе с помощью readInput (), а также для очистки и отбрасывания следующих символов с помощью clearInput () до тех пор, пока символы не будут получены в течение 10 мс без блокировки цикла ()

Конечно, задержка цикла будет увеличена дополнительным кодом, который вы добавляете для чтения датчиков и расчета новой установленной скорости. Многие библиотеки датчиков используют простую задержку (..) между началом измерения и получением результата. Вам нужно будет переписать эти библиотеки, чтобы вместо этого использовать millisDelay, чтобы получить результат измерения после подходящей неблокирующей задержки.

Шаг 6: Запуск SpeedStepperSetup с шаговым двигателем и SparkFun Redboard Turbo

Скорость бегаStepperSetup с шаговым двигателем и SparkFun Redboard Turbo
Скорость бегаStepperSetup с шаговым двигателем и SparkFun Redboard Turbo
Скорость бегаStepperSetup с шаговым двигателем и SparkFun Redboard Turbo
Скорость бегаStepperSetup с шаговым двигателем и SparkFun Redboard Turbo

Для реального запуска скетча SpeedStepperSetup вам понадобится шаговый двигатель, драйвер и источник питания, а в этом примере SparkFun Redboard Turbo.

На схеме выше (версия в формате pdf) показаны соединения. В скетче SpeedStepperSetup измените определение SERIAL на #define SERIAL Serial1.

Шаговый двигатель, блок питания, драйвер и защита

Есть много типов и размеров шаговых двигателей. Здесь для тестирования используется шаговый двигатель с двумя катушками 12 В, 350 мА. Для питания этого шагового двигателя вам понадобится источник питания 12 В или более и более 350 мА.

Эта библиотека обеспечивает только направление и шаг, поэтому вам понадобится драйвер для взаимодействия с шаговым двигателем. Easy Driver и Big Easy Driver управляют током, подаваемым на катушки двигателя, поэтому вы можете безопасно использовать источник питания с более высоким напряжением, например, используя источник питания 6 В для двигателя 3,3 В. Easy Driver может подавать от 150 мА на катушку до 700 мА на катушку. Для более высоких токов Big Easy Driver может подавать до 2 А на катушку. Прочтите часто задаваемые вопросы внизу страницы Easy Drive.

В этих примерах используются D6 и D7 как выходы Step и Direction. Вы можете изменить выходные контакты на любой цифровой выход, изменив настройки STEP_PIN и DIR_PIN в верхней части скетча.

Программирование Sparkfun Redboard Turbo

Программирование Redboard Turbo проблематично. Если это не удается запрограммировать, сначала нажмите кнопку сброса один раз, повторно выберите COM-порт в меню инструментов Arduino и повторите попытку. Если это не помогло, дважды нажмите кнопку сброса и повторите попытку.

Подключение Easy Driver

Два шаговых двигателя с катушкой имеют 4 провода. Используйте мультиметр, чтобы найти пары, которые подключаются к каждой катушке, а затем подключите одну катушку к клеммам Easy Driver A, а другую катушку - к клемме B. Не имеет значения, в какую сторону вы их подключаете, потому что вы можете использовать s cmd в меню настройки, чтобы поменять направление движения.

Источник питания двигателя подключен к M + и GND Установите логический уровень платы с помощью линии 3 / 5V. Замкните соединение для микропроцессорных выходов 3,3 В, таких как SparkFun Redboard Turbo (если вы оставите его открытым, он подходит для цифровых сигналов 5 В, например UNO, Mega). Подключите контакты GND, STEP, DIR к GND микропроцессора и шагу и dir выходные контакты. Никаких других подключений для привода двигателя не требуется.

Последовательный кабель USB-TTL

При перемещении скетча SpeedStepperSetup из Uno / Mega в Redboard Turbo вы можете наивно просто заменить #define SERIAL Serial на #define SERIAL SerialUSB, чтобы соответствовать последовательному USB-соединению Redboard Turbo, однако вы обнаружите, что результирующая задержка шагового двигателя составляет около 10 мс. Это в 10 раз медленнее, чем для UNO. Это связано с тем, как процессор Redboard обрабатывает USB-соединение. Чтобы преодолеть это, подключите последовательный кабель USB к TTL к D0 / D1 и установите # define SERIAL Serial1, чтобы использовать аппаратное последовательное соединение для управления шаговым двигателем. Использование Serial1 дает LATENCY: stepper: 345uS loop: 2016uS, что в 3 раза быстрее, чем UNO для шагового двигателя и задержки цикла.

Терминальная программа

Последовательный монитор Arduino немного сложнее использовать для управления шаговым двигателем, так как вам нужно ввести символ в строке cmd, а затем нажать Enter, чтобы отправить его. Более быстрым и быстрым средством является открытие окна терминала TeraTerm для ПК (или CoolTerm Mac), подключенного к COM-порту кабеля USB-TTL. Затем в этом окне нажатие клавиши cmd немедленно отправляет его. Нажатие Enter просто отправляет пустую строку.

Установка диапазона скорости двигателя

Как описано выше, Easy Drive настроен на 1/8 ступени, поэтому 1000 шагов в секунду будут вращать двигатель со скоростью 1000/8/200 шагов на оборот = 0,625 об / с или максимум 37,5 об / мин. Изменяя входы на MS1 / MS2, вы можете переключаться между 1/8, ¼, ½ и полными шагами. Для полных шагов подключите MS1 и MS2 к GND. Это позволит развивать скорость до 300 об / мин. Выбор соответствующих настроек MS1 / MS2 позволяет отрегулировать установленное передаточное число между двигателем и ведомой частью.

Аппаратная защита

В то время как библиотека SpeedStepper позволяет вам устанавливать пределы положения для движения двигателя, привязка положения выполняется путем подсчета шагов, выводимых программным обеспечением. Если двигатель глохнет, т. Е. Крутящего момента недостаточно для приведения в действие двигателя на следующем этапе, тогда программное положение будет не синхронизировано с положением двигателя. Затем, когда вы используете команду «goHome», двигатель выйдет за пределы исходного положения. Чтобы предотвратить повреждение оборудования, вы должны установить концевые выключатели на жестких границах, чтобы отключить питание двигателя.

Установка ограничения тока двигателя

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

Заключение

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

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