Цифровой потенциометр представляет собой переменный резистор, положение щётки которого можно задавать программно при помощи микроконтроллера. Иногда это бывает очень удобно, отпадает необходимость разбирать устройство и крутить подстроечник. Обычно их применяют в схемах регулировки громкости, опорного напряжения АЦП, усиления, контрастности LCD дисплея, в эквалайзерах да и еще много где. Цифровые потенциометры в большинстве случаев могут вполне неплохо заменить своих механических собратьев. С целью помучить изучить  прикольную детальку, был приобретен цифровой потенциометр MCP41010. О нем и пойдет речь.

Основные хар-ки девайса:

  • Полное сопротивление — 10 кОм
  • Сопротивление щётки — 52 Ом
  • Напряжение питания от 2.7 В до 5.5 В
  • Количество положений щётки — 256
  • Температурный диапазон -40…+85 °C
  • Интерфейс — SPI

Эти характеристики приведены в даташите. Реально же, у моего потенциометра полное сопротивление было 8.7 кОм. Но эта цифра укладывается в максимальные значения приведённые в даташите так что волноваться не о чем. Кстати, существуют еще два точно таких же потенциометра но с сопротивлением 50 кОм и 100 кОм. Существуют также сдвоенные потенциометры с аналогичными характеристиками. Положение щётки у данного потенциометра не запоминается, и если в этом есть потребность, то это необходимо реализовать программно. После подачи питания, щётка всегда встает в среднее положение.

Управление потенциометром
Управляется данный девайс через немного урезаный SPI. Отсутствует линия MISO, т.к. из потенциометра ничего прочитать нельзя, можно только записать. Алгоритм работы с потенциометром прост до безобразия:

1) Установить на ноге CS низкий логический уровень
2) Отправить нужную команду
3) Отправить байт данных
4) Установить на ноге CS высокий логический уровень

Рассмотрим подробнее байт команды:

MCP41010

Биты C1 и C0 предназначены для выбора исполняемой команды. Их всего две не считая NOP. Для чего нужна пустая команда я так и не понял из даташита.

MCP41010

P1 и P0 выбирают потенциометр на котором будет выполнена команда. Т.к. мой потенциометр не сдвоенный, то бит P1 для меня совершенно бесполезен.

MCP41010

Отладка управляющего софта происходила на моей новой отладочной плате. Это было первое её боевое крещение. :-) Потенциометр я приконнектил к контроллеру следующим образом:

Между седьмым и шестым выводом потенциометра  подключен мультиметр который показывает изменение сопротивления. Еще есть две кнопки замыкающие выводы 4 и 5 на землю (на схеме забыл нарисовать). Зашив прошивку в контроллер можно экспериментировать  (подобные видео снимаю впервые, поэтому просьба сильно не пинать):

Софт
SPI хоть и реализован программно, но ни кто не мешает заюзать аппаратный spi если он конечно же есть в используемом вами контроллере.  Программа простая и думаю в комментариях не нуждается. Некоторые моменты пояснены в самом коде, но если возникнут вопросы то можно спросить прямо тут в комментариях. Написано всё на ассемблере.

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

Прошивка+исходник
Даташит на MCP41010