(I use nrf51822)
I use two 3V batteries in series.
Therefore Input Voltage of My Circuit is 6V.
My own source was coded as a collection of information.
Oh, by the way, I used a battery is Cr2032 Coin Cell.
Looking for information on a coin cell is found in the link below.
Is there anything wrong with my source?
Um, but uses a lot of battery, the battery is still in 100% condition.
What mistakes did I do?
I need help. please!
/**< Reference voltage (in milli volts) used by ADC while doing conversion. */
#define ADC_REF_VOLTAGE_IN_MILLIVOLTS 1200
/**< The ADC is configured to use VDD with 1/3 prescaling as input. And hence the result of
conversion is to be multiplied by 3 to get the actual value of the battery voltage.*/
#define ADC_PRE_SCALING_COMPENSATION 3
/**< Typical forward voltage drop of the diode (Part no: SD103ATW-7-F) that is connected in
series with the voltage supply. This is the voltage drop when the forward current is 1mA.
Source: Data sheet of 'SURFACE MOUNT SCHOTTKY BARRIER DIODE ARRAY' available at
www.diodes.com. */
#define DIODE_FWD_VOLT_DROP_MILLIVOLTS 270
#define ADC_RESULT_IN_MILLI_VOLTS(ADC_VALUE)\
((((ADC_VALUE) * ADC_REF_VOLTAGE_IN_MILLIVOLTS) / 255) * ADC_PRE_SCALING_COMPENSATION)
static void adc_init(void)
{
/* Enable interrupt on ADC sample ready event*/
NRF_ADC->INTENSET = ADC_INTENSET_END_Msk;
sd_nvic_SetPriority(ADC_IRQn, NRF_APP_PRIORITY_LOW);
sd_nvic_EnableIRQ(ADC_IRQn);
NRF_ADC->CONFIG = (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos) /* Bits 17..16 : ADC external reference pin selection. */
| (ADC_CONFIG_PSEL_Disabled << ADC_CONFIG_PSEL_Pos) /*!< Use analog input 2 as analog input. */
| (ADC_CONFIG_REFSEL_VBG << ADC_CONFIG_REFSEL_Pos) /*!< Use internal 1.2V bandgap voltage as reference for conversion. */
| (ADC_CONFIG_INPSEL_SupplyOneThirdPrescaling << ADC_CONFIG_INPSEL_Pos) /*!< Analog input specified by PSEL with no prescaling used as input for the conversion. */
| (ADC_CONFIG_RES_8bit << ADC_CONFIG_RES_Pos); /*!< 8bit ADC resolution. */
/* Enable ADC*/
NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled;
}
void ADC_IRQHandler(void)
{
uint8_t adc_result;
uint16_t batt_lvl_in_milli_volts;
int percent;
/* Clear dataready event */
NRF_ADC->EVENTS_END = 0;
adc_result = (NRF_ADC->RESULT);
batt_lvl_in_milli_volts = ADC_RESULT_IN_MILLI_VOLTS(adc_result);
percent = battery_level_in_percent(batt_lvl_in_milli_volts);
NRF_ADC->TASKS_STOP = 1;
//Release the external crystal
sd_clock_hfclk_release();
}
#Edit : 2015-04-13
Current connection status is shown in the figure below.
The battery is connected exactly as shown.
Without resistance, without capacitor
What is wrong with this approach?