Схема генератора маз: Схема генератора МАЗ opex.ru

Содержание

Схема подключения генератора Маз — AvtoTachki

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

Характеристики генераторного устройства При его использовании соблюдайте следующие правила: 2.

Принцип работы генераторной установки Г на примере включения ее в электрическую цепь автомобилей МАЗ показан на рис.

Правильное подключение генератора КАМАЗ Евро 2. Подключить генератор КАМАЗ Евро 2.

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

Генератор охлаждается непрерывной вентиляцией.

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

Скоростная характеристика генератора Рис. При монтаже генератора на двигатель необходимо: 2.

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

Схема генератора МАЗ

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

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

На другой малогабаритной керамической пластине расположены кристаллические структуры транзистора оконечного каскада Т2, выходного транзистора Т3 и гасящего диода D1. Выпрямительный блок преобразует переменное напряжение в постоянное, и когда оно станет выше напряжения аккумуляторной батареи, генератор начнет питать потребителей и заряжать аккумуляторную батарею.

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

Страница 1 из 3 Особенности системы электроснабжения автомобиля МАЗ Система электроснабжения автомобиля состоит из двух источников: аккумуляторных батарей и генераторной установки переменного тока. Генератор ЯМЗ вырабатывает ток.

Боковая крышка контактного кольца изготовлена ​​из алюминиевого сплава, имеет вентиляционные окна и ножку для крепления генератора к двигателю. Чем выше частота вращения ротора и меньше нагрузка на генератор, тем выше напряжение генератора.

Ротор на подшипниках KS9 Международное обозначение

Как подключить генератор МАЗ?

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

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

При отклонении указанных мероприятий от требуемых пределов необходимо определить и устранить неисправность сети на борту ТС. Схема подключения генератора МАЗ Дата публикации: Максимальный ток возбуждения, на который рассчитаны конструктивные элементы регулятора Р, составляет 3,3 А.

Это делается для того, чтобы разряжать контакты ЭЭС, так как ток при начальном возбуждении генератора может достигать 5 А. Генераторная установка представляет собой двенадцатиполюсную трехфазную синхронную электрическую машину со встроенным выпрямительным блоком, помехоподавляющий конденсатор, щеткодержатель с регулятором напряжения и системой вентиляции. Помимо прямых функций — выработка электроэнергии для питания электрооборудования автомобиля, к современным генераторам предъявляется еще одно требование — он не должен воздействовать или реагировать на радиоволны.

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

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

Генераторы моделей автомобилей МАЗ питаются от дополнительных диодов. Если напряжение увеличивается или уменьшается, регулятор соответственно уменьшает или увеличивает ток возбуждения и вводит напряжение в необходимых пределах. Ротор 17 представляет собой вал с прессованным ламинированным пакетом и ступицей. Проверить состояние электрической цепи и отдельных проводов мегаомметром или лампой, на которую подается напряжение выше 26 В, при не выключенном генераторе нельзя. После сборки контур закрывается заглушкой и заливается специальным герметиком.

На другой малогабаритной керамической пластине расположены кристаллические структуры транзистора оконечного каскада Т2, выходного транзистора Т3 и гасящего диода D1. Неправильное подключение проводов и клемм приводит к выходу из строя диодов выпрямителя. При проверке генератора в автомобиле необходимо переподключить кабели и подключить приборы для проверки при выключенном заземлителе. Выход предназначен для подключения тахометра и других устройств реле блокировки стартера, АБС и т. д., критичных к форме фазового сигнала. Фазы обмотки статора якоря генератора

Схема подключения резервного генератора к дому. Схема подключения реверсивного переключателя.

Лучшие цены

При проверке генератора в автомобиле необходимо переподключить кабели и подключить приборы для проверки при выключенном заземлителе.

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

Регулятор напряжения типа 51. Это сделано для того, чтобы разряжать контакты ВИП, так как ток при начальном возбуждении генератора может достигать 5 А.

Таким образом, наличие замка предотвращает поломку свечей ЭФУ электрофакельного устройства. При увеличении частоты вращения ротора напряжение генератора может достигать опасного для приемников значения. Поэтому следите за тем, чтобы внутрь детали не попала вода. При необходимости зачистите места соединения проводов и подтяните контактные части генератора и реле-регулятора.

