TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pocher en 02 de Mayo de 2004, 13:42:00

Título: Potenciometro digital DS1869
Publicado por: pocher en 02 de Mayo de 2004, 13:42:00
¿Teneis algún programa en C para el control de este potenciómetro digital o de otro de similares características?

Un saludo
Título: RE: Potenciometro digital DS1869
Publicado por: Ginho_rj en 02 de Mayo de 2004, 15:13:00
ond encontro especificações dele ?que tipo de comunicação?
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 02 de Mayo de 2004, 23:45:00
En esta dirección hay una breve descripción, así como el enlace al datasheet.

http://www.x-robotics.com/hardware.htm

Un saludo
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 04 de Mayo de 2004, 07:06:00
Ya está, solucionado ...
Título: RE: Potenciometro digital DS1869
Publicado por: MGLSOFT en 04 de Mayo de 2004, 07:49:00
pUEDES PONER LA SOLUCION??
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 04 de Mayo de 2004, 09:37:00
Esto es lo que hice y comprobé ayer por la tarde:

Codigo:
//                  Potenciómetro digital

#include <16f876.h>
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay(clock=4000000)

void main(void)
{
   output_high(PIN_B0);           //DC=1
   output_high(PIN_B1);           //UC=1
   output_high(PIN_B2);           //D=1
                      
      while(1)
      {
         if(input(PIN_A0))         //Potenciómetro ascendente paso a paso
         {
            output_low(PIN_B1);
            delay_ms(50);
            output_high(PIN_B1);                                       
            while(input(PIN_A0));
            delay_ms(50);                                    
         }
         if(input(PIN_A1))         //Potenciómetro descendente paso a paso
         {
            output_low(PIN_B0);
            delay_ms(50);
            output_high(PIN_B0);                                       
            while(input(PIN_A1));
            delay_ms(50);                                    
         }
         if(input(PIN_A2))         //Potenciómetro ascendente automático
         {
            output_low(PIN_B1);
            delay_ms(50);                              
            while(input(PIN_A2));
            output_high(PIN_B1);            
            delay_ms(50);                                    
         }          
         if(input(PIN_A3))         //Potenciómetro descendente automático
         {
            output_low(PIN_B0);
            delay_ms(50);                           
            while(input(PIN_A3));
            output_high(PIN_B0);                  
            delay_ms(50);                                    
         }
         if(input(PIN_A4))         //Sube y baja indefinidamente hasta que B2=1
         {
            output_low(PIN_B2);
            delay_ms(50);                           
            while(input(PIN_A4));
            output_high(PIN_B2);                  
            delay_ms(50);                                    
         }
                       
   }
}





Falta añadir el if que controlaría al potenciómetro mediante la entrada D (CPU), MGL ¿te podrías tú encargar de eso?

Un saludo
Título: RE: Potenciometro digital DS1869
Publicado por: Ginho_rj en 04 de Mayo de 2004, 09:39:00
vi agora o datsheet ,pelo que não tem nenhum mistério
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 05 de Mayo de 2004, 00:04:00
Ginho_rj, podrías hacer esto: añadir el if que controlaría al potenciómetro mediante la entrada D (CPU).

MGLSOFT yu-hu, estas por ahí?
Título: RE: Potenciometro digital DS1869
Publicado por: MGLSOFT en 05 de Mayo de 2004, 08:43:00
Si estoy, Pocher...
Dame un rato, estoy bajando la hoja de datos.
Mi duda es como saber en que valor esta el pote desde dentro del micro ??
Es decir yo guardo un determinado valor y luego de un arranque quiero ir inmediatamente a el, el micro tendra un valor y el pote tendra otro guardado en su eeprom interna.
Como solucionarlo ??
Título: RE: Potenciometro digital DS1869
Publicado por: MGLSOFT en 05 de Mayo de 2004, 12:50:00
Yo tengo un pote digital de Xicor, de 100 pasos, pero tiene tres entradas, CS, U/D y una habilitacion.
No es muy diferente a este.

Baje la hoja de datos, pero no explica como se utiliza el pin de interface con microprocesador !!

En el ejemplo pusiste un testeo de ese pin donde decis que aumenta indefinidamente, pero eso no concuerda con la hoja de datos!!

Lo probaste en la practica??
Lo has simulado??
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 05 de Mayo de 2004, 13:05:00
Sí los 5 if estan comprobados físicamente.

Es esta entrada D, la que no sé como funciona, será una tontería pero no caigo.

Yo también tengo info de un potenciómetro de Xicor, el X9313 y su funcionamiento lo entiendo perfectamente: una entrada de habilitación de chip, una para programar que vaya arriba ó abajo y otra de pulsos ... muy fácil. Pero este no lleva la entrada dichosa D.

En fin ya se solucionará.
Título: RE: Potenciometro digital DS1869
Publicado por: MGLSOFT en 05 de Mayo de 2004, 13:12:00
Pero en el quinto IF estas utilizandola...
Lo hiciste para ver que pasaba o que??
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 05 de Mayo de 2004, 13:44:00
Sí hice varias pruebas, pero aún no sé para qué sirve y como se usa.
Título: RE: Potenciometro digital DS1869
Publicado por: Nocturno en 06 de Mayo de 2004, 03:54:00
A lo mejor digo una tontería pero he leído un párralo en el datasheet del DS1869 que dice lo siguiente:

The digital source input, D, was designed for microprocessor or controlled applications. This control input manipulates the device in the same manner as the single pushbutton configuration, controlling movement of the wiper position in both upward and downward directions. One added feature over the single pushbutton configuration is the ability to increment or decrement wiper position at a faster rate. Digital source input control is available regardless of the type of pushbutton configuration.

Por lo que interpreto es exactamente igual que la otra entrada, aunque con una respuesta más rápida. Sin embargo, creo que para elegir si quieres subir o bajar el potenciómetro, por cojones tendrás que hacer una pausa mayor a un segundo.
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 06 de Mayo de 2004, 04:24:00
Sí ahí está el problema, que no sé como hacer que suba o baje paso a paso pero usando la entrada D, y el parrafito de marras que adjuntas ya me lo había leido 20 veces y no dice nada acerca de como hacerlo.

La pregunta exacta es: ¿qué combinación hay que poner en DC, UC y D para hacer que suba o baje pero enviando pulsos por la entrada D?
Título: RE: Potenciometro digital DS1869
Publicado por: Nocturno en 06 de Mayo de 2004, 04:41:00
Creo haber entendido que tu mandas micropulsos a la entrada D y eso hara que aumente o disminuya un paso con cada micropulso.
Cuando quieras cambiar el sentido del movimiento, tienes que enviar un pulso de duración superior a un segundo y entonces cambia.
Lo que no aparece es como saber a priori si "apunta" hacia arriba o hacia abajo antes de moverlo.
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 06 de Mayo de 2004, 04:50:00
Voy a hacer unas pruebas, ya que todavía tengo el circuito montado.
Título: RE: Potenciometro digital DS1869
Publicado por: cucaracha en 06 de Mayo de 2004, 05:14:00
Quizá este modelo no tenga esta opción. Osea, que su finalidad sea por ejemplo controlar contraste en un display... da igual donde esté el pot. Se vé...
También miré el data. Y entendí lo mismo que nocturno...

Tengo por aquí un par de modelos de potenciómetro que pedí por samples:
DS1804
DS1868

El primero es del estilo a éste. Tampoco se puede conocer el estado en que se encuentra.
El segundo en cambio va por serie. Permite 256 posiciones del potenciómetro. Trae además dos pot. en el mismo chip.
Título: RE: Potenciometro digital DS1869
Publicado por: pocher en 06 de Mayo de 2004, 06:26:00
Después de hacer unas cuantas pruebas:

Partiendo de UC=DC=1.

- Ascendente: 1º Hacer UC=0, UC=1 (sentido ascendente) y 2º lanzar x pulsos por D (Temporización<1s).

- Descendente: 1º Hacer DC=0, DC=1 (sentido descendente) y 2º lanzar x pulsos por D (Temporización<1s).

De todas formas no le veo utilidad a esto ya que si lo que quieres es hacerlo subir lo único que tienes que hacer es mandar pulsos a UC manteniendo DC=1 y para bajar mandar pulsos a DC manteniendo UC=1. En fin ...