Página 1 de 1

Potenciômetro Digital

MensagemEnviado: 08 Mar 2007 12:26
por kaoalex
Tudo bem!
Eu estava pensando em usar um potênciometro digital mcp41010, mas não estou conseguindo montar o circuito para que ele funcione no Proteus. Eu queria controlar a tensão usando ele.
Se alguém pudesse me ensinar como fazer ele funcionar ficaria muito grato.

Um abraço
Alexandre

MensagemEnviado: 08 Mar 2007 21:08
por microeletronica
MCP41010

Pinos:

1 CS Chip Select - Pode ser conectado a qualquer pino do PIC (Pino configurado como saida - Tris 0)
2 SCK Serial Clock - Ligado no SCK da SPI do PIC (Pino configurado como saida - Tris 0)
3 SI Serial Data Input - Ligado no SO do PIC (Pino configurado como saida - Tris 0)
4 VSS Ground - Terra
5 PA0 Terminal A Connection For Pot 0 - Uma das pontas do resistor
6 PW0 Wiper Connection For Pot 0 - Meio do potenciometro
7 PB0 Terminal B Connection For Pot 0 - A outra ponta do resistor
8 VDD Power - 2.7V - 5.5V

Recomendo que vc leia 1,12,13,14 do datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/11195c.pdf

Pra escrever um valor de potenciometro envie pela SPI (Master 0,0) o comando 0b00010001 = 0x11 e em seguida o valor do dado.
0 = 0 ohms(50), e 0xFF = 10K(9980).
Sempre que reseta, vem com valor 0x80, 5K

MensagemEnviado: 09 Mar 2007 13:14
por kaoalex
microeletronica,

Obrigado, vou tentar simular no Proteus.

MensagemEnviado: 11 Mar 2007 12:56
por kaoalex
Consegui! O CCS já tem uma biblioteca pronta.


Código: Selecionar todos
#include <16F877.h>
#fuses xt,NOWDT,PUT,BROWNOUT,NOLVP
#use delay (clock=4000000)

#include <mcp41010.c>

void main()
{
shutdown_pot ();  //shutdown pot to save power
set_pot(255);  //Sets pot to new_value
//while (TRUE)
}


Código: Selecionar todos
///////////////////////////////////////////////////////////////////////////
////   Library for a mcp41010-i/p                                      ////
////                                                                   ////
////   set_pot (int data);  Sets pot to new_value                      ////
////                                                                   ////
////   shutdown_pot ();  shutdown pot to save power                    ////
////                                                                   ////
///////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services           ////
//// This source code may only be used by licensed users of the CCS C  ////
//// compiler.  This source code may only be distributed to other      ////
//// licensed users of the CCS C compiler.  No other use, reproduction ////
//// or distribution is permitted without written permission.          ////
//// Derivative programs created using this software in object code    ////
//// form are not restricted in any way.                               ////
///////////////////////////////////////////////////////////////////////////

#define CS PIN_B4
#define SCLK PIN_B2
#define SI PIN_B1

set_pot (int data) {
   BYTE i;
   BYTE cmd[2];

   cmd[0] = data;
   cmd[1] = 0x11;

   output_low(SCLK);
   output_low(CS);

   for(i=1;i<=16;++i) {
      output_bit(SI, shift_left(cmd,2,0));

      output_high(SCLK);
      output_low(SCLK);
   }
   output_high(CS);
}

shutdown_pot () {
   BYTE i;
   BYTE cmd[2];

   cmd[0] = 0;
   cmd[1] = 0x21;

   output_low(SCLK);
   output_low(CS);

   for(i=1;i<=16;++i) {
      output_bit(SI, shift_left(cmd,2,0));

      output_high(SCLK);
      output_low(SCLK);
   }
   output_high(CS);
}

MensagemEnviado: 11 Mar 2007 16:31
por microeletronica
Legal, parabens