Съдържание:

MCP41HVX1 цифров потенциометър за Arduino: 10 стъпки (със снимки)
MCP41HVX1 цифров потенциометър за Arduino: 10 стъпки (със снимки)

Видео: MCP41HVX1 цифров потенциометър за Arduino: 10 стъпки (със снимки)

Видео: MCP41HVX1 цифров потенциометър за Arduino: 10 стъпки (със снимки)
Видео: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Юли
Anonim
MCP41HVX1 цифров потенциометър за Arduino
MCP41HVX1 цифров потенциометър за Arduino

Семейството цифрови потенциометри MCP41HVX1 (известни още като DigiPots) са устройства, които имитират функцията на аналогов потенциометър и се управляват чрез SPI. Примерно приложение би било да замените копчето за сила на звука на вашето стерео с DigiPot, който се контролира от Arduino. Това предполага, че контролът на силата на звука на вашето стерео е потенциометър, а не ротационен енкодер.

MCP41HVX1 са малко по -различни от другите DigiPots, тъй като имат дизайн с разделена релса. Това означава, че докато самият DigiPot може да се контролира от изходното напрежение на Arduino, сигналът, който се предава през резисторната мрежа, работи с много по -голям диапазон на напрежение (до 36 волта). Повечето DigiPots, които могат да се контролират с 5 волта, са ограничени до 5 волта в резисторната мрежа, което ограничава използването им за модернизиране на съществуваща верига, която работи на по -високо напрежение, като например това, което бихте намерили в кола или лодка.

Семейството MCP41HVX1 се състои от следните чипове:

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

7 -битовите чипове позволяват 128 стъпки в резисторната мрежа, а 8 -битовите чипове позволяват 256 стъпки в резисторната мрежа. Това означава, че 8 -битовите чипове позволяват двойно повече стойности на съпротивлението от потенциометъра.

Консумативи

  • Изберете подходящия чип MCP41HVX1 от горния списък. Чипът, който избирате, се основава на диапазона на съпротивление, необходим за вашето приложение. Този Instructable се основава на версиите на чипа TSSOP 14, така че след това заедно с това ръководство изберете всеки чип в списъка, с изключение на MCP41HV31-103E/MQ, който е QFN пакет. Препоръчва се да вземете няколко допълнителни чипа, тъй като срещнах лош и те са евтини. Поръчах моята от Digi-Key.
  • Вторично DC захранване, което е от 10 до 36 волта. В моя пример използвам 17 -волтово DC захранване за стена от моята кутия със стари захранвания.
  • Поток за запояване
  • Поялник
  • Припой
  • Пинцет и / или клечка за зъби
  • TSSOP 14 -пинов прекъсващ борд - Amazon - QLOUNI 40бр. PCB Прото платки 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 Pin 2,54 мм мъжки и женски щифтове за Arduino Prototype Shield - (Необходимо е изрязване по размер. Много в пакета за множество проекти)
  • Arduino Uno - ако нямате такъв, бих предложил да получите официален борд. Имал съм смесен късмет с неофициалните версии. Digi -Key - Arduino Uno
  • Мултиметър, който може да измерва съпротивлението и също така да проверява за непрекъснатост
  • Кабелни проводници
  • Платка
  • Силно препоръчително, но не абсолютно задължително е лупа за свободни ръце, тъй като чиповете TSSOP са много малки. Ще ви трябват и двете ръце за запояване и тестване с мултиметъра. Използвам чифт трикратни лупи Harbour Freight върху моите диоптрични очила и свободно стоящо / шарнирно лупа. Други опции са чифт евтини читатели от магазина за отстъпки или долари. Можете дори да носите читателите над очилата си с рецепта или да вземете два чифта четци (един от друг) в зависимост от това колко добро (или лошо) е вашето зрение. Ако удвоявате очилата, бъдете внимателни, тъй като зрителният ви обхват ще бъде много ограничен, така че не забравяйте да ги свалите, преди да правите нещо друго. Също така бъдете особено внимателни при запояване.
  • Друг елемент, който не е задължителен, но силно препоръчителен, е Harbor Freight Helping Hands. Те са алигаторни скоби, прикрепени към метална основа. Те се предлагат от много други доставчици в интернет, както и под различни търговски марки. Те са много полезни при запояване на чипа върху пробивната платка.

Стъпка 1: Запояване на TSSOP чипа към Breakout Board

Image
Image
Запояване на TSSOP чипа към Breakout Board
Запояване на TSSOP чипа към Breakout Board
Запояване на TSSOP чипа към Breakout Board
Запояване на TSSOP чипа към Breakout Board

Чипът 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

В рамките на IDE на Arduino отидете на „Sketch“, след това изберете „Include Library“, след това изберете „Add ZIP Library..“. Ще се появи нов диалогов прозорец, който ви позволява да изберете. ZIP файла, който сте изтеглили от GitHub.

Стъпка 5: Примери за библиотека

Примери за библиотека
Примери за библиотека

След като добавите новата библиотека, ще забележите, че ако отидете на „Файл“, след това изберете „Примери“и след това изберете „Примери от персонализирани библиотеки“, сега ще видите запис за MCP41HVX1 в списъка. Ако задържите курсора на мишката върху този запис, ще видите WLAT, Wiper Control и SHDN, които са примерни скици. В тази инструкция ще използваме примера за управление на чистачките.

Стъпка 6: Разглеждане на изходния код

#include "MCP41HVX1.h" // Определете пиновете, използвани на Arduino#define WLAT_PIN 8 // Ако е зададено на Ниско "прехвърлете и използвайте" #define SHDN_PIN 9 // Задайте високо, за да активирате резисторната мрежа#дефинирайте CS_PIN 10 // Задайте на ниско, за да изберете чип за SPI // Определете някои стойности, използвани за тестовото приложение#определете ПРЕДВАРИТЕЛНО истинно#определете REVERSE false#определете 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 ("Задаване на позиция на чистачката ="); Serial.println (Digipot. WiperSetPosition (0)); // Задайте позицията на чистачката на 0} void loop () {static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition (); // Получаване на текущата позиция на чистачките // Определяне на посоката. if (MAX_WIPER_VALUE == nWiper) {bDirection = REVERSE; } иначе ако (0 == nWiper) {bDirection = НАПРЕД; } // Преместване на чистачката digipot if (FORWARD == bDirection) {nWiper = Digipot. WiperIncrement (); // Посоката е напред Serial.print ("Increment -"); } else {nWiper = Digipot. WiperDecrement (); // Посоката е назад Serial.print ("Намаляване -"); } Serial.print ("Позиция на чистачката ="); Serial.println (nWiper); забавяне (100);}

Стъпка 7: Разбиране на изходния код и стартиране на скицата

Image
Image

Този изходен код е достъпен в Arduino IDE, като отидете в менюто Примери и намерите MCP41HVX1, който току -що сте инсталирали (вижте предишната стъпка). В рамките на MCP41HVX1 отворете примера "Управление на чистачките". Най -добре е да използвате кода, включен в библиотеката, тъй като ако има някакви корекции на грешки, той ще бъде актуализиран.

Примерът за управление на чистачките демонстрира следните API от библиотеката MCP41HVX1:

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

В рамките на примерния изходен код не забравяйте да зададете MAX_WIPER_VALUE на 127, ако използвате 7 -битов чип. По подразбиране е 255, което е за 8 -битови чипове. Ако направите промени в извадката, IDE на Arduino ще ви принуди да изберете ново име за проекта, тъй като няма да ви позволи да актуализирате примерния код. Това е очаквано поведение.

Всеки път през контура чистачката ще се увеличава с една стъпка или ще намалява с една стъпка в зависимост от посоката, в която се движи. Ако посоката е нагоре и стигне до MAX_WIPER_VALUE, тя ще обърне посоката. Ако удари 0, той ще се върне отново.

Докато скицата се изпълнява, серийният монитор се актуализира с текущата позиция на чистачките.

За да видите промяната на съпротивлението, ще трябва да използвате набор от мултицети за четене на ома. Поставете измервателните сонди на P0B (щифт 11) и P0W (щифт 12) на дигипота, за да видите промяната на съпротивлението, докато приложението работи. Обърнете внимание, че стойността на съпротивлението няма да стигне до нула, тъй като има известно вътрешно съпротивление в чипа, но ще се доближи до 0 ома. Най -вероятно той също няма да достигне максималната стойност, но ще бъде близо.

Докато гледате видеото, можете да видите, че мултицетът показва, че съпротивлението се увеличава, докато достигне максималната стойност и след това започва да намалява. Чипът, използван във видеото, е MCP41HV51-104E/ST, който е 8-битов чип с максимална стойност 100k ohm.

Стъпка 8: Отстраняване на неизправности

