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
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
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
Ich habe eine falsche Seite angegeben: richtig ist S.68 in der Projektbeschreibung Bernd
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.