Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Разработка киберфизических систем на основе микроконтроллеров. Учебное пособие
.pdf
Контрольные вопросы
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);
}
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
