1Wire

Man müsste auch nochmal im Datenblatt nachsehen ob es Broad-Cast Botschaften gibt. Das habe ich jetzt nicht mehr im Kopf. Bedeutet, Du sendest einmal auf dem 1Wire "Hallo an alle bitte jetzt messen"

Hallo Markus !

Das "allgemeine" &HCC und das "spezielle" &H55 habe ich ja oben schon erklärt. ;)

Ich weiß aber nicht, ob Ralf die Sensoren immer zur selben Zeit und gleich nacheinander abfragen möchte. So könnte er sich einmal das "aufwendige" Adressieren zumindest sparen.


@Dino:
Ich habe hier schon drei Sensoren der DS1820 an einem BUS ohne Probleme betrieben.
Allerdings bekammen die DS1820 auch eine separate 5V Spannung und liefen nicht im ParasitPower-Modus . ;)


Gruß,
Cassio
 
Hallo Markus

Konventionell bedeutet, das die Sensoren ihre eigene Spannungsversorgung haben, sprich +5V und GND. Das wäre bei mir der fall.
Habe angefangen das Programm umzuschreiben und schon mal getestet.
Die Temperatur sagt mir auf dem LCD etwas von 85°C, so warm ist es Definitiv nicht bei mir :( , suche jezt erst mal den Fehler. :confused:
Vielen Dank für eure hilfe, werde euch weiter auf dem Laufenden halten.

Ralf :)
 
Hallo zusammen :D :D :D

Habe eure Informationen mal in mein Programm eingebaut und siehe da, nach anfänglichen schwierigkeiten, das Programm läuft, aber bitte schaut mal drüber ob alles so richtig ist.
Habe mir andere Programme mal angeschaut und mir dann meinen Code zusammen "gebaut".
Code:
$regfile = "m32def.dat"
$crystal = 3686400

' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen
Ddrb = &HFF

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2

   'Grad zeichen"°" chr(0)
Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32


' Pin für 1wire Schnittstelle festlegen
Config 1wire = Portd.4

Dim T1 As Integer                                           'hilfs Variable für die berechnung Temp1
Dim T2 As Integer                                           'hilfs Variable für die berechnung Temp1
Dim T3 As Integer                                           'hilfs Variable für die berechnung Temp2
Dim T4 As Integer                                           'hilfs Variable für die berechnung Temp2
Dim T5 As String * 5                                        'Variable für Temp1 zur anzeige auf dem LCD
Dim T6 As String * 5                                        'Variable für Temp2 zur anzeige auf dem LCD
Dim T7 As Single                                            'hilfs Variable für die berechnung Temp1
Dim T8 As Single                                            'hilfs Variable für die berechnung Temp2
Dim Id1(8) As Byte                                          'für die adresse Sensor 1
Dim Id2(8) As Byte                                          'für die adresse Sensor 2
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim I As Byte , Tmp1 As Byte , Tmp2 As Byte
'Dim Crc As Byte
Dim W As Byte

  'Unterprogramme
Declare Sub Con_temp
Declare Sub Temp1
Declare Sub Temp2

   '1wire Bus absuchen
W = 1wirecount()
Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()


  'Ersten text aufs Display schreiben
Cls
Cursor Off
Locate 1 , 1
Lcd "Innen"
Locate 2 , 1
Lcd "Aussen"


  'Hauptprogramm
Do

  Gosub Con_temp
  Gosub Temp1
  Gosub Temp2

  'Temperaturen und °C aufs Display schreiben
   Locate 1 , 8
   Lcd T5 ; Chr(0) ; "C"
   Locate 2 , 8
   Lcd T6 ; Chr(0) ; "C"
Loop

      'Temperaturen Convertieren
Sub Con_temp
   1wreset
    1wwrite &HCC
    1wwrite &H44
      Waitms 800
    1wreset
End Sub


  'Temperatur 1 Berechnen
Sub Temp1
 1wreset
  1wwrite &H55
  1wwrite Id1(1) , 8
  1wwrite &HBE
   Ar1(1) = 1wread(9)
   1wreset
     Tmp1 = Ar1(1) And 1
     If Tmp1 = 1 Then Decr Ar1(1)
     T1 = Makeint(ar1(1) , Ar1(2))
     T1 = T1 * 50
     T1 = T1 - 25
     T2 = Ar1(8) - Ar1(7)
     T2 = T2 * 100
     T2 = T2 / Ar1(8)
     T1 = T1 + T2
     T1 = T1 / 10
     T7 = T1 / 10
     T5 = Fusing(t7 , "###.#" )
End Sub

  'Temperatur 2 Berechnen
Sub Temp2
 1wreset
  1wwrite &H55
  1wwrite Id2(1) , 8
  1wwrite &HBE
   Ar2(1) = 1wread(9)
   1wreset
     Tmp2 = Ar2(1) And 1
     If Tmp2 = 1 Then Decr Ar2(1)
     T3 = Makeint(ar2(1) , Ar2(2))
     T3 = T3 * 50
     T3 = T3 - 25
     T4 = Ar2(8) - Ar2(7)
     T4 = T4 * 100
     T4 = T4 / Ar2(8)
     T3 = T3 + T4
     T3 = T3 / 10
     T8 = T3 / 10
     T6 = Fusing(t8 , "###.#" )
End Sub


End
Info: obwohl beide Sensoren noch auf dem Steckboard neben einander stehen, zeigen sie 0,2°C unterschied an.
Denke das liegt in der Fertigung der Sensoren. :stupido2:
Danke auch an Casio, ;) deine infos fehlten in meinem Programm, deshalb zeigten die Sensoren 85°C an, nach dem Implementieren der Zeilen klappte es.

Gruß Ralf
 
Hallo Ralf,

na also, funktioniert doch :party:

Trotzdem würde ich versuchen den waitms 800 irgendwie anders zu lösen.

Ich denke, die 0,2°C werden Toleranzen sein. Hast wohl 2 Extreme erwischt. Oder was sagt der Hersteller darüber aus ?

Thomas
 
Ein Auschnitt aus dem Datenblatt zeigt es :eek:
• Measures temperatures from –55°C to
+125°C (–67°F to +257°F)
±0.5°C accuracy from –10°C to +85°C
• 9-bit thermometer resolution
• Converts temperature in 750 ms (max.)

Gruß Ralf :D
 
Hallo Ralf,

Glückwünscht!!!

Noch zur Ergänzung: 85°C ist binär 10101010 und das ist der Fehlercode des Temperatursensors. Habe ich auch nicht im Datenblatt gefunden sondern durch nächtlanges Googeln. Ich hatte auch das Problem, dass mein Sensor mir immer 85° beim ersten Messen gemeldet hat und ich hatte fast graue Haare bekommen.
Irgendwann hatte ich im Internet gefunden dass 85° umgerechnet 10101010 ist und das dies ein Fehlercode des Sensors ist.
Ursache bei mir war, dass ich zu schnell versucht habe die Daten auszulesen und der DS noch nicht so weit war und noch keine Daten hatte.

Bedeutet also, wann immer man 85° vom Sensor gemeldet bekommt sollte man mal genauer hinsehen, was dem Kleinen nicht gefällt.

Grüße,
Markus
 
Hi Markus

Danke für die Info.
Bei mir lag der Fehler darin, das ich die Programmzeilen : :confused:
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 800
1wreset
nicht hatte und der Sensor mir dann den Fehler meldete.
Lese gerade noch nach warum das so ist, mir fehlt manchmal das verständnis für die einzelnen Code zeilen. :eek:

Gruß Ralf
 
Hallo Ralf !

Na, das ist schön zu lesen, dass es nun funktioniert! :)


Ich bin ja kein Experte und Markus kann dir bestimmt noch viiiiiel mehr über 1Wire berichten als ich, aber ich kann es ja mal versuchen. ;)

Wenn du dich mit dem 1wire-Bus mal etwas beschäftigst, oder auch das Datenblatt des DS1820 durchforstest dann wirst du feststellen, dass z.B. das "1wreset" ein kurzer Puls der Datenleitung zu GND ist und damit ein "Befehl" gesendet wird, dass z.B. Daten erwartet werden.

Die Angaben &HCC, &H44, &H55 kannst du z.B. im Datenblatt nachlesen.
Diese hexadezimalen Angaben senden also bitweise einen Code und veranlassen damit den Sensor etwas bestimmtes zu tun.

