Я пытаюсь прикошачить ИК-дальномер SHARP GP2Y0A21 к ATmega8.
Этот датчик может измерять расстояние в диапазоне от 10 до 80 см. На выходе формируется аналоговый сигнал со следующей характеристикой:
Собрал такой вот нехитрый испытательный стенд на макетной плате:
Спойлер


АЦП настроил на работу в непрерывном режиме, прерывание от АЦП запретил, коэффициент предделителя тактовой частоты АЦП выставил 1/64, чтобы 12МГц/64=187,5кГц, находился в диапазоне 50...200 кГц, в качестве опорного источника выбрал внутренний ИОН на 2,56В, канал мультиплексора АЦП задействовал один единственный - ADC0.
Вывод AREF соединил с массой через конденсатор 0,1uF, а аналоговую часть запитал через индуктивность 10uH.
На индикацию результат измерения выводится уже преобразованный в сантиметры.
В принципе устройство заработало, но аналоговый сигнал с датчика оказался крайне нестабильным, и показания индикатора быстро мелькали в интервале 10-15 см, хотя датчик был наставлен в стенку.
Исследовав сигнал с помощью осциллографа узел такую вот картину маслом: всюду были страшные импульсы с периодом ~1mS и размахом ~70mV, кроме того иногда проскакивали "иголки", доводившие общий размах сигнала до ~172mV.

Первое, что мне пришло в голову - это соединить вход АЦП с массой, через конденсатор 0,1uF. В результате "иголки" пропали, общий размах сигнала составил ~66mV, что по прежнему не удовлетворительно. Больше путного сделать не получилось...

Помогите, пожалуйста, выйти из тупика. Это мой первый опыт работы с АЦП.
Есть ли способ, с помощью которого можно стабилизировать сигнал, чтобы уменьшить размах до 2-3 mV ?
И это лучше/проще осуществить программно или аппаратно ?
Во вложении я поместил проект в Шпротеусе с исходным кодом, откомпилированной hex-прошивкой и даташитом на датчик.
- Вложения
-
- Sharp.zip
- проект в Шпротеусе
- (384.65 КБ) 164 скачивания




