Kazalo:

MCP41HVX1 digitalni potenciometer za Arduino: 10 korakov (s slikami)
MCP41HVX1 digitalni potenciometer za Arduino: 10 korakov (s slikami)

Video: MCP41HVX1 digitalni potenciometer za Arduino: 10 korakov (s slikami)

Video: MCP41HVX1 digitalni potenciometer za Arduino: 10 korakov (s slikami)
Video: Leap Motion SDK 2024, Julij
Anonim
MCP41HVX1 digitalni potenciometer za Arduino
MCP41HVX1 digitalni potenciometer za Arduino

Družina digitalnih potenciometrov MCP41HVX1 (znanih tudi kot DigiPots) so naprave, ki posnemajo delovanje analognega potenciometra in se upravljajo prek SPI. Primer aplikacije bi bil zamenjava gumba za glasnost na vašem stereo napravi z DigiPotom, ki ga nadzira Arduino. To predpostavlja, da je nadzor glasnosti vašega stereo naprave potenciometer in ne rotacijski dajalnik.

MCP41HVX1 so nekoliko drugačni od drugih DigiPots, saj imajo obliko ločenih tirnic. To pomeni, da medtem ko je sam DigiPot mogoče nadzorovati z izhodno napetostjo Arduina, signal, ki se prenaša skozi uporno omrežje, deluje z veliko večjim razponom napetosti (do 36 voltov). Večina DigiPots, ki jih je mogoče nadzorovati s 5 volti, je omejenih na 5 voltov v omrežju uporov, kar omejuje njihovo uporabo za nadgradnjo obstoječega vezja, ki deluje na višji napetosti, kot je tisto, kar bi našli v avtu ali čolnu.

Družino MCP41HVX1 sestavljajo naslednji čipi:

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

7 -bitni čipi omogočajo 128 korakov v omrežju uporov, 8 -bitni čipi pa 256 korakov v omrežju uporov. To pomeni, da 8 -bitni čipi omogočajo dvakrat več vrednosti upora s potenciometra.

Zaloge

  • Na zgornjem seznamu izberite ustrezen čip MCP41HVX1. Izbrani čip temelji na razponu upora, ki je potreben za vašo aplikacijo. Ta Instructable temelji na različicah paketa TSSOP 14 čipa, zato skupaj s tem priročnikom izberite kateri koli čip na seznamu, razen MCP41HV31-103E/MQ, ki je paket QFN. Priporočljivo je, da dobite nekaj dodatnih žetonov, saj sem naletel na slabega in so poceni. Jaz sem svojega naročil pri Digi-Keyu.
  • Sekundarno enosmerno napajanje od 10 do 36 voltov. V mojem primeru uporabljam 17 -voltno stensko napajanje iz stenske bradavice iz škatle starih napajalnikov.
  • Spajkalni tok
  • Spajkalnik
  • Spajkanje
  • Pinceta in / ali zobotrebec
  • TSSOP 14 -polna odklopna plošča - Amazon - QLOUNI 40 kosov PCB protokolarne plošče SMD v DIP pretvornik pretvorniške plošče TQFP (32 44 48 64 84 100) SOP SSOP TSSOP 8 10 14 16 20 23 24 28 (izbor velikosti. Veliko na voljo za več projektov)
  • Količinsko določite 2 - 7 -polne glave - Amazon - DEPEPE 30 kosov 40 -pinski 2,54 -milimetrski moški in ženski zatiči za Arduino prototipni ščit - (potrebno jih je izrezati. Veliko jih je v paketu za več projektov)
  • Arduino Uno - če ga nimate, predlagam, da si priskrbite uradno tablo. Imel sem mešano srečo z neuradnimi različicami. Digi -ključ - Arduino Uno
  • Večmetrski, ki lahko meri upor in preveri neprekinjenost
  • Mostične žice
  • Ogledna plošča
  • Zelo priporočljivo, vendar ni nujno, je lupa za prostoročno telefoniranje, saj so čipi TSSOP zelo majhni. Za spajkanje in testiranje z večmetrom boste potrebovali obe roki. Uporabljam par Harbour Freight 3x povezovalnih lup na vrhu očala na recept in prosto stoječe / zgibno povečevalno steklo. Druge možnosti so par poceni bralcev iz diskontne ali dolarske trgovine. Bralce lahko celo nosite čez očala na recept ali dobite dva para bralcev (enega na vrhu drugega), odvisno od tega, kako dober (ali slab) je vaš vid. Če podvajate očala, bodite previdni, saj bo vaš vidni prostor zelo omejen, zato jih slecite, preden naredite kaj drugega. Pri spajkanju bodite še posebej previdni.
  • Še en element, ki ni potreben, vendar ga zelo priporočamo, so Hands Freight Hands Hands. So sponke iz aligatorja, pritrjene na kovinsko podlago. Te so na voljo pri številnih drugih prodajalcih na internetu, pa tudi pod različnimi blagovnimi znamkami. Ti so v veliko pomoč pri spajkanju čipa na odbojno ploščo.

