POTENCIOMETRO DIGITAL POR SPI CON MCP41010

 

 

 

En la siguiente entrada se muestra como realizar una comunicación de un PIC 18F4550 por SPI con un potenciómetro digital MCP41010 en el cual realizaremos un control de la resistencia en función de la aplicación de un potencial que circulará por el potenciómetro en cuestión realizaremos una variación del potencial que mostraremos en un LCD alfanumérico de 16×2.

//////////////////////////////////////////////////////////////////////////////

// AUTOR:Daniel Villegas Diaz 2012

//////////////////////////////////////////////////////////////////////////////

// PROGRAMA: POTENCIOMETRO MCP41010 VERSIÓN: 1.0

// DISPOSITIVO: PIC 18F4550 COMPILADOR: PCWHC Compiler v4,093

// Entorno IDE: SIMULADOR: Proteus 7.0 sp1

// TARJETA DE APLICACIÓN: DEBUGGER: icd2

///////////////////////////////////////////////////////////////////////////////

 

///////////////////////////////////////////////////////////////////////////////

// CABECERA ///////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

#include <18F4550.h>

#fuses INTHS //Selecciona el oscilador interno

#use delay(internal=8Mhz) // Selecciona la velocidad del oscilador interno

#include <LCD_SIS.c>

#include <C:\Users\CARMEN\Desktop\programas_C\potenciometro_spi\mcp41010_pinescambiados.c>

#use fast_io(b)

///////////////////////////////////////////////////////////////////////////////

// VARIABLES GLOBALES /////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

float dato=192;

float dato2;

 

///////////////////////////////////////////////////////////////////////////////

// PRINCIPAL //////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

void main()

{

lcd_init(); //inicializamos LCD

lcd_putc(“MCP41010:”); //sacamos un mensaje

delay_ms(500);

lcd_putc(“\f”);

 

lcd_putc(“Daniel Villegas”);

delay_ms(500);

lcd_putc(“\f”);

 

 

lcd_putc(“INICIO:”);

delay_ms(500);

lcd_putc(“\f”);

for(;;)

{

lcd_init(); //inicializamos LCD

lcd_putc(“Potenciometro:”); //sacamos un mensaje

 

 

 

if(!input(pin_b4)==1)

{

dato=dato + 1.0245;

}

if(!input(pin_b5)==1 /*&& dato >= 0.00*/)

{

dato=dato-1.0245;

} //mando dato al potenciometro

lcd_gotoxy(1,2);

//voy a la segunda fila del LCD

 

if((dato>dato2+(dato2/50))||(dato<dato2-(dato2/50)) )//

{

dato2=((dato)*(10000.0)/256.0)-350;

printf(lcd_putc,”%f Ohm “,dato2);

set_pot(dato);

delay_ms(500);

}}

}

 

//if((dato>dato2+(dato2/70))||(dato<dato2-(dato2/70)) )//

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s