Sommario:

Potenziometro digitale MCP41HVX1 per Arduino: 10 passaggi (con immagini)
Potenziometro digitale MCP41HVX1 per Arduino: 10 passaggi (con immagini)

Video: Potenziometro digitale MCP41HVX1 per Arduino: 10 passaggi (con immagini)

Video: Potenziometro digitale MCP41HVX1 per Arduino: 10 passaggi (con immagini)
Video: Этот компонент может управлять множеством цепей! Руководство по цифровому потенциометру! ЭБ#51 2024, Luglio
Anonim
Potenziometro digitale MCP41HVX1 per Arduino
Potenziometro digitale MCP41HVX1 per Arduino

La famiglia MCP41HVX1 di potenziometri digitali (alias DigiPots) sono dispositivi che imitare la funzione di un potenziometro analogico e sono controllati attraverso SPI. Un'applicazione di esempio potrebbe sostituire la manopola del volume sul tuo stereo con un DigiPot controllato da un Arduino. Ciò presuppone che il controllo del volume sul tuo stereo sia un potenziometro e non un codificatore rotante.

Gli MCP41HVX1 sono leggermente diversi dagli altri DigiPot in quanto hanno un design a binario diviso. Ciò significa che mentre il DigiPot stesso può essere controllato dalla tensione di uscita di un Arduino, il segnale che viene trasmesso attraverso la rete funziona resistore con una gamma molto più ampia di tensione (fino a 36 volt). La maggior parte dei DigiPot che possono essere controllati da 5 volt sono limitati a 5 volt attraverso la rete di resistori, il che limita il loro utilizzo per il retrofit di un circuito esistente che funziona a una tensione più elevata come quella che si trova in un'auto o in una barca.

La famiglia MCP41HVX1 è composta dai seguenti chip:

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

I chip a 7 bit consentono 128 passaggi nella rete di resistori e i chip a 8 bit consentono 256 passaggi nella rete di resistori. Ciò significa che i chip a 8 bit consentono il doppio dei valori di resistenza dal potenziometro.

Forniture

  • Scegli il chip MCP41HVX1 appropriato dall'elenco sopra. Il chip selezionato si basa sull'intervallo di resistenza richiesto per l'applicazione. Questo Instructable si basa sulle versioni del pacchetto TSSOP 14 del chip, quindi per seguire questa guida scegli qualsiasi chip nell'elenco ad eccezione dell'MCP41HV31-103E/MQ che è un pacchetto QFN. Si consiglia di ottenere qualche chip in più perché ne ho incontrato uno cattivo e sono poco costosi. Ho ordinato il mio da Digi-Key.
  • Alimentazione DC secondaria che va da 10 a 36 volt. Nel mio esempio, utilizzo un alimentatore CC da 17 volt a parete dalla mia scatola di vecchi alimentatori.
  • Flusso di saldatura
  • Saldatore
  • Saldare
  • Pinzette e\o stuzzicadenti
  • TSSOP 14 pin breakout board - Amazon - QLOUNI Schede PCB Proto da 40 pezzi Convertitore da SMD a DIP Piastra adattatore TQFP (32 44 48 64 84 100) SOP SSOP TSSOP 8 10 14 16 20 23 24 28 (assortimento di dimensioni. Ampia disponibilità per più progetti)
  • Quantifica da 2 a 7 intestazioni pin - Amazon - DEPEPE 30 pezzi 40 pin 2.54 mm maschio e femmina pin intestazioni per Arduino Prototype Shield - (tagliato a misura necessaria. Abbondanza nella confezione per più progetti)
  • Arduino Uno: se non ne hai uno, ti suggerirei di procurarti una scheda ufficiale. Ho avuto fortuna mista con le versioni non ufficiali. Digi-Key - Arduino Uno
  • Multimetro in grado di misurare la resistenza e anche verificare la continuità
  • Ponticelli
  • tagliere
  • Altamente raccomandato ma non assolutamente necessario è una lente d'ingrandimento a mani libere poiché i chip TSSOP sono molto piccoli. Avrai bisogno di entrambe le mani per saldare e testare con il multimetro. Io uso un paio di Harbor Freight 3x Clip-On ingrandimento sulla parte superiore dei miei occhiali da vista e un free standing / articolato lente di ingrandimento. Altre opzioni sono un paio di lettori economici dal negozio di sconti o dollari. Puoi persino indossare i lettori sopra gli occhiali da vista o ottenere due paia di lettori (uno sopra l'altro) a seconda di quanto sia buona (o cattiva) la tua vista. Se si sta raddoppiando gli occhiali fare attenzione a come il vostro campo visivo sarà molto limitata, quindi assicuratevi di toglierli prima di fare qualsiasi altra cosa. Fai anche molta attenzione durante la saldatura.
  • Un altro elemento non richiesto ma altamente raccomandato è l'Harbour Freight Helping Hands. Sono clip a coccodrillo attaccate a una base di metallo. Questi sono disponibili da molti altri fornitori su Internet e con diversi marchi. Questi sono molto utili quando si salda il chip sulla breakout board.

Passaggio 1: saldatura del chip TSSOP a una scheda breakout

Image
Image
Saldatura del chip TSSOP a una Breakout Board
Saldatura del chip TSSOP a una Breakout Board
Saldatura del chip TSSOP a una breakout board
Saldatura del chip TSSOP a una breakout board

Il chip TSSOP deve essere saldato a una breakout board in modo da poterlo utilizzare con una breadboard o direttamente con i jumper DuPont. Per il lavoro di prototipazione sono troppo piccoli per lavorare direttamente.

A causa delle loro piccole dimensioni, saldare il chip TSSOP può essere la più impegnativa parte di questo progetto, ma conoscendo il trucco per fare questo lo rende un compito che tutti possono realizzare. Ci sono diverse tecniche, quella qui sotto è quella che ho fatto io.

La strategia consiste nel far scorrere prima la saldatura sulle tracce della breakout board.

  • Non mettere il chip sulla breakout board fino a quando non viene richiesto.
  • La prima cosa da fare è mettere una generosa quantità di flusso sul breakout board.
  • Quindi, usando il tuo saldatore, riscalda un po' di saldatura e falla scorrere sulle tracce.
  • Metti un po 'di più il flusso sulla parte superiore della saldatura che sgorgava sulle tracce così come la parte inferiore delle gambe del chip.
  • Posiziona il chip sopra le tracce dove hai appena posizionato la saldatura e il flusso. Le pinzette o uno stuzzicadenti sono ottimi strumenti per posizionare con precisione il truciolo. Assicurati di allineare correttamente il chip in modo che tutti i pin siano direttamente sopra le tracce. Allineare il pin uno del chip con la marcatura per il pin uno sulla scheda break out.
  • Usando il tuo saldatore riscalda uno dei pin all'estremità del chip (pin 1, 7, 8 o 14) premendolo nella traccia. La saldatura che hai applicato in precedenza si scioglierà e scorrerà attorno al perno.

Guarda il video in questo passaggio per vedere una dimostrazione di come saldare il chip alla breakout board. Un suggerimento che ho che è diverso dal video è che dopo aver saldato il primo pin si fermi e ricontrolla l'allineamento dell'intero chip per assicurarti che tutti i pin siano ancora in cima alle tracce. Se sei fuori un po' è facile correggere a questo punto. Quando ti senti a tuo agio, tutto sembra a posto, salda un altro pin all'estremità opposta del chip e controlla di nuovo l'allineamento. Se sembra buono, vai avanti e fai il resto dei pin.

Dopo aver saldato tutti i pin, il video suggerisce di utilizzare una lente di ingrandimento per verificare le connessioni. Un metodo migliore consiste nell'utilizzare un multimetro per verificare la continuità. Dovresti posizionare una sonda sulla gamba del pin e l'altra sonda sulla parte della scheda dove salderai l'intestazione (vedi la seconda immagine in questo passaggio). Dovresti anche controllare i pin adiacenti per assicurarti che non siano collegati a causa del cortocircuito della saldatura di diversi pin insieme. Quindi, ad esempio, se stai verificando il pin 4, controlla anche il pin 3 e il pin 5. Il pin 4 dovrebbe mostrare continuità mentre il pin 3 e il pin 5 dovrebbero mostrare un circuito aperto. L'unica eccezione è che il tergicristallo P0W può mostrare connettività a P0A o P0B.

SUGGERIMENTI:

  • Come menzionato nell'elenco dei materiali, avere a disposizione un ingrandimento che lasci le mani libere di lavorare sarà molto utile in questo passaggio.
  • L'uso della clip a coccodrillo che aiuta le mani a tenere il breakout board rende la saldatura tutto un po' più semplice.
  • Scrivi il numero del chip su un pezzo di nastro adesivo e attaccalo alla parte inferiore del tabellone (vedi la terza immagine in questa sezione). Se in futuro sarà necessario identificare il chip, sarà molto più facile leggere il nastro adesivo. La mia esperienza personale è che ho avuto un po 'di flusso sul chip e il numero è venuto fuori completamente in modo tutto quello che ho è il nastro.

Passaggio 2: cablaggio

Cablaggio
Cablaggio

Sarà necessario collegare Arduino e Digipot come mostrato nello schema elettrico. I pin utilizzati si basano sul layout di un Arduino Uno. Se stai usando un Arduino diverso, vedi l'ultimo passaggio.

Passaggio 3: ottenere la libreria Arduino per il controllo di DigiPot

Ottenere la libreria Arduino per il controllo di DigiPot
Ottenere la libreria Arduino per il controllo di DigiPot

Per semplificare la programmazione ho creato una libreria disponibile su Github. Vai su github.com/gregsrabian/MCP41HVX1 per ottenere la libreria MCP41HVX1. Dovrai selezionare il pulsante "Clone" e quindi selezionare "Download Zip". Assicurati di salvare il file Zip in una posizione in cui sai dove si trova. Il desktop o la cartella dei download sono posizioni utili. Una volta importato nell'IDE di Arduino, puoi eliminarlo dalla posizione di download.

Passaggio 4: importare la nuova libreria nell'IDE di Arduino

Importazione della nuova libreria nell'IDE di Arduino
Importazione della nuova libreria nell'IDE di Arduino

All'interno dell'IDE Arduino vai su "Schizzo", quindi seleziona "Includi libreria", quindi scegli "Aggiungi libreria ZIP..". Apparirà una nuova finestra di dialogo che ti permetterà di selezionare il file. ZIP che hai scaricato da GitHub.

Passaggio 5: esempi di libreria

Esempi di libreria
Esempi di libreria

Dopo aver aggiunto la nuova libreria noterai che se vai su "File", quindi seleziona "Esempi", quindi scegli "Esempi da librerie personalizzate" ora vedrai una voce per MCP41HVX1 nell'elenco. Se passi con il mouse su quella voce vedrai WLAT, Wiper Control e SHDN che sono schizzi di esempio. In questo Instructable useremo l'esempio di Wiper Control.

Passaggio 6: esame del codice sorgente

#include "MCP41HVX1.h" // Definire i pin utilizzati sulle Arduino # definire WLAT_PIN 8 // Se impostato su Low "trasferimento e l'utilizzo" #define SHDN_PIN 9 // Set alto per abilitare il resistore rete # definiscono CS_PIN 10 // Imposta su basso per selezionare il chip per SPI // Definisci alcuni valori utilizzati per l'app di test#define FORWARD true#define REVERSE false#define MAX_WIPER_VALUE 255 // Valore massimo del wiper MCP41HVX1 Digipot(CS_PIN, SHDN_PIN, WLAT_PIN);void setup (){ Serial.begin(9600); Serial.print("Posizione iniziale = "); Serial.println(Digipot. WiperGetPosition()); // Visualizza il valore iniziale Serial.print("Set Wiper Position = "); Serial.println(Digipot. WiperSetPosition(0)); // Imposta la posizione del wiper su 0} void loop (){ static bool bDirection = FORWARD; int nWiper = Digipot. WiperGetPosition(); // Ottieni la posizione corrente del tergicristallo // Determina la direzione. if(MAX_WIPER_VALUE == nWiper) { bDirection = REVERSE; } else if(0 == nWiper) { bDirezione = AVANTI; } // Spostare il tergicristallo DigiPot if (FORWARD == B direzione) {nWiper = Digipot. WiperIncrement (); // La direzione è in avanti Serial.print("Increment - "); } else { nWiper = Digipot. WiperDecrement(); // La direzione è all'indietro Serial.print("Decrement - "); } Serial.print("Posizione tergicristallo = "); Serial.println(nWiper); ritardo(100);}

Passaggio 7: comprensione del codice sorgente ed esecuzione dello schizzo

Image
Image

Questo codice sorgente è disponibile all'interno del IDE Arduino andando al menu di esempi e la localizzazione MCP41HVX1 appena installata (vedi punto precedente). All'interno di MCP41HVX1 aprire l'esempio "Wiper Control". È meglio usare il codice incluso con la libreria come se ci fossero correzioni di bug, verrà aggiornato.

L'esempio di Wiper Control mostra le seguenti API dalla libreria MCP41HVX1:

  • Costruttore MCP41HVX1(int nCSPin, int nSHDNPin, int nWLATPin)
  • WiperGetPosition()
  • WiperSetPosition(byte perWiper)
  • Incremento tergicristallo()
  • Decremento tergicristallo()

All'interno del codice sorgente di esempio fare in modo di MAX_WIPER_VALUE insieme a 127 se si utilizza un chip a 7 bit. Il valore predefinito è 255 che è per i chip a 8 bit. Se si apportano modifiche al campione l'IDE Arduino vi costringerà a scegliere un nuovo nome per il progetto in quanto non vi permetterà di aggiornare il codice di esempio. Questo è il comportamento previsto.

Ogni volta attraverso il ciclo del tergicristallo incrementerà di un passo o decrementa di uno step a seconda della direzione in cui sta andando. Se la direzione è in alto e arriva al MAX_WIPER_VALUE, invertirà la direzione. Se raggiunge lo 0, si invertirà di nuovo.

Durante l'esecuzione dello schizzo, il monitor seriale viene aggiornato con la posizione corrente del wiper.

Per vedere il cambiamento di resistenza dovrai usare un multimetro impostato per leggere Ohm. Metti le sonde del misuratore su P0B (pin 11) e P0W (pin 12) sul digipot per vedere il cambiamento di resistenza mentre l'applicazione è in esecuzione. Si noti che il valore della resistenza non scenderà fino a zero poiché c'è una certa resistenza interna all'interno del chip, ma si avvicinerà a 0 ohm. Molto probabilmente non raggiungerà nemmeno il valore massimo, ma sarà vicino.

Mentre guardi il video puoi vedere che il multimetro mostra la resistenza in aumento fino a raggiungere il valore massimo e poi inizia a diminuire. Il chip utilizzato nel video è l'MCP41HV51-104E/ST che è un chip a 8 bit con un valore massimo di 100k ohm.

Passaggio 8: risoluzione dei problemi

Se le cose non funzionano come previsto, ecco alcune cose da guardare.

  • Verifica il cablaggio. Tutto deve essere collegato correttamente. Assicurati di utilizzare lo schema elettrico completo come indicato in questo Instructable. Ci sono schemi elettrici alternativi presentati nella README, codice sorgente biblioteca e basso in questo Instructable ma bastone con quanto documentato in precedenza nella fase di cablaggio sopra.
  • Assicurati che ogni pin del tuo digitpot sia saldato alla breakout board. L'uso dell'ispezione visiva non è sufficiente. Assicurati di verificare utilizzando la funzione di continuità del tuo multimetro per verificare che tutti i pin del digipot siano collegati elettricamente alla scheda breakout e che non vi siano collegamenti incrociati dei pin della saldatura che potrebbero essere stati collegati a ponte attraverso le tracce.
  • Se il monitor seriale mostra che la posizione del wiper sta cambiando quando si esegue lo sketch ma il valore della resistenza non cambia, questo è un indicatore che WLAT o SHDN non sta effettuando una connessione corretta alla breakout board o ai jumper wiper per WLAT o SHDN non sono collegati correttamente ad Arduino.
  • Assicurati di utilizzare un alimentatore secondario che sia CC tra 10 e 36 volt.
  • Assicurati che l'alimentazione da 10 a 36 volt funzioni misurando la tensione con il multimetro.
  • Prova a usare lo schizzo originale. Se hai apportato modifiche potresti aver introdotto un errore.
  • Se nessuno dei passaggi per la risoluzione dei problemi ha aiutato, prova un altro chip digipot. Speriamo che hai comprato diversi e li saldato allo stesso tempo di una scheda TSSOP breakout quindi dovrebbe essere solo una questione di scambio fuori uno per l'altro. Avevo un chip difettoso che mi ha causato un po' di frustrazione e questa è stata la soluzione.

Passaggio 9: interni e informazioni aggiuntive

Schema elettrico alternativo
Schema elettrico alternativo

Ulteriori informazioni:

Ulteriori informazioni possono essere trovate nella scheda tecnica MCP41HVX1.

La documentazione completa sulla intera libreria MCP41HVX1 è disponibile nel file README.md che fa parte del download biblioteca. Questo file è scritto in mark down ed essere può essere visualizzato e formattata entro Github (guardare in fondo alla pagina) o con un mark down visualizzatore di / redattore.

Comunicazioni tra Arduino e DigiPot:

L'Arduino comunica con il DigiPot tramite SPI. Dopo che la libreria invia un comando di posizione del wiper come WiperIncrement, WiperDecrement o WiperSetPosition, chiama WiperGetPosition per ottenere la posizione del wiper dal chip. Il valore restituito da questi comandi Wiper è la posizione del wiper come lo vede il chip e può essere utilizzato per verificare che il wiper si sia spostato nella posizione prevista.

Funzionalità avanzate (WLAT e SHDN)

Queste funzioni avanzate non sono illustrate nell'esempio "Wiper Control". Nella libreria sono disponibili API per il controllo di WLAT e SHDN. Ci sono anche schizzi di esempio WLAT e SHDN (nella stessa posizione dello schizzo Wiper Control) con la libreria.

SHDN (spegnimento)

SHDN viene utilizzato per disabilitare o abilitare la rete di resistori. L'impostazione di SHDN su basso disabilita e su alto abilita la rete di resistori. Quando la rete di resistori è disabilitata, P0A (pin 13 DigiPot) è scollegato e P0B (pin 11 DigiPot) è collegato a P0W (pin 12 DigiPot). Ci sarà una piccola quantità di resistenza tra P0B e P0W, quindi il tuo misuratore non leggerà 0 ohm.

Se la tua applicazione non ha bisogno di controllare SHDN, puoi collegarla direttamente a HIGH (vedi schema elettrico alternativo). Sarà necessario utilizzare il costruttore o la password corretta nel MCP41HVX1_PIN_NOT_CONFIGURED al costruttore per indicare che SHDN è già cablato. È importante notare che se si segue l'esempio è necessario utilizzare lo schema di cablaggio completo (vedere la fase di cablaggio sopra).

WLAT (Scrivi latch)

L'architettura interna è composta da due componenti su un singolo chip. Uno dei componenti è l'interfaccia SDI e il registro per contenere il valore del wiper. L'altro componente è la rete di resistori stessa. WLAT collega insieme entrambi i componenti interni.

Quando WLAT è impostato su LOW, qualsiasi informazione di comando della posizione del wiper impostata viene passata direttamente alla rete di resistori e la posizione del wiper viene aggiornata.

Se WLAT è posta a HIGH le informazioni di posizione del cursore passata attraverso SPI è tenuto in un registro interno ma non viene passato alla rete di resistenza e quindi la posizione tergicristallo non verrà aggiornato. Una volta che WLAT è impostato su LOW, il valore viene trasferito dal registro alla rete di resistori.

