Оглавление:

Цифровой потенциометр MCP41HVX1 для Arduino: 10 шагов (с изображениями)
Цифровой потенциометр MCP41HVX1 для Arduino: 10 шагов (с изображениями)

Видео: Цифровой потенциометр MCP41HVX1 для Arduino: 10 шагов (с изображениями)

Видео: Цифровой потенциометр MCP41HVX1 для Arduino: 10 шагов (с изображениями)
Видео: Этот компонент может управлять множеством цепей! Руководство по цифровому потенциометру! ЭБ#51 2024, Ноябрь
Anonim
Цифровой потенциометр MCP41HVX1 для Arduino
Цифровой потенциометр MCP41HVX1 для Arduino

Семейство цифровых потенциометров MCP41HVX1 (также известных как DigiPots) - это устройства, которые имитируют функцию аналогового потенциометра и управляются через SPI. В качестве примера приложения можно заменить ручку регулировки громкости на стереосистеме на DigiPot, управляемый Arduino. Это предполагает, что регулятор громкости вашей стереосистемы является потенциометром, а не поворотным энкодером.

MCP41HVX1 немного отличается от других DigiPot тем, что у них конструкция разъемной направляющей. Это означает, что, хотя сам DigiPot может управляться выходным напряжением Arduino, сигнал, который проходит через резисторную сеть, работает с гораздо большим диапазоном напряжения (до 36 вольт). Большинство DigiPot, которые могут управляться с помощью 5 вольт, ограничены до 5 вольт через резисторную сеть, что ограничивает их использование для модернизации существующей схемы, которая работает от более высокого напряжения, такого как то, что вы найдете в автомобиле или лодке.

Семейство MCP41HVX1 состоит из следующих микросхем:

  • MCP41HV31-104E / ST - 100 кОм (7 бит)
  • MCP41HV31-503E / ST - 50 кОм (7 бит)
  • MCP41HV31-103E / ST - 10 кОм (7 бит)
  • MCP41HV31-502E / ST - 5 кОм (7 бит)
  • MCP41HV31-103E / MQ - 10 кОм (7 бит)
  • MCP41HV51-104E / ST - 100 кОм (8 бит)
  • MCP41HV51-503E / ST - 50 кОм (8 бит)
  • MCP41HV51T-503E / ST - 50 кОм (8 бит)
  • MCP41HV51-103E / ST - 10 кОм (8 бит)
  • MCP41HV51-502E / ST - 5 кОм (8 бит)

7-битные микросхемы допускают 128 шагов в цепи резисторов, а 8-битные микросхемы допускают 256 шагов в цепи резисторов. Это означает, что 8-битные микросхемы допускают вдвое больше значений сопротивления от потенциометра.

Запасы

  • Выберите соответствующую микросхему MCP41HVX1 из списка выше. Выбранный вами чип основан на диапазоне сопротивления, необходимом для вашего приложения. Это руководство основано на версиях микросхемы в корпусе TSSOP 14, поэтому, чтобы следовать этому руководству, выберите любой чип в списке, кроме MCP41HV31-103E / MQ, который является пакетом QFN. Рекомендуется приобрести несколько дополнительных чипов, так как я столкнулся с плохим, и они недорогие. Заказал свой в Digi-Key.
  • Вторичный источник питания постоянного тока от 10 до 36 вольт. В моем примере я использую 17-вольтный блок питания постоянного тока для защиты от бородавок из моей коробки старых блоков питания.
  • Паяльный флюс
  • Паяльник
  • Припой
  • Пинцет и / или зубочистка
  • 14-контактная коммутационная плата TSSOP - Amazon - QLOUNI, 40 шт. PCB Proto Board, преобразователь переходной пластины SMD в DIP TQFP (32 44 48 64 84 100) SOP SSOP TSSOP 8 10 14 16 20 23 24 28 (ассортимент размеров. Доступно для нескольких проектов)
  • Количественное определение 2-7-контактных разъемов - Amazon - DEPEPE 30 шт. 40-контактные разъемы 2,54 мм, штекер и гнездо для Arduino Prototype Shield - (Требуется обрезка по размеру. В упаковке много для нескольких проектов)
  • Arduino Uno - если у вас ее нет, я бы посоветовал приобрести официальную плату. Мне не повезло с неофициальными версиями. Цифровой ключ - Arduino Uno
  • Мультиметр, который может измерять сопротивление, а также проверять целостность цепи
  • Провода перемычки
  • Макетная плата
  • Настоятельно рекомендуется, но не обязательно, использовать лупу без помощи рук, поскольку микросхемы TSSOP очень маленькие. Для пайки и тестирования мультиметра вам понадобятся обе руки. Я использую пару клипсовых луп Harbour Freight 3x поверх очков по рецепту и отдельно стоящую лупу с шарнирно-сочлененной рамой. Другие варианты - пара недорогих ридеров из дисконтного или долларового магазина. Вы даже можете надеть ридеры поверх очков по рецепту или получить две пары ридеров (одну поверх другой) в зависимости от того, насколько хорошее (или плохое) ваше зрение. Если вы надеваете очки вдвое, будьте осторожны, так как ваш диапазон зрения будет очень ограничен, поэтому обязательно снимите их, прежде чем делать что-либо еще. Также будьте особенно осторожны при пайке.
  • Еще один предмет, который не является обязательным, но настоятельно рекомендуется, - это Harbor Freight Helping Hands. Это зажимы из крокодиловой кожи, прикрепленные к металлической основе. Они доступны у многих других поставщиков в Интернете, а также под разными торговыми марками. Они очень полезны при пайке микросхемы на монтажную плату.

Шаг 1: Припайка микросхемы TSSOP к коммутационной плате

Image
Image
Припайка микросхемы TSSOP к коммутационной плате
Припайка микросхемы TSSOP к коммутационной плате
Припайка микросхемы TSSOP к коммутационной плате
Припайка микросхемы TSSOP к коммутационной плате

Микросхему TSSOP необходимо припаять к монтажной плате, чтобы вы могли использовать ее с макетной платой или напрямую с перемычками DuPont. Для работы с прототипами они слишком малы, чтобы работать с ними напрямую.

Из-за их небольшого размера пайка микросхемы TSSOP может быть самой сложной частью этого проекта, но знание хитростей, как это сделать, делает эту задачу задачей, которую может выполнить каждый. Есть несколько техник, вот что я сделал ниже.

Стратегия состоит в том, чтобы сначала нанести припой на следы монтажной платы.

  • Не кладите микросхему на коммутационную плату до получения инструкций.
  • Первое, что нужно сделать, это нанести большое количество флюса на коммутационную плату.
  • Затем с помощью паяльника нагрейте припой и нанесите его на следы.
  • Нанесите еще немного флюса на припой, который вы вылили на следы, а также на нижнюю часть ножек микросхемы.
  • Поместите микросхему поверх дорожек, на которые вы только что поместили припой и флюс. Пинцет или зубочистка - хорошие инструменты для точной установки стружки на место. Убедитесь, что чип правильно выровнен, чтобы все штыри находились прямо над дорожками. Совместите первый штифт микросхемы с отметкой первого штифта на монтажной плате.
  • Используя паяльник, нагрейте один из выводов на конце микросхемы (выводы 1, 7, 8 или 14), вдавив его в след. Припой, который вы нанесли ранее, расплавится и потечет по штифту.

Посмотрите видео на этом этапе, чтобы увидеть демонстрацию того, как припаять микросхему к коммутационной плате. Одно предложение, которое у меня есть, отличается от видео, состоит в том, что после того, как вы припаяете первый упор для вывода, и перепроверьте выравнивание всего чипа, чтобы убедиться, что все выводы по-прежнему находятся поверх дорожек. Если вы немного ошиблись, это легко исправить. Как только вы почувствуете себя комфортно, все станет хорошо, припаяйте еще один контакт на противоположном конце микросхемы и снова проверьте совмещение. Если все выглядит хорошо, сделайте остальные булавки.

