Здравствуйте, уважаемые коллеги. Собрал устройство, контролирующее температуру на 12 цилиндрах двигателя на основе ATMega16 и температурных датчиках DS18B21. При установке на двигатель выяснилось, что при падении или поднятии фронта сигнала (signal line) возникают колебания с частотой около 770кГц, амплитуды которых увеличиваются при отсоединении сенсоров. Контроллер опрашивает одновременно(параллельно) все сенсоры. Если остается подсоединенными только 2 сенсора, измерение температуры невозможно из-за сильных колебаний на сигнальном проводе. Питание схемы осуществляется через dc/dc конвертер, на нем падения напряжения не наблюдается. Установлены : подтяжка 1.5к, защитный резистор на входе контроллера 270 Ом, 2 защитных диода 1N4148 у штекера.Микроконтроллер размещен на отдельной плате, штекеры сенсоров располжены на другой плате, которая соединена с платой контроллера леточным кабелем.
Теперь вопрос. Как мне снизить амплитуду колебаний и получить сигнал прямоугольной формы?
К сожалению не снял осциллограмму во время испытаний на двигателе. Но для примера выкладываю осциллограмму снятую в кабинете. На ней видны колебания при падении сигнала, и частота их намного больше.
Вложения:
Комментарий к файлу: осцилограмма osci.PNG [10.54 KiB]
Скачиваний: 878
Прежде всего, надо устранить неточности:
1. Не существует датчика DS18B21, по крайней мере на сайте производителя о нем ничего не известно
2. Для 1-Wire микросхем рекомендована подтяжка 4,7К. хотя допускается и меньше/больше
3. не очень понятна конкретная схема включения датчиков (питание, МК и т.п.)
теперь по картинке: всплески в 50 наносекунд мне кажутся несущественными для работы датчика, т.к. они присутствуют во всех цифровых сигналах (для ТТЛ их уровень гораздо больше бывает). гарантированно проверена работа одновременно с 4-я датчиками по трем проводам на расстояния до 9М (при стандартной подтяжке). Думаю, проблема не в лишних импульсах, а в некорректной работе программы МК, т.е. нечеткой выдержке временных интервалов протокола.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Спасибо за ответ.
Вы правы с датчиком ошибся, описАлся. Правильно будет DS18B20.
Каждый датчик посажен на отдельный порт мк.
Картинку привел для примера, замеры проводил в кабинете, где нет сильных электро/магнитных помех. Здесь как раз все и работает.
Вредные колебания на сигнальной линии имеют частоту 770кГц (1,3 мкс) и их амплитуда превышает пороговые(threshold) (до 4В от мин до мах)значения напряжения, поэтому нормальное считывание протокола невозможно.
Схемы прилагаются.
имхо, колебания такой амплитуды - это что-то подозрительное.
если отказаться от резистров 240 Ом, свить и экранировать провода, идущие к датчикам (по 3 провода на датчик отдельно) - не поможет ли? Еще варианты: разместить "подтяжки" либо ближе к каждому датчику, либо разделить на пару удвоенного сопротивления - один ближе к МК, другой ближе к датчику.
кроме того: эти колебания что, не заканчиваются? если мне память не изменяет, то для надежного определения уровня в 1-Wire требуется ожидать около 14 мкс - неужели за 10 мкС уровень не устанавливается стабильно?!
почему 8 проводов? на одном все датчики не работают даже в лаборатории, что ли?
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
К сожалению, колебания незатухающие. У меня так и сделано- по 3 провода отдельно на датчик, кабель экранирован. Чтобы не морочиться с инициализацией датчиков, повесил каждый отдельно на ногу мк. Плату разместил в стальном ящике.
Дело как раз и не в датчиках, когда они подключены, мах мин колебания всего 0,5В. А вот когда я начинаю их отсоединять, тогда и увеличивается амплитуда. Амплитуда также увеличивается при включении подсветки LCD экрана через ULN2003 до 0,7В.
Подозреваю, что проблема лежит управлении контроллера сигнальной линии. Так например, если я управляю не 12 ножками, а всего лишь 8, амплитуда колебаний меньше, правда, это я обнаружил в лаборатории, и не знаю, как будет на двигателе. Где-то есть индуктивность. Плату залил GND полигонами полностью верх и местами снизу.
А что даст, если я уберу резисторы (которые кстати поставил по рекомендации tycha... )?
снял осциллограмму на сигнальной линии при подключенном сенсоре. Как видно из нее, размах колебаний намного меньше. Что же может уменьшать амплитуду?! внутренняя емкость сенсора Cpp?
Прошу прощения, а Вы поиском пользовались? По DS18B20 тем на форуме - штук 10. Возможно, стоило продолжить какую-нибудь из них, как считаете?
Уважаемый Aheir, я думал об этом. Но проблема колебания в данном случае, по-моему, никак не связана с DS18B20 или контроллером, поэтому открыл тему в цифровой технике. Но Вы, на правах модератора, можете перенести эту тему в любой соответствующий по-вашему мнению подфорум.
ОК. Пусть тема живет так, по обстоятельствам далее посмотрим. Aheir
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения