Taula de continguts:

Potenciòmetre digital MCP41HVX1 per Arduino: 10 passos (amb imatges)
Potenciòmetre digital MCP41HVX1 per Arduino: 10 passos (amb imatges)

Vídeo: Potenciòmetre digital MCP41HVX1 per Arduino: 10 passos (amb imatges)

Vídeo: Potenciòmetre digital MCP41HVX1 per Arduino: 10 passos (amb imatges)
Vídeo: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juliol
Anonim
Potenciòmetre digital MCP41HVX1 per Arduino
Potenciòmetre digital MCP41HVX1 per Arduino

La família de potenciòmetres digitals MCP41HVX1 (també coneguts com DigiPots) són dispositius que imiten la funció d’un potenciòmetre analògic i que es controlen mitjançant SPI. Un exemple d'aplicació seria substituir el comandament de volum del vostre equip estèreo per un DigiPot controlat per un Arduino. Això suposa que el control de volum del vostre equip estèreo és un potenciòmetre i no un codificador rotatiu.

Els MCP41HVX1 són una mica diferents dels altres DigiPots, ja que tenen un disseny de rail dividit. Això significa que, tot i que el propi DigiPot es pot controlar mitjançant la tensió de sortida d’un Arduino, el senyal que es passa a través de la xarxa de resistències funciona amb un rang de tensió molt més gran (fins a 36 volts). La majoria de DigiPots que es poden controlar a 5 volts es limiten a 5 volts a tota la xarxa de resistències, cosa que restringeix el seu ús per adaptar un circuit existent que funciona a tensions més altes, com ara el que trobareu en un cotxe o en un vaixell.

La família MCP41HVX1 està formada pels següents xips:

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

Els xips de 7 bits permeten 128 passos a la xarxa de resistències i els xips de 8 bits permeten 256 passos a la xarxa de resistències. Això significa que els xips de 8 bits permeten el doble de valors de resistència del potenciòmetre.

Subministraments

  • Trieu el xip MCP41HVX1 adequat de la llista anterior. El xip que seleccioneu es basa en el rang de resistència necessari per a la vostra aplicació. Aquesta instrucció es basa en les versions del paquet TSSOP 14 del xip, per tal de seguir juntament amb aquesta guia, escolliu qualsevol xip de la llista, excepte el MCP41HV31-103E / MQ, que és un paquet QFN. Es recomana obtenir algunes fitxes addicionals, ja que m'he trobat amb una de dolenta i són barates. Vaig demanar la meva a Digi-Key.
  • Font d'alimentació CC secundària que oscil·la entre els 10 i els 36 volts. En el meu exemple, faig servir una font de corrent continu de berrugues de paret de 17 volts de la meva caixa de fonts d’alimentació antigues.
  • Flux de soldadura
  • Soldador
  • Soldar
  • Pinces i escuradents
  • Tauler de separació de 14 pins TSSOP: 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 (Assortiment de mides. Molt disponible per a múltiples projectes)
  • Quantitat de capçaleres de 2 a 7 pins: Amazon - DEPEPE 30 unitats Capçals de pins masculins i femelles de 2,54 mm de 2,5 pins per a Arduino Prototype Shield - (Es necessita tall a mida. Hi ha un munt de paquets per a diversos projectes)
  • Arduino Uno: si no en teniu, us suggeriria aconseguir un tauler oficial. He tingut sort barrejada amb les versions no oficials. Digi-Key: Arduino Uno
  • Multímetre que pot mesurar la resistència i també comprovar la continuïtat
  • Filferros de pont
  • Taula de pa
  • Molt recomanable, però no absolutament necessari, és una lupa mans lliures, ja que els xips TSSOP són molt petits. Necessitareu les dues mans per soldar i provar amb el multímetre. Faig servir un parell de lupes clip-on Harbor Freight 3x a la part superior de les ulleres graduades i una lupa articulada de peu lliure. Altres opcions són un parell de lectors econòmics de la botiga de descompte o dòlar. Fins i tot podeu portar els lectors a sobre de les ulleres graduades o obtenir dos parells de lectors (un a sobre de l’altre) en funció de la bona (o dolenta) visió que tingueu. Si us dobleu les ulleres, tingueu cura, ja que el vostre abast de visió serà molt limitat, així que assegureu-vos de treure-les abans de fer qualsevol altra cosa. També tingueu molta precaució a l’hora de soldar.
  • Un altre element que no és necessari, però que és molt recomanable, és el Harbor Freight Helping Hands. Són clips de cocodril units a una base metàl·lica. Estan disponibles a molts altres proveïdors a Internet, també amb diferents marques. Aquests són molt útils per soldar el xip al tauler de sortida.

Pas 1: soldar el xip TSSOP a un tauler de ruptura

Image
Image
Soldar el xip TSSOP a un tauler de ruptura
Soldar el xip TSSOP a un tauler de ruptura
Soldar el xip TSSOP a un tauler de ruptura
Soldar el xip TSSOP a un tauler de ruptura

El xip TSSOP s’ha de soldar a una placa de sortida perquè pugueu utilitzar-lo amb una taula de control o directament amb els ponts DuPont. Per al treball de prototipatge són massa petits per treballar-los directament.

A causa de la seva petita mida, soldar el xip TSSOP pot ser la part més difícil d’aquest projecte, però conèixer el truc per fer-ho fa que sigui una tasca que tothom pugui complir. Hi ha diverses tècniques, la següent és el que vaig fer.

L’estratègia consisteix a transmetre primer la soldadura a les traces del tauler de ruptura.

  • No poseu el xip al tauler de ruptura fins que no us ho indiqui.
  • El primer que cal fer és posar una quantitat generosa de flux al tauler de ruptura.
  • A continuació, fent servir el soldador, escalfeu una mica de soldadura i passeu-la a les traces.
  • Poseu una mica més de flux a la part superior de la soldadura que heu fluït a les traces i a la part inferior de les potes del xip.
  • Col·loqueu el xip damunt dels rastres on acabeu de col·locar soldadura i flux. Les pinces o un escuradents proporcionen bones eines per col·locar amb precisió el xip al seu lloc. Assegureu-vos d’alinear correctament el xip perquè tots els pins quedin directament per sobre dels rastres. Alineeu el pin del xip amb el marcatge del pin 1 al tauler de sortida.
  • Feu servir el ferro de soldar per escalfar un dels pins de l’extrem del xip (el pin 1, 7, 8 o 14) pressionant-lo al traç. La soldadura que heu aplicat prèviament es fondrà i fluirà al voltant del passador.

Mireu el vídeo en aquest pas per veure una demostració de com soldar el xip al tauler de ruptura. Un suggeriment que tinc diferent del vídeo és que, després d’haver soldat el primer pin de parada, torneu a comprovar l’alineació de tot el xip per assegurar-vos que tots els pins continuen a la part superior de les traces. Si esteu fora una mica, és fàcil de corregir en aquest moment. Un cop us sentiu còmode, tot queda bé, torneu a soldar un altre pin a l'extrem oposat del xip i torneu a comprovar l'alineació. Si es veu bé, endavant i fes la resta de pins.

Després de soldar tots els pins, el vídeo suggereix que utilitzeu una lupa per verificar les vostres connexions. Un mètode millor és utilitzar un multímetre per comprovar la continuïtat. Heu de col·locar una sonda a la cama del passador i l'altra a la part del tauler on soldareu la capçalera (vegeu la segona imatge d'aquest pas). També heu de comprovar els pins adjacents per assegurar-vos que no estiguin connectats a causa de la manca de soldadura en diversos pins. Per exemple, si esteu verificant el pin 4, comproveu també el pin 3 i el pin 5. El pin 4 ha de mostrar continuïtat mentre que el pin 3 i el pin 5 han de mostrar un circuit obert. L'única excepció és que el netejador P0W pot mostrar connectivitat a P0A o P0B.

CONSELLS:

  • Com s’esmenta a la llista de materials, tenir un augment disponible que deixi les mans lliures per treballar serà molt útil en aquest pas.
  • Utilitzar el clip de cocodril per ajudar les mans a subjectar el tauler de ruptura facilita la soldadura de tot.
  • Escriviu el número del xip en un tros de cinta adhesiva i enganxeu-lo a la part inferior del tauler de ruptura (vegeu la tercera imatge d’aquesta secció). Si en el futur necessiteu identificar el xip, serà molt més fàcil llegir la cinta adhesiva. La meva experiència personal és que vaig obtenir una mica de flux al xip i el número va sortir completament, de manera que tot el que tinc és la cinta.

Pas 2: cablejat

Cablejat
Cablejat

Haureu de connectar Arduino i Digipot tal com es mostra al diagrama de cablejat. Els pins que s’utilitzen es basen en el disseny d’un Arduino Uno. Si utilitzeu un Arduino diferent, consulteu l'últim pas.

Pas 3: Obtenir la biblioteca Arduino per controlar el DigiPot

Obtenir la biblioteca Arduino per controlar el DigiPot
Obtenir la biblioteca Arduino per controlar el DigiPot