Система электроснабжения авто МАЗ

Корпус генератора представляет собой отрицательную клемму и соединен с заземлением машины. Правильно натянутый ремень привода генератора с усилием 3 кг, приложенным к середине ветви ремня, должен иметь прогиб 10-15 мм.

Обмотка возбуждения генератора подключается к бортовой сети, и далее генератор работает, как описано выше, см. Концы обмотки возбуждения приварены к контактным кольцам, расположенным на изолирующей втулке. Невыполнение этого требования со временем приведет к поломкам, которые повлекут за собой ремонт детали. Генераторная установка G заменяет генераторы G и G с соответствующими регуляторами напряжения. Генератор возбуждается током от независимого источника: батарей.

Регулятор представляет собой электронное устройство, закрытое крышкой и заполненное специальным герметиком. Разборка проводится в следующем порядке: 1. Ремонт генератора МАЗ, откручиваем два винта, крепящих щеткодержатель на 3 см. Однако сегодня мы хотим рассмотреть схему подключения устройств и дать несколько советов по эксплуатации. При необходимости можем отправить покупку в любой регион, работаем с наличным и безналичным способами оплаты, организуем отсрочки.

Это делается для того, чтобы разряжать контакты ЭЭС, так как ток при начальном возбуждении генератора может достигать 5 А. При уменьшении тока возбуждения напряжение генератора падает, стабилитроны Д2 и ДЗ снова блокируются, цепь возвращается в исходное положение, и напряжение генератора снова начинает расти. Проверяйте установку после 50 запусков и при каждом ИТВ

Назначение работы и устройство генератора

 

Главная » Статьи » Ремонт авто » Схема подключения генератора Маз

Схема подключения генератора МАЗ (+Каталог Запчастей)

Мы уже писали ранее о генераторах для грузовиков. Однако сегодня хотим рассмотреть схему подключения устройств и дать несколько советов по эксплуатации.

Итак, генератор 4242 03.3771 имеет выпрямитель в регулятор напряжения.

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

Так как блок состоит из трех элементов, советуем осмотреть все переходы.

Советы по эксплуатации

Генератор автомобиля МАЗ необходимо периодически проверять. При использовании придерживайтесь следующих правил:

  1. Не проверяйте состояние схем генератора МАЗ лампочкой либо мегомметров с напряжением более 26 В;
  2. Не допускайте осмотра агрегата замыканием клемм;
  3. Не отключайте провода от вывода, а также аккумулятор при работающей установке.

Согласно схеме подключения генератора МАЗ строго соблюдают полярность. Натяжение ремней проверяют только после остановки двигателя и аккумулятора.

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



Схема генератора МАЗ

1 Г270А-3701200 Ротор в сборе 2 Б-16 Шпонка сегментная 3 МХ-0235 Гайка 4 МХ-0234 Шайба пружинная 5 Н0-1076 Шайба 6 Г270А-3701051 Шкив 7 236-1307170 Ремень 8 Г250-3701055 Вентилятор в сборе 9 Г250-3701054 Втулка 10 Г250-3701401 Крышка со стороны привода 11 236-3701025-Б2 Планка крепления генератора 12 252038-П29 Шайба 13 252135-П2 Шайба 14 201466-П29 Болт крепления генератора к планке 15 180603С9 Шарикоподшипник 16 Г250-3701404 Шайба специальная 17 Х-4001 Шайба пружинная 17 Х-4001 Шайба пружинная 17 Х-4001 Шайба пружинная 18 НО-0603 Винт 19 Г21-3701005 Чашка упорная 20 250511-П29 Гайка 21 252135-П2 Шайба 22 Г253-3701010 Щеткодержатель в сборе 23 ВБГ-1 Блок выпрямительный 24 Г250-3701352-А1 Блок контактный 25 180502КС9 Шарикоподшипник 26 МХ-0825 Шайба 27 Х-4289 Шайба пружинная 28 МХ-0015 Гайка 29 М152-3728006 Винт крепления крышки со стороны контактных колец 30 Г253-3701060 Крышка подшипника 31 Х1-100-75Д Винт 32 Х-1012 Шайба пружинная 33 250512-П29 Гайка 34 252136-П2 Шайба 35 250638-П29 Гайка 36 238НБ-3701044-Б Втулка кронштейна крепления генератора 37 201511-П29 Болт крепления генератора к втулке 38 236-3701020-В Кронштейн крепления генератора 39 250512-П29 Гайка 40 201504-П29 Болт крепления генератора к кронштейну 41 8Х-1497-А Шайба 42 Г250-3701319-А1 Втулка изоляционная 43 НО-1067 Шайба 44 8Х-1533М Гайка 45 Х-1482 Шайба пружинная 46 Г250-3701016 Болт крепления щеткодержателя 47 ТХ-4279 Винт 48 Х-4001 Шайба пружинная 49 Г250-3701300-А1 Крышка со стороны контактных колец в сборе 50 Г270А-3701100 Статор с катушками в сборе Ссылка на эту страницу: https://www. kspecmash.ru/catalog.php?typeauto=2&mark=11&model=93&group=160

Как подключить генератор МАЗ?

Схема установки зависит от вида установки. На транспортных средствах ОАО «Минский автомобильный завод» с двигателями ЯМЗ применяются следующие модификации:

  • 3112.3771 и 6582.3701 на 80 Ампер;
  • 1312.3771 на 50 Ампер;
  • Г273В1 на 45 Ампер.

При проведении ремонта используют схему генератора МАЗ. Разборку выполняют в следующем порядке:

  1. Отвинчивают соединение щеткодержателя и крышки;
  2. Вынимают деталь;
  3. Отворачивают винты шарикоподшипника и стяжки;
  4. Снимают крышку и отсоединяют вывозы фазы от выпрямителя;
  5. Отворачивают гайки шкива и снимают его, зажав в тисках ротор;
  6. Снимают вентилятор и втулку;
  7. Демонтируют крышку.

Генератор лабиринта

Генератор лабиринта

Форма:
ПрямоугольныйКруглыйТреугольныйШестиугольный

Стиль: Ортогональные (квадратные ячейки)Сигма (шестиугольные ячейки)Дельта (треугольные ячейки)
Ширина:

(от 2 до 200 ячеек)

Рост:

(от 2 до 200 ячеек)

Внутренняя ширина:

(0 или 2 по ширине — 2 ячейки)

Внутренняя высота:

(0 или 2 в высоту — 2 ячейки)

Начинается в: TopBottom или внутреннее помещение
Передовой: Э:

(от 0 до 100),
Р:

(от 0 до 100)

О

Помощь

Примеры

Пожертвовать

Коммерческое использование

Как сделать

Мне грустно отмечать это: вопреки тому, во что вас убеждает ряд менее щепетильных ютуберов с «пассивным доходом», лабиринты с этого сайта нельзя использовать бесплатно в коммерческих целях. Если вы планируете использовать их в чем-то, что будете продавать, вам необходимо получить коммерческую лицензию. Если у вас нет такой лицензии, вы нарушаете авторские права. Для получения дополнительной информации см. ссылку «Коммерческое использование» выше.

Генератор лабиринтов и игра

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

Пандемия COVID-19 создала спрос на конфигурации удаленной разработки для встраиваемых систем. В Корнельском университете сотрудники курса «Проектирование цифровых систем с использованием микроконтроллеров» (ECE 4760) создали систему для удаленной работы, что позволило проводить курс в разгар пандемии. Чтобы облегчить эту удаленную разработку, наша группа использовала подключение удаленного рабочего стола к ПК в лаборатории; в свою очередь, этот ПК связывался с целевой платой Microchip PIC32 [1] через последовательное соединение. Затем плата PIC32 связывалась с различными периферийными устройствами, включая ЦАП и TFT-экран, через соединения SPI. Две камеры, направленные на установку, позволили нам наблюдать как за лабораторным столом, так и за TFT-дисплеем через видеовызов Zoom, подключенный с лабораторного ПК.

