Общаемся с автором прибора. Собственно, из-за чего я с ним связался. У прибора ( по крайней у моего экземпляра), проблема при измерении задержки заднего фронта импульса, на выходе оптрона. Проблема проявляется при измерении «быстрых» оптронов. Так при проверке 6N137, по осциллографу, задержка заднего фронта ~ 70ns, а прибор насчитывает 65000 ns. При этом, измерения «медленных» оптронов, типа PC817, в принципе совпадают и дают приемлемый результат для отбраковки.
Последний раз редактировалось PUL`S Чт июл 17, 2025 18:58:04, всего редактировалось 2 раз(а).
У вас битая ардуина похоже. Проверил тот же самый прототип, что был использован для статьи, без перезаливки скетча. Все работает как и должно. Либо проверяйте монтаж.
_________________ При решение наиболее сложных задач, большинство, как правило, ошибается...
Сегодня, собрал прибор, с использованием ARDUINO Nano. Результат такой же... 6N137 измеряются не правильно. PC817, CNY17-x, CNY-75 измеряются вполне приемлемо. Результат, практически точно совпадает с измерениями с помощью осциллографа. Буду признателен, если кто-то из форумчан, проверит работу приборчика. Там на сборку - 20 минут.... Главное иметь в наличии быстрый оптрон, например 6N137
Некоторое время назад меня просили сделать двуканальную версию для сдвоенных оптопар. Тогда не было времени этим заниматься. Сейчас в отпуске как раз и эту функцию добавил в версию 2.0.
Основные фичи: 1. два канала 2. работает от одной кнопки "вниз" 3. показывает сразу все значения в наносекундах
Немного измененная схема.
Вид работы. Канал 1 - 6N137, канал 2 - PC817.
Прошивка в следующем сообщении.
_________________ При решение наиболее сложных задач, большинство, как правило, ошибается...
Последний раз редактировалось Alex-lab Сб июл 19, 2025 22:31:58, всего редактировалось 1 раз.
В версии 2, лёгкий «косметический» дефект. Если не установить в панельку измеряемый оптрон, то при первом нажатии на кнопку, выводит такую картинку. Вывод этого значения, совершенно случаен. Может так, а может эдак…. После вторичного нажатия на кнопку, всё нормализуется . Видно на нижнем фото. После этого, сколько не нажимай на кнопку – отображение информации верное. После отключения питания, всё повторяется. Первое нажатие и в пустом канале, хаотично появляется число. Похоже, что какое-то значение, прописывается только после первого цикла измерения.
Потестировал. Работает. Спасибо. Интересный момент, несмотря на то, что в программе включены подтягивающие резисторы на D2 и D3 ( и они действительно включаются, подтягивая эти входы), в случае оставления D2 и D3 отключенными от схемы, продолжается периодическое проскакивание ложных данных. Видимо, по какой-то причине, иногда ложно срабатывают прерывания по INTам. Установка же, внешних резисторов (R3 и R5) полностью устраняет эту проблему. Не знаю, какой номинал подтягивающих резисторов в процессоре, но похоже их тока маловато.... Но, то такое... Кроме этого, интересно поведение прибора если: -установить 817 оптрон -нажать кнопку (сделать измерение) -вытащить и потом обратно вставить измеряемый оптрон -снова нажать кнопку в 90% случаев, прибор покажет совершенно другие значения, но все последующие измерения, будут правильными. И так происходит всегда. Видимо, когда "шевелим" оптрон, происходят постоянные прерывания и как результат, не правильные расчеты. Даже если этого не делать, периодически, при циклическом измерении одного и того же оптрона, проскакивают ложные показания. Может, нужно разрешать прерывания, только в момент измерения?
Может, нужно разрешать прерывания, только в момент измерения?
Так и сделано, прерывания разрешены только когда ожидается конкретный фронт и сразу выключаются по прерыванию. Иначе оно будет ловить все подряд. Причина такого поведения пока остается загадкой.
_________________ При решение наиболее сложных задач, большинство, как правило, ошибается...
Понятно. Возможно, что причина кроется в командах и библиотеках самого Arduino. Очень трудно предсказать поведение таймеров. Ими же, активно пользуются многие процедуры. В любом случае, со своей задачей прибор справляется и лично меня устраивает.
Это вряд ли, ну а что там предсказывать? Таймер который используется в скетче больше ничего не делает. Мне кажется, что дело в детекции самого фронта переключения. Мы же не используем компаратор или еще что, а цифровой пин не нормируется жестко по уровню срабатывания, там может шум какой или еще что. Может тепловой эффект. Если бы дело было в таймере, тогда бы и быстрые оптроны флуктуировали, а проблемы возникают только на медленных. Но в целом, думаю и так достаточно. Как прецизионный прибор он и не задумывался.
Добавлено after 48 minutes 6 seconds: Добавил функционал вывода данных в порт. Версия 2.1.
Новые фичи: 1. DOWN - Тестирование обоих каналов как и раньше 2. UP - отправка полученных данных в терминал 3. SELECT - Тестирование + отправка данных с одного нажатия
С помощью этого метода удалось установить, что данные начинают прыгать от температуры пальцев. Даже если не вытаскивать оптрон из колодки а просто держать на нем палец, и постоянно отсылать данные, то значения меняются в одну сторону, если убрать палец и подуть - в другую. Может быть в этом дело.
Данные табулируются с разделителем ";", скорость 115200 бод.
Немного понажимал на кнопки и...при очередном нажатии иногда показания скачком изменяются. Нарисовал схему в протеусе. Видео не приложить, но визуально видно как выходной импульс(на А4) скачком меняет длительность где то на 5 мкс. Возможно из-за этого даже в протеусе показания немного в каналах отличаются.
Вложения:
Комментарий к файлу: скачет только 1 канал терм2.jpg [93.55 KiB]
Скачиваний: 8
Комментарий к файлу: с терминалом терм.jpg [254 KiB]
Скачиваний: 7
Сейчас этот форум просматривают: Google [Bot] и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения