O DS1620 possui dois modos: em um modo, ele age como um chip de termostato próprio, e em outro modo você o acopla a um computador e o usa como um termômetro. A EEPROM armazena lembra do modo atual bem como das temperaturas ajustadas para o termostato.
Conectar o DS1620 ao Stamp é muito fácil. O DS1620 vem como um chip de 8 pinos. Alimente o pino 8 do DS1620 com +5 volts do Stamp. Aterre o pino 4 do DS1620. Então você usa três pinos de E/S do Stamp para acionar três pinos no DS1620:
![]() |
Você pode obter um DS1620 da Jameco (peça número 146456) ou da Parallax (peça número 27917) num "kit de aplicação" que inclui o chip, o capacitor, boa documentação e códigos de exemplo. Ou você pode comprar somete o chip da Jameco (peça número 114382). Eu sugiro comprar um kit de aplicação na primeira vez que você usar o DS 1620 porque a documentação é muito útil.
Você pode montar o DS1620 na área de prototipagem da placa portadora do Stamp ou numa placa de montagem separada. Uma vez que você o tenha montado, conecte seu visor LCD no pino 3 de E/S do Stamp, e então carregue e execute o seguinte programa:
symbol RST = 0 ' linha seleciona/reseta em 1620
symbol CLK = 1 ' linha de clock para registradores de deslocamento no 1620
symbol DQ = 2 ' linha de dados no 1620
symbol DQ_PIN = pin2 ' representação do pino para DQ
symbol LCD = 3 ' liha de dados para o LCD
inicio:
low RST ' deseleciona o 1620 a menos que esteja conversando com ele
high CLK ' pino de clock do 1620 por "default" em nível alto
pause 1000 ' esperar a inicialização do termômetro e do LCD
setup:
high RST ' seleciona o 1620
b0 = $0C ' $0c é o byte de comando do 1620 ' dizendo "Write Config"
gosub shift_out ' envia-o ao 1620
b0 = %10 ' %10 é o byte de comando do 1620 ' para configurar o modo do termômetro
gosub shift_out ' envia-o ao 1620
low RST ' deseleciona o 1620
pause 50 ' atraso de 50ms para a EEPROM
start_convert:
b0 = $EE ' $EE é o byte de comando do 1620 ' para iniciar conversões
high RST ' selecionar o 1620 gosub shift_out ' envia-o ao 1620
low RST ' desseleciona o 1620 ' Este é o loop principal ' - lê e mostra a temperatura a cada segundo
loop_principal:
high RST ' selecionar o 1620
b0 = $AA ' $AA é o byte de comando do1620 ' para ler a temperatura
gosub shift_out ' enviá-lo ao 1620
gosub shift_in ' lê a temperatura ' a pertir do 1620
low RST ' deselecionar o DS1620.
gosub display ' mostra a temperatura em graus C
pause 1000 ' aguarda um segundo
goto loop_principal
' A subrotina shift_out envia o que estiver no
' byte b0 para o 1620
shift_out:
output DQ ' configura o pino DQ para ' modo de saída
for b2 = 1 to 8
low CLK ' preparar para carregar o bit ' no 1620
DQ_PIN = bit0 ' envia o bit de dados
high CLK ' carrega o bit de dados no 1620
b0 = b0/2 ' desloca todos os bits para a direita ' na direção ao bit 0
next
return
' A subrotina shift_in obtêm a
' temperatura em 9 bits do 1620
shift_in:
input DQ ' configura o pino DQ para ' modo de entrada
w0 = 0 ' limpa w0
for b5 = 1 to 9
w0 = w0/2 ' desloca a entrada para a direita.
low CLK ' pede ao 1620 o próximo bit
bit8 = DQ_PIN ' lê o bit
high CLK ' alterna o pino do clock
next
return
' Mostra a temperatura em graus C
mostra:
if bit8 = 0 then pos
' if bit8=1
' então a temperatura é negativa
b0 = b0 and/ b0
' inverter b0 com o uso de NAND
' a operação NAND com ele mesmo
b0 = b0 + 1
pos:
serout LCD, n2400, (254, 1)
' limpar o LCD
serout LCD, n2400, ("Temp = ")
' mostrar "Temp="
' no visor
bit9 = bit0
' gravar o meio grau
b0 = b0 / 2
' converter para graus
if bit8 = 1 then neg
' ver se a temperatura é negativa
serout LCD, n2400, (#b0)
' mostra temperatura positiva
goto meio
neg:
serout LCD, n2400, ("-", #b0)
' mostra temperatura negativa
meio:
if bit9 = 0 then zero
serout LCD, n2400, (".5 C")
' mostra o meio grau
goto pronto
zero:
serout LCD, n2400, (".0 C")
' mostra o meio grau
Pronto:
returnSe você executar este programa, você verá que ele mostra a temperatura em graus Celsius com uma precisão de meio grau.
O DS1620 mede a temperatura em metades de graus Celsius. Ele retorna a temperatura em num número de 9 bits em complemento de 2s numa faixa de -55 a 125ºC. Se você dividir o número que receber por dois obtém a temperatura real. Números binários em complemento de 2s são uma maneira conveniente de representar valores negativos. A lista a seguir mostra os valores para um número de 4 bits em complemento de 2s:
0111 : 7
0110 : 6
0101 : 5
0100 : 4
0011 : 3
0010 : 2
0001 : 1
0000 : 0
1111 : -1
1110 : -2
1101 : -3
1100 : -4
1011 : -5
1010 : -6
1001 : -7
1000 : -8
Aqui está o que acontece com o programa do termômetro digital mostrado:
O programa então entra em um loop. A cada segundo, ele envia um comando ao DS1620 dizendo ao DS1620 para retornar a temperatura atual e então lê o valor de 9 bits que o DS1620 retorna à variável w0. O Stamp envia e recebe dados de 1 bit por vez alternando a linha CLK no DS1620. Lembre-se que a variável w0 (16-bit) sobrepõe as variáveis b0/b1 (8 bits), que sobrepõe as variáveis bit0/bit1/.../bit15 (1 bit). Então quando você insere um bit do DS1620 num bit 8 e divide w0 por 2, o que você está fazendo é transferindo cada bit para o local correto da temperatura de 9 bits do DS1620 no w0. Uma vez que a temperatura tenha sido salva em w0, a subrotina mostrada determina se o número é positivo ou negativo e o mostra adequadamente no LCD como temperatura em graus Celsius. A conversão de graus C em F é:
Neste ponto, tivemos sucesso em criar um termômetro extremamente caro. O que você pode fazer com isso? Aqui vai uma idéia. Digamos que você trabalhe em uma indústria farmacêutica e está transportando medicamentos pelo país e que devem permanecer numa certa temperatura todo o caminho ou os medicamentos se deteriorarão. O que você pode fazer com o Stamp é criar um termômetro de registro de dados. Tanto a Jameco (peça número 143811) quanto a Parallax (part number 27960) vendem um equipamento chamado "módulo RAM Pack". Ele contém um chip RAM de 8 kilobytes (ou 32 kilobytes opcionalmente) de baixa potência com uma interface serial. Você pode adicionar este componente (ou algo similar) ao seu Stamp e escrever códigos que gravam leituras de temperatura na RAM a cada minuto. Você pode então colocar seu Stamp no transporte de medicamentos e ao final da viagem recuperar o Stamp. O módulo RAM conteria o histórico de temperatura de toda a viagem e você saberia se os medicamentos foram danificados.
Há muitos tipos de equipamentos interessantes e úteis que você pode construir com seu Stamp agora que você sabe como funcionam os microcontroladores.
Para mais informações sobre microcontroladores ou tópicos relacionados, visite os links da próxima página.