1. korak: Spajkanje čipa TSSOP na ploščo za prekinitev

Image
Image
Spajkanje čipa TSSOP na odbojno ploščo
Spajkanje čipa TSSOP na odbojno ploščo
Spajkanje čipa TSSOP na odbojno ploščo
Spajkanje čipa TSSOP na odbojno ploščo

Čip TSSOP je treba spajkati na odklopno ploščo, tako da ga lahko uporabite s ploščico ali neposredno s skakalci DuPont. Za izdelavo prototipov so premajhni za neposredno delo.

Spajkanje čipa TSSOP je lahko zaradi svoje majhnosti najzahtevnejši del tega projekta, vendar je poznavanje trika za to naloga, ki jo lahko izvede vsak. Tehnik je več, naslednjo sem naredil jaz.

Strategija je, da spajkanje najprej pretočimo na sledi deske.

  • Čip ne odlagajte na ploščo, dokler ni navodila.
  • Prva stvar, ki jo morate storiti, je, da veliko količino toka nanesete na ploščo.
  • Nato s svojim spajkalnikom segrejte nekaj spajkanja in ga prelijte po sledi.
  • Na spajk položite še nekaj fluksa, ki ste ga iztekli na sledi, pa tudi na dno nog čipa.
  • Čip postavite na sledi, kjer ste pravkar položili spajkanje in fluks. Pinceta ali zobotrebec sta dobra orodja za natančno namestitev čipa. Poskrbite, da je čip pravilno poravnan, tako da bodo vsi zatiči neposredno nad sledmi. Zatič enega čipa poravnajte z oznako za prvi zatič na plošči za izklop.
  • S spajkalnikom segrejte enega od zatičev na koncu čipa (bodisi pin 1, 7, 8 ali 14) in ga potisnite v sled. Spajka, ki ste jo prej nanesli, se bo stopila in tekla okoli zatiča.

Oglejte si videoposnetek v tem koraku, če si želite ogledati predstavitev, kako spajkati čip na ploščo. En moj predlog, ki se razlikuje od videoposnetka, je, da potem, ko ste spajkali prvi zatič pin in ponovno preverite poravnavo celotnega čipa, da se prepričate, da so vsi zatiči še vedno na sledi. Če ste malo izklopljeni, je to na tej točki enostavno popraviti. Ko se počutite udobno, vse izgleda dobro, spajkajte še en zatič na nasprotnem koncu čipa in ponovno preverite poravnavo. Če je to videti dobro, nadaljujte z ostalimi zatiči.

Ko spajate vse zatiče, videoposnetek predlaga uporabo povečevalnega stekla za preverjanje povezav. Boljša metoda je uporaba multimetra za preverjanje kontinuitete. Eno sondo postavite na nogo nožice, drugo pa na del plošče, kjer boste spajkali glavo (glejte drugo sliko v tem koraku). Prav tako morate preveriti sosednje zatiče, da se prepričate, da niso povezani zaradi spajkanja, ki skupaj pripelje več zatičev. Tako na primer, če preverjate pin 4, preverite tudi pin 3 in pin 5. Pin 4 mora pokazati kontinuiteto, medtem ko morata pin 3 in pin 5 pokazati odprto vezje. Edina izjema je, da lahko brisalnik P0W pokaže povezavo s P0A ali P0B.

