Активная мишень "Орудийный дот"

Автор Zloyuzver, 00:28:45

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Zloyuzver

Работа не спеша продолжается. Надеюсь, что я скоро смогу заняться отладкой кода, имея всю механику на руках. Миша выточил и установил упоры (или как там они называются) на щитке, т.ч. пушка почти готова под покраску. Но сначала - отладка кода, дабы работать с пушкой, не боясь запороть покраску.

IMG-aebc469f46ee636e05762f584895359e-V.jpgIMG-24f55a0de381a8802b18f1f682dbc025-V.jpg  

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

Zloyuzver

Так, пушка уже у меня, но до 15-го марта не смогу ею заняться. Пока у меня вынужденные простой, у Миши работа, как обычно, в самом разгаре.

IMG-d662bcb0f3e0fbbf1be2fa666bc8b8b5-V.jpgIMG-421e5578eeeb5dc3cc57abca05a234c3-V.jpgIMG-4dd8d834ee051dca2eb3a8c80e323f19-V.jpgIMG-4e618767253c8a1b30e503ce97f94272-V.jpg

Zloyuzver

Сохнет после склейки передняя стенка дота с амброзурой. Остальные просто приставлены.

IMG-19010db5f84cf964c0fe7f2079857091-V.jpgIMG-d021986e1464e910fd5bab7cdedd1a6c-V.jpg

Тут промежуточную стенку перевернули в правильное положение

IMG-47407423508991d165745d16a4d9fe81-V.jpg

Пенопласт клеится на столярный ПВА.
Могу сказать одно - Миша, как всегда, на высоте ;)

Zloyuzver

Миша продолжает делать красоту.

1.jpg2.jpg3.jpg

А я потихоньку вернулся к программной части.

Deny

​Не говорите, если это не изменит тишину к лучшему.

Zloyuzver

Очередная порция красотени от Михаила:

01.jpg02.jpg03.jpg04.jpg05.jpg

Zloyuzver

Итак, продолжаю ваять программную и аппаратную части. На текущий момент К ардуине на аналоговый пин подключён стандартный датчик напряжения (обычный делитель напряжения на резисторах). Теперь ардуина отслеживает напряжение аккумулятора (его значение берётся до стабилизатора UBEC 5v/5A).При этом, при включении, мишень автоматически определяет количество банок у подключённого Li-Po аккумулятора. К UBEC можно подключать 2S и 3S аккумуляторы. Исходя из этого я и написал алгоритм определения количества банок:

  float koeff = 0.025635; //значение коэффициента при опорном напряжении 5,25, а при опорном напряжении 4,8 оно равно 0.021875
/*
 * koeff = (опорное напряжение * ((R1+R2)/R2)) / 1024 = (4,48 * ((30000+7500)/7500))/1024 = 0,021875
 * где R1 = 30000 Ом
 *     R2 = 7500 Ом
 */
byte Cell_Akk; // Количество ячеек в аккумуляторе
float Voltaj = 0; // уровень напряжения на аккумуляторе

...

//определение количества ячеек в Li-Po аккумуляторе
  float Start_Volt = 0; // временная переменная напряжения
Start_Volt = analogRead(Voltaj_Pin) * koeff; //определение изначального напряжения на аккуме. Если стартовое напряжение  9,9-12,7v - это 3S аккум. Если 6,6-8,5v - 2S. Если напряжение иное - это или не Li-Po аккумулятор и количество ячеек выставляю = 0, или сильно просаженный Li-Po, что в любом случае будет активировать звуковое предупреждение.
  Serial.print("Start Voltage = ");Serial.print(Start_Volt);Serial.println(" v");
  if ((Start_Volt > 9.90) && (Start_Volt < 12.70)) Cell_Akk = 3;
    else if ((Start_Volt > 6.60) && (Start_Volt < 8.50)) Cell_Akk = 2;
           else Cell_Akk = 0;

Как видно, я заранее измерил напряжение на выходе UBEC, которое ардуина берёт как опорное, и оно равно 5,25v. Исходя из этого был рассчитан коэффициент для измерения напряжения. Ну и потом идёт опрос датчика напряжения и если данные с него выходят за ограничительные параметры, то активируется звуковое предупреждение.

float outputValue = 0;

outputValue = analogRead(Voltaj_Pin) * koeff;
 // Если напряжение < 6.5v при 2-х ячейках аккумом или напряжение < 9.7v при 3-х ячейках, или количество ячеек не определено, то выводится предупреждение о низком заряде аккумулятора и мишень переводится в неактивный режим
 if (((outputValue <= 6.50) && (Cell_Akk == 2)) || ((outputValue <= 9.70) && (Cell_Akk == 3)) || (Cell_Akk == 0))
   {
   PLAY_SOUND(12);  //проигрываем звук Низкий заряд аккумулятора
   delay (40);
   while (digitalRead (MP3_svoboden) == LOW) //ждём, пока проигрывание закончится
         {
         delay (100); //даём ардуине чуток "отдышаться"
         }
   StartPause = millis(); // запись времени начала паузы
   EndPause = false;
   PAUSA(2000);
   }


Также к ардуине на другой аналоговый пин был подключен регулятор громкости. В качестве оного использовался переменный резистор на 10 КОм.
Ну и ниже простой код обработки:

 byte tempVol = map(analogRead(Vol_MP3_Pin), 0, 1023, 0, 30); // временная переменная громкости
 if (tempVol >=29) tempVol = 29; // убираем дребезг 29-30 единиц в крайнем положении резистора
 if (Volume != tempVol) // считываем данные с регулятора громкости
   {
    Volume = tempVol;
    Serial.print ("Громкость ");Serial.print (Volume);Serial.println (" единиц.");
    mp3_set_volume(Volume);
   }

Deny

Руслан, я бы еще выложил схему делителя напряжения, а то для некоторых это темный лес. Спасибо очень  классно, что можно определять банки.
​Не говорите, если это не изменит тишину к лучшему.

Zloyuzver

Не вопрос - вот схема делителя напряжения

2.png

Где в моём варианте (о чём писал в коде):
R1 - 30000 Ом
R2 = 7500 Ом

С таким номиналом резисторов датчик определяет напряжение до 25 вольт максимум, но лучше выше 20 вольт к нему не подключать, дабы иметь страховочный запас. Т.к. полностью заряженный 3S аккумулятор выдаёт 12,6 вольт, а полностью заряженный аккумулятор 2S выдаёт и того меньше - 8,4 вольт, то для моих нужд такого делителя более чем достаточно. Более подробно рассказывать про делитель смысла не вижу - в интернете есть куча доступной и полезной информации по нему, например тут.

юрий

У меня в ПТ делитель сделан на одной подстроечном резисторе и выводит контроль при нажатии на пульте кнопки соответсвенно разряду отклоняется выше или ниже водооталкивающая серовой на пару секунд панель.
Седой Урал куёт победу!!