Forum: Mikrocontroller und Digitale Elektronik Suche CodeVision-Programm für DS1820/DS18s20


von Dieter (Gast)


Lesenswert?

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

von chris (Gast)


Angehängte Dateien:

Lesenswert?

Hoffe dir hilft das Programm!
Hab es selber erst heruntergeladen und noch nicht ausprobiert!

mfg Chris!!

von Dieter (Gast)


Lesenswert?

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?

von Dieter (Gast)


Lesenswert?

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?

von Dieter (Gast)


Angehängte Dateien:

Lesenswert?

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));
      };
}

von Dieter (Gast)


Lesenswert?

.equ __w1_bit=0 muss es natürlich sein

von Dieter (Gast)


Lesenswert?

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.

von Weinga-Unity (Gast)


Lesenswert?

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.

von Dieter (Gast)


Lesenswert?

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. :)

von Dieter (Gast)


Lesenswert?

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?

von Weinga-Unity (Gast)


Lesenswert?

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

von Dieter (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Dieter (Gast)


Angehängte Dateien:

Lesenswert?

habs nochmal gezeichnet, mit spannungsteiler.
also so siehts aus.

hab keine beschriftung dran, aber ich denk, die erschließt sich aus der
anderen schaltung.

von Weinga-Unity (Gast)


Lesenswert?

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

von Dieter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.