WLAT è utile se si utilizzano più digipot che è necessario mantenere sincronizzati. La strategia è impostare WLAT su HIGH su tutti i digipot e quindi impostare il valore del wiper su tutti i chip. Una volta che il valore tergicristallo è stato inviato a tutte le digipots WLAT possono essere impostati per LOW su tutti i dispositivi contemporaneamente, così che tutti si muovono i tergicristalli contemporaneamente.

Se sei solo controllando una DigiPot o dispone di più, ma non c'è bisogno di essere tenuti in sincronia molto probabilmente non avrete bisogno di questa funzionalità e può quindi WLAT filo direttamente a LOW (vedi schema elettrico alternativo). Sarà necessario utilizzare il costruttore corretto o passare MCP41HVX1_PIN_NOT_CONFIGURED al costruttore per indicare che WLAT è cablato. È importante notare che se si segue l'esempio è necessario utilizzare lo schema di cablaggio completo (vedere la fase di cablaggio sopra).

Passaggio 10: schema elettrico alternativo

Cablaggio

Si ha la possibilità di collegare WLAT dal digpot direttamente LOW / GND invece di collegare ad un pin digitale. Se lo fai, non sarai in grado di controllare WLAT. Hai anche la possibilità di collegare SHDN direttamente a HIGH invece di un pin digitale. Se lo fai non sarai in grado di controllare SHDN.

WLAT e SHDN sono indipendenti l'uno dall'altro, quindi è possibile cablare uno e collegare l'altro a un pin digitale, cablare entrambi o collegare entrambi ai pin digitali in modo che possano essere controllati. Fare riferimento allo schema elettrico alternativo per quelli che si desidera cablare e fare riferimento allo schema elettrico principale nel passaggio 2 per il cablaggio ai pin digitali controllabili.

Costruttori

Ci sono tre costruttori nella classe MCP41HVX. Ne discuteremo due. Sono tutti documentati nel file README.md quindi se interessati al terzo costruttore fare riferimento alla documentazione.

  • MCP41HVX1 (int nCSPin) - utilizzare questo costruttore solo se entrambi WLAT e SHDN sono cablati difficile.
  • MCP41HVX1 (int nCSPin, int nSHDNPin, int nWLATPin) - Utilizzare questo costruttore se uno o WLAT SHDN sono cablati difficile. Passare il costante MCP41HVX1_PIN_NOT_CONFIGURED se il perno è il numero cablata o perno difficile se è collegato ad un pin digitale.

nCSPin deve essere collegato a un pin digitale. E non è valido per passare MCP41HVX1_PIN_NOT_CONFIGURED al costruttore per nCSPin.

Cosa succede se non sto usando un Arduino Uno?

L'Arduino utilizza SPI per comunicare con il digipot. I pin SPI sono pin specifici sulla scheda Arduino. I pin SPI su Uno sono:

  • SCK - pin 13 dell'Uno collegato al pin 2 del digipot
  • MOSI - pin 11 dell'Uno collegato al pin 4 del digipot
  • MISO - pin 12 dell'Uno collegato al pin 5 del digipot

Se stai usando un Arduino che non è Uno, dovrai capire quale pin è SCK, MOSI e MISO e collegarli al digipot.

Gli altri pin utilizzati nello schizzo sono normali pin digitali, quindi qualsiasi pin digitale funzionerà. Dovrai modificare lo schizzo per specificare i pin che scegli sulla scheda Arduino che stai utilizzando. I normali pin digitali sono:

  • CS - pin 10 dell'Uno collegato al pin 3 del digipot (aggiorna CS_PIN nello sketch con un nuovo valore)
  • WLAT - pin 8 dell'Uno collegato al pin 6 del digipot (aggiorna WLAT_PIN nello sketch con un nuovo valore)
  • SHDN - pin 9 sull'Uno collegato al pin 7 sul digipot (aggiorna SHDN_PIN nello sketch con un nuovo valore)

Consigliato: