Всё началось с того, что мне было интересно, удастся ли "уместить" 32-битную математику и работу с SI4432 в достаточно "дохлый" PIC16LF1823 и посмотреть сколько времени он будет просчитывать данные от BME280. В реальности, получилось что от начала считывания данных с BME280 (константы + текущие значения параметров) до начала передачи 12mS. Меня это вполне устроило и вот что получилось "на выходе":
Размер ПП 45.5х15.8мм. /печатную плату изготовил Уважаемый mial/ СпойлерТок потребления платы между передачами пакетов - 1.8µA. Рассчётное время автономной работы - более 3-ёх лет. Передача пакета (9600bps) с ожиданием подтверждения о приёме + подбор мощности передатчика (если подтверждение не получено - повтор передачи с увеличением выходной мощности передатчика). Передача и приём возможны на разнесённых каналах. Поправка значения атм. давления по высоте установки датчика (в Па.). Возможность изменения большинства параметров при регистрации датчика на БС (вход в этот режим по нажатию KN1 [в реальности - геркон]).
Значения температуры, давления и влажности передаются в двоично-десятичном виде с точностью 0,1 (значение атм. давления пересчитано в мм рт. ст.). Так же, в пакете передаётся: Номер датчика. Информация о разряде батареи (0-7) Значение текущей мощности передатчика (0-7). Информация о том, что текущий пакет передаётся после рестарта и было ли получено подтверждение о приёме предыдущего пакета.
В ответе от базовой станции могут быть команды: 1. Пакет получен. 2. Изменение значения поправки атм. давления. 3. Однократная поправка времени до передачи следующего пакета. 4. Разрешение/запрет повтора передачи пакета через 10сек. если пакет не был принят. 5. Вкл/выкл светодиода "Передача".
Есть тестовый режим: Кнопками, подключенными к разъёму ICSP (линии PGC и PGD), возможно изменение значения в регистре 09h (SI4432) "30 MHz Crystal Oscillator Load Capacitance" с сохранением в EEPROM. На TP1 - 30 MHz + включение передатчика (несущая частота 434,0 MHz).
Если кто то захочет повторить этот уличный датчик и "подцепить" его к своему изделию - выложу прошивку и подробно распишу протокол общения с БС. Оформлять статью не планирую, но отвечу на все ваши вопросы. ---- Схема + PCB + список деталей: Спойлер
Полагаю, что этот датчик для летающей модели или чего-то подобного (?) Иначе, если он для метеостанции, то зачем выносить датчик давления на улицу, если давление на улице и дома одинаковое, если только приемная станция не в барокамере? Конечно, это при условии установки датчика на высоте жилого помещения, но при разной высоте все равно-же предполагается корректировка давления. Еще вопрос: что удалось улучшить с помощью UPG и как часто передаются данные сенсора, если предполагается работа на протяжении 3 лет?
Я ценю ваше чувство юмора насчёт БПЛА, но это действительно уличный датчик. В настоящее время, данные передаются приблизительно один раз в пять минут. БС работает с двумя такими датчиками, расположенными с разных сторон дома и "разруливает" времена, когда каждый из датчиков передаст свой следующий пакет (что бы два датчика не пытались передать пакет данных одновременно). Если в BME280 есть датчик давления - почему бы не получать с него информацию? Что касается коррекции значения давления именно в датчике - математически, лучше эту поправку делать до перевода из ПА. в мм рт. ст. (меньше ошибка после вычислений) да и БС лучше работать с уже с предварительно скорректированными данными (датчики расположены на разных высотах). ---- P.S. Изначально, задачей (для себя) было написание своей 32-битной математики для 8-битного PIC16 /ненавижу пользоваться чужими библиотеками/. Самое смешное, что получилось почти как у PETER HEMSLEY Это потом уже появилось желание сделать что-то полезное.
Ну если датчик все-равно давление показывает, действительно почему-бы и не взять его. Однако, что делать с показаниями давления от двух датчиков в пределах той-же местности? Отличие между ними будет одно и тоже, определяемое разностью высот установки датчиков. Я имел в виду передавать на базовую станцию сырые данные датчиков, а расчет давления делать на приемном конце, где, как правило больше вычислительных ресурсов и меньше ограничений на токопотребление. Насчет специфических констант сенсоров, примените более продвинутые датчики давления, например, LPS25 или более новый и более точный LPS22, показывающие давление сразу без всяких вычислений. Однако, если первоначальным интересом было получение температуры с улицы, можно было-бы датчик попроще поставить. Если-уж передавать что-то с улицы, так, например, температуру и влажность, но не давление, которое текое-же как дома.
Так все-таки какие преимущества применения RF фронт-енда на UPG21xx? Сам трансивер без ухищрений обеспечивает устойчивый прием на расстоянии порядка 500м при мощности +13dbm. У меня в аналогичном проекте он работает на +10dbm и никогда повторная передача не требовалась. Датчик помимо нашего дома также обслуживает станцию в доме соседей. На такой мощности при передаче каждую минуту среднее токопотребление не превосходит пары десятков микроампер, т.е. его литиевой батарейки хватит лет на 7. Подобная станция у меня уже работает более 3 лет. Это я к тому, зачем регулировать мощность? Если сначала передавать на меньшей для экономии батареи а потом мощность увеличивать в случае неудачи, то с повторной пересылкой да еще и с приемом подтверждения понадобится больше энергии, чем если просто передать 1 раз с большей мощностью. Даже если одну минуту данных не принять из-за помех, ничего страшного. Даже если 2-3 не принять. Погодные условия на улице не меняются так быстро. Кстати, трансивер Ваш не рекомендуется для новых проектов, т.к. фирма уже несколько лет выпускает модернизацию этих чипов с лучшими параметрами.
А насчет 32-битной библиотеки, разве у Микрочипа нет соответствующего апноута? Это именно вопрос, а не утверждение, т.к. помню читал их апноут по операциям с плавающей точкой. Да и у других производителей 32-битные апноты имеются, помню читал у кого-то раньше. Тут я с Вами полностью солидарен - написать свою библиотеку как упражнение имеет смысл. Про Питера я никогда не слышал, но примеры операций с мультибайтовой арифметикой имеются, как правило в книгах. Я это к тому, что книги реферируются по крайней мере, а апноуты пишутся профессилналами.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Я видел ваши статьи. Есть что "почерпнуть". Спасибо за здоровую критику и идеи.
--- Что касается передачи сырых данных - можно было бы и так сделать, но тогда пришлось бы хранить в БС калибровочные коэффициенты или передавать слишком длинный пакет данных. SI7021 хороший датчик, но пришлось бы переходить на другой контроллер, поскольку этот датчик с интерфейсом I2C, а общение с SI4432 по SPI (у меня оба "висят" на одном SPI, только выбираются по CS). /у PIC16LF1823 один MSSP/. Про UPG2214 (антенный коммутатор), честно говоря, я не могу обоснованно сказать будет ли без этого коммутатора хуже или нет. У меня нет измерительной техники, с помощью которой я смог бы провести измерения. Я просто сделал по AN435 (да и китайцы UPG ставят на свои платы). По поводу того что SI4432 снята с производства - я в курсе, но на складах в китае их ещё очень много, да и цена на них ощутимо ниже. Что касается подбора выходной мощности: её уменьшение происходит не после первой удачной передачи. К тому же, есть возможность в настройках отключить эту функцию и задать фиксированную мощность. Ну а что касается библиотек - я как то давно привык к тому, что сделал сам, оттестировал, знаешь как это работает и можно смело использовать в других проектах. Микрочиповские видел но, на мой взгляд, они не оптимально сделаны. Да и "зажрался" я что то в последнее время с контроллерами, у которых памяти столько, что можно особо не думать про оптимизацию кода (оптимизация только по времени). А тут 2К Flash, 128 байт SRAM и 256 EEPROM. Хороший тренинг для мозга. ---- В любом случае, этот датчик нормально работает и переделывать его не вижу смысла. Если кто то захочет повторить - подготовлю и выложу полную информацию.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Здравствуйте товарищи! Тоже вот решил потренировать мозг - только на атмеле и асме. Возник вопрос по калибровочным коэффициентам BME280 dig_H4 и dig_H5. В датащите они указаны как signed short, однако представлены в 12-ти битном виде. Означает ли это, что они однозначно положительные, так как четыре старших бита по дефолту нули, или я чего-то не понимаю?
_________________ Ученье - свет, а неученье - чуть свет, и на работу. |||||||||||||||||||||||||||||||ЛК -20 -10 -5 -3 -1 0 +1 +2 +3 +6 dB |||||||||||||||||||||||||||||||ПК
То есть по 12-му, и в засисимости от его значения число дополняется до 16-ти нулями или единицами - я правильно понял? Просто у меня dig_H4 = 0х156, а dig_H5 = 0х000. dig_H4 однозначно положительное. Но хотелось бы написать код, который бы гарантированно работал со всеми датчиками, а не только с моим.
_________________ Ученье - свет, а неученье - чуть свет, и на работу. |||||||||||||||||||||||||||||||ЛК -20 -10 -5 -3 -1 0 +1 +2 +3 +6 dB |||||||||||||||||||||||||||||||ПК
Да. У меня сделано так. Датчиков сделано немногим более 20-ти и, вроде, у всех показания совпадают с бытовыми гигрометрами. Единственное замечено: Если брать отдельно BME280 (как деталь) - они работают нормально, а вот с ардуриновскими платами (вначале взял на пробу) - мне не повезло (полный ужас). То ли китайцы их паяют с нарушением технологии, то ли отбраковку ставят. А может, просто такие попались...
Спасибо за ответ! Так и будем делать. На счет работоспособности датчиков не сомневаюсь - у меня чистокровные немцы. Взял еще в 15-м году пару штук за сумасшедшие деньги.
_________________ Ученье - свет, а неученье - чуть свет, и на работу. |||||||||||||||||||||||||||||||ЛК -20 -10 -5 -3 -1 0 +1 +2 +3 +6 dB |||||||||||||||||||||||||||||||ПК
UPD: Albert_V, Позвольте еще вопрос - какую формулу Вы использовали для расчета истинного значения давления? А то их несколько вариантов. Я использую для 32-х разрядов с GitHub-а. Но на выходе у меня творится черт знает что. Возможно, я сам допустил где-то косяк, но отловить его пока не могу. Температура и отн. влажность работают стабильно.
_________________ Ученье - свет, а неученье - чуть свет, и на работу. |||||||||||||||||||||||||||||||ЛК -20 -10 -5 -3 -1 0 +1 +2 +3 +6 dB |||||||||||||||||||||||||||||||ПК
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения