Защита платы при измерении напряжения аналоговыми пинам при отключении питания

если не ошибаюсь, Вы писали в другом чате что это величина постоянна для конкретной платы и требует замера единоразово?

Для конкретной микросхемы. В целом – да.

Она ещё немного от температуры меняется, но в целом - да, так и есть - для конкретного экземпляра она более или менее постоянная. Но если хотите “по Гамбургскому”, можете замерить её для разных температур и перед измерением напряжения замерять температуру (благо АЦП это сам умеет), но по мне – это извращение.

Это Вам решать. У меня всего раз была ситуация, когда “потребовала” – когда я делал измерительный прибор. Для большинства же задач особая точность просто не нужна и вполне хватает считать её 1.1В.

Кстати, эту величину не так легко измерить. Выход там высокоомный и даже мультиметр с 50МОм-ным входом немного подвирает. Её там точнее косвенно измерять.

1 лайк

“По документам” - 100 МОм

Спойлер

Резисторы надо местами поменять.

Резисторы надо местами поменять.

Отлично! Как раз что и намерил dmitriy_8.

1 лайк

а что насчет измерения мультиметром входящих по юсб (в моем случае 5.10) и

#include <iarduino_VCC.h>
+
float i = analogCalc_1V1( 5.10 )

получаем 1.129?

Я не знаю, что там внутри у “iarduino_VCC.h” (и не хочу). Я делал так. Запускал цикл подбора референса (буквально по 1-ке перебирал) пока рассчитанное по нему напряжение питания не оказывалось точным. при многократном измерении оно в цикле измеряло и измеряло).

Вы мне льстите… ничего не понял

Чуток вник, узнал новое, но не решается вопрос подтяжки к земле. Это сугубо частная ситуация, где то “накидываю” на линию, где то иглой с тыльной стороны разъема подключаюсь, поэтому важно на землю. Был обрыв на А1 на А0 приходил сигнал, так мне по линии А1 рисовало красивый правдоподобный график и только когда он местами был абсолютно симметричен с пина А0 я заподозрил подвох.

Я может чего не понял, пропустил, но подтяжка к земле 100кОм при токоогранич. 10кОм - вполне достаточно. Учесть получившийся делитель при расчётах, и норм.
С мультиплексором и реле вообще нет проблем, т.к. их сопротивление мало, и при 100кОм подтяжки к земле им можно пренебречь

1 лайк

Если сигнал подключен только к А0 а читаешь последовательно А0 А1 то сигнал на А1 будет повторять А0, если А1 не заземлишь. Конденсатор АЦП один и к нему через мультиплексор подают сигналы от каналов. Если выходное сопротивление источника сигнала велико то на конденсаторе АЦП останется напряжение от предыдущего канала.

1 лайк

А чего тут понимать. Пишется программа, которая умеет

  1. В любой момент ввести (с клавиатуры через Serial) текущее напряжение;
  2. Для начала считает, что опорное ровно 1100 милливольт
  3. Постоянно измеряет, считает и печатает напряжение питания и, если он не совпадает с введённым (см. п. 1), то изменяет на 1 милливольт опорное в нужную сторону (печатает кстати, текущее опорное и посчитанное напряжение питания)
  4. Если посчитанное напряжение совпадает с введённым, то опорное не меняет, просто печатает.

Собственно всё, запускаешь, измеряешь как можно аккуратнее напряжение питания, вводишь его и смотришь на экран. Когда цифири на экране перестанут меняться, значит опорное подобрано. При готовой программе вся процедура занимает несколько секунд.

2 лайка

понял, примерно так и сделал, чуть более механически, но суть та же
а как вы обращаетесь к 1V1 без библиотеки? или просто другой пользуетесь?
подключил плату через преобразователь на пин 5V и покрутил напряжение от 4,2 до 5,5, на пине 3V3 колебания в 0,01 (я правда сверяю все по мультиметру UNI-T UT33C+, не знаю котируется ли он в здешних кругах), что в общем то не особо больше того, что я получил на опорном и наверное достаточно для меня, да и проще для калибровки. Добавил в свой скетч режим калибровки, подключаю один из аналоговых пинов на 3V3 и калибрую исходя из 3,30. Сейчас вот подумал что есть свободные то пины аналоговые, можно по умолчанию один аналоговый закрепить на 3,30 и при запуске по умолчанию калибровать. Тогда ни питание, ни плата не мешают(я правда не проверял на других платах на сколько 3,30 стабильно)

Я профессиональный программист.

Что касается конкретно той библиотеки, что Вы используете, то имейте в виду, что все библиотеки от iArduino, какие я видел – редкостное барахло – написаны крайне небрежно. По большей части эти небрежности “на скорость не влияют”, но когда я вижу, что автор позволяет себе писать по принципу “и так сойдёт” и забивать на элементарные вещи, у меня возникает вопрос, а на что он там ещё забил? И, в итоге, я стараюсь держаться подальше от таких кодов и Вам того же советую.

Вашу библиотеку никогда не видел, но из любопытства скачал “на посмотреть”. Ну, она не самая плохая из их коллекции, есть гораздо хуже, но, тем не менее, они верны себе – кластерфаки (от словечка наших непартнёров “clusterfuck” – “куча дерьма”) валяются везде. Например:

Кластерфак №1

В строке №64 начинается вот такая функция:

//	Указание напряжения ИОН вместо 1,1 В (для дальнейших измерений Vcc): 
//	Возвращаемое значение: отсутствует.
//	Параметр: напряжение ИОН вместо 1,1 В.
//	Определяем напряжение ИОН по умолчанию: 1,1 В.
//	Сохраняем или возвращаем значение ion_1V1.
float	analogSave_1V1	(float v){						 													
	static float ion_1V1 = 1.1f;																	
	if(v==0){return ion_1V1;}else{ion_1V1 = v;}														
}

Если для Вас это не бессмысленный набор символов, то ответьте на два вопроса:

  1. как сочетается строка №2 и слово return в строке №8, а также слова “возвращаем значение” в строке №5?
  2. нормально ли, что в одной ветке if функция возвращает значение, а в другой - нет?

(про сравнение плавающего числа на точное равенство я промолчу, Господь с ними, тут они могут оправдаться и я догадываюсь как)

Кластерфак №2

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

Когда на входе ацп используются делители, то очевидно, что многое зависит от точности резисторов, которые обычно имеют точность ±5%, реже ±1% и уж совсем редко еще лучше.

А если они ещё малошумящие!

  • Металлофольговые (Metal Foil): Самая высокая точность и стабильность, минимальный уровень шума.

Хз от чего там малошумящие, потому как обычно если и оценивается, то тепловой шум, а средний квадрат напряжения теплового шума зависит только от активного сопротивления проводника R и абсолютной температуры проводника T и может быть рассчитан по формуле Найквиста.

Да, оценивается именно по тепловому шуму.
Но это - оценка снизу. Т.е. меньше шума не может быть ни при каких условиях.
А для реальных электронных компонентов шум всегда больше. Чем меньше разница между реальным шумом и этой оценкой, тем “малошумящее” прибор.

1 лайк

Нам потребовалось измерять наноамперные токи. Шум резисторов очень мешал. Заказали малошумяшие - уровень шума снизился раза в 4. Вот только цена у них совсем не гуманная.

andriano, с тобой, как всегда, трудно не согласиться :grinning_face:

По счастью, в такие ситуации, когда приходится учитывать шумы резисторов, пока вляпываться не доводилось, хотя много занимался всякими измерениями.
Понятно, nik182. Не, температурная нестабильность наших дорогих, в прямом смысле, резисторов это частенько, а какие-нить гигаомные или 0,1% тоже не из дешевых, для 0,01% по 10 баксов за штуку так считай хорошая цена.