Наш проект создает игру-лабиринт, которая понравится каждому. Цель игры состоит в том, чтобы решать лабиринты различных уровней сложности на досуге или в кратчайшие сроки. Чтобы сыграть в нее, пользователь открывает программу Python, которая запускает графический интерфейс для управления игрой на лабораторном ПК (, рис. 1, ). В графическом интерфейсе игроки могут выбрать параметры для трех параметров игры:

  1. Желаемый уровень сложности (легкий, средний или сложный), при этом более высокие трудности соответствуют лабиринтам с более высокой плотностью.
  2. Чтобы играть в одиночку (режим одного игрока) или участвовать в гонке с другом в режиме двух игроков.
  3. Включение или выключение режима испытаний на время (свободная игра), что позволяет игрокам соревноваться с текущим самым быстрым временем решения для каждого уровня сложности.

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

После выбора игрового режима нажатие кнопки «Новая игра» в графическом интерфейсе создаст лабиринт на подключенном TFT-дисплее микроконтроллера PIC32 (MCU). Когда лабиринт создан, в красном квадрате в левом верхнем углу экрана появляется значок пользователя. Достигнув зеленого квадрата в правом нижнем углу, пользователь проходит лабиринт и выигрывает игру.

Чтобы переместить значок, Игрок 1 использует клавиши WASD для перемещения вверх, влево, вниз и вправо соответственно. В режиме для двух игроков клавиши со стрелками используются для перемещения значка игрока 2. Различные игровые режимы позволяют игрокам решать лабиринт по-разному. Например, можно было расслабиться в режиме Free-Play, не беспокоясь о гонках на время или победе над другим игроком. Кроме того, более конкурентоспособные игроки могут выбрать гонку на время или друг с другом и побить рекорды, чтобы установить наследие как самый быстрый решатель лабиринта.

ПРОЕКТ ВЫСОКОГО УРОВНЯ

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

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

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

— РЕКЛАМА—

—Реклама здесь—

Чтобы расширить лабиринт, из набора границ случайным образом выбирается новый узел. Стена между выбранным пограничным узлом и его узлом обратного указателя разрушается, добавляя выбранный узел в лабиринт. Как только выбранный узел добавлен в лабиринт, граничные узлы проверяются, чтобы увидеть, могут ли они быть добавлены в набор границ. Узел может быть добавлен, если у него есть все стены и он еще не находится в наборе границ. Это предотвращает создание петель в лабиринте.

Алгоритм повторяет процесс выбора узлов из набора границ, сноса стены, чтобы добавить ее в лабиринт, и добавления соответствующих граничных узлов в набор границ, пока набор границ не станет пустым. Набор границ будет пустым только после того, как каждый узел будет добавлен в лабиринт, что означает, что пользователь может получить доступ к любой части лабиринта. На этом генерация лабиринта завершена, и к лабиринту можно добавить произвольный выход. В качестве выхода мы выбрали правый нижний угол лабиринта. Сгенерированный лабиринт отображается PIC32 на подключенном TFT-дисплее. Примеры «простого» и «сложного» лабиринта показаны на  9.0061 Рисунок 3  и  Рисунок 4 соответственно.

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

  • Рисунок 3
  • Рисунок 4

Рисунок 3
«Простой» лабиринт, отображаемый на TFT. Пользователь начинает с красного квадрата и должен пройти лабиринт, чтобы добраться до зеленого квадрата. Эта фотография была сделана с помощью веб-камеры, поддерживающей удаленную разработку.Рис. 4
Экран победы Игрока 1, победившего в режиме «Испытания на время» в «Сложном» лабиринте. Сообщение о победе остается на экране до тех пор, пока PIC32 не будет сброшен или не начнется новая игра. Эта фотография была сделана с помощью веб-камеры, позволяющей осуществлять удаленную разработку.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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

После того, как сетка будет нарисована на TFT, лабиринт будет создан и нарисован на TFT путем удаления линий сетки. Перед созданием лабиринта модули узлов создаются и помещаются в двумерный массив. Чтобы устранить необходимость в динамическом выделении и освобождении памяти, максимальное количество поддерживаемых узлов создается и повторно используется с каждым новым лабиринтом. Поскольку количество узлов в нашей удаленной игре было ограничено видимостью TFT в видеовызове Zoom, максимальное количество узлов поддержки — это число, используемое на уровне сложности Hard (всего 432 узла).

Узлы организованы в двумерный массив 24×18, так что узлы можно индексировать по их положению в сетке. Каждый объект узла содержит значение для его координат X и Y, а также четыре значения, чтобы представить, имеет ли узел северную, южную, восточную и западную стены. Он также содержит два значения для координат X и Y его узла обратного указателя и одно для представления, был ли он в наборе границ или нет. Каждый узел начинается со всеми его стенами и обратным указателем NULL.

Для создания лабиринта случайным образом выбирается узел из массива узлов. Затем вызывается функция, чтобы определить, какие граничные узлы могут быть добавлены в набор границ. Чтобы определить, подходит ли граничный узел, узел сначала проверяется, чтобы увидеть, есть ли у него все его стены. Атрибут границы узла также проверяется, чтобы убедиться, что узел еще не находится в наборе границ. Значения обратного указателя узла устанавливаются так, чтобы указывать на текущий узел, а атрибут границы устанавливается равным 1. Затем узел случайным образом выбирается из массива границ и добавляется в лабиринт путем устранения стены между выбранным узлом и узел, который добавил его к границе. Стена «стирается» с TFT путем окрашивания сегмента стены черной линией.

После создания и отображения лабиринта для управления игрой используется библиотека protothreads [2]. Протопотоки — это легкие бесстековые потоки, предназначенные для систем с ограниченным объемом памяти, таких как небольшие встроенные системы. Последовательный протопоток анализирует последовательные данные, отправленные из Python, и использует их для установки надлежащего флага, чтобы поток обработчика для этого конкретного события был запланирован. Если происходит событие кнопки, мы поднимаем флаг кнопки. Если пользователь отправляет строку, мы поднимаем флаг строки и так далее. Эти флаги сигнализируют потоку, который соответствует этому конкретному событию. Поток строк Python обрабатывает определенные сообщения из командной строки пользователя и может записывать ответ в текстовое поле графического интерфейса Python. Этот поток использовался только для отладки при необходимости и фактически не использовался в окончательной версии нашего кода. Код проекта доступен для скачивания на  9Код статьи 0119 Circuit Cellar и веб-страница с файлами.

Последовательный протопоток является важным связующим звеном со стороной ввода Python/пользователя в этом проекте. Этот поток позволяет нам кодировать различные сообщения Python для ключевых событий как часть игры в лабиринт. Поток New Game вызывается в начале каждой новой игры, инициированной пользователем. Прежде чем нажать кнопку «Новая игра», пользователь настроил предпочтительный уровень сложности и режим игры, и этот поток просто собирает эту информацию и использует ее для создания лабиринта.

— РЕКЛАМА—

—Реклама здесь—

Например, если пользователь выбрал простой режим, протопоток «новая игра» устанавливает размеры узла лабиринта на 12×9, устанавливая размерность X двумерного массива на 12, а размер Y равен 9. В этот момент игра инициализируется путем рисования сетки, создания случайного начального числа, создания лабиринта и рисования игроков. Если режим Time-Trial включен, мы запускаем внутренний таймер PIC. На данный момент игра готова начать!

ПОТОКИ В ДЕЙСТВИИ

Протопоток игрока управляет движением значка игрока во время игры. Поток «нажатие клавиши» задает направление пользователя, которое используется в этом потоке для обновления позиции пользователя. Этот поток уступает 10 мс между итерациями, чтобы гарантировать, что пользовательские значки не перемещаются слишком быстро. Если режим «Два игрока» не включен, значок второго пользователя не отображается и не обновляется. Этот поток также определяет победителя и сигнализирует об окончании игры, проверяя, попал ли значок любого игрока в выигрышную клетку сетки.

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

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

Протопоток Endgame сигнализируется флагом «game-over» всякий раз, когда игрок входит в конечный узел. Сначала сбрасывается флаг окончания игры, затем отключается таймер. Если победитель еще не отображен, фраза «Player X Wins!» записывается в TFT, где X равно 1 или 2, в зависимости от того, кто первым прошел лабиринт. Если включен режим Time-Trial, сообщение будет гласить: «Player X Wins! Время: ss.hh », где ss  – количество секунд, а  hh  – количество сотых секунд, затраченных на прохождение лабиринта.

Время и сложность лабиринта также записываются обратно в графический интерфейс Python. Когда графический интерфейс получает время и сложность, он сравнивает время с текущим самым быстрым временем для данной сложности. Если текущего лучшего времени нет или это новое лучшее время, полученное время устанавливается как новый рекорд и отображается в графическом интерфейсе. Чтобы сохранить самое быстрое время более постоянно, самое быстрое время для каждой сложности записывается в текстовый файл. Этот файл записывается и читается программой Python, и данные сохраняются до тех пор, пока они не будут перезаписаны или файл не будет удален.

КОНСТРУКЦИЯ АППАРАТНОГО ОБЕСПЕЧЕНИЯ

Давайте более подробно рассмотрим аппаратное обеспечение, благодаря которому этот проект стал возможным. Мы создали этот проект, используя микроконтроллер PIC32MX256F128B [3] с последовательным интерфейсом для лабораторного ПК. Эти связи были облегчены с помощью большой доски Шона Кэрролла (SECABB) [1], которая была разработана для этого курса бывшим студентом. Схема и компоновка этой платы показаны на рис. 6 . В этой лабораторной работе также используется некоторое ключевое оборудование платы удаленной разработки, разработанной Хантером Адамсом для этого курса. Схема и компоновка удаленной макетной платы показаны на  9.0061 Рисунок 7 . Эта плата позволяет нам удаленно сбрасывать PIC32 через интерфейс Python, фильтруя состояние последовательного обрыва с помощью аппаратного обеспечения сброса, показанного на рис. 7. Блок-схема общей настройки оборудования показана на рис. 8 .

  • Рисунок 6
  • Рисунок 7
  • Рисунок 8

Рисунок 6aРисунок 6b Рисунок 6
На схеме (b) слева показана макетная плата PIC32MX250F128B (большая доска Шона Кэрролла), разработанная Шоном Кэрроллом. Плата разработки обеспечивает более простой интерфейс для PIC32, а также включение аппаратного обеспечения, такого как TFT. TFT-дисплей, на котором нарисован лабиринт, лучше виден на изображении макета платы (a) выше. Рисунок 7aРисунок 7b Рисунок 7
На схеме (b) справа показана доска дистанционного обучения, разработанная Хантером Адамсом. Компоненты платы разделены на различные функции платы. Макет макета доски для дистанционного обучения (a) показан выше. Хотя эта плата относительно проста, она обеспечивает неоценимую поддержку для удаленной разработки. Пользователь мог запрограммировать PIC32, удаленно подключившись к лабораторному компьютеру, который был подключен к PIC32 через плату дистанционного обучения и большую доску Шона Кэрролла.

В этом проекте мы используем как TFT-дисплей, так и аппаратный таймер. TFT-дисплей — это экран, на котором отображается игра, поэтому он является основой функциональности нашей игры. Мы включаем библиотеки управления и графические библиотеки для настройки и обновления TFT, устанавливая ориентацию таким образом, чтобы исходная точка находилась в верхнем левом углу экрана, ось X увеличивалась вправо, а ось Y росла вниз.

Один из внутренних 16-разрядных таймеров PIC32 был использован для реализации функции временной пробной версии нашего кода. В основном, мы настраиваем этот таймер так, чтобы он прерывался каждые 10 мс, и мы также перенастраиваем его, чтобы он делал то же самое в нашем потоке «Новая игра», пока включен режим «Испытание на время». Это позволяет нам увеличивать счетчик каждые 0,01 секунды, что позволяет нам отслеживать, сколько времени требуется пользователям, чтобы пройти лабиринт. Мы закрываем этот таймер в нашей ветке Endgame, которая фиксирует время, необходимое для прохождения лабиринта, с точностью до 0,01 секунды.

Также стоит отметить, что в библиотеке protothreads за кулисами используется таймер, поэтому в результате использования библиотеки protothreads в этом проекте мы используем два таймера. Один интересный вызов протопотока, который мы делаем в нашем коде, состоит в том, чтобы получить текущее время работы протопотока в начале новой игры. Мы используем это время для заполнения генератора случайных чисел, используемого для генерации лабиринта. Поскольку этот вызов инициируется пользовательским вводом, мы можем ожидать, что генерация случайного начального числа будет достаточно случайной, так что каждый раз, когда пользователь пытается играть, должны генерироваться разные лабиринты.

ИСПЫТАНИЯ И РЕЗУЛЬТАТЫ

Для завершения проекта мы постепенно добавляли функциональность и тщательно тестировали каждую функцию, прежде чем переходить к следующей. Мы начали наш проект с создания лабиринта с помощью алгоритма Прима. Первая итерация нашего лабиринта была построена с использованием Python и основана на реализации Кристиана Хилла [4]. Это позволило нам кодировать и отлаживать с использованием высокоуровневых функций, а также абстрагироваться от управления памятью, которое в конечном итоге потребуется для микроконтроллера. Затем мы распечатали ASCII-представление нашего лабиринта ( Рисунок 9 ), чтобы убедиться, что у лабиринта есть начало, конец и путь, соединяющий их вместе. Мы также использовали это представление, чтобы убедиться, что наш лабиринт не содержит петель.

Рисунок 9
ASCII-представление сгенерированного лабиринта. Хотя это и не использовалось в конечном продукте, распечатка сгенерированного лабиринта значительно упростила процесс отладки алгоритма.

Как только мы смогли убедиться, что наш высокоуровневый алгоритм верен, мы перенесли наш код на C. В отличие от Python, C не содержит простых функций для работы с массивами, таких как len() и append(). По этой причине нам пришлось расширить многие абстрактные функции Python, чтобы создать те же функции на C. Тестирование нашего кода генерации лабиринта на C было немного сложным, потому что мы не написали никакого кода для отображения лабиринта на TFT. Таким образом, мы использовали то же представление ASCII, что и раньше, и выводили вывод в графический интерфейс Python. С помощью этого метода мы протестировали код генерации лабиринта изолированно, чтобы убедиться в его правильности.

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

УПРАВЛЕНИЕ КЛАВИАТУРОЙ

Важной особенностью нашей игры является возможность перемещать игрока с помощью клавиш WASD. Это потребовало от нас импорта модуля клавиатуры в наш графический интерфейс Python для регистрации нажатий клавиш. Тестирование модуля состояло из нескольких компонентов. Во-первых, мы проверили, что последовательная связь Python с PIC работает правильно, распечатав нажатия клавиш в PuTTY. Как только мы заработали, мы протестировали перемещение курсора игрока в пределах определенных линий лабиринта.

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

Наш окончательный дизайн включает в себя игру-лабиринт с режимами для одного или двух игроков, тремя уровнями сложности и дополнительным режимом «Испытание на время». На рис. 4 представлен вид экрана победы в финальной версии проекта. Кроме того, он имеет трекер рекордов для быстрого прохождения лабиринта на каждом уровне сложности.

— РЕКЛАМА—

—Реклама здесь—

Одна вещь, о которой мы беспокоились на этапе разработки проекта, — это плавность движений игрока. Контекст нашей программы переключается между потоками. Если перепланирование потока игрока занимает слишком много времени, это будет выглядеть так, как будто точки игрока прыгают. Однако оказалось, что все наши потоки выполнялись достаточно быстро, чтобы этого не произошло. Каждый игрок движется плавно, без мигания экрана и прыжков точек. Это демонстрирует, что работа с двумя проигрывателями вместе с накладными расходами на многопоточность не разрушает иллюзию параллелизма на PIC32.

ЗАКЛЮЧЕНИЕ

Наш дизайн полностью оправдал наши ожидания. Мы были довольны тем, насколько гладко прошел процесс удаленной разработки. В целом, это очень мало повлияло на наш окончательный результат. Одной из наиболее полезных частей этого проекта было сначала реализовать алгоритм генерации лабиринта на Python, а затем перенести его на C. Это позволило нам проверить логику алгоритма в легко отлаживаемой среде, что вселило в нас уверенность, что он будет работать. работать правильно, поскольку мы перешли на PIC32 в качестве нашего целевого устройства.

В будущем мы могли бы быть более агрессивными в наших попытках оптимизировать количество узлов, которые мы можем отображать на экране. В идеале пользователи должны иметь TFT-экран PIC32 прямо перед собой, и им не нужно будет просматривать его через Zoom. В этом случае можно было бы еще больше увеличить плотность нашего лабиринта сложного уровня, поскольку пользователь не будет ограничен видимостью TFT в Zoom. Кроме того, мы могли бы использовать всего несколько битов для каждой стены, поэтому размер структуры узла уменьшился бы, а требования к памяти для лабиринта значительно уменьшились бы.

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

Примечание авторов. В рамках этого проекта мы благодарим Кристиана Хилла за предоставление реализации алгоритма Прима на Python [4], которую мы немного адаптировали для наших нужд. Мы благодарим Шона Кэрролла за создание макетной платы PIC32 [1], которая позволила нам взаимодействовать с TFT-экраном PIC32 при удаленной работе. Наконец, мы благодарим наших инструкторов Хантера Адамса и Брюса Лэнда за успешный перевод курса в онлайн, чтобы его можно было продолжить, несмотря на продолжающуюся пандемию.

ССЫЛКИ:
[1] Кэрролл, Шон. «Платы для разработки ECE4760 Корнельского университета PIC32MX250F128B». Корнельский университет ECE 4760 Проектирование с помощью микроконтроллеров, https://people.ece.cornell.edu/land/courses/ece4760/PIC32/target_board.html
[2] Dunkels, Adam. Справочное руководство по библиотеке Protothreads 1.4, Шведский институт компьютерных наук, 2006. {Джефф: Может ли эта ссылка быть более полезной, чем ссылка на руководство отдельно? Другие студенты Корнелла регулярно цитируют его для Protothreads. https://people.ece.cornell.edu/land/courses/ece4760/PIC32/index_Protothreads.html
[3] Технология микрочипов. «32-разрядные микроконтроллеры (до 128 КБ флэш-памяти и 32 КБ SRAM) с аудио- и графическими интерфейсами, USB и расширенным аналоговым интерфейсом», техническое описание PIC32MX1XX/2XX, 2011–2012 гг. http://ww1.microchip.com/downloads/en/devicedoc/61168d.pdf
[4] Хилл, Кристиан. «Создание лабиринта». Изучение научного программирования с помощью Python, 13 апреля 2017 г., https://scipython.com/blog/making-a-maze/

РЕСУРСЫ
Microchip Technology | www.microchip.com

Большая доска Шона Кэрролла (SECABB)
Корнельский университет | https://people.ece.cornell.edu/land/courses/ece4760/PIC32/target_board.html

Совет по дистанционному развитию
Хантер Адамс, Корнельский университет
https://people.ece.cornell.edu/land/courses /ece4760/PIC32/index_remote.html

ОПУБЛИКОВАН В ЖУРНАЛЕ CIRCUIT CELLAR • ФЕВРАЛЬ 2022 г. № 379 – получите номер в формате PDF

Будьте в курсе наших БЕСПЛАТНЫХ еженедельных информационных бюллетеней!

Не пропустите следующие выпуски Подвал цепи.

Подписаться на журнал Circuit Cellar

Примечание. Мы сделали выпуск Circuit Cellar за май 2020 г. бесплатным образцом. В нем вы найдете большое разнообразие статей и информации, иллюстрирующих типичный номер текущего журнала.

Хотите написать для Circuit Cellar ? Мы всегда принимаем статьи/сообщения от технического сообщества. Свяжитесь с нами и давайте обсудим ваши идеи.

Спонсор этой статьи

Кайл Инфантино, Джек Бжозовски и Дилан Лахани

+ посты

Кайл Инфантино является M.Eng. студент Корнельского университета по специальности «Электротехника и вычислительная техника». Он интересуется процессом цифрового проектирования и этим летом будет работать в Apple в качестве стажера по проверке дизайна графических процессоров. С ним можно связаться по адресу [email protected]

Джек Бжозовски имеет степень M.Eng. студент Корнельского университета по специальности «Электротехника и вычислительная техника».