Obsah:

Digitální potenciometr MCP41HVX1 pro Arduino: 10 kroků (s obrázky)
Digitální potenciometr MCP41HVX1 pro Arduino: 10 kroků (s obrázky)

Video: Digitální potenciometr MCP41HVX1 pro Arduino: 10 kroků (s obrázky)

Video: Digitální potenciometr MCP41HVX1 pro Arduino: 10 kroků (s obrázky)
Video: IR remote + digital potentiometer +arduino test #02 2024, Červenec
Anonim
Digitální potenciometr MCP41HVX1 pro Arduino
Digitální potenciometr MCP41HVX1 pro Arduino

Rodina digitálních potenciometrů MCP41HVX1 (aka DigiPots) jsou zařízení, která napodobují funkci analogového potenciometru a jsou ovládána prostřednictvím SPI. Příkladem aplikace by bylo nahrazení knoflíku hlasitosti na vašem stereu za DigiPot, který je řízen Arduinem. To předpokládá, že ovládání hlasitosti na vašem stereu je potenciometr a ne rotační kodér.

MCP41HVX1 se trochu liší od ostatních DigiPotů v tom, že mají dělenou kolejnici. To znamená, že zatímco samotný DigiPot může být řízen výstupním napětím Arduina, signál, který prochází sítí odporů, pracuje s mnohem větším rozsahem napětí (až 36 voltů). Většina DigiPotů, které lze ovládat 5 volty, je omezena na 5 voltů napříč odporovou sítí, což omezuje jejich použití pro dodatečnou montáž stávajícího obvodu, který pracuje na vyšším napětí, jako je to, co byste našli v autě nebo lodi.

Rodina MCP41HVX1 se skládá z následujících čipů:

  • MCP41HV31-104E/ST - 100 kOhm (7 bitů)
  • MCP41HV31-503E/ST - 50 k ohmů (7 bitů)
  • MCP41HV31-103E/ST - 10 kOhm (7 bitů)
  • MCP41HV31-502E/ST - 5 k ohmů (7 bitů)
  • MCP41HV31-103E/MQ - 10 kOhm (7 bitů)
  • MCP41HV51-104E/ST - 100 kOhm (8 bitů)
  • MCP41HV51-503E/ST - 50 k ohmů (8 bitů)
  • MCP41HV51T -503E/ST - 50 k ohmů (8 bitů)
  • MCP41HV51-103E/ST - 10 k ohmů (8 bitů)
  • MCP41HV51-502E/ST - 5 k ohmů (8 bitů)

7bitové čipy umožňují 128 kroků v odporové síti a 8bitové čipy umožňují 256 kroků v rezistorové síti. To znamená, že 8bitové čipy umožňují dvakrát tolik hodnot odporu z potenciometru.

