Введение

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

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

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

Постановка задачи

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

·Выполнить анализ типов приводов мобильных платформ

·Выполнить анализ подходов к стабилизации скорости

·Разработать алгоритм стабилизации скорости мобильной платформы Rover 5 с дифференциальным приводом.

·Систему управления реализовать на основе микроконтроллера Arduino.

·Протестировать данную систему

1. Анализ типов приводов мобильных платформ

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

Дифференциальный привод: мобильная платформа с таким типом привода (Рис. 1.1) имеет два активных колеса. Разница между скоростями колес определяет угол поворота. Это наиболее часто используемая кинематическая модель [5].

Рис. 1.1 Схема дифференциального привода

Синхронный привод: в мобильной платформе с данным типом привода (Рис. 1.2) все колеса приводятся в движение с одинаковой скоростью. Также все колеса вращаются одновременно и всегда параллельны друг другу [5].

Рис. 1.2 Схема синхронного привода

Трицикл: мобильная платформа с таким приводом (Рис. 1.3) имеет два мотора: один для движения, другой для рулежки. Только переднее колесо может поворачивать. Задние колеса приводят в движение робота [5].

Рис. 1.3 Схема привода трицикла

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

Всенаправленный привод: мобильная платформа с таким (Рис. 1.4) приводом может двигаться во всех направлениях от начальной точки. Такие роботы имеют специальные колеса, которые позволяют им добиться этого [5].

Рис. 1.4 Схема всенаправленного привода

Колесная конфигурация мобильного робота определяет характер его передвижения. При выборе определенного типа привода для робота необходимо учитывать следующие моменты:

·скорость или ускорение движения;

·точность позиционирования (повторяемость);

·гибкость и робастность (надежность) при различных условиях;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

·эффективность (низкое энергопотребление).

2. Мобильная платформа с дифференциальным приводом

5 Chassis

Rover 5 Chassis (Рис. 2.1) — это роботизированное шасси с гусеницами, созданное специально для студентов или любителей. В отличие от обычных гусеничных шасси дорожный просвет может быть настроен путем поворота редукторов с шагом в 5 градусов. «Растягивающиеся» резиновые протекторы сохраняют натяжение с увеличением дорожного просвета.

Рис. 2.1 Гусеничная платформа Rover 5

Характеристики встроенных энкодеров, которые изображены на рисунке 2.2: 1000 импульсов на 3 оборота выходного вала (333,33 импульса за оборот).

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Характеристики платформы:

·Длина: 235мм

·Ширина: 220мм

·Высота: 90мм

·Вольтаж двигателя рабочий: 7.2V

·Стартовый ток двигателя: 2.5A

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

·Усилие редуктора: 10кг/см

·Передаточное число: 86.8:1

·Скорость: 1км/ч [4]

Рис. 2.2 Встроенный энкодер

На рисунке 2.3 изображен чертеж мобильной платформы Rover 5, на котором указаны его размеры.

Рис. 2.3 Чертёж Rover 5

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

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

.1 Обзор подходов к стабилизации скорости

Пропорциональная стабилизация скорости:

Равномерное изменение скорости при её регулировании

При отклонении скорости от заданной происходит увеличение (или уменьшение) скорости на определённое заданное число (коэффициент k).

При этом скорость изменяется линейно. При достижении заданного уровня скорости происходят автоколебания (Рис. 3.1).

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Рис. 3.1 Графики пропорциональной стабилизации скорости

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

Данная стабилизация удобна при малых отклонениях, при больших отклонениях происходит долгая регулировка, как это видно на рисунке 3.2. При этом необходимо подбирать оптимальный коэффициент k.

Рис.3.2 График использования пропорциональной стабилизации

Стабилизация скорости по отклонению от заданного значения:

Скорость регулировки зависит от степени отклонения.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

При большом отклонени скорость нарастает быстро, при малом — медленно.

При этом скорость изменяется нелинейно (Рис. 3.3).

Рис. 3.3 Графики стабилизации скорости по отклонению

Данная стабилизация работает аналогично дифференциальной стабилизации. Скорость регулировки зависит от коэффициента k, чем он больше тем выше скорость, при больших значениях k будет возникать перерегулирование. Стабилизация скорости по отклонению быстрее пропорциональной, при этом отсутствуют автоколебания (Рис. 3.4).

Рис.3.4 График использования стабилизации скорости по отклонению

ПИД-регулирование:

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Стабилизация состоит из трех составляющих — Пропорциональной, Интегральной и Дифференциальной (ПИД). Формула ПИД-регулятора:

 

где P — пропорциональная составляющая; I — интегральная составляющая; D — дифференциальная составляющая; e(t) — текущая ошибка; Kp — пропорциональный коэффициент; Ki — интегральный коэффициент; Kd — дифференциальный коэффициент [3].

В программной реализации переходят к дискретной форме:

u(t) = P (t) + I (t) + D (t);(t) = Kp * e (t);(t) = I (t — 1) + Ki * e (t);(t) = Kd * {e (t) — e (t — 1)}.

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

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

В зависимости от выбранных коэффициентов стабилизация скорости ПИД-регулированием будет преобретать различный характер (Рис. 3.5)

Рис. 3.5 Графики стабилизации скорости ПИД-регулированием

3.2 Программно-аппаратная реализация

Система стабилизация скорости мобильной платформы Rover 5 реализована на микроконтроллере Arduino Mega (Рис. 3.6). Для управления двигателями использован Motor Driver (Рис. 3.7).

Рис. 3.6 Arduino Mega 2560

МикроконтроллерATmega2560Рабочее напряжение5ВВходное напряжение (рекомендуемое)7-12ВВходное напряжение (предельное)6-20ВЦифровые Входы/Выходы54 (14 из которых могут работать также как выходы ШИМ)Аналоговые входы16Постоянный ток через вход/выход 40 mAПостоянный ток для вывода 3.3 В50 mAФлеш-память256 KB (из которых 8 КB используются для загрузчика)ОЗУ8 KBЭнергонезависимая память4 KBТактовая частота16 MHz

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

Рис. 3.7 Motor Driver

Таблица 2. Характеристики Motor Driver [2]

Напряжение питания логики5ВМаксимальное напряжение питания двигателей12ВМаксимальный ток питания двигателей4,5А

Двигатели Rover 5 питаются от батареи напряжением 11,5В и подключены к плате Motor Driver к которой также подключены оба энкодера (Рис. 3.8).

На энкодерах: 1 — Vcc; 2 и 3 — выходы сигналов A и B; 4 — Gnd.

Рис. 3.8 Схема подключения Arduino Mega и Motor Driver

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Платы Arduino Mega и Motor Driver крепятся сверху мобильной платформы Rover 5 (Рис. 3.9).

Рис. 3.9 Rover 5 с подключенной электроникой

При программировании Arduino будут проверены 2 метода стабилизации скорости: пропорциональный и стабилизации по отклонению._1 — итоговое число импульсов за период с 1-го энкодера_2 — итоговое число импульсов за период с 2-го энкодера- число импульсов с энкодера для установления нужной скорости- коэф. изменения ШИМ- уровень ШИМ 1-го двигателя- уровень ШИМ 2-го двигателя- максимально допустимое число ШИМ

Алгоритм пропорциональной стабилизации скорости:

//определение ШИМ для 1-го двигателя

if (spe_1<enk) shim1 = shim1+a;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

if (spe_1>enk) shim1 = shim1-a;

if (shim1>P) {shim1 = P;} //ограничение ШИМ(shim1<0) {shim1 = 0;}

//определение ШИМ для 2-го двигателя

if (spe_2<enk) shim2 = shim2+a;(spe_2>enk) shim2 = shim2-a;

if (shim2>P) {shim2 = P;} //ограничение ШИМ(shim2<0) {shim2 = 0;}

Алгоритм стабилизации скорости по отклонению:

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

//определение ШИМ для 1-го двигателя(spe_1<enk) //если число импульсов с 1-го энкодера < заданного

{= enk-spe_1; K = K/enk*a;

shim1 = round(shim1+K); //увеличение ШИМ для 1-го двигателя

}(spe_1>enk) //если число импульсов с 1-го энкодера > заданного

{= spe_1-enk; K = K/spe_1*a;

shim1 = round(shim1-K); //уменьшение ШИМ для 1-го двигателя

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

}(shim1>P) shim1 = P; //ограничение ШИМ(shim1<0) shim1 = 0;

//определение ШИМ для 2-го двигателя(spe_2<enk) //если число импульсов с 2-го энкодера < заданного

{= enk-spe_2; K = K/enk*a;

shim2 = round(shim2+K); //увеличение ШИМ для 2-го двигателя

}(spe_2>enk) //если число импульсов с 2-го энкодера > заданного

{= spe_2-enk; K = K/spe_2*a;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

shim2 = round(shim2-K); //уменьшение ШИМ для 2-го двигателя

}(shim2>P) shim2 = P; //ограничение ШИМ(shim2<0) shim2 = 0;

4. Результаты тестирования системы

Информация о данных с энкодеров и уровня ШИМ выводилась в COM порт. По этим данным строились графики, на которых указаны: заданная скорость, скорость 1го двигателя, скорость 2го двигателя (измеряются числом импульсов с энкодера за период Т) и уровень мощностей 1го и 2го двигателя (определялся по ШИМ).

Тестирование пропорциональной стабилизации скорости:

Тестирования проводились с разными коэффициентами изменения скорости: низким k=2 и высоким k=5, период измерения импульсов с энкодеров Т=50мс (Рис. 4.1).

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Рис. 4.1 Графики пропорциональной стабилизации скорости

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

Тестирование стабилизации скорости по отклонению:

Тестирования проводились с разными коэффициентом изменения скорости: высоким k=50 и низким k=5, период измерения импульсов с энкодеров Т=100мс (Рис. 4.2).

Рис. 4.2 Графики стабилизации скорости по отклонению

Как видно коэффициент изменения скорости влияет на скорость стабилизации, при этом видно, что скорость изменяется нелинейно. Отклонения скорости являются небольшими (всего на 1 импульс от заданной), но они быстро убираются. Это указывает на высокое быстродействие стабилизации.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Таблица 3. Сравнение ошибок стабилизации

Тип стабилизацииЗначения коэф. kСКОпропорциональная22,229451,7174по отклонению501,537751,5912

Заключение

В ходе выполнения данного курсового проекта были выполнены следующие задачи:

·Анализ типов приводов мобильных платформ;

·Анализ подходов к стабилизации скорости;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

·Разработка алгоритмов стабилизации скорости;

·Реализация системы управления;

·Тестирование системы.

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

Так же были получены новые знания и навыки для работы с мобильной платформой Rover 5, разработки алгоритмов стабилизации и программировании Arduino.

Приложение

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Код программы пропорциональной стабилизации скорости

#include dirPin1 = 9; //пин направления 1-го двигателяpvmPin1 = 10; //пин шим-а 1-го двигателяdirPin2 = 7; //пин направления 2-го двигателяpvmPin2 = 6; //пин шим-а 2-го двигателяencoderPinA = 2; //пин считывающий сигналы энкодера 1 (они вызывают прерывание)encoderPinB = 3; //пин считывающий сигналы энкодера 2 (они вызывают прерывание)time_1; //счетчик прерываний(каждый импульс с энкодера вызывает прерывание) 1-го энкодераspe_1; //итоговое число импульсов за период с 1-го энкодераtime_2; //счетчик прерываний(каждый импульс с энкодера вызывает прерывание) 2-го энкодераspe_2; //итоговое число импульсов за период со 2-го энкодера

SimpleTimer timer; //конструктор (см библиотеку SimpleTimer)

String S = «»; //строка считанного числа скоростиU = 0; //заданная скорость в процентах (U = от 0% до 100%)MaxEnk = 10; //значение энкодера при U = 100%a = 2; //число изменения ШИМP = 200; //максимально допустимое число ШИМT = 50; //период подсчитывания числа импульсов с энкодеровshim1 = 0; //уровень ШИМ 1-го двигателяshim2 = 0; //уровень ШИМ 2-го двигателяenk = 0; //число импульсов с энкодера для установления нужной скоростиsetup()

