Both versions use TMP35 temperature sensor for monitoring board and cell temperatures, AD7998 (12bit) ADC for version 4 and AD7997 (10bit) ADC for version 5, and ACS758 bidirectional current sensor.
Add to your firmware section: This example contains all possible configuration options, not all of them are mandatory!
<module name="battery_monitor">
b'<configure name="BATTERY_MONITOR_I2C_DEV" value="i2c2" />\n '
b'<configure name="BATTERY_MONITOR_BUS_ADC_I2C_ADDR" value="0x42" />\n '
b'<configure name="BATTERY_MONITOR_BALANCE_BAT1_ADC_I2C_ADDR" value="0x40" />\n '
b'<configure name="BATTERY_MONITOR_BALANCE_BAT2_ADC_I2C_ADDR" value="0x44" />\n '
b'<configure name="BATTERY_MONITOR_REV4" value="1" />\n '
b'<configure name="BATTERY_MONITOR_CURRENT_OFFSET" value="-120" />\n '
b'<configure name="BATTERY_MONITOR_CURRENT_SENSITIVITY" value="25.6" />\n '
b'<configure name="BATTERY_MONITOR_TEMP_OFFSET" value="250" />\n '
b'<configure name="BATTERY_MONITOR_TEMP_SENSITIVITY" value="10" />\n '
</module>
These initialization functions are called once on startup.
These event functions are called in each cycle of the module event loop.
These functions are called periodically at the specified frequency from the module periodic loop.
<!DOCTYPE module SYSTEM "module.dtd">
<module name="battery_monitor" dir="adcs">
<doc>
<description>
AggieAir Battery and power monitor using a custom breakout board, for both fixedwings and rotocrafts.
Both versions use TMP35 temperature sensor for monitoring board and cell temperatures, AD7998 (12bit) ADC
for version 4 and AD7997 (10bit) ADC for version 5, and ACS758 bidirectional current sensor.
There are two versions:
- Rev 4: ADC VIN7 unused
- Rev 5: on ADC VIN7 is now ARMED_IN (channel that sensing that the safety plug is plugged in.
Define if you are using BATTERY_MONITOR_REV4 in your airfame config file (otherwise rev5 is assumed).
Also the versions differ in the gain coefficients.
</description>
<configure name="BATTERY_MONITOR_I2C_DEV" value="i2c2" description="I2C device to use for the monitor"/>
<configure name="BATTERY_MONITOR_BUS_ADC_I2C_ADDR" value="0x42" description="slave address of bus adc"/>
<configure name="BATTERY_MONITOR_BALANCE_BAT1_ADC_I2C_ADDR" value="0x40" description="slave address of balance 1 adc"/>
<configure name="BATTERY_MONITOR_BALANCE_BAT2_ADC_I2C_ADDR" value="0x44" description="slave address of balance 2 adc"/>
<configure name="BATTERY_MONITOR_REV4" value="1" description="set to 1 if using Rev.4"/>
<configure name="BATTERY_MONITOR_CURRENT_OFFSET" value="-120" description="offset from the curremt sensor"/>
<configure name="BATTERY_MONITOR_CURRENT_SENSITIVITY" value="25.6"/>
<configure name="BATTERY_MONITOR_TEMP_OFFSET" value="250" description="offset from the temperature sensor"/>
<configure name="BATTERY_MONITOR_TEMP_SENSITIVITY" value="10"/>
</doc>
<settings>
<dl_settings>
<dl_settings NAME="Batery monitor">
<dl_setting MIN="-2000" MAX="2000" STEP="1" VAR="batmon_current_offset" shortname="cur_off" module="modules/adcs/battery_monitor"/>
<dl_setting MIN="0" MAX="50" STEP="0.1" VAR="batmon_current_sensitivity" shortname="cur_sens" module="modules/adcs/battery_monitor"/>
<dl_setting MIN="-2000" MAX="2000" STEP="1" VAR="batmon_temp_offset" shortname="temp_off" module="modules/adcs/battery_monitor"/>
<dl_setting MIN="0" MAX="50" STEP="0.1" VAR="batmon_temp_sensitivity" shortname="temp_sens" module="modules/adcs/battery_monitor"/>
</dl_settings>
</dl_settings>
</settings>
<dep>
<depends>i2c</depends>
</dep>
<header>
<file name="battery_monitor.h"/>
</header>
<init fun="battery_monitor_init()"/>
<periodic fun="battery_monitor_read_bus()" freq="10"/>
<periodic fun="battery_monitor_read_balance_ports_1()" freq="10"/>
<periodic fun="battery_monitor_read_balance_ports_2()" freq="10"/>
<event fun="battery_monitor_event()"/>
<makefile target="ap|fbw">
<file name="battery_monitor.c"/>
<define name="USE_I2C2"/>
<define name="USE_BATTERY_MONITOR"/>
<configure name="BATTERY_MONITOR_I2C_DEV" default="i2c2" case="lower|upper"/>
<define name="BATTERY_MONITOR_I2C_DEV" value="$(BATTERY_MONITOR_I2C_DEV_LOWER)"/>
<define name="USE_$(BATTERY_MONITOR_I2C_DEV_UPPER)"/>
<configure name="BATTERY_MONITOR_REV4" default="0"/>
<define name="BATTERY_MONITOR_REV4" value="$(BATTERY_MONITOR_REV4)"/>
<configure name="BATTERY_MONITOR_BUS_ADC_I2C_ADDR" default="0x42"/>
<define name="BATTERY_MONITOR_BUS_ADC_I2C_ADDR" value="$(BATTERY_MONITOR_BUS_ADC_I2C_ADDR)"/>
<configure name="BATTERY_MONITOR_BALANCE_BAT1_ADC_I2C_ADDR" default="0x40"/>
<define name="BATTERY_MONITOR_BALANCE_BAT1_ADC_I2C_ADDR" value="$(BATTERY_MONITOR_BALANCE_BAT1_ADC_I2C_ADDR)"/>
<configure name="BATTERY_MONITOR_BALANCE_BAT2_ADC_I2C_ADDR" default="0x44"/>
<define name="BATTERY_MONITOR_BALANCE_BAT2_ADC_I2C_ADDR" value="$(BATTERY_MONITOR_BALANCE_BAT2_ADC_I2C_ADDR)"/>
</makefile>
</module>