Autor Tema: (SOLUCIONADO)alguien ha utilizado un potenciometro digital i2c o spi?  (Leído 12688 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
(SOLUCIONADO)alguien ha utilizado un potenciometro digital i2c o spi?
« en: 30 de Diciembre de 2010, 12:38:15 »
Estoy retomando viejos proyectos que se me quedaron en el tintero y este es uno de ellos... quiero implementar a un circuito un potenciometro digital de 4 canales via i2c o spi y la verdad es que no tengo ni idea de como trabajar con el ccs y estos cacharritos tan majos...
alguien tiene algun ejemplo de su utilizacion? yo en comunicacion de i2c he trabajado con el ds1037 y con las eeprom 24cXXX pero esto se me escapa de las manos... En cuanto a la comunicacion spi, puedo asignar cualquier pin del pic? Pueden haber conectados varios dispositivos iguales al mismo canal de comunicacion?
tambien pediria un poco de consejo de cual es el mejor potenciometro relacion calidad/precio,vale la pena poner 4 potenciometros en un solo encapsulado o es mejor 4 separados? yo pienso mas en la segunda opcion...
un saludo y feliz navidad
« Última modificación: 31 de Diciembre de 2010, 12:03:43 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: alguien ha utilizado un potenciometro digital i2c?
« Respuesta #1 en: 30 de Diciembre de 2010, 13:00:52 »
Hola.

Yo hice algunas pruebas con el x9c103 .... pero no son i2c, de hecho son mas sencillos de usar, no se si te sirvan ...

Saludos
El papel lo aguanta todo

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: alguien ha utilizado un potenciometro digital i2c?
« Respuesta #2 en: 30 de Diciembre de 2010, 13:43:15 »
Hola.

Yo hice algunas pruebas con el x9c103 .... pero no son i2c, de hecho son mas sencillos de usar, no se si te sirvan ...

Saludos
gracias MLO_,le echare un vistazo, he visto en el ccs la libreria para el mcp4010 y la verdad es que es muy facil de usar
para enviar el valor set_pot (int data)
para memorizar el valor shutdown_pot ()
pero ahi va mi preguta... puedo conectar varios en los mismos pines del pic? tipo i2c?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #3 en: 30 de Diciembre de 2010, 13:47:15 »
Yo he usado los MCP4651 y sí se pueden colocar varios en el mismo bus.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #4 en: 30 de Diciembre de 2010, 14:08:31 »
Yo he usado los MCP4651 y sí se pueden colocar varios en el mismo bus.

como? en el proteus yo puedo controlar un mcp41010 con las siguientes lineas...
void pot_dig(){
   cuenta=200;            //valor para 3.9V
   set_pot(cuenta);       //envio el valor
   delay_ms(1);
}

como haces para modificar el resto de mcp?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #5 en: 30 de Diciembre de 2010, 14:26:07 »
Colocando 0 y 1 en los pines A0, A1 y A2 obtienes combinaciones diferentes que te permiten diferenciar los MCPs en el mismo bus: ver página 48 de este datasheet

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #6 en: 30 de Diciembre de 2010, 15:12:13 »
Colocando 0 y 1 en los pines A0, A1 y A2 obtienes combinaciones diferentes que te permiten diferenciar los MCPs en el mismo bus: ver página 48 de este datasheet

mira que ya me lo decia mi madre... lee mas hijo.... jajajajaja muchas gracias Nocturno.
La verdad es que  mire el datasheet pero por encima un poco, por que tampoco sabia lo que haria al final.... muy buena opcion la verdad, voy a ver si el nene me deja acabarlo y os cuelgo el proyecto

aprobechando el post, sabeis de alguna libreria de proteus que tenga un ventilador con salida de encoder?
un saludo y gracias MLO_ y Nocturno.... sois la leche....
« Última modificación: 30 de Diciembre de 2010, 15:29:17 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #7 en: 30 de Diciembre de 2010, 18:53:27 »

aprobechando el post, sabeis de alguna libreria de proteus que tenga un ventilador con salida de encoder?

Me autocito para contestarme... en la libreria de Electromechanical hay un motor en DC , se llama MOTOR-ENCODER que puede emular a el comportamiento de un ventilador con encoder...

Por cierto, estaba mirando de implantar al circuito varios mcp41010, que es uno de los potenciometros variables que tiene el proteus, y cual es mi sorpresa?
la gama mcp41XXX no pueden trabajar en el mismo, sin embargo en la gama mcp42XXX si que se puede pero no aparece entre las librerias del proteus.... joer... 
mi gozo en un pozo.....
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #8 en: 30 de Diciembre de 2010, 19:28:20 »
Los mcp41XXX si pueden trabajar en un mismo bus, solo que se necesita una linea CS para cada dispositivo( Es comunicación SPI) Los más conveniente para usar varios es alguno que implemente I2C.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #9 en: 30 de Diciembre de 2010, 20:15:00 »
Los mcp41XXX si pueden trabajar en un mismo bus, solo que se necesita una linea CS para cada dispositivo( Es comunicación SPI) Los más conveniente para usar varios es alguno que implemente I2C.


Saludos!

gracias por la info Suky pero tengo una idea mejor... y en el proteus me funciona de maravilla... esta es la libreria del mcp41010 del ccs
con set_pot(valor); lo que hace es ir a la libreria y ejecutar toda la funcion... pues ahi esta el truco....
Código: [Seleccionar]
set_pot1 (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_pot1 () {
   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);
}

lo que yo hago es cambiar un dos pines del 2º mcp41010 con respecto al primero y edito la libreria cambiando los mismos pines y llamando a la funcion set_pot1(valor) y set_pot2(valor).... asi usare el mismo bus solo que a cada mcp lo modificara el trozo de codigo que este en la correcta posicion

Código: [Seleccionar]
set_pot1 (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_pot1 () {
   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);
}
set_pot2 (int data) {
   BYTE i;
   BYTE cmd[2];

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

   output_low(SCLK);
   output_low(SI);

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

      output_high(SCLK);
      output_low(SCLK);
   }
   output_high(SI);
}

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

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

   output_low(SCLK);
   output_low(SI);

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

      output_high(SCLK);
      output_low(SCLK);
   }
   output_high(SI);
}
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #10 en: 30 de Diciembre de 2010, 20:38:18 »
No entendí. Lo único que hay que modificar es entrar con un parámetro más a la función que seleccione sobre que pin CS actuar y listo  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #11 en: 30 de Diciembre de 2010, 20:54:23 »
No entendí. Lo único que hay que modificar es entrar con un parámetro más a la función que seleccione sobre que pin CS actuar y listo  ;-)


Saludos!
Lo  que pasa, es la falta de pines en el circuito, por eso no puedo poner un CS a cada mcp, y habia pensado en invertir el bus.... y asi controlar de manera correcta e inversa las mcp...

SI -> CS
CS-> SI
SCLK -> SCLK
no habia un ejemplo con un lcd 2x16 en solo 4 pines? me suena algo...
un saludo




« Última modificación: 31 de Diciembre de 2010, 07:26:48 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: (SOLUCIONADO)alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #12 en: 31 de Diciembre de 2010, 12:09:13 »
Ya esta todo solucionado... al final he usado los 4 MCP41010 que trae el proteus con solo 5 pines.... vale la pena ver el ciruito os lo voy a colgar y me dais vuestra opinion y consejo
el circuito es facil de manejar y solo con un pulsador.... si lo pulsas una vez, cambian los valores de RPM y RPS de cada ventilador, si lo que quieres es darle caña al ventilador... mantienes pulsado el pulsador en el ventilador que deseas ajustar la velocidad, cuando este el valor que uno desee pues se suelta el pulsador y wala...
frontal para controlar 4 ventiladores del pc con un lcd y un pulsador 4 MCP41010 y un 16f628A...

os cuelgo un video...

un saludo a todos y muchas gracias a MLO_ ,Nocturno y a Suky..
« Última modificación: 31 de Diciembre de 2010, 13:27:15 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
Re: (SOLUCIONADO)alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #13 en: 15 de Enero de 2011, 11:14:51 »
Estoy jugueteando con un MCP41, y en CCS viene una libreria. La función "set_pot()", está claro su funcionamiento, sirve para posicionar el eje. Pero ¿Para que sirve la otra función "shutdown_pot ()"?

Las he usado antes y despues de posicionar el eje, y no observo ninguna diferencia.

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: (SOLUCIONADO)alguien ha utilizado un potenciometro digital i2c o spi?
« Respuesta #14 en: 15 de Enero de 2011, 14:26:22 »
Estoy jugueteando con un MCP41, y en CCS viene una libreria. La función "set_pot()", está claro su funcionamiento, sirve para posicionar el eje. Pero ¿Para que sirve la otra función "shutdown_pot ()"?

Las he usado antes y despues de posicionar el eje, y no observo ninguna diferencia.

Saludos.

pues facil, se guarda el valor en una eeprom interna y en el momento del encendido, el mcp retorna el valor guardado la verdad es que es una buena opcion para ahorrarte lineas de codigo...
un saludo
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...