После того, как вы припаяли все контакты, видео предлагает использовать увеличительное стекло для проверки ваших соединений. Лучше использовать мультиметр для проверки целостности цепи. Вы должны поместить один щуп на ножку штифта, а другой щуп на ту часть платы, где вы будете припаять разъем (см. Второй рисунок на этом шаге). Вы также должны проверить соседние контакты, чтобы убедиться, что они не соединены из-за того, что припой закоротил несколько контактов вместе. Так, например, если вы проверяете контакт 4, также проверьте контакты 3 и 5. Контакт 4 должен показать непрерывность, а контакт 3 и контакт 5 должны показать обрыв цепи. Единственное исключение - дворник P0W может показывать подключение к P0A или P0B.

ЧАЕВЫЕ:

  • Как уже упоминалось в списке материалов, на этом этапе будет очень полезно наличие некоторого увеличения, которое оставляет ваши руки свободными для работы.
  • Использование зажима «крокодил», помогающего удерживать коммутационную плату руками, упрощает пайку.
  • Напишите номер микросхемы на куске малярной ленты и приклейте его к нижней части коммутационной платы (см. Третий рисунок в этом разделе). Если в будущем вам потребуется идентифицировать микросхему, ее будет намного легче считывать с малярной ленты. По моему личному опыту, я получил немного флюса на микросхеме, и номер полностью исчез, так что все, что у меня есть, - это лента.

Шаг 2: Подключение

Проводка
Проводка

Вам нужно будет подключить Arduino и Digipot, как показано на схеме подключения. Используемые контакты основаны на схеме Arduino Uno. Если вы используете другой Arduino, см. Последний шаг.

Шаг 3: Получение библиотеки Arduino для управления DigiPot

Получение библиотеки Arduino для управления DigiPot
Получение библиотеки Arduino для управления DigiPot

Чтобы упростить программирование, я создал библиотеку, доступную на Github. Перейдите на github.com/gregsrabian/MCP41HVX1, чтобы получить библиотеку MCP41HVX1. Вам нужно будет нажать кнопку «Клонировать», а затем выбрать «Загрузить архив». Обязательно сохраните Zip-файл в известном вам месте. Рабочий стол или папка загрузок - удобные места. После того, как вы импортируете его в Arduino IDE, вы можете удалить его из места загрузки.

Шаг 4: Импорт новой библиотеки в IDE Arduino

Импорт новой библиотеки в IDE Arduino
Импорт новой библиотеки в IDE Arduino

В среде Arduino IDE перейдите в «Эскиз», затем выберите «Включить библиотеку», затем выберите «Добавить ZIP-библиотеку..». Появится новое диалоговое окно, в котором вы сможете выбрать файл. ZIP, который вы загрузили с GitHub.

Шаг 5: Примеры библиотек

Примеры библиотек
Примеры библиотек

После добавления новой библиотеки вы заметите, что если вы перейдете в «Файл», затем выберите «Примеры», а затем выберите «Примеры из пользовательских библиотек», вы увидите запись для MCP41HVX1 в списке. Если вы наведете курсор на эту запись, вы увидите WLAT, Wiper Control и SHDN, которые являются примерами скетчей. В этом руководстве мы будем использовать пример Wiper Control.

Шаг 6: Изучение исходного кода

#include "MCP41HVX1.h" // Определите контакты, используемые на Arduino #define WLAT_PIN 8 // Если установлено значение Low, "передайте и используйте" #define SHDN_PIN 9 // Установите высокий уровень, чтобы включить сеть резисторов #define CS_PIN 10 // Установите низкий уровень, чтобы выбрать чип для SPI // Определите некоторые значения, используемые для тестового приложения # define FORWARD true # define REVERSE false #define MAX_WIPER_VALUE 255 // Максимальное значение очистки MCP41HVX1 Digipot (CS_PIN, SHDN_PIN, WLAT_PIN); void setup () { Serial.begin (9600); Serial.print ("Начальная позиция ="); Serial.println (Digipot. WiperGetPosition ()); // Отображаем начальное значение Serial.print ("Set Wiper Position ="); Serial.println (Digipot. WiperSetPosition (0)); // Устанавливаем положение стеклоочистителя на 0} void loop () {static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition (); // Получить текущее положение дворника // Определить направление. если (MAX_WIPER_VALUE == nWiper) {bDirection = REVERSE; } иначе, если (0 == nWiper) {bDirection = FORWARD; } // Перемещаем стеклоочиститель цифрового планшета if (FORWARD == bDirection) {nWiper = Digipot. WiperIncrement (); // Направление вперед Serial.print ("Приращение -"); } еще {nWiper = Digipot. WiperDecrement (); // Направление назад Serial.print ("Decrement -"); } Serial.print ("Позиция стеклоочистителя ="); Serial.println (nWiper); задержка (100);}

Шаг 7: понимание исходного кода и запуск скетча

Image
Image

Этот исходный код доступен в среде Arduino IDE, перейдя в меню «Примеры» и выбрав MCP41HVX1, который вы только что установили (см. Предыдущий шаг). В MCP41HVX1 откройте пример «Wiper Control». Лучше всего использовать код, включенный в библиотеку, так как в случае исправления ошибок он будет обновлен.

Пример Wiper Control демонстрирует следующие API из библиотеки MCP41HVX1:

  • Конструктор MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin)
  • WiperGetPosition ()
  • WiperSetPosition (байт от Wiper)
  • WiperIncrement ()
  • WiperDecrement ()

В исходном коде примера не забудьте установить MAX_WIPER_VALUE на 127, если вы используете 7-битный чип. По умолчанию 255, что соответствует 8-битным чипам. Если вы внесете изменения в образец, IDE Arduino заставит вас выбрать новое имя для проекта, поскольку это не позволит вам обновить пример кода. Это ожидаемое поведение.

Каждый раз при прохождении цикла стеклоочиститель будет увеличиваться на один шаг или уменьшаться на один шаг в зависимости от направления, в котором он движется. Если направление вверх и достигает MAX_WIPER_VALUE, направление меняется на противоположное. Если он достигнет 0, он снова обратится.

По мере выполнения эскиза на серийном мониторе обновляется текущее положение очистителя.

Чтобы увидеть изменение сопротивления, вам нужно использовать мультиметр для измерения сопротивления. Поместите измерительные щупы на P0B (контакт 11) и P0W (контакт 12) на цифровом устройстве, чтобы увидеть изменение сопротивления во время работы приложения. Обратите внимание, что значение сопротивления не будет полностью снижаться до нуля, поскольку внутри микросхемы есть некоторое внутреннее сопротивление, но оно приблизится к 0 Ом. Скорее всего, оно тоже не дойдет до максимального значения, но будет близко.

Когда вы смотрите видео, вы можете видеть, что мультиметр показывает, что сопротивление увеличивается, пока не достигнет максимального значения, а затем начинает уменьшаться. В видео используется чип MCP41HV51-104E / ST, который представляет собой 8-битный чип с максимальным значением 100 кОм.

Шаг 8: Устранение неполадок

Если что-то работает не так, как ожидалось, вот несколько вещей, на которые стоит обратить внимание.

  • Проверьте свою проводку. Все должно быть правильно подключено. Убедитесь, что вы используете полную схему подключения, как указано в данном Руководстве. Альтернативные схемы подключения представлены в README, исходном коде библиотеки и ниже в этом руководстве, но придерживайтесь того, что описано выше в шаге подключения выше.
  • Убедитесь, что каждый штырь на вашей цифровой розетке припаян к коммутационной плате. Использование визуального осмотра недостаточно. Убедитесь, что вы проверили использование функции непрерывности мультиметра, чтобы убедиться, что все контакты на цифровом устройстве электрически подключены к коммутационной плате и нет перекрестного соединения контактов припоя, которое могло бы перекрыть следы.
  • Если последовательный монитор показывает, что положение стеклоочистителя изменяется при запуске скетча, но значение сопротивления не меняется, это означает, что WLAT или SHDN не подключаются должным образом к коммутационной плате или дворникам перемычки для WLAT или SHDN. неправильно подключены к Arduino.
  • Убедитесь, что вы используете вторичный источник питания постоянного тока от 10 до 36 В.
  • Убедитесь, что источник питания от 10 до 36 вольт работает, измерив напряжение мультиметром.
  • Попробуйте использовать оригинальный набросок. Если вы внесли какие-либо изменения, возможно, вы ввели ошибку.
  • Если ни один из шагов по устранению неполадок не помог, попробуйте другой чип Digipot. Надеюсь, вы купили несколько и одновременно припаяли их к коммутационной плате TSSOP, так что нужно просто заменить одну на другую. У меня был плохой чип, который вызвал у меня некоторое разочарование, и это было исправление.

Шаг 9: Внутреннее устройство и дополнительная информация

Альтернативная схема подключения
Альтернативная схема подключения

Дальнейшая информация:

Дополнительную информацию можно найти в листе данных MCP41HVX1.

Полная документация по всей библиотеке MCP41HVX1 доступна в файле README.md, который является частью загружаемой библиотеки. Этот файл написан с пометкой вниз, и его можно просмотреть с правильным форматированием в Github (см. Внизу страницы) или с пометкой Viewer / Editor.

Связь между Arduino и DigiPot:

Arduino взаимодействует с DigiPot с помощью SPI. После того, как библиотека отправляет команду положения очистителя, такую как WiperIncrement, WiperDecrement или WiperSetPosition, она вызывает WiperGetPosition, чтобы получить положение очистителя от микросхемы. Значение, возвращаемое этими командами очистителя, представляет собой положение очистителя, как его видит микросхема, и может использоваться для проверки того, что очиститель переместился в ожидаемое место.

Расширенная функциональность (WLAT и SHDN)

Эти расширенные функции не показаны в примере «Управление стеклоочистителями». В библиотеке доступны API-интерфейсы для управления WLAT и SHDN. В библиотеке также есть примеры скетчей WLAT и SHDN (в том же месте, что и скетч Wiper Control).

SHDN (выключение)

SHDN используется для отключения или включения резисторной сети. Установка SHDN на низкий отключает, а высокий включает резисторную сеть. Когда сеть резисторов отключена, P0A (вывод 13 DigiPot) отключается, а P0B (вывод 11 DigiPot) подключается к P0W (вывод 12 DigiPot). Между P0B и P0W будет небольшое сопротивление, поэтому ваш измеритель не будет показывать 0 Ом.

Если вашему приложению не нужно управлять SHDN, вы можете подключить его напрямую к HIGH (см. Альтернативную схему подключения). Вам нужно будет использовать правильный конструктор или передать MCP41HVX1_PIN_NOT_CONFIGURED конструктору, чтобы указать, что SHDN жестко подключен. Важно отметить, что если вы следуете примеру, вы должны использовать полную схему подключения (см. Шаг «Подключение» выше).

WLAT (защелка записи)

Внутренняя архитектура - это два компонента на одном кристалле. Одним из компонентов является интерфейс SDI и регистр для хранения значения очистки. Другой компонент - это сама сеть резисторов. WLAT соединяет оба внутренних компонента вместе.

Когда для WLAT установлено значение LOW, любая информация о заданной команде положения стеклоочистителя передается непосредственно в сеть резисторов, и положение стеклоочистителя обновляется.

Если WLAT установлен на HIGH, информация о положении стеклоочистителя, передаваемая через SPI, хранится во внутреннем регистре, но не передается в сеть резисторов, и поэтому положение стеклоочистителя не обновляется. Как только WLAT установлен на LOW, значение передается из регистра в резисторную сеть.

WLAT полезен, если вы используете несколько цифровых накопителей, которые необходимо синхронизировать. Стратегия состоит в том, чтобы установить для WLAT значение HIGH на всех дигипотах, а затем установить значение очистки на всех чипах. После отправки значения дворников на все цифровые устройства WLAT можно установить значение LOW на всех устройствах одновременно, чтобы все они перемещали дворники одновременно.

Если вы управляете только одним DigiPot или у вас несколько, но их не нужно поддерживать в синхронизации, вам, скорее всего, не понадобится эта функция, и поэтому вы можете напрямую подключить WLAT к LOW (см. Альтернативную схему подключения). Вам нужно будет использовать правильный конструктор или передать MCP41HVX1_PIN_NOT_CONFIGURED конструктору, чтобы указать, что WLAT жестко подключен. Важно отметить, что если вы следуете примеру, вы должны использовать полную схему подключения (см. Шаг «Подключение» выше).

Шаг 10: Альтернативная схема подключения

Проводка

У вас есть возможность подключить WLAT от дигпота напрямую к LOW / GND вместо подключения к цифровому выводу. Если вы сделаете это, вы не сможете управлять WLAT. У вас также есть возможность подключить SHDN напрямую к HIGH вместо цифрового контакта. Если вы сделаете это, вы не сможете управлять SHDN.

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

Конструкторы

В классе MCP41HVX есть три конструктора. Мы будем обсуждать два из них. Все они задокументированы в файле README.md, поэтому, если вас интересует третий конструктор, обратитесь к документации.

  • MCP41HVX1 (int nCSPin) - используйте этот конструктор, только если WLAT и SHDN жестко подключены.
  • MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin) - используйте этот конструктор, если WLAT или SHDN жестко подключены. Передайте константу MCP41HVX1_PIN_NOT_CONFIGURED, если вывод подключен жестко, или номер вывода, если он подключен к цифровому выводу.

nCSPin должен быть подключен к цифровому выводу. Недопустимо передавать MCP41HVX1_PIN_NOT_CONFIGURED в конструктор для nCSPin.

Что делать, если я не использую Arduino Uno?

Arduino использует SPI для связи с цифровым устройством. Контакты SPI - это определенные контакты на плате Arduino. Контакты SPI на Uno:

  • SCK - контакт 13 на Uno подключен к контакту 2 на цифровом устройстве.
  • MOSI - вывод 11 на Uno подключен к выводу 4 на цифровой панели.
  • MISO - контакт 12 на Uno подключен к контакту 5 на цифровом устройстве.

Если вы используете Arduino, отличную от Uno, вам необходимо выяснить, какой из контактов является SCK, MOSI и MISO, и подключить их к цифровому устройству.

Другие контакты, используемые в эскизе, являются обычными цифровыми контактами, поэтому любой цифровой контакт будет работать. Вам нужно будет изменить эскиз, чтобы указать контакты, которые вы выбираете на плате Arduino, которую вы используете. Обычные цифровые контакты:

  • CS - контакт 10 на Uno подключен к контакту 3 на цифровом устройстве (обновите CS_PIN в скетче с новым значением)
  • WLAT - контакт 8 на Uno подключен к контакту 6 на цифровом устройстве (обновите WLAT_PIN в скетче с новым значением)
  • SHDN - вывод 9 на Uno, подключенный к выводу 7 на дигипоте (обновите SHDN_PIN в скетче с новым значением)

Рекомендуемые: