https://www.ti.com/lit/ds/symlink/ads1114.pdf
Seite 6 Am analogen Eingang können max. VDD+0.3V anliegen.
Wenn du den ADS1115 mit 3.3V versorgst, ist bei 3.6V (bisschen Toleranz noch) schluss.
Moderator: Co-Administratoren
https://www.ti.com/lit/ds/symlink/ads1114.pdf
Code: Alles auswählen
typedef AskSin<LedType, BAT_SENSOR, RadioType> BaseHal;
...
batteryVoltage1000 = device().battery().current(); // BatteryTM class, mV resolution
Mein AVR läuft mit einer VCC Spannung von 3.7..3.9V. Die ADC Eingangsspannung ist VCC. Also brauch ich wohl auch dafür einen Spannungsteiler. Gibt es gutes Beispiel zur Verwendung von BatterySensorUni mit Spannungsteiler?TomMajor hat geschrieben: ↑31.07.2020, 18:23also wenn du sowie so extra Code und HW für den ADS1115 betreibst kannst du das was ich für die Batt.klasse schrieb, erst mal ausblenden. Ich hatte nur an eine interne Lösung gedacht, den vorhanden Code für die Messung einfach zu duplizieren für einen 2. ADC input.
Läuft dein AVR mit 3,3V? Dann brauchst du einen Spannungsteiler wenn du mehr als 3,3V auf den ADC input geben willst. Und dann kannst du papas native AskSinPP Klasse BatterySensorUni nehmen, glaub ich zumindest.
Hmm, dann sollte es aber passen. Wollte nur ausdrücken das Vinadc nicht größer als Vcc/AVcc sein darf.FUEL4EP hat geschrieben: ↑31.07.2020, 18:29Hallo Tom,
danke für Deine Antwort.
Mein AVR läuft mit einer VCC Spannung von 3.7..3.9V. Die ADC Eingangsspannung ist VCC. Also brauch ich wohl auch dafür einen Spannungsteiler. Gibt es gutes Beispiel zur Verwendung von BatterySensorUni mit Spannungsteiler?TomMajor hat geschrieben: ↑31.07.2020, 18:23also wenn du sowie so extra Code und HW für den ADS1115 betreibst kannst du das was ich für die Batt.klasse schrieb, erst mal ausblenden. Ich hatte nur an eine interne Lösung gedacht, den vorhanden Code für die Messung einfach zu duplizieren für einen 2. ADC input.
Läuft dein AVR mit 3,3V? Dann brauchst du einen Spannungsteiler wenn du mehr als 3,3V auf den ADC input geben willst. Und dann kannst du papas native AskSinPP Klasse BatterySensorUni nehmen, glaub ich zumindest.
Code: Alles auswählen
class Hal : public BaseHal {
public:
void init(const HMID& id)
{
BaseHal::init(id);
#ifdef USE_CC1101_ALT_FREQ_86835
radio.initReg(CC1101_FREQ2, 0x21);
radio.initReg(CC1101_FREQ1, 0x65);
radio.initReg(CC1101_FREQ0, 0x72);
//0x216572 868.303 MHz
#endif
#ifdef CLOCK_RTC
rtc.init(); // init real time clock - 1 tick per second
#endif
// measure battery every 12h
battery.init(seconds2ticks(12UL * 60 * 60), CLOCK);
battery.low(BAT_VOLT_LOW);
battery.critical(BAT_VOLT_CRITICAL);
#ifdef ADS1115
ads.begin();
ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 1mV 0.0625mV
ads.begin();
#endif
}
bool runready() { return CLOCK.runready() || BaseHal::runready(); }
} hal;