• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Общие вопросы по Arduino IDE для ESP8266

Telek

New member
Вопрос по ADC. Измеряю напряжение питания 3.3v. Делаю делитель 15к + 1к - получаю значение ADC 136 (пересчитываем 1/1024*136*16=2.1v)
Меняю делитель на 10к+1к - получаю ADC 251 (пересчитываю 1/1024*251*11=2.7v). Почему значения так меняются от делителя и почему они не похожи на реальные?
Тестером проверил, делители делят правильно.
 
Вопрос по ADC. Измеряю напряжение питания 3.3v. Делаю делитель 15к + 1к - получаю значение ADC 136 (пересчитываем 1/1024*136*16=2.1v)
Меняю делитель на 10к+1к - получаю ADC 251 (пересчитываю 1/1024*251*11=2.7v). Почему значения так меняются от делителя и почему они не похожи на реальные?
Тестером проверил, делители делят правильно.
Модуль умеет измерять напряжение от 0 до 1В
 

Telek

New member
АлександрН, поэтому я и измеряю через делитель. Вопрос, в том, почему показания отличаются сильно от реального, в том числе зависят от суммарного сопротивления делителя? И как измерить правильно?
 

pvvx

Активный участник сообщества
Вопрос, в том, почему показания отличаются сильно от реального, в том числе зависят от суммарного сопротивления делителя? И как измерить правильно?
А что и чем вы измеряете? У чипа на ногу ADC назначается подтяжка. Есть три известных программных процедуры измерения в SDK. Измерение ADC у чипа "полусофтовое" и зависимостей масса. Ток утечки на ногу ADC, при нормальном измерении я измерял. Он мал. Поставьте на вход емкость (возможно поможет) - там полусофтовый SAR и входного буфера у него нет.
Процедура readvdd33() вообще измеряет сопротивление, подключенное ко входу ADC (падение на нем при включенной подтяжке входа к чему-то там внутрях).

В доках к новым SDK указано, что переключение типов измерения ADC производится изменением в ячейке 107 вроде esp_init_data_default.bin, который записывается в flash но 0x7c000
 
Последнее редактирование:

Telek

New member
pvvx, измеряю через analogRead(0).
readvdd33() - дает верный результат(если я делитель уберу), но мне она не подходит, т.к. я хочу измерять внешнее напряжение(на аккумуляторе 12v)
 

pvvx

Активный участник сообщества
readvdd33() - дает верный результат(если я делитель уберу), но мне она не подходит, т.к. я хочу измерять внешнее напряжение(на аккумуляторе 12v)
Утечку смотрите и кондер на вход.... При 1 кОм такого быть не должно.

Только что:
47к на корпус + 8.2к на источник в 0.628В. Получаем деление в 1.1745. ADC показывает 555.
47к на корпус +422к на источник в 0.628В. Получаем деление в 9.979. ADC показывает 66.
555*1.1745/9.979 = 65.321926.
Отношение делителей примерно 0.117 - ставлю напряжение чтобы показывало 1000 при малом делителе и переключаю делитель - показывает 117
 
Последнее редактирование:

Telek

New member
pvvx, дома проверю. В моем случае получается, что чем меньше сопротивление делителя - тем точнее результат. Как будто у ADC внутреннее сопротивление соизмеримое с моим делителем(т.е. Относительно большой ток утечки)... Может это в моем экземпляре... С др. стороны свое напряжение он измеряет верно. А там не может как-то подтяжка для readvdd33 оставаться при измерении?
 

pvvx

Активный участник сообщества
А там не может как-то подтяжка для readvdd33 оставаться при измерении?
Может. Про то и в начале разговора говорил. Надо смотреть софт и реализацию - зависит от режимов WiFi. Ещё ADC вроде плохо работает при одиночных замерах. Чем чаше опрашивается, тем точнее :) Предел - 20кГц. Я то проверяю в своей Web-свалке - system_adc_read(). Есть system_get_vdd33(), readvdd33(), phy_get_vdd33() и мой собственный опрос ADC в 12 бит (который до 20кГц). У Espressif вроде ошибка в нуле, т.е. смещение +- 1 и мелкие замеры неверны на неё. И опора не 1.000В у ADC.
 
Последнее редактирование:

JustACat

Moderator
Команда форума
Telek, и WiFi должен быть отключен на время измерения, емнип. Иначе они вообще не гарантируют ничего.
 

Telek

New member
JustACat, а как его выключить? Просто отсоединиться от точки доступа или там есть команды на выключения wifi?
 

pvvx

Активный участник сообщества
Telek, и WiFi должен быть отключен на время измерения, емнип. Иначе они вообще не гарантируют ничего.
Там оно (в SDK) автоматом отключается и включается (pm_set_sleep_mode()....pm_wakeup_init()). Код system_adc_read() приведен в моей свалке (Web_Base\app\driver\adc.c) и от него у меня используется только часть для демки записи wav на 20kHz.
И я не выключаю WiFi вообще. Там завязка с оборудованием WiFi и всё наоборот - когда WiFi блок отключен, то ADC не работает. И это не ADC, а кусок - компаратор и ещё пару блоков источников тока, да ещё мелочи... Всё программно запускается и суммируется для вычисления кода конечного значения ADC.
CLEAR_PERI_REG_MASK(0x60000D50,2);SET_PERI_REG_MASK(0x60000D50,2); запускает сравниватель, накопитель...
while(READ_PERI_REG(0x60000D50)&(0x7<<24)); ожидание накопления (тут и всё ограничение на скорость - 50us - 20кГц).
read_sar_dout(sardata); выдает (считывает из регистров) 8-мь интервалов сравнения и они суммируются для получения кода ADC.
Уверен, что можно поменять тайминг SAR-a и получим нормальный 44kHz оцифровку. Но надо делать потоковое аудио, а лень.
 
Последнее редактирование:
проверил с делителями 10к+1к - выдает 303, 22к+1к - 147 что похоже на правду
использую AnalogRead(0), wifi подключен
 

SamGold

New member
С небольшими танцами тоже собрал под Ubuntu x32. Подскажите, пожалуйста, как компилировать не через Arduino редактор. Может какой-то makefile есть(найти не смог). Хочу в качестве редактора использовать NetBeans так как привык к нему.
 

SamGold

New member
Спасибо! А сам алгоритм компиляции прописан в это IDE? То есть мэйквайла нет, чтобы привязать к любому другому редактору?
 

Victor

Administrator
Команда форума
Поправлял что-то @igrr, чтобы плагин к Eclipse работал - поищите в issue.
Тогда, возможно, разберетесь как к NetBeans прикрутить
 
Сверху Снизу