Ако нещата не работят както се очаква, ето няколко неща, които трябва да разгледате.

  • Проверете кабелите си. Всичко трябва да бъде свързано правилно. Уверете се, че използвате пълната електрическа схема, както е посочено в тази инструкция. Има алтернативни схеми на свързване, представени в README, изходния код на библиотеката и по -долу в тази инструкция, но се придържайте към това, което е документирано по -горе в стъпката на окабеляване по -горе.
  • Уверете се, че всеки щифт на вашия цифров пот е запоен към пробивната платка. Използването на визуална проверка не е достатъчно добро. Уверете се, че сте проверили, като използвате функцията за непрекъснатост на вашия мултицет, за да се уверите, че всички щифтове на дигипота са електрически свързани към пробивната платка и няма кръстосано свързване на щифтове от спойка, които може да са се пресекли по следи.
  • Ако серийният монитор показва, че позицията на чистачките се променя, когато изпълнявате скицата, но стойността на съпротивлението не се променя, това е индикатор, че WLAT или SHDN не осъществяват правилно свързване към пробивната платка или джъмперите за WLAT или SHDN не са свързани правилно с Arduino.
  • Уверете се, че използвате вторично захранване, което е DC между 10 и 36 волта.
  • Уверете се, че захранването от 10 до 36 волта работи, като измерите напрежението с вашия мултицет.
  • Опитайте да използвате оригиналната скица. Ако сте направили някакви промени, може да сте въвели грешка.
  • Ако нито една от стъпките за отстраняване на неизправности не е помогнала да опитате друг чип digipot. Надяваме се, че сте купили няколко и ги запоявате едновременно към TSSOP пробивна дъска, така че трябва да е само въпрос на смяна на един за друг. Имах лош чип, който ми причини доста разочарование и това беше поправката.

Стъпка 9: Вътрешни данни и допълнителна информация

Алтернативна схема на окабеляване
Алтернативна схема на окабеляване

Допълнителна информация:

Допълнителна информация може да бъде намерена в информационния лист MCP41HVX1.

Пълната документация за цялата библиотека MCP41HVX1 е достъпна във файла README.md, който е част от библиотеката за изтегляне. Този файл е записан с маркировка надолу и може да бъде прегледан с подходящо форматиране в Github (погледнете в долната част на страницата) или с преглед с отметки / редактор.

Комуникации между Arduino и DigiPot:

Arduino комуникира с DigiPot чрез SPI. След като библиотеката изпрати команда за позицията на чистачките като WiperIncrement, WiperDecrement или WiperSetPosition, тя извиква WiperGetPosition, за да получи позицията на чистачките от чипа. Стойността, върната от тези команди за чистачки, е позицията на чистачката така, както я вижда чипът, и може да се използва за проверка дали чистачката се е преместила на очакваното място.

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

Тези разширени функции не са демонстрирани в примера „Управление на чистачките“. В библиотеката има налични API за управление на WLAT и SHDN. Има и примерни скици на WLAT и SHDN (на същото място като скицата за управление на чистачките) с библиотеката.

SHDN (изключване)

SHDN се използва за деактивиране или активиране на резисторната мрежа. Задаването на SHDN на ниско изключва и на високо активира резисторната мрежа. Когато мрежата на резистора е деактивирана, P0A (DigiPot щифт 13) е изключен и P0B (DigiPot щифт 11) е свързан към P0W (DigiPot щифт 12). Между P0B и P0W ще има малко съпротивление, така че вашият глюкомер няма да отчете 0 ома.

Ако вашето приложение няма нужда да контролира SHDN, можете да го свържете директно към HIGH (вижте алтернативната електрическа схема). Ще трябва да използвате правилния конструктор или да предадете в MCP41HVX1_PIN_NOT_CONFIGURED на конструктора, за да посочите, че SHDN е свързан твърдо. Важно е да се отбележи, че ако следвате заедно с примера, трябва да използвате пълната схема на окабеляване (вижте Стъпка свързване по -горе).

WLAT (Заключване за запис)

Вътрешната архитектура е два компонента на един чип. Един от компонентите е интерфейсът SDI и регистърът за задържане на стойността на чистачките. Другият компонент е самата резисторна мрежа. WLAT свързва двата вътрешни компонента заедно.

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

Ако WLAT е настроен на ВИСОК, информацията за позицията на чистачките, предадена през 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 за комуникация с digipot. 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 в скицата с нова стойност)

Препоръчано: