Описание заказа
ТЕХНИЧЕСКОЕ ЗАДАНИЕ (ТЗ) НА РАЗРАБОТКУ ПРОШИВКИ МИКРОКОНТРОЛЛЕРА
Проект: Система автоматического управления высевом «HydroSeed» (2 контура)
1. Общие сведения о системе
HydroSeed — это бортовой программно-аппаратный комплекс автоматического управления (САУ) высевом для модернизации пневматических сеялок типа Salford и или их аналогов .
Система осуществляет перевод дозирующих валов с механического привода на независимый гидропривод (2 контура: Семена и Сухие удобрения) и контролирует параметры безопасности пневмосистемы.
Платформа разработки:
Микроконтроллер серии STM32 (рекомендуемый: F103RCT6 или G4-серия), среда STM32CubeIDE, библиотека HAL. Язык программирования: C/C++. Обмен с оператором: графическая панель Nextion 7" (UART) .
2. Конфигурация периферии и входов/выходов (Пинаут ЭБУ)
Микроконтроллер должен обрабатывать 4 скоростных (частотных) и 3 дискретных канала ввода, а также формировать 2 канала силового ШИМ-управления:
Входы Input Capture (Захват частоты):
TIM_CH1 — Датчик скорости опорно-приводного колеса бункера (индуктивный PNP, 0–15 км/ч).
TIM_CH2 — Датчик оборотов Вала №1 (Зерно). Установлен на кулачковой муфте гидромотора, 6 импульсов/оборот (5–150 об/мин).
TIM_CH3 — Датчик оборотов Вала №2 (Удобрения). Установлен на кулачковой муфте второго гидромотора, 6 импульсов/оборот (5–150 об/мин).
TIM_CH4 — Датчик Холла вентилятора турбины (высокоскоростной, диапазон 800–4500 об/мин, норма 1200–1800 об/мин).
Дискретные входы (GPIO Input / EXTI):
5. GPIO_IN_1 — Датчик положения навески сеялки (Концевик: Поле / Разворот).
6. GPIO_IN_2 — Емкостный датчик уровня Бункера №1 (Зерно, дискретный).
7. GPIO_IN_3 — Емкостный датчик уровня Бункера №2 (Удобрения, дискретный).
Выходы управления (GPIO Output / PWM):
8. PWM_CH1 — ШИМ-управление пропорциональным гидроклапаном Вала №1 (100–300 Гц).
9. PWM_CH2 — ШИМ-управление пропорциональным гидроклапаном Вала №2 (100–300 Гц).
10. GPIO_OUT_1 — Выход на силовой транзистор звукового аварийного зуммера.
3. Режимы работы и программная логика
Прошивка должна иметь три четко разделенных контекста (режима) работы:
РЕЖИМ 1: «СЕВ» (Основной рабочий режим в поле)
Расчет скорости: Система измеряет текущую частоту датчика колеса и рассчитывает скорость движения трактора (S, м/мин) с использованием сохраненного во Flash-памяти коэффициента пути K_wheel (импульсов на 1 метр).
Стабилизация нормы (ПИД): Два независимых ПИД-регулятора рассчитывают скважность ШИМ для гидроклапанов, удерживая заданные нормы высева (кг/га) для каждого вала индивидуально относительно текущей скорости. Скорость изменения ШИМ ограничивается функцией плавного пуска (Ramp) во избежание гидроударов.
Логика навески: При размыкании датчика навески (трактор поднял сеялку на развороте) ШИМ обоих клапанов мгновенно сбрасывается в 0%, вращение валов блокируется.
Аварийная логика («Алармы»):
Блокировка старта по турбине,падение оборотов турбины на ходу,заклинивание валов,датчики бункеров: .
Аварийная Эмуляция скорости: По команде из UART (при поломке датчика колеса) система игнорирует физический датчик скорости и подставляет в ПИД-формулу заданную пользователем константу виртуальной скорости (например, фиксированные сайт заказчика км/ч).
РЕЖИМ 2: «КАЛИБРОВКА ДОЗАТОРА»
РЕЖИМ 3: «КАЛИБРОВКА ПУТИ (100 МЕТРОВ)» (Инженерный режим)
По команде «СТАРТ КАЛИБРОВКИ ПУТИ» STM32 обнуляет счетчик импульсов колеса и начинает инкрементировать каждый входящий импульс таймера.
По команде «СТОП КАЛИБРОВКИ ПУТИ» (после проезда трактором мерных 100 метров) процессор делит сумму накопленных импульсов на 100, рассчитывает коэффициент K_wheel (импульсов/метр) и перезаписывает его в энергонезависимую память (Flash/Эмуляция EEPROM).
4. Протокол обмена HMI (UART -> Nextion)
Связь осуществляется по UART без блокирующих функций (non-blocking IT/DMA).
Направление STM32 -> Nextion: Передача текущей скорости (км/ч), фактических оборотов Вала 1 и Вала 2 (об/мин), оборотов турбины (об/мин), засеянной площади (га), статуса заполнения бункеров (1/0) и кодов аварий (норма/предупреждение/критический стоп).
Направление Nextion -> STM32: Команды смены режимов (Сев / Калибровка дозатора / Калибровка пути), ввод нормы высева (кг/га), ввод веса калибровочного мешка (граммы), ввод скорости для режима эмуляции, команды Старт/Стоп для тестов.
5. Требования к коду и сдаче проекта
Код должен быть модульным. Измерение частоты — строго через прерывания таймеров. Измерение периода на низких RPM методом вычисления дельты тиков таймера между соседними импульсами (diff_capture_val), а не подсчетом импульсов за фиксированную секунду.
Запрещено использование блокирующих задержек (HAL_Delay). Весь тайминг алармов и ПИД-цикла (100 мс) строиться на системных тиках (HAL_GetTick()).
Результат работы: Полностью компилируемый проект в STM32CubeIDE со всеми исходными кодами и комментариями.