Forum: Mikrocontroller und Digitale Elektronik DS18S20+ im Parasite-Modus klappt nicht


von Slevin (Gast)


Lesenswert?

Hallo,

ich habe einen RN-Control Atmega32 @ 16MHz mit einem D18S20+
(normale Beschaltung mit Vdd, Code von Martin Thomas:
http://www.siwawi.arubi.uni-kl.de/avr_projects/tempsensor/index.html)
und bei mir funktioniert das schon ganz gut. (Hab auch durch euch jede 
Menge Hilfestellungen bekommen ;))
Jedoch im Parasite-Modus gibt der µC konstante +85,0°C aus, kennt jemand 
eine
Lösung dafür (Delay anpassen?).
Außerdem kann ich ebenfalls nicht den Port ändern (aktuell auf PD6 (am
Input Capture Pin)), gibt es da eine Möglichkeit diesen zu ändern, z.B
auf Port A?

MfG
Slevin

von Michael B. (planlessmichi)


Lesenswert?

Slevin schrieb:
> gibt es da eine Möglichkeit diesen zu ändern, z.B auf Port A?

--> Zeile(n) 19 (bis 23) in der von Dir zitierten Sourcecode-Quelle 
(Datei onewire.h) scheint die richtige Stelle zu sein; hab's aber nur 
kurz überflogen.

#define OW_PIN  PD6
#define OW_IN   PIND
#define OW_OUT  PORTD
#define OW_DDR  DDRD
#define OW_CONF_DELAYOFFSET 0

von BvB (Gast)


Lesenswert?

Hallo Slevin,
wenn der DS18S20er im extern gespeisten Mode einwandfrei funktioniert 
und im Parasit-Mode immer nur 85 C liefert, so liegt das i.a. daran , 
daß der Pull-Up-Widerstand zu hoch dimensioniert ist oder das ganz 
allgemein, der DS1820er zum Zeitpunkt der Wandlung nicht genug Strom 
über die Port-Leitung bekommt: der DS18S20er benötigt während der 
Wandlung bis zu 1,5 mA. Wenn dieser Strom über die parasitäre Speisung 
nicht geliefert wird, setzt sich der DS1820er intern zurück und die 85 C 
sind der Reset-Wert in den Temp.-Registern. Das Auslesen des Meßwertes 
selber benötigt dann wesentlich weniger Strom und so erhälst Du immer 
nur 85 C.
Du mußt dann ev. einen MOSET-Transistor verwenden, wie im Datenblatt des 
DS18S20ers angegeben.

(s. auch unser kleines Projekt unter:
Beitrag "1-Wire-Bus-Projekt: DS1820  DS18S20  DS2450  DS2408  unter C und 8051",  S. 63 des pdf-Files)

Gruß

Bernd

von BvB (Gast)


Lesenswert?

Ich habe eine falsche Seite angegeben: richtig ist S.68 in der 
Projektbeschreibung

Bernd

von Slevin (Gast)


Lesenswert?

Hallo,

sorry, hab vergessen zu erwähnen, dass ich den Code schon mal geändert 
hatte, es aber immer noch nicht funktioniert:
1
#define OW_PIN  PA3
2
#define OW_IN   PINA
3
#define OW_OUT  PORTA
4
#define OW_DDR  DDRA
5
#define OW_CONF_DELAYOFFSET 0

Das komische daran ist, wenn ich den Sensor an PD6 verdrahte, 
funktioniert es, obwohl ich die Zeilen im Code geändert habe! Am Port A 
klappt es allerdings nicht.

Zum Parasite-Modus:
Würden auch 1,1kOhm (vorher: 4,7kOhm) Widerstände funktionieren? (Frag 
lieber nach, die Sensoren sind ja ziemlich teuer und ich hab nur 2 von 
denen!)

MfG
Slevin

von Slevin (Gast)


Lesenswert?

Hallo nochmal,

den Bus auf einen anderen Port zu verlegen hat geklappt(Im Code war noch 
eine DEFINE Sache, hatte sie übersehen) :))

bleibt nur noch für den Parasite-Modus:
Würden auch 1,1kOhm (vorher: 4,7kOhm) Widerstände funktionieren? (Frag
lieber nach, die Sensoren sind ja ziemlich teuer und ich hab nur 2 von
denen!)

MfG
Slevin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.