ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
277462 Топик полностью
Гудвин, волшебник (11.10.2011 21:42, просмотров: 126) ответил fk0 на Хочется измерить напряжение на батарейке. Как? (делитель либо её разряжает, либо гигаомные резисторы -- что с ними наизмеряешь). Либо подключать делитель транзистором, может есть более специальные решения?
Для atmega168 без всяческих внешних элементов:  char test_battery() { #define ADC_VREF_TYPE 0x40 // ADC Voltage Reference: AVCC pin #define ADC_CHANNEL 0x0e // ADC канал 1.1В (Vbg) // 2.0V - 546 // 2.2V - 496 // 2.4V - 455 // 3.0V - 360 // 3.3V - 328 // ADC initialization // ADC Clock frequency: 62,500 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: None // Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On // ADC4: On, ADC5: On signed char itog; int temp; DIDR0=0x00; ADMUX=ADC_VREF_TYPE; ADCSRA=0x86; ADMUX=ADC_CHANNEL |ADC_VREF_TYPE; // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; // результаты первого преобразования пропускаем ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; temp = ADCW; ADCSRA=0x00; // выключим ADC ADMUX=0; itog = (420-temp)/15+1; // масштабирование 3.0 - 2.6 в (1-4 деления) - для печатей с радиомодулем RR8 return itog; }