Обновить

Комментарии 12

А вам это зачем? Вот я понимаю дронов направление распознавать

Вопрос, что там внутри и насколько это будет надежно

Все таки улица, это важность, перепады температуры и пыль

Внутри УЗ излучатель и приемник, практически как в ардуиновских измерителях расстояния. В условиях РФ только снег им мешает, пожалуй. Это уже довольно известное и проверенное решение, просто раньше оно не было доступно на алишке за относительные копейки.

Если это излучатель типа SR04, то там открытая мембрана. Поэтому неблагоприятными факторами будет влага (прямая и конденсат), та же влага а замершем состоянии (не только снег) ну и пыль, как самый главный враг всех мембран.

Если это герметичный датчик, как в парктрониках, то не понятен вообще принцип действия.

Поэтому я и спросил, сто внутри. Несколько пар раздельных приемников/передатчиков повернутых друг от друга, чтобы мерить направление? Открытых или закрытых?

В заводских вариантах закрытые обычно, больше на парктроник похожи, да. А что с ними не так, принцип тот же. Вот довольно старая, но актуальная статья на эту тему с расчетами: https://www.dl1glh.de/ultrasonic-anemometer.html мы как-то в своё время пытались повторить, но повторялка тогда еще не выросла, как оказалось ))

А еще пишут, что датчики очень чувствительны к метеоусловиям, правильности установки и полному соблюдению геометрии корпуса.

Хотя, имея возможность периодической калибровки, все это вещи не сильно существенные.

Ну да, там основная сложность и стоимость в алгоритмах обработки сигнала, так то особой проблемы нет - воткнуть 4 (или даже 3) датчика друг напротив друга. Видимо поэтому сейчас готовые датчики и стали дешевле - SoC значительно прибавили в производительности и упали в цене )

Всегда диву даюсь почему встроенщики так не любят 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 программист и подавно должен быть сообразительнее, тем более что код самодокументируемый получается.

у вас получилось в два раза сложнее, хотя гораздо проще было бы сделать обычным массивом.

Хотя тут, в принципе, можно обойтись (degr+11)/16

Переход на ультразвуковой датчик действительно снимает проблему механических анемометров, но при эксплуатации зимой в мороз пьезоизлучателям всё же не помешает встроенный подогрев, а то из-за налипающего снега могут искажаться показания

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации