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, Juli
Anonim
MCP41HVX1 Digitalni potenciometar za Arduino
MCP41HVX1 Digitalni potenciometar za Arduino

Porodica digitalnih potenciometara MCP41HVX1 (poznatih i kao 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 jačine zvuka 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 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.

Porodicu MCP41HVX1 čine sljedeći čipovi:

  • MCP41HV31-104E/ST - 100k ohm (7 bita)
  • MCP41HV31-503E/ST - 50k ohm (7 bita)
  • MCP41HV31-103E/ST - 10k ohm (7 bita)
  • MCP41HV31-502E/ST - 5k ohm (7 bita)
  • MCP41HV31-103E/MQ - 10k ohm (7 bita)
  • MCP41HV51-104E/ST - 100k ohm (8 bita)
  • MCP41HV51-503E/ST - 50k ohm (8 bita)
  • MCP41HV51T -503E/ST - 50k ohm (8 bita)
  • MCP41HV51-103E/ST - 10k ohm (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 više vrijednosti otpora potenciometra.

Supplies

  • Odaberite odgovarajući čip MCP41HVX1 sa gornje liste. Čip koji odaberete temelji se na rasponu otpora potrebnom za vašu aplikaciju. Ovaj Instructable je baziran na TSSOP 14 paketnim verzijama čipa, pa slijedite zajedno s ovim vodičem odaberite bilo koji čip sa liste osim MCP41HV31-103E/MQ koji je QFN paket. Preporučuje se nabavka nekoliko dodatnih čipova jer sam naišao na loš i jeftini su. 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 fluks
  • Lemilica
  • Solder
  • Pinceta i / ili čačkalica
  • TSSOP 14 -polna razvodna ploča - Amazon - QLOUNI 40 kom PCB protokole SMD na 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. Dostupno u više projekata)
  • Kvantificiraj 2 - 7 iglična zaglavlja - Amazon - DEPEPE 30 kom 40 pin 2,54 mm muški i ženski pin zaglavlja za Arduino prototipni štit - (potrebno je izrezati 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 pomešanu sreću sa nezvaničnim verzijama. Digi -Key - Arduino Uno
  • Višemetarski koji može mjeriti otpor i provjeravati kontinuitet
  • Žice za kratkospojnike
  • Breadboard
  • 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 lupa sa kopčom na dioptrijskim naočalama i slobodno stojeć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čara ili nabaviti dva para čitača (jedan na vrhu drugog), ovisno o tome koliko je vaš vid dobar (ili loš). Ako udvostručujete naočare, budite oprezni jer će vam vid biti vrlo ograničen pa ih skinite prije nego učinite bilo što drugo. 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, kao i pod različitim robnim markama. 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 odbojnu ploču
Lemljenje TSSOP čipa na odbojnu ploču
Lemljenje TSSOP čipa na odbojnu ploču
Lemljenje TSSOP čipa na odbojnu ploču

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

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

Strategija je da se lem prvo prelije na tragove razbijačke ploče.

  • Ne stavljajte čip na ploču za razbijanje dok se to ne uputi.
  • 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 istjecite ga do tragova.
  • Stavite još malo fluksa na lemljenje koje ste istekli na tragove, kao i na dno nogu čipa.
  • Stavite čip na tragove na mjesto gdje ste upravo stavili lem i fluks. Pinceta ili čačkalica su dobri alati za precizno postavljanje čipa. Pobrinite se da čip pravilno poravnate tako da su sve pinove točno iznad tragova. Poravnajte pin jedan čipa s oznakom za pin 1 na ploči za izbijanje.
  • Pomoću lemilice zagrijte jednu iglu na kraju čipa (bilo iglu 1, 7, 8 ili 14) utisnuvši je 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 ponovo provjerili poravnanje cijelog čipa kako biste bili sigurni da su sve pinove još uvijek na vrhu tragova. Ako ste malo isključeni, u ovom trenutku je lako ispraviti. Kad vam bude udobno, sve izgleda dobro, lemite još jedan pin na suprotnom kraju čipa i ponovo provjerite poravnanje. Ako to izgleda dobro, nastavite s preostalim iglama.

Nakon što zalemite sve pinove, videozapis predlaže korištenje lupe za provjeru vaših veza. Bolja metoda je korištenje multimetra za provjeru kontinuiteta. Jednu sondu trebate postaviti 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 bi trebao pokazivati kontinuitet, dok pin 3 i pin 5 trebaju prikazivati prekinuti krug. Jedini izuzetak je brisač P0W koji može pokazati povezanost s P0A ili P0B.

SAVJETI:

  • Kao što je spomenuto na popisu materijala, dostupnost povećavanja koje 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 lično iskustvo je da sam dobio malo fluksa na čipu i da se broj potpuno izgubio 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: Nabavite Arduino biblioteku za upravljanje DigiPotom

Dobivanje Arduino biblioteke za upravljanje DigiPotom
Dobivanje Arduino biblioteke 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 "Clone", a zatim odaberite "Download Zip". Spremite Zip datoteku na lokaciju za koju znate gdje se nalazi. Radna površina ili fascikla za preuzimanje su zgodne lokacije. Nakon što ga uvezete u Arduino IDE, možete ga izbrisati s lokacije za preuzimanje.

Korak 4: Uvoz nove biblioteke u Arduino IDE

Uvoz nove biblioteke u Arduino IDE
Uvoz nove biblioteke 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 biblioteke

Primjeri biblioteka
Primjeri biblioteka

Nakon što ste dodali novu biblioteku primijetit ćete da ako odete na "Datoteka", a zatim odaberete "Primjeri", a zatim odaberete "Primjeri iz prilagođenih biblioteka", sada ćete na popisu vidjeti unos za MCP41HVX1. Ako zadržite pokazivač 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 da biste omogućili mrežu otpornika#definirajte CS_PIN 10 // Postavite na nisko za odabir čipa za SPI // Definirajte neke vrijednosti koje se koriste za testnu aplikaciju#definirajte FORWARD true#definirajte REVERSE false#definirajte 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; } // Pomaknite brisač digipota ako (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 biblioteku jer će, ako postoje ispravci greš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 da ažurirate primjer 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, ponovo će se preokrenuti.

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

Da biste vidjeli promjenu otpora, morat ćete koristiti set multimetara za očitavanje 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 unutrašnji 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 počinje opadati. Č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 pažnju.

  • Provjerite ožičenje. Sve mora biti pravilno povezano. Uvjerite se da koristite potpuni dijagram ožičenja kako je navedeno u ovom uputstvu. Postoje alternativni dijagrami ožičenja predstavljeni u README -u, izvornom kodu biblioteke i dolje u ovom uputstvu, ali se držite onoga što je gore dokumentovano u gornjem koraku ožičenja.
  • Uvjerite se da je svaki pin na vašem digitpotu lemljen na ploči 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 razvodnu ploču i nema li unakrsne veze pinova iz lemljenja koji su možda premostili tragove.
  • Ako serijski monitor pokazuje da se položaj brisača mijenja dok pokrećete skicu, ali se vrijednost otpora ne mijenja, to je pokazatelj da WLAT ili SHDN ne uspostavljaju odgovarajuću vezu s probojnom pločom ili kratkospojnim brisačima za WLAT ili SHDN nisu pravilno povezani s Arduinom.
  • Uvjerite se da koristite sekundarno napajanje koje je istosmjerno između 10 i 36 volti.
  • Provjerite radi li napajanje od 10 do 36 volti mjerenjem napona multimetrom.
  • Pokušajte koristiti originalnu skicu. Ako ste unijeli bilo kakve promjene, možda ste unijeli grešku.
  • Ako nijedan od koraka za rješavanje problema nije pomogao, isprobajte drugi digipot čip. Nadamo se da ste kupili nekoliko i lemili ih istovremeno na TSSOP ploču za razbijanje pa bi samo trebalo zamijeniti jedno za drugo. 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

Dodatne informacije:

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

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

Komunikacija između Arduina i DigiPota:

Arduino komunicira s DigiPotom koristeći SPI. Nakon što biblioteka pošalje naredbu o položaju brisača, poput 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 da li se brisač premjestio na očekivano mjesto.

Napredne funkcionalnosti (WLAT i SHDN)

Ove napredne funkcije nisu prikazane u primjeru "Kontrola brisača". U biblioteci su dostupni API -ji za kontrolu WLAT -a i SHDN -a. Postoje i primjeri skica WLAT -a i SHDN -a (na istoj lokaciji kao skica za brisače) sa bibliotekom.

SHDN (isključivanje)

SHDN se koristi za onemogućavanje ili omogućavanje otporničke mreže. Postavljanje SHDN na nisko onemogućuje i na visoko omogućava otporničku mrežu. Kada je mreža otpornika onemogućena, P0A (DigiPot pin 13) je isključen i P0B (DigiPot pin 11) je 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 direktno 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 pisanje)

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

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

Ako je WLAT postavljen na HIGH, informacije o položaju brisača proslijeđene kroz SPI čuvaju se u internom registru, ali se ne prosljeđuju mreži otpornika, pa se stoga položaj brisača neće ažurirati. Kada se WLAT postavi na LOW, vrijednost se prenosi iz registra u mrežu otpornika.

WLAT je koristan ako koristite više digipota koje morate sinhronizirati. Strategija je postaviti WLAT na HIGH na svim digipotima, 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 pokreću brisače u isto vrijeme.

Ako kontrolirate samo jedan DigiPot ili imate više njih, ali ih ne morate držati sinkroniziranim, najvjerojatnije vam neće trebati ova funkcija, pa stoga možete spojiti WLAT direktno 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: Alternativni dijagram ožičenja

Ožičenje

Imate mogućnost povezivanja WLAT -a sa digpota direktno na LOW / GND umjesto povezivanja na digitalni pin. Ako to učinite, nećete moći kontrolirati WLAT. Takođe imate mogućnost povezivanja SHDN -a direktno 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 žičanu ž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. Razgovaraćemo o dva od njih. Svi su oni dokumentirani u datoteci README.md pa ako vas zanima treći konstruktor, pogledajte dokumentaciju.

  • MCP41HVX1 (int nCSPin) - koristite ovaj konstruktor samo ako su i WLAT i SHDN ožičeni.
  • 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 povezan 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.

Šta 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 i spojiti ih 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 na skici novom vrijednošću)

Preporučuje se: