воскресенье, 1 ноября 2020 г.

Аналоговый компаратор и двухбитный АЦП

Многие современные микроконтроллеры, как правило, имеют в своем составе аналого цифровые преобразователи (АЦП) для измерения аналогового сигнала. Такая возможность часто бывает необходима. Однако не все микроконтроллеры имеют именно аппаратный встроенный АЦП. Например ATtiny2313 не имеет его. Зато он имеет аналоговый компаратор. Аналоговый компаратор, сам по себе, не может измерять аналоговое напряжение. Зато он может определить больше ли это напряжение некоторого опорного или нет. А также он работает гораздо быстрее чем полноценный АЦП. Бывают ситуации когда этого функционала достаточно, например когда надо определить превышение тока в нагрузке, включить защиту и сделать это быстро, в этом случае аналоговый компаратор будет гораздо лучше чем АЦП. Также этот компаратор может быть использован в каких нибудь преобразователях напряжения чтобы оперативно следить за напряжением. Или же небольшими внешними доработками можно сделать АЦП на основе имеющегося компаратора. Работа с аналоговым компаратором микроконтроллеров AVR достаточно проста. На основе компаратора  микроконтроллера ATtiny2313 можно сделать например двухбитный АЦП. Такой АЦП не очень точный но зато очень быстрый и его можно использовать например для какой нибудь шкалы уровня заряда или ещё чего нибудь подобного. Рассмотрим схему:

 




Рисунок 1 - АЦП на ATtiny2313

Резистором R9 задается напряжение которое измеряет АЦП, вместо этого резистора можно поставить какой либо другой источник напряжения в пределах от 0 до напряжения питания микроконтроллера. На резисторах R5-R8 собрана R-2R цепь которая является двухбитным цифро аналоговым преобразователем (ЦАПом). На светодиодах VD1-VD2 сделана шкала уровня напряжения. Резисторы R1-R4 нужны для ограничения тока светодиодов VD1-VD2. Вместо R-2R цепи можно было бы использовать какие либо другие способы задания напряжения например ШИМ+RC цепь и т.о добиться гораздо большей точности но при этом скорость измерения напряжения значительно снизиться. Теперь давайте рассмотрим код программы на ассемблере:


Настройки компаратора в коде нет т.к. он уже правильно настроен по умолчанию. Есть настройка только пинов ввода/вывода и стека. В основном цикле реализован алгоритм поразрядного уравновешивания и управление светодиодами. Под основным циклом есть небольшая подпрограмма задержки. Про то как работает данный алгоритм можно посмотреть на видео:




КАРТА БЛОГА (содержание)