• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE модули TB-04 (TLSR8251)

pvvx

Активный участник сообщества
Что еще обнаружил: при изменении значения rf_set_power_level_index() даже от самых маленьких до самых больших уровней потребляемый ток не меняется - как был около 10-12 мА в момент радиосвязи, так и остается. Смотрю PowerProfiler'ом.
Меняется, ещё как.
Если полная схемотехника и значения более +3дБ, то меняется очень хорошо. В пиках от менее десятка мА до более 30 мА...
Средний ток так-же меняется.
Сглаживание пиков зависит от емкости в питании... rf_set_power_level_index() должно применяться каждый раз при цикле пробуждения (так пиано в примерах, но в доках нифига не сказано, а в реальности точную зависимость установить не пытался - главное что зависимость при изменениях по полной шкале rf_set_power_level_index() доходит до 3-х раз по среднему току...).
 

pvvx

Активный участник сообщества
Samples:
C:
// установить индекс мощности RF, пользователь должен устанавливать его после каждого пробуждения в режиме ожидания, потому что относительная настройка будет сброшена в режиме ожидания
    user_set_rf_power ( 0 , 0 , 0 );
 

aloika

Active member
Меняется, ещё как.
Если полная схемотехника и значения более +3дБ, то меняется очень хорошо. В пиках от менее десятка мА до более 30 мА...
Средний ток так-же меняется.
Сглаживание пиков зависит от емкости в питании... rf_set_power_level_index() должно применяться каждый раз при цикле пробуждения (так пиано в примерах, но в доках нифига не сказано, а в реальности точную зависимость установить не пытался - главное что зависимость при изменениях по полной шкале rf_set_power_level_index() доходит до 3-х раз по среднему току...).
А у меня не меняется почему-то. Сделал, как написано (хотя и так было вписано в void user_init_deepRetn(void) - инициализацию после пробуждения), сделал и в SUSPEND_EXIT (как в приведенных образцах). И при всех значениях примерно так:

1630944406110.png
 

aloika

Active member
Ну небольшая разница есть. Но не в разы. Особенно видно на рекламе. Вот RF_POWER_N30dBm
1630945503273.png

а вот RF_POWER_P10p46dBm
1630945822063.png
 

aloika

Active member
А при соединении так:

При RF_POWER_N30dBm :

1630947373271.png


При RF_POWER_P10p46dBm :
1630947230795.png

Да, небольшая разница есть. В среднем токе заметно мало, т.к. в схеме в основном потребляет жк-экран.
 

pvvx

Активный участник сообщества

pvvx

Активный участник сообщества
Да, небольшая разница есть. В среднем токе заметно мало, т.к. в схеме в основном потребляет жк-экран.
Это INA226 не успевает. Шаг разрешения по времени у неё более длительности пакета передачи...
Берите Осла и типа INA199 - сразу будет виден уровень тока RF-TX:
1631142515865.png
 

UrikEEE

New member
Почитал этот форум и заказал себе парочку модулей TF-03F на чипе tlsr8253. Пока они едут, стал читать даташит. Собираюсь эти модули использовать с питанием от батарейки/аккумулятора с микромощным линейным стабилизатором (Vbat->Vdd). Надо будет контролировать Vbat. Задумался, а как это сделать лучше? Тупо поставить внешний резисторный делитель и с него подавать сигнал на аналоговый вход - это просто, но будет постоянно жрать ток. Городить городуху с транзисторным ключом, чтобы подавать напряжение на резисторный делитель по отдельному управляющему сигналу - можно, но усложняет схему. Я читаю даташит, разделе SAR ADC, и вижу там в описании регистров ADC биты afe_0xfa<7:6> с наименованием "Analog input pre-scaling select", которыми можно задать предделитель как 1/8. Но мучает такой вопрос: а можно ли на аналоговый вход (для которого настроен предделитель 1/8) подавать напрямую Vbat, которое больше Vdd ?

Подскажите, можно ли так измерить Vbat? Настроить аналоговый вход с предделителем 1/8 и напрямую подать на него Vbat. Как то скудно в даташите с примерами и схемами. И еще меня смущает таблица "16-1 Absolute Maximum Ratings" в том же даташите - там указано, что напряжение на входах не должно превышать Vdd+0.3
 

UrikEEE

New member
Блин, в даташите нет схемы входного/выходного каскадов типичного GPIO. Хотя в даташитах на чипы других производителей эти схемы обычно есть и на них как правило есть защитные диоды, защищающие их от повышенного входного напряжения.

Думаю, что можно будет попробовать подать Vbat на аналоговый вход не напрямую, а через последовательный резистор сопротивлением ну скажем 10-20КОм. Входной пин как аналоговый вход можно конфигурировать непосредственно перед измерением Vbat, а в остальное время его отключать (и вход, и выход). Вряд ли это убъёт чип, но надо будет проверить ток, протекающий через эту цепь (Vbat-резистор-вход). Это так, мысли (бредни) вслух...
 

aloika

Active member
Собираюсь эти модули использовать с питанием от батарейки/аккумулятора
А какое напряжение батарейки будет? От двух 1,5 В батареек работает безо всякого стабилизатора. Контролировать напряжение батарейки в этом случае проблем не составит, в SDK есть пример такой даже.
 

UrikEEE

New member
А какое напряжение батарейки будет? От двух 1,5 В батареек работает безо всякого стабилизатора.
Я хочу использовать эти модули вместе с другими, для которых Vdd нежелательно опускать ниже 3V. Поэтому или 3 батарейки AA или литиевый аккумулятор, например 18650.

Вот смотрю на эту схему на чипе mega328p, где измерение Vbat сделано на резисторном делителе R9/R10 и нижний резистор вместо GND подключен к пину ADCEN, который настраивается как выход с низким уровнем только на время измерения Vbat, а так он настроен как вход (резисторный делитель отключен от GND). Хочу попробовать на заказанном модуле TB-03F так же.
 

nikolz

Well-known member
Я хочу использовать эти модули вместе с другими, для которых Vdd нежелательно опускать ниже 3V. Поэтому или 3 батарейки AA или литиевый аккумулятор, например 18650.

Вот смотрю на эту схему на чипе mega328p, где измерение Vbat сделано на резисторном делителе R9/R10 и нижний резистор вместо GND подключен к пину ADCEN, который настраивается как выход с низким уровнем только на время измерения Vbat, а так он настроен как вход (резисторный делитель отключен от GND). Хочу попробовать на заказанном модуле TB-03F так же.
можете сделать измерение напряжения на основе замера времени разряда конденсатора. АЦП не требуется. достаточно GPIO.
 

UrikEEE

New member
можете сделать измерение напряжения на основе замера времени разряда конденсатора. АЦП не требуется. достаточно GPIO.
Не, ну это уже перебор, как мне кажется. Имея чип со встроенным ADC, начать измерять время зарядки кондера. И кто знает, где именно будет порог на GPIO, когда вход станет определять входное напряжение как 1 или 0. При этом опять же не обойтись без резисторного делителя, так как на аналоговый вход чипа я бы не рискнул напрямую подать Vbat, которое выше Vdd. И нужен опять же транзисторный ключ, замыкающий цепь заряда (или разряда) конденсатора. К тому же примеры SDK с таймерами предполагают не прямую работу с аппаратными таймерами, а путем создания программных таймеров с функциями пользователя. Нет, этот путь точно не для меня.
 

pvvx

Активный участник сообщества
Я хочу использовать эти модули вместе с другими, для которых Vdd нежелательно опускать ниже 3V. Поэтому или 3 батарейки AA или литиевый аккумулятор, например 18650.

Вот смотрю на эту схему на чипе mega328p, где измерение Vbat сделано на резисторном делителе R9/R10 и нижний резистор вместо GND подключен к пину ADCEN, который настраивается как выход с низким уровнем только на время измерения Vbat, а так он настроен как вход (резисторный делитель отключен от GND). Хочу попробовать на заказанном модуле TB-03F так же.
3 батарейки AA 1.5*3=4.5 В
Указанная схема:
1634341070235.png
На входе ADCIN пусть будет 3.6 В (внутренние утечки, диоды защиты и прочее к Vcc 3.3), когда отключен ADCEN.
Итого: (4.5-3.6)/270000 = 0.00000333... т.е. 3.3 мкА, что в три раза более чем потребляет сам чип TLSR825x в спящем режиме:
1634341447784.png
т.е. эта цепь будет кушать примерно как BLE маячок.
 

UrikEEE

New member
т.е. эта цепь будет кушать примерно как BLE маячок.
Да, абсолютно верно. Эти 3.3 мкА - плата за простоту реализации схемы измерения Vbat. Ток потребления чистого (без пина ADCEN) резисторного делителя 270КОм/68КОм составил бы уже 13.3 мкА. Если добавлять к чистому резисторному делителю транзисторный ключ, который будет коммутировать подачу именно Vbat на этот делитель (а не отключать делитель от GND), то это уже усложняет схему (у меня получается еще 2 транзистора и 4 резистора).

Еще несколько микроампер будет кушать стабилизатор (хотя бы MCP1700-3302E) и это тоже плата. Но я планирую в качестве источника питания использовать или 3 батарейки АА или литиевый аккумулятор. Емкостью примерно 2000 мАЧ. И я готов смириться с общим током потребления в 10-20 мкА в режиме сна (это и сам модуль, и резисторный делитель, и стабилизатор, и другие модули).
 

pvvx

Активный участник сообщества
... или литиевый аккумулятор, например 18650.
Обычный саморазряд у 18650 по спецификации - всего менее 15 % спустя 28 дней хранения...
Т.е. если расчет на работу устройства на более пару месяцев, то необходимо подбирать разные 18650 на малые собственные токи утечки.
 

nikolz

Well-known member
3 батарейки AA 1.5*3=4.5 В
Указанная схема:
Посмотреть вложение 11408
На входе ADCIN пусть будет 3.6 В (внутренние утечки, диоды защиты и прочее к Vcc 3.3), когда отключен ADCEN.
Итого: (4.5-3.6)/270000 = 0.00000333... т.е. 3.3 мкА, что в три раза более чем потребляет сам чип TLSR825x в спящем режиме:
Посмотреть вложение 11409
т.е. эта цепь будет кушать примерно как BLE маячок.
убрать R9, R10 заменить на R9 вместо ADCIN включить режим GPIO,
получим схему измерения напряжения по разряду конденсатора.
ток потребления вне измерений можно сделать существенно меньше.
 

nikolz

Well-known member
3 батарейки AA 1.5*3=4.5 В
Указанная схема:
Посмотреть вложение 11408
На входе ADCIN пусть будет 3.6 В (внутренние утечки, диоды защиты и прочее к Vcc 3.3), когда отключен ADCEN.
Итого: (4.5-3.6)/270000 = 0.00000333... т.е. 3.3 мкА, что в три раза более чем потребляет сам чип TLSR825x в спящем режиме:
Посмотреть вложение 11409
т.е. эта цепь будет кушать примерно как BLE маячок.
еще можно сделать так:
Убрать R10 и измерять время заряда .
При этом надо в начале измерения включить ADCIN (если это возможно иначе использовать еще один пин GPIO) на вывод и вывести 0, потом включить на ввод и измерить время заряда.
 
Сверху Снизу