Sadržaj:

MCP41HVX1 digitalni potenciometar za Arduino: 10 koraka (sa slikama)
MCP41HVX1 digitalni potenciometar za Arduino: 10 koraka (sa slikama)

Video: MCP41HVX1 digitalni potenciometar za Arduino: 10 koraka (sa slikama)

Video: MCP41HVX1 digitalni potenciometar za Arduino: 10 koraka (sa slikama)
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, Svibanj
Anonim
MCP41HVX1 digitalni potenciometar za Arduino
MCP41HVX1 digitalni potenciometar za Arduino

Obitelj digitalnih potenciometara MCP41HVX1 (ili DigiPots) su uređaji koji oponašaju funkciju analognog potenciometra i kontroliraju se putem SPI -ja. Primjer aplikacije bila bi zamjena gumba za glasnoću na vašem stereo uređaju s DigiPotom kojim upravlja Arduino. Ovo pretpostavlja da je kontrola glasnoće na vašem stereo uređaju potenciometar, a ne rotacijski davač.

MCP41HVX1 su malo drugačiji od ostalih DigiPota po tome što imaju dizajn podijeljenih šina. To znači da, iako se sam DigiPot može kontrolirati izlaznim naponom Arduina, signal koji se propušta kroz otporničku mrežu radi s daleko većim rasponom napona (do 36 volti). Većina DigiPotova koji se mogu kontrolirati s 5 volti ograničeni su na 5 volti u čitavoj mreži otpornika što ograničava njihovu upotrebu za naknadno ugradnju postojećeg kruga koji radi na većem naponu, poput onog što biste pronašli u automobilu ili čamcu.

Obitelj MCP41HVX1 sastoji se od sljedećih čipova:

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

7 -bitni čipovi omogućuju 128 koraka u mreži otpornika, a 8 -bitni čipovi omogućuju 256 koraka u mreži otpornika. To znači da 8 -bitni čipovi dopuštaju dvostruko veću vrijednost otpora potenciometra.

Pribor

  • Odaberite odgovarajući čip MCP41HVX1 s gornjeg popisa. Čip koji odaberete temelji se na rasponu otpora potrebnom za vašu aplikaciju. Ovaj Instructable temelji se na verzijama TSSOP 14 paketa čipa, pa slijedite zajedno s ovim vodičem odaberite bilo koji čip na popisu osim MCP41HV31-103E/MQ koji je QFN paket. Preporuča se nabaviti nekoliko dodatnih čipova jer sam naišao na loš, a oni su jeftini. Ja sam svoj naručio od Digi-Key-a.
  • Sekundarno napajanje istosmjernom strujom od 10 do 36 volti. U mom primjeru koristim istosmjerno napajanje od 17 V zidnih bradavica iz kutije starih izvora napajanja.
  • Lemni tok
  • Lemilica
  • Lem
  • Pinceta i / ili čačkalica
  • TSSOP 14 -pinska ploča za probijanje - Amazon - QLOUNI 40 kom PCB proto ploče SMD u DIP pretvarač adapterskih ploča TQFP (32 44 48 64 84 100) SOP SSOP TSSOP 8 10 14 16 20 23 24 28 (Asortiman veličina. Dosta je dostupno za više projekata)
  • Kvantificirajte 2 - 7 pin zaglavlja - Amazon - DEPEPE 30 kom 40 pin 2,54 mm muški i ženski pin zaglavlja za Arduino prototipni štit - (potrebno izrezati na veličinu. Ima dosta u paketu za više projekata)
  • Arduino Uno - ako ga nemate, predlažem da nabavite službenu ploču. Imao sam pomiješanu sreću s neslužbenim verzijama. Digi -ključ - Arduino Uno
  • Višemetarski koji može mjeriti otpor i provjeravati kontinuitet
  • Kratkospojne žice
  • Oglasna ploča
  • Toplo se preporučuje luka bez upotrebe ruku jer su TSSOP čipovi vrlo mali. Za lemljenje i testiranje s multimetrom trebat će vam obje ruke. Koristim par Harbour Freight 3x povećala na kopčanje na dioptrijskim naočalama i slobodno stajaće / zglobno povećalo. Druge opcije su par jeftinih čitača iz diskontne ili dolarske trgovine. Čitače možete čak nositi preko dioptrijskih naočala ili nabaviti dva para čitača (jedan na vrhu drugog) ovisno o tome koliko je vaš vid dobar (ili loš). Ako udvostručujete naočale, budite oprezni jer će vam vid biti vrlo ograničen pa ih skinite prije nego učinite bilo što drugo. Također budite posebno oprezni pri lemljenju.
  • Još jedna stavka koja nije potrebna, ali se jako preporučuje je Hands Freight Hands Hands. To su kopče od aligatora pričvršćene na metalnu podlogu. Dostupni su od mnogih drugih dobavljača na internetu, pod različitim imenima robnih marki. To je vrlo korisno pri lemljenju čipa na ploču za razbijanje.

Korak 1: Lemljenje TSSOP čipa na ploču za razbijanje

Image
Image
Lemljenje TSSOP čipa na ploču za probijanje
Lemljenje TSSOP čipa na ploču za probijanje
Lemljenje TSSOP čipa na ploču za probijanje
Lemljenje TSSOP čipa na ploču za probijanje

TSSOP čip mora biti lemljen na ploču za razbijanje tako da ga možete koristiti s matičnom pločom ili izravno s DuPont kratkospojnicima. Za izradu prototipova oni su premali za izravni rad.

Zbog svoje male veličine, lemljenje TSSOP čipa može biti najizazovniji dio ovog projekta, ali poznavanje trika u tome čini ga zadatkom koji svatko može postići. Postoji nekoliko tehnika, ova dolje je ono što sam ja napravio.

Strategija je prvo lemiti na tragove razbijačke ploče.

  • Ne stavljajte čip na ploču za razbijanje dok ne dobijete upute.
  • Prvo što trebate učiniti je staviti veliku količinu fluksa na ploču za razbijanje.
  • Zatim pomoću svog lemilice zagrijte malo lema i protjecite ga do tragova.
  • Stavite još malo fluksa na lemljenje koje ste istjecali na tragove, kao i na dno nogu čipa.
  • Stavite čip na tragove na mjesto gdje ste upravo stavili lemljenje i fluks. Pinceta ili čačkalica čine dobar alat za precizno postavljanje čipa na mjesto. Pazite da čip pravilno poravnate tako da sve pinove budu izravno iznad tragova. Poravnajte pin jedan čipa s oznakom za pin pin na ploči za izbijanje.
  • Pomoću lemilice zagrijte jedan od igala na kraju čipa (bilo iglu 1, 7, 8 ili 14) utisnuvši ga u trag. Lem koji ste prethodno nanijeli će se otopiti i teći oko iglice.

Pogledajte video u ovom koraku kako biste vidjeli demonstraciju kako lemiti čip na ploču za razbijanje. Jedan moj prijedlog koji se razlikuje od videa je taj da nakon što ste zalemili prvi pin stop i ponovno provjerili poravnanje cijelog čipa kako biste bili sigurni da su sve igle još uvijek na vrhu tragova. Ako ste malo isključeni, u ovom je trenutku lako ispraviti. Kad vam bude udobno, sve izgleda dobro, lemite još jedan pin na suprotnom kraju čipa i ponovno provjerite poravnanje. Ako to izgleda dobro, učinite sve ostalo.

Nakon što zalemite sve pinove, videozapis predlaže korištenje povećala za provjeru vaših veza. Bolja metoda je korištenje multimetra za provjeru kontinuiteta. Morate postaviti jednu sondu na nožicu igle, a drugu sondu na dio ploče na kojem ćete zalemiti zaglavlje (pogledajte drugu sliku u ovom koraku). Također biste trebali provjeriti susjedne pinove kako biste bili sigurni da nisu povezani zbog lemljenja koje kratkim spojem spaja nekoliko pinova. Na primjer, ako provjeravate pin 4, provjerite i pin 3 i pin 5. Pin 4 trebao bi pokazivati kontinuitet, dok pin 3 i pin 5 trebaju pokazati prekinuti krug. Jedina iznimka je da brisač P0W može pokazati povezanost s P0A ili P0B.

SAVJETI:

  • Kao što je spomenuto na popisu materijala, dostupnost povećala koja ostavlja slobodne ruke za rad bit će od velike pomoći u ovom koraku.
  • Korištenje kopče od aligatora pomaže rukama da drže ploču za razbijanje čini lemljenje svega pomalo lakšim.
  • Napišite broj čipa na komad maskirne trake i zalijepite se za dno ploče za razbijanje (pogledajte treću sliku u ovom odjeljku). Ako u budućnosti trebate identificirati čip, bit će mnogo lakše očitati maskirnu traku. Moje osobno iskustvo je da sam dobio malo fluksa na čipu i da se broj potpuno skinuo pa sve što imam je traka.

Korak 2: Ožičenje

Ožičenje
Ožičenje

Morat ćete spojiti Arduino i Digipot kako je prikazano na shemi ožičenja. Igle koje se koriste temelje se na izgledu Arduino Uno. Ako koristite drugi Arduino, pogledajte zadnji korak.

Korak 3: Dobivanje Arduino knjižnice za upravljanje DigiPotom

Dobivanje Arduino knjižnice za upravljanje DigiPotom
Dobivanje Arduino knjižnice za upravljanje DigiPotom

Radi pojednostavljenja programiranja stvorio sam biblioteku koja je dostupna na Githubu. Idite na github.com/gregsrabian/MCP41HVX1 da biste dobili biblioteku MCP41HVX1. Morat ćete odabrati gumb "Kloniraj", a zatim odaberite "Preuzmi Zip". Spremite Zip datoteku na mjesto za koje znate gdje se nalazi. Radna površina ili mapa za preuzimanje zgodna su mjesta. Nakon što ga uvezete u Arduino IDE, možete ga izbrisati s mjesta preuzimanja.

Korak 4: Uvoz nove knjižnice u Arduino IDE

Uvoz nove knjižnice u Arduino IDE
Uvoz nove knjižnice u Arduino IDE

Unutar Arduino IDE idite na "Sketch", zatim odaberite "Include Library", zatim odaberite "Add ZIP Library..". Pojavit će se novi dijaloški okvir koji vam omogućuje da odaberete. ZIP datoteku koju ste preuzeli s GitHub -a.

Korak 5: Primjeri knjižnice

Primjeri knjižnice
Primjeri knjižnice

Nakon što ste dodali novu biblioteku primijetit ćete da ako odete na "Datoteka", a zatim odaberete "Primjeri", a zatim odaberete "Primjeri iz prilagođenih knjižnica", sada ćete na popisu vidjeti unos za MCP41HVX1. Ako zadržite pokazivač miša iznad tog unosa, vidjet ćete WLAT, Kontrolu brisača i SHDN koji su primjeri skica. U ovom Instructableu koristit ćemo primjer kontrole brisača.

Korak 6: Ispitivanje izvornog koda

#include "MCP41HVX1.h" // Definirajte pinove koji se koriste na Arduinu#define WLAT_PIN 8 // Ako je postavljeno na Low "prijenos i upotreba" #define SHDN_PIN 9 // Postavite visoko za omogućavanje mreže otpornika#definirajte CS_PIN 10 // Postavite na nisko za odabir čipa za SPI // Definirajte neke vrijednosti koje se koriste za testnu aplikaciju#define FORWARD true#define REVERSE false#define MAX_WIPER_VALUE 255 // Maksimalna vrijednost brisača u vrijednosti MCP41HVX1 Digipot (CS_PIN, SHDN_PIN, WLAT_PIN); void setup () { Serial.begin (9600); Serial.print ("Početna pozicija ="); Serial.println (Digipot. WiperGetPosition ()); // Prikaz početne vrijednosti Serial.print ("Postavi položaj brisača ="); Serial.println (Digipot. WiperSetPosition (0)); // Postavite položaj brisača na 0} void loop () {static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition (); // Dobivanje trenutnog položaja brisača // Određivanje smjera. if (MAX_WIPER_VALUE == nWiper) {bDirection = REVERSE; } else if (0 == nWiper) {bDirection = FORWARD; } // Premjesti brisač digipota if (FORWARD == bDirection) {nWiper = Digipot. WiperIncrement (); // Smjer je naprijed Serial.print ("Increment -"); } else {nWiper = Digipot. WiperDecrement (); // Smjer je unatrag Serial.print ("Decrement -"); } Serial.print ("Položaj brisača ="); Serial.println (nWiper); odgoda (100);}