NASVETI:

  • Kot je omenjeno na seznamu materialov, bo v tem koraku zelo koristno, če imate na voljo nekaj povečave, ki vam pusti prosto delo.
  • Z uporabo aligatorjeve sponke, ki pomaga rokam držati odbojno ploščo, je spajkanje nekoliko lažje.
  • Številko čipa napišite na kos maskirnega traku in se prilepite na dno prelomne plošče (glejte tretjo sliko v tem razdelku). Če boste v prihodnosti morali identificirati čip, bo veliko lažje odčitati maskirni trak. Moje osebne izkušnje so, da sem na čipu dobil malo pretoka in številka je popolnoma odlepila, tako da imam samo trak.

2. korak: Ožičenje

Ožičenje
Ožičenje

Arduino in Digipot boste morali povezati, kot je prikazano na shemi ožičenja. Zatiči, ki se uporabljajo, temeljijo na postavitvi Arduino Uno. Če uporabljate drug Arduino, si oglejte zadnji korak.

3. korak: Pridobite knjižnico Arduino za nadzor DigiPot -a

Pridobitev knjižnice Arduino za nadzor DigiPot -a
Pridobitev knjižnice Arduino za nadzor DigiPot -a

Za poenostavitev programiranja sem ustvaril knjižnico, ki je na voljo v Githubu. Pojdite na github.com/gregsrabian/MCP41HVX1, da dobite knjižnico MCP41HVX1. Izbrati morate gumb »Kloniraj« in nato »Prenesi Zip«. Shranite datoteko Zip na mesto, za katero veste, da je. Namizje ali mapa za prenos sta priročni lokaciji. Ko ga uvozite v Arduino IDE, ga lahko izbrišete z mesta za prenos.

4. korak: Uvoz nove knjižnice v Arduino IDE

Uvoz nove knjižnice v IDE Arduino
Uvoz nove knjižnice v IDE Arduino

V Arduino IDE pojdite na "Sketch", nato izberite "Include Library", nato izberite "Add Library Library..". Pojavilo se bo novo pogovorno okno, v katerem lahko izberete datoteko. ZIP, ki ste jo prenesli z GitHub -a.

5. korak: Primeri knjižnice

Primeri knjižnic
Primeri knjižnic

Ko dodate novo knjižnico, boste opazili, da če greste na "Datoteka", nato izberete "Primeri" in nato izberete "Primeri iz knjižnic po meri", boste na seznamu videli vnos za MCP41HVX1. Če premaknete miškin kazalec nad ta vnos, boste videli WLAT, Wiper Control in SHDN, ki so primeri skic. V tem navodilu bomo uporabili primer nadzora brisalcev.

6. korak: Preučite izvorno kodo

#include "MCP41HVX1.h" // Določite zatiče, ki se uporabljajo na Arduinu#define WLAT_PIN 8 // Če je nastavljeno na Low "prenos in uporaba" #define SHDN_PIN 9 // Nastavite visoko, da omogočite uporovno omrežje#define CS_PIN 10 // Nastavite na nizko, da izberete čip za SPI // Določite nekaj vrednosti, ki se uporabljajo za preskusno aplikacijo#define FORWARD true#define REVERSE false#define MAX_WIPER_VALUE 255 // Največja vrednost brisalca v vrednosti MCP41HVX1 Digipot (CS_PIN, SHDN_PIN, WLAT_PIN); void setup () { Serial.begin (9600); Serial.print ("Začetni položaj ="); Serial.println (Digipot. WiperGetPosition ()); // Prikaz začetne vrednosti Serial.print ("Nastavi položaj brisalca ="); Serial.println (Digipot. WiperSetPosition (0)); // Nastavite položaj brisalca na 0} void loop () {static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition (); // Pridobite trenutni položaj brisalca // Določite smer. če (MAX_WIPER_VALUE == nWiper) {bDirection = REVERSE; } else if (0 == nWiper) {bDirection = FORWARD; } // Premakni brisalnik digipot if (FORWARD == bDirection) {nWiper = Digipot. WiperIncrement (); // Smer je naprej Serial.print ("Increment -"); } else {nWiper = Digipot. WiperDecrement (); // Smer je nazaj Serial.print ("Zmanjšanje -"); } Serial.print ("Položaj brisalca ="); Serial.println (nWiper); zamuda (100);}

7. korak: Razumevanje izvorne kode in zagon skice

Image
Image

Ta izvorna koda je na voljo v Arduino IDE tako, da odprete meni Primeri in poiščete MCP41HVX1, ki ste ga pravkar namestili (glejte prejšnji korak). V MCP41HVX1 odprite primer "Upravljanje brisalcev". Najbolje je, da uporabite kodo, ki je priložena knjižnici, saj bo, če obstajajo popravki napak, posodobljena.

Primer nadzora brisalcev prikazuje naslednje API -je iz knjižnice MCP41HVX1:

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

V vzorčni izvorni kodi nastavite MAX_WIPER_VALUE na 127, če uporabljate 7 -bitni čip. Privzeto je 255, kar je za 8 -bitne čipe. Če spremenite vzorec, vas bo Arduino IDE prisilil, da izberete novo ime za projekt, saj vam ne bo omogočil posodobitve vzorčne kode. To je pričakovano vedenje.

Vsakič skozi zanko se bo brisalnik povečal za en korak ali zmanjšal za en korak, odvisno od smeri, v katero gre. Če je smer navzgor in pride na MAX_WIPER_VALUE, bo smer obrnjena. Če zadene 0, se bo znova obrnilo.

Ko skica teče, se serijski monitor posodobi s trenutnim položajem brisalcev.

Če želite videti upor, boste morali za branje ohmov uporabiti multimeter. Merilne sonde namestite na P0B (pin 11) in P0W (pin 12) na digipot, da vidite, kako se upor spreminja med delovanjem aplikacije. Upoštevajte, da se vrednost upora ne bo znižala na nič, saj je v čipu nekaj notranjega upora, vendar se bo približalo 0 ohmom. Najverjetneje tudi ne bo dosegel največje vrednosti, ampak bo blizu.

Ko gledate videoposnetek, lahko vidite, da multimeter prikazuje upor, ki narašča, dokler ne doseže največje vrednosti, nato pa se začne zmanjševati. V videu se uporablja čip MCP41HV51-104E/ST, ki je 8-bitni čip z največjo vrednostjo 100 k ohmov.

8. korak: Odpravljanje težav

Če stvari ne delujejo po pričakovanjih, si oglejte nekaj stvari.

  • Preverite ožičenje. Vse mora biti pravilno povezano. Prepričajte se, da uporabljate celoten diagram ožičenja, kot je navedeno v tem navodilu. V README, izvorni kodi knjižnice in spodaj v tem navodilu so predstavljeni nadomestni načrti ožičenja, vendar se držite tistega, kar je opisano zgoraj v zgornjem koraku ožičenja.
  • Prepričajte se, da je vsak zatič na vašem digitalnem kotičku spajkan na ploščo. Uporaba vizualnega pregleda ni dovolj dobra. Prepričajte se, da s funkcijo neprekinjenosti vašega multimetra preverite, ali so vsi zatiči na digipotu električno povezani z odklopno ploščo in ali ni navzkrižne povezave zatičev iz spajkanja, ki so morda premostili sledi.
  • Če serijski monitor kaže, da se položaj brisalca med izvajanjem skice spreminja, vendar se vrednost upora ne spreminja, je to pokazatelj, da WLAT ali SHDN ne vzpostavljata ustrezne povezave z odklopno ploščo ali brisalci za WLAT ali SHDN niso pravilno povezani z Arduinom.
  • Prepričajte se, da uporabljate sekundarno napajanje z enosmernim tokom med 10 in 36 voltov.
  • Prepričajte se, da napajalnik od 10 do 36 voltov deluje z merjenjem napetosti z multimetrom.
  • Poskusite uporabiti izvirno skico. Če ste naredili kakršne koli spremembe, ste morda vnesli napako.
  • Če noben od korakov za odpravljanje težav ni pomagal preizkusiti drugega čipa digipot. Upajmo, da ste kupili več in jih hkrati spajkali na ploščo TSSOP, tako da bi morali samo zamenjati enega za drugega. Imel sem slab čip, ki mi je povzročil kar nekaj razočaranja in to je bila rešitev.