Erst wird also ein Reset auf den BUS "geschickt".
Dann folgt vielleicht das Signal &H44 .... das den DS1820 dazu veranlasst eine Temperaturmessung durchzuführen.
Mit z.B. &HBE möchtest du den Inhalt des Scratchpad Rams (wahnsinns Name) "auslesen".

Ich habe mir das Wissen über den 1wire-BUS aber auch nur angelesen.
Dabei hat mir das Buch von Claus Kühnel sehr geholfen und dort wird auch eine Menge erklärt...... nicht nur zu der Programmierung, sondern auch warum das so ist.
Kennst du das Buch?

Die Sache mit dem &H55 (zur einzelnen Ansprache) habe ich damals im Datenblatt des DS1820 gefunden und einfach mal ausprobiert..... steht auf Seite 9. ;)

Tja, dass war nun der Schnelldurchlauf, was mir spontan zum DS1820 und dem 1wire-BUS einfällt.

Wie schon gesagt.... Ich bin da nicht der Experte und es gebe mit Sicherheit noch eine Menge über das Thema zu berichten, aber wofür gibt es gute Bücher! ;)


Was mir in deinem Code aufgefallen ist....
Code:
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 800
1wreset

Du machst zu Beginn einen Reset. Das ist auch OK.... siehe oben. ;)
Dann überspringst du mit &HCC die Romdaten des Sensors.....
Mit &H44 veranlasst du die Temperaturmessung....
Dann folgt eine Pause, damit der Sensor seine Arbeit verrichten kann...
Tja und nun sendest du wieder ein Reset......

Das wäre aber erst notwendig, wenn gleich danach auch ein "Befehl" folgen würde..... z.B. &HCC, &HBE

Ansonsten schreibst du ja, dass dein Code funktioniert. Ergo hast du es im Großen und Ganzen ja auch richtig gemacht. ;)


Von daher wünsche ich dir noch viele Erfolge in dieser Richtung!

Cassio
 
Eigener Senf ;-)

Hallo ,

dass z.B. das "1wreset" ein kurzer Puls der Datenleitung zu GND ist und damit ein "Befehl" gesendet wird, dass z.B. Daten erwartet werden.
Der Reset-Puls mit mindestens 480us dreht dem Device eigentlich nur den
Saft ab :D Bei Saft an melden sich die Devices über den Acknowledge-Puls.

Wenn man Daten liest, dann muß der Master zuerst mal eine negative Flanke
erzeugen, die das Device erkennt und die dann je nach zu sendendem Bit
(0 oder 1) vom device verlängert wird (bei 0) oder auch nicht (bei 1).

Beim Schreiben muß der Master selber die verschieden langen negativen Pulse
erzeugen. Diese Datenpulse müssen aber auch einen bestimmten Abstand
voneinander haben (Start zu Start glaube ich min 60us).

Den Rest interpretiere ich jetzt nicht mehr und ich fahr jetzt nur noch nach
Hause und mach Feierabend. Und tschüß und weg.

Gruß
Dino
 
1Wire bei Roboternetz

Hallo Cassio

Das mit der Befehlsfolge habe ich aus dem http://www.roboternetz.de/wissen/index.php/Bascom_und_1-Wire

dort steht die Reihenfolge ähnlich. In der Elektor ausgabe vom Februar ist auch etwas vom 1Wire Bus und einer Temperaturmessung mit dem DS18S20.
Sehr Interessant.:D :D :D
Das Buch von Claus Kühnel kenne ich, habe es aber noch nicht.
Habe mir das buch von Marius Meissner "Bascom-AVR Sprachbefehle" in Deutsch zugelegt. Ich denke andere Bücher werden Folgen.

Gruß Ralf
 
Hi zusammen,

ich bin begeistert! Dem ist nicht mehr hinzuzufügen.

Es macht Spass mit Euch zu "forumen" :)

Danke und schönen Abend,
Markus
 
Habe mir das buch von Marius Meissner "Bascom-AVR Sprachbefehle" in Deutsch zugelegt.

Hallo !

Jepp, das Buch habe ich auch! ;)

Gerade zu Beginn fand ich es sehr gut, um endlich mal einen Überblick von den ganzen Befehlen zu bekommen.
Auch heute nutze ich das Buch immer mal wieder. Manchmal hätte ich mir etwas mehr Erklärungen gewünscht, aber wofür gibt es Testaufbauten und Versuche. ;)

Ich kann also beide Bücher..... von Marius Meissner und von Claus Kühnel... nur jedem Anfänger empfehlen!


Dann wünsch ich jetzt schon mal viel Spaß beim Schmökern in Kühnels Buch. ;)

Cassio
 
Hi zusammen,

ich bin begeistert! Dem ist nicht mehr hinzuzufügen.

Es macht Spass mit Euch zu "forumen" :)

Danke und schönen Abend,
Markus


Hallo Markus!

Danke, für die Blumen! :flowers:

Das kann aber eigentlich doch gar nicht sein......
Selbst mir fallen ja noch 5 Stichpunkte zum 1wire ein. ;)

Aber OK.... den Rest kann man auch selber nachlesen! :)

Gruß,
Cassio
 
Hi Cassio

Bei dem ganzen gelese in den Büchern und im Forum kommt man nicht mehr zum Basteln und Experimentieren.
Mein Hund wartet auch noch auf seinen Gassi gang.

Gute nacht bis Morgen ;) ;) ;)
Ralf
 
Mein Hund wartet auch noch auf seinen Gassi gang.

Hallo Ralf!

Ups.... höre ich da schon den Ansatz für dein zweites Projekt heraus? :D


Dann mal viel Spaß beim Entwickeln..... oder Gassi gehen! ;)

Cassio
 
Hallo Cassio

Das mit der Wetterstation wird wohl noch um einen Druck und Feuchte Sensor erweitert, somit habe ich noch was vor mir und werde bestimmt euern Rat noch brauchen. :adore:
Info: Habe einen DS1820 mit 4,5m 7x0,5mm² verlängert und es Funktioniert Prima. ;) :stupido2: Werde es die Tage noch mal mit ca. 8m versuchen.
 
Geburt eines Projekts

Was haltet Ihr von einem Hund-Gassi-Geh-Roboter? Die Frage ist dann nur, wie groß ist der Hund und wer geht mit wehm Gassi :cool:

Markus
 
Hallo !

Na, wenn du Hilfe beim Drucksensor benötigst da frag mal Knickohr.....
Der steckt da gerade voll im Thema! ;)

Mit den Leitungslängen beim 1wire habe ich noch nicht weiter experimentiert.
Ich habe irgendwo im Internet gelesen, dass es ein Cat5-Kabel sein soll und dafür auch eine feste Aderbelegung.
Ich kann dir aber nun nicht sagen, ob die ein amerikanisches Cat5 meinen, oder ein europäisches "KAT5".... also DIN/EN 50173 / Class D - Kabel. :confused:

Ich würde einfach mal von der amerikanischen Kabelspezifikation ausgehen, da der Hersteller Dallas ja auch aus Amerika kommt. ;)

Laut Datenblatt ist die Mindestspannung 3V für den Sensor.... wenn du die beim Messen nicht unterschreitest, dann sollte es wohl auch mit 8m klappen. ;)
Allerdings ist ein größerer Querschnitt nicht unbedingt besser... damit steigen auch die Kapazitäten.

Poste aber weiterhin mal deine Erfahrungen....
Nützen dann ja auch allen etwas. :)

Gruß,
Cassio
 
Hallo Markus


Der Hund ist ein Bernersennenhund und hat 56kg, also müsste der "Hund-Gassi-Geh-Roboter" mindestens das Doppelte wiegen und sollte Allrad Bremsen haben.
Ich glaube das Projekt ist mir noch zu schwierig. :D :D :D :D

Habe heute meine Lieferung von Pollin bekommen und möchte jetzt das Display WDC2704M in Betrieb nehmen, stehe vor dem Problem das , daß Display zwei Controller hat.:confused: :confused: :confused:
E1 obere hälfte, E2 untere hälfte. Werde jetzt mal ein wenig Googeln.

Gruß Ralf
 
Hi Ralf,

Habe heute meine Lieferung von Pollin bekommen und möchte jetzt das Display WDC2704M in Betrieb nehmen, stehe vor dem Problem das , daß Display zwei Controller hat.:confused: :confused: :confused:
E1 obere hälfte, E2 untere hälfte.
Nach dem mir das mal mit den 2 Controllern passiert ist, lese ich mir vorher
immer die Datenblätter durch :D :D
Das erspart nachträgliches ärgern :D

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)