Zásoby

  • Ze seznamu výše vyberte příslušný čip MCP41HVX1. Vybraný čip je založen na rozsahu odporu požadovaném pro vaši aplikaci. Tento Instructable je založen na verzích čipu TSSOP 14, takže podle tohoto průvodce si můžete vybrat jakýkoli čip v seznamu kromě MCP41HV31-103E/MQ, což je balíček QFN. Doporučuje se získat několik dalších žetonů, protože jsem narazil na špatný a jsou levné. Objednal jsem si ten svůj z Digi-Key.
  • Sekundární stejnosměrné napájení, které je od 10 do 36 voltů. V mém příkladu používám 17voltový nástěnný bradavičný stejnosměrný zdroj z krabice starých napájecích zdrojů.
  • Pájecí tok
  • Páječka
  • Pájka
  • Pinzeta a / nebo párátko
  • TSSOP 14 pin breakout board - Amazon - QLOUNI 40pcs PCB Proto Boards SMD to DIP Adapter Plate Converter TQFP (32 44 48 64 84 100) SOP SSOP TSSOP 8 10 14 16 20 23 24 28 (Sortiment velikostí. Mnoho dostupných pro více projektů)
  • Kvantifikujte 2 - 7 pinové záhlaví - Amazon - DEPEPE 30 ks 40 pinových 2,54 mm samčích a samičích konektorů pro prototypový štít Arduino - (Je nutné snížit velikost. Mnoho v balení pro více projektů)
  • Arduino Uno - pokud ho nemáte, doporučil bych pořídit si úřední desku. Měl jsem smíšené štěstí s neoficiálními verzemi. Digi -Key - Arduino Uno
  • Multimetr, který dokáže měřit odpor a také kontrolovat kontinuitu
  • Propojovací vodiče
  • Prkénko
  • Důrazně doporučujeme, ale není to absolutně nutné, je hands -free lupa, protože čipy TSSOP jsou velmi malé. K pájení a testování s multimetrem budete potřebovat obě ruce. Na dioptrické brýle používám pár Harbor Freight 3x Clip-On lupy a volně stojící / kloubové zvětšovací sklo. Další možností je pár levných čteček ze slevového nebo dolarového obchodu. Můžete dokonce nosit čtečky přes dioptrické brýle nebo si pořídit dva páry čteček (jeden nad druhým) podle toho, jak dobrý (nebo špatný) máte zrak. Pokud si zdvojnásobujete brýle, buďte opatrní, protože váš rozsah vidění bude velmi omezený, proto si je před každým dalším použitím sundejte. Při pájení buďte také mimořádně opatrní.
  • Jedna další položka, která není vyžadována, ale je vysoce doporučována, je Harbour Freight Helping Hands. Jsou to aligátorové spony připevněné k kovové základně. Ty jsou k dispozici od mnoha dalších prodejců na internetu i pod různými značkami. Ty jsou velmi užitečné při pájení čipu na odlamovací desku.

Krok 1: Pájení čipu TSSOP na desku Breakout Board

Image
Image
Pájení čipu TSSOP na Breakout Board
Pájení čipu TSSOP na Breakout Board
Pájení čipu TSSOP na Breakout Board
Pájení čipu TSSOP na Breakout Board

Čip TSSOP je třeba připájet k odlamovací desce, abyste jej mohli použít s prkénkem nebo přímo s propojkami DuPont. Pro prototypovací práce jsou příliš malé na to, aby se s nimi dalo přímo pracovat.

Vzhledem k jejich malým rozměrům může být pájení čipu TSSOP nejnáročnější částí tohoto projektu, ale znát trik, jak toho dosáhnout, z něj činí úkol, který zvládne každý. Existuje několik technik, ta níže je to, co jsem udělal.

Strategií je nejprve nalít pájku na stopy prorážecí desky.

  • Nedávejte čip na odlamovací desku, dokud k tomu nedostanete pokyny.
  • První věcí, kterou musíte udělat, je vložit na odlamovací desku velké množství tavidla.
  • Dále pomocí páječky zahřejte pájku a naneste ji na stopy.
  • Na pájku, kterou jste vytékali na stopy, a také na spodní část nožiček čipu, naneste ještě trochu tavidla.
  • Umístěte čip na stopy, kde jste právě umístili pájku a tavidlo. Pinzeta nebo párátko vytvářejí dobré nástroje pro přesné nastavení čipu na místě. Dbejte na správné zarovnání čipu, aby všechny kolíky byly přímo nad stopami. Zarovnejte kolík jeden z čipu s označením pro kolík jeden na vylamovací desce.
  • Pomocí páječky zahřejte jeden z kolíků na konci čipu (buď pin 1, 7, 8 nebo 14) a zatlačte jej do stopy. Pájka, kterou jste dříve použili, se roztaví a bude proudit kolem kolíku.

Podívejte se na video v tomto kroku a podívejte se na ukázku, jak připájet čip k odlamovací desce. Jeden návrh, který mám, se liší od videa, je, že poté, co jste pájili první zarážku kolíku a znovu zkontrolovali zarovnání celého čipu, abyste se ujistili, že všechny kolíky jsou stále na vrcholu stop. Pokud jste trochu mimo, je v tuto chvíli snadné to opravit. Jakmile budete v pohodě, vše vypadá dobře, připájejte další kolík na opačný konec čipu a znovu zkontrolujte zarovnání. Pokud to vypadá dobře, pokračujte a proveďte zbytek kolíků.

Poté, co jste pájili všechny kolíky, video navrhuje použít lupu k ověření vašich připojení. Lepší metodou je použít multimetr ke kontrole kontinuity. Jednu sondu byste měli umístit na nohu čepu a druhou sondu na část desky, kde budete letovat hlavičku (viz druhý obrázek v tomto kroku). Měli byste také zkontrolovat sousední kolíky, abyste se ujistili, že nejsou spojeny kvůli pájce zkratující několik pinů dohromady. Pokud například ověřujete pin 4, zkontrolujte také pin 3 a pin 5. Pin 4 by měl ukazovat kontinuitu, zatímco pin 3 a pin 5 by měl ukazovat otevřený obvod. Jedinou výjimkou je stírač P0W může vykazovat připojení k P0A nebo P0B.

TIPY:

  • Jak je uvedeno v seznamu materiálů, v tomto kroku bude velmi užitečné mít k dispozici určité zvětšení, které vám ponechá volné ruce k práci.
  • Použití aligátorové spony v pomocných rukou k držení odlamovací desky usnadňuje pájení všeho.
  • Napište číslo čipu na kousek krycí pásky a přilepte se ke spodní části odlamovací desky (viz třetí obrázek v této části). Pokud budete v budoucnu potřebovat identifikovat čip, bude mnohem snazší odečíst maskovací pásku. Moje osobní zkušenost je, že jsem na čip dostal trochu tavidla a číslo úplně zmizelo, takže mám jen pásku.

Krok 2: Zapojení

Elektrické vedení
Elektrické vedení

Budete muset připojit Arduino a Digipot podle schématu zapojení. Piny, které se používají, jsou založeny na rozložení Arduino Uno. Pokud používáte jiné Arduino, podívejte se na poslední krok.

Krok 3: Získání knihovny Arduino pro ovládání DigiPotu

Získání knihovny Arduino pro ovládání DigiPotu
Získání knihovny Arduino pro ovládání DigiPotu

Pro zjednodušení programování jsem vytvořil knihovnu, která je k dispozici na Githubu. Přejděte na github.com/gregsrabian/MCP41HVX1 a získejte knihovnu MCP41HVX1. Budete chtít vybrat tlačítko „Klonovat“a poté vybrat „Stáhnout zip“. Nezapomeňte soubor Zip uložit na místo, kde víte, kde je. Praktická umístění jsou na ploše nebo ve složce ke stažení. Jakmile jej importujete do Arduino IDE, můžete jej odstranit z umístění pro stahování.

Krok 4: Import nové knihovny do Arduino IDE

Import nové knihovny do Arduino IDE
Import nové knihovny do Arduino IDE

V Arduino IDE přejděte na „Sketch“, poté vyberte „Include Library“, poté vyberte „Add ZIP Library..“. Zobrazí se nové dialogové okno, které vám umožní vybrat soubor. ZIP, který jste stáhli z GitHubu.

Krok 5: Příklady knihovny

Příklady knihoven
Příklady knihoven

Jakmile přidáte novou knihovnu, všimnete si, že pokud přejdete na „Soubor“, poté vyberete „Příklady“a poté zvolíte „Příklady z vlastních knihoven“, nyní uvidíte v seznamu položku pro MCP41HVX1. Pokud umístíte kurzor nad tento záznam, zobrazí se WLAT, Wiper Control a SHDN, což jsou příklady skic. V tomto Instructable použijeme příklad Wiper Control.

Krok 6: Kontrola zdrojového kódu

#include "MCP41HVX1.h" // Definujte piny použité na Arduinu#definujte WLAT_PIN 8 // Pokud je nastaveno na Low, přeneste a použijte "#define SHDN_PIN 9 // Nastavením vysoké povolíte odporovou síť#definujete CS_PIN 10 // Nastavením na nízkou vyberte čip pro SPI // Definujte některé hodnoty použité pro testovací aplikaci#definujte FORWARD true#definujte REVERSE false#definujte MAX_WIPER_VALUE 255 // Maximální hodnota stěrače MCP41HVX1 Digipot (CS_PIN, SHDN_PIN, WLAT_PIN); neplatné nastavení () { Serial.begin (9600); Serial.print ("Výchozí pozice ="); Serial.println (Digipot. WiperGetPosition ()); // Zobrazení počáteční hodnoty Serial.print ("Set Wiper Position ="); Serial.println (Digipot. WiperSetPosition (0)); // Nastavit polohu stěrače na 0} void loop () {static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition (); // Získejte aktuální polohu stěrače // Určete směr. if (MAX_WIPER_VALUE == nWiper) {bDirection = REVERSE; } else if (0 == nWiper) {bDirection = FORWARD; } // Přesun stěrače digipotu if (FORWARD == bDirection) {nWiper = Digipot. WiperIncrement (); // Směr je vpřed Serial.print ("Increment -"); } else {nWiper = Digipot. WiperDecrement (); // Směr je zpět Serial.print ("Decrement -"); } Serial.print ("Poloha stěrače ="); Serial.println (nWiper); zpoždění (100);}

Krok 7: Pochopení zdrojového kódu a spuštění náčrtu

Image
Image

Tento zdrojový kód je k dispozici v Arduino IDE v nabídce Příklady a vyhledáním MCP41HVX1, který jste právě nainstalovali (viz předchozí krok). V MCP41HVX1 otevřete příklad „Ovládání stěračů“. Nejlepší je použít kód, který je součástí knihovny, jako by existovaly nějaké opravy chyb, které budou aktualizovány.

Příklad Wiper Control ukazuje následující API z knihovny MCP41HVX1:

  • Konstruktor MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin)
  • WiperGetPosition ()
  • WiperSetPosition (byte byWiper)
  • WiperIncrement ()
  • WiperDecrement ()

Pokud používáte 7bitový čip, v ukázkovém zdrojovém kódu nezapomeňte nastavit MAX_WIPER_VALUE na 127. Výchozí hodnota je 255, což je pro 8bitové čipy. Pokud provedete změny v ukázce, Arduino IDE vás donutí vybrat nový název projektu, protože vám nedovolí aktualizovat ukázkový kód. Toto je očekávané chování.

Pokaždé ve smyčce se stěrač zvýší o jeden krok nebo sníží o jeden krok v závislosti na směru, kterým jde. Pokud je směr nahoru a dostane se na MAX_WIPER_VALUE, obrátí směr. Pokud dosáhne 0, znovu se obrátí.

Během běhu skici se aktualizuje sériový monitor s aktuální polohou stěrače.

Abyste viděli změnu odporu, budete muset použít sadu multimetrů pro čtení ohmů. Umístěte sondy měřiče na P0B (kolík 11) a P0W (kolík 12) na digipot, abyste viděli změnu odporu při běhu aplikace. Všimněte si, že hodnota odporu neklesne až na nulu, protože uvnitř čipu je nějaký vnitřní odpor, ale dostane se blízko 0 ohmů. Pravděpodobně také nepůjde na maximální hodnotu, ale bude blízko.

Při sledování videa vidíte na multimetru, jak odpor roste, dokud nedosáhne maximální hodnoty, a poté začne klesat. Čipem použitým ve videu je MCP41HV51-104E/ST, což je 8bitový čip s maximální hodnotou 100 kOhm.

Krok 8: Odstraňování problémů

Pokud věci nefungují podle očekávání, je třeba se podívat na několik věcí.

  • Ověřte zapojení. Vše musí být správně připojeno. Ujistěte se, že používáte úplné schéma zapojení, jak je uvedeno v tomto Instructable. V README, zdrojovém kódu knihovny a níže v tomto Instructable jsou alternativní schémata zapojení, ale dodržujte to, co je zdokumentováno výše v kroku Wiring výše.
  • Ujistěte se, že každý kolík vašeho digitpotu je připájen k odlamovací desce. Používání vizuální kontroly není dost dobré. Ujistěte se, že ověřujete pomocí funkce kontinuity multimetru, abyste ověřili, že všechny piny na digipotu jsou elektricky připojeny k odpojovací desce a že neexistuje křížové spojení kolíků z pájky, které by mohly být přemostěny přes stopy.
  • Pokud sériový monitor ukazuje, že se při spuštění náčrtu mění poloha stěrače, ale hodnota odporu se nemění, je to indikátor, že WLAT nebo SHDN nevytváří správné připojení k rozbíjecí desce nebo propojovacím stěračům pro WLAT nebo SHDN nejsou správně připojeny k Arduinu.
  • Ujistěte se, že používáte sekundární napájecí zdroj, který je stejnosměrný mezi 10 a 36 volty.
  • Měřením napětí na multimetru zajistěte, aby 10 až 36 voltový napájecí zdroj fungoval.
  • Zkuste použít původní skicu. Pokud jste provedli nějaké změny, možná jste uvedli chybu.
  • Pokud žádný z kroků pro řešení potíží nepomohl, zkuste jiný čip digipot. Naštěstí jste jich koupili několik a současně je připájili k oddělovací desce TSSOP, takže by mělo jít jen o výměnu jedné za druhou. Měl jsem špatný čip, což mi způsobilo docela frustraci a toto byla oprava.

Krok 9: Interní a další informace

Alternativní schéma zapojení
Alternativní schéma zapojení

Další informace:

Další informace naleznete v datovém listu MCP41HVX1.

Úplná dokumentace k celé knihovně MCP41HVX1 je k dispozici v souboru README.md, který je součástí stahování knihovny. Tento soubor je zapsán známkou dolů a lze jej zobrazit s náležitým formátováním v Githubu (podívejte se na konec stránky) nebo pomocí editoru značek dolů.

Komunikace mezi Arduino a DigiPot:

Arduino komunikuje s DigiPot pomocí SPI. Poté, co knihovna odešle příkaz polohy stěrače, jako je WiperIncrement, WiperDecrement nebo WiperSetPosition, pak zavolá WiperGetPosition, aby zjistil polohu stírání z čipu. Hodnota vrácená z těchto příkazů Wiper je poloha stěrače, jak ji vidí čip, a lze ji použít k ověření, že se stěrač přesunul na očekávané místo.

Pokročilá funkčnost (WLAT a SHDN)

Tyto pokročilé funkce nejsou v příkladu "Wiper Control" ukázány. V knihovně jsou k dispozici rozhraní API pro ovládání WLAT a SHDN. S knihovnou jsou také ukázkové skici WLAT a SHDN (na stejném místě jako skica Wiper Control).

SHDN (vypnutí)

SHDN se používá k deaktivaci nebo povolení sítě odporů. Nastavením SHDN na low zakáže a high povolí odporovou síť. Když je síť odporů deaktivována, P0A (kolík DigiPot 13) je odpojen a P0B (kolík DigiPot 11) je připojen k P0W (kolík DigiPot 12). Mezi P0B a P0W bude malý odpor, takže váš měřič nebude číst 0 ohmů.

Pokud vaše aplikace nepotřebuje ovládat SHDN, můžete ji připojit přímo na HIGH (viz alternativní schéma zapojení). Budete muset použít správný konstruktor nebo předat MCP41HVX1_PIN_NOT_CONFIGURED konstruktoru, abyste označili, že SHDN je pevně zapojeno. Je důležité si uvědomit, že pokud se řídíte příkladem, musíte použít úplné schéma zapojení (viz krok zapojení výše).

WLAT (západka zápisu)

Interní architektura jsou dvě komponenty na jednom čipu. Jednou z komponent je rozhraní SDI a registr pro uchování hodnoty stěrače. Druhou součástí je samotná odporová síť. WLAT spojuje obě vnitřní součásti dohromady.

Když je WLAT nastaveno na NÍZKOU, jsou jakékoli informace o příkazu nastavené polohy stíračů předávány přímo do sítě odporů a poloha stírání je aktualizována.

Pokud je WLAT nastaveno na HIGH, informace o poloze stěrače předávané prostřednictvím SPI jsou drženy ve vnitřním registru, ale nejsou předávány do sítě odporů, a proto se poloha stěrače neaktualizuje. Jakmile je WLAT nastaven na LOW, hodnota je přenesena z registru do odporové sítě.

WLAT je užitečné, pokud používáte více digipotů, které potřebujete synchronizovat. Strategií je nastavit WLAT na HIGH na všech digipotech a poté nastavit hodnotu stěrače na všech žetonech. Jakmile je hodnota stěrače odeslána všem digipotům, lze WLAT nastavit na LOW na všech zařízeních současně, takže všechny pohybují stěrači současně.

Pokud ovládáte pouze jeden DigiPot nebo máte více, ale nemusí být synchronizovány, pravděpodobně tuto funkci nebudete potřebovat, a proto můžete připojit WLAT přímo na LOW (viz alternativní schéma zapojení). Budete muset použít správný konstruktor nebo předat MCP41HVX1_PIN_NOT_CONFIGURED konstruktoru, abyste označili, že WLAT je pevně zapojen. Je důležité si uvědomit, že pokud se řídíte příkladem, musíte použít úplné schéma zapojení (viz krok zapojení výše).

Krok 10: Alternativní schéma zapojení

Elektrické vedení

Místo připojení k digitálnímu pinu máte možnost připojit WLAT z digpotu přímo na LOW / GND. Pokud to uděláte, nebudete moci ovládat WLAT. Máte také možnost připojení SHDN přímo k HIGH namísto digitálního pinu. Pokud tak učiníte, nebudete moci ovládat SHDN.

WLAT a SHDN jsou na sobě nezávislé, takže můžete jeden zapojit napevno a druhý připojit k digitálnímu pinu, oba k pevnému vodiči nebo oba připojit k digitálním pinům, aby je bylo možné ovládat. Podívejte se na alternativní schéma zapojení těch, které chcete zapojit na tvrdý drát, a podívejte se zpět na hlavní schéma zapojení v kroku 2, kde je uvedeno zapojení k ovládatelným digitálním pinům.

Konstruktéři

Ve třídě MCP41HVX jsou tři konstruktory. Budeme diskutovat o dvou z nich. Všechny jsou zdokumentovány v souboru README.md, takže pokud vás zajímá třetí konstruktor, nahlédněte do dokumentace.

  • MCP41HVX1 (int nCSPin) - tento konstruktor použijte, pouze pokud jsou WLAT i SHDN pevně zapojeny.
  • MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin) - Tento konstruktor použijte, pokud jsou WLAT nebo SHDN pevně zapojeny. Pokud je pin pevně zapojen, nebo pokud je pin připojen k digitálnímu pinu, předejte konstantu MCP41HVX1_PIN_NOT_CONFIGURED.

nCSPin musí být připojen k digitálnímu pinu. Je neplatné předat MCP41HVX1_PIN_NOT_CONFIGURED konstruktoru pro nCSPin.

Co když nepoužívám Arduino Uno?

Arduino ke komunikaci s digipotem používá SPI. Piny SPI jsou specifické piny na desce Arduino. Piny SPI na Uno jsou:

  • SCK - pin 13 na Uno připojen ke kolíku 2 na digipotu
  • MOSI - pin 11 na Uno připojen ke kolíku 4 na digipotu
  • MISO - pin 12 na Uno připojen ke kolíku 5 na digipotu

Pokud používáte Arduino, které není Uno, budete muset zjistit, který pin je SCK, MOSI a MISO, a připojit je k digipotu.

Ostatní kolíky použité v náčrtu jsou běžné digitální kolíky, takže jakýkoli digitální kolík bude fungovat. Budete muset upravit skicu, abyste určili piny, které si vyberete na desce Arduino, kterou používáte. Pravidelné digitální piny jsou:

  • CS - pin 10 na Uno připojen ke kolíku 3 na digipotu (aktualizujte CS_PIN v náčrtu novou hodnotou)
  • WLAT - pin 8 na Uno připojen ke kolíku 6 na digipotu (aktualizujte WLAT_PIN ve skice novou hodnotou)
  • SHDN - pin 9 na Uno připojen ke kolíku 7 na digipotu (aktualizace SHDN_PIN v náčrtu s novou hodnotou)

Doporučuje: