ИК-дальномер SHARP и AVR

Обсуждаем контроллеры компании Atmel.
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

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

Собрал такой вот нехитрый испытательный стенд на макетной плате:
СпойлерИзображение

Изображение
Частоту кварца взял 12 МГц.
АЦП настроил на работу в непрерывном режиме, прерывание от АЦП запретил, коэффициент предделителя тактовой частоты АЦП выставил 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 скачивания
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4751
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Нужно кроме конденсатор со входа МК на массу еще резистор между выходом и входом. Обычный интегратор.
Реклама
Открыл глаза
Сообщения: 47
Зарегистрирован: Вт мар 20, 2012 07:16:43

Сообщение стьюдент »

Может попробовать накапливать массив измерений и находить среднее арифметическое?
Вымогатель припоя
Сообщения: 542
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Посмотреть питание на датчике и при необходимости отфильтровать.
Реклама
Эиком - электронные компоненты и радиодетали
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

vem566 писал(а):Нужно кроме конденсатор со входа МК на массу еще резистор между выходом и входом. Обычный интегратор.
Спасибо, картина немного улучшилась. :)
Номинал резистора я подбирал экспериментальным путем.
В итоге остановился на 75 кОм, емкость конденсатора не менял, оставил 0,1uF.
Размах сигнала уменьшился до 30mV, что довольно не плохо. Падение напряжения между входом и выходом RC-цепочки составила 40 mV
На расстояниях от 10 до 35 см показания на индикаторе более-менее стабильны, дальше 35 см уже начинают мелькать.
Изображение

В последствии я постепенно я довел сопротивление до 330 кОм - и тенденция к улучшению сошла на нет: Размах сигнала сокращаться перестал, а падение напряжения между входом и выходом только увеличивалось, и я вернулся к 75 кОм.
Таким образом, хоть применение интегрирующей RC-цепочки и дало позитивный результат, но это не панацея - общий результат по прежнему не удовлетворительный. :(

стьюдент писал(а):Может попробовать накапливать массив измерений и находить среднее арифметическое?
да, надо попробовать. На следущих выходных, когда появится свободное время, начну обдумывать такой алгоритм. :write:

codenamehawk писал(а):Посмотреть питание на датчике и при необходимости отфильтровать.
Ой! А вот о питании датчика я вообще не подумал... :oops:
Оказывается там иногда случаются провалы с 4,75 до 4,13 V :shock:
А у датчика по даташиту: Supply voltage : 4.5 to 5.5 V ... :facepalm:
Изображение

Причем я заметил, что частота провалов в питании подозрительно равна появлению пиковых импульсов в выходном сигнале.
Меня терзают смутные сомнения... (с) :roll:
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4751
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Вообще-то питание проверяют первым.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

Добавил в цепь, питающую датчик, 2 конденсатора: керамический 0,1uF + электролитический 100uF :solder:
(правильно ли я поступил, или в данном случае целесообразнее применить какой-нибудь другой способ фильтрации питания ? :roll: )

Изображение

В результате картина улучшилась, но показания на индикаторе всё еще нестабильны. :(
Вложения
IMAG046.gif
(6.99 КБ) 1385 скачиваний
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4751
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Это откуда же такое питание?
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Сб дек 08, 2012 16:40:40

Сообщение Триод »

В даташите на датчик указано, что первое измерение он делает не ранее, чем через 52.9 мс, этот факт учитываешь в программе?
Прорезались зубы
Аватара пользователя
Сообщения: 201
Зарегистрирован: Пт июл 25, 2008 14:09:04
Откуда: Зауралье

Сообщение Vicont »

vem566 писал(а):Это откуда же такое питание?
Нууу... Мой испытательный стенд питается от блока, входившего в комплект электронной книги "оникс": макс. вых. ток 1А, напряжение 5В, выход - USB-порт. Через него питание поступает на отдельный модуль, установленный на макетную плату. На модуле имеется электролитический конденсатор на 100uF.
Изображение Изображение Изображение Изображение

1) на левой осциллограмме запечатлено измерение на выходе блока питания "Оникс" без полезной нагрузки;
2) на правой осциллограмме - измерение на выходе модуля питания от макетной платы (YwRobot), подключенный через блок питания "Оникс" без полезной нагрузки.
В обоих случаях имеются колебания напряжения составляют ~ 20 mV, только во втором случае перепады более плавные.
Изображение Изображение

Как Вы считаете, это приемлемые показатели? Или нужно использовать более здоровое питание? :dont_know:
Триод писал(а):В даташите на датчик указано, что первое измерение он делает не ранее, чем через 52.9 мс, этот факт учитываешь в программе?
Ну да, согласен. Сразу после подачи питания на датчик в течении 52.9 мс есть зона нестабильного сигнала. Но ведь после нее сигнал должен нормализоваться, АЦП работает в непрерывном режиме и сразу же выводит результат каждого измерения на индикацию. То есть эта зона нестабильности перед первым измерением вообще не должна оказать виляние на последующую работу устройства.
Или я сова не учел какой-то фактор?
Вложения
Exp03-04_01.gif
Измерение на выходе модуля питания от макетной платы (YwRobot), подключенный через блок питания "Оникс" без полезной нагрузки
(6.73 КБ) 1309 скачиваний
Exp03-03_01.gif
Измерение на выходе блока питания "Оникс" без полезной нагрузки
(6.79 КБ) 1324 скачивания
Контактная информация:
Вымогатель припоя
Сообщения: 542
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Vicont писал(а):
vem566 писал(а): Как Вы считаете, это приемлемые показатели? Или нужно использовать более здоровое питание?
По идее вся нестабильность блока питания передастся на выход датчика.
Кто мешает устроить проверку от другого "чистого" блока питания? (раздельные блоки питания для процессора и для датчика)
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Сб дек 08, 2012 16:40:40

Сообщение Триод »

Как вариант, можно запитать всё устройство от трёх пальчиковых батареек и посмотреть на результат
Ответить

Вернуться в «AVR»