Een LM35 uitlezen met een PIC (Asm)

Als je bij een AD-waarde van 0 geen 300 eraf haalt geeft ie ineens 0 graden aan he, dus ja, het is toch echt -30 dan :)

De voeding van de lm35 is denk ik niet heel kritisch gezien de ruime range, maar kan er niet zo snel iets van in de datasheet vinden.

Ja... en toen ?
JoWi

Special Member

Als je gebruikt maakt van een spanningsdeler om de referentie spanningen in te stellen hou er dan wel rekening mee dat je geen grote nauwkeurigheid meer haalt. Je voedingspanning is namelijk niet constant genoeg (en 1mV afwijking is is .1 graad afwijking). De meeste regulators wijken al .05 tot .1 V af en dan heb je nog het verlies over de rest van je schakeling. En betere oplossing is het gebruik van een referentiediode op de Vref ingang.

Ignorance is bliss

Jep Jowi, helemaal gelijk, had ik ook al even aangetipt.
MM, laat je ons ook weten hoe het afloopt ?

Ja... en toen ?

Ik ben nu aan het zoeken hoe ik het beste de waarde 300 van de AD waarde kan halen.
Ook zit ik nog een beetje met het negatieve getal.

Referentiediode, moet ik dan aan een Zenerdiode denken ?

[Bericht gewijzigd door MMSoft op zondag 7 mei 2006 08:09:58

Ik ben druk bezig om een 'Goede' waarde uit de AD converter te krijgen.
Om de een of andere reden gaat er iets mis bij het omzetten van 2 Bytes naar 4 digits.

Edit:
Gevonden, AdresH/AdresL zitten in verschillende Banken...

[Bericht gewijzigd door MMSoft op zondag 7 mei 2006 10:33:13

De AD Converter uitlezen met 2 bytes (High/Low) gaat nu prima.
Zolang ik de Vref+ en Vref- maar niet gebruik.

Als ik ADCON1 van B'10001110' wijzig in B'10001101'
Dan werkt het niet meer !

Als test, RA2 met gnd verbonden en RA3 aan de 5 volt gehangen.

Edit:
PIC16F876A
Alle 'A' pinnen zijn als ingang ingesteld.

[Bericht gewijzigd door MMSoft op zondag 7 mei 2006 13:57:59

De ref pinnen moet je ook nog "analoog" zetten ?
Dus behalve het aan zetten van de REF pinnen in ADCON1 moet je ook ANSEL goed zetten, pinnen 2 en 3 moeten daar ook ge-enabled zijn.

Ja... en toen ?

Daar was ik ook al mee bezig geweest !
De PIC16F876A heeft het register 'ANSEL' niet...

Hee, je hebt gelijk...
Ik zat hier even in een source voor een 16F88 te kijken, dacht dat de AD-modules het zelfde waren.
Hmmm, het zou moeten werken als je verder niets hebt veranderd. Niet toevallig RA2 en 3 verwisseld of misschien ook bank-probleem ?

Ja... en toen ?

Meerdere malen verwisseld, daar had ik ook al aangedacht.

Het werkt prima, totdat ik ADCON1 van B'10001110' wijzig in B'10001101'

Edit:
Een Nieuwe PIC geplaatst, en nu werkt het !

[Bericht gewijzigd door MMSoft op zondag 7 mei 2006 17:05:41

Ok, met je billen bloot dan, show me your source, en ik ga je echt wel een vette rekening sturen :), moet je niet in de zon zitten trouwens ?

Ja... en toen ?

Zit ik nog met 1 ding:

2 Getallen (16 bits (Hi/Lo) van elkaar aftrekken lukt.
Maar ik zit met het probleem 'Negative getallen'

Ik krijg dan een heel hoog getal !

Voorbeeld:
00000000 00101100 (44 Dec)
00000001 00101101 - (301 Dec)
-------------------
11111110 11111111 (65279 Dec)

Terwijl ik 00000001 00000001 ((-)257 Dec) nodig heb.

Edit:
-Nieuwe PIC was dus de oplossing (maar als je wilt, dan stuur ik de code alsnog).
-In de Zon, Nee vandaag is het hobby dag :)
-Ik heb nog een mooie PIC16F876A voor je...

[Bericht gewijzigd door MMSoft op zondag 7 mei 2006 17:41:55

- als je nog tijd hebt, probeer die oude pic nog eens, mij is opgevallen dat je soms de spanning even van de pic af moet hebben voor sommige settings (heel vervelend)
- Het getal is zg 2-complement. Dit is een manier om met negatieve getallen om te kunnen gaan.

Wat je moet doen is:
Check of het getal negatief is, dat kun je doen door het hoogste bit van het hoogste byte te checken, is deze 1, dan is het getal dus negatief. Is het negatief, zet dan een bitje voor het teken ergens (of meteen het - streepje van je display)
Hierna moet je het getal complementeren:

code:



  bcf    SIGN
  btfss  hi,7       ; negatief ?
  goto   2complementoverslaan
  bsf    SIGN       ; zet het teken

  comf   hi         ; even complementeren
  comf   lo
  incf   lo         ; en 2-complement
  btfsc  status,z   ; carry ?
  incf   hi
2complementoverslaan

nu heb je dus het zelfde getal maar dan postief gemaakt, was het getal NIET negatief moet je uiteraard voorgaande overslaan.
Ik ga het niet helemaal uitleggen, zoek maar even iets op het net over 2-complements.

Ja... en toen ?

De 'Oude' PIC nog even geprobeerd, ook nadat ik deze opnieuw had geprogt is het probleem er nog.

Dat is de tweede PIC16F876A die ik defect heb.
Andere PIC's heb ik nog nooit stuk gekregen...

Ik ga met die code aan de gang...

Het begint steeds meer op een Temperatuur meter te lijken.
Ben nog even bezig om de overbodige voorloop nullen weg te halen.

Bij referentie diodes moet ik dan aan Zener diodes denken ?

JoWi

Special Member

Ignorance is bliss

http://www.voti.nl/winkel/catalog.html en dan bij spanningsreferenties.

Het zijn chipjes die een stabiele en nauwkeurige spanning geven.

Trouwens ik heb ook weleens vage klachten met pics, vooral de 16F88 heb ik nog wel eens ruzie mee.

Ja... en toen ?

Dat gaat helemaal lukken.

Bedankt !

Sine

Moderator

Beetje mosterd na de maaltijd waarschijnlijk ...

Maar je kent de dallas one wire temp sensors zoals de DS18S20 ?

Geen dac en andere akeligheden nodig ...

Die is niet meer leverbaar, maar de DS1821 krijg ik binnenkort binnen, en dan ga ik daarmee aan de slag.

Zie: http://www.circuitsonline.net/forum/view/34316/1/mmsoft

Ik wil nog wel een foto zien hoor :)

Ja... en toen ?

Die stuur ik je van de week !
(ben nu op het werk)

Nog bedankt voor alle hulp, ik heb weer een berg geleerd vandaag !

[Bericht gewijzigd door MMSoft op zondag 7 mei 2006 23:22:08

Gradtje: Je hebt mail (foto's)...

Ehm, bedankt, maar ik heb nog niets mogen ontvangen :)

Ja... en toen ?

Vreemd er is geen mail teruggekomen.
Het komt er nog een keer aan...