Управление шаговым двигателем с помощью Arduino и потенциометра схема и программа

Уроки Ардуино для начинающих

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

В этом уроке используются следующие детали:

Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Набор резисторов из 100 штук на все случаи: Купить
Набор светодиодов из 100 штук: Купить
5 штук кнопок в удобной форме: Купить
Соединительные провода 120 штук: Купить

Подключение кнопки к Arduino

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

В этом уроке, как и прошлом, в самом начале мы объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем. Описание функций и операторов вы найдете в справочнике по языку программирования Arduino

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

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

Понравилось? Давайте еще больше усложним наш проект. Теперь мы будем управлять яркостью светодиода. Для этого нам надо немного изменить схему нашего устройства. Для управления яркостью мы будем использовать ШИМ. Значит нам надо подключить светодиод к выходу, который может выдавать ШИМ. Теперь наша схема будет выглядеть вот так:

Подключение светодиода к Arduino

Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. Теперь посмотрим что нужно изменить в скетче:

В этом примере мы изменили значение переменной ledPin на 11. Так же добавили переменную для хранения уровня ШИМ ledLevel. При нажатии на кнопку будем увеличивать эту переменную. Функция debounce() осталась без изменений. В цикле мы теперь используем функцию analogWrite().

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

21 комментариев

Здравствуйте)))
Подскажите пожалуйста новечьку,
Как можно реализовать такой скечь
При нажатии на кнопку светодиод плавно загорается если нажать ещё раз на кнопку то светодиод плавно тухнет…?

Очевидно при нажатии на кнопку в цикле менять значение ledLevel

Денис что такое ledlevel?

//Как можно реализовать такой скечь
//При нажатии на кнопку светодиод плавно загорается если нажать ещё раз на кнопку то светодиод плавно тухнет…?

/*== к примеру, вот так ==*/

// переменные с пинами подключенных устройств
int switchPin = 8;
int ledPin = 11;

// переменные для хранения состояния кнопки и светодиода
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

// настройка изменения яркости
int deltaLevel = 5; // Шаг изменения яркости
int sign = 1; // Знак шага
int step_delay = 100; // задержка в шаге изменения яркости светодиода

// настройка сигнализатора окончания изменения яркости
int max_blink = 3; //число морганий светодиода на pin13 (LED_BUILTIN)
int blink_delay = 500; //задержка состояния светодиода на pin13 (LED_BUILTIN)

void setup()
<
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);// потушим светодиод на pin13 (LED_BUILTIN)
>

// функция для подавления дребезга
boolean debounse(boolean last)
<
boolean current = digitalRead(switchPin);
if(last != current)
<
delay(5);
current = digitalRead(switchPin);
>
return current;
>

// При нажатии на кнопку, светодиод медленно увеличивает яркость
// При повторном нажатии на кнопку, светодиод медленно гаснет
void loop()
<
currentButton = debounse(lastButton);
if(lastButton == LOW && currentButton == HIGH)
<
if(ledLevel == 0) sign = 1;
if(ledLevel == 255) sign = -1;
for(int i = 0; i 255) ledLevel = 255;
if(ledLevel
Света 2018-03-12 12:18:59

МУЖЧИНЫ кто согласится написать скетч за вознаграждение,к примеру на телефон.

Здравствуйте. Какой именно скетч вам нужен?

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 35. Подключение STEP/DIR драйверов шаговых двигателей к Ардуино. Библиотека StepDirDriver.


В уроке подключим STEP/DIR драйвер TB6560-V2 к плате Ардуино. Научимся управлять им с помощью библиотеки StepDirDriver.

TB6560-V2 недорогой драйвер шаговых двигателей поддерживающий все типичные режимы и функции STEP/DIR драйверов.

В уроке будем подключать его к плате Ардуино. Все схемы и программы урока подойдут к любому другому STEP/DIR драйверу.

Подключение драйвера к плате Ардуино.

В статье о модуле TB6560-V2 есть две схемы подключения к микроконтроллеру. Будем использовать эту.

При высоком уровне сигнала (+5 В) через светодиод входного оптрона течет ток, и модуль воспринимает это как активный управляющий уровень. Резисторы 330 Ом ограничивают ток светодиодов. Т.е. драйвером можно управлять сигналами непосредственно с выводов микроконтроллеров.

Читайте также:  Недостатки Мицубиси Аутлендер 2018-2019 - отзывы владельцев все минусы и плюсы

С учетом этого схема подключения драйвера TB6560-V2 к плате Ардуино выглядит так.

Обратите внимание на плавкий предохранитель. Я настоятельно рекомендую его поставить. В схемах с простыми драйверами при сгорании ключей через двигатель течет рабочий ток, ограниченный либо сопротивлением обмотки, либо дополнительным резистором. В драйверах со стабилизацией тока ток регулируется за счет ШИМ модуляции. Если в подобных устройствах сгорают выходные ключи, то на двигатель может попасть полное напряжение питания. Это приведет к недопустимому току и сгоранию шагового двигателя. Процесс это медленный, поэтому от выхода из строя привода спасет любой предохранитель – плавкий или самовосстанавливающийся.

Параметры драйвера задаются переключателями на плате модуля. Я задал ток фазы 1 А.

Переключателями S3 иS4 выбирается режим коммутации фаз.

Состояние переключателей Режим
S3 S4
OFF OFF шаговый
ON OFF полу шаговый
ON ON микро шаговый
1/8 шага
OFF ON микро шаговый
1/16 шага

Для начала я задал шаговый режим, потом проверил все остальные. Все режимы описаны в статье о модуле TB6560-V2. Там же показано, как задавать их переключателями модуля.

Собранная схема у меня выглядит так.

Осталось научиться управлять такой системой.

Библиотека StepDirDriver.

Эту библиотеку я разработал для управления STEP/DIR драйверами. Она полностью совместима по функциям с библиотекой StepMotor (урок 29). Только 2 отличия:

  • Конструктор имеет другие аргументы. Просто для STEP/DIR драйвера требуются другие сигналы управления и другое количество сигналов.
  • В функции установки режима setMode() игнорируется параметр stepMode – режим коммутации. Режим задается переключателями на драйвере.

Загрузить библиотеку StepDirDriver можно по этой ссылке:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Описание класса StepDirDriver.

У класса следующие public методы.

public:
StepDirDriver(byte pinStep, byte pinDir, byte pinEn); // конструктор
void control(); // управление, функция должна вызываться регулярно с максимальной частотой коммутации фаз
void step(int steps); // инициирует поворот ротора на заданное число шагов
void setMode(byte stepMode, boolean fixStop); // задает режимы коммутации фаз и остановки
void setDivider(int divider); // установка делителя частоты для коммутации фаз
int readSteps(); // чтение оставшихся шагов
> ;

Нетрудно догадаться, о назначении аргументов конструктора:

  • pinStep — вывод сигнала STEP;
  • pinDir — вывод сигнала DIR;
  • pinEn — вывод сигнала ENABLE.

StepDirDriver myMotor1(10, 11, 12); // создаем объект StepDirDriver, задаем выводы для сигналов STEP, DIR, ENABLE

Описание методов библиотеки StepDirDriver.

void control()

Необходимо вызывать метод регулярно в параллельном процессе (прерывании по таймеру). В нем вырабатываются управляющие сигналы, определяющие коммутацию фаз. Частота вызова функции control() вместе с делителем, задаваемым функцией setDivider, определяет скорость вращения двигателя.

// обработчик прерывания 200 мкс
void timerInt () <
myMotor1.control(); // управление двигателем
>

void step(int steps)

Метод инициирует поворот двигателя на заданное число шагов. В микро шаговых режимах речь идет не о физических шагах двигателя, а о микро шагах. Параметр steps с положительным значением инициирует поворот против часовой стрелки, с отрицательным значением – по часовой стрелке.

Запустив вращение функцией step()

myMotor1.step(300); // сделать 300 шагов против часовой стрелки

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

myMotor1.step(0); // остановить привод

Ничего не мешает задать новое число шагов, не дожидаясь остановки двигателя. Для непрерывного вращения можно периодически вызывать функцию step() с большим числом шагов.

myMotor1.step(30000); // постоянное вращение

О том, что двигатель остановился можно узнать с помощью метода readSteps().

void setMode(byte stepMode, boolean fixStop)

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

  • Если fixStop = true, то при остановке на обмотки двигателя подается ток удержания, положение ротора зафиксировано.
  • При fixStop = false, напряжение с обмоток двигателя при остановке снимается.

Аргумент stepMode игнорируется. Он добавлен для совместимости с такой же функцией библиотеки StepMotor.

myMotor1.setMode(0, true); // фиксация ротора при остановке
myMotor1.setMode(0, false); // двигатель полностью отключен

void setDivider(int divider)

Функция задает коэффициент деления частоты вызова метода control(), а значит, определяет скорость вращения двигателя. Скорость вращения можно вычислить по следующей формуле:

Rpm = 60 000 / ( divider * Tcontrol * Nдвигателя ) / Nмикрошагов

  • Rpm – скорость вращения в оборотах в минуту;
  • Tcontrol – период вызова метода control() в мс;
  • Nдвигателя – число шагов двигателя на полный оборот;
  • Nмикрошагов – число микро шагов двигателя на одну фазу.

Для шагового режима Nмикрошагов = 1, для полу шагового Nмикрошагов = 2 и т.д.

myMotor1.setDivider(5); // делитель частоты 5

int readSteps()

Метод считывает количество шагов, оставшихся до остановки двигателя. Возврат 0 означает, что двигатель остановлен.

if (myMoto1r.readSteps() == 0) <
// двигатель остановлен
>

Примеры использования библиотеки StepDirDriver.

Использование новой библиотеки ничем не отличается от применения функций библиотеки StepMotor из предыдущих уроков.

Всего два отличия:

  • Подключение библиотеки #include вместо #include .
  • Другой формат конструктора StepDirDriver myMotor(10, 11, 12); вместо StepMotor myMotor(10, 11, 12, 13) .

В программе меняются всего 2 строки.

Можете загрузить и проверить скетч программы

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

, которая заставляет сделать двигатель 2 оборота по часовой стрелке со скоростью 1 оборот в секунду, затем пауза 1 секунда, 2 оборота против часовой стрелки, опять пауза на секунду и так в цикле. Он похож на примеры из предыдущих уроков для библиотеки StepMotor. Не забудьте установить библиотеку StepDirDriver:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Проверка драйвера шагового двигателя с AT командами.

Я заменил две строчки программы драйвера с управлением от компьютера из Урока31 и получилось новое устройство для работы с шаговым двигателем. Загрузить новый драйвер с управлением по протоколу AT команд можно по этой ссылке:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Собрал систему по схеме в начале урока и проверил в самых разных режимах. Не буду описывать все подробно. Остановлюсь на микро шаговом режиме.

Задал микро шаговый режим с 16 микро шагами. У меня двигатель имеет 400 физических шагов. В микро шаговом режиме получился двигатель, имеющий целых 6400 шагов на оборот! Попробовал управлять программой верхнего уровня StepMotor (урок 31).

Читайте также:  Форум Toyota Land Cruiser 200 - страница 14

Все работает. Точность установки просто невероятная.

Проверил и работу следящего электропривода из урока 32.

Разрешающая способность положения ротора почти 0,05 °!

Другие варианты библиотеки StepDirDriver.

Библиотека StepDirDriver вырабатывает сигналы управления с высокими активными уровнями. Если STEP/DIR драйвер подключить к плате Ардуино непосредственно, без оптронов, то необходимы управляющие сигналы с низкими активными уровнями. Я сделал такой вариант библиотеки.

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Есть еще один вариант библиотеки с типом данных long для свойства step.

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Наверное, в последних двух уроках я убедительно показал преимущества STEP/DIR драйверов. Но какой драйвер применять в конкретном случае решать разработчику. Что важнее низкая цена простого драйвера из ключей или функциональность STEP/DIR драйвера.

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

Надо выбирать оптимальный вариант. В каких-то случаях без STEP/DIR драйвера не обойтись, в других проектах вполне удачно будут работать простые драйверы.

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 31. Драйвер шагового двигателя на Ардуино с управлением от компьютера. Протокол обмена данными с использованием AT команд.

В уроке разработаем драйвер шагового двигателя с управлением от компьютера. Я расскажу о текстовом протоколе обмена данными с использованием AT команд. Научимся управлять двигателем через монитор последовательного порта Arduino IDE и с помощью программы верхнего уровня StepMotor.

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

Функциональные возможности устройства определяются библиотекой StepMotor из урока 29.

Аппаратная часть драйвера.

Для подключения униполярного двигателя к плате Ардуино я использовал схему из Урока 28.

Но можно применить любую другую схему для униполярного или биполярного шаговых двигателей.

Я подключил достаточно мощный двигатель FL57STH76-1006. У него 400 шагов на полный оборот, ток фазы 1 А.

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

Обмен данными между платой Ардуино и компьютером.

Разработка программной части драйвера сводится к получению данных от компьютера и вызове функций библиотеки StepMotor из Урока 29. Работу с библиотекой StepMotor мы подробно разбирали в этом уроке. А вот полноценным обменом данными с компьютером мы еще не занимались.

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

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

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

Но у текстовых протоколов есть свое преимущество, благодаря которому они применяются чаще, чем числовые. Это возможность контроля, отладки их стандартными средствами – текстовыми терминалами. Когда мы отлаживали программы на Ардуино с помощью последовательного порта, мы посылали данные на компьютер в текстовом формате. Запускали монитор последовательного порта и видели на экране компьютера напряжение, или температуру, или какое-нибудь другое данное в понятном нам виде. Но ведь мы могли послать данные в двоичном коде командой Serial.write(byte). Данных было бы значительно меньше, но для их расшифровки пришлось бы использовать специальную программу, которая понимает, что это за данные и как их интерпретировать.

Лично я сторонник числовых протоколов, особенно на устройствах с ограниченными ресурсами. Но для разработки драйвера я выбрал текстовый протокол из-за его универсальности, простоты демонстрации и отладки.

Текстовый протокол обмена через AT команды.

AT команды это простой текстовый протокол обмена данными, в котором каждая команда начинается символами “AT”. Далее следуют параметры и коды также в текстовом виде.

Последовательность символов “AT” происходит от английского “Attention” (внимание) и означает, что пришла новая команда. Стандартным ответом AT протокола является последовательность “OK” (все нормально).

AT команды широко используются для обмена данными с модемами, в том числе и с модулями GSM, с модулями WiFi, GPS и многими другими устройствами. Мы вернемся к AT командам в уроках о беспроводных технологиях связи.

AT команды драйвера шагового двигателя.

Разработаем наш протокол обмена.

Какие команды нам нужны? Если мы используем библиотеку StepMotor, то нам нужны команды для каждой функции библиотеки:

  • инициировать вращение на заданное количество шагов;
  • задать режимы коммутации и остановки двигателя;
  • задать скорость вращения;
  • считать число оставшихся шагов;
  • проверить связь.

К командам соответствующим методам библиотеки добавлена команда проверки обмена. Надо иметь возможность узнать, включен ли драйвер.

Общий формат команды выглядит так:

  • Каждая команда должна начинаться с ”AT”.
  • Далее следует последовательность символов – кодов, чисел, параметров.
  • Заканчивать команду принято управляющими символами ”
    ” (возврат каретки, код 13) и ”
    ” (перевод строки, код 10). Об этих символах написано в предыдущем уроке. Монитор последовательного порта автоматически добавляет ”
    ” к любым данным. Т.е. когда Вы набираете в мониторе ”AT” и нажимаете клавишу “Enter”, то монитор передает 4 символа ”AT
    ”.
  • В ответе используется последовательность ”OK
    ”. Благодаря управляющим символам каждый ответ в окне монитора последовательного порта будет печататься с новой строки.
Читайте также:  Компрессор из компрессора зил

Используя эти правила, я выбрал для драйвера следующие форматы AT команд.

  • 0 – шаговый режим;
  • 1 – полу шаговый режим;
  • 2 – между шаговый режим.
  • 0 – без фиксации двигателя при остановке;
  • 1 – фиксация ротора остановленного двигателя.

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

Еще в протоколе отсутствует защита целостности данных контрольными кодами. Но AT команды, как правило, используются для устройств, расположенных вблизи друг от друга и в контрольных кодах нет необходимости. К тому же наличие контрольных сумм сведет на нет главное достоинство текстового протокола – возможность управления с любого текстового терминала. Не будете же Вы рассчитывать контрольные коды вручную.

Реализация резидентной программы драйвера.

Программу можете загрузить по этой ссылке:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Должны быть установлены библиотеки TimerOne.h и StepMotor.h. Обе библиотеки есть в Уроке 29. Как установить написано в Уроке 9.

О работе с библиотекой StepMotor я подробно писал в уроке 29. Остается пояснить блок обмена данными с компьютером.

В цикле loop() расположен программный блок выделения команды.

// обмен с компьютером
letterNum= Serial.available(); // чтение числа принятых символов

if ( letterNum == 0 ) <
// данных нет
timeOutCount= 0;
>
else <
// есть данные
if ( letterNum != prevDataNum ) timeOutCount= 0; // новое данное
prevDataNum= letterNum; // перегрузка числа принятых символов
>

if ( timeOutCount > TIME_OUT ) <
// пауза между данными больше тайм-аута

// команда принята, расшифровка

Блок работает по следующему алгоритму:

  • Определяет, поступило ли в порт новое данное.
  • Если данное пришло, то сбрасывает счетчик времени timeOutCount.
  • Если счетчик времени timeOutCount превысил значение TIME_OUT, т.е. данные перестали поступать, то определяет, что команда принята и переходит к расшифровке команды.

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

Обратите внимание, что программа драйвера не подвешивает программу. В цикле loop() можно еще выполнять другие задачи параллельно.

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

Проверка работы драйвера.

Загружаем скетч в плату, запускаем монитор последовательного порта Arduino IDE. Проверяем команды. Я указываю параметры для моего двигателя (400 шагов на оборот).

Отправляем Получаем Действие
AT OK Проверка обмена
ATD=20 OK Устанавливаем скорость
ATS=400 OK Сделать оборот против часовой стрелки
ATS=-400 OK Сделать оборот по часовой стрелке
ATS=1 OK Сделать шаг против часовой стрелки
ATS=-1 OK Сделать шаг по часовой стрелки
ATM=1,0 OK Установить полу шаговый режим
ATS=800 OK Сделать оборот против часовой стрелки
ATS=-800 OK Сделать оборот против часовой стрелки
ATS=30000 OK Вращение против часовой срелки
ATR? 3772OK Чтение оставшихся шагов
ATR? 3410OK Чтение оставшихся шагов
ATR? 3052OK Чтение оставшихся шагов
ATS=0 OK Остановка

Как видите, управлять двигателем можно с помощью стандартной программы – монитора последовательного порта. Существует много подобных мониторов, терминалов, с помощью которых можно подавать команды. Только надо установить скорость 9600 и режим добавления в конце команды управляющих символов “возврат каретки”, “перевод строки”. В мониторе последовательного порта режим выбирается справа в низу окна и называется ”NL & CR”.

Программа верхнего уровня StepMotor для управления шаговым двигателем.

Я написал простенькую программу для управления от компьютера шаговым двигателем через драйвер на плате Ардуино. Программа поддерживает все доступные режимы.

Загрузить программу можно по этой ссылке:

Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Подключение, первый запуск, выбор порта происходит так же, как в программе Thermometer из Урока 24. Скажу только, что для начала удобнее использовать виртуальный порт, который формирует драйвер платы Ардуино при подключении платы к компьютеру. Запускать Arduino IDE необязательно. При первом включении в программе StepMotor необходимо выбрать номер порта. Программа запомнит его и будет использовать при последующих запусках.

Основное окно программы выглядит так.

Панель ”Шаги” позволяет инициировать вращение двигателя на заданное число шагов. Шаги задаются ползунком или в редактируемом окошке и отсылаются в драйвер кнопкой ”—>” справа от панели.

С помощью панели ”Скорость” задается значение делителя коммутации шагов, а значит и скорость вращения. Загружается в драйвер кнопкой ”—>” справа от панели.

Панель ”Режим” позволяет задать режим коммутации фаз и выбрать режим остановки двигателя.

Надо помнить, что параметры, заданные в этих трех панелях посылаются в драйвер при нажатии кнопок ”—>” справа от соответствующих панелей.

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

В панели ”Драйвер” :

  • Отображается число оставшихся шагов. Этот параметр постоянно, в цикле считывается из драйвера.
  • Кнопка ”Стоп” останавливает двигатель в любом режиме.
  • Кнопка ” >” запускает двигатель в режиме непрерывного вращения по часовой стрелке.
  • Кнопка ”+1 шаг” заставляет двигатель сделать один шаг против часовой стрелки.
  • Кнопка ”-1 шаг” заставляет двигатель сделать один шаг по часовой стрелке.
  • Светодиод “Обмен” индицирует состояние связи. Красный цвет означает ошибку, зеленый – нормальную работу.

Программа позволяет легко проверить работу драйвера во всех режимах. Но главная цель – показать принцип управления контроллером Ардуино от компьютера по протоколу AT команд. Мы будем использовать эту программу в последующих уроках о подключении к Ардуино биполярного двигателя и драйвера на основе модуля TB6560-V2.

В следующем уроке попробую сделать на основе этого драйвера шагового двигателя следящую систему без обратной связи.

Ссылка на основную публикацию
Удаление сажевого фильтра Renault рено
Renault Grand Scenic 1 Специалисты RAM tuning произвели работы по программному отключению сажевого фильтра и клапана ЕГР турбо-дизельного двигателя Renault...
Тюнинг ГАЗ 3102 своими руками — особенности модернизации салона, кузова и двигателя волги
Тюнинг ГАЗ 3102 своими руками - особенности модернизации салона, кузова и двигателя волги Выполняя тюнинг ГАЗ 3102, водители стремятся улучшить...
Тюнинг ГАЗ-21 своими руками кузова, салона, двигателя
GAZ-21 Concept Построив в 2007 году на базе малолитражной Тойота Сера свою трумфальную самоделку «Yellow Submarine», самодеятельный автостроитель из Иркутска...
Удаленный доступ к настройкам роутера ASUS
5 Лучших бесплатных DDNS сервиса; Записи обо всём Во-первых, что такое динамический DNS? Динамический DNS (DDNS или DynDNS) — это...
Adblock detector