fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Iniciar sensor de temperatura DS18S20

9 Respuestas
5 Usuarios
0 Reactions
6,283 Visitas
isotopo
Respuestas: 113
Topic starter
(@isotopo)
Estimable Member
Registrado: hace 18 años

Me estoy volviendo loco ya y necesito ayuda. Estoy intentando programar el sensor Dallas DS18S20, que usa el bus 1-Wire. Doy por hecho que la conexión está bien, pero pongo una foto por si acaso.

sensortemperatura sensortemperatura

Pues no consigo ni reiniciarlo, se supone que poniendo el nivel bajo el bus durante 500us, al ponerlo como entrada debería de mantenerse bajo durante 60us, pero no se pone bajo ni a palos.

He probado de mil maneras y nada. A ver si alguien que lo haya hecho ve algo que haga mal o que no haga.

Public Sub InitDS18S20()
Dim PinLogicLevel As Byte
Dim n As Byte

Call PutPin(SensorPin, bxInputTristate) ' pin en entrada
Call PutPin(SensorPin, bxOutputLow) ' pin bajo

Delay(500.0E-6) ' mantiene el pulso 500 microsegundos

Call PutPin(SensorPin, bxInputTristate) ' pin en entrada

Delay(60.0E-6) ' he probado diversos tiempos de espera

PinLogicLevel = GetPin(SensorPin) ' pero no da cero: (
Debug.Print Cstr(PinLogicLevel)

End Sub

Responder
8 respuestas
fj_sanchez
Respuestas: 1083
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Mirando a la foto creo que tienes mal puesta la resistencia. Debe de ser una resistencia de Pull-Up (entre DQ y Vdd) y la tienes puesta de pull-down (entre DQ y GND). Conéctala desde el centro a la otra patita.

¡Saludos!

Responder
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

Ummm,¿ Fj estas seguro de que está malo conectada? Yo la veo bien...

Responder
fj_sanchez
Respuestas: 1083
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Oopsss, fallo garrafal, no me di cuenta de que ponía BOTTOM VIEW... Debo de leer 2 veces antes de postear :p

Responder
sphinx
Respuestas: 651
(@sphinx)
Ardero
Registrado: hace 17 años

No he usado el integrado, ni el 1-wire bus, pero hago una observación, dices:
Pues no consigo ni reiniciarlo, se supone que poniendo el nivel bajo el bus durante 500us, al ponerlo como entrada debería de mantenerse bajo durante 60us, pero no se pone bajo ni a palos.
Si debe de estar bajo "durante" esos 60 useg, e introduces un delay de justo 60 useg, nunca conseguirás leer ese nivel bajo, puesto que ya pasó el tiempo. ¿ Por qué no pruebas a poner un delay de 30 useg. o incluso eliminarlo ? Si lo lees antes de que pasen los 60 useg entiendo que obtendrás lo que buscas.

Un saludo,
Sphinx.

Responder
Página 1 / 2
Compartir: