Пользовательский блок "железный" компаратор (AIN0:AIN1)

иногда бывает нужен в автоматике

Пользовательские блоки не подходящее под другие разделы
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Аватара пользователя
ДедОк
Рядовой
Сообщения: 23
Зарегистрирован: 31.10.2016{, 13:48}
Репутация: 3
Откуда: Славута

Пользовательский блок "железный" компаратор (AIN0:AIN1)

#1

Сообщение ДедОк » 23.02.2018{, 00:27}

В одном проекте мне оказалось нужным воспользоваться "железным" компаратором самой АТМеги. В Ардуине этот узел никак не используется, но выкладываю блок, может кому пригодится.
Вложения
железный_компаратор_(CODE).ubi
(22.08 КБ) 206 скачиваний

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Пользовательский блок "железный" компаратор (AIN0:AIN1)

#2

Сообщение Dryundel » 29.07.2022{, 15:48}

Четыре года, 163 скачивания и ни одного лайка. Не вполне справедливо.
Хотя с другой стороны, наверняка 99% скачавших, посмотрели, не поняли что к чему и забыли, ибо автор даже об описании не позаботился. Поэтому не стал создавать новую тему, а сделал человекопонятный блок с описанием.
Вообще, "железный" компаратор, зарытый в дебрях AVR, весьма интересная штука.
Он очень быстрый и код для него практически не занимает память.

Итак что же такое Analog Comparator Control.

1. В ATmega328/168 (Arduino Nano, UNO, Pro Mini) есть встроенный компаратор.
2. Кроме аналоговых A0 - A7, есть еще два условно-аналоговых входа - это D6 и D7.
3. D6 и D7 по умолчанию являются входами этого аналогового (железного) компаратора.
4. Существует масса вариантов работы данного компаратора, как с аналоговыми входами A0 - A7 так и с GND, AREF, внутренним опорным напряжением.
5. По итогу, все очень просто. Измеряем два напряжения, сравниваем и если первое больше второго, то на выходе компаратора логическая единица. В противном случае - логический ноль.

Где это может пригодиться:
Реализация сигнала Alarm, к примеру с аналогового датчика температуры, отслеживание пропадания питания и сохранения данных пока не "умер" контроллер, задействование дополнительных аналоговых входов для подобных операций и многое другое.
Обзорные видео о работе компаратораПоказать
Распиновка входов компаратора (по умолчанию)Показать
1.jpg
Первое видео на английском, но весьма полезное и Яндекс браузер переводит озвучку достаточно качественно.
.
Ну и наконец...
2.jpg
2.jpg (3.26 КБ) 791 просмотр
Analog Comparator Control V0.1.flp
(297.05 КБ) 53 скачивания
Схема для тестированияПоказать
3.jpg
.
Это стартовая, дефолтная версия блока железного компаратора

Описание:
Дефолтные входы D6 и D7
Принцип работы:
Если напряжение на входе D6 больше чем напряжение на входе D7
то на выходе Q устанавливается логическая единица.
В противном случае, если V(D6) < V(D7) то Q = 0.
Примечание: Входы D6 и D7 из списка доступных не исключаются. Будьте внимательны.

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

Ответить

Вернуться в «Другое»