Комментарии 12
А вам это зачем? Вот я понимаю дронов направление распознавать
Вопрос, что там внутри и насколько это будет надежно
Все таки улица, это важность, перепады температуры и пыль
Внутри УЗ излучатель и приемник, практически как в ардуиновских измерителях расстояния. В условиях РФ только снег им мешает, пожалуй. Это уже довольно известное и проверенное решение, просто раньше оно не было доступно на алишке за относительные копейки.
Если это излучатель типа SR04, то там открытая мембрана. Поэтому неблагоприятными факторами будет влага (прямая и конденсат), та же влага а замершем состоянии (не только снег) ну и пыль, как самый главный враг всех мембран.
Если это герметичный датчик, как в парктрониках, то не понятен вообще принцип действия.
Поэтому я и спросил, сто внутри. Несколько пар раздельных приемников/передатчиков повернутых друг от друга, чтобы мерить направление? Открытых или закрытых?
В заводских вариантах закрытые обычно, больше на парктроник похожи, да. А что с ними не так, принцип тот же. Вот довольно старая, но актуальная статья на эту тему с расчетами: https://www.dl1glh.de/ultrasonic-anemometer.html мы как-то в своё время пытались повторить, но повторялка тогда еще не выросла, как оказалось ))
А еще пишут, что датчики очень чувствительны к метеоусловиям, правильности установки и полному соблюдению геометрии корпуса.
Хотя, имея возможность периодической калибровки, все это вещи не сильно существенные.
Всегда диву даюсь почему встроенщики так не любят enum и switch case и предпочитают копипастить if elfse if.
Патамучта If else написано на человеческом языке, который разберет даже пятиклассник, а все эти enum и switch case - на программистском, который надо изучать специально.
Конкструкции типа этой вроде не выглядят как rocket science, чтобы у пятиклассника остались какие-то принципиальные вопросы.
код
typedef enum {
N , // 0,360 С
NNE, // 22.5 ССВ
NE , // 45 СВ
ENE, // 67.5 ВСВ
E , // 90 В
ESE, // 112.5 ВЮВ
SE , // 135 ЮВ
SSE, // 157.5 ЮЮВ
S , // 180 Ю
SSW, // 202.5 ЮЮЗ
SW , // 225 ЮЗ
WSW, // 247.5 ЗЮЗ
W , // 270 З
WNW, // 292.5 ЗСЗ
NW , // 315 СЗ
NNW, // 337,5 ССЗ
} Direction;
byte convert_dir_byte(int degr) //переводим градусы в 16 значений направления
{
if ((degr>=349)||(degr<= 11)) return ( N );
if ((degr>= 12)&&(degr<= 33)) return ( NNE );
if ((degr>= 34)&&(degr<= 56)) return ( NE );
if ((degr>= 57)&&(degr<= 78)) return ( ENE );
if ((degr>= 79)&&(degr<=101)) return ( E );
if ((degr>=102)&&(degr<=123)) return ( ESE );
if ((degr>=124)&&(degr<=146)) return ( SE );
if ((degr>=147)&&(degr<=168)) return ( SSE );
if ((degr>=169)&&(degr<=191)) return ( S );
if ((degr>=192)&&(degr<=213)) return ( SSW );
if ((degr>=214)&&(degr<=236)) return ( SW );
if ((degr>=237)&&(degr<=258)) return ( WSW );
if ((degr>=259)&&(degr<=281)) return ( W );
if ((degr>=282)&&(degr<=303)) return ( WNW );
if ((degr>=304)&&(degr<=326)) return ( NW );
if ((degr>=327)&&(degr<=348)) return ( NNW );
}А уж embed программист и подавно должен быть сообразительнее, тем более что код самодокументируемый получается.
Переход на ультразвуковой датчик действительно снимает проблему механических анемометров, но при эксплуатации зимой в мороз пьезоизлучателям всё же не помешает встроенный подогрев, а то из-за налипающего снега могут искажаться показания

Ульразвуковой датчик ветра