Korak 7: Razumijevanje izvornog koda i pokretanje skice

Image
Image

Ovaj izvorni kod dostupan je u Arduino IDE -u ako odete na izbornik Primjeri i pronađete MCP41HVX1 koji ste upravo instalirali (pogledajte prethodni korak). Unutar MCP41HVX1 otvorite primjer "Kontrola brisača". Najbolje je koristiti kôd koji je uključen u knjižnicu jer će, ako postoje ispravci programskih pogrešaka, biti ažuriran.

Primjer kontrole brisača prikazuje sljedeće API -je iz biblioteke MCP41HVX1:

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

Unutar uzorka izvornog koda, postavite MAX_WIPER_VALUE na 127 ako koristite 7 -bitni čip. Zadana vrijednost je 255 što je za 8 -bitne čipove. Ako promijenite uzorak, Arduino IDE će vas prisiliti da odaberete novo ime za projekt jer vam neće dopustiti ažuriranje primjera koda. Ovo je očekivano ponašanje.

Svaki put kroz petlju brisač će se povećavati za jedan korak ili smanjivati za jedan korak, ovisno o smjeru u kojem ide. Ako je smjer gore i dođe do MAX_WIPER_VALUE, promijenit će smjer. Ako pogodi 0, opet će se preokrenuti.

Kako skica radi, serijski monitor ažurira se trenutnim položajem brisača.

Da biste vidjeli promjenu otpora, morat ćete koristiti set multimetara za čitanje oma. Stavite sonde mjerača na P0B (pin 11) i P0W (pin 12) na digipot kako biste vidjeli kako se otpor mijenja dok aplikacija radi. Imajte na umu da vrijednost otpora neće ići sve do nule jer unutar čipa postoji neki unutarnji otpor, ali će se približiti 0 ohma. Ni najvjerojatnije neće ići na maksimalnu vrijednost, ali će biti blizu.

Dok gledate video, možete vidjeti kako multimetar pokazuje otpor koji raste sve dok ne dosegne maksimalnu vrijednost, a zatim se počinje smanjivati. Čip koji se koristi u videu je MCP41HV51-104E/ST koji je 8-bitni čip sa maksimalnom vrijednošću od 100k ohma.

Korak 8: Rješavanje problema

Ako stvari ne funkcioniraju prema očekivanjima, evo nekoliko stvari na koje treba obratiti pozornost.

  • Provjerite svoje ožičenje. Sve mora biti ispravno povezano. Provjerite koristite li cijeli dijagram ožičenja kako je navedeno u ovom Uputu. Postoje zamjenski dijagrami ožičenja predstavljeni u README -u, izvornom kodu knjižnice i dolje u ovom Uputu, ali držite se onoga što je gore dokumentirano u gornjem koraku ožičenja.
  • Uvjerite se da je svaki pin na vašem digitalnom mjestu zalemljen na ploču za razbijanje. Korištenje vizualnog pregleda nije dovoljno dobro. Obavezno provjerite pomoću funkcije kontinuiteta vašeg multimetra kako biste provjerili jesu li svi pinovi na digipotu električno spojeni na probojnu ploču i nema li međusobnog povezivanja pinova lemljenja koji su možda premostili tragove.
  • Ako serijski monitor pokazuje da se položaj brisača mijenja kada pokrenete skicu, ali se vrijednost otpora ne mijenja, to je pokazatelj da WLAT ili SHDN ne uspostavljaju odgovarajuću vezu s probojnom pločom ili brisačima za WLAT ili SHDN nisu ispravno spojeni na Arduino.
  • Provjerite koristite li sekundarno napajanje istosmjernim naponom između 10 i 36 volti.
  • Provjerite radi li napajanje od 10 do 36 volti mjerenjem napona multimetrom.
  • Pokušajte koristiti izvornu skicu. Ako ste unijeli bilo kakve promjene, možda ste unijeli pogrešku.
  • Ako nijedan od koraka za rješavanje problema nije pomogao, isprobajte drugi digipot čip. Nadamo se da ste kupili nekoliko i lemili ih u isto vrijeme na TSSOP ploču za razbijanje pa bi trebalo biti samo pitanje zamjene jedne za drugu. Imao sam loš čip koji me izazvao prilično frustracije i ovo je bio popravak.

Korak 9: Interni i dodatne informacije

Alternativni dijagram ožičenja
Alternativni dijagram ožičenja

Daljnje informacije:

Dodatne informacije možete pronaći u podatkovnom listu MCP41HVX1.

Potpuna dokumentacija o cijeloj knjižnici MCP41HVX1 dostupna je u datoteci README.md koja je dio preuzimanja knjižnice. Ova je datoteka zapisana oznakom dolje i može se pregledati odgovarajućim oblikovanjem unutar Github -a (pogledajte pri dnu stranice) ili pomoću preglednika s oznakama prema dolje / editor.

Komunikacija između Arduina i DigiPota:

Arduino komunicira s DigiPotom pomoću SPI -ja. Nakon što knjižnica pošalje naredbu o položaju brisača, kao što su WiperIncrement, WiperDecrement ili WiperSetPosition, tada poziva WiperGetPosition da dobije položaj brisača iz čipa. Vrijednost koju vraćaju ove naredbe brisača je položaj brisača onako kako ga čip vidi i može se koristiti za provjeru je li brisač premješten na očekivano mjesto.

Napredne funkcionalnosti (WLAT i SHDN)

Ove napredne funkcije nisu prikazane u primjeru "Kontrola brisača". U knjižnici su dostupni API -ji za kontrolu WLAT -a i SHDN -a. Tu su i primjeri skica WLAT -a i SHDN -a (na istom mjestu kao i skica za brisače) s bibliotekom.

SHDN (isključivanje)

SHDN se koristi za onemogućavanje ili omogućavanje otporničke mreže. Postavljanje SHDN na nisko onemogućuje i visoko omogućuje otporničku mrežu. Kad je otpornička mreža onemogućena, P0A (DigiPot pin 13) je isključen, a P0B (DigiPot pin 11) spojen na P0W (DigiPot pin 12). Između P0B i P0W bit će mali otpor pa vaš mjerač neće očitati 0 ohma.

Ako vaša aplikacija nema potrebu za kontrolom SHDN -a, možete je spojiti izravno na HIGH (pogledajte alternativni dijagram ožičenja). Morat ćete koristiti ispravan konstruktor ili proslijediti u MCP41HVX1_PIN_NOT_CONFIGURED do konstruktora kako biste naznačili da je SHDN ožičen. Važno je napomenuti da ako slijedite ovaj primjer morate koristiti cijeli dijagram ožičenja (pogledajte gornji korak ožičenja).

WLAT (zapor za upisivanje)

Unutarnja arhitektura sastoji se od dvije komponente na jednom čipu. Jedna od komponenti je SDI sučelje i registar za držanje vrijednosti brisača. Druga komponenta je sama mreža otpornika. WLAT povezuje obje unutarnje komponente zajedno.

Kada je WLAT postavljen na LOW, bilo koja postavljena naredba o položaju brisača šalje se izravno u mrežu otpornika i položaj brisača se ažurira.

Ako je WLAT postavljen na HIGH, podaci o položaju brisača proslijeđeni kroz SPI čuvaju se u unutarnjem registru, ali se ne prosljeđuju u mrežu otpornika pa se stoga položaj brisača neće ažurirati. Nakon što je WLAT postavljen na LOW, vrijednost se prenosi iz registra u mrežu otpornika.

WLAT je koristan ako koristite više digipota koje morate sinkronizirati. Strategija je postaviti WLAT na HIGH na svim digipotovima, a zatim postaviti vrijednost brisača na sve čipove. Nakon što je vrijednost brisača poslana na sve digipote, WLAT se može postaviti na LOW na svim uređajima istovremeno, tako da svi pomiču brisače u isto vrijeme.

Ako kontrolirate samo jedan DigiPot ili ih imate više, ali ih ne morate držati sinkronizirane, najvjerojatnije vam neće trebati ova funkcija, pa stoga možete spojiti WLAT izravno na LOW (pogledajte alternativni dijagram ožičenja). Morat ćete koristiti ispravan konstruktor ili proslijediti u MCP41HVX1_PIN_NOT_CONFIGURED do konstruktora kako biste naznačili da je WLAT ožičen. Važno je napomenuti da ako slijedite ovaj primjer morate koristiti cijeli dijagram ožičenja (pogledajte gornji korak ožičenja).

Korak 10: Zamjenski dijagram ožičenja

Ožičenje

Imate mogućnost povezivanja WLAT -a s digpota izravno na LOW / GND umjesto spajanja na digitalni pin. Ako to učinite, nećete moći kontrolirati WLAT. Također imate mogućnost povezivanja SHDN -a izravno na HIGH umjesto na digitalni pin. Ako to učinite, nećete moći kontrolirati SHDN.

WLAT i SHDN međusobno su neovisni pa možete spojiti jednu žicu, a drugu spojiti digitalnom iglom, oboje žičanom žicom ili oboje spojiti na digitalne pinove tako da se njima može upravljati. Pogledajte alternativni dijagram ožičenja za one koje želite spojiti žicom i vratite se na glavni dijagram ožičenja u koraku 2 za ožičenje na digitalne pinove kojima se može upravljati.

Konstruktori

U klasi MCP41HVX postoje tri konstruktora. Razgovarat ćemo o dva od njih. Svi su dokumentirani u datoteci README.md pa ako ste zainteresirani za treći konstruktor, pogledajte dokumentaciju.

  • MCP41HVX1 (int nCSPin) - koristite ovaj konstruktor samo ako su i WLAT i SHDN spojeni žicom.
  • MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin) - Koristite ovaj konstruktor ako su WLAT ili SHDN ožičeni. Prenesite konstantu MCP41HVX1_PIN_NOT_CONFIGURED ako je pin čvrsto ožičen ili broj pina ako je spojen na digitalni pin.

nCSPin mora biti spojen na digitalni pin. Prosljeđivanje MCP41HVX1_PIN_NOT_CONFIGURED konstruktoru za nCSPin nije valjano.

Što ako ne koristim Arduino Uno?

Arduino koristi SPI za komunikaciju s digipotom. SPI pinovi su specifični pinovi na Arduino ploči. SPI pinovi na Uno -u su:

  • SCK - pin 13 na Uno spojen na pin 2 na digipotu
  • MOSI - pin 11 na Uno spojen na pin 4 na digipotu
  • MISO - pin 12 na Uno spojen na pin 5 na digipotu

Ako koristite Arduino koji nije Uno, morat ćete otkriti koji je pin SCK, MOSI i MISO te ih spojiti na digipot.

Ostali pinovi koji se koriste na skici su obični digitalni pinovi pa će svaki digitalni pin raditi. Morat ćete izmijeniti skicu kako biste odredili igle koje odaberete na Arduino ploči koju koristite. Uobičajeni digitalni pinovi su:

  • CS - pin 10 na Uno spojen na pin 3 na digipotu (ažurirajte CS_PIN u skici novom vrijednošću)
  • WLAT - pin 8 na Uno spojen na pin 6 na digipotu (ažurirajte WLAT_PIN u skici novom vrijednošću)
  • SHDN - pin 9 na Uno spojen na pin 7 na digipotu (ažurirajte SHDN_PIN u skici novom vrijednošću)

Preporučeni: