Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Точный барометр на Arduino UNO и Nano: два циферблата, три шаговых двигателя, прогноз погоды

Компоненты и материалы

Arduino Nano R31 шт. (управляет 3-часовым дисплеем и прогнозом)
Arduino UNO (Atmega328 на вероборде)1 шт. (основной барометр + 6-часовой дисплей + RTC)
Датчики давления BMP180 (I2C)2 шт. (по одному на каждый МК)
RTC DS3231 (модуль с AT24C32)1 шт. (на UNO)
Шаговые двигатели NEMA 17 (1.8°, 1А, 13 Н·см)3 шт. (основной, 6ч, 3ч)
Драйверы A49883 шт. (в режиме 1/16 шага)
LCD 20x4 (I2C)2 шт. (инфо-дисплеи)
Источники питания: AMS1117 3.3В (для BMP180), LM2596 (12В→5В)по 1 шт.
Светодиоды 3мм (диапазон, прогноз)10+ шт.
Вероборда, перемычки, корпус (рамки 30×30 см или часы 12")1 компл.

О проекте

Полноценный настенный барометр с аналоговыми циферблатами (стрелки на шаговых двигателях). Три шкалы:

  1. Основной барометр (12"): абсолютное давление в гПа, обновление каждые 10 мин.
  2. 6-часовой тренд: изменение давления за 6 часов.
  3. 3-часовой тренд (повышенное разрешение 0.5 гПа): используется для прогноза погоды.

Все три шкалы имеют расширенный диапазон (±5, ±9 делений) с индикацией LEDs. Два LCD 20x4 внутри показывают детали. Прогноз погоды — 8 LEDs на основе текущего давления и 3-часового тренда (алгоритм Замба/МетОфис).

Сравнение с обычным барометром

Обычный анероидный барометр показывает только текущее давление и требует ручной установки контрольной стрелки. Этот прибор автоматически фиксирует тренды за 3 и 6 часов, выдаёт прогноз по 8 состояниям (ясно, дождь, гроза, переменная облачность и т.д.) и не требует ручной калибровки после настройки.

Расширенный диапазон шкал

При выходе за основной диапазон загораются LEDs: зелёный — отрицательный экстремум (давление падает), красный — положительный. Если выходит за расширенный (±9) — горят оба. Стрелка показывает значение по модулю, нужно прибавить/вычесть 10.

Алгоритм прогноза (8 LEDs)

ДавлениеТренд 3чПрогноз (LEDs)
< 1009 гПа≥ 0 (растёт/стабильно)Clearing (прояснение) + Change
< 1009-1.5 … 0 (медленно падает)Rain (дождь) + Threat
< 1009< -1.5 (быстро падает)Storm (гроза) + Threat
1009–1022-1.5 … +1.5Fair (переменная облачность) + No Change
1009–1022> +1.5Clearing + Fair
1009–1022< -1.5Rain + Change
> 1022≥ 0Dry (сухо) + Fair
> 1022-1.5 … 0Fair + No Change
> 1022< -1.5Change + Threat

Конструкция и монтаж

Вариант 1: Классический корпус часов 12"

Куплен на eBay («case only»). Дуб, петливый циферблат, стекло. Новый циферблат вырезан из алюминия 1.5 мм, декаль — водяной декаль на 잉кжете + акриловый лак.

Вариант 2: Современный корпус из двух фоторамок 30×30 см

Две одинаковые рамы склеены задними стенками — двойная глубина. Циферблат (алюминий) закреплён на усиливающих профилях (уголок алюминиевый + деревянные блоки). Вся электроника на обратной стороне циферблата. Корпус крепится к стене на врезных петлях GTV 270° с быстрым освобождением — прибор открывается как дверца для доступа к настройкам и LCD.

Циферблат и стрелки

Электрика: Вероборда и схемы

Две вероборды: основная (UNO, Nano, драйверы, RTC, BMP180, стабилизаторы) и LED-борда (только светодиоды циферблата, разъемы Dupont для отсоединения). Питание 12В → LM2596 → 5В для логики и двигателей, AMS1117 → 3.3В для BMP180. Важно: электролитический конденсатор 470+ мкФ на входе двигателей (защита A4988 от скачков).

Настройка драйверов A4988

Программная часть

Два независимых скетча: для UNO (основной + 6ч) и для Nano (3ч + прогноз). Обмен — только импульс «час» от UNO к Nano (пин 13 UNO → пин 3 Nano).

Скетч UNO: BarometerA4988_23.ino (основные функции)

Скетч Nano: BarometerA4988_3hour__21.ino

Код (фрагменты, полные файлы в разделе Code)

UNO — ключевые функции

// Замер давления BMP180
status = pressure.startTemperature();
delay(status);
status = pressure.getTemperature(T);
status = pressure.startPressure(3);
delay(status);
status = pressure.getPressure(P, T);
seaPressure = pressure.sealevel(P, ALTITUDE); // ALTITUDE = 118м (Кенли, Саппорт)

// Шаг основной стрелки (1 гПа = 160 шагов 1/16)
stepper.setCurrentPosition(0);
while (stepper.currentPosition() != pressureDiff * 160) {
  stepper.setSpeed(400); stepper.runSpeed();
}

// Часовой импульс для Nano
digitalWrite(hourPulse, HIGH); delay(15); digitalWrite(hourPulse, LOW);

Nano — ключевые функции

// В loop(): ожидание импульса hourPulse (HIGH)
getPressure(); // свой BMP180
// Кольцевой буфер hour0..hour4
hourDiff = hourN - hourN-3; // 3-часовая разница
// Шаг 3ч стрелки: 0.5 гПа = 80 шагов
stepper.setCurrentPosition(0);
while (stepper.currentPosition() != hourDiff * 80) { // знак учитывается
  stepper.setSpeed(400); stepper.runSpeed();
}
// Прогноз — getForecast() по таблице выше

Схемы

Точный барометр на Arduino UNO и Nano: два циферблата, три шаговых двигателя, прогноз погоды
Главная схема (UNO + Nano + драйверы + датчики + RTC + питание)

Видео и таймлапс

Доступно 4K таймлапс-видео: radaр дождя + реакция барометра (стрелки + LEDs прогноза) к проходящему фронту.

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

Производственный процесс

  1. Анероидный барометр: конструкция, история и будущее измерения давления
  2. Тонометр: дизайн, производство и будущие тенденции
  3. Огнетушители: типы, конструкция и будущие тенденции
  4. Точные манометры для промышленности и безопасности: конструкция, материалы, производство
  5. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  6. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  7. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  8. Создание пользовательских LED-часов с будильником — видно с 12 метров
  9. Компактная метеостанция: Arduino Nano + ESP8266, BMP280, OLED / Nokia 5110 LCD
  10. Find Me: Умный поисковик вещей на Arduino и Bluetooth