{ .begin(9600); //скорость обмена данными с COM портом(pvmPin1, OUTPUT); //настройка портов на прием или передачу данных

pinMode(dirPin1, OUTPUT);(pvmPin2, OUTPUT);(dirPin2, OUTPUT);(encoderPinA,INPUT);(encoderPinB,INPUT);(0, encoder_1, RISING); //настройка прерывания 0-номер прерывания, которому соответствует порт 2 encoder_1 процедура вызываемая прерыванием.

attachInterrupt(1, encoder_2, RISING); //RISING — режим прерывания означающий что прервание возникнет при переходе от низкого уровня сигнала к высокому.setInterval(T, timer_1); //настройка таймера: после T мс запускать процедуру timer_1(dirPin1,LOW); //направление 1-го двигателя(dirPin2,LOW); //направление 2-го двигателя

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

}loop()

{.run(); //запуск таймера(Serial.available() > 0) //если в буфере есть символы

{inChar = Serial.read(); //считать символ

if (isDigit(inChar)) //если символ является цифрой

{+= (char)inChar; //прибавить символ к строке

}(inChar == ‘!’) //символ окончания строки

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

{= S.toInt(); //перевод string в integer

S = «»; //очистка строки

}

//ограничения в заданной скорости(U>100) U = 100;(U<0) U = 0;

//алгоритм стабилизации скорости= round((MaxEnk/100)*U); //необходимое число импульсов на энкодере для установления нужной скорости(enk == 0) //если число импульсов равно 0

{ //ШИМ равен 0= 0;= 0;

}

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

{

//определение ШИМ для 1-го двигателя(spe_1<enk) shim1 = shim1+a;

if (spe_1>enk) shim1 = shim1-a;

if (shim1>P) {shim1 = P;} //ограничение ШИМ(shim1<0) {shim1 = 0;}

//определение ШИМ для 2-го двигателя

if (spe_2<enk) shim2 = shim2+a;(spe_2>enk) shim2 = shim2-a;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

if (shim2>P) {shim2 = P;} //ограничение ШИМ(shim2<0) {shim2 = 0;}

}

//установление уровней ШИМ для двигателей

analogWrite(pvmPin1, shim1);(pvmPin2, shim2);

}

void encoder_1()

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

{_1+=1; //счетчик прерываний (числа импульсов с 1-го энкодера)

}encoder_2()

{_2+=1; //счетчик прерываний (числа импульсов с 2-го энкодера)

}timer_1() //подпрограмма, запускаемая каждые T мс

{_1 = time_1; //число импульсов с 1-го энкодера _1 = 0; //обнуление счетчика прерываний_2 = time_2; //число импульсов с 2-го энкодера_2 = 0; //обнуление счетчика прерываний

//вывод данных.print(U); //вывод заданной скорости %.print(» «);.print(enk); //вывод расчётного числа импульсов с энкодера для установления нужной скорости.print(» «);.print(spe_1); //вывод числа импульсов с 1-го энкодера.print(» «);.print(spe_2); //вывод числа импульсов с 2-го энкодера.print(» «);.print(shim1); //вывод уровня ШИМ для 1-го двигателя.print(» «);.println(shim2); //вывод уровня ШИМ для 2-го двигателя

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

}

Код программы стабилизации скорости по отклонению

#include dirPin1 = 9; //пин направления 1-го двигателяpvmPin1 = 10; //пин шим-а 1-го двигателяdirPin2 = 7; //пин направления 2-го двигателяpvmPin2 = 6; //пин шим-а 2-го двигателяencoderPinA = 2; //пин считывающий сигналы энкодера 1 (они вызывают прерывание)encoderPinB = 3; //пин считывающий сигналы энкодера 2 (они вызывают прерывание)time_1; //счетчик прерываний(каждый импульс с энкодера вызывает прерывание) 1-го энкодераspe_1; //итоговое число импульсов за период с 1-го энкодераtime_2; //счетчик прерываний(каждый импульс с энкодера вызывает прерывание) 2-го энкодераspe_2; //итоговое число импульсов за период со 2-го энкодера

SimpleTimer timer; //конструктор (см библиотеку SimpleTimer)

String S = «»; //строка считанного числа скоростиU = 0; //заданная скорость в процентах (U = от 0% до 100%)MaxEnk = 8; //значение энкодера при U = 100%a = 50; //коэф. изменения ШИМP = 200; //максимально допустимое число ШИМT = 50; //период подсчитывания числа импульсов с энкодеровK; //вычисляющийся коэф. (К = от 0 до 1)shim1 = 0; //уровень ШИМ 1-го двигателяshim2 = 0; //уровень ШИМ 2-го двигателяenk = 0; //число импульсов с энкодера для установления нужной скоростиsetup()

{ .begin(9600); //скорость обмена данными с COM портом(pvmPin1, OUTPUT); //настройка портов на прием или передачу данных

pinMode(dirPin1, OUTPUT);(pvmPin2, OUTPUT);(dirPin2, OUTPUT);(encoderPinA,INPUT);(encoderPinB,INPUT);(0, encoder_1, RISING); //настройка прерывания 0-номер прерывания, которому соответствует порт 2 encoder_1 процедура вызываемая прерыванием.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

attachInterrupt(1, encoder_2, RISING); //RISING — режим прерывания означающий что прервание возникнет при переходе от низкого уровня сигнала к высокому.setInterval(T, timer_1); //настройка таймера: после T мс запускать процедуру timer_1(dirPin1,LOW); //направление 1-го двигателя(dirPin2,LOW); //направление 2-го двигателя

}loop()

{.run(); //запуск таймера(Serial.available() > 0) //если в буфере есть символы

{inChar = Serial.read(); //считать символ

if (isDigit(inChar)) //если символ является цифрой

{+= (char)inChar; //прибавить символ к строке

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

}(inChar == ‘!’) //символ окончания строки

{= S.toInt(); //перевод string в integer

S = «»; //очистка строки

}

}

//ограничения в заданной скорости

if (U>100) U = 100;(U<0) U = 0;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

}encoder_1()

{_1+=1; //счетчик прерываний (числа импульсов с 1-го энкодера)

}encoder_2()

{_2+=1; //счетчик прерываний (числа импульсов с 2-го энкодера)

}timer_1() //подпрограмма, запускаемая каждые T мс

{_1 = time_1; //число импульсов с 1-го энкодера _1 = 0; //обнуление счетчика прерываний_2 = time_2; //число импульсов с 2-го энкодера_2 = 0; //обнуление счетчика прерываний

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

//алгоритм стабилизации скорости= round((MaxEnk/100)*U); //необходимое число импульсов на энкодере для установления нужной скорости(enk == 0) //если число импульсов равно 0

{ //ШИМ равен 0= 0;= 0;

}

{

//определение ШИМ для 1-го двигателя(spe_1<enk) //если число импульсов с 1-го энкодера меньше заданного

{= enk-spe_1;= K/enk*a;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

shim1 = round(shim1+K); //увеличение ШИМ для 1-го двигателя

}(spe_1>enk) //если число импульсов с 1-го энкодера больше заданного

{= spe_1-enk;= K/spe_1*a;

shim1 = round(shim1-K); //уменьшение ШИМ для 1-го двигателя

}(shim1>P) shim1 = P; //ограничение ШИМ(shim1<0) shim1 = 0;

//определение ШИМ для 2-го двигателя(spe_2<enk) //если число импульсов с 2-го энкодера меньше заданного

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

{= enk-spe_2;= K/enk*a;

shim2 = round(shim2+K); //увеличение ШИМ для 2-го двигателя

}(spe_2>enk) //если число импульсов с 2-го энкодера больше заданного

{= spe_2-enk;= K/spe_2*a;

shim2 = round(shim2-K); //уменьшение ШИМ для 2-го двигателя

}(shim2>P) shim2 = P; //ограничение ШИМ(shim2<0) shim2 = 0;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

}

//установление уровней ШИМ для двигателей

analogWrite(pvmPin1, shim1);(pvmPin2, shim2);

}