Вы можете увеличить эффективное разрешение путем преднамеренной передискретизации входного сигнала. Вот краткое изложение идеи из заметки приложения по теме, предоставленной Atmel:
Теория «передискретизации и децимации» довольно сложна, но использовать метод довольно просто. Техника требует большего количества образцов. Эти дополнительные выборки могут быть достигнуты путем передискретизации сигнала. Для каждого дополнительного бита разрешения n сигнал должен быть передискретизирован четыре раза. С какой частотой дискретизировать входной сигнал, определяется уравнением 3-1. Чтобы получить наилучшее возможное представление аналогового входного сигнала, необходимо провести слишком большую выборку сигнала, поскольку большее количество выборок даст лучшее представление входного сигнала при усреднении.
Полное примечание к заявке можно получить здесь: http://www.atmel.com/images/doc8003.pdf .
В вашем конкретном случае вам потребуется сэмплировать на частоте около 8 кГц, чтобы получить эквивалент 16-битного разрешения вашего 12-битного АЦП.
Вот как я пришел к этому номеру:
f_oversample_rate = f_current_sample_rate * (4 * (desired_bits - current_bits))
f_oversample_rate = 500Hz * (4 * (16 - 12))
f_oversample_rate = 500Hz * (4 * 4)
f_oversample_rate = 500Hz * 16
f_oversample_rate = 8KHz