Ветромер

Прошивка

Текущая версия 3.2.1. Написана на C, без операционной системы, около 9 КиБ кода.

Загрузка

На плате выведен разъём SWD и встроенный загрузчик через ту же линию RS-485, поэтому после монтажа на мачту снимать плату не придётся.

# первая прошивка, через программатор
make flash

# обновление по линии, станция с адресом 3
vmctl -p /dev/ttyUSB0 -a 3 update vm3-3.2.1.bin

Первичная настройка

vmctl -p /dev/ttyUSB0 ping
vmctl -p /dev/ttyUSB0 set addr 3
vmctl -p /dev/ttyUSB0 -a 3 set north 0
vmctl -p /dev/ttyUSB0 -a 3 save

Новая плата откликается на адрес 1, так что подключать к линии станции лучше по одной. Без команды save изменения пропадут после перезагрузки.

Калибровка скорости

Самый честный способ — стенд, но подойдёт и автомобиль в безветренный день:

  1. Закрепите анемометр на вытянутой штанге не ниже 1,5 м над крышей.
  2. Едьте по ровной дороге с постоянной скоростью 30, 50 и 70 км/ч в обе стороны.
  3. Запишите частоту импульсов командой vmctl monitor --raw.
  4. Постройте прямую методом наименьших квадратов и запишите наклон в регистр 1.
Скорость, км/чм/сЧастота, ГцКоэфф., м/с на Гц
308,3311,80,706
5013,8919,90,698
7019,4427,80,699

Логика работы

Основной цикл опирается на таймер с периодом 1 с. Импульсы считаются аппаратным захватом, поэтому пропуски практически невозможны даже при штормовом ветре. Порыв — максимальное среднее за скользящие три секунды, как принято в метеорологии. Направление усредняется как вектор, а не как число: иначе среднее от 350° и 10° оказалось бы равно 180°.

Неполадки

СимптомВероятная причинаЧто сделать
Нет ответа на pingперепутаны A и Bпоменять местами, это безопасно
Редкие ошибки CRCнет терминатора120 Ом на обоих концах
Скорость 0 при ветреподшипник с густой смазкойпромыть, каплю масла
Румб «скачет»окисление геркона, влагапроверить герметичность, флаг 1
Зимой всё по нулямлёд на роторефлаг обледенения, подогрев — опция