Uso del potenciómetro digital MCP41xx con Arduino

Uso del potenciómetro digital MCP41xx con Arduino

En este proyecto vamos a conectar un potenciómetro digital con arduino. En esta demostración se utiliza el potenciómetro MCP41010, pero puede utilizar cualquier potenciómetro digital de la serie MC41 **.

Por Ankit Negi



INTRODUCCIÓN AL MC41010

Los potenciómetros digitales son como cualquier potenciómetro analógico con tres terminales con una sola diferencia. Mientras que en uno analógico hay que cambiar manualmente la posición del limpiaparabrisas, en el caso del potenciómetro digital, la posición del limpiaparabrisas se ajusta de acuerdo con la señal dada al potenciómetro usando cualquier microcontrolador o microprocesador.



HIGO. Configuración de pines IC MC41010

HIGO. Configuración de pines IC MC41010

El MC41010 es un IC de paquete en línea dual de 8 pines. Al igual que cualquier potenciómetro analógico, este IC viene en 5k, 10k, 50k y 100k. En este circuito se usa potenciómetro de 10k
MC4131 tiene los siguientes 8 terminales:



Pin no. Pin Nombre Pequeña descripción

1 CS Este pin se utiliza para seleccionar el esclavo o periférico conectado a arduino. Si esto es
Bajo, entonces se selecciona MC41010 y si es alto, entonces se deselecciona MC41010.

2 SCLK Shared / Serial Clock, arduino proporciona un reloj para la inicialización de la transferencia de datos desde
Arduino a IC y viceversa.

3 Los datos en serie SDI / SDO se transfieren entre arduino e IC a través de este pin
4 El terminal de tierra VSS de arduino está conectado a este pin de IC.



5 PA0 Este es un terminal del potenciómetro.

6 PW0 Este terminal es el terminal limpiaparabrisas del potenciómetro (para cambiar la resistencia)
7 PB0 Este es otro terminal del potenciómetro.

La alimentación de 8 VCC a IC se proporciona a través de este pin.

Este IC contiene solo un potenciómetro. Algunos IC tienen como máximo dos potenciómetros incorporados. Esta
El valor de la resistencia entre el limpiaparabrisas y cualquier otro terminal se cambia en 256 pasos, de 0 a 255. Como estamos usando una resistencia de 10k, el valor de la resistencia se cambia en pasos de:
10k / 256 = 39 ohmios por paso entre 0 y 255

COMPONENTES

Necesitamos los siguientes componentes para este proyecto.

1. ARDUINO
2. MC41010 IC
3. RESISTENCIA DE 220 OHMIOS
4. LED
5. CONEXIÓN DE CABLES

Realice las conexiones como se muestra en la fig.

1. Conecte el pin cs al pin digital 10.
2. Conecte el pin SCK al pin digital 13.
3. Conecte el pin SDI / SDO al pin digital 11.
4. VSS al pin de tierra de arduino
5. Pin PA0 a 5v de arduino
6. PB0 a tierra de arduino
7. PWO al pin analógico A0 de arduino.
8. VCC a 5 v de arduino.

CÓDIGO DE PROGRAMA 1

Este código imprime el cambio de voltaje en el terminal del limpiaparabrisas y la tierra en el monitor serial de Arduino IDE.

|_+_|

EXPLICANDO EL CÓDIGO 1:

Para usar el potenciómetro digital con arduino, primero debe incluir la biblioteca SPI, que se proporciona en el propio IDE de arduino. Simplemente llame a la biblioteca con este comando:
#incluir

En la configuración vacía, los pines se asignan como salida o entrada. Y también se dan comandos para comenzar SPI y la comunicación serial entre arduino e ic, que son:

|_+_|

En bucle vacío, el bucle for se utiliza para cambiar la resistencia del potenciómetro digital en un total de 256 pasos. Primero de 0 a 255 y luego de nuevo a 0 con un retraso de 10 milisegundos entre cada paso:

|_+_|

La función digitalPotWrite (i) escribe este valor para cambiar la resistencia en una dirección particular de ic.

La resistencia entre el limpiaparabrisas y el terminal final se puede calcular usando estas fórmulas:

R1 = 10k * (256 niveles) / 256 + Rw
Y
R2 = 10k * nivel / 256 + Rw

Aquí R1 = resistencia entre el limpiaparabrisas y un terminal
R2 = resistencia entre limpiaparabrisas y otro terminal
Nivel = paso en un instante particular (variable 'I' usada en el bucle for)
Rw = resistencia del terminal del limpiaparabrisas (se puede encontrar en la hoja de datos del ic)
Usando la función digitalPotWrite (), el chip del potenciómetro digital se selecciona asignando un voltaje BAJO al pin CS. Ahora que se selecciona el ic, se debe llamar a una dirección en la que se escribirán los datos. En la última parte del código:

Transferencia SPI (B00010001)

Se llama a la dirección que es B00010001 para seleccionar el terminal limpiador del ic en el que se escribirán los datos. Y, por lo tanto, para el valor del bucle, es decir, se escribe i para cambiar la resistencia.

CIRCUITO DE FUNCIONAMIENTO:

Siempre que el valor de i siga cambiando la entrada al pin A0 de arduino, también seguirá cambiando entre 0 y 1023. Esto sucede porque el terminal del limpiaparabrisas está conectado directamente al pin A0 y el otro terminal del potenciómetro está conectado a 5 voltios y tierra respectivamente. Ahora, cuando la resistencia cambia, también lo hace el voltaje a través de ella, que arduino toma directamente como entrada y, por lo tanto, obtenemos un valor de voltaje en el monitor en serie para un valor particular de resistencia.

SIMULACIÓN 1:

Estas son algunas imágenes de simulación para este circuito con varios valores de i:

Ahora simplemente conecte un led en serie con una resistencia de 220 ohmios al terminal de limpiaparabrisas del IC como se muestra en la figura.

CÓDIGO 2:

|_+_|

EXPLICANDO EL CÓDIGO 2:

Este código es similar al código 1 excepto que no hay comandos seriales en este código. Por lo tanto, no se imprimirán valores en el monitor de serie.

EXPLICACIÓN DE TRABAJO

Dado que el LED está conectado entre el terminal del limpiaparabrisas y la tierra a medida que cambia la resistencia, también lo hace el voltaje a través del LED. Y por lo tanto, a medida que la resistencia a través de la cual está conectado el LED aumenta de 0ohm al máximo, también lo hace el brillo del LED. Que nuevamente se desvanecen lentamente debido a la disminución de la resistencia del máximo a 0v.

Simulación2

Simulación3




Artículo anterior: Cómo controlar el servomotor con joystick Siguiente: Haga este amperímetro digital avanzado usando Arduino