Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Акустический вариометр (сверхчувствительный барометр)

Компоненты и расходные материалы

SparkFun Arduino Pro Mini 328 - 3,3 В / 8 МГц
× 1

Об этом проекте

Введение:

Это инструмент, который используют пилоты во время полетов (планер, параплан, ганглайдер, воздушный шар и т. д.), чтобы помочь найти ядро ​​термиков и лучше и лучше подниматься в воздухе.

Краткое описание:

Это очень чувствительный барометр, издающий звуки при подъеме (подъем), а также при опускании (спуске). Звуковые сигналы представляют собой простые звуковые сигналы, каждую секунду или два звуковых сигнала в секунду или более во время набора высоты (большая скорость набора высоты =более высокая частота звуковых сигналов):он настолько чувствителен, что начинает пищать сразу после нескольких сантиметров (!) В секунду; вы можете попробовать медленно поднять руку держа в руке Vario для получения звука. В случае снижения скорости он издает длинные (непрерывные) звуковые сигналы со скоростью -1 м / с или более.

Список компонентов:

  • Arduino Pro Mini 3.3v 8 Mhz в качестве микроконтроллера
  • Датчик атмосферного давления GY-63 (MS5611) 3,3 В
  • Переключатель 8
  • Зуммер (активен с внутренним генератором)
  • Мультиплексор 8x1 4051 3,3 В
  • LiPo аккумулятор 1 сек., 3,7 В, 350 мАч + красный / черный провод 10 см и разъемы M + F.
  • Модуль повышения напряжения + зарядное устройство USB LiPo, TP5400 от AZDelivery;
  • Несколько резисторов, сетевое сопротивление 8x4,7 кОм, 220, 2x10 кОм и конденсаторы 47 мкФ, 470 мкФ.
  • Восстанавливаемый предохранитель 0,5 А
  • Маленькая пластиковая черная коробка из АБС-пластика, размер 78x39x22 мм.
  • Скользящий переключатель.
  • 6-контактный гнездовой разъем (для FTDI)
  • 17-контактный штекер (2x, 2x, 2x, 2x, 2x, 4x, 1x, 1x и 1x)
  • 4 контакта, вилка 90 ° для цепи P-сенсора
  • 30 см жесткого провода, покрытого пластиком, для перемычек и соединений.
  • Зеленый шнур

На схеме Fritzing выше показано все вам нужно построить схему. Обратите внимание, что коричневый «керамический конденсатор», прямо под черным переключателем, представляет собой сбрасываемый предохранитель (я не нашел для него подходящей конструкции). Вместо 8 резисторов я использовал один компонент, резисторную сеть, она включает 8 x 4,7 кОм, все они внутри; посмотрите на следующее изображение, чтобы найти его, его трудно найти, это черный в верхней части синего переключателя, у него девять контактов, один общий, остальные восемь для резисторов. Файл схемы Fritzing для загрузки доступен ниже.

Значение переключателя:

Мне понравилось использовать синий двухпозиционный переключатель , 8 очень маленьких переключателей включения / выключения в одном цветном корпусе для выбора и изменения параметров работы вариометра. Это таблица для этих параметров, показанная выше и объясненная здесь следующим образом:

  • 1 - не используется
  • 2 - низкий или высокий уровень громкости
  • 3 и 4 - сигнал понижения м / сек:-999-1-2-3
  • 5 и 6 - частота звукового сигнала Гц:+1 +1,5 +2 +3
  • 7 и 8 - чувствительность м / сек:+0,0 +0,1 +0,2 +0,5

Контакт 1 не используется , любое положение, включено или выключено, ничего не меняет.

Контакт 2 изменяет уровень громкости зуммера; он работает электрически:когда контакт включен, он замыкает резистор последовательно с зуммером и пропускает больший ток, чтобы издавать более громкие звуковые сигналы.

Штифты 3 и 4 устанавливают уровень погружения (вниз), ниже которого Vario будет воспроизводить beeeeeeeeep; пины используются как двоичный код, два бита, 4 настройки:00 =0, 01 =1, 10 =2 11 =3; вы можете установить сигнал опускания на -999 м / сек (это означает отсутствие предела, он никогда не будет издавать звуковых сигналов) с контактом 3 =выключено и контактом 4 =выключено (двоичное 00); вы можете установить другие значения на -1, -2 или -3 м / сек соответственно с контактом 3 =выключено / 4 =включено, 3 =включено / 4 =выключено и 3 =включено / 4 =включено. Например, в позиции 2 Vario будет гудеть только при скорости снижения более -2 м / сек. Для тестирования попробуйте воспользоваться лифтом ... спустившись с этажа № 3 на этаж № 0, или быстро пробежать по лестнице…

Контакты 5 и 6 устанавливают частоту звукового сигнала . , они работают вместе как двоичный код, как описано выше для другой пары контактов; при той же скорости набора высоты, установленной на + 2 Гц, будет гудеть быстрее, чем при +1 Гц. Некоторым нравится медленный гудок и меньше "стресса" :-)

Контакты 7 и 8 устанавливают чувствительность прибора :+0.0 означает максимальную чувствительность при движении вверх, для подачи сигнала требуется скорость менее 10 см / сек; в этом положении прибор иногда издает звуковой сигнал, даже устойчивый, фиксируя очень небольшие изменения давления (т.е. закрытие двери в комнате может немного увеличить давление воздуха); он также улавливает обычные электрические «шумы», но довольно стабилен и полезен. В четвертой позиции у нас есть чувствительность +0,5 м / сек, значительно менее чувствительная к изменениям давления воздуха, вам нужно «намного» больше скорости, чтобы набрать высоту, чтобы получить звуковой сигнал. Для тестирования попробуйте воспользоваться лифтом ... с этажа № 0 на этаж № 3…

С точки зрения электронной схемы контакты 1 и 3-8 считываются аналогично микросхемой мультиплексора 4051, затем программное обеспечение решает, включен он или выключен, значения> 512 или нет:у него 8 входов на 1 общий порты, подключенные к Arduino в качестве входа. Чтобы выбрать, какой из 8 портов считывать положения включения / выключения Dipswitch, MCU (Arduino) устанавливает 3 бита на выходе, которые вы уже знаете, как он работает:000, 001, 010, 011, 100, 101, 110, 111 (0, 1, 2, 3, 4, 5, 6, 7 =8 портов =8 переключателей). Взгляните на код функции «readDIPswitch ()».

Обратите внимание на батарею:

Два резистора 10 кОм вместе с конденсатором 47 мкФ работают как делитель напряжения для проверки напряжения батареи. Известно, что LiPo критически важен при разряде ниже 3,3 В по этой причине каждые 10 секунд (BATTinterval) вызывается функция «checkBATT ()», и в случае низкого напряжения зуммер сообщит вам 6 коротких звуковых сигналов в секунду. Не ждите слишком долго, чтобы выключиться, и скоро зарядитесь!

Очень ВАЖНО не забыть сделать в коробке хотя бы одно ОТВЕРСТИЕ, чтобы пропускать воздух для изменения давления датчика. Я проделал два отверстия, как вы видите на картинке:одно предназначено для прослушивания звуковых сигналов зуммера, а второе - для отображения светодиода состояния зарядки при подключении к кабелю micro USB и зарядному устройству. Ах да, это еще одно отверстие для micro USB. С отверстиями вариометр больше не является водонепроницаемым ...

Зеленый шнур нужен, чтобы надежно зацепить его где-нибудь на борту:ни в коем случае нельзя терять!

Печатная плата:

Используется односторонняя печатная плата, по этой причине мне пришлось включить несколько перемычек (пунктирные) для решения маршрутов для всей цепи. Далее следует лицевая сторона компонентов, но ниже у вас есть как файлы, компоненты, так и поверхности припоя, зеркальные, для загрузки и печати с помощью лазерного принтера на «желтых» или «синих» листах. Я использовал желтые, но они говорят, что синие лучше (цена выше). При печати не забудьте отключить настройки экономии тонера, вместо этого используйте разрешение 1200 dpi, чтобы получить действительно глубокий черный результат. Процесс переноса тонера с волшебных листов на печатную плату осуществляется с помощью горячего утюга ... Печать обеих сторон печатной платы делает проект «профессиональным».

Используются дюжина выводов Arduino. Паять неиспользуемые контакты не нужно и не обязательно:пусть бесплатно. Поместите 6-контактный гнездовой разъем на верхнюю поверхность Mini Pro, чтобы в случае необходимости в будущем можно было подключить интерфейс FTDI для дальнейших обновлений программного обеспечения.

Схема повышающего питания USB размещается вверх дном. Чтобы удержать его на месте, используйте два прочных контакта, обычные штыревые контакты, используемые для Arduino, но без пластикового ремня, рядом с разъемом USB, на котором написано «Power USB»:используйте припой, чтобы собрать все вместе, два контакта и разъем USB. 3 провода соединяют клеммы Gnd-, Batt + и Out + с этой схемой.

Барометрический датчик:

Датчик барометрического давления GY-63 (MS5611), P-Sensor на печатной плате, заключен в небольшую печатную плату, и Arduino связывается с ним через шину i2c. Использование простое, он также включает датчик температуры, который я не использовал.

Программа вызывает функцию «readPSensor ()», которая является ядром программного обеспечения. Нам нужно относительное изменение из высота, функция считывает много раз в секунду и накапливается в PrexTotal; каждые полсекунды (PrexInterval) он вычисляет среднее изменение высоты и подает звуковой сигнал или долго beeeeeeep, учитывая настройки двухпозиционного переключателя. Этого простого способа фильтрации данных вполне достаточно; Я попробовал интересный способ фильтрации Калмана, а также сложные алгоритмы фильтрации Мэджвика и Махони, без существенных преимуществ для этой цели проекта.

Обновления / советы:

Вот и все. Мне очень понравился этот проект! Тоже сделай! :-)

Марко Зонка

Код

  • Код акустического вариометра
Код акустического вариометра Arduino
 / * Этот эскиз действует как Вариометр для парапланеризма, Марко Зонка, 2020 Arduino MiniPro 3.3 как CPU, GY-63 (MS5611) датчик барометрического давления, 8 x DIP-переключателей, зуммер, Mux 4051, Lipo 1s 3,7 В 350 мА, 3,7 v -> повышение напряжения 5v + зарядное устройство lipo usb; DipSwitch:1 =не используется 2 =низкая / высокая громкость зуммера hw 3 =\ сигнал тревоги раковины:ВЫКЛ -1,0 -2,0 -3,0 м / сек 4 =/ 5 =\ частота звуковых сигналов:+1,0 +1,5 +2,0 +3,0 Гц 6 =/ 7 =\ sensibility:+0.0 +0.1 +0.2 +0.5 м / сек 8 =/ * / # include  #include  const int muxIOpin =15; const int vbattPin =14; const int muxbit0 =4; const int muxbit1 =5; const int muxbit2 =6; const int buzzerPin =7; const int DIPSWinterval =5000; const int BATTinterval =10000; const int PrexInterval =500; const boolean isDebug =false; чувствительность к float [5 ]; частота с плавающей запятой [5]; сигнализация с плавающей запятой [5]; long n =0; логический двухпозиционный переключатель [9]; падение строки; беззнаковое long prevDIPSWmillis =0; unsigned long prevBATTmillis =0; float n1 =0; float n2 =0; float SensorVBatt =0; double referencePressure =0; unsigned long prevPrexMillis =0; unsigned long currPrexMillis =0; double realPressure =0; float absoluteAltitude =0; float relativeAltitude =0; float avgAltitude =0; float avgPrevAltitude =0; long PrexC 0; float PrexTotal =0; float PrexVario =0; логическое значение FirstCalc =true; Псенсор MS5611; // датчик давленияvoid setup () {Serial.begin (9600); pinMode (muxbit0, ВЫХОД); pinMode (muxbit1, ВЫХОД); pinMode (muxbit2, ВЫХОД); pinMode (buzzerPin, ВЫХОД); чувствительность [4] =0; чувствительность [3] =0,5; чувствительность [2] =0,2; чувствительность [1] =0,1; чувствительность [0] =0,0; частота [4] =0; частота [3] =3,0; частота [2] =2,0; частота [1] =1,5; частота [0] =1,0; Linkalarm [4] =0; Linkalarm [3] =- 3,0; Linkalarm [2] =- 2,0; inkalarm [1] =- 1.0; Linkalarm [0] =- 999,9; readDIPswitch (); psensor.begin (); referencePressure =psensor.readPressure (); if (isDebug ==true) Serial.println («Варио включен»); NewTone (buzzerPin, 4); задержка (750); noNewTone ();} // завершаем setup () void loop () {readPSensor (); если ((prevDIPSWmillis + DIPSWinterval)  =PrexInterval) {avgAltitude =PrexTotal / PrexCounter; // среднее значение if (isFirstCalc ==true) {avgPrevAltitude =avgAltitude; isFirstCalc =false; } PrexVario =(avgAltitude-avgPrevAltitude) * (1000 / PrexInterval); // vario mSec if ((PrexVario <=sensibility [4]) &&(PrexVario> =inkalarm [4])) {noNewTone (); } if ((PrexVario> sensibility [4])) {// поднять сигнал beep + NewTone (buzzerPin, ((int) (PrexVario + frequency [4]))); } if ((PrexVario  512) dipswitch [n] =false; // читать выбранный порт else dipswitch [n] =true; if (isDebug ==true) {if (dipswitch [n] ==false) Serial.print ("0"); иначе Serial.print ("1"); }} // конец для if (isDebug ==true) Serial.println (""); s =0; if (двухпозиционный переключатель [7] ==true) s =s + 2; if (двухпозиционный переключатель [8] ==true) s =s + 1; чувствительность [4] =чувствительность [ы]; если (isDebug ==true) {Serial.print ("Sensibility ="); Serial.println (чувствительность [4]); } s =0; if (двухпозиционный переключатель [5] ==true) s =s + 2; if (двухпозиционный переключатель [6] ==true) s =s + 1; частота [4] =частота [с]; если (isDebug ==true) {Serial.print ("Frequency ="); Serial.println (частота [4]); } s =0; if (двухпозиционный переключатель [3] ==true) s =s + 2; if (двухпозиционный переключатель [4] ==true) s =s + 1; синк. тревога [4] =синк. тревога [с]; если (isDebug ==true) {Serial.print ("SinkAlarm ="); Serial.println (синкалрм [4]); }} // завершаем readDIPswitch () void checkBATT () {// проверяем напряжение липо- / литиевой батареи n1 =analogRead (vbattPin); n2 =(((6.60 * n1) / 1023.00)); SensorVBatt =(n2 + ((n2 * 0,0) / 100)); // произвольная коррекция (не активна =0,0%) if (SensorVBatt <=3.4) {NewTone (buzzerPin, 6,1000); } если (isDebug ==true) {Serial.print ("VBatt ="); Serial.println (SensorVBatt); }} // завершаем checkBATT () 

Изготовленные на заказ детали и корпуса

Схема

vario_R1XzPifiX4.fzz

Производственный процесс

  1. Хранение конфиденциальных данных и управление ими с помощью диспетчера секретов
  2. Барометр-анероид
  3. Чувствительный метод обнаружения дефектов транзисторов
  4. Ультратонкие и высокочувствительные датчики деформации
  5. Чувствительные оптические приемники для космоса
  6. Амстронг® Ультра 650MC
  7. Амстронг® Ультра 650MCT
  8. Амстронг® Ультра 700MC
  9. Амстронг® Ультра 700MCT
  10. Хром сверхвысокой чистоты (UHP Cr)>99,95%