Осциллограф показывает не то, что я ожидаю

Сегодня у меня был мой первый очень захватывающий и успешный опыт работы с осциллографом. Вопрос, возникший в конце моего первого опыта, касается точности, которую я ожидал. Мой микроконтроллер был запрограммирован на вывод таких сигналов, как ВЫСОКИЙ сигнал на 80 мкс, НИЗКИЙ на 50 мкс, ВЫСОКИЙ на 25 мс и т. д. Я использовал кристалл 16 МГц с моим ATMega8.

Когда я записал выходные данные с помощью осциллографа, я заметил, что измерения были неточными. Например, когда я ожидаю 80 мкс ВЫСОКИЙ сигнал на осциллографе, он будет выглядеть примерно как 77 мкс. Сигналы, длившиеся дольше (например, 25 мс), казались более точными.

Мой вопрос просто: это то, что я должен ожидать? Я имею в виду, что устройство, которое я подключил к моему микроконтроллеру, требует определенных сигналов в течение определенного периода времени, и я запрограммировал свой микроконтроллер на передачу ему этих сигналов в течение необходимого времени. Все работает отлично, я просто не могу понять, почему существует это несоответствие. Для справки, датчик представляет собой датчик температуры DHT-11 . Если микроконтроллер на самом деле не передает точные сигналы, почему мой датчик реагирует правильно?

Вот некоторые из моих предположений:

  1. Датчик может допускать некоторую ошибку, поэтому он работает. Кажется, я не могу определить и рассмотреть эту ошибку на основе таблицы данных.
  2. Кристалл не совсем точен. Здесь мы имеем дело с микросекундным разрешением, так что это возможно.
  3. Другие компоненты, такие как резисторы и конденсаторы, вносят ошибку.
  4. Часы на осциллографе тоже не идеальны - хотя и намного лучше, чем кристалл, используемый для моего микроконтроллера.

Возможно, происходит что-то еще, о чем я не знаю.

Обратите внимание, что тайминги, которые я использовал выше, являются просто примерами и могут отличаться от таблицы данных и того, что я фактически использовал в своем коде.

Ответы (2)

Трудно быть конкретным, не видя вашего кода, но я попробую.

Ваша догадка №1 определенно верна; любой протокол однопроводной шины должен иметь большой допуск к изменениям синхронизации, поскольку он частично зависит от резистивного натяжения провода с непредсказуемой емкостью.

Ваши догадки №2 - №4 маловероятны; кристаллы как на микроконтроллере, так и на осциллографе в порядке.

Что, вероятно, происходит, так это то, что импульсы, которые вы генерируете с помощью своей прошивки, имеют не совсем ту ширину, которую вы планировали. Смещение в несколько командных циклов может легко составлять 3 мкс. И эта ошибка не будет масштабироваться с интервалом времени, поэтому, как вы заметили, более длинные интервалы будут казаться более точными.

Если вы опубликуете код, который вы используете для генерации импульсов, мы могли бы дать более конкретный совет.

Вы также можете указать, какой процент погрешности заявлен в вашем прицеле, какова заявленная пропускная способность, был ли он откалиброван с 1973 года и т. д., и т. д. Это может быть настолько хорошо, насколько это возможно.

Пожалуйста, предоставьте информацию (или фотографии!) о вашей области. Многие осциллографы имеют возможность перейти в «некалиброванный» режим, который позволяет произвольно регулировать синхронизацию по оси X (это может быть очень полезно для определенных измерений). Возможно, вы случайно перевели прицел в этот режим. Кроме того, если это новый для вас прицел (особенно если вы используете старый прицел), ему действительно может потребоваться калибровка.

Кроме того, как вы определяете время? Используете ли вы заранее написанную функцию задержки? Вы уверены, что не находитесь на границе его диапазона? Я знаю, что функция arduino DelayUS()начинает вести себя странно, когда переданные ей значения < ~ 5. Что-то подобное может происходить и здесь.

Наконец, причина, по которой вы видите достоверные данные с вашего датчика, заключается просто в том, что датчик использует шинный протокол, чрезвычайно устойчивый к отклонениям во времени, и вы находитесь в пределах допустимого диапазона погрешности синхронизации.


В любом случае, если вы опубликуете дополнительную информацию (либо свой код, либо изображения/описание вашей установки), мы можем попытаться помочь вам больше.