Меню

Aht10 подключение двух датчиков

Характеристика AHT10:

— Измерение относительной влажности (нормальный рабочий диапазон): 0 — 80%, разрешение: 0.024%, точность измерения ± 2%
— Измерение температуры: -40°C — + 85°C, разрешение: 0.01 °C, точность измерения ± 0,3°C

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

При длительном контакте с высокой концентрацией химических паров, показания датчика дрейфуют. Если датчик подвергся воздействию экстремальных условий или химических паров, его можно восстановить до состояния калибровки методом сушки, при температуре 80-85 °C и относительной влажности Подключение AHT10 к Arduino

К микроконтроллеру датчик подключается по I2C интерфейсу, адрес устройства 0x38.
Несмотря на то, что некоторые сайты пишут, что у датчика можно сменить адрес на 0х39, это не правда, адрес у него фиксированный, 0x38 для записи и 0x39 для чтения. Только один AHT10 может быть подключен к шине I2C.

Подключение модуля не должно вызвать проблем, все контакты датчика, подключаются к соответствующим контактам на плате Arduino. Вывод VIN подключается к 5V или 3,3V, в зависимости от версии платы Arduino.

В моём случае это Arduino совместимая плата Zirka PB Nano. На плате Nano, вывод 5V может быть обозначен как VCC.

Для работы с датчиком нужно установить библиотеку: скачать библиотеку AHT10.

После этого в Arduino IDE из примеров выбираем скетч: ФайлПримерыAHT10exampleAHT10_Serial_Test

После загрузки скетча, открываем монитор последовательного порта и видим показания датчика.

Источник

Датчик температуры и влажности AHT10/AHT15/AHT20

Пять лет сенсоры HTU21D/SHT21/Si7021 были королями Arduino среди бюджетных термометров/гирометров, но всему приходит конец. Китайцам удалось сделать за $1.3 и не хуже.

Сенсор AHT10 общается по I²C шине, имеет ДВА! адреса и заводскую калибровку. Если верить тестам от Oleksandr Liutyi новый король даже немножко выигрывает по кучности результатов.

Вот так AHT10 выглядит под крышкой

Схема один в один как у старичка. Внимание: на плате установлен LDO XC6206-3.3 с максимальным входным напряжением Vin 80% может привести к временному дрейфу относительной влажности на + 3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации.

Официального datasheet на английском нет. В кустарном переводе куча неясностей. Но тем не менее мне удалось кое-что разобрать и написать библиотеку.

UDP: Если во время чтения на I²C шине возникает проблема, то библиотека вместо температуры и влажности выдаёт 255/AHT10_ERROR, как бы намекая вам о случившемся.

UDP2: Тема Oleksandr Liutyi на официальном форуме Arduno.

UDP3: Вроде написал кучу примеров. Подробно все закоментировал с объяснениями, но народ не догоняет. Для тех кто на бронепоезде еще раз. Каждый раз, когда вызывается myAHT10.readTemperature() или myAHT10.readHumidity(), библиотека читает по 6 байт (всего 12 байтов). Это много и не эффективно. AHT10 измеряет температуру и влажность одновременно. Это означает, что вся информация о T и RH уже присутствует в первых 6 байтах. Зачем гонять туже инфу по I²C шине второй раз! Для этого делаем так:

Serial.print(myAHT10.readHumidity(AHT10_ USE_READ_DATA)); //use same 6 bytes

UDP4: Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 8 секунд. Конечно, сенсор может и быстрее, но полученным значениям я бы верить не стал.

UDP5: Библиотека подросла до вересии 1.1.0. Исправлен баг и добавлена поддержка AHT20.

Источник

Arduino.ru

помогите подключить AHT10 к ардуино ?

нашол библиотеку загрузил

заливаю в уно пример из среды ардуино

I2C сканер запустите и проверьте — отвечает ли ваш датчик и на каком адресе

подскажите как это сделать

подскажите как это сделать

Читайте также:  Датчик холостого хода лексус gs300

на первый раз открыл гугл и нашел за вас:

На будущее привыкайте искать такие ответы в гугле сами, форум не для этого

сделал как предложили но опять ничего не происходит

у меня их 10 штук и ни один не работает

все показывают одну строку

может другие библиотеки нужны

стех пор может новые версии вышли ревизии

схему подключения нарисуй.

резисторы подтягивающие попробуй припаять меджу SDA и +5 и SCL и +5. На 3-5 кОм оба

это можно сделать так. На твоей фотке ниже кварца есть поле для разъемов куда выведены SCL и SDA. Туда впаять резисторы между каждой дыркой и +5В

так же в поиске порта висит скан

и при загрузки скеча отображения температуры и влажности висит строка Thinary Eletronic AHT10 Module.

И этта. У тебя есть еще какой-нить модуль с I2C? Чонить типа часов там, памяти или экранчика OLED 0.96 ?

на даччике поменяй местами SCL и SDA. Не заработает -> фпамойку.

Мои АНТ10 еще едут, я их еще не щюпал, более предметно ничо подсказать не могу. Пытай sadmana

он сказал что у него всё хорошо и он доволен ими

У меня всё ОК с опросом, проблем не возникло никаких (кроме понимания фрагментов даташита на пиньине).

Насчёт «других библиотек» не в курсе, стоковая у меня заработала, а потом я на чистейшем Wire накатал ещё опрос.

Но, судя по тому, что датчик I2C сканеру не отвечает, проблема не в библиотеке.

Подтягивающие резисторы там уже стоят (сборка 103), дополнять ничем не надо. Я бы начал проверку с напруги на входе и выходе 662K: https://www.mikrocontroller.net/attachment/193855/LM6206N3.pdf

но я его и от 3,3в пробовал запитывать всеравно не работал

На выходе LDO 4,2V ?

Это проблема, ибо 供电电压 | 典型 | 1.8 | 3.3 | 3.6 | V

я брал не тронутую и подавал 3,3 но не работает

Ну, тут я не помощник: всё, что знал — написал. Измеряйте на выходе LDO и делайте выводы.

У меня был модуль со странным 662K, который 4.5V на выходе давал сенсору, рассчитанному на 3.6V. Последний был в обмороке.

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

Срочно переежжяй из этого места, а то загнёсся.

Здравствуйте. Помогите пожалуйста подключить AHT10, какие скетчи только не пробовал (пробовал тот что здесь приводится тоже), даже IDE сносил и последнюю версию поставил, ничего не помогает. Выдает в конце ошибку: exit status 1 Thinary_AHT10.h: No such file or directory Хочу блок для FLProg создать, для этого нужен рабочий скетч, а опыта в ардуино мало. Фотку фложил, файл полного текст ошибки из IDE не знаю как прикрепить.

Хочу блок для FLProg создать, для этого нужен рабочий скетч, а опыта в ардуино мало. Фотку фложил, файл полного текст ошибки из IDE не знаю как прикрепить.

Не, с таким IQ точно не сделаешь

Олег, сообщение об ошибке не пробовал перевести?
Ну и тупица.

Хочу блок для FLProg создать, для этого нужен рабочий скетч, а опыта в ардуино мало. Фотку фложил, файл полного текст ошибки из IDE не знаю как прикрепить.

Не, с таким IQ точно не сделаешь

1\AppData\Local\Temp\arduino_build_431392 -warnings=more -build-cache C:\Users\08A4

1\AppData\Local\Temp\arduino_cache_949013 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\08A4

1\AppData\Local\Temp\arduino_build_431392 -warnings=more -build-cache C:\Users\08A4

Источник

AHT10

Блок для высокоточного датчика температуры и влажности — AHT10.

Автор публикации

fielder575

7 комментариев к “AHT10”

а что, блок без «… delay(1000);…» было сделать не вариант? хлам.

Победил проблему с загрузкой модуля выбором в контекстном меню пункта «Сохранить ссылку как…».

Читайте также:  Электронные датчики веса это

По умолчанию «ссылка» сохраняется с нужным расширением и, что радует, с нужным содержанием. 🙂

Не рабочаяя ссылка. Файл не скачивается, открывается ввиде html кода.

Здравствуйте! При открытии ссылки выдает интернет страницу. Как это побороть? Копирование через текстовые редакторы не помогает.

Разобрался. Файл при скачивании почему то открывается в браузере и сохраняется только в его расширении AHT10_Code_-_Basic.ubi.html, а у меня расширения скрыты, не сразу сообразил, думал что не так с программой.

Спасибо за код, все заработало. 🙂

Здравствуйте. Я начал осваивать Flprog, вроде получается. Купил датчик AHT10 а в программе такого нет. Увидел ваш код а как его вставить в пользовательский блок не знаю, в интернете тоже не нашел.

Оставьте комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Взаимодействие нескольких DS18B20, цифровых датчиков температуры, с Arduino

Одним из самых больших преимуществ датчиков температуры DS18B20 является то, что на одной шине 1-Wire могут сосуществовать несколько таких датчиков. Поскольку каждый DS18B20 имеет уникальный 64-битный последовательный код, зашитый на заводе, их легко отличать друг от друга.

Взаимодействие с несколькими DS18B20, цифровыми датчиками температуры, с Arduino

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

Это может показаться пугающим, но, прежде чем углубляться в это руководство, вы должны быть знакомы с основами работы с однопроводными датчиками температуры DS18B20. Если вы не знакомы с ними, посмотрите следующую статью:

А теперь, без дальнейших задержек, давайте подключим датчики DS18B20 к нашей плате Arduino.

Подключение нескольких датчиков DS18B20 к Arduino

Подключение довольно простое.

Начните с подключения всех датчиков DS18B20 параллельно, то есть объединения всех выводов VDD, выводов GND и сигнальных выводов. Затем подключите шину VDD к выходу 5V на Arduino, GND к выводу земли Arduino, и подключите сигнальные выводы к цифровому выводу 2 на Arduino.

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

Рисунок 1 – Подключение нескольких датчиков температуры DS18B20 с Arduino

Установка библиотеки для DS18B20

Протокол Dallas 1-Wire несколько сложен и требует много кода для парсинга связи. Чтобы скрыть эту ненужную сложность, мы установим библиотеку DallasTemperature.h, чтобы мы могли выполнять простые команды для получения показаний температуры от датчика.

Чтобы установить библиотеку, перейдите в раздел «Скетч»→ «Подключить библиотеку» → «Управление библиотеками…». Подождите, пока менеджер библиотеки загрузит индекс библиотек и обновит список установленных библиотек.

Рисунок 2 – Установка библиотеки Arduino – выбор управления библиотеками в Arduino IDE

Чтобы отфильтровать результаты поиска, введите « ds18b20 ». Там должна быть пара записей. Ищите DallasTemperature от Miles Burton. Нажмите на эту запись, а затем выберите Установка.

Рисунок 3 – Установка библиотеки DallasTemperature в Arduino IDE

Эта библиотека DallasTemperature является аппаратно-зависимой библиотекой, которая обрабатывает функции более низкого уровня. Она должна быть связана с библиотекой OneWire для связи с любым устройством 1-Wire, а не только с DS18B20. Установите и эту библиотеку.

Рисунок 4 – Установка библиотеки OneWire в Arduino IDE

Способ 1: чтение показаний DS18B20 по индексу

В этом методе библиотека Dallas Temperature при инициализации обнаруживает все датчики, использующие одну шину. Она рассматривает всю шину как массив датчиков и присваивает им индексы. Поэтому мы можем точно выбрать каждый датчик по его индексу и прочитать показания температуры.

Вывод вышеприведенного скетча выглядит так:

Рисунок 5 – Вывод показаний нескольких датчиков DS18B20 индексным методом

Читайте также:  Из за чего выходит из строя датчик дмрв

Объяснение кода

Скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки DallasTemperature .

В настроечной части кода мы сначала вызываем функцию begin() . Она инициализирует шину и обнаруживает все DS18B20, присутствующие на ней. Затем каждому датчику присваивается индекс и устанавливается разрешение в 12 бит.

Затем мы вызываем функцию getDeviceCount() , чтобы получить количество устройств, найденных на шине.

В циклической части кода мы используем функцию requestTemperatures() , чтобы отправить команду всем датчикам для преобразования температуры.

Теперь, используя простой цикл for(int i = 0; i , мы можем перебирать массив датчиков и считывать температуру DS18B20 по индексу i , просто вызывая getTempCByIndex(i) .

Способ 2: чтение датчика DS18B20 по адресу

Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, чтобы отличать их друг от друга. В этом методе мы найдем этот адрес для соответствующей маркировки каждого датчика. Затем этот адрес можно использовать для считывания каждого датчика в отдельности.

Поиск адресов датчиков DS18B20s на шине

Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.

Вы можете подключать только один датчик за раз, чтобы определить его адрес (или последовательно добавлять по одному новому датчику, чтобы вы могли идентифицировать каждый из них по его адресу). Затем вы можете пометить каждый датчик.

Теперь откройте монитор последовательного порта. Вы должны получить что-то подобное:

Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине

Скопируйте все адреса, так как они нам понадобятся в следующем скетче.

Чтение показаний датчиков DS18B20 по адресу

Следующий скетч считывает температуру датчиков DS18B20 по их адресам. Прежде чем приступить к загрузке скетча, вам нужно изменить адреса датчиков DS18B20 на те, которые вы определили в предыдущем скетче.

Вывод вышеприведенного эскиза выглядит так

Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса

Объяснение кода

Как обычно, скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки DallasTemperature .

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

Во фрагменте настройки мы инициализируем библиотеку путем вызова функции begin() и инициализируем последовательную связь с ПК.

В цикле мы просто посылаем команду всем датчикам для преобразования температуры, используя функцию requestTemperatures() .

Затем, чтобы напечатать температуру датчика, мы вызываем пользовательскую функцию printTemperature(DeviceAddress deviceAddress) , для которой deviceAddress передается в качестве параметра.

Вышеприведенная функция просто вызывает библиотечные функции getTempC(deviceAddress) для отображения температуры в градусах Цельсия и DallasTemperature::toFahrenheit() для отображения температуры в градусах Фаренгейта.

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.

Ясен пень тоже самое, но без функций и лишних печатей. Вы этим уроком что хотели преподнести? Как функции работают или как датчики подключать. Уроки для начинающих? Надо думать как начинающий. Нахрена туда пихать лишнее. Кое как разобрался в вашей писанине. Проще надо быть и люди потянутся.

Что именно усложнено? Какие циклы?
Вы переписали всё то же самое, но без отдельной функции печати температуры в градусах Цельсия и Фаренгейта с символами градусов ‘°’.

Трындец всё как сложно запутываете нет чтобы тремя простыми словами нет надо циклы мутить запутанные.

#include
#include
#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
<
Serial.begin(115200);
sensors.begin();
>

void loop(void)
<
sensors.requestTemperatures();
Serial.print(«температура»);
Serial.print(sensors.getTempC(sensor1));
Serial.print(«температура»);
Serial.print(sensors.getTempC(sensor2));
Serial.print(«температура»);
Serial.print(sensors.getTempC(sensor3));
delay(1000);
>

Здравствуйте. Подскажите, пожалуйста, в каком порядке датчикам присваиваются индексы? Могут ли одни и те же датчики получать разные индексы? Спасибо.

Источник

Adblock
detector