adc arduino использует опорное напряжение для считывания стабильного/постоянного напряжения литиевой батареи

arduino-uno attiny voltage-level voltage-divider analogreference

Я хочу узнать напряжение литиевой батареи.

  1. Я ХОЧУ СОЗДАТЬ ФУНКЦИЮ ДЛЯ СЧИТЫВАНИЯ НАПРЯЖЕНИЯ МОЕЙ АККУМУЛЯТОРНОЙ БАТАРЕИ 3,7~4,2 В, 1200 мАч ЧЕРЕЗ МИКРОКОНТРОЛЛЕР (ARDUINO ИЛИ ATTINY44).

  2. ЗАТЕМ Я ХОЧУ ВЫЗВАТЬ СОЗДАННУЮ ФУНКЦИЮ АККУМУЛЯТОРА В ФОРМУЛЕ, ЧТОБЫ ПРОЧИТАТЬ ТОЧНОЕ ЗНАЧЕНИЕ ДАТЧИКА

     int voltage = ((CALLING BATTERY FUNCTION) * (READ SENSOR VALUE)) / 1023;
    
  3. Я ИСПОЛЬЗУЮ ВНУТРЕННЕЕ ОПОРНОЕ НАПРЯЖЕНИЕ 1,1 В. ПРИМЕЧАНИЕ. Я хочу, чтобы вся система работала от литиевой батареи (я просто создаю прототип на Arduino, если он работает, я буду редактировать код для моего attiny44, используя внешний кристалл 8 МГц).

     void setup(){
       Serial.begin (115200);
     }
    
     void loop() {  
       //REFS1 И REFS0 на 1 1 -> внутреннее опорное напряжение 1,1 В
       ADMUX |= B11000000;   
       // Читаем A1 (MUX0)
       ADMUX |= B00000001;       
       // Начать преобразование рекламы
       ADCSRA |= B11000000;
       // Обнаружение окончания преобразования
       while (bit_is_set(ADCSRA,ADSC));
       float val = ADCL | (ADCH << 8);
       val = val * 5.7; // Умножаем на значение, обратное делителю
       Serial.println(val);
     }
    

Этот код работает, но он считывается с аналогового вывода. Есть ли возможность сделать это без использования AnalogPin, потому что у меня нет запасного штифта на моем attiny.

, 👍1

Обсуждение

@jsotola Готово, спасибо, @electro_nooobbbb

Вероятно, нет. Вы ничего не можете сделать без использования контактов. Вам нужен контакт для взаимодействия. Вы не можете взаимодействовать через воздух. Так что вам нужно получить больший Attiny, @chrisl

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

1. Вы написали, что у вас нет **запасных** контактов. Это также означает отсутствие контакта AREF. 2. Да, вам нужен контакт, который можно подключить к АЦП, поэтому любой контакт, отмеченный таким образом в распиновке Attiny44. Если у вас есть свободный AREF, вы, возможно, можете изменить контакты. Хотя вы не указали, как подключен attiny. В своем вопросе вы показываете только Arduino Uno, что кажется неуместным для вашего вопроса., @chrisl

Если ваш attiny питается от той же батареи, вы можете просто измерить внутреннее опорное напряжение 1,1 В относительно Vcc в качестве опорного и вычислить фактическое значение Vcc., @KIIV

@chrisl Я имел в виду, что нет запасного контакта АЦП, у меня просто есть свободный контакт AREF, вот и все, @electro_nooobbbb

@KIIV Да, система питается от той же батареи. Можно ли с помощью этого метода получить постоянное/стабильное/неизменное напряжение., @electro_nooobbbb

или есть способ использовать контакт сброса в качестве контакта GPIO/ADC?, @electro_nooobbbb

Вы можете использовать контакт сброса на Attiny84 как цифровой ввод-вывод, но не как аналоговый контакт. И вы не сможете перепрограммировать его без загрузчика или без высоковольтного ISP программатора (в этом случае вы должны будете принять во внимание, что во время программирования на этом контакте будут импульсы 12 В)., @KIIV


1 ответ


1

Я хочу, чтобы вся система работала от литиевой батареи

Если вы питаете Arduino от батареи, то вы можете косвенно определить напряжение батареи, прочитав внутреннее опорное напряжение. Для этого не нужны контакты — просто подключите батарею к земле Arduino и контакту 5V. Вот еще объяснение, почему это работает...

https: //wp.josh.com/2014/11/06/battery-fuel-guage-with-zero-parts-and-zero-pins-on-avr/

Примечание. Не подключайте напряжение более 5 В или менее 0 В к контакту 5V Arduino. Этот контакт подключается напрямую к AVR без какой-либо защиты от перенапряжения или обратной полярности. Аккумулятор 3,7–4,2 В должен быть в порядке.

,

Привет, спасибо за ваш ответ. Мне нужно читать постоянное напряжение, а не текущее напряжение батареи, и я считаю, что в ссылке автор хочет измерить напряжение батареи. Есть ли способ измерить стабильное/постоянное/неизменное напряжение батареи независимо от текущего уровня заряда батареи., @electro_nooobbbb

Вы хотите (1) питать свою схему с помощью литиевой батареи и (2) вы хотите иметь возможность измерять напряжение той литиевой батареи, которая питает схему, верно? Если это так, то описанный выше подход сделает это. Если нет, то можете ли вы уточнить, что вы пытаетесь сделать?, @bigjosh

привет, пожалуйста, проверьте https://arduinoprosto.ru/q/92329/reading-constant-battery-voltage-and-using-the-obtained-value-in-sensor-formula, @electro_nooobbbb