9. korak: Notranjost in dodatne informacije

Nadomestni diagram ožičenja
Nadomestni diagram ožičenja

Nadaljne informacije:

Dodatne informacije najdete v podatkovnem listu MCP41HVX1.

Celotna dokumentacija o celotni knjižnici MCP41HVX1 je na voljo v datoteki README.md, ki je del prenosa knjižnice. Ta datoteka je zapisana z oznako navzdol in si jo lahko ogledate z ustreznim oblikovanjem v Githubu (poglejte na dnu strani) ali s pregledovalnikom oznak navzdol / editor.

Komunikacija med Arduinom in DigiPotom:

Arduino komunicira z DigiPotom prek SPI. Ko knjižnica pošlje ukaz za položaj brisalca, kot so WiperIncrement, WiperDecrement ali WiperSetPosition, nato pokliče WiperGetPosition, da iz čipa pridobi položaj brisalca. Vrednost, ki jo vrnejo ti ukazi brisalcev, je položaj brisalca, kot ga vidi čip, in ga je mogoče uporabiti za preverjanje, ali se je brisalnik premaknil na pričakovano mesto.

Napredne funkcije (WLAT in SHDN)

Te napredne funkcije niso prikazane v primeru "Upravljanje brisalcev". V knjižnici so na voljo API -ji za nadzor WLAT in SHDN. Obstajajo tudi primeri skic WLAT in SHDN (na istem mestu kot skica krmilnika brisalcev) s knjižnico.

SHDN (zaustavitev)

SHDN se uporablja za onemogočanje ali omogočanje uporovnega omrežja. Nastavitev SHDN na nizko onemogoči in visoko omogoči uporovno omrežje. Ko je uporno omrežje onemogočeno, se P0A (DigiPot pin 13) odklopi in P0B (DigiPot pin 11) se priključi na P0W (DigiPot pin 12). Med P0B in P0W bo majhna upornost, zato vaš števec ne bo prebral 0 ohmov.

Če vaši aplikaciji ni treba nadzorovati SHDN, jo lahko priključite neposredno na HIGH (glejte nadomestni diagram ožičenja). Morali boste uporabiti pravi konstruktor ali v MCP41HVX1_PIN_NOT_CONFIGURED predati konstruktorju, da označite, da je SHDN trdno povezan. Pomembno je omeniti, da morate, če sledite skupaj s primerom, uporabiti celoten diagram ožičenja (glejte korak ožičenja zgoraj).

WLAT (zapiranje zapisa)

Notranja arhitektura je sestavljena iz dveh komponent na enem čipu. Ena od komponent je vmesnik SDI in register za shranjevanje vrednosti brisalcev. Druga komponenta je samo uporno omrežje. WLAT poveže obe notranji komponenti skupaj.

Ko je WLAT nastavljen na LOW, se vsi podatki o ukazu položaja brisalca posredujejo neposredno v omrežje uporov in položaj brisalca se posodobi.

Če je WLAT nastavljen na HIGH, se podatki o položaju brisalcev, posredovani skozi SPI, hranijo v notranjem registru, vendar se ne posredujejo v omrežje uporov, zato se položaj brisalca ne bo posodobil. Ko je WLAT nastavljen na LOW, se vrednost prenese iz registra v uporno omrežje.

