Странно работает АЦП (...или питание)
- Войдите на сайт для отправки комментариев
Здравствуйте! Опять у меня всё странно работает...
Отлаживаюсь я, питаясь от USB. Решил аппаратно приблизиться к готовому устройству, и заменил USB-питание на DC-DC преобразователь (стандартный модуль-понижайка на LM2596 HW-411). И тут началась дичь в АЦП!
Мультиметром меряю на аналоговом входе 0.23 В, а на экран Ардуинка выводит 0.180-0.198 В и всё скачет в этих пределах.
Устанавливаю параллельно питанию электролит на 1000 мкФ. В результате мой показометр устаканивается на значении в 0.196-0.198 В и не скачет. Но это всё равно сильно отличается от 0.23 В, которые стабильно при этом кажет мультиметр. Он показывает 0.23 и от USB, и от DC-DC без кондёра, и с кондёром. Т.е. на вход я ей пихаю "стабильные" 0.23 В. При питании от USB показания были ближе всего к мультиметровым и составляли 0.212+/- В.
Интересно то, что опорное для АЦП я выбираю INTERNAL, который при питании от USB на ARef выдаёт 1.07 В, а при питании от DC-DC поднимается до 1.10 В.
В программу я всегда руками заношу показания ARef, и исходя из него у меня уже расчитывается измеренное напряжение:
#define ADC_REF_VOLTAGE 1.07 // Заношу сюда ARef //... // Преобразуем в вольты float voltage = ADC_REF_VOLTAGE / 1023.0 * (float) ADC;
Делаю всё на минимальных клонах ардуинки, поэтому никаких Vin у меня нету, а есть просто Vcc.
Явно влияет качество питания. Подскажите, как правильно питаться, чтобы АЦП работал стабильно?
А, забыл добавить - усредняю показания скользящим средним с размером окна аж в 32 значения. И всё равно свистопляска...
Сопротивление сигнальных линий
Плавающий внутренний опорник - это похоже на бред ! Если это реально так, то надо делать опорным внешнее стабилизированное напряжение.
#define ADC_REF_VOLTAGE 1.19
при поверенном вольтметре.
SLKH не должно напряжение это меняться от способа запитки чипа ...
Скорее всего, пила по питанию
SLKH не должно напряжение это меняться от способа запитки чипа ...
Есть у мя смутное подозрение...
Скорее всего, пила по питанию
Устанавливаю параллельно питанию электролит на 1000 мкФ.
Попробуйте LOW ESR. Можно танталовый. Ещё керамический 0.33-1uF параллельно.
Или заменить БП.
Скорее всего, пила по питанию
Вот замерил на выходе ARef...
Это то, что удалось разглядеть при питании от USB
Далее то же самое, но при питании от DC-DC
Видно, что помеха примерно одинаковая в обоих случаях. Только DC-DC питание уровнем немного повыше от USB-шного.
Но это уж совсем что-то высокочастотное. Более низкочастотной ярко выраженной пилы мне высмотреть пока не удалось. Были "горбики" при питании от DC-DC, но я их сгладил конденсатором на 1000 мкФ, о чём написал в самом первом посте.
Вот, на периоде в 500us и питании от USB (когда всё нормально с АЦП):
А это при питании от DC-DC на том же периоде:
Ну, т.е. принципиальных отличий нет, кроме более высокого уровня от DC-DC, при котором на ARef показывает немного больше 1.1 В вольтметром и среднее на осциллографе тоже видно - 1.132.
Эти значения я и заношу в программу для расчёта фактического измерения. Даже откинул два младших бита в ADC, как тут на форуме советовали... Но никак не могу добиться хотя бы мультиметровых показаний на входе АЦП :(
Хреновенько какта. Керамику ставь
SLKH не должно напряжение это меняться от способа запитки чипа ...
Я эти значения измерил на пине ARef при настройке АЦП на INTERNAL.
Первое при питании от DC-DC, второе - от USB. Эти же значение видны на осциллограмме выше - это V среднее.
Хреновенько какта. Керамику ставь
Но ведь от USB точно также всё хреновенько! Отчего при USB-питании показания "приемлемые", а при смене на DC-DC такое резкое падение показаний при несущественных отличиях? Я суть проблемы понять не могу...
Ну не должно быть пилы на AREF, тем более 5 МГц, кто-то у тебя в питании звенит. Обкалывай всё керамикой
Ещё наблюдения:
Отключил я DC-DC и запитал напрямую от лабораторного трансформаторного блока питания Mastech. При этом потребление на показометре лабораторника выросло до 110 мА (у меня к ардуинке подключен экран 1602 с подсветкой). Когда подключение было Лабораторник->DC-DC->Ардуинка, потребление показывал всего 50-60 мА. Т.е. DC-DC преобразователь явно влияет и на Ардуинку и на показометр лабораторника (заставляет его врать).
При питании от лабораторника опорное напряжение на Aref стало уже 1.11 В, но замеры на аналоговом входе Ардуинкой и мультиметром всё равно отличаются: 0.237 на мультиметре (стоят, как вкопанные), 0.19-0.20 на Ардуинке (плавают).
Но никак не могу добиться хотя бы мультиметровых показаний на входе АЦП :(
Обычно мультиметры не питают от DC-DC, и там проблемы грязного питания в принципе нет. А там где питают, то используют специальную разводку преобразователя, экранируют, ставят на фильтрацию питания дополнительные активные фильтры. Самое простое решение всех проблем -батарейка/аккум.
SLKH не должно напряжение это меняться от способа запитки чипа ...
Я эти значения измерил на пине ARef при настройке АЦП на INTERNAL.
Я полагаю, мы про 328 камень? Нет у него выхода AREF, есть вход с таким погонялом. Используется только в режиме EXTERNAL. Повесь на него конденсатор 0.1 и оставь в покое, замерять на нем напряжение не нужно.
SLKH не должно напряжение это меняться от способа запитки чипа ...
Я эти значения измерил на пине ARef при настройке АЦП на INTERNAL.
Я полагаю, мы про 328 камень? Нет у него выхода AREF, есть вход с таким погонялом. Используется только в режиме EXTERNAL. Повесь на него конденсатор 0.1 и оставь в покое, замерять на нем напряжение не нужно.
Нет, мы не только про 328, но и про 168 и просто про 8. У них у всех есть нога ARef, и я раньше так и думал, что это вход для внешнего опорного, но дело в том, что при выставлении внутреннего опорного на этой ноге волшебным образом появляется примерно 1.1 Вольта. Отсюда я и сделал вывод, что он превращается в выход для контроля внутреннего опорного.
До этого я использовал ARef именно как вход и подавал на него 5.03 В со стабилизатора 7805, но из-за схематического решения с датчиком температуры перешёл на внутреннее опорное, чтобы снизить требуемый коэффициент усиления операционника (опять же, чтобы шумов меньше он производил).
Даже если эта нога и не пригодна для проверки внутреннего опорного, то картины это всё-равно не меняет, потому как в настройках я указываю и 1.115 и 1.09 - это же не может существенно влиять на АЦП. Факт в том, что измеряемое значение ПРОСЕДАЕТ при изменении схемы питания Ардуинки, а эти коэффициенты мало влияют на итоговый расчет. Даже если я поставлю ровно 1.1 - проседание всё-равно никуда не девается.
о не меняет, потому как в настройках я указываю и 1.115 и 1.09 - это же не может существенно влиять на АЦП. Факт в том, что измеряемое значение ПРОСЕДАЕТ при изменении схемы питания Ардуинки, а эти коэффициенты мало влияют на итоговый расчет. Даже если я поставлю ровно 1.1 - проседание всё-равно никуда не девается.
Предложение: шунтируешь AREF конденсатором.
Измеряешь при "#define ADC_REF_VOLTAGE 1.19" с переключением питания без изменения формулы.
Предложение: шунтируешь AREF конденсатором.
Измеряешь при "#define ADC_REF_VOLTAGE 1.19" с переключением питания без изменения формулы.
Возможно, это небольшое отступление от темы, но смысл в следующем. Я делаю терморегулятор, и за основу взял схему отсюда . Не знаю, насколько можно доверять источнику, но там ARef используется именно как выход для дополнительного смещения нижнего конца термопары для измерения около-нулевых и отрицательных температур.
Попробую сделать, как Вы говорите, но константу эту вообще использовать не буду, а буду смотреть просадку абсолютных значений с АЦП, тех, которые от 0 до 1023.
Предложение: шунтируешь AREF конденсатором.
Измеряешь при "#define ADC_REF_VOLTAGE 1.19" с переключением питания без изменения формулы.
Ну вот, зашунтировал ARef на землю через 0.1 мкФ.
На аналоговом входе 0.046 В по мультиметру.
- При питании от USB АЦП - выдаёт 32-34
- При питании от лабораторного БП +5.0-5.1 В - выдаёт вообще 0!
Традиционный повтор для недоходчивых
Сопротивление сигнальных линий
Я полагаю, мы про 328 камень? Нет у него выхода AREF, есть вход с таким погонялом. Используется только в режиме EXTERNAL. Повесь на него конденсатор 0.1 и оставь в покое, замерять на нем напряжение не нужно.
Почему? В даташите написано: "AVCC or an internal 1.1V reference voltage may be connected to the AREF pin by writing to the REFSn bits in the ADMUX Register".
Т.е. соединяешь AREF с 1.1В и измеряешь сколько там на самом деле, т.к. пот тому же даташиту там может быть от 1В до 1,2В. Многие так делают.
Традиционный повтор для недоходчивых
Сопротивление сигнальных линий
Ну и в третий раз, только по-русски и доходчиво, а-то как в анекдоте:
- Петька, приборы!
- 20!
- Что 20?
- А что - приборы?
ЗЫ: Измеряю входное напряжение прямо на аналоговом пине. Ближе уже только ножка камня.
Я полагаю, мы про 328 камень? Нет у него выхода AREF, есть вход с таким погонялом. Используется только в режиме EXTERNAL. Повесь на него конденсатор 0.1 и оставь в покое, замерять на нем напряжение не нужно.
Почему? В даташите написано: "AVCC or an internal 1.1V reference voltage may be connected to the AREF pin by writing to the REFSn bits in the ADMUX Register".
Т.е. соединяешь AREF с 1.1В и измеряешь сколько там на самом деле, т.к. пот тому же даташиту там может быть от 1В до 1,2В. Многие так делают.
И я говорю - не спроста же там 1.1 В появляется... Вот и ещё одно подтверждение от грамотного человека, кроме схемы в интернетах.
Психанул, подключил батарейку через делитель. На делителе поставил 1В. Вырвал всю обвязку своей схемы, оставил только Ардуинку и батарейку с делителем. Поставил даже источник опорного на VCC.
Питаю от USB - АЦП выдаёт 200-202
Питаю от DC-DC - АЦП выдаёт 195-197
USB питает +4.96 В
DC-DC настроен на +4.96 В
Капец какой-то...
Я конечно не спец, но подключая через usb, учитывать надо usb uart преобразователь, так что эксперимент - >"не зачёт". Если уж хочется чистого опыта, берете чистый МК с минимальной обвязкой и тогда уже замеряете все параметры.
Да, не спец :) Ещё и читать не умеете! Написал же в первом же сообщении, что делаю всё на минимальных клонах ардуинки - это и есть чистый МК с минимальной обвязкой.
Не) чистый МК это не минимальный клон ардуины
Дак котлет и мух разделять принято.
Отключили ___всю___ переферию, подключили к USB, померяли AREF. Дали на VIN от кроны напругу, померяли. Затем туда же DCDC, померяли.
Только после этого стоит делать выводы.
Эээ... Пост #25 не читали?
Ардуино - это среда разработки + бутлоадер. Средой Ардуино предусмотрена прошивка внешними программаторами через ICSP. Так что минимальная Ардуина - это чистый МК + 1 резистор на RESET + 1 блокировочный кондёр.
Ну и в третий раз, только по-русски и доходчиво
Тебе, тупню, нужно объяснить, что такое сопротивление и как оно взаимодействует с напряжением? Составь монтажную схему, и отметь на ней __ВСЕ__ сопротивления и __ВСЕ__ токи.
Тебе, тупню, нужно объяснить...
Ты забанен, хам трамвайный. Можешь мне больше не писать ;)
Разрешил, спасибо. Не то, что бы я тебе одолжение делал, разжевывая первую главу учебника.