hallo, ich bekomms einfach nicht zum laufen. hab das programm aus der hilfe versucht. geht nix. ich würds gern mal mit anderen programmen vergleichen. also falls jemand ein CodeVision-programm hat, mit dem man den DS1820 auslesen kann, wäre ich ihm oder ihr wirklich sehr verbunden, wenn er oder sie es mir mal zu verfügung stellen könnte. danke
Hoffe dir hilft das Programm! Hab es selber erst heruntergeladen und noch nicht ausprobiert! mfg Chris!!
ich würd gern ein hardwarefehler auschliesen. also, ich hab die variante genommen, mit der extra versorgung des DS1820. an der datenleitung hängt der 4,7KOhm Pullupwiederstand. versorgungspannung 5Volt und masse. wenn am ausgang des DS18S20 mit dem Multimeter gemesen konstant 3,3 Volt (hab die 5 Volt durch nen spannungsteiler auf 3,3 gebracht, da ich ein ATmega103 verwende) anliegen, ist dann alles in ordnung? und bei meinem programm bekomm ich bis jetzt am ende -9999 als messwert. hab ich hier im forum gelsen, dass das bedeutet, daß der DS1820 nicht erkannt wird. ist da ein softwarefehler auszuschliesen? beim programm von chris, bleibt er stehen bei 0 DS1820Device detected. ----------------------- und noch ne frage. ich hatte aus gewohnheit das portb beim erstenmal ausversehn auf high und ausgang gesetzt. da wo die datenleitung des DS1820 dranhing. kann ich ihn durchgehauen haben?
ich hab jetzt noch ein programm im forum hier gefunden, welches mir auch -9999 zurückgibt. der poster (emil) meint, dass könne nur an der hardware liegen. also hab ich noch eine zusätzliche frage zu diesem programmabschnitt. #asm .equ __w1_port=0x18 .equ __w1_bit=2 #endasm 0x18 steht für PORTB -> richtiges PORT hab ich. in die mega103.h nochmal geschaut -> stimmt. die 2, steht fürs 2te PORTPIN. das erste ist PIN.0 das zweite PIN.1 -> DS1820 rangehängt. müsste doch stimmen, oder?
so, hier hab ich noch mal ein bild mit meiner schaltung. los jungs und mädels, hier muss es doch jemanden gebn, der shon mal ein DS1820 benutzt hat. zur zeit versuch ichs mit diesem simplen programm, was ich hier im fproum gefunden habe, ich glaub von emil. ich bekomm wie gesagt als wert -9999, also er erkennt keinen DS1820. und wie auf dem bild zu sehn, hab ich ihn ans PORTPINB.0 gehangen. ------------ #include <mega103.h> #asm .equ __w1_port=0x18 .equ __w1_bit=1 #endasm #include <stdio.h> #include <ds1820.h> #include <1wire.h> #include <math.h> char rom_codes[9]; //falls du mehrere sens. hast, wird es dann //rom_codes[n,9], wo n deren anzahl ist; void main(void) { UCR=0x08; UBRR=0x19; w1_init(); w1_search(0xf0,rom_codes); while (1) { int temp; temp = ds1820_temperature_10(&rom_codes[0]); printf("%2i.%-u",temp/10,abs(temp%10)); }; }
wenn ihr keinen fehler entdeckt, könnt ihr auch schreiben ... sieht alles richtig aus. dann werd ich mir ein neuen sensor kaufen müssen. wie gesagt, wenn ich mit dem multimeter messe liegt ne konstante spannung am datenausgang an.
Hallo Dieter, dass kann ja nicht funktionieren. Schließ den DS18b20 auf 3,3V. Grund: Du hast da einen Spannungsteiler eingebaut, der vielleicht in die eine Richtung gut funktioniert, in die andere Richtung aber nicht nachvollziebar ist. Außerdem musst du für den Wandlungsvorgang DQ mit einem Mosfet (intern im µP oder extern) gegen VCC schalten. Kurz nochmal: wenn AVR auf 3,3V, dann DS18B20 auf auv 3,3V. wen AVR auf 5V, dann DS18B20 auf auf 5V. Hab meinen mit einem MSP430 auf 3,3V laufen.
also, ich soll dem DS18S20 einfach nur 3,3 Volt Versorgungspannung geben. OK, hab ich registriert. da werd ich gleich mal den lötkolben anwerfen. nur das mit dem mosfet hab ich nicht kapiert. im datenblatt ist doch auch nur der pullupwiederstand in der schaltung? kanns sein, dass das intern vom AVR schon geregelt wird. ich mein der code ist ja fast ausschliesslich durch den codewizard entstanden? aber vielen dank erstmal, endlich eine antwort. :)
ok, hab den spannungsteiler rausgenommen. und irgendwie hab ich's geahnt, hier muss es ganz schön heiß sein, in meim zimmer, ich schwitz schon ein bisschen. und der DS18S20 bestätigt das mit 85 Grad ... was kann nun noch flasch sein?
Hallo Dieter, du bist am richtigen Weg. Gib jetzt, zwischen den Befehl 44H (Conversion Start) und dem nächsten Reset, wo du dann das Scratchpad einließt eine Zeitschleife von ca 1-1.5 Sekunden (normal reichen 700ms aber sicher ist sicher). Während dieser Zeit must du noch den PIN des AVRs, wo DQ anliegt als Ausgang schalten und auf High stellen. Somit wird DQ als Stromversorgung für den DS18B20 verwendet (der PullUP ist zu wenig und wird somit überbrückt). mfg Weichinger Klaus http://www.Weinga-Unity.de.vu
ich hab das problem entdeckt. aber ich kanns nicht lösen. um die 5V auf 3,3V zu bringen hab ich einen spannungsteiler. also 5V rein -> Spannungsteiler -> 3,3 Volt, und dort die schaltung dran, die im anhang ist. das ganze funktioniert mit spannungsteiler nicht, aber ohne (hab mal kurzzeitig 5Volt ins Port gejagt) da gings. sobald ich am poti dreh, und ne geringere spannung einstellen möchte, bricht diese zusammen. was hab ich nun schon wieder falsch gemacht?
habs nochmal gezeichnet, mit spannungsteiler. also so siehts aus. hab keine beschriftung dran, aber ich denk, die erschließt sich aus der anderen schaltung.
Man was machst du da????? Nochmals: wenn der AVR auf 3,3V läuft, dann schließ den DS18B20 auch auv 3,3V Wenn du den AVR auf 5V laufen hast, dann schließ den BS18B20 auch auf 5V. Dann einfach die von DQ auf 5 bzw. 3.3V den 4k7 wiederstand. Wenn du aber schon 85° ausgelesen hast, dann hats je eh schon gepasst (siehe vorletzten Beitrag von mir). mfg Weichinger Klaus
nein nein, der AVR läuft auf 3,3Volt. und der sensor muss auch mit 3,3V betrieben werden. die 5Volt sind von der LCD-anzeige. aus platzgründen wollt ich den sensor von dort aus versorgen. hab aber jetzt den spannungsteiler rausgehaun, und 3,3V von nem extra Pin genommen. muss man halt manchmal kompromisse eingehn. funktioniert nun alles einwandfrei. danke klaus
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.