WLAT je uporaben, če uporabljate več digipotov, ki jih morate sinhronizirati. Strategija je, da WLAT nastavite na HIGH na vseh digipotih in nato nastavite vrednost brisalcev na vseh čipih. Ko je vrednost brisalcev poslana na vse digipote, lahko WLAT nastavite na LOW na vseh napravah hkrati, tako da vsi hkrati premaknejo brisalce.

Če upravljate samo en DigiPot ali jih imate več, vendar jih ni treba sinhronizirati, te funkcije najverjetneje ne boste potrebovali, zato lahko WLAT priključite neposredno na LOW (glejte nadomestni diagram ožičenja). Morali boste uporabiti pravi konstruktor ali v MCP41HVX1_PIN_NOT_CONFIGURED predati konstruktorju, da označite, da je WLAT trdno povezan. Pomembno je omeniti, da morate, če sledite skupaj s primerom, uporabiti celoten diagram ožičenja (glejte korak ožičenja zgoraj).

10. korak: Nadomestni diagram ožičenja

Ožičenje

Imate možnost, da WLAT povežete neposredno z dostopovne točke na LOW / GND, namesto da se povežete z digitalnim zatičem. Če to storite, ne boste mogli nadzorovati WLAT. Imate tudi možnost, da namesto digitalnega zatiča priključite SHDN neposredno na HIGH. Če to storite, ne boste mogli nadzirati SHDN.

WLAT in SHDN sta neodvisna drug od drugega, zato lahko enega trdo ožičite, drugega pa povežete z digitalnim zatičem, trdo žico oboje ali pa oba povežete z digitalnimi zatiči, tako da ju je mogoče nadzorovati. Za ožičenje do digitalnih zatičev, ki jih je mogoče nadzorovati, si oglejte nadomestni diagram ožičenja za tiste, ki jih želite priključiti, in se vrnite na glavni diagram ožičenja v 2. koraku.

Konstruktorji

V razredu MCP41HVX so trije konstruktorji. O dveh bomo razpravljali. Vsi so dokumentirani v datoteki README.md, zato, če vas zanima tretji konstruktor, si oglejte dokumentacijo.

  • MCP41HVX1 (int nCSPin) - uporabite ta konstruktor samo, če sta WLAT in SHDN trdno povezana.
  • MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin) - uporabite ta konstruktor, če sta WLAT ali SHDN trdno povezana. Vnesite konstanto MCP41HVX1_PIN_NOT_CONFIGURED, če je pin trdo ožičen, ali številko če je priključen na digitalni pin.

nCSPin mora biti povezan z digitalnim zatičem. Posredovanje MCP41HVX1_PIN_NOT_CONFIGURED konstruktorju za nCSPin ni veljavno.

Kaj, če ne uporabljam Arduino Uno?

Arduino uporablja SPI za komunikacijo z digipotom. Zatiči SPI so posebni zatiči na plošči Arduino. Zatiči SPI na Uno so:

  • SCK - pin 13 na Uno priključen na pin 2 na digipotu
  • MOSI - pin 11 na Uno priključen na pin 4 na digipotu
  • MISO - pin 12 na Uno, priključen na pin 5 na digipotu

Če uporabljate Arduino, ki ni Uno, boste morali ugotoviti, kateri pin je SCK, MOSI in MISO, in jih priključiti na digipot.

Drugi zatiči, ki se uporabljajo na skici, so običajni digitalni zatiči, tako da bo vsak digitalni zatič deloval. Skico boste morali spremeniti, da določite zatiče, ki jih izberete na plošči Arduino, ki jo uporabljate. Običajni digitalni zatiči so:

  • CS - pin 10 na Uno, priključen na pin 3 na digipotu (posodobite CS_PIN v skici z novo vrednostjo)
  • WLAT - pin 8 na Uno, priključen na pin 6 na digipotu (posodobite WLAT_PIN v skici z novo vrednostjo)
  • SHDN - pin 9 na Uno, priključen na pin 7 na digipotu (posodobite SHDN_PIN v skici z novo vrednostjo)

Priporočena: