Чтение постоянного напряжения батареи и использование полученного значения в формуле датчика

здесь я работаю над проектом, в котором моя система подключена к литиевой батарее 3,7–4,2 В, мне нужно считывать постоянное напряжение батареи независимо от текущего напряжения батареи, и для этого я использую внутреннее опорное напряжение (1.1). В). Моя проблема заключается в том, что до добавления кода датчика моя программа считывала постоянное напряжение независимо от уровня заряда батареи, но в тот момент, когда я добавляю к нему код датчика, показания напряжения батареи колеблются.

, 👍-3

Обсуждение

У вас все еще есть некоторые проблемы, как и во все другие разы, когда вы задавали этот вопрос. Вам нужно сделать минимальную версию кода, которая работает так, как вы ожидаете, а затем показать, какое изменение вы вносите, что приводит к результату, которого вы не ожидаете. (1) не смешивайте функции аналоговых выводов Arduino с прямым доступом к регистру. Выберите один или другой (вы должны выбрать arduino). (2) помните, что вы можете только реальное напряжение между 0-1,1 В с 1,1 В. Любое напряжение выше 1,1 В будет считаться максимальным значением (1,1 В) по отношению к этой ссылке. (3) вы используете A1 в своем коде, но A1 не подключен ни к чему на вашей схеме., @bigjosh

Люди хотят помочь вам, но вы должны помочь им помочь вам! Продолжая задавать один и тот же вопрос снова и снова, вы тратите время хороших людей, пытающихся вам помочь, и вы даже не получаете решения своей проблемы. Сделайте самую простую версию программы, которая работает. Это, вероятно, измеряет напряжение батареи через мост, используя контакт A0, используя только функцию Arduino. Это должна быть очень короткая программа. Убедитесь, что он действительно работает так, как вы ожидаете, при всех потенциальных напряжениях, которые вы можете увидеть., @bigjosh

Я знаю, что вы просто хотите, чтобы кто-то дал вам быстрое решение, но вы уже потратили гораздо больше времени, задавая этот вопрос снова и снова, чем вам пришлось бы систематически решать эту проблему! Начните с простого, поймите, что происходит. Я обещаю! :), @bigjosh

@bigjosh конечно, я сделаю это сейчас, спасибо, ваши комментарии очень мотивируют. Хорошо, теперь я напишу простой код, который считывает напряжение батареи с A1., @electro_nooobbbb

@bigjosh Это работает, мне нужен был стабильный вывод. Как вы сказали, я удалил все функции регистрации и использовал простой код Arduino. пожалуйста, проверьте выше, @electro_nooobbbb

Моя проблема в том, что я хочу подключить свою солнечную панель к плюсу и минусу батареи, но в тот момент, когда я делаю подключение, мой датчик считывает 1023, что, очевидно, и должно быть. Итак, есть ли способ отделить или соединить., @electro_nooobbbb

я считаю, что моя измерительная шкала 1,1 слишком мала, она достигает 1023, когда мультиметр показывает около 1 В, @electro_nooobbbb

«Моя проблема в том, что я хочу подключить свою солнечную панель к плюсу и минусу батареи». Это другой вопрос, чем заданный здесь., @bigjosh

«Я считаю, что моя измерительная шкала 1,1 слишком мала, она достигает 1023, когда мультиметр показывает около 1 В». Да, при измерении напряжения с использованием опорного напряжения 1,1 В вы ожидаете, что напряжения около 0 В будут показывать значение 0, а напряжения около 1,1 В чтобы прочитать значение около 1023 (помните +/- 10%)., @bigjosh

Вы должны перепроверить мой ответ о том, как измерить Vcc по сравнению с 1,1 В, с одного из первых раз, когда вы задали этот вопрос. Это то, что вы на самом деле хотите сделать., @bigjosh

@bigjosh хорошо, теперь я понял, что не требуется измерять напряжение батареи, чтобы прочитать значение датчика. Я использовал внутреннее опорное напряжение и измерил свою панель, и мне удалось прочитать точные правильные значения с разрешением 0-1023., @electro_nooobbbb

@bigjosh Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я использую тот же код с attiny, он не работает., @electro_nooobbbb

хорошо, я думаю, что теперь это будет работать, проблема была с кодом, вместо >= я сделал <= поэтому код не работал, @electro_nooobbbb


1 ответ


Лучший ответ:

2

Если вы установите Vref с внутренним опорным значением 1,1 В, то напряжение, представленное на аналоговом контакте A1, будет просто следующим:

const float Vref = 1.1; // согласно техническому описанию существует отклонение +/-10%, необходима калибровка для подтверждения фактического значения

analogReference(INTERNAL);
float VA1 = Vref / 1023.0 * analogRead(A1); // напряжение на аналоговом выводе A1
float Vbat = VA1 * 5.7;                     // напряжение батареи
,

Спасибо, я попробую и сообщу вам. Я думаю, мы должны проверить точное внутреннее опорное напряжение или просто использовать эту команду AnalogReference(Internal), это нормально?, @electro_nooobbbb

Для более точного измерения. вы можете использовать мультиметр для измерения фактического Vref и использовать фактическое измерение в своем скетче в качестве значения Vref. Кстати, если вы используете аккумулятор, вы можете изменить делитель напряжения на 47k и 10k, чтобы уменьшить ток, потребляемый делителем напряжения., @hcheung

конечно, я буду использовать точное значение vref. Это 47к или 4,7к? потому что я использовал 4,7k, и если я изменю свой 1k на 10k, мне нужно изменить значение (5,7) в программе? Нам нужен один контакт только для чтения напряжения батареи, верно?, @electro_nooobbbb

Используйте резисторы 47k и 10k, соотношение останется тем же (47000+10000)/10000. Но это потребляет только ток 3,7 / (47000 + 10000) = 65 мкА по сравнению с использованием 4,7 кОм + 1 кОм, которые потребляют 0,65 мА. разница в 10 раз., @hcheung

ок, отлично, обязательно попробую. Я попробовал ваше предложение кода, но оно не сработало для меня, я читал постоянное 0 напряжение для батареи и датчика. Я загрузил код выше, @electro_nooobbbb

Вы можете проверить приведенный выше код, мой датчик постоянно показывает 1,10 при слабом освещении, и если я закрою его или сделаю темным, он будет показывать 0,34-0,4 В, что понятно, но проблема в том, что он не должен показывать 1,10 при слабом освещении, потому что я уровень напряжения будет указан позже в коде для моей системы. например, если он показывает 0,47, обнаруживает ночь и начинает мигать, а если он читает 0,9-1 В (что должно быть только при ярком солнечном свете), определяет дневное время и переходит в сон. редактировать (батарея показывает постоянное напряжение), @electro_nooobbbb

Он не считывает значение выше 179,47 независимо от интенсивности света., @electro_nooobbbb

Моя проблема в том, что напряжение датчика не выходит за пределы определенного уровня напряжения (179,40), при слабом освещении оно показывает (179,40), если я закрою датчик или сделаю его темным, оно покажет 18-34 В, что понятно, но проблема в том, он не должен читать (179,40) при слабом освещении, потому что на более позднем этапе я буду указывать/использовать уровень напряжения для моей системы. Например, если он показывает 18-34 В, обнаруживает ночь и (СДЕЛАЙТЕ ЧТО-НИБУДЬ), и если он читает 100 В (что должно быть только при ярком солнечном свете), обнаруживает дневное время., @electro_nooobbbb

В вашем исходном посте ничего не говорилось о каком-либо датчике освещенности, он спрашивал, как считать напряжение батареи. Если мой ответ поможет вам ответить на этот вопрос, пожалуйста, примите ответ, нажав «галочку» и проголосуйте за него, чтобы будущие читатели знали, что это правильный ответ. Не стесняйтесь опубликовать еще один вопрос относительно вашего вопроса о датчике освещения с вашим кодом отдельно., @hcheung