Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лекция 52 Ардуино и шаговые двигателиСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Цели лекции: 1. Изучение основ управления шаговым двигателем. 2. Знакомство с функцией Stepper() Arduino-библиотеки Stepper. 3. Знакомство с функцией SetSpeed(rpm) Arduino-библиотеки Stepper. 4. Знакомство с функцией Step (steps) Arduino-библиотеки Stepper. 5. Знакомство с Arduino-библиотекой AccelStepper.
Шаговые двигатели представляют собой электромеханические устройства, задачей которых является преобразование электрических импульсов в перемещение вала двигателя на определенный угол. Такие двигатели имеют существенные отличия от обычных, что и определяет их исключительные свойства при использовании в некоторых областях применения. Шаговый двигатель (ШД) является бесколлекторным двигателем постоянного тока. Как и другие бесколлекторные двигатели, ШД высоконадежен и при надлежащей эксплуатации имеет длительный срок службы. ШД нашли широкое применение в области, где требуется высокая точность перемещений или скорости. Наглядными примерами устройств с ШД могут служить принтеры, факсы и копировальные машины, а также более сложные устройства: станки с ЧПУ (числовым программным управлением), фрезерные, гравировальные машины и т. д. Достоинствами шаговых двигателей по сравнению с простыми являются: - угол поворота ротора ШД зависит от числа поданных на двигатель пусковых импульсов; - максимальный момент на валу ШД развивается в режиме останова (в случае, если обмотки двигателя запитаны); - высокая точность позиционирования и повторяемости — качественные ШД имеют точность не хуже 2,5 % от величины шага, при этом данная ошибка не накапливается при последующих шагах; - ШД может быстро стартовать, останавливаться и выполнять реверс; - высокая надежность двигателя обусловлена отсутствием щеток, при этом срок службы двигателя ограничивается только лишь сроком службы подшипников; - четкая взаимосвязь угла поворота ротора от количества входных импульсов (в штатных режимах работы) позволяет выполнять позиционирование без применения обратной связи; - ШД обеспечивает получение сверхнизких скоростей вращения вала для нагрузки, подведенной непосредственно к валу двигателя, без использования редуктора; - работают ШД в широком диапазоне скоростей, поскольку скорость напрямую зависит от количества входных импульсов. Недостатки шаговых двигателей: - ШД обладает явлением резонанса; - возможен вариант выпадения двигателя из синхронизации с последующей потерей информации о положении при работе цепи обратной связи; - при стандартных схемах подключения количество потребляемой энергии не уменьшается при отсутствии нагрузки; - сложность управления при работе на высоких скоростях (на самом деле эффективная работа шагового двигателя на высоких скоростях возможна); - низкая удельная мощность шагового привода; - для обеспечения эффективного управления шаговым двигателем требуется очень сложная схема управления.
Управление шаговым двигателем В самом общем виде управление шаговым двигателем сводится к задаче отработать определенное число шагов в нужном направлении и с нужной скоростью.
Рисунок 52.1 - Схема управления шагового двигателя
На блок управления ШД (драйвер) подаются сигналы "сделать шаг" и "задать направление". Сигналы представляют собой импульсы 5 В. Такие импульсы можно получить от микроконтроллера Arduino. Для шагового двигателя необходимо отдельное питание — выводы шагового двигателя напрямую к выводам Arduino подключать нельзя. Подключение ШД осуществляется через Motor Shild либо с помощью микросхемы драйвера двигателей — например, L293. Схема подключения представлена на рис. 22.1.
Arduino-библиотека Stepper Для управления шаговым двигателем в Arduino имеется стандартная библиотека Stepper. Набор функций у нее следующий: Stepper(); setSpeed(); step().
Функция Stepper() Функция Stepper () создает новый объект класса Stepper, привязанный к одному шаговому двигателю, подключенному к контроллеру Arduino. Конструктор следует использовать при объявлении переменной класса Stepper, обычно в самом начале — вне setup () и loop (). Количество параметров зависит от способа подключения — 2 или 4 выхода используются для управления двигателем. Синтаксис: Stepper(steps, pinl, pin2) Stepper(steps, pinl, pin2, pin3, pin4) Параметры: - steps — количество шагов в полном обороте используемого двигателя. Если в документации к двигателю указан угол одного шага, то следует разделить 360° на этот угол, что даст нам искомое количество шагов; - pinl, pin2, pin3, pin4 — выходы Arduino для подключения шагового двигателя. Возвращаемое значение: новый экземпляр объекта класса Stepper.
Функция setSpeed(rpm) Функция setSpeed (rpm) устанавливает скорость вращения в оборотах в минуту. Эта функция не заставляет двигатель вращаться, а лишь устанавливает скорость вращения, которая будет использована при вызове функции step (). Синтаксис: Stepper.setSpeed(rpm) Параметр: rpm — скорость, на которой будет производиться вращение шагового двигателя, выражается в оборотах в минуту. Возвращаемого значения нет. Функция step(steps) Функция step (steps) вращает шаговый двигатель на определенное количество шагов на скорости, заданной функцией setSpeed(). Эта функция блокирующая, т. е. она ожидает окончания вращения двигателя, прежде чем передать управление в следующую строку кода. Во избежание длительной блокировки выполнения кода скетча, управление необходимо организовывать так, чтобы скорость была высокая, а за один вызов step () делалось всего несколько шагов. Синтаксис: Stepper.step(steps) Параметр: steps — количество шагов: положительное число — вызывает вращение в одну сторону; отрицательное — в противоположную. Возвращаемого значения нет.
Пример использования библиотеки Stepper Поворот шагового двигателя при нажатии кнопок "влево" и "вправо" на определенный угол, что можно представить как программную заготовку для поворота панорамной камеры в одной плоскости. В примере использованы шаговый двигатель и аналоговая клавиатура Электрическая схема устройства представлена на рисунке 52.2. Пример кода: #include <Stepper.h> const int stepsPerRevolution=200; // количество шагов в полном обороте двигателя Stepper myStepper(stepsPerRevolution,8,9,10,11); int minangle=15; // угол поворота на 1 нажатие (шаг камеры) struct KEYS // структура для хранения статусов клавиш { int button; // нажатая кнопка long millisbutton[7]; // millis для button }; void setup () {;} void loop() { int valbutton; // опрос клавиатуры valbutton=analogRead(A0); if(valbutton<1000) {buttonClick2(buttonClick1(valbutton));} } // обработка нажатия кнопки int buttonClick1(int val) { if(val>650) {KEYS1.button=1;return 1; if(val>600) {KEYS1.button=2;return 2; if(val>530) {KEYS1.button=3;return 3; if(val>450) {KEYS1.button=4;return 4; if(val>300) {KEYS1.button=5;return 5; if(val>200) {KEYS1.button=6;return 6; return 0; } void buttonClick2(int val) { if(millis()-KEYS1.millisbutton[val]<100) // проверка на дребезг return; KEYS1.millisbutton[val]=millis(); KEYS1.button=val; switch(val) { case 1: // left myStepper.step(stepsPerRevolution*minangle/360*(-1)); break; case 2: // up break; case 3: // down break; case 4: // right myStepper.step(stepsPerRevolution*minangle/360); break; case 5: // white break; case 6: // red // код на нажатие кнопки камеры break; default: break; } }
Рисунок 52.2 - Схема подключения для панорамной головки
|
||||
Последнее изменение этой страницы: 2021-02-07; просмотров: 468; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.136.19.136 (0.006 с.) |