Autor Tema: termostato y termometro DS1620, no encuentro la forma de programarlo con Bascom  (Leído 5298 veces)

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

Desconectado robifaria

  • PIC10
  • *
  • Mensajes: 10
Hola, he intentado simular con proteus la programacion del DS1820, pero no he sido capaz de hacerlo funcionar.
He encontrado en el foro de Pic´s una manera de hacerlo de la siguiente forma:
 
'Read_1620:
' RST = 1
' SHIFTOUT DQ,CLK0,LSBFIRST,[$0C,$02] ' Continuous convert, CPU mode
' RST = 0
' PAUSE 10 ' Minimum wait time after write
' RST = 1 ' Enable 1620
' SHIFTOUT DQ, CLK0, LSBFIRST, [$EE] ' Send start temp convert command
' RST = 0 ' Disable 1620
' PAUSE 1000 ' Wait for conversion to complete

' RST = 1 ' Enable 1620
' SHIFTOUT DQ, CLK0, LSBFIRST, [$AA] ' Send read temp command
' SHIFTIN DQ, CLK0, LSBPRE, [Temp\9] ' Read 9 bit temperature
' RST = 0 ' Disable 1620
' Temp = Temp/2 ' Scale reading to whole degrees C.
' Temp = (Temp */ $01CC) ' Multiply by 1.8.
' Temp = Temp + 32 ' Complete C to F conversion.
' IF Temp > 99 THEN Ouch ' Is Temp > 99 deg F..?
' HSEROUT [DEC Temp DIG 1,".",DEC Temp DIG 0,13,10]
' Temp = (Temp DIG 1*16)+Temp DIG 0 ' No. Convert to BCD

Esta es la configuración básica para usarlo como termómetro, no  he probado simularlo con un pic
porque no tengo el picbasic pro.
Leyendo las hojas de datos y comparándo el código me dá la impresión de que tiene que funcionar.
Intenté traducir a bascom éstas líneas y me ha quedado de esta forma:

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Portb = &B01000000
Ddrb = &B11110000

Dim Write_config_command As Byte
Dim Continuous_conversion As Byte
Dim Start_convert_t_command As Byte
Dim Read_temp_command As Byte
Dim Temp As Byte
Dim Temperatura As Integer

  Write_config_command = &H0C
  Continuous_conversion = &H02
  Start_convert_t_command = &HEE
  Read_temp_command = &HAA

Dq Alias Portb.4
Rst Alias Portb.7
Clk Alias Portb.6

Set Rst
Shiftout Dq , Clk , Write_config_command , Continuous_conversion , 2 , 8
Reset Rst
Waitms 100
Set Rst
Shiftout Dq , Clk , Start_convert_t_command , 2 , 8
Reset Rst

Waitms 100


Do
   Set Rst
   Shiftout Dq , Clk , Read_temp_command , 2 , 8
   Shiftin Dq , Clk , Temperatura , 2 , 9
   Reset Rst
   Temp = Temperatura / 2
   Print "temperature: " ; Temp
   Waitms 1000
Loop

End

Tanto en el shiftin como el shiftout los he probado con los modos 2 y 3, pero no he notado ninguna diferencia en el funcionamiento.
Me he encontrado con una diferencia en el código que usé de ejemplo con la hoja de datos en que en el primero hace referencia a
que el valor para conseguir una conversión continua es &H02 y no &H00 como esta en la pagina 9 de la hoja de datos.
Según ésta &H02 es un comando de escritura del umbral de temperatura inferior.
Lo raro es que he visto utilizado &H02 en un ejemplo de Basic Stamp.
Como ven, no he seguido el ejemplo al 100% ya que las conversiones para poder ver la temperatura las he dejado por la mitad pero tiene que ser suficiente para poder ver que los valores cambian cuando modifico el DS1620.
Soy nuevo programando Atmel y aunque la información que trae bascom es buena muchas cosas se aprenden probando.
Para los que quieran usar constantes con shiftin y shiftout solo quiero comentar que estas no funcionan, dan error al compilar. por eso he tenido que declarar variables y luego pasarles el valor.
Si alguien tiene un poco de experiencia en esto se agradece un empujoncito para poder arrancar.
Saludos y buen fin de semana.


« Última modificación: 28 de Febrero de 2008, 00:21:04 por robifaria »

Desconectado robifaria

  • PIC10
  • *
  • Mensajes: 10
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bas
« Respuesta #1 en: 29 de Febrero de 2008, 18:10:31 »
Quizas por querer aclarar demasiado lo que hice es empeorar las cosas.
Empiezo de nuevo,quizas esto desde un principio habría sido lo mejor.
¿Alguien podria explicarme como programar el DS1620 o DS1621 con el Bascom?.
Desde ya se agradece al que se involucre en mi problema.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bascom
« Respuesta #2 en: 29 de Febrero de 2008, 18:23:17 »
Mira en Basic para PICs esta este ejemplo de rentron, igual el SHIFTOUT y SHIFTIN. quizas puedas adaptarlo al BASCOM
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado robifaria

  • PIC10
  • *
  • Mensajes: 10
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bas
« Respuesta #3 en: 29 de Febrero de 2008, 20:53:37 »
Hola navaismo, ese codigo lo transporté  y no me ha funcionado la simulación.
En la página web de bascom hay un ejemplo para el ds1620 pero es un coñazo de programa que con los comentarios incluidos son 310 líneas de programa ( éste si se puede simular).
Curiosamente no utiliza las funciones shiftin ni shiftout.
Voy a comprarlo así sabré si el problema es de simulación o de programación.
Gracias.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bascom
« Respuesta #4 en: 29 de Febrero de 2008, 22:03:24 »
La migracion no debe ser transparente, si cmabiaste aquellos comandos que no soy compatibles?
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado robifaria

  • PIC10
  • *
  • Mensajes: 10
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bas
« Respuesta #5 en: 01 de Marzo de 2008, 11:44:38 »
Ya encontre un error en el código que escribí, pero ahún no funciona.
Desisto por el momento de seguir con el DS1620 y lo reemplazaré por el DS1621 que tiene comunicación I2C.
Aquí hay un excelente ejemplo http://www.avrprojects.net/projects/digitalthermometer.txt
Las configuraciones del termostato son definibles y no-volatiles, esto sumado a que tiene una salida que se activa/desactiva dependiendo de la temperatura y los valores de sus registros debería de ser suficiente para poder utilizarse sin un microcontrolador.

Desconectado robifaria

  • PIC10
  • *
  • Mensajes: 10
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bas
« Respuesta #6 en: 01 de Marzo de 2008, 20:17:58 »
En ese código solo se visualizan valores positivos, para poder ver los valores negativos efectuar las siguientes modificaciones:

Luego de:              Dim Slope As Byte

En la siguiente línea añadir:

           Dim Signo As String * 1



Luego de:               If Templsb = 128 Then Templsb = 5 Else Templsb = 0

En la siguiente línea añadir:

      If Tempmsb > 128 Then
            Tempmsb = 256 - Tempmsb
                Signo = Chr(45)
         Else
            Signo = Chr(0)
        End If



Modificar la línea:     Lcd "**** " ; Tempmsb ; "," ; Templsb ; Chr(0) ; "C" ; " ****"
            por
                              Lcd "**** " ; Signo ; Tempmsb ; "," ; Templsb ; Chr(0) ; "C" ; " ****"   

Con esto queda resuelto la visualización de los valores negativos.

Desconectado robifaria

  • PIC10
  • *
  • Mensajes: 10
Re: termostato y termometro DS1620, no encuentro la forma de programarlo con Bas
« Respuesta #7 en: 01 de Marzo de 2008, 20:46:21 »

 Aquí os dejo una imágen de la simulación con Proteus donde se vé la modificación para representar los valores negativos.

 http://rapidshare.com/files/96295370/DS1621.jpg.html


 

anything