Прошивка
Текущая версия 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,5 м над крышей.
- Едьте по ровной дороге с постоянной скоростью 30, 50 и 70 км/ч в обе стороны.
- Запишите частоту импульсов командой
vmctl monitor --raw. - Постройте прямую методом наименьших квадратов и запишите наклон в регистр 1.
| Скорость, км/ч | м/с | Частота, Гц | Коэфф., м/с на Гц |
|---|---|---|---|
| 30 | 8,33 | 11,8 | 0,706 |
| 50 | 13,89 | 19,9 | 0,698 |
| 70 | 19,44 | 27,8 | 0,699 |
Логика работы
Основной цикл опирается на таймер с периодом 1 с. Импульсы считаются аппаратным захватом, поэтому пропуски практически невозможны даже при штормовом ветре. Порыв — максимальное среднее за скользящие три секунды, как принято в метеорологии. Направление усредняется как вектор, а не как число: иначе среднее от 350° и 10° оказалось бы равно 180°.
Неполадки
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| Нет ответа на ping | перепутаны A и B | поменять местами, это безопасно |
| Редкие ошибки CRC | нет терминатора | 120 Ом на обоих концах |
| Скорость 0 при ветре | подшипник с густой смазкой | промыть, каплю масла |
| Румб «скачет» | окисление геркона, влага | проверить герметичность, флаг 1 |
| Зимой всё по нулям | лёд на роторе | флаг обледенения, подогрев — опция |