Per simplificar la programació he creat una biblioteca que està disponible a Github. Aneu a github.com/gregsrabian/MCP41HVX1 per obtenir la biblioteca MCP41HVX1. Voldreu seleccionar el botó "Clona" i, a continuació, seleccionar "Descarregar zip". Assegureu-vos de desar el fitxer Zip en una ubicació on conegueu on es troba. L’escriptori o la carpeta de baixades són ubicacions útils. Un cop l'importeu a l'IDE Arduino, podeu eliminar-lo de la ubicació de baixada.

Pas 4: importació de la nova biblioteca a l'IDE Arduino

Importació de la nova biblioteca a l’IDE Arduino
Importació de la nova biblioteca a l’IDE Arduino

Dins de l'IDE Arduino, aneu a "Sketch" i seleccioneu "Inclou biblioteca" i, a continuació, trieu "Afegeix biblioteca ZIP …". Apareixerà un nou quadre de diàleg que us permetrà seleccionar el fitxer. ZIP que heu descarregat de GitHub.

Pas 5: exemples de biblioteca

Exemples de biblioteca
Exemples de biblioteca

Després d'afegir la nova biblioteca, notareu que, si aneu a "Fitxer", seleccioneu "Exemples" i, a continuació, trieu "Exemples de biblioteques personalitzades", ara veureu una entrada per a MCP41HVX1 a la llista. Si passeu el cursor per sobre d'aquesta entrada, veureu WLAT, Wiper Control i SHDN, que són exemples d'esbossos. En aquest instructiu utilitzarem l'exemple de Control de neteja.

Pas 6: examinar el codi font

. Estableix a baix per seleccionar el xip per SPI // Defineix alguns valors que s’utilitzen per a l’aplicació de prova # define FORWARD true # define REVERSE false # define MAX_WIPER_VALUE 255 // Valor màxim del netejador MCP41HVX1 Digipot (CS_PIN, SHDN_PIN, WLAT_PIN); void setup () { Serial.begin (9600); Serial.print ("Posició inicial ="); Serial.println (Digipot. WiperGetPosition ()); // Mostra el valor inicial Serial.print ("Establir la posició del netejador ="); Serial.println (Digipot. WiperSetPosition (0)); // Estableix la posició del netejador a 0} void loop () {static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition (); // Obteniu la posició actual del netejador // Determineu la direcció. if (MAX_WIPER_VALUE == nWiper) {bDirecció = INVERSAR; } else if (0 == nWiper) {bDirection = FORWARD; } // Mou el netejador de digipot si (FORWARD == bDirection) {nWiper = Digipot. WiperIncrement (); // La direcció és cap endavant Serial.print ("Increment -"); } else {nWiper = Digipot. WiperDecrement (); // La direcció és enrere Serial.print ("Decrement -"); } Serial.print ("Posició de l'eixugaparabrises ="); Serial.println (nWiper); retard (100);}

Pas 7: entendre el codi font i executar l'esbós

Image
Image

Aquest codi font està disponible dins de l’IDE Arduino anant al menú Exemples i localitzant MCP41HVX1 que acabeu d’instal·lar (vegeu el pas anterior). Dins de MCP41HVX1 obriu l'exemple de "Control de l'eixugaparabrises". El millor és fer servir el codi que s’inclou a la biblioteca, ja que si hi ha correccions d’errors s’actualitzarà.

L'exemple de Wiper Control mostra les següents API de la biblioteca MCP41HVX1:

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

Dins del codi font de mostra, assegureu-vos d'establir MAX_WIPER_VALUE a 127 si utilitzeu un xip de 7 bits. El valor per defecte és 255, que és per a xips de 8 bits. Si feu canvis a la mostra, l'IDE d'Arduino us obligarà a escollir un nom nou per al projecte, ja que no us permetrà actualitzar el codi d'exemple. Es tracta d’un comportament esperat.

Cada vegada que passa el bucle, el netejador augmentarà en un pas o disminuirà en un pas en funció de la direcció que vagi. Si la direcció és alta i arriba al MAX_WIPER_VALUE, invertirà la direcció. Si toca 0, es tornarà a invertir.

A mesura que s'executa l'esbós, el monitor sèrie s'actualitza amb la posició actual del netejador.

Per veure el canvi de resistència, haureu d’utilitzar un multímetre per llegir Ohms. Col·loqueu les sondes del comptador a P0B (pin 11) i P0W (pin 12) al digipot per veure com canvia la resistència mentre s’aplica l’aplicació. Tingueu en compte que el valor de resistència no baixarà fins a zero, ja que hi ha certa resistència interna dins del xip, però s’acostarà a 0 ohms. Probablement tampoc no arribarà al valor màxim, però estarà a prop.

Mentre mireu el vídeo, podeu veure que el multímetre mostra la resistència augmentant fins que arriba al valor màxim i comença a disminuir. El xip que s’utilitza al vídeo és el MCP41HV51-104E / ST, que és un xip de 8 bits amb un valor màxim de 100k ohmis.

Pas 8: resolució de problemes

Si les coses no funcionen com s’esperava, aquí teniu algunes coses a tenir en compte.

  • Verifiqueu el cablejat. Cal connectar-ho tot correctament. Assegureu-vos que utilitzeu el diagrama de cablejat complet tal com s’indica en aquest manual. Hi ha diagrames de cablejat alternatius presentats a README, codi font de la biblioteca i a continuació a continuació en aquest manual, però s'adhereixen al documentat anteriorment al pas de cablejat anterior.
  • Assegureu-vos que tots els pins del vostre bot digital es soldin al tauler de ruptura. L’ús de la inspecció visual no és prou bo. Assegureu-vos de verificar que utilitzeu la funció de continuïtat del multímetre per comprovar que tots els pins del digipot estan connectats elèctricament a la placa de ruptura i que no hi ha cap connexió creuada de pins de soldadura que pugui haver passat per sobre de les traces.
  • Si el monitor sèrie mostra que la posició del netejador canvia quan s'executa l'esbós, però el valor de resistència no canvia, és un indicador que WLAT o SHDN no estan realitzant una connexió adequada a la placa de sortida o als eixugaparabrises per a WLAT o SHDN no estan connectats correctament a l'Arduino.
  • Assegureu-vos que utilitzeu una font d'alimentació secundària de CC de 10 a 36 volts.
  • Assegureu-vos que la font d'alimentació de 10 a 36 volts funcioni mesurant la tensió amb el multímetre.
  • Proveu d’utilitzar l’esbós original. Si heu fet canvis, és possible que hàgiu introduït un error.
  • Si cap dels passos de resolució de problemes no ha ajudat a provar un altre xip digipot. Tant de bo n’heu comprat diversos i els heu soldat al mateix temps a un tauler d’avenç TSSOP, de manera que només s’ha de canviar un per l’altre. Tenia un xip dolent que em va causar força frustració i això va ser la solució.

Pas 9: Interns i informació addicional

Esquema de cablejat alternatiu
Esquema de cablejat alternatiu

Més informació:

Podeu trobar més informació al full de dades MCP41HVX1.

La documentació completa sobre tota la biblioteca MCP41HVX1 està disponible al fitxer README.md que forma part de la descàrrega de la biblioteca. Aquest fitxer està escrit amb marca avall i es pot visualitzar amb un format adequat a Github (mireu a la part inferior de la pàgina) o amb un visualitzador de marcatge / editor.

Comunicacions entre Arduino i el DigiPot:

L'Arduino es comunica amb el DigiPot mitjançant SPI. Després que la biblioteca enviï una ordre de posició del netejador, com ara WiperIncrement, WiperDecrement o WiperSetPosition, crida a WiperGetPosition per obtenir la posició del netejador del xip. El valor retornat d’aquestes ordres del netejador és la posició del netejador tal com el veu el xip i es pot utilitzar per verificar que el netejador s’hagi mogut a la ubicació esperada.

Funcionalitat avançada (WLAT i SHDN)

Aquestes funcions avançades no es mostren a l'exemple "Control de l'eixugaparabrises". Hi ha API disponibles a la biblioteca per controlar WLAT i SHDN. També hi ha esbossos d’exemple WLAT i SHDN (a la mateixa ubicació que l’esbós de Wiper Control) amb la biblioteca.

SHDN (Apagat)

SHDN s’utilitza per desactivar o habilitar la xarxa de resistències. Establir SHDN a baixa desactiva i activa la xarxa de resistències. Quan la xarxa de resistències està desactivada, P0A (pin 13 de DigiPot) es desconnecta i P0B (pin 11 de DigiPot) es connecta a P0W (pin 12 de DigiPot). Hi haurà una petita quantitat de resistència entre P0B i P0W, de manera que el mesurador no llegirà 0 ohms.

Si la vostra aplicació no necessita controlar SHDN, podeu connectar-la directament a HIGH (vegeu el diagrama de cablejat alternatiu). Haureu d’utilitzar el constructor correcte o passar-lo a MCP41HVX1_PIN_NOT_CONFIGURED al constructor per indicar que SHDN està connectat. És important tenir en compte que, si seguiu l’exemple, heu d’utilitzar el diagrama de cablejat complet (vegeu el pas de cablejat anterior).

WLAT (Latch d'escriptura)

L'arquitectura interna és de dos components en un sol xip. Un dels components és la interfície SDI i el registre per contenir el valor del netejador. L’altre component és la pròpia xarxa de resistències. WLAT connecta els dos components interns junts.

Quan WLAT està configurat a BAIX, la informació de l'ordre de posició del netejador establerta es passa directament a la xarxa de resistències i s'actualitza la posició del netejador.

Si WLAT està configurat a HIGH, la informació de posició del netejador que es transmet a través de SPI es manté en un registre intern, però no es passa a la xarxa de resistències i, per tant, la posició del netejador no s’actualitzarà. Una vegada que WLAT està configurat a BAIX, el valor es transfereix del registre a la xarxa de resistències.

WLAT és útil si feu servir diversos digipots que heu de mantenir sincronitzats. L'estratègia és establir WLAT a HIGH en tots els digipots i, a continuació, establir el valor del netejador a totes les fitxes. Un cop s'ha enviat el valor del netejador a tots els digipots, es pot configurar WLAT a BAIX en tots els dispositius simultàniament perquè tots moguin els netejadors al mateix temps.

Si només controleu un DigiPot o en teniu diversos, però no cal mantenir-los sincronitzats, és probable que no necessiteu aquesta funcionalitat i, per tant, podeu connectar WLAT directament a BAIX (vegeu el diagrama de cablejat alternatiu). Haureu d’utilitzar el constructor correcte o passar-lo a MCP41HVX1_PIN_NOT_CONFIGURED al constructor per indicar que el WLAT està connectat. És important tenir en compte que, si seguiu l’exemple, heu d’utilitzar el diagrama de cablejat complet (vegeu el pas de cablejat anterior).

Pas 10: Esquema de cablejat alternatiu

Cablejat

Teniu l'opció de connectar WLAT des del digpot directament a LOW / GND en lloc de connectar-vos a un pin digital. Si ho feu, no podreu controlar WLAT. També teniu l’opció de connectar SHDN directament a HIGH en lloc d’un pin digital. Si ho feu, no podreu controlar SHDN.

WLAT i SHDN són independents els uns dels altres, de manera que podeu connectar-los durament i connectar-los a un pin digital, connectar-los ambdós o connectar-los als pins digitals perquè es puguin controlar. Consulteu el diagrama de cablejat alternatiu per als que vulgueu connectar amb fil dur i torneu a consultar el diagrama de cablejat principal del pas 2 per connectar-lo a pins digitals controlables.

Constructors

Hi ha tres constructors a la classe MCP41HVX. En parlarem dos. Tots estan documentats al fitxer README.md, de manera que si esteu interessats en el tercer constructor, consulteu la documentació.

  • MCP41HVX1 (int nCSPin): utilitzeu aquest constructor només si tant WLAT com SHDN estan connectats.
  • MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin): utilitzeu aquest constructor si WLAT o SHDN estan connectats. Introduïu la constant MCP41HVX1_PIN_NOT_CONFIGURED si el pin està cablejat o el número de pin si està connectat a un pin digital.

nCSPin ha d’estar connectat a un pin digital. No és vàlid passar MCP41HVX1_PIN_NOT_CONFIGURED al constructor per a nCSPin.

Què passa si no faig servir un Arduino Uno?

L'Arduino utilitza SPI per comunicar-se amb el digipot. Els pins SPI són pins específics de la placa Arduino. Els pins SPI de l’Uno són:

  • SCK: el pin 13 de l’Uno connectat al pin 2 del digipot
  • MOSI: pin 11 de l’Uno connectat al pin 4 del digipot
  • MISO: el pin 12 de l’Uno connectat al pin 5 del digipot

Si feu servir un Arduino que no és un, haureu d'esbrinar quin pin és SCK, MOSI i MISO i connectar-los al digipot.

La resta de pins utilitzats a l’esbós són pins digitals normals, de manera que qualsevol pin digital funcionarà. Haureu de modificar l’esbós per especificar els pins que trieu a la placa Arduino que esteu utilitzant. Els pins digitals habituals són:

  • CS: pin 10 de l'Uno connectat al pin 3 del digipot (actualitzeu CS_PIN a l'esbós amb un nou valor)
  • WLAT: pin 8 de l'Uno connectat al pin 6 del digipot (actualitzeu WLAT_PIN a l'esbós amb un nou valor)
  • SHDN: pin 9 de l'Uno connectat al pin 7 del digipot (actualitzeu SHDN_PIN a l'esbós amb un valor nou)

Recomanat: