Указатель воздушной скорости "Своими руками" АРДУИНО

Anatoliy написал:
И тут не место выставлять собственную приспособляемость к показаниям приборов.


Ага, конечно!
Где то я это уже слышал: «Госдума не место для дискуссий» 😀

Мне кажется категоричность суждений никого не украшает ( не буду приводить точный афоризм).

А наш форум как раз и предназначен для высказывания различных мнений. Как то так наверное...

С уважением...
 
разработчик мог-бы предложить таковой в продажу в том или ином виде по его усмотрению
Мог бы, наверное предложит, сейчас дорабатывает программу по моим хотелкам, к трем основным показаниям(указатель скорости, вариометр и высотомер) добавится куча функций, время, время полета, курс магнитный, указатель скольжения,тахометр, 2ТГЦ, указатель уровня топлива и прочее, вплоть до авиагоризонта . Может комплектовать от самого простого набора (3 прибора, как у меня) и далее, по пожеланию заказчика. Но когда жаждущие слышат цену от 10тр, - глаза сразу потухают, и ставит народ старые будильники, целый иконостас иногда, неважно, что тяжелые и пользоваться неудобно, но зато они есть, и вид у приборки"авиационный".
Да и приборчик ( с расширенными возможностями) надо ещё сделать и довести до ума.
 
Судя по всему приборчик хороший

Да не проблема это совсем в наше время, я такие приборы еще 3 года назад сделал. Проблема скорее всего видимо действительно в привычке. В процессе тестирований электронных приборов, снял кино, думаю будет интересно тем, кто использует будильники, наверняка каждый считает что его прибор, самый точный. Так вот собрал я у ребят все будильники в кучу, и сравнил их и между собой, и с цифровыми, приборами, оказалась интересная картина, все будильники показывают по разному на разных режимах, +- 10 км/ч. цифровые же между собой +-1 км/ч. Если время пересчета сделать 1 секунду, то показания вообще стабильные, даже при порывах. Читал на форуме, где-то в приборах, как проверить будильник на правильность показаний по U образному водяному столбу по таблице, так вот скажу тем кто еще не пробовал, это тот еще геморрой.  Например для скорости 100 км/ч, столб водяного столба должен быть 48,3 мм.вод. ст. попробуйте ка отловить на стеклянной трубке такое значение. А с цифровым датчиком, без проблем. Например для MPXV5004, просто пересчитываем мм. в Кпа, и прошиваем точное значение, 48,3 = 0,473 Кпа, 1 Кпа=1 вольт, и точнее некуда. Да, есть недостатки у датчиков, это температурная зависимость, но и это решаемо. Как нибудь позже, сниму кино про этот момент. Выводы делает каждый сам. На комплексном приборе скачут цифры, не обращайте внимания, просто не подключены датчики.
https://www.youtube.com/watch?v=J55T12Y-jFA
https://www.youtube.com/watch?v=ZKwcgwWq16g&t=84s

Но когда жаждущие слышат цену от 10тр, - глаза сразу потухают
На видео, третий по счету УС-250, который безбожно врет, товарищ купил за 7 тыр., совсем новый, ни разу не одеваный.
 
...когда жаждущие слышат цену от 10тр, - глаза сразу потухают...
Это цена в той комплектации, как у Вас?
Да. Показывает скорость, высоту и скороподъёмность. Слева большая цифра - скорость , справа/вверху высота, справа/внизу- вариометр. Ну и светодиод моргает на опасных скоростях.
 

Вложения

  • ______4.jpg
    ______4.jpg
    11,7 КБ · Просмотры: 153
  • IMG_20160910_140029-1.jpg
    IMG_20160910_140029-1.jpg
    45,5 КБ · Просмотры: 145
эх попался в руки мне маркер....
 

Вложения

  • variant_dizajna.jpg
    variant_dizajna.jpg
    61 КБ · Просмотры: 155
в таком виде и оставлю до проведения лётных испытаний.
Скетч такой:

#include <Servo.h>
#include <Wire.h>
#include <BMP085.h>

BMP085 dps = BMP085(); 
Servo myservo1;  // указатель скорости
Servo myservo2;  // указатель высоты
long  Altitude = 0;//переменная для высоты
long  Pressure = 0;//переменная для давления
long  Alt_0 = 0;   //переменная для относительной высоты
int mpxv = 3;  // пин подключения MPXV
int val1;    // градусы отклонения указателя скорости
int val2;    // градусы отклонения указателя высоты
int prev_val2;    // градусы отклонения указателя высоты в предидущем такте

byte knop = 7; // кнопка установки начального уровня
byte redD = 3; //светодиод вверх
byte grinD = 2;//светодиод вниз
byte Alarm = 4;//светодиод "ОПАСНО"
byte Flag_redD = 0; //флаги для мигания
byte Flag_grinD = 0;
byte Flag_Alarm = 0;
byte on_Alarm = 0; //вкл.откл. светодиода
byte on_redD = 0;
byte on_grinD = 0;
int value =0; // переменная для хранения прочитанного значения
int timer01 = 0; //таймер мигания
int StartADC = 500;//начальное значение преобразования АЦП
int timer02 = 0; // таймер основного цикла
byte t_timer = 10; //период таймера
void setup()
{
  myservo1.attach(10);  // настройка сервомоторов указателей (9G)
  myservo2.attach(11);
  myservo1.write(0);
  myservo2.write(0);
  Serial.begin(9600);
  Wire.begin();
  delay(1000);
  dps.init(); // инициализация BMP085
  pinMode (knop,INPUT); // настройка кнопки
  digitalWrite (knop,HIGH);
  pinMode (redD,OUTPUT);//настройка светодиодов
  pinMode (grinD,OUTPUT);
  pinMode (Alarm,OUTPUT);
  StartADC = analogRead(mpxv); //установка начального значения АЦП

}
void uroven0()    // действия по нажатию кнопки
{
dps.getPressure(&Pressure);
dps.zeroCal (0,Pressure);       //установка нуля высоты
myservo1.write(0);              // инвертируем отклонение, что бы с лево на право
myservo2.write(0);
delay(20);
}


void loop()
{
  val1 = analogRead(mpxv);               // чтение аналогового датчика скорости
  val1 = map(val1, StartADC, StartADC+180, 0, 180);   // перевод диапазона числа АЦП в диапазон углов отклонения 
  dps.getAltitude(&Altitude);            //получение данных о высоте с датчика BMP085
  val2 = (Altitude - Alt_0)/ 100;        //
  val2 = map(val2, 0, 500, 0, 180);      //  перевод диапазона высот в диапазон углов отклонения
  myservo1.write(180-val1);              // инвертируем отклонение, что бы с лево на право
  myservo2.write(180-val2);              //
 

   if (digitalRead(knop) == HIGH) // кнопка нуля высоты
   {
   uroven0(); 
   delay(500);
   }

if (val1<25)                    //условие включения сигнализатора ОПАСНОСТЬ,скорость меньше 60км/ч   
    { on_Alarm = 1;}
   else
    {on_Alarm = 0;}
   
 
 
  if ( timer02 == 25)  // таймер опроса показаний высоты
   {
      if (val2 > prev_val2)  //определение тендендции изменения высоты
        {
          on_redD = 0;       // выключене светодиода противопольжного направления 
          int razn = val2 - prev_val2;   //определение скорости изменения
           if (razn>=1)                  //выбор режимов работы светодиода
             {
                on_grinD = 1;
             }       
         }
      if (val2 < prev_val2)
        {
         on_grinD = 0;
         int razn = prev_val2-val2;
          if (razn<=3)
             {
              //t_timer = 10;
              on_redD = 1;
             }
           if (razn>4)
             {
             // t_timer = 5;
              on_redD = 1;
             }       
         }
       if (val2 == prev_val2)
        {
         on_redD = 0;
         on_grinD = 0;    
         }          
      prev_val2 = val2;         //запоминание предидущего значения          
      
      timer02 = 0;               
   
   }   
      
      
if ( timer01 == t_timer)   //таймер мигания диодов
   {
      if (on_redD)
      {
        if (Flag_redD)
         {
          digitalWrite(redD,LOW);
          Flag_redD = 0;
         }
        else
         {
          digitalWrite(redD,HIGH);
          Flag_redD = 1;
         }
       } 
      else  digitalWrite(redD,LOW);
     if (on_grinD)
      {
        if (Flag_grinD)
         {
          digitalWrite(grinD,LOW);
          Flag_grinD = 0;
          }
        else
         {
          digitalWrite(grinD, HIGH);
          Flag_grinD = 1;
          }
      }         
      else  digitalWrite(grinD,LOW);
      
      if (on_Alarm)
      {
        if (Flag_Alarm)
         {
          digitalWrite(Alarm,LOW);
          Flag_Alarm = 0;
          }
        else
         {
          digitalWrite(Alarm, HIGH);
          Flag_Alarm = 1;
          }
      }         
      else  digitalWrite(Alarm,LOW);
      
      timer01 = 0;
   }
 
  timer01++;
  timer02++;
 
}
 
программисты жду от вас алаверды, скетч можно и попродвинутей. Скорость снижения/подъёма  закодировать в частоте моргания диодов например.

Рetr 663   а что за марка индикаторов , заготовку делать можно сразу с двумя лицевыми панелями, с цифрой и со стрелками.
 
Да. Показывает скорость, высоту и скороподъёмность. Слева большая цифра - скорость , справа/вверху высота, справа/внизу- вариометр. Ну и светодиод моргает на опасных скоростях.
То, что он показывает, я понял еще в когда Вы его впервые выкладывали. В принципе с учетом того, что будильники вЕсят намного больше, да и раздобыть их по халявным ценам наверняка все труднее - вполне возможно что 10 рублей за такой приборчик будет для многих вполне приемлемо. Сугубо ИМХО.
 
программисты, жду от вас алаверды
Я при прочтении своего кода спустя месяц мучаюсь дилеммой между "ничего себе, круть!" и "какой кретин это писАл?"
А про чужой... Ничего сказать не могу...

что за марка индикаторов
Что-нибудь из этого списка.
 
Да. Показывает скорость, высоту и скороподъёмность. Слева большая цифра - скорость , справа/вверху высота, справа/внизу- вариометр. Ну и светодиод моргает на опасных скоростях.
А что у Вас за индикаторы там стоят. Мне понравились. Хочу себе такие поставить. А то МЭЛТовские слишком примитивные.
 
Батерея держит максимум 30мин. Столько же правда и заряжается. Ёмкость написанно 5800 мАч. Расчётное потребление 500 мАч. Т.е. либо батарея Г либо зарядка.
Ячейки, что у вас стоят, отвратного качества. 5800 этих китайских милиампер в реале в лучшем случае покажут результат в 10 раз меньше, скорее всего что-то порядка 450-480мАч.
 
Батерея держит максимум 30мин. Столько же правда и заряжается. Ёмкость написанно 5800 мАч. Расчётное потребление 500 мАч. Т.е. либо батарея Г либо зарядка.
Какая батарея? Если на основе элементов 18650 (как у ноутбуков) так они не бывают больше 3400 мАч в принципе. Берите элементы где написано "оригинал".
А что так много жрет-то? Там что маленький кипятильник встроен?
 
Какая батарея? Если на основе элементов 18650 (как у ноутбуков) так они не бывают больше 3400 мАч в принципе. Берите элементы где написано "оригинал".
А что так много жрет-то? Там что маленький кипятильник встроен?
Батарея 18650, видимо надо поискать качественней. Жрёт много похоже потому ,что сервы напрямую подкинуты. Надо с резюками играть.
   
В моноблок добавил ПВД (самодел) вес пока не превышает 5500гр.
Бюджет в пределах 3000 р вместе с корпусом.
  В скетч добавил Калмана( с этой же ветки) в показания скорости.Проехал на машине с высунутым в окно прибором - стрелка плавно  показывает, мне понравилось. Шкалу надо ещё подработать, а так даже в таком виде на 70-80 км стрелка находится посредине шкалы. За 200р по случаю приобрёл шильд гироскоп-акселерометр MPU 6550. Подкинул, решил стрелкой вертикаль по шустрому поотображать...........

   не тут то было, с этим девайсом простыми скетчами не обойтись плюс два устройства на шине....Так что ,товарищи, у кого есть рабочие варианты для гироскопа на Ардуино делитесь.
 
Батарея 18650, видимо надо поискать качественней.
Я брал Вот эти, емкость соответствует, проверял.

Жрёт много похоже потому ,что сервы напрямую подкинуты. Надо с резюками играть.
Это много даже для серв, тем более без нагрузки, возьмите самые маломощные от каких-нибудь игрушек.

вес пока не превышает 5500гр.
У меня полная приборка с "будильниками"  меньше весит.
 
на днях привинтил гироскоп MPU6050.
Относительно легко получил мгновенные ускорения и угловые скорости, отфильтровал Калманом. В  тупую завёл на индикацию через стрелку(серва). Крутишь прибор, стрелка чётко показывает вертикаль, здорово.Но на этом радость заканчивается т.к.
полученная вертикаль( исходные данные ускорение по оси Y (Foy)) не та вертикаль которая требуется.
  И так, имеем фильтрованные(но с шумом) значения ускорения
Fax,Fay,Faz и фильтрованные значения угловых скоростей Fgx,Fgy,Fgz
   
   Как лучше интегрировать в коде скорости ?
   Как выделить нужный вектор ускорения свободного падения из его суммы с ускорениями обусловленными динамикой.По факту мы имеем эту сумму.

   Отсылки к профессионалам и продавцам не принимаются. В названии ветки есть "Своими руками" ,т.е.  должно быть доступно для самостоятельного освоения.На мега-пупер точный прибор амбиций нет.
   
  Австралийский товарищ сделал подобный проект и выложил код.В среде Ардуино очень трудно анализировать код со множеством неизвестных функций неизвестных библиотек.
Может кто подскажет альтернативную среду разработки?
   
 
 
Назад
Вверх