2 jun. 2011

POTENCIOMETRO DIGITAL MCP41010 CON SPI



La finalidad de este ejercicio es el estudio del potenciometro digital MCP41010 controlado con el pic 18F4550 mediante el bus SPI.

Deberéis leeros las características del potenciometro en el datasheet que os dejare en el enlace de descarga o también lo podéis ver AQUÍ.

En el CCS hay una librería para el MCP41010 que sirve como guía para hacer el programa principal, pero que también debe ser incluida para que funcione el programa, al igual que la del LCD, os las paso con el programa.

Una vez echado un vistazo a esa librería comenzaremos a realizar el código del programa, yo le he hacho de tal manera que escribo un dato desde la dirección 0x00 hasta la 0x0A, pero puedes poner la dicección que quieras sin pasarte de la 0xFF, y sale el valos 351,56 ohm en el LCD, luego espera 4 segundos y vuelve a empezar.

///////////////////////////////////////////////////////////////////////////////
//   AUTOR: Clara Alonso Fernández                       Junio/2011
//////////////////////////////////////////////////////////////////////////////
//   PROGRAMA: Potenciometro MCP41010        VERSIÓN:    1.0
//   DISPOSITIVO: PIC 18F4550                COMPILADOR: PCWHC Compiler v4,093
//   Entorno IDE:                            SIMULADOR:  Proteus 7.7 sp2
//   TARJETA DE APLICACIÓN: Virtual          DEBUGGER: Virtual
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// CABECERA ///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>    //Pic que se va a utilizar.
#fuses INTHS            //Configuración para el oscilador interno.
#use delay(internal=8Mhz)   //Configuración de la velocidad del oscilador interno.
#include <LCD_flexible5.c>    //Librería para ql funcionamiento del LCD.
#include <mcp410101.C>  //Librería para el funcionamiento del potenciometro digital.
///////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES /////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
int a;      //Dato que se escribe en el potenciometro.
float b;    //Dato en ohmios.
///////////////////////////////////////////////////////////////////////////////
// FUNCIONES //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void main()
{
lcd_init();                     //Esta función inicializa LCD.
lcd_putc("     MCP41010");      //Muestra en el LCD ese mensaje.
do{                             //Se crea un bucle infinito para que esté todo el rato en funcionamiento el potenciometro.
for(a=0x00;a<0x0A;a++) //Escribimos el valor que queremos. En este caso e puesto de 0x00 a
                                        //0xxA para que el potenciometo tenga un valor de 315,56 ohmios.
{                                                                        
set_pot(a);                     //Con esta función mandamos el dato del valor al potenciometro.
lcd_gotoxy(1,2);                //Movemos el cursor a la segunda fila del LCD.
b=(a*10000.0)/256.0;            //Esta es la ecuación para obtener los ohmios.
printf(lcd_putc,"%f Ohm    ",b);   //Se muestra en el LCD el calculo.
delay_ms(200);                  //Retardo de 200ms
}
delay_ms(4000);                //Retardo de 4 seg para que de tiempo a ver bien el valor del potenciometro.
}while(1);
}

Después hacemos la simulación y el diseño con el PROTEUS. Con el ISIS hacemos la simulación, para ello necesitamos los siguientes componentes: el PIC18F4550, el potenciometro digital MCP41010, un pulsador para el reset, una resistencia de 10K y otra de 470R, y una regleta de dos entradas.


luego pasamos al ARES para el diseño de la PCB. Colocamos los componentes y le damos al "auto-route" para tirar las pistas y ya tenemos el diseño hecho.


Para hacernos una idea de como quedaría la placa utilizamos el "3D visualization"




Aquí os dejo un enlace para que podáis descargaros el código, la simulación, las librerías y el datasheet del MCP41010: http://cid-64f7131e50857260.office.live.com/self.aspx/POTENCIOMETRO/POT.rar




1 comentarios:

Froylan Alonso Gonzalez Contreras dijo...

Hola que tal estoy elaborando una fuente y quisiera saber si puedo sustituir los potenciometros para variar el voltaje por un circuito de esos??? ... por cierto muy buen Blog =) saludos espero su respuesta !!

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes Powered by Blogger | DSW printable coupons