Электронный барометр своими руками | Библиотека устройств на микроконтроллерах
Давно хотел иметь у себя в хозяйстве барометр. Да все никак не получалось — то дорого, то не попадался, то еще какие-то препятствия. В конце концов решил сделать сам, для чего и приобрел датчики давления MPX4115AP и влажности HIH-4000-004. Оба аналоговые, отсюда следует, что барометр по сути должен представлять из себя двухканальный вольтметр.
За основу я взял барометр из статьи «Небольшая метеостанция своими руками». Оттуда я добросовестно содрал пересчет показаний АЦП в мм.рт.ст. (миллиметры ртутного столба), и % (влажности воздуха).
Схемотехнику изменил, потому что свой проект хотелось сделать с внешним питанием и на светоидодных индикаторах. Их лучше видно, потому что они ярко светятся и имеют большой размер. Да и потребляют они гораздо меньше, чем подсветка ЖКИ.
В результате творческих экспериментов родилась такая схема:
Микроконтроллер Atmega8 — классика жанра, семисегментный индикатор
Цифровая и аналоговая земля на плате разделены. Питание тоже разделено на аналоговое и цифровое и подается через дроссели — 25 мкГн на аналоговые цепи и проводник в ферритовой трубочке на цифровые.
На входе АЦП низкочастотный пассивный RC фильтр с частотой среза 640 Гц для подавления помех. Выводы микроконтроллера AVCC и AREF (собственно как и положено) зашунтированы керамическим конденсаторами по 0,1 мкФ и еще танталовыми по 10,0 мкФ (желтенькие со старых материнских плат).
Для правильной работы датчика влажности, его необходимо вынести за пределы помещения (на улицу), и соединить с платой кабелем (лучше экранированным). Также датчик необходимо защитить от прямого попадания осадков, ведь кристалл совсем открытый.
Написанная мной программа не образец для подражания, но как вариант для начинающих сгодится. Можно, конечно, добавить гашение незначащего нуля в индикаторе влажности — это несложно, а можно покопаться и подправить что-нибудь еще, ведь совершенству нет предела.
Файлы:
Коммерческое использование данного устройства запрещено!
По материалам: http://chipenable.ru/
Барометр
Прибор для измерения атмосферного давления
Статьи | Видео | Пользователи 2011 г.Электронный барометр своими руками
В данном проекте мы рассмотрим подключения датчика давления по интерфейсу I2C к контроллеру Arduino и снятие показаний. Проще говоря мы создадим электронный барометр. В качестве датчика давления мы будем использовать сенсор BMP085 от фирмы Bosch.
Автор: Колтыков А.В.
- Arduino
- Барометр
- Перевод
Похожие статьи:
- Электронный регулятор громкости
- Электронный зоопарк
- Электронный термометр на DS18B20
Метеостанция на Arduino с беспроводным датчиком температуры
Метеостанция собранная на Arduino Uno и Arduino Nano, общающиеся между собой на частоте 433МГц.
Автор: freearduino
- Sprint-Layout
- DS18B20
- Термометр
- Барометр
Похожие статьи:
- Термореле с цифровым датчиком температуры
Барометр на AVR
Рассмотрена схема барометра на микроконтроллере AVR и датчике атмосферного давления BMP180. Данные выводятся на ЖК дисплей.
Автор: Gauss
- Барометр
- AVR
- LCD
- HD44780
- Atmel Studio
- Микроконтроллер
Похожие статьи:
- Частотомер на AVR
Комнатная метеостанция
Устройство на основе двух датчиков (DHT11 и BMP180), рассматриваемое в качестве комнатной метеостанции. Информация о температуре, влажности и атмосферном давлении выводится на ЖК дисплей.
Автор: Gauss
- AVR
- Термометр
- Барометр
- Гигрометр
- HD44780
- LCD
- Atmel Studio
- Микроконтроллер
Похожие статьи:
- Простая домашняя метеостанция
WiFi ESP8266 — новый шаг в проектировании домашних устройств с беспроводным интерфейсом
В статье описан максимально простой процесс изготовления устройств на базе модулей WIFi ESP8266. В описанном варианте используется модуль ESP-07 с внешней антенной и горстка различных датчиков в качестве устройства онлайн домашней метеостанции.
Автор: Gauss
- Wi-Fi
- Sprint-Layout
- ESP8266
- Термометр
- Гигрометр
- Барометр
- TFT
- LCD
- Микроконтроллер
Барометр с расширенными функциями
Простой электронный барометр на основе модуля Arduino и датчика давления BMP180. Барометр позволяет определить атмосферное давление, а также скорость и характер его изменения. Дополнительной опцией является измерение температуры воздуха.
Автор: Starik
- Arduino
- Барометр
РадиоКот :: Простой барометр/термометр на МК.
Простой барометр/термометр на МК.
Всем привет!
Во первых хочу поздравить Кота с днем рождения! Процветать!
Теперь к статье.
«Простой барометр/термометр на МК»
Данная конструкция была разработана по просьбе моего друга — любителя автомобильных путешествий и offroad. Им (другу и сотоварищам) в походах уж очень хочется знать в какую сторону и с какой скоростью меняется атмосферное давление, дабы попытаться понять, что будет с погодой. Он выбрал недорогой индикатор ME-GLCD128x64 представленный на фото:
Устройство собрано на двусторонней ПП, изготовленной методом ЛУТ:
Микроконтроллер был выбран ATMega32 в дип корпусе по причинам: он у меня был, найти другое применение такому большому корпусу (DIP40) я не смог, т.к. в последнее время делаю практически все на SMD.
Датчик давления фирмы HopeRF — HP03M, общающийся с МК по протоколу TWI. Датчики температуры DS18S20 фирмы Maxim.
Часы реального времени были выбраны на микросхеме M41T81 по причинам: наличие коррекции времени и наличие Timekeeper — позволяющего читать текущее время без потерь тактов основного счетчика.
В качестве источника питания решено использовать автомобильный адаптер USB — он выдает 5В при токе до 0.5А. В связи с тем, что при старте двигателя «провалы» в бортовой сети авто довольно большие, то была необходима схема аварийной записи текущих значений в eeprom. Для этого используется развязка питания МК и остальной схемы. Питание МК поддерживается конденсатором 1000 мкф, которого, как показали испытания, достаточно (более чем в два раза) для того, что-бы МК успел записать 6 байт текущих значений датчиков в eeprom. Контроль наличия питания и цепь сброса МК обеспечивают два супервизора питания. Первый следит за напряжением на входе схемы и при пропадании питания выдает лог.0 на int0, тем самым запуская процедуру сохранения. Второй обеспечивает «жесткий» сброс самого МК при понижении его питания — для исключения повреждения eeprom.
В обычном режиме данные записываются в eeprom каждые полчаса. Всего хранятся значения за 2-е суток. Текущее время, полученное с m41t81 преобразуется в кол-во секунд от 2000 года, и на основе этого значения вычисляется текущий адрес для записи (один из 96). После несложных вычислений можно увидеть, что ресурс eeprom выработается приблизительно за 540 лет (каждая ячейка перезаписывается раз в 2-е суток) или при ежеминутном выключении питания за 18 лет. Получасовые данные — это средние значения давления, температуры по каждому датчику, время в секундах (кратное 96) и контрольная сумма CRC16. При старте данные читаются из eeprom и проверяется контрольная сумма каждого блока, если сумма не верна — данные игнорируются. Так-же данные игнорируются если дата их записи превышает 2-е суток (нам такие старые данные не нужны). Аналогично считается и контрольная сумма основных настроек, и если она не верна — считаем, что это первый запуск программы и выставляем все значения по дефолту.
Далее пример работы устройства.
В верхнем левом углу текущее давление в мм.рт.ст и после стрелочки — изменение давления за последние 3 часа. Ниже показания двух датчиков температуры и max/min значения за прошедшие 24 часа. Совсем внизу график изменения давления. (провал в графике — специально на эти полчаса устройство было выключено — следовательно данных нет и показывать нечего)
Меню настроек:
Возможны установки: даты и времени, «поправки» хода часов, поправки давления (для приведения его к текущей высоте), регулировка максимальной и минимальной яркости, время, через которое яркость переключится с максимума на минимум.
Все настройки выполняются тремя кнопками Enter,+,- Для входа в меню настроек необходимо удерживать + и — более секунды.
В основном режиме кнопки + и — не работают и потому сделаны скрытыми. Кнопка Enter переключает яркость экрана с макс. на мин. и наоборот. При длительном удержании подсветка экрана полностью отключается.
Собственно схема устройства:
В архиве: Прошивка, схема, плата, плата в diptrace. Плюс набор различных цифр и символов с сишными кодами.
А вот тут — сайт проекта.
PS: проект будет развиваться, т.к. впереди еще зимние испытания на морозоустойчивость 🙂
Файлы:
Бонус: много цифирок с «C»шными массивами
Прошивка, исходники, схема, плата
Все вопросы в Форум.
Схема. Барометр и термометр на ATmega8
Пределы измерения и погрешность прибора определяются в основном примененными в нем датчиками: температура -55…+125 °С, атмосферное давление 225. 825 мм ртутного столба. Прибор питается напряжением 9 В от гальванической батареи типа «Крона» или сетевого адаптера Потребляемый ток — 30 мА (при выключенной подсветке ЖКИ). Размеры корпуса -118×72-28 мм. Работа прибора была проверена при температуре от -5 до +25 °С Погрешность измерения давления не превысила 4 мм ртутного столба.
Схема барометра и термометра изображена на рис. 1, причем собранный на отдельной плате модуль измерения давления выделен штрихпунктирной линией.
Необходимые для работы датчика тактовые импульсы частотой 32768 Гц вырабатывает кварцевый генератор на элементах микросхемы DD1. В принципе, эти импульсы мог бы формировать и микроконтроллер DD2 с помощью одного из имеющихся в нем таймеров. Но это потребовало бы усложнения программы.
Напряжение 3,6 В для питания датчика В1 и микросхемы DD1 получено с помощью стабилитрона VD1. Резисторы R1—R3 — нагрузочные для линий связывающего датчике микроконтроллером интерфейса I2С и сигнала XCLR Печатная плата модуля измерения давления показана на рис. 2.
Хотя датчик HP03SB содержит и встроенный измеритель температуры, его показания используются программой микроконтроллера DD2 только для уточнения результатов измерения давления. На ЖКИ HG1 вместе со значением давления выводятся показания другого датчика температуры — DS1624 (В2) Причина этого проста — он точнее.
При необходимости датчик В2 можно сделать выносным и расположить там, где температура представляет наибольший интерес. При установке в корпусе прибора этот датчик следует вынести на боковую стенку, сделав в ней окно по его размерам. Иначе неизбежна ошибка на 1,5… 1,8 °С, в чем я убедился на практике.
Напряжение питания +5 В стабилизировано микросхемой DA1. Подстроечным резистором R8 устанавливают наилучшую контрастность изображения на ЖКИ. Кнопкой SB1 включают подсветку его табло. Остальные элементы необходимы для работы микроконтроллера. Элементы R7, R9 С10 VD2 — цепь установки микроконтроллера в исходное состояние Кварцевый резонатор ZQ2 с конденсаторами С11.С12 — частотозадающая цепь тактового генератора микроконтроллера.
На рис. 3 представлен чертеж основной печатной платы прибора а на рис. 4 — расположения деталей на ней. В переходное отверстие показанное залитыми (плата на рис. 2), необходимо вставить и пропаять с двух сторон проволочную перемычку. Для микроконтроллера DD1 должна быть предусмотрена панель, так как в процессе налаживания прибора эту микросхему придется извлекать и вновь устанавливать.
Остановимся на некоторых особенностях датчика HP03SB, общий вид и габаритные размеры показаны на рис. 5. Для определения давления необходимо предварительно прочитать из памяти установленного в приборе экземпляра этого датчика двухбайтные значения коэффициентов С1—С1 и однобайтные значения параметров А—D. Все они индивидуальны для данного экземпляра.
Результаты измерения представляют собой два двухбайтных числа: D1 —давление. D2 — температура. Прочитав их из памяти датчика, программа должна вычислить вспомогательные значения:
А затем — давление воздуха в гектопаскалях:
PhP = X·10/32+C7;
и в миллиметрах ртутного столба:
PHg = PhP·1000/13332.
Более подробные сведения о датчике HP03SB имеются в [1]. Однако необходимо отметить что там указаны неверно адреса внутренней памяти датчика, по которым хранятся его индивидуальные константы. Следует пользоваться теми адресами что приведены в [2]. В приборе можно применить и другие датчики серии НР03. Некоторые из них имеют меньшую точность, другие отличаются конструктивным оформлением.
Работа программы начинается с инициализации портов микроконтроллера и ЖКИ. Успешную инициализацию подтверждает вывод на табло надписи TERMOBAR» (буква Н пропущена). Затем инициализируется датчик давления, считываются его показания, выполняются расчеты, результаты которых преобразуются в двоично-десятичный формат и выводятся на индикатор, занимая три десятичных разряда. Аналогично происходят обработка и вывод на ЖКИ значения температуры. Его целая часть — три разряда, дробная — два разряда. Продолжительность показа значений давления и температуры по 3,5 с.
Подпрограмма Timer_int каждые 70 мин проверяет в каком направлении за это время изменилось давление, и выводит на ЖКИ знаки «↑», «↓», «=». В подпрограммах инициализации и чтения показаний датчиков HP03SB и DS1624 состояние регистра статуса модуля TW1 микроконтроллера не проверяется.
Для чтения коэффициентов и параметров датчика предназначена специальная программа ReadCC, которую необходимо загрузить в программную память микроконтроллера полностью собранного прибора (с подключенным модулем измерения давления), включить его и через несколько секунд выключить. После этого нужно извлечь микроконтроллер и с помощью программатора прочитать содержимое его EEPROM. В нем по адресам, указанным в табл. 1, находятся значения индивидуальных коэффициентов и параметров датчика. Далее необходимо открыть файл рабочей программы барометра-термометра BARO-2 asm, найти в нем фрагмент, приведенный в табл. 2, и исправить значения объявленных там констант в соответствии с прочитанными из EEPROM. Параметр D в программе не используется.
Теперь программа готова к работе с установленным в прибор экземпляром датчика. Остается оттранслировать ее с помощью AVR Studio и загрузить полученный НЕХ-файл в микроконтроллер. Учтите, что аналогичный файл, приложенный к статье, рассчитан на работу с датчиком, имевшимся у автора Если загрузить его в микроконтроллер, прибор с другим экземпляром датчика давления будет работать но давать неточные показания.
В разработке использованы фрагменты программ из [3] и [4]. Подпрограммы преобразования чисел из шестнадцатеричного формата в двоично-десятичный переработаны с учетом разрядности чисел. Подпрограммы перемножения и деления двухбайтных чисел, предназначенные для микроконтроллеров семейства MCS-51, переведены на язык ассемблера AVRASM Меньше всего подверглась изменениям подпрограмма управления ЖКИ, учтены лишь особенности индикатора MT-10S1 а для ввода и вывода сигналов использованы другие порты микроконтроллера.
Прилагаемые файлы: baro-2.zip
ЛИТЕРАТУРА
1. НР03 Series of calibrated sensor module HP03SB — www.hoperf.com/pdf/HP03SB.pdf .
2. HP03 programming guide — www.hoperf.com/pdf/hp03_code.pdf
3. Трамперт В. AVR-RISC микроконтроллеры.— К.. МК-Пресс, 2006
4. Фрунзе А. Микроконтроллеры? Это же просто! Том. 1. — М . Додэка-ХХI 2007.
Н. САЛИМОВ, г. Ревда Свердловской обл.
«Радио» №6 2010г.
Похожие статьи:
Барометрический высотомер
Цифровой термометр
Post Views: 1 365
BMP180 – подключение датчика атмосферного давления | RadioLaba.ru
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <P16F628A.INC>
LIST p=16F628A
__CONFIG H’3F18′ ;Конфигурация микроконтроллера
errorlevel -302 ;не выводить сообщения с ошибкой 302 в листинге
Sec equ 0020h ;вспомогательные регистры счета
Sec1 equ 0021h ;
Sec2 equ 0022h ;
nomer equ 0023h ;регистр хранения кода ascii символа
scetbit equ 0024h ;регистр счета кол-ва бит
perem equ 0025h ;вспомогательный регистр приема/передачи байта по spi, i2c
temp equ 0026h ;вспомогательный регистр счета
tmp_symb equ 0027h ;вспомогательный регистр счета для таблицы данных
oss equ 0028h ;регистр хранения значения точности преобразование результата давления
DIGIT1 equ 0030h ;регистры подпрограммы преобразования двоичного числа
DIGIT2 equ 0031h ;в десятичное по разрядам
DIGIT3 equ 0032h
DIGIT4 equ 0033h
DIGIT5 equ 0034h
DIGIT6 equ 0035h
DIGIT7 equ 0036h
DIGIT8 equ 0037h
DIGIT9 equ 0038h
DIGIT10 equ 0039h
count_1 equ 003Ah
count_2 equ 003Bh
bin_HH equ 003Ch
bin_HL equ 003Dh
bin_LH equ 003Eh
bin_LL equ 003Fh
adr_i2c equ 0040h ;регистры подпрограммы передачи данных интерфейса i2c
tmp_i2c equ 0041h
slave_adr equ 0042h
data_i2c equ 0043h
AC1_LH equ 00A0h ;регистры хранения калибровочных констант датчика BMP180
AC1_LL equ 00A1h
AC2_LH equ 00A2h
AC2_LL equ 00A3h
AC3_LH equ 00A4h
AC3_LL equ 00A5h
AC4_LH equ 00A6h
AC4_LL equ 00A7h
AC5_LH equ 00A8h
AC5_LL equ 00A9h
AC6_LH equ 00AAh
AC6_LL equ 00ABh
B1_LH equ 00ACh
B1_LL equ 00ADh
B2_LH equ 00AEh
B2_LL equ 00AFh
MB_LH equ 00B0h
MB_LL equ 00B1h
MC_LH equ 00B2h
MC_LL equ 00B3h
MD_LH equ 00B4h
MD_LL equ 00B5h
X1_HH equ 00B6h ;регистры для расчета значений температуры и давления датчика BMP180
X1_HL equ 00B7h
X1_LH equ 00B8h
X1_LL equ 00B9h
X2_HH equ 00BAh
X2_HL equ 00BBh
X2_LH equ 00BCh
X2_LL equ 00BDh
X3_HH equ 00BEh
X3_HL equ 00BFh
X3_LH equ 00C0h
X3_LL equ 00C1h
B3_HH equ 00C2h
B3_HL equ 00C3h
B3_LH equ 00C4h
B3_LL equ 00C5h
B5_HH equ 00C6h
B5_HL equ 00C7h
B5_LH equ 00C8h
B5_LL equ 00C9h
B4_HH equ 00CAh
B4_HL equ 00CBh
B4_LH equ 00CCh
B4_LL equ 00CDh
B6_HH equ 00CEh
B6_HL equ 00CFh
B6_LH equ 00D0h
B6_LL equ 00D1h
REGA3 equ 00D2h
REGA2 equ 00D3h
REGA1 equ 00D4h
REGA0 equ 00D5h
REGB3 equ 00D6h
REGB2 equ 00D7h
REGB1 equ 00D8h
REGB0 equ 00D9h
REGC3 equ 00DAh
REGC2 equ 00DBh
REGC1 equ 00DCh
REGC0 equ 00DDh
MTEMP equ 00DEh
MCOUNT equ 00DFh
P_HH equ 00E0h ;регистры хранения значения давления
P_HL equ 00E1h
P_LH equ 00E2h
P_LL equ 00E3h
P_M equ 00E4h ;регистры хранения значения давления в мм рт.ст.
P_L equ 00E5h
T_HH equ 00E6h ;регистры хранения значения температуры
T_HL equ 00E7h
T_LH equ 00E8h
T_LL equ 00E9h
tmp equ 00EAh ;вспомогательный регистр счета
flag equ 007Fh ;регистр флагов
#DEFINE res_lcd PORTB,4 ;присвоение названий линиям ввода-вывода
#DEFINE cs PORTB,5 ;для работы с LCD дисплеем Nokia 5110
#DEFINE dat_com PORTB,6 ;
#DEFINE sdata PORTB,7 ;
#DEFINE sclk PORTA,1 ;
#DEFINE sda PORTB,2 ;линия SDA для подключения датчика BMP180
#DEFINE scl PORTB,3 ;линия SCL для подключения датчика BMP180
#DEFINE sda_io TRISB,2 ;линия направления SDA
#DEFINE scl_io TRISB,3 ;линия направления SCL
#DEFINE led PORTA,0 ;светодиод ошибки i2c
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0000h ;начать выполнение программы с адреса 0000h
goto Start ;переход на метку Start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа
Start movlw b’00000010′ ;установка значений выходных защелок порта A
movwf PORTA ;
movlw b’00110000′ ;установка значений выходных защелок порта B
movwf PORTB ;
movlw b’00000111′ ;выключение компараторов
movwf CMCON ;
bsf STATUS,RP0 ;выбрать 1-й банк
movlw b’00001111′ ;настройка линий ввода\вывода порта B
movwf TRISB ;RB0,RB1 — на вход, остальные на выход
movlw b’11111100′ ;настройка линий ввода\вывода порта A
movwf TRISA ;RA0,RA1 — на выход, остальные на вход
bcf STATUS,RP0 ;выбрать 0-й банк
clrf flag ;сброс регистра флагов
call init_lcd ;вызов подпрограммы инициализации дисплея
call clear_lcd ;вызов подпрограммы очистки дисплея
call viv_not ;вывод на дисплей сообщения «— «
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movlw b’11101110′ ;адрес устройства(BMP180)
movwf slave_adr
call paus ;вызов подпрограммы паузы 5,3 мс
movlw .22 ;загрузка констант из датчика (22 байта) во 2-й банк ОЗУ
movwf tmp_i2c ;
movlw 0xAA ;запись адреса ячейки с которой начнется чтение
movwf adr_i2c ;
bsf flag,3 ;установка флага загрузки констант из датчика
call read_i2c ;вызов подпрограммы чтения по I2C
call err_prov ;проверка на ошибки записи/чтения I2C
bmp_1 call rd_temp ;вызов подпрограммы чтения температуры с датчика BMP180
movlw data_i2c ;загрузка температуры в регистры T
movwf FSR
bsf STATUS,RP0
movf INDF,W
movwf T_LH
incf FSR,F
movf INDF,W
movwf T_LL
bcf STATUS,RP0
movlw .0 ;установка точности измерения давления (16-19бит, 0-3(oss))
movwf oss
call rd_pres ;вызов подпрограммы чтения давления с датчика BMP180
movlw data_i2c ;загрузка давления в регистры P
movwf FSR
bsf STATUS,RP0
movf INDF,W
movwf P_HL
incf FSR,F
movf INDF,W
movwf P_LH
incf FSR,F
movf INDF,W
movwf P_LL
clrf P_HH
bcf STATUS,RP0
movf oss,W ;смещение результата преобразования в регистрах P
sublw .8 ;в соответвтвии с точностью преобразования
bsf STATUS,RP0
movwf tmp
bmp_2 bcf STATUS,C
rrf P_HH,F
rrf P_HL,F
rrf P_LH,F
rrf P_LL,F
decfsz tmp,F
goto bmp_2
call rash_T_P ;вызов подпрограммы расчета температуры и давления
bsf STATUS,RP0 ;копирование расчитанной температуры в регистры bin
movf T_HH,W
bcf STATUS,RP0
movwf bin_HH
bsf STATUS,RP0
movf T_HL,W
bcf STATUS,RP0
movwf bin_HL
bsf STATUS,RP0
movf T_LH,W
bcf STATUS,RP0
movwf bin_LH
bsf STATUS,RP0
movf T_LL,W
bcf STATUS,RP0
movwf bin_LL
call bin2dec ;вызов подпрограммы преобразования двоичного числа в десятичное
call ust_cur_1 ;установка курсора на 1-й строке LCD дисплея
call vivod_temp ;вывод значения температуры на LCD
bsf STATUS,RP0 ;копирование расчитанного давления в регистры bin
movf P_HH,W
bcf STATUS,RP0
movwf bin_HH
bsf STATUS,RP0
movf P_HL,W
bcf STATUS,RP0
movwf bin_HL
bsf STATUS,RP0
movf P_LH,W
bcf STATUS,RP0
movwf bin_LH
bsf STATUS,RP0
movf P_LL,W
bcf STATUS,RP0
movwf bin_LL
call bin2dec ;вызов подпрограммы преобразования двоичного числа в десятичное
call ust_cur_3 ;установка курсора на 3-й строке LCD дисплея
call vivod_p ;вывод значения давления (Паскали) на LCD
bsf STATUS,RP0
movf P_M,W ;копирование расчитанного давления (мм рт. ст) в регистры bin
bcf STATUS,RP0
movwf bin_LH
bsf STATUS,RP0
movf P_L,W
bcf STATUS,RP0
movwf bin_LL
clrf bin_HL
clrf bin_HH
call bin2dec ;вызов подпрограммы преобразования двоичного числа в десятичное
call ust_cur_2 ;установка курсора на 2-ю строку LCD дисплея
call viv_p_mm ;вывод значения давления (мм рт.ст.) на LCD
call paus1s ;пауза 1 сек
goto bmp_1 ;переход на метку bmp_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрорамма чтение температуры и давления с датчика BMP180 по интерфейсу I2C
rd_temp movlw 0x2E ;загрузка команды на преобразование температуры
movwf data_i2c
goto rd_bmp1
rd_pres movlw 0x34 ;загрузка команды на преобразование давления в зависимости
movwf data_i2c ;от точности преобразования результата
movf oss,W
movwf perem
incf perem,F
pres_2 decfsz perem,F
goto pres_1
goto rd_bmp1
pres_1 movlw 0x40
addwf data_i2c,F
goto pres_2
rd_bmp1 movlw .1 ;передача команды на преобразование по I2C
movwf tmp_i2c ;передача одного байта по I2C
movlw 0xF4 ;
movwf adr_i2c ;запись адреса ячейки с которой начнется чтение
call write_i2c ;вызов подпрограммы записи по I2C
call err_prov ;проверка на ошибки записи/чтения I2C
rd_bmp2 call paus ;вызов подпрограммы паузы 5,3 мс
movlw .1 ;проверка окончания преобразования
movwf tmp_i2c ;передача одного байта по I2C
movlw 0xF4 ;
movwf adr_i2c ;запись адреса ячейки с которой начнется чтение
call read_i2c ;вызов подпрограммы записи по I2C
call err_prov ;проверка на ошибки записи/чтения I2C
movlw data_i2c
movwf FSR
btfsc INDF,5 ;проверка бита готовности результата
goto rd_bmp2 ;преобразование не окончено: переход на метку rd_bmp2
movlw .3 ;чтение результата преобразования
movwf tmp_i2c ;передача 3-х байта по I2C
movlw 0xF6 ;
movwf adr_i2c ;запись адреса ячейки с которой начнется чтение
call read_i2c ;вызов подпрограммы чтения по I2C
call err_prov ;проверка на ошибки записи/чтения I2C
return ;выход из подпрограммы
err_prov btfss flag,6 ;проверка ошибок передачи данных I2C
return ;нет ошибок: выход из подпрограммы
err_1 bsf led ;ошибка: включить светодиод led
goto err_1 ;переход на метку err_1: зацикливание программы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rash_T_P bsf STATUS,RP0 ;переключение во 2-й банк
clrf REGA3 ;загрузка значения температуры UT в REGA
clrf REGA2
movf T_LH,W
movwf REGA1
movf T_LL,W
movwf REGA0
clrf REGB3 ;загрузка значения константы AC6 в REGB
clrf REGB2
movf AC6_LH,W
movwf REGB1
movf AC6_LL,W
movwf REGB0
call subtract ;вычитание UT-AC6
clrf REGB3 ;загрузка значения константы AC5 в REGB
clrf REGB2
movf AC5_LH,W
movwf REGB1
movf AC5_LL,W
movwf REGB0
call multiply ;умножение (UT-AC6)*AC5
movlw .15 = X1
movwf tmp
tdel_a1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto tdel_a1
movf REGA3,W ;сохранение результата в регистре X1
movwf X1_HH
movf REGA2,W
movwf X1_HL
movf REGA1,W
movwf X1_LH
movf REGA0,W
movwf X1_LL
btfsc MD_LH,7 ;загрузка значения константы MD в REGB
goto tzag_a1
clrf REGB3
clrf REGB2
goto tzag_a2
tzag_a1 movlw .255
movwf REGB3
movlw .255
movwf REGB2
tzag_a2 movf MD_LH,W
movwf REGB1
movf MD_LL,W
movwf REGB0
call add ;сумма X1+MD
movf REGA0,W ;копирование результата (X1+MD) в REGB
movwf REGB0
movf REGA1,W
movwf REGB1
movf REGA2,W
movwf REGB2
movf REGA3,W
movwf REGB3
btfsc MC_LH,7 ;загрузка значения константы MC
goto tzag_b1
clrf REGA3
clrf REGA2
goto tzag_b2
tzag_b1 movlw .255
movwf REGA3
movlw .11)/(X1+MD) = X2
movf X1_HH,W ;загрузка числа X1 в REGB
movwf REGB3
movf X1_HL,W
movwf REGB2
movf X1_LH,W
movwf REGB1
movf X1_LL,W
movwf REGB0
call add ;сумма X1 + X2 = B5
movf REGA3,W ;сохранение результата в регистре B5
movwf B5_HH
movf REGA2,W
movwf B5_HL
movf REGA1,W
movwf B5_LH
movf REGA0,W
movwf B5_LL
movlw .8 ;загрузка числа 8 в REGB
movwf REGB0
clrf REGB1
clrf REGB2
clrf REGB3
call add ;сумма B5 + 8
movlw .4
movwf tmp
tdel_b1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto tdel_b1
movf REGA0,W ;копируем результат температуры в регистр T
movwf T_LL
movf REGA1,W
movwf T_LH
movf REGA2,W
movwf T_HL
movf REGA3,W
movwf T_HH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
rash_P movf B5_HH,W ;загрузка числа B5 в REGA
movwf REGA3
movf B5_HL,W
movwf REGA2
movf B5_LH,W
movwf REGA1
movf B5_LL,W
movwf REGA0
clrf REGB3 ;загрузка числа 4000 в REGB
clrf REGB2
movlw 0x0F
movwf REGB1
movlw 0xA0
movwf REGB0
call subtract ;вычитание B5 — 4000 = B6
movf REGA3,W ;сохранение результата в регистре B6 и REGB
movwf B6_HH
movwf REGB3
movf REGA2,W
movwf B6_HL
movwf REGB2
movf REGA1,W
movwf B6_LH
movwf REGB1
movf REGA0,W
movwf B6_LL
movwf REGB0
call multiply ;умножение B6 * B6
movlw .12) в регистре X2
movwf X2_HH ;для последующего вычисления, это не X2 из формул расчета
movf REGA2,W
movwf X2_HL
movf REGA1,W
movwf X2_LH
movf REGA0,W
movwf X2_LL
btfsc B2_LH,7 ;загрузка значения константы B2 в REGB
goto pzag_a1
clrf REGB3
clrf REGB2
goto pzag_a2
pzag_a1 movlw .255
movwf REGB3
movlw .255
movwf REGB2
pzag_a2 movf B2_LH,W
movwf REGB1
movf B2_LL,W
movwf REGB0
call multiply ;умножение B2 * [(B6 * B6)/2^12]
movlw .11
movwf tmp
pdel_b1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_b1
movf REGA3,W ;сохранение результата в регистре X1
movwf X1_HH
movf REGA2,W
movwf X1_HL
movf REGA1,W
movwf X1_LH
movf REGA0,W
movwf X1_LL
btfsc AC2_LH,7 ;загрузка значения константы AC2 в REGA
goto pzag_b1
clrf REGA3
clrf REGA2
goto pzag_b2
pzag_b1 movlw .255
movwf REGA3
movlw .11 = X2
movwf tmp
pdel_c1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_c1
movf X1_LL,W ;загрузка числа X1 в REGB
movwf REGB0
movf X1_LH,W
movwf REGB1
movf X1_HL,W
movwf REGB2
movf X1_HH,W
movwf REGB3
call add ;сумма X1 + X2 = X3
movf REGA3,W ;сохранение результата в регистре X3
movwf X3_HH
movf REGA2,W
movwf X3_HL
movf REGA1,W
movwf X3_LH
movf REGA0,W
movwf X3_LL
btfsc AC1_LH,7 ;загрузка значения константы AC1 в REGA
goto pzag_c1
clrf REGA3
clrf REGA2
goto pzag_c2
pzag_c1 movlw .255
movwf REGA3
movlw .255
movwf REGA2
pzag_c2 movf AC1_LH,W
movwf REGA1
movf AC1_LL,W
movwf REGA0
movlw .2 ;умножение AC1 * 4
movwf tmp
pumn_a1 bcf STATUS,C
rlf REGA0,F
rlf REGA1,F
rlf REGA2,F
rlf REGA3,F
decfsz tmp,F
goto pumn_a1
movf X3_LL,W ;загрузка числа X3 в REGB
movwf REGB0
movf X3_LH,W
movwf REGB1
movf X3_HL,W
movwf REGB2
movf X3_HH,W
movwf REGB3
call add ;сумма (AC1 * 4) + X3
bcf STATUS,RP0
movf oss,W ;смещение ((AC1 * 4) + X3)<<oss
xorlw .0
bsf STATUS,RP0
btfsc STATUS,Z
goto pumn_c1
bcf STATUS,RP0
movf oss,W
bsf STATUS,RP0
movwf tmp
pumn_b1 bcf STATUS,C
rlf REGA0,F
rlf REGA1,F
rlf REGA2,F
rlf REGA3,F
decfsz tmp,F
goto pumn_b1
pumn_c1 movlw .2 ;загрузка числа 2 в REGB
movwf REGB0
clrf REGB1
clrf REGB2
clrf REGB3
call add ;сумма [((AC1 * 4) + X3)<<oss] + 2
movlw .2 ;деление ([((AC1 * 4) + X3)<<oss] + 2)/4
movwf tmp
pdel_d1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_d1
movf REGA3,W ;сохранение результата в регистре B3
movwf B3_HH
movf REGA2,W
movwf B3_HL
movf REGA1,W
movwf B3_LH
movf REGA0,W
movwf B3_LL
btfsc AC3_LH,7 ;загрузка значения константы AC3 в REGA
goto pzag_d1
clrf REGA3
clrf REGA2
goto pzag_d2
pzag_d1 movlw .13 = X1
movwf tmp
pdel_e1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_e1
movf REGA3,W ;сохранение результата в регистре X1
movwf X1_HH
movf REGA2,W
movwf X1_HL
movf REGA1,W
movwf X1_LH
movf REGA0,W
movwf X1_LL
btfsc B1_LH,7 ;загрузка значения константы B1 в REGA
goto pzag_e1
clrf REGA3
clrf REGA2
goto pzag_e2
pzag_e1 movlw .255
movwf REGA3
movlw .16 = X2
movwf tmp
pdel_f1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_f1
movf X1_LL,W ;загрузка числа X1 в REGB
movwf REGB0
movf X1_LH,W
movwf REGB1
movf X1_HL,W
movwf REGB2
movf X1_HH,W
movwf REGB3
call add ;сумма X1 + X2
movlw .2 ;загрузка числа 2 в REGB
movwf REGB0
clrf REGB1
clrf REGB2
clrf REGB3
call add ;сумма (X1 + X2) + 2
movlw .2 ;деление ((X1 + X2) + 2)/4 = X3
movwf tmp
pdel_g1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_g1
clrf REGB3 ;загрузка числа 32768 в REGB
clrf REGB2
movlw 0x80
movwf REGB1
clrf REGB0
call add ;сумма X3 + 32768
clrf REGB3 ;загрузка значения константы AC4 в REGB
clrf REGB2
movf AC4_LH,W
movwf REGB1
movf AC4_LL,W
movwf REGB0
call multiply ;умножение AC4 * (X3 + 32768)
movlw .15) = B4
movwf tmp
pdel_h2 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_h2
movf REGA3,W ;сохранение результата в регистре B4
movwf B4_HH
movf REGA2,W
movwf B4_HL
movf REGA1,W
movwf B4_LH
movf REGA0,W
movwf B4_LL
movf P_HH,W ;загрузка числа UP в REGA
movwf REGA3
movf P_HL,W
movwf REGA2
movf P_LH,W
movwf REGA1
movf P_LL,W
movwf REGA0
movf B3_LL,W ;загрузка числа B3 в REGB
movwf REGB0
movf B3_LH,W
movwf REGB1
movf B3_HL,W
movwf REGB2
movf B3_HH,W
movwf REGB3
call subtract ;вычитание UP-B3
clrf REGB3 ;загрузка числа 50000 в REGB
clrf REGB2
movlw 0xC3
movwf REGB1
movlw 0x50
movwf REGB0
bcf STATUS,RP0
movf oss,W ;смещение 50000 >> oss
xorlw .0
bsf STATUS,RP0
btfsc STATUS,Z
goto pdel_k1
bcf STATUS,RP0
movf oss,W
bsf STATUS,RP0
movwf tmp
pdel_j1 rlf REGB3,W
rrf REGB3,F
rrf REGB2,F
rrf REGB1,F
rrf REGB0,F
decfsz tmp,F
goto pdel_j1
pdel_k1 call multiply ;умножение (UP-B3) * (50000 >> oss)
btfsc REGA3,7
goto rash_P1
bcf STATUS,C ;B7 < 0x80000000 (B7 * 2)
rlf REGA0,F
rlf REGA1,F
rlf REGA2,F
rlf REGA3,F
movf B4_LL,W ;загрузка числа B4 в REGB
movwf REGB0
movf B4_LH,W
movwf REGB1
movf B4_HL,W
movwf REGB2
movf B4_HH,W
movwf REGB3
call divide_uns ;беззнаковое деление (B7 * 2)/B4
goto rash_P2
rash_P1 movf B4_LL,W ;B7 >= 0x80000000, загрузка числа B4 в REGB
movwf REGB0
movf B4_LH,W
movwf REGB1
movf B4_HL,W
movwf REGB2
movf B4_HH,W
movwf REGB3
call divide_uns ;беззнаковое деление B7/B4
bcf STATUS,C ;умножение (B7/B4) * 2
rlf REGA0,F
rlf REGA1,F
rlf REGA2,F
rlf REGA3,F
rash_P2 movf REGA3,W ;сохранение результата в регистре P
movwf P_HH
movf REGA2,W
movwf P_HL
movf REGA1,W
movwf P_LH
movf REGA0,W
movwf P_LL
movlw .16 = X1
movwf tmp
pdel_o1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_o1
movf REGA3,W ;сохранение результата в регистре X1
movwf X1_HH
movf REGA2,W
movwf X1_HL
movf REGA1,W
movwf X1_LH
movf REGA0,W
movwf X1_LL
movlw 0xFF ;загрузка числа -7357 в REGA
movwf REGA3
movlw 0xFF
movwf REGA2
movlw 0xE3
movwf REGA1
movlw 0x43
movwf REGA0
movf P_LL,W ;загрузка числа P в REGB
movwf REGB0
movf P_LH,W
movwf REGB1
movf P_HL,W
movwf REGB2
movf P_HH,W
movwf REGB3
call multiply ;умножение (-7357) * P
movlw .16 = X2
movwf tmp
pdel_p1 rlf REGA3,W
rrf REGA3,F
rrf REGA2,F
rrf REGA1,F
rrf REGA0,F
decfsz tmp,F
goto pdel_p1
movf X1_LL,W ;загрузка числа X1 в REGB
movwf REGB0
movf X1_LH,W
movwf REGB1
movf X1_HL,W
movwf REGB2
movf X1_HH,W
movwf REGB3
call add ;сумма (X1 + X2)
clrf REGB3 ;загрузка числа 3791 в REGB
clrf REGB2
movlw 0x0E
movwf REGB1
movlw 0xCF
movwf REGB0
call add ;сумма (X1 + X2)+3791
movlw .4 = P
movf REGA3,W ;сохранение результата в регистре P
movwf P_HH
movf REGA2,W
movwf P_HL
movf REGA1,W
movwf P_LH
movf REGA0,W
movwf P_LL
clrf REGB3 ;загрузка числа 133 в REGB
clrf REGB2
clrf REGB1
movlw 0x85
movwf REGB0
call divide ;деление P/133 получаем значение в мм.рт.столба
movf REGA1,W ;сохранение результата в регистре P_M, P_L
movwf P_M
movf REGA0,W
movwf P_L
bcf STATUS,RP0
return ;выход из подпрограммы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Электронный барометр — chipenable.ru
Давно хотел иметь у себя в хозяйстве барометр. Да все никак не получалось — то дорого, то не попадался, то еще какие-то препятствия. В конце концов решил сделать сам, для чего и приобрел датчики давления MPX4115AP и влажности HIH-4000-004. Оба аналоговые, отсюда следует, что барометр по сути должен представлять из себя двухканальный вольтметр.За основу я взял барометр из статьи «Небольшая метеостанция своими руками». Оттуда я добросовестно содрал пересчет показаний АЦП в мм.рт.ст. (миллиметры ртутного столба), и % (влажности воздуха).
Схемотехнику изменил, потому что свой проект хотелось сделать с внешним питанием и на светоидодных индикаторах. Их лучше видно, потому что они ярко светятся и имеют большой размер. Да и потребляют они гораздо меньше, чем подсветка ЖКИ.
В результате творческих экспериментов родилась такая схема:Микроконтроллер Atmega8 — классика жанра, семисегментный индикатор ВА56-12SRWA в количесве двух штук и источник питания, построенный по типовой схеме. Датчики давления и влажности MPX4115AP и HIH-4000-004 соответственно.
Цифровая и аналоговая земля на плате разделены. Питание тоже разделено на аналоговое и цифровое и подается через дроссели — 25мкгн. на аналоговые цепи и проводник в ферритовой трубочке на цифровые.
На входе АЦП низкочастотный пассивный RC фильтр с частотой среза 640 Гц для подавления помех. Выводы микроконтроллера AVCC и AREF (собственно как и положено) зашунтированы керамическим конденсаторами по 0,1мкф и еще танталовыми по 10,0мкф (желтенькие со старых материнских плат).
Для правильной работы датчика влажности, его необходимо вынести за пределы помещения (на улицу), и соединить с платой кабелем (лучше экранированным). Также датчик необходимо защитить от прямого попадания осадков, ведь кристалл совсем открытый.
Написанная мной программа не образец для подражания, но как вариант для начинающих сгодится. Можно, конечно, добавить гашение незначащего нуля в индикаторе влажности — это несложно, а можно покопаться и подравить что-нибудь еще, ведь совершенству нет предела.
Коммерческое использование данного устройства запрещено!
Электронный барометр для дома — Проекты от пользователей — Статьи
Автор: Сергей
Помню, когда совсем маленьким был, то мой дед никогда не слушал по радио прогноз погоды, он всегда смотрел на свой старенький стрелочный барометр, стрелок у него было как минимум две (точно не помню, ведь столько лет прошло), и никогда не ошибался!
Вот и я давно хотел у себя в хозяйстве иметь барометр, да все никак, то дорого, то не попадался, то еще какие-то препятствия. Но вот начал заниматься микроконтроллерами и стало возможным сделать барометр самому.
Поднакопил я в заначке от любимой жены деньжат и приобрел датчики, MPX4115AP( датчик давления ) и HIH-4000-004( датчик влажности ), почему именно эти? Да просто, потому что в интернете именно по ним есть много информации, да и в продаже они были, хотя и дорогие. Львиная доля стоимости всего устройства пришлась именно на них.
Оба датчика аналоговые, а это значит, что барометр должен представлять из себя двухвходовый вольтметр, с корректировкой показаний АЦП в мм.рт.ст. ( миллиметры ртутного столба ), и % ( проценты влажности воздуха ). Сам пересчет показаний АЦП в мм.рт.ст. , и % я добросовестно взял из статьи «Небольшая метеостанция своими руками» — http://www.avispro.com.ua/doc.php?id=1172
Но представленная в статье конструкция показалась мне избыточной, а мне хотелось сделать проще и обязательно на светодиодных индикаторах, так как они светятся и имеют большой размер, а значит, их будет хорошо видно издалека, и при любом освещении, да и ток потребляют они гораздо меньше чем подсветка ЖКИ.
Я применил индикатор ВА56-12SRWA( светодиодный семисегментный, 3 разряда ), 2 штуки. Они сверхяркие, т.е. можно дополнительно снизить потребляемый ток.
О том, как использовать значения атмосферного давления и влажности воздуха в предсказании погоды можно прочитать, например, здесь — http://www.meteopost.com/info/Pressure/
Вот такая в результате получилась схема:
Разводка платы такая:
На печатной плате общая шина — цифровая и аналоговая разделены.
Питание тоже разделено на аналоговое и цифровое, и подается через дроссели 25мкгн. на аналоговые цепи, а проводник в ферритовой трубочке на цифровые.
На входе АЦП конденсаторы по 0,33мкф на аналоговую землю, и резистор 750ом к датчикам. Это фильтры для снижения всевозможных помех на входы.
Выводы микроконтроллера AVCC и AREF зашунтированы керамическими конденсаторами по 0,1мкф, и еще по 10,0мкф танталовые ( желтенькие со старых материнских плат ).
Для того чтобы показания влажности воздуха были корректными, его необходимо вынести за пределы помещения ( на улицу ), и соединить с платой кабелем ( лучше экранированным ), и конечно защитить от прямого попадания осадков , ведь кристалл датчика совсем открытый. Датчик давления выносить за пределы платы совсем необязательно.
Эта программа, конечно не эталон, но как вариант для начинающих вполне сгодится
Безусловно, можно добавить гашение незначащего нуля в индикаторе влажности, это несложно, можно покопаться и что-то еще поправить, ведь совершенству нет предела.
Я предоставляю читателям полную свободу действий по улучшению кода.
Статья рассчитана на людей, которые любят что-то создавать своими руками, именно для души, и морального удовлетворения.
Замечание: Коммерческое использование материалов данной статьи запрещено!
Фьюзы
Код написан в CodeWizardAVR V2.04.4a
Плата разведена в Sprint-Layout 5.0
Схема нарисована в Splan7.0.0.8_portable_rus
Все это имеется в прилагаемом архиве
BMP180 Подключение датчика барометрического давления
Добавлено в избранное Любимый 11Под давлением!
BMP180 Breakout — датчик барометрического давления с интерфейсом I 2 C («провод»).
Датчики атмосферного давления измеряют абсолютное давление воздуха вокруг них. Это давление зависит как от погоды, так и от высоты. В зависимости от того, как вы интерпретируете данные, вы можете отслеживать изменения погоды, измерять высоту или выполнять любые другие задачи, требующие точных показаний давления.
Рассмотрено в этом учебном пособии
Мы покажем вам, как подключить этот датчик к микроконтроллеру Arduino и использовать прилагаемую библиотеку программного обеспечения для получения результатов измерений от датчика. (Если вы используете микрокомпьютер другого типа, эти инструкции и исходный код все еще могут помочь.) Мы также покажем вам, как интерпретировать показания как для мониторинга погоды, так и для отображения изменений высоты.
Рекомендуемая литература
Эта деталь проста в использовании. Но прежде чем начать, мы рекомендуем следующие базовые знания:
Подключение оборудования
В этом руководстве мы подключим BMP180 к микроконтроллеру Arduino.Если вы используете другой микроконтроллер, не паникуйте. Многие микроконтроллеры имеют интерфейс I 2 C, и вы можете использовать эту библиотеку, таблицу и пример кода, чтобы помочь вам написать собственный код.
Имена подключений
Коммутационная плата BMP180 разрывает пять соединений от ИС. Мы традиционно называем эти соединения «выводами», потому что они исходят от выводов на ИС, но на самом деле это отверстия, к которым вы можете припаять провода или выводы.
Мы подключим четыре из пяти контактов на плате к вашему Arduino.Необходимые вам четыре контакта обозначены + , — , CL и DA .
(Если вам интересно, пятый контакт с надписью IO позволяет вам изменять напряжение ввода / вывода для процессоров с очень низким напряжением (например, 1,8 В). Этот вывод отключен по умолчанию, и обычно вы можете оставить этот вывод отключенным. .)
Подключение проводов к плате
Вы можете использовать любой способ подключения к плате. В этом примере мы припаяем пятиконтактную полоску штыря-штыря и воспользуемся перемычками типа папа / мама для подключения BMP180 к вашему Arduino.
Припаяйте 5-контактный разъем «папа-вилка» к плате. Вы можете припаять его к любой стороне; нижняя часть больше подходит для макетов, а верхняя — для перемычек.
Обратите внимание, что BMP180 чувствителен к влаге. Когда вы закончите пайку, не счищайте флюс, промывая плату водой или другими жидкостями.
Подключение платы к Arduino
Когда вы закончите пайку, подключите контакты +, -, CL и DA к Arduino.В разных моделях Arduino используются разные контакты для интерфейса I 2 C; используйте следующую таблицу, чтобы определить, куда все подключить.
ВАЖНО: Подключите выводы питания (+ и -) ТОЛЬКО к источнику питания 3,3 В. Более высокое напряжение приведет к необратимому повреждению детали. Обратите внимание, что, поскольку I 2 C использует драйверы с открытым стоком, безопасно подключать выводы I 2 C (DA и CL) к порту I 2 C на микропроцессоре 5 В.
BMP180 этикетка | Функция контакта | Подключение Arduino | ||||||
DA (SDA) | I 2 Данные C | Любой контакт с маркировкой SDA или:
| ||||||
CL (SCL) | I 2 Часы C | Любой контакт с маркировкой SCL или:
| ||||||
«-» (GND) | земля | ЗЕМЛЯ | ||||||
«+» (VDD) | 3.Источник питания 3В | 3,3 В | ||||||
IO (VDDIO) | Напряжение ввода / вывода | Оставьте отключенным, если вы не подключаетесь к микропроцессору с более низким напряжением. |
После подключения BMP180 к Arduino мы готовы приступить к работе с программным обеспечением.
Установка библиотеки Arduino
Библиотеки— это наборы программных функций, предназначенных для одной цели, например для связи с определенным устройством.Мы написали библиотеку для Arduino под названием SFE_BMP180, которая позволяет вам легко общаться с датчиком BMP180. Эта библиотека не входит в стандартное программное обеспечение Arduino, но не волнуйтесь, установить новые библиотеки очень просто.
Если вы хотите связать BMP180 с микроконтроллером, отличным от Arduino, исходный код C ++ в библиотеке и информация в таблице могут быть полезны при написании собственного кода.
1. Установите Arduino IDE
Если у вас еще не установлена Arduino IDE (интегрированная среда разработки), загрузите версию для своей системы (Windows, Mac, Linux) с http: // arduino.cc / en / Main / Software и установите его, следуя инструкциям на этом сайте.
Если вам нужна помощь в установке IDE, ознакомьтесь с нашим руководством.
2. Установите библиотеку SFE_BMP180
Arduino версии 1.6 и выше содержит инструменты, помогающие устанавливать библиотеки.
Во-первых, скачайте последнюю версию библиотеки BMP180 по этой ссылке:
Библиотека Arduino SparkFun BMP180Теперь откройте вашу Arduino IDE и в меню выберите Sketch / Include library / Add.ZIP-библиотека. Запрашивающий файл откроется. Перейдите к только что загруженному файлу BMP180_Breakout_Arduino_Library-master.zip и нажмите кнопку «Открыть». Библиотека будет установлена и готова к использованию.
Если вы используете старую версию Arduino или вам нужна помощь в установке библиотеки, вы можете найти подробные инструкции в нашем руководстве по установке библиотеки Arduino.
Выполнение примеров эскизов
Надеюсь, на этом этапе вы установили библиотеку SFE_BMP180 и подключили оборудование к своей Arduino.Теперь мы готовы запустить примеры скетчей.
Запуск примера эскиза
Библиотека, которую вы только что установили, включает в себя два примера эскизов, показывающих основные операции BMP180. Они разработаны как схемы, которые помогут вам написать собственный код.
После установки библиотеки запустите Arduino IDE и откройте следующий пункт меню: Файл / Примеры / Sparkfun BMP180 / SFE_BMP180_example.
(Если вы не видите этот пункт меню, возможно, вы неправильно установили библиотеку или не перезапустили Arduino IDE.Взгляните еще раз на страницу установки библиотеки, чтобы увидеть, не пропустили ли вы какие-либо шаги.)
Когда откроется пример, загрузите его в Arduino (не забудьте выбрать правильный тип платы и последовательный порт) и откройте Serial Monitor на 9600 бод. Вы должны увидеть некоторую диагностическую информацию (если устройство не может найти устройство, дважды проверьте соединения оборудования), а затем показания давления. Дополнительные сведения о давлении см. В следующем разделе «Измерение погоды и высоты». Показания в вашем терминале должны выглядеть примерно так, с данными, более соответствующими вашему текущему местоположению.
Написание собственных набросков
Комментарии и код в примере скетча должны помочь вам начать писать свои собственные скетчи. Во многих случаях вы сможете скопировать и вставить пример кода в свой собственный набросок.
Измерение погоды и высоты
BMP180 был разработан для точного измерения атмосферного давления. Атмосферное давление меняется в зависимости от погоды и высоты; вы можете измерить и то, и другое с помощью этого датчика.Вот как:
Что такое атмосферное давление?
Определение давления — это сила, «давящая» на область. Обычная единица давления — фунты на квадратный дюйм (psi). Один фунт на один квадратный дюйм равен одному фунту на квадратный дюйм. Единица СИ — ньютоны на квадратный метр, которые называются паскалями (Па).
Существует множество ситуаций, в которых можно измерить давление (сила тяжести, сила тяги и т. Д.), Но сейчас нас интересует атмосферное давление , то есть сила, которую окружающий воздух оказывает на все вокруг.Вес газов в атмосфере создает атмосферное давление. Обычно никто не замечает, что воздух что-то весит, но если вы возьмете столб воздуха шириной в один дюйм от уровня моря до верхних слоев атмосферы, он будет весить около 14,7 фунтов. (Столб воздуха шириной 1 см будет весить около 1 кг.) Этот вес, давящий на след этого столба, создает атмосферное давление, которое мы можем измерить с помощью датчиков, таких как BMP180.
Потому что столб воздуха шириной в дюйм весит около 14.7 фунтов и давит на один квадратный дюйм, из этого следует, что среднее давление на уровне моря составляет около 14,7 фунтов на квадратный дюйм (psi), или 101325 паскалей. Это упадет примерно на 4% на каждые 1000 футов (или 300 метров) вашего подъема. Чем выше вы подниметесь, тем меньше давление вы увидите, потому что столб в верхней части атмосферы намного короче и, следовательно, меньше весит. Это полезно знать, потому что, измерив давление и выполнив некоторые вычисления, вы можете определить свою высоту.
Интересный факт: Давление воздуха на высоте 12 500 футов (3810 метров) составляет лишь половину от давления на уровне моря.Другими словами, половина массы атмосферы находится ниже 12500 футов, а воздух на высоте 12500 футов вдвое плотнее, чем на уровне моря. Неудивительно, что тебе там тяжелее дышится.
BMP180 выдает абсолютное давление в паскалях (Па). Один паскаль — это очень небольшое давление, примерно такое же, как лист бумаги, лежащий на столе. Чаще вы будете видеть измерения в гектопаскалях (1 гПа = 100 Па) или килопаскалях (1 кПа = 1000 Па). Предоставляемая нами библиотека Arduino выводит значения с плавающей запятой в гПа, что также составляет один миллибар (мбар).
Вот некоторые преобразования в другие единицы давления:
1 гПа = 100 Па = 1 мбар = 0,001 бар
1 гПа = 0,75006168 Торр
1 гПа = 0,01450377 фунтов на квадратный дюйм (фунт на квадратный дюйм)
1 гПа = 0,02953337 inHg (дюймы ртутного столба)
1 гПа = 0,00098692 атм (стандартные атмосферы)
Температурные эффекты
Поскольку температура влияет на плотность газа, а плотность влияет на массу газа, а масса влияет на давление (фу), атмосферное давление будет резко меняться с температурой.Пилоты знают это как «плотную высоту», что позволяет легче взлетать в холодный день, чем в жаркий, потому что воздух более плотный и имеет больший аэродинамический эффект.
Для компенсации температуры в BMP180 есть неплохой датчик температуры, а также датчик давления. Чтобы измерить давление, вы сначала снимаете показания температуры, а затем объединяете их с необработанными показаниями давления, чтобы получить окончательное измерение давления с температурной компенсацией. (Не волнуйтесь, библиотека Arduino упрощает все это.)
Измерение абсолютного давления
Как мы только что упомянули, если ваше приложение требует измерения абсолютного давления, все, что вам нужно сделать, это получить показание температуры, а затем выполнить измерение давления (см. Примерный эскиз для подробностей). Окончательное значение давления будет в гПа = мбар. При желании вы можете преобразовать это значение в другую единицу, используя указанные выше коэффициенты пересчета.
Обратите внимание, что абсолютное давление атмосферы будет зависеть как от вашей высоты, так и от текущих погодных условий, и то и другое полезно измерить.
Наблюдения за погодой
Атмосферное давление в любом месте на Земле (или в любом другом месте с атмосферой) непостоянно. Сложное взаимодействие между вращением Земли, наклоном оси и многими другими факторами приводит к перемещению областей с более высоким и низким давлением, что, в свою очередь, вызывает изменения погоды, которые мы наблюдаем каждый день. Наблюдая за изменениями давления, вы можете прогнозировать краткосрочные изменения погоды. Например, падение давления обычно означает, что влажная погода или приближается шторм (входит система низкого давления).Повышение давления обычно означает приближение ясной погоды (проходит система высокого давления).
Но помните, что атмосферное давление также зависит от высоты. Абсолютное давление в Денвере (высота 5280 футов) всегда будет ниже абсолютного давления в Сан-Франциско (высота 52 футов). Если бы метеостанции просто сообщали об их абсолютном давлении, было бы трудно напрямую сравнивать измерения давления из одного места в другое (а крупномасштабные прогнозы погоды зависят от измерений с максимально возможного количества станций).
Чтобы решить эту проблему, метеостанции всегда удаляют влияние высоты из своих сообщаемых показаний давления, математически добавляя эквивалентное фиксированное давление, чтобы оно выглядело так, как если бы показания были сняты на уровне моря. Когда вы это сделаете, показания выше в Сан-Франциско, чем в Денвере, всегда будут из-за погодных условий, а не из-за высоты.
Для этого в библиотеке есть функция под названием seaLevel (P, A)
. Он принимает абсолютное давление (P) в гПа и текущую высоту станции (A) в метрах и устраняет влияние высоты на давление.Вы можете использовать выходные данные этой функции, чтобы напрямую сравнивать ваши показания погоды с показаниями других станций по всему миру.
Для получения дополнительной информации, вот хорошая статья в Википедии о среднем давлении на уровне моря.
Определение высоты
Поскольку давление зависит от высоты, вы можете использовать датчик давления для измерения высоты (с некоторыми оговорками).
Среднее давление атмосферы на уровне моря 1013,25 гПа (или мбар). Это падает до нуля, когда вы поднимаетесь в вакуум космоса.Поскольку кривая этого падения хорошо изучена, вы можете вычислить разницу высот между двумя измерениями давления (p и p 0 ), используя следующее уравнение:
Есть два способа воспользоваться этим.
Если вы используете давление на уровне моря (1013,25 гПа) в качестве базового давления (p 0 ), выходом уравнения будет ваша текущая высота над уровнем моря.
Или, если вы возьмете одно показание давления в вашем текущем местоположении и используете его в качестве базовой линии (стр. 0 ), все последующие показания давления приведут к отклонению относительной высоты от базовой линии.Поднимитесь по лестнице, и вы увидите, что высота упала с нуля до 3-4 метров. Спуститесь в подвал и увидите -3 или -4 метра. В библиотеку входит пример скетча BMP180_altitude_example.ino, который показывает, как это сделать.
В библиотеке есть функция под названием altitude (P, P0)
, которая позволяет выполнять обе эти задачи. Если вы зададите давление на уровне моря (1013,25 гПа) для p 0 и ваше местное давление для p, это даст вам вашу высоту над уровнем моря.Если вы используете измерение местного давления для p 0 , последующие показания давления p покажут вам изменение высоты над базовой линией.
Теперь о предостережениях:
Точность: Насколько это точно? Теоретический уровень шума при максимальном разрешении BMP180 составляет 0,25 м (около 10 дюймов), хотя на практике мы видим шум порядка 1 м (40 дюймов). Вы можете повысить точность, сняв большое количество показаний и усреднив их, хотя это снизит частоту дискретизации и время отклика.
Погода: Вы также должны помнить, что изменения давления из-за погоды повлияют на ваши показания высоты. Наилучшая точность будет достигнута, если вы возьмете «свежий» p 0 , когда он вам нужен, и не будете полагаться на его точность в течение длительного времени из-за изменений погоды.
Максимальная высота: BMP180 не может выполнять измерения вплоть до вакуума (или до космоса). Рекламируемый нижний предел составляет около 300 гПа (или мбар), что соответствует высоте около 3000 м или 30 000 футов.Люди поднимали их на большую высоту и получали полезные результаты, но это не гарантировано и вряд ли будет точным. (Вы можете рассмотреть возможность использования GPS для высотных измерений).
Минимальная высота: Точно так же этот датчик не подходит для больших давлений. Рекламируемый верхний предел составляет 1100 гПа = мбар (или 16 фунтов на квадратный дюйм), что примерно на 500 футов ниже уровня моря (это в воздухе — BMP180 не погружается в воду). Этот датчик не лучший выбор для измерений под водой или сжатым газом.
Советы и хитрости
Чего нужно остерегаться
Дайте ему правильное напряжение: BMP180 будет работать при напряжении от 1,8 В до 3,6 В. Мы рекомендуем использовать его при напряжении 3,3 В. Никогда не подключайте разъем «+» к напряжению выше 3,6 В! . Обратите внимание, что выводы SCA и SDL безопасно подключать к порту I 2 C на Arduino 5 В, поскольку подтягивающие резисторы на плате BMP180 будут поддерживать напряжение ниже 3,6 В.
Подача воздуха: Помните, что BMP180 требуется доступ к окружающему воздуху для измерения давления, поэтому не помещайте его в герметичный корпус.Достаточно небольшого вентиляционного отверстия.
Но не слишком много воздуха: С другой стороны, воздействие быстро движущегося воздуха или ветра может вызвать кратковременные колебания давления, которые повлияют на ваши показания. Защищайте устройство от сильных воздушных потоков.
Держите его в прохладном месте: Поскольку для измерения давления требуется точное показание температуры, старайтесь не подвергать устройство резким перепадам температуры и держите его подальше от близлежащих горячих частей и других источников тепла.
Держать в сухом состоянии: BMP180 чувствителен к влаге. Не погружайте его в воду и не допускайте контакта с жидкой водой.
Не ослепляйте его: Удивительно, но кремний внутри BMP180 чувствителен к свету, который может проникнуть в устройство через отверстие в верхней части чипа. Для максимальной точности защитите чип от окружающего света.
Замена перемычек припоя
Паяльные перемычки — это близко расположенные контактные площадки на печатной плате, покрытые каплями припоя для создания электрического соединения.На коммутационной плате BMP180 есть две такие перемычки; вы можете удалить припой с этих площадок, чтобы разорвать соединение и изменить работу платы.
Чтобы удалить припой с перемычки припоя , накройте ее фитилем и осторожно нагрейте паяльником. Когда припой расплавится, он впитается фитилем. Удалите фитиль до того, как припой остынет, чтобы он не прилипал к контактным площадкам. Если вы не набрали весь припой с первого прохода, попробуйте еще раз с чистой частью припоя.Когда вы закончите, вы увидите разорванное соединение между подушечками. При этом будьте осторожны, чтобы не перегреть плату (дайте ей остыть, если у вас возникли проблемы), иначе медные площадки могут оторваться от платы.
Отключение подтягивающих резисторов I 2 C (SJ1)BMP180 взаимодействует с микроконтроллером хоста через стандарт связи «I 2 C» (для Inter Integrated Circut). I 2 C использует два провода, обычно обозначаемые SCL (последовательные часы) и SDA (последовательные данные).Для правильной работы I 2 C требуется подтягивающий резистор на каждой из этих линий. Плата BMP180 включает в себя эти резисторы. По умолчанию они включены, но вы можете отключить их, сняв паяльную перемычку SJ1.
I 2 C позволяет подключать несколько устройств к одним и тем же двум линиям (все вместе они называются шиной). Подтягивающие резисторы позволяют шине функционировать, но у вас должен быть только , один набор подтягивающих резисторов на шину.
Если у вас есть только одно устройство I 2 C (например, коммутационная плата BMP180), подключенное к вашему микроконтроллеру, плата уже настроена правильно.Вам не нужно ничего менять.
Однако, если вы хотите подключить к шине более одного устройства, вы должны убедиться, что на шине включен только один набор подтягивающих резисторов. Для этого нужно отключить все подтягивающие резисторы, кроме одного. (Не имеет значения, где находятся включенные резисторы; они могут быть где угодно на шине.)
Чтобы отключить подтягивающие резисторы I 2 C, удалите весь припой с перемычки, помеченной «SJ1».Этот джемпер имеет три прокладки; обязательно отделите все прокладки друг от друга. Помните, что вам необходимо убедиться, что где-то на шине I 2 C включен еще один набор подтягивающих резисторов.
Обратите внимание, , что вы не должны использовать шину I 2 C без подтягивающих резисторов, так как внутренние слабые подтягивающие резисторы в Arduino подтянут шину до 5 В, что может повредить BMP180.
Использование другого напряжения ввода / вывода (SJ2)По умолчанию коммутационная плата BMP180 настроена так, чтобы шина I 2 C обменивалась данными на 3.3В. Это будет работать для большинства микроконтроллеров 3,3 и 5 В. Однако, если вы хотите подключить BMP180 к микропроцессору с более низким напряжением, например к микропроцессору с напряжением 1,8 В, вы можете сделать это, удалив припой с перемычки с надписью «SJ2». Как только вы это сделаете, вам нужно будет подать на плату желаемое напряжение ввода / вывода через заголовок «IO». BMP180 принимает напряжения ввода / вывода от 1,62 В до 3,6 В.
Ресурсы и дальнейшее развитие
Примеры эскизов, включенные в библиотеку, должны помочь вам написать собственный код для BMP180.Код тщательно прокомментирован, чтобы помочь вам понять, что он делает. Во многих случаях вы сможете скопировать и вставить пример кода в свои собственные наброски. Вы также можете обратиться к таблице данных для получения дополнительной информации о внутренней работе датчика.
Если у вас возникнут проблемы или вопросы, вам поможет наш отдел технической поддержки. Не стесняйтесь обращаться к нам. Нам также нравится слышать о ваших проектах!
Дополнительная литература и проекты:
Удачи!
Электроника | Бесплатный полнотекстовый | Комплексное предложение узла Интернета вещей с использованием открытого оборудования.Пример использования интеллектуального фермерства для мониторинга виноградников
В этом разделе представлен пример узла IoT (называемого узлом SEnviro), который следует предлагаемой архитектуре. Раздел разделен на три подраздела. В первом подразделе показано, как узел IoT построен на аппаратном уровне. Во втором подразделе подробно описано, как узел Интернета вещей работает на программном уровне. Наконец, в последнем подразделе анализируется потребление энергии как теоретически, так и практически.
4.1. Построение узла SEnviro
Основная цель текущей работы — предложить пример узла IoT, который следует архитектуре, созданной с использованием компонентов открытого оборудования, как подробно описано в предыдущем разделе.Таким образом, развитие, представленное ниже, тесно связано с этими типами элементов.
В соответствии с физическими компонентами, определенными в разделе 3, узел IoT составлен, как показано на рисунке 4. Теперь мы подробно рассмотрим, как разрабатывается каждая определенная группа (ядро, считывание / действие, источник питания и связь). Такая же категоризация используется для описания каждого компонента в таблице 2. Общая цена за узел SEnviro составляет 256,45 евро. Далее каждый компонент подробно описывается и классифицируется в каждой фиксированной группе.- Particle (рисунок 5): этот компонент был выбран как часть ядра узла IoT.Как было сказано в разделе 2, микроконтроллер Particle Electron разработан с открытым исходным кодом. Как показано на рисунке 5, этот микроконтроллер присутствует в различных блоках, определенных на рисунке 1, таких как ядро, источник питания и связь. В первой группе, Core, Electron действует как микроконтроллер и отвечает за оживление узла и реализацию всех бизнес-моделей, чтобы узел функционировал правильно. В отличие от обычного ПК, Electron может запускать только одну программу, которая будет подробно описана в следующем подразделе.Он включает в себя чип STM32F205RGT6 ARM Cortex M3, который работает на частоте 120 МГц. Его можно обновить с помощью OTA-обновлений. Эта функция значительно расширяет возможности обновления каждого узла и поддержки новых функций или поведения в будущем без необходимости физического перехода к тому месту, где развернут узел IoT. Electron также будет отвечать за хранение всех переменных для поддержки нормальной работы с использованием ОЗУ (128 КБ ОЗУ) и ПЗУ (1 МБ флэш-памяти). Внутри основной группы он также будет отслеживать текущее время; это возможно, потому что Electron предлагает модуль операционной системы реального времени (RTOS).
Вторая группа, в которой присутствует микроконтроллер Electron, — это блоки питания. Electron предоставляет чип под названием MAX17043, который может измерять энергию, потребляемую микроконтроллером (и всеми компонентами узла IoT). Этот микрочип имеет сверхкомпактный дизайн и невысокую стоимость.
Наконец, в последней группе, «Связь», заявленный микроконтроллер обеспечивает возможность подключения 2G и 3G (или любой новой технологии, такой как 5–6 G). Сотовый модуль U-blox SARA-U270 обеспечивает подключение к Интернету.Для этого у него есть антенна сотовой связи, которая необходима микроконтроллеру для установления соединения с вышкой сотовой связи. Одно отличие от версии, представленной в [7], можно найти в группе связи. Эта новая версия обеспечивает подключение 2G и 3G вместо Wi-Fi. Эта функция увеличивает возможность установки узла в любом месте с покрытием мобильной передачи данных. - Защитный экран : Этот компонент представляет собой простую в использовании схему, совместимую с микроконтроллерами частиц (Photon и Electron).Электрон может взаимодействовать с миром через контакты (30 GPIO смешанного сигнала), которые будут использоваться для подключения этого экрана. Погодозащитный экран имеет встроенные датчики барометрического давления (MPL3115A2), относительной влажности и температуры (Si7021). Кроме того, экран содержит несколько разъемов RJ11 для подключения внешних датчиков, таких как анемометр и датчик дождя. В таблице 3 описаны все функции датчиков. Защитный экран присутствует в группах Core (Connectors) и Sensors.
Солнечная панель : Этот компонент является водонепроницаемым, устойчивым к царапинам и УФ-излучению.В нем используется высокоэффективная монокристаллическая ячейка. Выходное напряжение составляет 6 В при 530 мА через разъем постоянного тока 3,5 мм × 1,1 мм. Солнечная панель будет использоваться для зарядки аккумулятора и обеспечивает бесперебойную работу узла IoT. Солнечная панель включена в блок питания.
Литий-ионный аккумулятор : этот компонент имеет емкость 2000 мА и используется для создания энергетически автономной платформы. Он обеспечивает выходное напряжение 3,7 В и заряжается от энергии, вырабатываемой солнечной панелью.Аккумулятор входит в блок питания.
Солнечное зарядное устройство Sunny Buddy : Этот компонент является солнечным зарядным устройством MPPT и включен в блок питания. Он отвечает за контроль протекания тока и ограничен определенным значением, чтобы предотвратить повреждение батареи. Это также открытый аппаратный компонент.
Soil Moisture : Этот компонент также имеет конструкцию с открытым оборудованием, и с помощью простого отрыва он может измерять влажность почвы.Две контактные площадки действуют как переменный резистор; чем больше воды в почве, тем лучше проводимость между ними. Это приводит к меньшему сопротивлению и более высокой производительности. Считается частью группы датчиков.
Погодометры обеспечивают три компонента измерения погоды: скорость ветра, направление ветра и количество осадков. Он предлагает разъемы RJ11, которые упрощают установку с помощью вышеупомянутого погодозащитного экрана. Погодометры входят в группу датчиков.
4.2. Подробная информация о поведении
Как указано выше, микроконтроллер будет отвечать за организацию общей работы узла. Это станет возможным с помощью программы или эскиза, который отвечает за предоставление функциональности каждому из аппаратных компонентов, составляющих узел. Таким образом, в соответствии с логическими модулями и конечным автоматом, определенными в предыдущем разделе, разрабатывается эскиз.Рисунок 7 показывает на глобальном уровне, как использовался каждый модуль. Теперь мы перейдем к подробному описанию каждого из них и того, как они работают. Первый модуль — это логическое управление, которое не имеет определенных функций. Он отвечает за согласованное соединение различных модулей. Как и в [7], определены два режима: начальный (INIT в конечном автомате) и режим цикла. Начальный режим выполняется как инициализатор при загрузке узла. Когда начальный режим завершен, метод цикла выполняется повторно, пока узел включен.Модуль базовой конфигурации отвечает за хранение и управление базовой конфигурацией / настройками. Часть его конфигурации определяется в начальном режиме и обновляется во время цикла. Базовая конфигурация отвечает за определение таких аспектов, как датчики, к которым будут проводиться консультации, список действий, выполняемых с исполнительными механизмами, частота наблюдений, конфигурация для установления связи M2M и проверка наличия нового обновления для узла IoT.
В режиме цикла, который выполняется в зависимости от частоты модуля базовой конфигурации, первым модулем является энергосбережение.Этот модуль определяет энергетическую стратегию в зависимости от заряда батареи. Определены три различных режима, каждый из которых подробно описан ниже.
Нормальный режим : самый обычный рабочий режим. Узел работает с заданной периодичностью наблюдений (10 мин).
Режим восстановления : частота наблюдений сохраняется, но наблюдения не будут отправляться на сервер, вместо этого они сохраняются в памяти EEPROM микроконтроллера.Сохраненные наблюдения отправляются, когда состояние батареи узла IoT улучшается.
Критический режим : узел IoT не собирает новые наблюдения и переходит в наиболее глубокий спящий режим.
Второй модуль, Observe, обращается из числа доступных датчиков к тем, которые указаны в конфигурации. Среди них датчики температуры, влажности почвы и воздуха, атмосферного давления, дождя и скорости / направления ветра. Этот модуль отвечает за преобразование сигналов от датчиков для получения правильных значений и подгонку значений к правильным единицам для каждого явления.Например, он обрабатывает пульсации электрического плювиометра и преобразует их в соответствующие миллилитры.
Следующий модуль — Акт, который выполняет действия с доступными исполнительными механизмами. Хотя текущий узел IoT не имеет исполнительного механизма из-за варианта использования, в котором он был применен, считается, что он определяет общее решение, которое может быть перенесено в другие сценарии с другими требованиями.
Следующий модуль — модуль связи. Он имеет две дифференцированные функции: отправка и получение.Для этого модуль устанавливает соединение с помощью модуля 3G, входящего в состав микроконтроллера Electron. Каждый узел использует протокол MQTT для настройки связи M2M. Они определяют клиент MQTT, который может отправлять и получать данные. Для этого узел берет на себя роль издателя для отправки наблюдений датчиков. Каждое наблюдение публикуется по отдельной теме. Таким образом определяется иерархическая организация; то есть идентификатор датчика плюс название типа явления, например / current / 4e0022000251353337353037 / Temperature или / current / 4e0022000251353337353037 / Humidity.Первый иерархический уровень (текущий) определяет, что тема находится в режиме реального времени. Другая тема на том же уровне, называемая потерянными, предназначена для отправки потерянных наблюдений (из-за проблем с подключением или режима энергопотребления).
Кроме того, MQTT используется для установления двойной связи между узлами. Каждый узел подписан на разные темы, чтобы запускать обновления (OTA) или отмечать, с какими датчиками следует обращаться. Формат JSON предназначен для кодирования как входящих, так и исходящих данных.
Два последних модуля работают параллельно; это означает, что они не могут выполняться одновременно в одной итерации.Первый, модуль обновления, отвечает за развертывание нового обновления. Через коммуникационный модуль, когда новое сообщение об обновлении поступает в тему обновления для конкретного узла, активируется режим обновления, и для получения обновления состояние сна не применяется.
Наконец, последний модуль и один из самых важных с точки зрения энергопотребления — это спящий модуль. С одной стороны, микроконтроллер Electron предлагает разные режимы сна в зависимости от того, какие функции активны.Микроконтроллер обеспечивает режим сна, который характеризуется различными параметрами, чтобы определить, какие функции ограничены для снижения энергопотребления. Операция сна может сопровождаться секундами, которые используются для определения периода сна. Кроме того, Electron поддерживает возможность пробуждения с помощью внешнего прерывания на одном из его контактов.
Кроме возможности пробуждения микроконтроллера требуется еще и спящий режим. Все доступные режимы подробно описаны ниже:
Без аргументов.Эта опция не останавливает выполнение эскиза. Узел продолжает нормально работать, а модуль 3G остается в режиме ожидания. Энергопотребление от 30 мА до 38 мА.
SLEEP_MODE_DEEP: этот режим отключает сетевой модуль и переводит микроконтроллер в режим ожидания. Когда устройство выходит из состояния глубокой приостановки, оно перезапускается и выполняет весь код пользователя с самого начала без сохранения значений памяти. Его потребление составляет около 0,0032 мА.
SLEEP_MODE_SOFT_POWER_OFF: этот режим похож на SLEEP_MODE_DEEP с дополнительным преимуществом, заключающимся в том, что чип датчика уровня топлива также спит.
SLEEP_NETWORK_STANDBY: этот режим похож на SLEEP_MODE_DEEP, но он не отключает модуль 3G. Это уменьшает количество энергии, необходимое для повторного соединения с оператором, когда Electron перезагружается из SLEEP_MODE_DEEP.
Нормальный режим . Когда уровень заряда батареи выше 25%, узел выполняет отгрузки в зависимости от наблюдаемой частоты. Применяется основной спящий режим, как подробно описано в приведенном выше определении. Помимо использования секунд для пробуждения, он также может использовать штифт датчика дождя для пробуждения и, таким образом, накапливать количество дождевой воды в течение периода, когда микроконтроллер находится в спящем режиме.Модуль связи работает, а сотовый модуль находится в режиме ожидания.
Режим восстановления . Когда уровень заряда батареи составляет менее 25%, активируется режим восстановления, и новые поставки не производятся до тех пор, пока уровень заряда батареи не превысит 35%. Наблюдения сохраняются в памяти EEPROM и помечаются меткой времени в момент захвата.
Критический режим . Если батарея разряжена менее 15%, активируется критический режим.В этом режиме новые наблюдения не производятся и не сохраняются в памяти EEPROM. Узел переходит в глубокий сон и просыпается каждые 60 минут, чтобы контролировать уровень заряда батареи. Критический режим останавливается, когда оставшийся уровень заряда батареи превышает 20%, и узел продолжает работу в режиме восстановления, пока он не превысит пороговое значение в 35%.
Все значения, определенные выше для классификации каждого режима, были зафиксированы эмпирически. В зависимости от различных режимов энергопотребления мы попытались сбалансировать поведение нормального режима без ущерба для полной потери заряда батареи, которая в последнем случае привела бы к потере автономности.
4.3. Автономный источник питания
В этом разделе подробно описаны некоторые аспекты энергопотребления. В первом подразделе показано теоретическое потребление энергии. Во втором подразделе предлагаются тесты энергопотребления в блоке узла SEnviro.
4.3.1. Теоретическое потребление энергии
Таблица 4 показывает потребление энергии микроконтроллером Electron в различных режимах (нормальный, спящий и глубокий сон). Потребление может значительно варьироваться в зависимости от периферийных устройств, подключенных к плате.Различные компоненты вместе с их потреблением энергии показаны в таблице 5.Чтобы получить теоретическое потребление, мы рассматриваем узел IoT, работающий в нормальном режиме энергопотребления, определенном в предыдущем разделе. Другие режимы играют второстепенную роль, и нормальный режим выполняется на протяжении большей части своего срока службы при условии правильной работы.
Далее в таблице 6 показаны секунды каждого часа, в течение которого узел применяет методы энергосбережения, отправляет данные или находится в нормальном режиме.Микроконтроллер потребляет 19,3 мА каждый час. Ниже показано потребление всех датчиков, включенных в версию узла SEnviro. Мы считаем, что все датчики активны в течение 60 секунд на каждой итерации, что соответствует периоду, в течение которого микроконтроллер активен. В таблице 7 показано потребление компонентов в час, всего требуется 2,1625 мА.Что касается MPPT, он потребляет 3,5 мА каждый час, когда он активен (когда он заряжает солнечную панель), и 0,085 мА в режиме ожидания.Количество солнечных часов в Испании было принято во внимание, учитывая, что в среднем 12 солнечных часов (минимум 9,5 солнечных часов и максимум 14,9 солнечных часов). Расход дождемера и анемометра незначителен, поскольку они являются пассивными контурами.
Таким образом, общее потребление узла (микроконтроллер, датчики и компоненты) составляет 21,4625 мА в нормальном режиме энергопотребления. Таким образом, с указанной батареей (2000 мА) узел может работать непрерывно в течение 93,19 ч, что соответствует 3 дням, 21 ч и 11 мин, пока батарея не разрядится.
Как подробно описано выше, были добавлены два режима (восстановление и критический) для продления срока службы узла, с помощью которых ожидается продление срока службы узла, чтобы он мог работать в длительные облачные периоды с небольшим присутствием солнце.
Режим восстановления запускается, когда батарея разряжена менее 25%, то есть когда она достигает примерно 500 мА. Таблица 8 показывает потребление энергии в различных состояниях в режиме восстановления. В отличие от нормального режима, рекавери не осуществляет доставки; в противном случае узел сохраняет наблюдения в EPROM, чтобы отправить их позже, когда он перейдет в нормальный режим.Энергопотребление микроконтроллера в режиме восстановления составляет около 6,80 мА в час, к которому следует добавить потребление компонентов (2,1625 мА), показанное в таблице 7. В целом при потреблении 8,9625 мА и с оставшейся батареей 500 мА, узел может продлить срок службы до 55,788 ч (2 дня, 7 ч, 18 мин) до полного разряда батареи. Последним и наиболее тяжелым режимом является критический режим, который активируется при разряде батареи менее 15 мА. %, то есть когда он достигает нагрузки примерно 300 мА.В таблице 9 показано потребление различных состояний в критическом режиме. В отличие от других режимов, критический режим удерживает узел в глубоком сне и просыпается только для проверки состояния батареи, он не обращается к датчикам, поэтому любые наблюдения теряются.В этом случае датчики не запрашиваются, несмотря на это потребление 0,02916 мА генерируется в течение периода, в течение которого будет проверяться уровень заряда батареи, поскольку датчики находятся в режиме ожидания. К этому потребление микроконтроллера 0.Следует добавить 1998 мА в час, чтобы общее потребление энергии в критическом режиме составило 0,22896 мА в час. С таким потреблением и оставшимися 300 мАч узел может продлить срок службы до 1310,27 часа (54 дня, 14 часов и 16 минут).
На рисунке 9 показано теоретическое потребление энергии узлом. График показывает, когда происходят изменения в режимах энергопотребления. Эти изменения произойдут: с нормального режима на восстановление на 3-й день; из режима восстановления в критический 5-е сутки; а в критическом режиме узел будет без батареи через 37 дней (864 ч).4.3.2. Реальное потребление энергии
Первый тест без солнечной панели и только в обычном режиме с батареей 2000 мАч показал 73,5 часа автономной работы. Тем не менее, реальный тест показывает, что в таких условиях потребление энергии составляет 27,25 мА в час вместо 19,3 мА, определенных в теоретическом потреблении. Если мы сравним полученные результаты с решением, представленным в предыдущей версии SEnviro, мы получим существенное улучшение, утроив энергетическую автономность.
Этот результат кажется удовлетворительным с точки зрения возможности развертывания узлов и поддержания их постоянной активности. Разработанный узел IoT мог поддерживать датчик в рабочем состоянии в течение трех дней, одного часа и 30 минут без какой-либо зарядки через солнечную панель. Первые энергетические проблемы могут появиться после трех пасмурных дней без солнца. Однако даже в пасмурный день, согласно проведенным тестам, солнечная панель может заряжаться с низкой частотой или поддерживать аккумулятор. Кроме того, солнечная панель дает очень хорошие результаты; он может заряжать аккумулятор примерно со скоростью 200 мА в час.
Как будет показано в следующем разделе, пять узлов SEnviro были развернуты в течение 140 дней, и ни у одного из них не было проблем с энергопотреблением. В этот период несколько последовательных пасмурных дней не повлияли на работу узла. Солнечной панели также удавалось заряжаться в некоторые из этих дней, хотя и по более низкой цене.
На диаграмме ниже (Рисунок 10) показан временной ряд уровня заряда батареи одного из узлов. Он показывает емкость перезарядки солнечной панели, которой удается достичь максимально возможного заряда батареи за несколько часов.Максимальный уровень заряда батареи составил 87,4%. Можно утверждать, что в солнечные дни, к концу ночи, батарея никогда не опускается ниже 60,77% и успевает восстановить свой заряд за 3 часа солнечного света. В пасмурные дни (например, 2 ноября) батарея может поддерживать уровень и повышаться с небольшой скоростью. В течение указанного периода ни один узел не перешел в режим восстановления.Датчик барометрического давления Arduino Учебное пособие
Барометрическое давление, другими словами Атмосферное давление — это сила, действующая со стороны атмосферы в заданной точке (говорится в Интернете).Он также известен как Вес воздуха. В этой статье дается основное представление о технике сопряжения сенсоров атмосферного давления и Arduino.
Что такое датчик атмосферного давления?
Датчик давления воздуха, который преобразует давление воздуха относительно высоты над уровнем моря в гПа [барометрическое давление].
Здесь мы использовали цифровой датчик давления BMP180 от Bosch. это устройство SMD, так что лучше иметь коммутационную плату.
BMP180-Цифровой датчик давления
BMP180 является функционально совместимым преемником BMP085, нового поколения высокоточного цифрового датчика давления, и он основан на пьезорезистивной технологии для обеспечения высокой точности.
Характеристики BMP180
- Диапазон давления: 300… 1100 гПа (+ 9000 м… -500 м относительно уровня моря)
- Напряжение питания: 1,8… 3,6 В (VDD)
- Упаковка: LGA корпус с металлической крышкой
- Низкое энергопотребление: 5 мкА при 1 выборке в секунду. в стандартном режиме
- Низкий уровень шума: 0,06 гПа (0,5 м) в режиме сверхнизкого энергопотребления — 0,02 гПа (0,17 м) в режиме повышенного разрешения
- Измерение температуры включено
- Интерфейс I²C
Блок-схема
Датчик BMP 180 имеет четыре важных внутренних периферийных устройства: сенсорный элемент, АЦП (аналого-цифровой преобразователь), блок управления и EEPROM.Чувствительный элемент подает преобразованный и дискретизированный сигнал в АЦП, затем АЦП преобразует сигнал в цифровые данные, блок управления связывается с внешними периферийными устройствами через последовательный интерфейс I2C. Датчик BMP180 имеет собственный E²PROM на 176 бит, который используется для компенсации смещения, температурной зависимости и других параметров датчика.
BMP 180 Коммутационная плата
Коммутационная плата датчика давления Arduino от Sparkfun.
Маленькая и компактная коммутационная плата поставляется с легко подключаемыми клеммами, такими как +, -, CL и DA. мы можем напрямую подключить эту сенсорную плату к Arduino без каких-либо предварительных схем.
Подключение Arduino и BMP180
Ввод-вывод на плате датчика представляет напряжение ввода-вывода, и мы можем оставить его отключенным, если не подключаемся к микропроцессору или микроконтроллеру с более низким напряжением. Подключите клемму «+» к выводу 3,3 В. Arduino.(Примечание: не подключайте + к 5 В, иначе датчик будет поврежден!). Подключите «-» к клемме заземления (GND) платы Arduino. Затем подключите последовательные контакты I²C DA (SDA) и CL (SCL) к соответствующим контактам вашей платы разработки. В нашем случае мы использовали Arduino uno, поэтому «CL» к A5 и «DA» к A4. Подключив zigbee или беспроводной приемопередатчик, мы можем сделать датчик и приемник атмосферного давления.
Библиотека Arduino
Получите библиотеку Arduino для датчика атмосферного давления BMP180 здесь.
Датчик барометрического давления Код Arduino
/ * Код из примера библиотеки sparkfun * / #include < SFE_BMP180 .h> #includeSFE_BMP180 давление; #define ALTITUDE 1655.0 // Высота штаб-квартиры SparkFun в Боулдере, штат Колорадо, в метрах установка void () { Серийный .begin (9600); Серийный номер .println («ПЕРЕЗАГРУЗКА»); // Инициализируем датчик (важно, чтобы значения калибровки сохранялись на устройстве).если (pressure.begin ()) Последовательный .println ("Успешная инициализация BMP180"); еще { // К сожалению, что-то пошло не так, обычно это проблема с подключением, // см. комментарии вверху этого скетча для правильных соединений. Последовательный .println ("Ошибка инициализации BMP180 \ n \ n"); в то время как (1); // Пауза навсегда. } } пустой цикл () { статус символа; двойной T, P, p0, a; // Цикл здесь получение показаний давления каждые 10 секунд.// Если вы хотите, чтобы давление с компенсацией уровня моря, как используется в сводках погоды, // вам нужно будет знать высоту, на которой производятся ваши измерения. // В этом скетче мы используем константу ALTITUDE: Серийный .println (); Серийный номер .print ("указанная высота:"); Серийный .print (ВЫСОТА, 0); Серийный номер .print ("метры"); Серийный .print (ВЫСОТА * 3,28084,0); Серийный .println ("футы"); // Если вы хотите измерять высоту, а не давление, вам понадобится // для обеспечения известного базового давления. Это показано в конце эскиза. // Вы должны сначала получить измерение температуры, чтобы измерить давление. // Запуск измерения температуры: // Если запрос успешен, возвращается время ожидания в миллисекундах. // Если запрос неуспешен, возвращается 0. status = pressure.startTemperature (); если (статус! = 0) { // Дождемся завершения измерения: задержка (статус); // Получить завершенное измерение температуры: // Обратите внимание, что результат измерения сохраняется в переменной T.// Функция возвращает 1 в случае успеха и 0 в случае неудачи. status = pressure.getTemperature (T); если (статус! = 0) { // Распечатать результат измерения: Серийный .print ("температура:"); Серийный .print (T, 2); Серийный номер .print («градус С,»); Серийный .print ((9.0 / 5.0) * T + 32.0,2); Серийный номер .println («градус F»); // Запускаем измерение давления: // Параметр - это настройка передискретизации от 0 до 3 (максимальное разрешение, максимальное время ожидания).// Если запрос успешен, возвращается время ожидания в миллисекундах. // Если запрос неуспешен, возвращается 0. status = pressure.startPressure (3); если (статус! = 0) { // Дождемся завершения измерения: задержка (статус); // Получить завершенное измерение давления: // Обратите внимание, что результат измерения сохраняется в переменной P. // Также обратите внимание, что функция требует предыдущего измерения температуры (T).// (Если температура стабильна, вы можете выполнить одно измерение температуры для нескольких измерений давления.) // Функция возвращает 1 в случае успеха и 0 в случае неудачи. status = pressure.getPressure (P, T); если (статус! = 0) { // Распечатать результат измерения: Серийный номер .print («абсолютное давление:»); Серийный .print (P, 2); Серийный номер .print ("mb,"); Серийный .печать (P * 0,0295333727,2); Серийный номер .println ("inHg"); // Датчик давления возвращает абсолютное давление, которое зависит от высоты. // Чтобы убрать влияние высоты, используйте функцию уровня моря и текущую высоту. // Это число обычно используется в сводках погоды. // Параметры: P = абсолютное давление в мб, ALTITUDE = текущая высота в м. // Результат: p0 = давление с компенсацией на уровне моря в мбар p0 = давление.уровень моря (P, ВЫСОТА); // мы на высоте 1655 метров (Боулдер, Колорадо) Серийный номер .print («относительное давление (на уровне моря):»); Серийный .print (p0,2); Серийный номер .print ("mb,"); Серийный . Печать (p0 * 0,0295333727,2); Серийный номер .println ("inHg"); // С другой стороны, если вы хотите определить свою высоту по показаниям давления, // использовать функцию высоты вместе с базовым давлением (на уровне моря или другом).// Параметры: P = абсолютное давление в мбар, p0 = базовое давление в мбар. // Результат: a = высота в метрах. a = давление. высота (P, p0); Serial .print ("вычисленная высота:"); Серийный .print (a, 0); Серийный номер .print ("метры"); Серийный .print (a * 3.28084,0); Серийный .println ("футы"); } еще Серийный .println ("ошибка получения измерения давления \ n"); } else Serial .println ("ошибка измерения начального давления \ n"); } else Serial .println ("ошибка получения измерения температуры \ n"); } else Serial .println ("ошибка измерения начальной температуры \ n"); задержка (5000); // Пауза на 5 секунд. }
Ресурсы
BMP180 лист данных
https: // github.ru / sparkfun / BMP180_Breakout_Arduino_Library
https://www.bosch-sensortec.com/bst/products/all_products/bmp180
5 крутых способов стать гражданином-ученым
Райли Портер / Flickr
Творческим людям легче, чем когда-либо, заниматься серьезной наукой в качестве хобби. Вам не нужна докторская степень или поддержка федерального агентства, чтобы задать новый, стоящий научный вопрос.Вам просто нужно любопытство и уверенность. Вот пять способов начать:Обучение программированию микроконтроллеров
Независимо от того, какой областью науки вы хотите заниматься, микроконтроллеры, такие как Arduino, Beagle Bone или Raspberry Pi, могут упростить и повысить эффективность вашей экспериментальной установки. Эти небольшие компьютеры могут запускать датчики, записывать данные и автоматизировать некоторые экспериментальные процессы.
Вам нужно будет изучить основы программирования, но, как правило, это довольно просто.Например, Processing, язык, используемый Arduino, предназначен для доступа неспециалистам, не имеющим опыта программирования.
Если вы еще не знакомы с базовой электроникой и микроконтроллерами, потратьте некоторое время на то, чтобы возиться и изучить, прежде чем приступить к построению своего эксперимента. Для начала вы можете найти инструменты всех типов — акселерометры, барометры, датчики влажности, кислородные датчики, термометры и даже счетчики Гейгера — в Radio Shack или других магазинах электроники.Вы также можете посетить такие онлайн-магазины, как Maker Shed и Arduino Store.
Стать биологом своими руками
Основанная в 2008 году, DIY Bio предоставляет ресурсы, такие как «Спросите эксперта по биобезопасности», и онлайн-планы для самодельного лабораторного оборудования. Вы можете найти местные биологические группы и биолаборатории DIY по всему миру. В этих общественных лабораториях вы можете получить доступ к оборудованию и материалам, которые иначе было бы трудно достать. Вы также можете воспользоваться опытом и советами других энтузиастов биологии.
DIY-биологи конструируют светящиеся в темноте растения, используют электрические поля для создания искусства с бактериями и изучают более эффективные способы выращивания фитопланктона для фармацевтических препаратов и коммерческих рыбоводных хозяйств. Если вам нужны идеи, лаборатории, такие как BioCurious в Саннивейл, штат Калифорния, иногда проводят совместные общественные проекты, такие как Bioluminescence Project, где участники работают вместе над всем, от изучения метаболизма биолюминесцентных организмов до создания ламп с микроорганизмами.
Присоединяйтесь к хакерскому пространству
В 1980-х хакером был пользователь компьютера, который запускал вредоносные атаки на чужие компьютеры. Сегодня этот термин используется людьми, которые любят адаптировать предметы повседневного обихода и гаджеты для неожиданных целей, от практических до фантастических. Во многих сообществах теперь есть места для хакеров или места для разработчиков, участники которых обеспечивают совместную работу, рабочее пространство и доступ к оборудованию, которого у вас, вероятно, нет в вашем гараже. Это означает, что если вам нужно изготавливать детали, вам не нужно покупать собственный 3D-принтер или лазерный резак.Эти сообщества также являются отличным местом для поиска потенциальных соавторов вашего последнего научного проекта.
Построить мини-спутник
Если вас интересует космос, думайте о малом — вы хотите, чтобы ваш эксперимент поместился в коробку размером 4 x 4 x 4 дюйма, называемую Cubesat. Работа в рамках этого стандарта мини-спутников предоставит вам больше возможностей для проведения эксперимента в воздухе, что проще, чем вы думаете. Например, когда XCOR запускает в наступающем году свой многоразовый суборбитальный космический корабль Lynx, его первым покупателем станет U.S. Rocket Academy, которая приобрела 10 полетов на Lynx для своей программы «Граждане в космосе». Каждый полет будет нести 10 экспериментальных грузов.
Lynx обеспечит приблизительно 5 минут микрогравитации на границе космоса, хорошие временные рамки для изучения поведения жидкостей, тестирования электроники или другого оборудования в условиях микрогравитации или биологических экспериментов с участием таких организмов, как бактерии, которые имеют короткие жизненные циклы и показывают быстро меняются.
Если у вас есть идея для эксперимента, который требует больше времени в космосе или должен быть на орбитальной, а не на суборбитальной высоте, тогда вам подойдет Центр развития науки в космосе (CASIS).CASIS — это агентство, ответственное за управление Национальной лабораторией США на борту Международной космической станции. Удивительно много пространства для исследований, доступного в лаборатории, не используется, и CASIS работает над этим. Он приветствует незапрошенные предложения в широком диапазоне областей, и центр поощряет гражданских ученых подавать предложения.
Краудсорсинг Некоторое финансирование
В большинстве наук вы можете построить надежный эксперимент за несколько сотен долларов, если будете изобретательны и изобретательны.Однако, если вам нужно внешнее финансирование, вы можете обратиться к платформам краудфандинга, таким как Kickstarter и IndieGoGo, которые могут предложить дополнительное преимущество, вызвав некоторый общественный интерес к вашему эксперименту.
Этот контент создается и поддерживается третьей стороной и импортируется на эту страницу, чтобы помочь пользователям указать свои адреса электронной почты. Вы можете найти больше информации об этом и подобном контенте на сайте piano.io.
Произошла ошибка при настройке вашего пользовательского файла cookie
Произошла ошибка при настройке вашего пользовательского файла cookieЭтот сайт использует файлы cookie для повышения производительности.Если ваш браузер не принимает файлы cookie, вы не можете просматривать этот сайт.
Настройка вашего браузера для приема файлов cookie
Существует множество причин, по которым cookie не может быть установлен правильно. Ниже приведены наиболее частые причины:
- В вашем браузере отключены файлы cookie. Вам необходимо сбросить настройки своего браузера, чтобы он принимал файлы cookie, или чтобы спросить вас, хотите ли вы принимать файлы cookie.
- Ваш браузер спрашивает вас, хотите ли вы принимать файлы cookie, и вы отказались.Чтобы принять файлы cookie с этого сайта, нажмите кнопку «Назад» и примите файлы cookie.
- Ваш браузер не поддерживает файлы cookie. Если вы подозреваете это, попробуйте другой браузер.
- Дата на вашем компьютере в прошлом. Если часы вашего компьютера показывают дату до 1 января 1970 г., браузер автоматически забудет файл cookie. Чтобы исправить это, установите правильное время и дату на своем компьютере.
- Вы установили приложение, которое отслеживает или блокирует установку файлов cookie.Вы должны отключить приложение при входе в систему или проконсультироваться с системным администратором.
Почему этому сайту требуются файлы cookie?
Этот сайт использует файлы cookie для повышения производительности, запоминая, что вы вошли в систему, когда переходите со страницы на страницу. Чтобы предоставить доступ без файлов cookie потребует, чтобы сайт создавал новый сеанс для каждой посещаемой страницы, что замедляет работу системы до неприемлемого уровня.
Что сохраняется в файлах cookie?
Этот сайт не хранит ничего, кроме автоматически сгенерированного идентификатора сеанса в cookie; никакая другая информация не фиксируется.
Как правило, в файле cookie может храниться только информация, которую вы предоставляете, или выбор, который вы делаете при посещении веб-сайта. Например, сайт не может определить ваше имя электронной почты, пока вы не введете его. Разрешение веб-сайту создавать файлы cookie не дает этому или любому другому сайту доступа к остальной части вашего компьютера, и только сайт, который создал файл cookie, может его прочитать.
Проект барометраArduino с использованием BMP180
Датчики давления широко используются в дронах, метеостанциях, смартфонах и т. Д. Важно знать, как работает эта небольшая технология.
Мы собираемся использовать датчик BPM180. Название модуля — GY-68. Маленькое устройство может считывать давление, высоту и температуру.
Давайте создадим небольшое устройство, которое использует BPM180 для считывания давления и высоты и использует ЖК-дисплей I2C для отображения этой информации (вы также можете выбрать отображение ее через последовательный порт).
Вот необходимые нам компоненты:
Как обычно, нам нужно выполнить соединение перед загрузкой скетча на плату.
Поскольку и ЖК-дисплей, и датчик давления используют I2C, мы должны подключить выводы SDA и SCL к аналоговым выводам 4 и 5.
Некоторые барометры имеют вывод Vin, а некоторые — вывод 3V3. Если у вас есть Vin, он должен быть подключен к 5V, а если у него есть 3V3, он должен быть подключен к 3,3V.
После соединения компонентов нам нужно загрузить следующий код на плату Arduino.Нам нужны дополнительные библиотеки, одна из них — Adafruit_BMP085.h. Вам должно быть интересно, почему написано BMP085, когда мы используем датчик BMP180. Не волнуйтесь, эта библиотека должна работать и с этим датчиком.
Если вы не знаете, как добавлять библиотеки, я предлагаю вам проверить это, чтобы узнать, как добавлять библиотеки в свои эскизы. Этот код будет отображать давление и высоту на ЖК-дисплее. Вы также можете отображать температуру, если у вас ЖК-дисплей большего размера, на моем (16 × 2) для этого не было места.Для отображения текста в две строки мы используем функцию setCursor ().
Обратите внимание, что вы можете использовать ту же настройку для отображения температуры.
Код помогает измерять давление и высоту с помощью датчика давления и отображать их на ЖК-дисплее. Он отображает давление в гПа и высоту в метрах.
Надеюсь, это каким-то образом натолкнуло вас на идею проекта Arduino. Пришло время построить что-нибудь потрясающее!
Вам также может понравиться:
Как собрать квадрокоптер на Arduino: пошаговый проект DIY
Как партнер Amazon я зарабатываю на соответствующих покупках.
Если вам нравится идея создать свой собственный квадрокоптер, но вы не знаете, как и с чего начать, вы определенно находитесь на правильной странице. Мы знаем, насколько трудным и разочаровывающим может быть исследование, поэтому мы решили сделать руководство по созданию собственного квадрокоптера с использованием платы Arduino. Мы надеемся, что она окажется для вас полезной.
И, чтобы вы еще больше воодушевились своим предстоящим проектом, вот квадрокоптер Arduino в действии:
Создание собственного квадрокоптера с нуля включает в себя много часов и тяжелую работу.Поэтому, если терпение не является вашей сильной стороной и если вы не обладаете необходимыми навыками программирования, вы можете выбрать комплект квадрокоптера, который содержит необходимые детали и поставляется с инструкцией. Этот проект на самом деле не предполагает серьезного строительства, а скорее представляет собой проект типа «собрать все части вместе, следуя инструкциям». Обычно это делается за час или два, и сразу после этого вы готовы взлететь в небо!
Однако с этими комплектами квадрокоптеров вы пропустите долгие часы и пот, потраченные на строительство, и на то, чтобы понять суть вашей птицы и то, как она тикает.Кроме того, вы упустите непреодолимое чувство удовлетворения, когда впервые взлетите с квадроциклом ручной работы.
Весь процесс создания квадроцикла — это то, что любят заядлые любители дронов. Вас просто зацепит чувство участия во всем процессе, от выбора деталей, проектирования схем до программирования платы полетного контроллера Arduino. Но здесь мы забегаем вперед, так что давайте начнем с самого начала.
Общее «Quad Science»
Как следует из названия, квадрокоптер — это летательный аппарат с четырьмя электродвигателями и четырьмя пропеллерами. По сравнению с другими радиоуправляемыми летательными аппаратами, квадроцикл, как и другие мультироторные двигатели, имеет наиболее устойчивую платформу благодаря своей другой конструкции, а также направлению и разнице между четырьмя создаваемыми им толчками. Благодаря этой стабильности квадроциклы идеально подходят для воздушного наблюдения и съемок. Они бывают всех форм и размеров.От самых маленьких, которые умещаются на ладони, до больших, способных поднимать серьезное съемочное оборудование и подвесы. Вы будете удивлены, узнав, какой вес могут нести большие дроны!
Теперь, в отличие от традиционного вертолета, квадроцикл полагается на свои четыре винта для создания подъемной тяги за счет совместной работы. Каждый ротор поднимает около четверти общего веса, что позволяет нам использовать меньшие и менее дорогие двигатели. Вы в основном управляете движением квадроцикла, изменяя количество мощности, которое каждый двигатель передает своим гребным винтам.
Двигатели расположены в каждом углу воображаемого квадрата. На одной диагонали у вас есть два двигателя, которые вращаются по часовой стрелке, а остальные два на противоположной диагонали вращаются против часовой стрелки. Если бы это было не так, квадрокоптер мог бы вращаться, как традиционный вертолет, только тогда, когда умирает хвостовой винт.
Для поддержания баланса квадроцикл полагается на данные, которые он собирает от внутренних датчиков, и регулирует мощность, которую он отправляет на каждый двигатель, чтобы выровнять весь дрон.Чтобы все время поддерживать баланс, в квадроцикле используется продвинутая система управления, которая обычно выполняет настройки автономно, и именно здесь ваша плата Arduino и ваше программирование вступают в игру. Этот тип самостабилизации сделает ваш дрон вполне доступным для полета, так как вам не придется постоянно беспокоиться о потере контроля и повреждении квадроцикла.
Обычно каждый квадроцикл способен выполнять четыре типа движения: высота, крен, рыскание и тангаж. Каждое из этих движений контролируется силой тяги, создаваемой каждым ротором.Вот почему вам нужно будет запрограммировать ваш пульт дистанционного управления, чтобы он знал, сколько мощности отдавать и на какой ротор ее отдавать.
Каждый квадрокоптер комплектуется платой микроконтроллера с датчиками на ней, в вашем случае — платой Arduino. Эта плата вместе с выбранными вами компонентами управляет двигателями. Вам решать, насколько самоконтролируемым вы хотите, чтобы ваш квадроцикл был. Вы можете использовать только базовые, такие как гироскоп, или кучу других, более продвинутых датчиков, таких как барометр, или GPS, или даже сонар, чтобы ваш квадроцикл мог обнаруживать и избегать препятствий, которые находятся в его пределах. способ.
Квадроциклы, как и все дроны, легко настраиваются, и вы действительно можете создать такой, который будет соответствовать вашим интересам. Это главная привлекательность процесса DIY для многих энтузиастов. Если вы интересуетесь фотографией, видео, гонками на дронах или просто летаете ради развлечения, вы обнаружите, что квадрокоптер может предложить что-то для вас. Беспилотные летательные аппараты легко адаптируются и настраиваются, и мы думаем, что вам понравится настраивать тот, который соответствует вашим предпочтениям.
Компоненты, необходимые для вашего квадроцикла
Каждый квадроцикл должен включать в себя элементы, перечисленные ниже, чтобы летать.Вот краткое изложение каждой из различных частей четырехугольника, и мы рассмотрим их более подробно по ходу статьи:
- Frame — «Костяк» квадрокоптера. Каркас — это то, что удерживает вместе все части вертолета. Он должен быть прочным, но с другой стороны, он также должен быть легким, чтобы двигатели и батареи не изо всех сил удерживали его в воздухе.
- Двигатели — Тяга, которая позволяет квадрокоптеру взлетать в воздух, обеспечивается бесщеточными двигателями постоянного тока, каждый из которых отдельно управляется электронным регулятором скорости или ESC.
- ESC — Электронный регулятор скорости похож на нерв, который передает информацию о движении от мозга (полетный контроллер) к мышцам рук или ног (моторам). Он регулирует мощность, которую получают двигатели, что определяет скорость и изменение направления квадроцикла.
- Пропеллеры — В зависимости от типа квадроцикла, который вы создаете, вы можете использовать винты от 9 до 10 или 11 дюймов (для стабильных полетов с аэрофотосъемкой) или 5-дюймовые гоночные винты для меньшей тяги, но большей скорости.
- Батарея — В зависимости от установленного максимального уровня напряжения вы можете выбрать батареи 2S, 3S, 4S или даже 5S. Но для стандартного квадроцикла, который планируется использовать для аэросъемки или фотосъемки (просто пример), вам понадобится батарея 3S на 11,4 В. Вы можете выбрать 22,8 В 4S, если вы строите гоночный квадроцикл и хотите, чтобы двигатели вращались намного быстрее.
- Плата Arduino — Выбор конкретной модели зависит от типа квадрокоптера, который вы хотите построить.Строите ли вы для аэрофотосъемки, гонок, фристайла или чего-то еще. О правильном выборе платы мы поговорим далее в статье.
- IMU — Доска, которая в основном (в зависимости от вашего выбора) представляет собой сумму различных датчиков, которые помогают вашему квадроциклу знать, где он находится и как его выровнять.
- RC Controller — Выбор передатчика зависит от выбора протокола, который вы собираетесь использовать, и приемника сигнала, который установлен на дроне.
Это основные компоненты дрона. Читайте более подробное описание каждого компонента:
Деталь # 1 — Рама
Хотя может возникнуть соблазн купить предварительно собранный комплект рамы, сборка рамы самостоятельно может помочь вам начать настоящий процесс DIY. Рама вашего квадрокоптера должна обладать прочностью, но она также должна быть достаточно гибкой, чтобы компенсировать вибрации, производимые двигателями. В нем должны быть следующие детали:
- Центральная удерживающая пластина — для монтажа электроники.
- Руки — на четверке четыре руки.
- Кронштейны для двигателей — вам нужно четыре из них, чтобы вы могли подключить двигатели на каждом конце рычага.
Рама может быть сделана из алюминия, углеродного волокна или дерева, но в основном для дужек используется алюминий. Точнее, квадратные полые направляющие рычагов изготовлены из алюминия. Они относительно легкие, жесткие и дешевые. Но, поскольку они не известны как отличные компенсаторы колебаний двигателя, как углеродное волокно, они могут сбивать с толку датчики.
Углеродное волокно намного лучше поглощает вибрации двигателя и является наиболее жестким. Но он же самый дорогой. Углеродное волокно — лучший выбор, но это во многом зависит от вашего личного бюджета.
Деревянные плиты также лучше поглощают вибрацию двигателя, но они довольно хрупкие и могут легко сломаться в случае аварии. Вы также можете выбрать предварительно изготовленную раму, которую нужно только собрать, и вы можете узнать больше о них в нашей статье о комплектах рамы.
Ознакомьтесь с нашими предложениями по лучшим готовым каркасам, которые вы можете использовать в качестве основы для своего проекта:
Деталь № 2 — Бесщеточные двигатели
Эти двигатели почти такие же, как и традиционные двигатели постоянного тока, но на их валу нет щетки, которая предназначена для изменения направления мощности, проходящей через катушки. При покупке этих моторов необходимо проверить их технические данные.
Самыми важными из них являются «Kv-рейтинг», который показывает количество оборотов в минуту, которое двигатель способен генерировать с определенным количеством электроэнергии.
Также вам понадобятся двигатели, которые вращаются против часовой стрелки, чтобы противодействовать эффекту крутящего момента стоек. Чтобы лучше понять эту тему, рекомендуем ознакомиться с нашей статьей о двигателях дронов.
Для двигателей (или роторов), мы предлагаем следующие модели:
Деталь № 3 — Винты
Пропеллеры создают тягу, и каждому двигателю нужен один, чтобы квадрокоптер мог летать. Убедитесь, что вы покупаете подходящие вращающиеся пары гребных винтов для вращения по и против часовой стрелки.Их можно купить с различным шагом и диаметром.
Вы должны выбрать пропеллеры в соответствии с размером вашей рамы, и как только вы решите, какие пропеллеры вы будете использовать, только тогда вы сможете выбрать свои двигатели. Пропеллеры стандартизированы, и вот самые популярные для квадроциклов:
- 5 ступеней, 8 диаметров — малые квадроциклы
- 8-шаговый, 9-й диаметр — малые квадроциклы
- 5 ступеней, 10 диаметров — квадроциклы среднего размера
- Шаг 7, диаметр 10 — квадроциклы среднего размера
- 5 шагов, диаметр 12– Обеспечивают большое количество толчков и отлично подходят для квадроциклов большего размера
Поскольку аэродинамика — это больше, чем просто запутание и трудность для понимания, если вы не инженер по аэродинамике, мы объясним несколько важных терминов в нескольких словах.
Во-первых, чем больше диаметр и шаг, тем большую тягу будет производить винт. Потребуется больше мощности, но квадрокоптер сможет поднимать больший вес. Для двигателей с высокой частотой вращения вам потребуются гребные винты меньшего или среднего размера. Для двигателей с низкой частотой вращения вам понадобятся винты большего размера, чтобы они могли удерживать квадрокоптер в воздухе на более низкой скорости.
Во-вторых, чтобы достичь идеального баланса между двигателями и гребными винтами, вам сначала нужно решить, для чего вы будете использовать квадроцикл.Например, если вы хотите построить стабильный и достаточно мощный квадроцикл для подъема съемочного и фотографического оборудования, вам следует использовать двигатель с меньшими оборотами и большим крутящим моментом, а также пропеллеры с более длинным или большим шагом.
Если вам нужны винты с хорошими характеристиками, мы рекомендуем вам приобрести любой из этих:
Деталь # 4 — ESC (
Электронный регулятор скорости )Устройство, отвечающее за управление скоростью двигателей, представляет собой дешевую плату контроллера, используемую только для двигателей.Он имеет вход для аккумулятора и выход двигателя с тремя фазами, поэтому вам понадобится четыре из них для каждого двигателя.
При покупке правильного регулятора скорости нужно обращать внимание на максимальный уровень тока, исходящего от источника. Выберите контроллер с током 10А или выше.
Кроме того, вам необходимо проверить, насколько он программируемый, а это означает, что вам нужно купить ESC, который позволит вам изменить диапазон частот сигнала на желаемое значение.
Когда дело доходит до ESC (электронных регуляторов скорости) , w e предлагает эти модели, которые великолепны и стабильны:
Деталь # 5 — Аккумулятор
Наиболее рекомендуемый источник питания для квадрокоптера — LiPo.Он не тяжелый, и текущий уровень идеально подходит для того, что вам нужно. NiMH — более дешевый, но и более тяжелый вариант.
БатареиLiPo поставляются как одна ячейка 3,7 В или упакованы вместе (до 10 элементов, обеспечивающих 37 В).
Самая популярная версия среди любителей дронов известна как батарея 3SP1, которая состоит из трех ячеек и обеспечивает напряжение 11,1 В.
Вот хороший: Zippy Flightmax 5000mAh 3S1P 20C
Деталь # 6 — IMU (инерциальный измерительный блок)
Это устройство отвечает за измерение ориентации, скорости и силы тяжести квадрокоптера.Это позволяет электронике управлять мощностью, подаваемой на двигатели, чтобы регулировать скорость двигателей. Устройство оснащено 3-осевым гироскопом и 3-осевым акселерометром. Эта комбинация известна как 6DOF IMU.
Вот хороший вариант для сборки квадроцикла: KNACRO 6508 IMU MPU6050 MPU-6050 6DOF
Гироскоп предназначен для считывания значений угловой скорости, а акселерометр отвечает за измерение ускорения и силы, что означает, что он может чувствовать силу тяжести, направленную вниз.Поскольку он оснащен трехосевыми датчиками, он может определять ориентацию квадроцикла.
Деталь # 7 — Контроллер полета
Вы можете выбрать плату контроллера, единственная цель которой — управлять квадрокоптером, или вы можете выбрать Arduino UNO. Это микроконтроллер общего назначения, который позволяет вам создать собственный полетный контроллер, купив детали, которые вы хотите установить, и собрав контроллер самостоятельно.
Если вы хотите начать работу с электроникой и кодированием, Arduino UNO — лучшая плата, которую вы можете использовать.Это самая надежная и прочная платформа, которая позволяет буквально играть с ней как угодно.
Входит в состав:
- 14 цифровых входов / выходов (6 из них могут использоваться как выходы для ШИМ)
- 6 аналоговых входов
- кварцевый кристалл 16 МГц
- Разъем USB
- разъем питания
- заголовок ICSP
- кнопка сброса
Вы можете использовать USB-кабель для подключения к компьютеру, батарее или адаптеру переменного / постоянного тока для включения.
Самое лучшее в этой доске то, что она позволяет вам возиться с ней и не беспокоиться о ее разрушении. Худшее, что вы можете с этим сделать, — это поджарить чип, который, к счастью, можно заменить всего за пару долларов.
Вы можете запрограммировать «UNO» с помощью программного обеспечения Arduino. Чтобы получить подробную информацию, которая поможет вам начать работу с полетным контроллером Arduino UNO, перейдите к последнему разделу сообщения.
Деталь # 8 — Радиоуправляемый передатчик
Самый распространенный способ программирования и управления квадрокоптером — это радиоуправляемый передатчик.Обычно вы можете выбрать один из двух режимов: акробатический или стабильный.
Для управления квадроциклом в акробатическом режиме гироскоп — единственный, который отправляет значения на обработку. В этом случае управляющие ручки предназначены только для управления и установки скорости вращения для трех осей, и если вы отпустите их, значения не будут повторно сбалансированы автоматически.
Пригодится тем, кто хочет выполнять воздушные трюки, потому что дрон можно немного наклонить, а после отпускания стиков квад сохраняет положение.Это не лучший режим для новичков, потому что управлять квадроциклом в этом режиме довольно сложно. По сути, чем больше у вас навыков в управлении дроном, тем меньше вам понадобится помощи в обеспечении стабильности.
Итак, когда вы начинающий пользователь дронов, используйте второй режим управления, потому что для определения ориентации дрона в этом режиме работает каждый датчик. Скорость двигателя будет регулироваться автоматически, и дрон будет балансироваться самостоятельно.
В настоящее время доступны различные системы управления RC , такие как Futaba, Spektrum, Turnigy, FlySky и так далее.Вот несколько наших любимых:
Электромонтаж, пайка и программирование
Это самая сложная часть всего процесса строительства. Пайка — это очень специфическая техника, поэтому обязательно выполняйте этот процесс осторожно. Убедитесь, что вы точно знаете, что вам нужно делать, прежде чем начинать каждый шаг. Для этого вам понадобится:
Покупайте модуль Bluetooth только в том случае, если вы хотите иметь представление о параметрах и настраивать квадрокоптер через приложение, а не брать ноутбук с собой в поле во время тестирования.
Схемы
Это основной план вашей операции:
Как подключить ESC:
- Сигнальный штифт ESC 1 — D3
- Сигнальный штифт ESC 3 — D9
- Сигнальный штифт ESC 2 — D10
- Сигнальный штифт ESC 4 — D11
Как подключить модуль Bluetooth:
Как подключить MPU-6050:
Как подключить светодиодный индикатор:
Как подключить приемник:
- Дроссель — 2
- Элероны — D4
- Элероны — D5
- Руль — D6
- ВСП.1 — D7
Вам необходимо заземлить MPU-6050, модуль Bluetooth, приемник и ESC.И для этого вам необходимо подключить все контакты GND к контакту GND Arduino.
Как спаять все вместе
Вот порядок, в котором вы должны спаять все части вместе:
Первое, что вам нужно сделать, это взять женские разъемы и припаять их к макетной плате. Здесь будет размещаться ваша плата Arduino.
Припаяйте их прямо по центру, чтобы оставалось место для остальных разъемов для MPU, модуля Bluetooth, приемника и регуляторов скорости, и оставьте место для некоторых дополнительных датчиков, которые вы, возможно, решите добавить в будущем.
Следующим шагом является пайка штыревых разъемов приемника и регуляторов прямо из штыревых разъемов Arduino. Сколько у вас будет рядов заголовков мужских ESC, зависит от того, сколько двигателей будет у вашего дрона.
В нашем случае мы строим квадрокоптер, то есть будет 4 ротора и ESC для каждого. Это также означает, что будет 4 строки, каждая из которых будет иметь по 3 штекера.
Первый заголовок в первой строке будет использоваться для PID сигнала, второй — для 5V (хотя это зависит от ваших ESC, имеющих вывод 5V или нет, в противном случае вы оставите эти заголовки пустыми), а третий Заголовок будет для GND.
По окончании пайки регуляторов скорости переходите к паяльной части разъемов приемника. В большинстве случаев у квадрокоптера 4 канала. Это «газ», «тангаж», «рыскание» и «крен». Оставшийся свободный канал (пятый) используется для смены режима полета (вспомогательный канал). Это означает, что вам нужно будет припаять штекерные разъемы в 5 рядов. Все, кроме одной, будут иметь один заголовок, а только для одной из этих строк требуется 3 заголовка подряд.
Как подключить всеНиже вы можете увидеть пример правильного подключения.Как вы можете видеть на картинке, то, о чем мы только что говорили, расположено слева (MPU припаян по центру) на плате, а слева (два женских разъема припаяны снизу) на плате — это то, как мы припаяли и подключили модуль Bluetooth. .
В нашем случае все земли были связаны с землями Arduino. Это включает в себя все заземления ESC, массу приемника (заголовок сигнала газа полностью справа), а также заземление модуля Bluetooth и MPU.
Далее вам нужно следовать схемам и соединениям, которые мы объяснили выше.Например, MPU (SDA — A4 и SCL — A5) и для Bluetooth (TX — TX и RX — RX) Arduino.
После этого просто проследите за подключениями, как мы их написали: Сигнальные контакты ESC1, ESC2… к D3, D10… Arduino. Затем пины сигнала приемника Pitch — D2, Roll — D4… и так далее.
Кроме того, вам необходимо подключить длинный вывод светодиода (положительный вывод) к выводу Arduino D8, а также добавить резистор на 330 Ом между землей Arduino и коротким выводом светодиода (отрицательный вывод).
Последнее, что нужно сделать, это подключить источник питания 5 В. И для этого вам необходимо параллельно подключить черный провод (заземление аккумулятора) к земле всех ваших компонентов, а красный провод к Arduino, MPU и модулю Bluetooth, контакты 5 В.
Теперь MPU 6050 необходимо припаять к штекерным разъемам и к тем, которые вы планируете использовать. После этого поверните плату на 180 градусов и подключите все ваши компоненты к соответствующим разъемам на макетной плате.
Вот как это должно выглядеть, когда закончена пайка и проводка:
Включите его, и ваш Arduino готов к добавлению кодов через компьютер!
Как запрограммировать полетный контроллер Arduino
Полетный контроллер Arduino также требует некоторого компьютерного программирования для работы.Теперь, когда мы закончили сборку и пайку, мы можем перейти к аспекту кодирования. В этом разделе содержится пошаговое руководство о том, что вам нужно сделать, чтобы запустить полетный контроллер Arduino.
Во-первых, вам необходимо загрузить MultiWii 2.4. Тогда, когда вы его извлечете, вы получите это:
Войдите в папку MultiWii, найдите значок MultiWii и запустите его:
Используйте Arduino IDE, чтобы найти «файл Arduino» или файл Multiwii с расширением «.я нет». Любые «CPP-файл» или «H-файл» являются вспомогательными файлами для нашего кода Multiwii, поэтому не открывайте их. Просто используйте файл Multiwii.ino.
Когда вы открываете файл, вы найдете множество вкладок, таких как Alarms.cpp, Alarms.h, EEPROM.cpp, EEPROM.h и многие другие. Найдите «config.h»
Прокрутите вниз, пока не найдете «Тип мультикоптера», а затем, удалив «//», вы отметите это как определенное и работающее. Quad X, потому что мы предполагаем, что вы используете конфигурацию ротора «X» на вашем квадроцикле.
Теперь прокрутите вниз и найдите «Combined IMU Boards» и активируйте тип Gyro + Acc Board, который вы используете. В нашем случае мы использовали GY-521, поэтому мы активировали эту опцию.
Если вы решите добавить другие датчики, такие как барометр или ультразвуковой датчик, все, что вам нужно сделать, это «активировать» их здесь, и они будут работать.
Далее идет «Пин зуммера»:
Там нужно активировать опции индикатора полета (первые 3):
Теперь вам нужно прошить код на Arduino.
Отключите плату Arduino от полетного контроллера, а затем подключите ее к компьютеру через USB. Выйдя из FC и подключившись к компьютеру, вы найдете TOOLS и выберите тип своей платы Arduino (в нашем случае Arduino Nano).
Теперь найдите «Последовательный порт» и активируйте COM-порт, к которому подключен Arduino Nano (в нашем случае — COM3).
Наконец, щелкните стрелку, загрузите код и дождитесь передачи кода.
Когда загрузка завершена, отсоедините Arduino от USB, вставьте его обратно на свое место в плате FC и подключите батарею 5 В, чтобы весь FC был запитан, а затем подождите, пока светодиод на Arduino не загорится красным. Это означает, что загрузка завершена, и вы можете снова подключить его к компьютеру.
Теперь найдите папку Multiwii 2.4, затем MultiwiiConfig и найдите папку, совместимую с вашей ОС. В нашем случае это «application.windows64».
Теперь запустите приложение MultiwiiConf:
Когда откроется пользовательский интерфейс, вам нужно выбрать COM-порт Arduino и нажать «Пуск», как показано на изображении ниже.
И все! Вы сразу заметите, как вы перемещаете FC, значения для данных акселерометра и гироскопа отображаются на экране. Ориентация вашего FC показана внизу.
В этом интерфейсе вы можете изменить значения PID и точно настроить свой квадроцикл в соответствии с вашими личными предпочтениями.Вы также можете назначить режимы полета определенным положениям вспомогательного переключателя в этом интерфейсе.
Все, что вам нужно сделать, это найти место для вашего Arduino FC на раме, и он готов взлететь в небо.
Заключение
Самостоятельная сборка дрона может оказаться сложным и трудным процессом. Тем не менее, он также гарантированно будет сопровождаться собственными наборами наград и удовольствий. Очень легко пойти в магазин и купить готовый к полету дрон, но люди, которые создают дроны с нуля, не делают этого по этой причине.Это ощущение, которое вы испытываете в самый первый раз, когда управляете дроном, полностью созданным вами. На этих летательных аппаратах довольно весело летать, но есть шанс, что вы получите еще больше удовольствия еще до того, как полет начнется!
Мы надеемся, что эта статья помогла вам и дала вам лучшее представление о том, что делает каждая часть квадрокоптера. Теперь вы должны знать, как правильно выбрать запчасти для квадрокоптера. Если вам удалось собрать свой собственный квадрокоптер и все идет хорошо, вы можете прочитать другую нашу статью о том, как управлять квадрокоптером, чтобы получить больше советов.
Кроме того, вот серия видео, в которой показано, как собрать все части вместе и построить квадрокоптер Arduino с нуля. Если вы визуально обучаетесь, это должно быть хорошим дополнением к этой статье, на которое вы можете ссылаться, если когда-нибудь застрянете на каком-либо этапе сборки квадрокоптера:
YMFC-3D Часть 1 — Аппаратное обеспечение
YMFC-3D Часть 2 — Подключение передатчика и приемника RC
YMFC-3D Часть 3 — Как подключить гироскоп
YMFC-3D Часть 4 — Электронный регулятор скорости (ESC)
YMFC-3D Часть 5 — ПИД-регулятор квадрокоптера и настройка ПИД-регулирования
YMFC-3D Часть 6 — Контроллер полета с исходным кодом
Не стесняйтесь оставлять комментарии или отзывы об этом посте.