Vraag betreft Dual DS1820 Temperatuur meter van picbasic

Beste mensen,

Ik ben nog een beginner in de Microcontrollers, en heb, om te beginnen de dual DS1820 temperatuur meter schakeling van PicBasic, die op http://www.picbasic.nl/frameload.htm?http://www.picbasic.nl/projecten.…
staat gebouwd op een breadbordje.
Vervolgens het gedeelde waar ik van elke sensor de fabrieks code moet achterhalen, met Proton lite en Pickit2 in de Pic 16F628a geprogrammeerd.
Alles schijnt zover wel goed te werken,alleen heb ik een 2x16 LCD i.p.v. 2x20.
Nu word er in de tekst op picbasic gezegd dat ik voor een 2x16 LCD alle spaties uit het programma er boven moet halen.

Ik heb vervolgens alle spaties weggehaald onder bij het hoofdprogramma.

Als ik nu de schakeling opstart, dan krijg ik op het LCD het volgende te zien:
F1 EF 8C 02 08 0
fam:10CRC:F9

Ik heb het idee dat de bovenste code nog niet volledig is gezien ze bij het voorbeeld op picbasic het over een voorbeeld code/adres hebben van: 10 0B 08 7F 00 08 00 79

Dus blijkbaar heb ik spaties gemist. Alleen weet ik niet welke spaties ik nou exact allemaal moet verwijderen uit het stukje code hieronder:


;Voorbeeld 9: Uitlezen van het unieke OneWire adres
DEVICE 16F628A                ;We gebruiken een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal

;Normale constanten
SYMBOL ReadROM      = $33     ;Vaste, constante waarde (zie datasheet DS1820)

;Poortnamen
SYMBOL DS1820       = PORTA.0 ;Sluit de DS1820 temperatuur sensor aan op deze poort

;Variabelen declareren
;BYTE
DIM CRC             AS BYTE   ;Bevat de CRC code, deze kan steeds anders zijn (zie tekst)
DIM ID1             AS BYTE   ;Bevat zodadelijk een deel van het unieke IDentificatie adres
DIM ID2             AS BYTE   ;Bevat zodadelijk een deel van het unieke IDentificatie adres
DIM ID3             AS BYTE   ;Bevat zodadelijk een deel van het unieke IDentificatie adres
DIM ID4             AS BYTE   ;Bevat zodadelijk een deel van het unieke IDentificatie adres
DIM ID5             AS BYTE   ;Bevat zodadelijk een deel van het unieke IDentificatie adres
DIM ID6             AS BYTE   ;Bevat zodadelijk een deel van het unieke IDentificatie adres
DIM Familie         AS BYTE   ;Bevat de OneWire familiecode (dit zal 10 (hexadecimaal) zijn)

CLEAR                         ;Wis RAM geheugen

DELAYMS 500                   ;LCD stabilisatie


;Hoofdprogramma
CLS                           ;Wis display
OWRITE DS1820, 1, [ReadROM]   ;Geef aan de DS1820 door dat we het adres vanuit ROM willen lezen
OREAD  DS1820, 0, [Familie, ID1, ID2, ID3, ID4, ID5, ID6, CRC] ;Lees het unieke adres
PRINT AT 1, 1, HEX2 ID1, " ", HEX2 ID2, " ", HEX2 ID3, " ", HEX2 ID4, " ", HEX2 ID5, " ", HEX2 ID6
PRINT AT 2, 1, "Fam: ", HEX2 Familie, "  CRC: ", HEX2 CRC

END                           ;Einde programma

Kan iemand mij helpen hoe ik dit moet zien en welke spaties ik nou precies weg moet halen zodat het adres van de DS1820 volledig word weer gegeven op mijn 2x16 LCD ?

De spaties die ikzelf reeds verwijdert had in het gedeelte bij hoofdprogramma (zie hieronder):


;Hoofdprogramma
CLS                           ;Wis display
OWRITE DS1820,1,[ReadROM]   ;Geef aan de DS1820 door dat we het adres vanuit ROM willen lezen
OREAD  DS1820,0,[Familie,ID1,ID2,ID3,ID4,ID5,ID6,CRC] ;Lees het unieke adres
PRINT AT 1,1,HEX2 ID1," ", HEX2 ID2," ",HEX2 ID3," ",HEX2 ID4," ", HEX2 ID5," ",HEX2 ID6
PRINT AT 2,1,"Fam:",HEX2 Familie,"CRC:",HEX2 CRC

Wat doe ik niet juist?

op de regel met "print at 1,1" staan nog een zwik spaties. Haal steeds een ', " "' weg. dus er staat 'IE1, " ", ID2' en dat moet worden 'ID1, ID2'.


;Hoofdprogramma
CLS                           ;Wis display
OWRITE DS1820,1,[ReadROM]   ;Geef aan de DS1820 door dat we het adres vanuit ROM willen lezen
OREAD  DS1820,0,[Familie,ID1,ID2,ID3,ID4,ID5,ID6,CRC] ;Lees het unieke adres
PRINT AT 1,1,HEX2 ID1, HEX2 ID2, HEX2 ID3, HEX2 ID4, HEX2 ID5, HEX2 ID6
PRINT AT 2,1,"Fam:",HEX2 Familie,"CRC:",HEX2 CRC

Zo zou het goed moeten zijn.... Heb ff alle onnodige spaties verwijderd voor je....

Ohw Geweldig Dank je wel Beste Roches, Top!.

Ik was dus die aanhalingstekens vergeten dus.
Ja die zag ik niet als spaties.

Maar, goed Nogmaals Hartelijk Dank en ik ga het Proberen.

Dankje Beste rew,

Maar, moet ik bij het aangepaste stukje door Roches bij


PRINT AT 1,1,HEX2 ID1, HEX2 ID2, HEX2 ID3, HEX2 ID4, HEX2 ID5, HEX2 ID6

De spaties ook nog weghalen dan als hieronder ? :


PRINT AT 1,1,HEX2 ID1,HEX2 ID2,HEX2 ID3,HEX2 ID4,HEX2 ID5,HEX2 ID6

Ik heb de PIC getest met de code zoals hieronder:


;Hoofdprogramma
CLS                           ;Wis display
OWRITE DS1820,1,[ReadROM]   ;Geef aan de DS1820 door dat we het adres vanuit ROM willen lezen
OREAD  DS1820,0,[Familie,ID1,ID2,ID3,ID4,ID5,ID6,CRC] ;Lees het unieke adres
PRINT AT 1,1,HEX2 ID1,HEX2 ID2,HEX2 ID3,HEX2 ID4,HEX2 ID5,HEX2 ID6
PRINT AT 2,1,"Fam:",HEX2 Familie,"CRC:",HEX2 CRC

en nu krijg ik op het LCD in totaal 1 cijfer meer.
namelijk:
F1 EF 8C 02 08 00
fam:10CRC:F9

Klopt het bovenstaand hexidecimale adres wel van de DS1820 Sensor ?
Omdat het nog steeds korter is dan het voorbeeld adres op Picbasic namelijk. Of kunnen de adressen van een DS1820 ook korter zijn dan het voorbeeld van Picbasic?

[Bericht gewijzigd door Henry S. op (74%)]

Volgens mij klopt het.
Wat let je om het te proberen stuk gaat het niet.

beste pa3gws,

ik heb het ook geprobeerd al en dit is de uitkomst. maar, ik vraag het nog even ter bevestiging omdat het adres bij mij uit de DS1820 sensors dus korter is dan het voorbeeld adres op picbasic

verder zal ik natuurlijk vanavond, nadat ik alle adressen van de sensors heb, de definitieve code van de dual temperatuur sensor schakeling van picbasic naar de pic schrijven. en kijken of het geheel ook werkt.

Iedereen in elk geval Hartelijk Dank voor jullie snelle reacties en hulp!

Kan je aub de volgende keer de edit http://www.circuitsonline.net/images/icons/edit_message.png gebruiken?

Het adres begint met de CRC in dit geval 10 daarna het adres van de sensor en als laatste de familie in dit geval F9.

De kans is groot dat je de 4K7 pullup weerstand moet aanpassen.
Als die waarde niet goed is krijg je een verkeerde uitlezing.
In mijn geval twee maal 255.

[Bericht gewijzigd door pa3gws op (41%)]

Beste Henry S. Oke, dat zal ik doen als ik wat vergeten ben bedoeld u toch , Excuus hiervoor.

Pa3gws, Hartelijk Dank, dan begrijp ik het en klopt het idd.

Hartelijk Bedankt iedereen!

Inmiddels Ik heb ik de picbasic code naar de PIC geschreven.
Alleen nu krijg ik bij zowel bij de binnen als buiten temperatuur 85.0 te zien.
Wil dit zeggen dat die 2x DS1820 sensoren defect zijn, dat er softwarematig iets niet klopt of er in mijn schakeling iets niet in orde is?
Aan de schakeling kan ik zo niets vinden na 3 keer alle bedrading en aansluitingen gecontroleerd te hebben.

Beste Pa3gws,
Ik las je berichtje net te laat, maar ok dan heb ik hier dus ook last van waarschijnlijk, bij mij geeft ie dus 2x 85 aan. ik zal een een 2K2 proberen dan.

Nou ik heb even een 2K2 pullup geprobeerd maar, geen verschil, vervolgens een 10K en dan krijg ik ineens 2.5 maar de waardes staan stil ook als ik de temp aanraak blijft de waarde 2.5
Hoger in waarde gaan lijkt me onwaarschijnlijk dat het dan wel zal werken. dus neem ik aan dat deze sensors misschien defect zijn(deze waren ook 2ehands) ik zal straks eens de 2 nieuwe DS1820 sensors proberen.

Ik heb net de andere sensors geprobeerd en nu werkt het naar behoren zover en dat met de orginele waarde pullup 4k7 als op picbasic.

Nu kan ik mijn printje gaan etsen en de temperatuur meter gebruiken voor mijn lab voeding waarmee in bezig was en de voeding gaan afbouwen.

Iemand misschien nog suggesties voor het PIC basic Development suite pakket waar ik deze het beste en goedkoopste kan aanschaffen of een goed alternatief hiervoor misschien want, ik zou ook graag nog met de pic16F876a dingen willen bouwen. waaronder een Volt ampere meter.

Nogmaals Hartelijk dank iedereen !

Beste mensen, ik kom er achter dat deze temperatuur meter van Picbasic niet zuiver is bij mij hij geeft steeds zon 2 graden meer aan dan het in werkelijkheid is.

zit dit hem in de berekening of ligt dit aan mijn schakeling ?
kan iemand mij nog een stukje advies geven of op weg helpen misschien ?