Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка киберфизических систем на основе микроконтроллеров. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Контрольные вопросы
71
setAnalogMux(ADC_A4); // выбрать ADC_A0-ADC_A7 /
ADC_SENSOR – термометр / ADC_1V1 / ADC_GND // Без вызова - ADC_A0
ADC_autoTriggerEnable(TIMER1_COMPB); // Включить автозапуск
АЦП и выбрать событие (FREE_RUN, ANALOG_COMP, ADC_INT0, TIM-
ER0_COMPA, TIMER0_OVF, TIMER1_COMPB, TIMER1_OVF)
ADC_startConvert(); // ручной старт преобразования } void loop() {
// Здесь можно выполнять любую полезную работу!
}
// Прерывание B таймера 1
ISR(TIMER1_B) { }
// Прерывание по готовности АЦП
void adcReady() { gio::write(PIN_RED, 1); int rr=ADC_read(); // забираем результат gio::write(PIN_RED, 0); }
По сравнению с примером 3, изменилась только функция обработки
прерывания от АЦП, где применяются другие функции управления PINами. Теперь время занятости процессора всего 374 нс (это около 0,4 %)!
Таким образом, удалось построить весьма скоростной ввод аналогово-
го сигнала (частота дискретизации 10 000 Герц) с возможностью использо­вания процессора для других задач в течении 99,6 % времени.
Контрольные вопросы
1. Какие два класса задач в основном рассматриваются при проектиро-
вании киберфизических систем на основе микроконтроллеров?
2. Почему управление всегда производится на основе наблюдения?
3. Какие внутренние аппаратные периферийные устройства ввода-
вывода активно применяются при решении типовых задач?
4. В чем заключается основной режим работы при программировании
киберфизических систем на микроконтроллерах?
5. Чем отличается программирование киберфизических систем на
микроконтроллерах от линейного программирования или программирова­ния изображений?
2. Проектирование киберфизических систем
72
6. Какие операционные системы могут использоваться для програм-
мирования киберфизических систем на микроконтроллерах?
7. Какая задача рассматривается в приведенном примере дискретиза-
ции аналогового сигнала?
8. Какие библиотеки используются в примере для настройки таймера и
работы с АЦП?
Рис. 18. Обработка прерывания от АЦП, время занятости процессора 374 нс
Лекция 3. Структура типового проекта разработки
киберфизической системы на основе микроконтроллера
Задача проекта. Разработать систему управления, работающую на
основе анализа сигналов от датчиков двух входных величин и управляющую двумя механизмами, с обработкой сигнала по заданному варианту алго­ритма.
Для выполнения задачи проекта необходимо провести обзор литерату­ры по современным микроконтроллерам, которые могут быть использова-
Лекция 3. Структура типового проекта разработки киберфизической системы…
73
ны для решения данной задачи. На основании обзора обосновать выбор микроконтроллера. Провести обзор литературы по заданным датчикам и механизмам, которые могут быть использованы совместно с выбранным микроконтроллером. Разработать структурную схему всей управляющей системы. Разработать алгоритм обработки сигналов с заданных датчиков. Разработать схему электрическою принципиальную. Провести экономиче­ское обоснование проекта с просчетом основных затрат на реализацию ма­кета киберфизичекой системы.
Возможные варианты по составу самих датчиков, механизмов и алго-
ритмов сведены в виде таблицы и вынесены в прил. 1.
Структура типового проекта разработки киберфизической системы
Структура типового проекта разработки киберфизической системы
имеет следующий вид.
Введение
Во введении к проекту приводится обоснование актуальности разра-
ботки, ее промышленная ценность и дальнейшая коммерческая реализация.
Глава 1. Обзор литературы и выбор микроконтроллера для ки-
берфизической системы
В данной главе необходимо провести обзор литературы по существу­ющим микроконтроллерам. Составить сравнительную таблицу, отражаю­щую преимущества каждого. Исходя из задачи, которая решается киберфи­зической системой, произвести выбор наиболее подходящего типа микро­контроллера.
Также возможен вариант проекта, в котором уже указан тип мик­роконтроллера, на базе которого подразумевается реализация данного проекта. Именно такой пример показан в последующей Лекции 3. Здесь уже задан микроконтроллер ATMega 328, на базе которого предлагается разработать проект.
Глава 2. Обзор литературы по заданным датчикам и механизмам
В данной главе проекта необходимо провести обзор литературы по существующим киберфизическим системам, выполняющим похожую или аналогичную задачу. Составить сравнительную таблицу по аналогам и сформулировать выводы, отражающие достоинства и недостатки аналогов. Показать, чем планируемая к разработке система будет отличаться, какие у нее преимущества. Провести обзор литературы по датчикам (не менее
2. Проектирование киберфизических систем
74
5 наименований), составить сравнительную таблицу, в которой отражены
основные параметры, достоинства, недостатки. Сделать вывод, о том какой именно датчик наиболее подходит для использования в проекте. При со­ставлении обзора аналогов датчиков и механизмов обращайте внимание на код, с помощью которого можно подключать ваши датчики. Это части бу­дущей программы вашей управляющей системы. То есть они должны быть реальные. Добавить скетчи к выбранным датчикам.
Глава 3. Обработка сигналов с датчиков
Данная глава проекта посвящена обработке полученных с датчиков
данных с помощью одного из указанного в варианте алгоритма обработки. Необходимо познакомиться и изучить в целом алгоритмы, которые предла­гается использовать для обработки сигналов с датчиков, пользуясь источ­ником [13]. Отразить в проекте основные расчеты и выкладки, которые бу­дут непосредственно использоваться при проектировании киберфизической системы на основе МК.
Глава 4. Структурная схема киберфизической системы
Из полученных согласно варианту компотентов (датчиков, испольни-
тельных механизмов) необходимо составить саму управляющую систему. Привести ее описание, нарисовать саму схему в виде блоков. Описать все блоки. Подумать над возможным назначением и областью применения си­стемы.
Глава 5. Разработка алгоритма работы киберфизической системы
Для структурной схемы управляющей киберфизической системы раз-
работать алгоритм работы. Составить блок-схему алгоритма, описать его словесно. Написать программу, выполняющую обработку данных с датчи­ков системы и управление механизмами системы.
Глава 6. Разработка схемы электрических соединений для ки-
берфизической системы
Разработать схему электрическую соединений датчиков, микро-
контроллера и механизмов управляющей киберфизической системы.
Глава 7. Симуляция киберфизической системы
Необходимо симулировать киберфизическую систему, которая в итоге
получилась и отладить проект при необходимости. Для решения этой зада­чи можно воспользоваться Wokwi.— симулятором встроенных систем и IoT. поддерживающий ESP32, Arduino и Raspberry Pi Pico. Необходимо
Лекция 4. Пример разработки киберфизической системы на основе микроконтроллера
75
подключить датчики к микроконтроллеру осуществить вывод данных на заданный исполнительный механизм.
Глава 8. Экономическое обоснование проекта
Краткий просчет стоимости киберфизической системы, которая в ито­ге получилась. Составить таблицу комплектующих, необходимых для реа­лизации данной системы.
Заключение
Список литературы
Контрольные вопросы
1. Какие основные этапы включает задача проекта разработки ки-
берфизической системы на основе микроконтроллера?
2. Какие действия должны быть выполнены при проведении обзора
литературы по заданным датчикам и механизмам для выбора оптимальных компонентов?
3. Какие основные параметры и характеристики следует учитывать
при сравнительном анализе датчиков для использования в проекте?
4. Какие этапы включает глава "Обработка сигналов с датчиков" в
структуре типового проекта разработки киберфизической системы?
5. Что включает в себя глава "Структурная схема киберфизической си-
стемы" и какие действия необходимо выполнить на этом этапе проекта?
6. Какие шаги нужно предпринять при разработке алгоритма работы
киберфизической системы, и какие компоненты должны быть учтены?
9. Каким образом программа обработки данных с датчиков и управле-
ния механизмами системы связана с алгоритмом работы киберфизической системы?
Лекция 4. Пример разработки киберфизической системы
на основе микроконтроллера
В данной лекции приводится типовой пример, посвященный разработ­ке киберфизической системы управления автоматической ориентацией солнечной панели на Солнце для мобильного наземного робота. Рассмот­рены подробно все этапы проекта, согласно приведенной в лекции 3 струк­туре проекта.
Проект «Разработка системы управления автоматической ориентаци- ей солнечной панели на Солнце для мобильного наземного робота, работа-
2. Проектирование киберфизических систем
76
ющей на основе анализа сигналов от датчиков двух входных величин и управляющая двумя механизмами, с обработкой сигнала на основе микро­контроллера ATMega 328». Тип датчиков, механизмов и алгоритмы обра­ботки данных заданы в табл. 7.
Таблица 7
Тип датчиков, механизмов и алгоритмы обработки данных
Датчик
сигнала 1
Датчик
сигнала 2
Алгоритм
обработки
данных 1
Алгоритм
обработки
данных 2
Механизм 1
Механизм 2
Джойстик
Датчик напряже­ния
Медианный фильтр
Поддержание заданного уровня сигнала с помощью PI-регулятора
Сервопривод
Трёхцветная светодиодная лента
Введение
В связи с растущей потребностью в использовании солнечной энергии для производства электроэнергии является актуальной проблема разработ­ки систем автоматической ориентации солнечной панели на Солнце. Руч­ная настройка панелей на Солнце неэффективна и неудобна, особенно если установка расположена на большом расстоянии от человека или находится в труднодоступном месте. Кроме того, изменяющаяся позиция Солнца в течение дня требует периодической корректировки положения панели для обеспечения максимальной эффективности.
Система автоматической ориентации солнечной панели на Солнце позволяет решить эти проблемы и достичь максимальной эффективности использования солнечной энергии. Она способна обнаруживать положение Солнца и автоматически настраивать направление панели в соответствии с этим положением, что обеспечивает более стабильный и эффективный по­ток энергии.
Солнечная панель может быть более эффективной по сравнению с ветрогенератором в некоторых случаях:
1. Солнечные панели производят электричество в условиях слабого
естественного света, в то время как ветрогенераторы требуют достаточно высокой скорости ветра для эффективной работы.
Лекция 4. Пример разработки киберфизической системы на основе микроконтроллера
77
2. Солнечные панели не создают шум и вибрации, что делает их более
подходящими для использования в густонаселенных районах или на ме­стах, где требуется минимальный уровень шума.
3. Солнечные панели имеют длительный срок службы и требуют
меньше технического обслуживания по сравнению с ветрогенераторами.
Эффективность работы солнечной панели зависит от косинуса угла падения солнечных лучей. Когда солнечные лучи падают под прямым уг­лом на поверхность солнечной панели, они проходят через меньшее коли­чество материала и генерируют больше энергии на единицу площади. Если же угол падения солнечных лучей становится более наклонным, то часть света может отразиться или проходить через дополнительный слой матери­ала, что может привести к потере энергии.
Поэтому важно правильно выбирать угол установки солнечной пане­ли, чтобы максимизировать количество солнечного света, которое падает на ее поверхность под прямым углом. Схема расположения Солнца относи­тельно солнечной панели изображена на рис. 19. Формула расчета КПД солнечной панели в зависимости от угла наклона Солнца к поверхности панели [14, 15]:
 
 
   


, (2)
где η – коэффициент полезного действия солнечной панели (%); P – полез­ная мощность солнечной панели (Вт); I – максимальный ток, выдаваемый с контактов солнечной панели (А); U – напряжение на контактах солнечной панели (В); r – расстояние до источника света (м); Is – сила света (кд); S – площадь поверхности солнечной панели (м2); i – угол наклона источника света (°); Ф – мощность светового излучения (лм). При i = 0° световой по­ток Солнца равен 3,63·1028 лм.
Рис. 19. Расположение Солнца относительно солнечной панели
2. Проектирование киберфизических систем
78
В качестве варианта решения задачи была выбрана система ориента­ции солнечной панели на Солнце при помощи сервопривода, который ее поворачивает. Для проверки того, что солнечная панель направлена к Солнцу, к ее выходным клеммам подключен датчик напряжения, данные с которого отправляются на микроконтроллер. Это значение напряжения фильтруется от помех при помощи медианного фильтра, чтобы избежать внезапные и резкие изменения напряжения вследствие влияния ЭМИ. С использованием ПИ-регулятора осуществляется поворот вала сервопривода таким образом, чтобы напряжение, выдаваемое с солнечной панели, было максимальным.
Трехцветная светодиодная лента отображает текущую величину напряжения с панели яркостью и расположение Солнца включением одно­го из диодов. Нажатием на кнопку джойстика устройство переходит в ре­жим ручного управления. При отклонении стика вал сервопривода повора­чивается, тем самым направляя солнечную панель. Нажатием на кнопку джойстика второй раз активируется автоматический режим.
Система автоматической ориентации солнечной панели на Солнце яв­ляется актуальной в связи с растущей потребностью в использовании сол­нечной энергии для производства электроэнергии. Солнечные панели ис­пользуются для преобразования энергии Солнца в электрическую, и для максимального получения энергии необходимо обеспечить оптимальную ориентацию панели по отношению к солнцу.
Ручная настройка панелей на Солнце неэффективна и неудобна, осо­бенно если установка расположена на большом расстоянии от человека или находится в труднодоступном месте. Кроме того, изменяющаяся позиция /солнца в течение дня требует периодической корректировки положения панели для обеспечения максимальной эффективности.
Система автоматической ориентации солнечной панели на солнце поз­воляет решить эти проблемы и достичь максимальной эффективности ис­пользования солнечной энергии. Она способна обнаруживать положение Солнца и автоматически настраивать направление панели в соответствии с этим положением, что обеспечивает более стабильный и эффективный по­ток энергии.
Лекция 4. Пример разработки киберфизической системы на основе микроконтроллера
79
Глава 1. Выбор компонентов киберфизической системы
1.1. Модуль джойстика
1.1.1. Общие сведения
Выбор компонентов для разработки киберфизической системы произ-
водится исходя из того, что их дальнейшее подключение к микроконтрол­леру и его программирование будет осуществляться в среде Arduino EDI.
Джойстик часто используется в роботизированных проектах, в кото­рых необходимо участие человека. Он реализован двумя потенциометрами, каждый из которых предназначен для оси X и Y. Эти потенциометры со­единены между собой скобами и между скоб установлена пружина для центровки.
Этот модуль производит на выходе около 2,5 В от X и Y, когда он находится в центральном положении. В таком случае значение, которое будет принимать Arduino, будет равно 512. Перемещение джойстика при­ведет к изменению выходного сигнала от 0 до 5 В в зависимости от его направления, что соответствует сигналу 0–1023.
1.1.2. Сравнительный анализ джойстиков Arduino
Сравнительный анализ джойстиков представлен на табл. 8.
Таблица 8
Сравнение джойстиков
Название
Характеристики и точность
Цена, руб
MJKDZ
Рабочий диапазон по окружности, в центральной точке сигнал равен 512
150
HW-504
Рабочий диапазон по окружности, в центральной точке сигнал неточен, от 480 до 550, поэтому данный джойстик в точных системах использовать не рекомендуется
100
Parallax 27800
Не совместим с Arduino
820
MCU AVR 5D Rocker
Положение джойстика определяется кнопками, поэтому регулирование доступно только в крайних положениях
80
PS2
Рабочий диапазон по квадрату, поэтому сигнал регулиру­ется равномерно, в центральной точке сигнал равен 512
180
Исходя из точности, был выбран джойстик PS2, изображение его представлено на рис. 20.
2. Проектирование киберфизических систем
80
Рис. 20. Джойстик PS2
1.1.3. Программа
Код программы для считывания сигнала с джойстика
#define pinX A2 // ось X джойстика #define pinY A1 // ось Y джойстика #define swPin 2 // кнопка джойстика #define ledPin 13 // светодиод на Pin 13 void setup() { Serial.begin(9 600); pinMode(ledPin, OUTPUT); pinMode(pinX, INPUT); pinMode(pinY, INPUT); pinMode(swPin, INPUT); digitalWrite(swPin, HIGH); } void loop() { boolean ledState = digitalRead(swPin); // считывание состояния
кнопки
digitalWrite(ledPin, ledState); // вкл./выкл. светодиод int X = analogRead(pinX); // считывание значения оси Х int Y = analogRead(pinY); // считывание значения оси Y Serial.print(X); // вывод сигнала в монитор порта
Serial.print("\t"); // табуляция Serial.println(Y); }
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]