Este artigo mostra como implementar um controle para potenciômetros digitais, usando o microcontrolador 68HC908GP32 da Motorola.

Artigo publicado na revista Eletrônica Total 99 de 2004

 

 

O CIRCUITO

Para o desenvolvimento deste circuito foi utilizado o potenciômetro X9C103P de 10 kohms da Xicor. A figura 1 ilustra o diagrama esquemático para o controle do potenciômetro digital, baseado no microcontrolador MC68HC908GP32 da Motorola. Empregando potenciômetros digitais, as aplicações de áudio e vídeo, controle e instrumentação podem ser controladas mais facilmente por microcontroladores ou computadores.

 


| Clique na imagem para ampliar |

 

 

O circuito integrado X9C103P é um dispositivo de estado sólido que pode ser usado como um potenciômetro mecânico. Assim, ele pode ser operado como um potenciômetro de 3 terminais ou como um resistor variável de 2 terminais. É necessário observar as características elétricas do potenciômetro digital e sua folha de dados (datasheet) para ver se pode ser empregado na aplicação visada.

A figura 2 apresenta um diagrama de blocos do potenciômetro, no qual podemos observar as três linhas de controle:

 


 

 

 

U/D: Controla o sentido do terminal móvel

INC: Usada como clock, se encarrega de mover o terminal móvel.

CS: Seleciona o circuito.

Os seguintes pinos de saída representam o potenciômetro:

VH//RH e VURL: São equivalentes aos terminais fixos de um potenciômetro mecânico. VW/RW: É equivalente ao cursor de um potenciômetro mecânico.

Na figura 3 pode-se observar a configuração de pinos do Cl X9C103P. Internamente, o potenciômetro tem 3 blocos principais: um para contar e decodificar as entradas. uma memória não volátil e um conjunto de resistores. A seção de contagem opera como um contador UP/DOWN. Esse contador está conectado a um decodificador de 7 entradas e 100 saídas, o qual se encarrega de ligar um ponto da rede de resistores ao terminal de cursor do potenciômetro. A rede de resistores é composta de 99 resistências individuais conectadas em série. Em paralelo com cada resistência há uma chave eletrônica que transfere o potencial desse ponto ao terminal de cursor.

 


 

 

 

Quando o potenciômetro é desconectado da fonte de alimentação, a última posição armazenada do cursor se mantém na memória não volátil. Quando a alimentação é restabelecida, o conteúdo da memória é recarregado no contador e o terminal do cursor é colocado no último valor armazenado.

Para controlar o potenciômetro, é necessário que os pinos de entrada INC, U/D e CS estejam numa determinada ordem ou sequência lógica. Inicialmente, coloca-se a linha CS no nível baixo para selecionar o circuito e permitir que o potenciômetro responda às entradas INC e UD. Transições de nível alto para baixo incrementam ou decrementam o contador de 7 bits dependendo do nível lógico da linha U/D.

O valor do contador é armazenado na memória não volátil, se a linha CS vai do nível baixo para o alto, isso quando a linha INC se encontra no nível alto.

Todas as sequências anteriores são controladas pelo microcontrolador, bastando para isso pressionar a tecla UP ou DOWN para movimentar o cursor. Uma vantagem de se usar microcontroladores, é que as linhas INC e U/D podem ser utilizadas para controlar vários potenciômetros, bastando selecionar pela linha CS qual receberá a informação de controle. A figura 4 exibe algumas aplicações típicas para potenciômetros digitais.

 


| Clique na imagem para ampliar |

 

 

 

O PROGRAMA

 

O programa começa configurando: os pinos de entrada/saída, o timer1 e as interrupções. Depois, são inicializadas as posições de memória RAM e, finalmente, o programa entra no bloco principal.

Nesse bloco é chamada a rotina InButton, que se encarrega de testar os pulsadores UP e DOWN. Quando uma tecla é pressionada, o contador tmreButton se encontra em zero (0) e o programa permite o acesso as rotinas PotentiometerUP ou PotentiometerDown, dependendo de qual foi pulsada. Depois, é carregada a posição de memória RAM (variável) tmreButton com 40 em decimal. a qual é decrementada a cada milissegundo pelo timer1.

Transcorrido esse tempo a variável chega a zero (0) e se o pulsador continuar pressionado a rotina será inicialmente chamada. A rotina PotentiometerUP coloca no nível alto a saída UPDOWN, e a rotina PotentiometerDown no nível baixo. Em seguida é colocada no nível baixo a linha CS para selecionar o potenciômetro. Depois, é invertida (toggle) a saída INC para gerar os pulsos para o contador interno do potenciômetro.

A rotina de interrupção do timer1 testa se a variável tmreButton está em zero. Se está em zero, a rotina sai. Se o valor é diferente de zero, então o programa decrementa esta variável. Nesse ponto é testado se não existem pulsadores pressionados. Se há algum pulsador pressionado, a rotina sai. Se não existem pulsadores pressionados, então é executada a sequência de código que permite atualizar o valor do contador interno do potenciômetro na memória não volátil.

O circuito integrado X9C103P é controlado por três linhas, mas o mesmo fabricante oferece também potenciômetros digitais para os barramentos I2C e SPI.

O arquivo incluído no código para microcontroladores 68HC908GP32

$Include 'opgtregs.inc' pode ser baixado do sitewww.pemicro.com/index.htrn1

 


 

 

 

 

NO YOUTUBE


NOSSO PODCAST