Почему именно датчик "allegro", его отличия от датчиков предлагаемых для Ardupilot
относительно дешевый (порядка 200р в элитане http://www.elitan.ru/price/index.php?seenform=y&find=+ACS756SCA)
доступны чипы со шкалой на +-50 и +-100 ампер
высокая точность измерения, линеризованый выход
низкое внутреннее сопротивление (порядка 130 наноом)
гальваническая развязка (исключение импульсных помех, изоляция от силовой цепи)
возможность измерения и заряда и разряда (рекуперация энергии на самолете)
минимальная обвязка (rc-фильтр в цепи выхода)
Сенсор имеет гальваническую развязку от измеряемой цепи, но в отличие от классических датчиков тока показывает не только разряд батареи но и ее заряд (например рекуперация энергии на самолетах)
однако изза этого при нулевом значении тока на выходе ровно половина питающего напряжения (у классических датчиков автопилота 0) тоесть 2,5 вольта.
чтобы исправить это недоразумение необходимо изменить код прошивки
defines.h change
#define CURRENT_AMPS(x) ((x*(g.input_voltage/1024.0))-g.curr_amps_offset)*g.curr_amp_per_volt
parameters.pde add
// @Param: AMP_OFFSET
// @DisplayName: current sensor zero calibration
// @Description: in volts
GSCALAR(curr_amps_offset, "AMP_OFFSET", CURR_AMPS_OFFSET),
parameters.h added
k_param_curr_amps_offset = 193,
AP_Float curr_amps_offset;
//#ifndef CURR_AMPS_OFFSET
# define CURR_AMPS_OFFSET 0.0
//#endif
архив с измененными исходниками и HEX файлом прошивки квадрокоптера "x" для APM2 приложен