Sida 1 av 1

mäta resistans med pic

Postat: 26 juli 2010, 17:22:07
av diman
tanken är att inhämta temperatur från en temp-givare
http://www.conrad.se/?article=188103
som varierar motståndet efter temperaturen
http://www.produktinfo.conrad.com/daten ... _94097.pdf

hur mäter jag dess resistans med en PIC16F690 ?

Re: mäta resistans med pic

Postat: 26 juli 2010, 17:24:34
av Icecap
Man kollar först databladet hos Microchip och kollar om det finns en A/D-omvandlare i den. Nu råkar jag veta att det finns och då gör man helt enkelt en spänningsdelare med ett motstånd och sensorn och använder A/D-omvandlaren. Såklart får man räkna lite med offset och gain för att få rätt värde och är resistans-ändringen för liten får man koppla med en op-amp så att signalen blir förstärkt.

Re: mäta resistans med pic

Postat: 26 juli 2010, 17:30:17
av diman
hah två minuter-svar :-) :bravo:
tackar!

misstänkte att det skulle vara något i stil med en voltage divider + ADC
sätter jag ett motstånd med känt värde först och matar det in i PICens ADC
och räknar på spänningen ?

ändringen är nog inte så liten, enligt databladet så varierar det mellan 41 Ohm vid 150 C och 74 kOhm vid -40 C

Re: mäta resistans med pic

Postat: 26 juli 2010, 18:26:02
av sodjan
Jo, men hur stor är skillnaden mellan t.ex 20 C och 21 C ?
Vad är det ska mäta temperaturen på ?
Inom vilket temp-område kommer du att mäta ?

Databladet har ju en del värden angivna för var 10'de grad.
Jag skulle göra en Excel kalkyl där ADC värdet beräknas för
(t.ex) varje hel grad med en viss spänningsdelare. Sedan tar
man det uppmätta ADC värdet och gör en table-lookup för
att få temperaturen. Mycket snabbare än att försöka räkna
ut det.

Re: mäta resistans med pic

Postat: 26 juli 2010, 18:50:44
av jesse
sätt t.ex ett motstånd från VCC (eller från Vref - den referens du använder i din ADC om det inte är VCC) till ADC-ingången. Sätt ditt NTC-motstånd mellan ADC-ingång och GND.

För att fä bäst upplösning i det temperaturområde du vill ha så ska det förts motståndet ha samma resistans som ditt NTC har vid den temperatur du vill ha i mitten av din skala. T.ex. om du mäter rumstemperatur kanske 20 grader är bra som "mitten". Är det en frysbox kanske -10 grader är "mitten".

Temp-givaren verkar att ha ett NTC-motstånd inbyggt. Du vet att du kan köpa ett sånt för ett par kronor? t.ex. 60-304-56. Men du kanske behöver den miljötåliga kapseln?

Re: mäta resistans med pic

Postat: 27 juli 2010, 06:51:58
av diman
sorry, var inte klar ang. användningen.
temp-givaren ska sättas i min växellåda och visa oljetemperaturen som bör variera mellan utetemperaturen när bilen är kall och max arbetstemperatur
på ca 90 C vid belastning.

excel-kalkyl och lookup tabell låter ju som en utmärkt idé!


skillnaden på värdena på den sensorn verkar inte vara helt linjära
skillnaden på 10 grader i 90 graders område är bara några tiotals Ohm
samtidigt som skillnaden på 10 grader vid 0-10 grader är runt 3K
bör funka med 20 grader och 2.8 K på det fasta motståndet :badgrin:

Re: mäta resistans med pic

Postat: 27 juli 2010, 09:22:31
av vfr
Man kan göra en lineariseringtabell genom att ta en handfull värden och sedan dra raka linjer mellan dessa. Det är då väldigt enkelt att räkna ut, med ekvationen för en rät linje (y = k*x + m) och interpolation, alla värden mellan dom fasta punkterna. Man väljer antal punkter efter hur olinjär kurvan är och efter vilken noggranhet man behöver. En både bra och enkel metod.

Re: mäta resistans med pic

Postat: 27 juli 2010, 12:46:22
av diman
jo, jag minns något sådant litet från mina algebra klass i skolan...

Re: mäta resistans med pic

Postat: 27 juli 2010, 13:31:30
av sodjan
> skillnaden på värdena på den sensorn verkar inte vara helt linjära

Det är därför en pre-allokerad lookup tabell blir både snabb och exakt.

Vfr's metod är också bra, det ger en mindre tabell. Det man kan göra är att
inte *räkna* ut de mellanliggande värderna varje gång utan lagra höjden på
varje "steg" i mellanrummet. Då blir det mer att bara addera upp ett antal steg
beroende på var i segmentet man befinner sig.

De flesta PICs har inget problem att lägga in en tabeller med ett par hunda
värden. Det kanske räcker med att du använder de 8 högsta bitarna från
ADCn så blir uppslagningen enkel också.

En annan sak du inte har sagt är om du tänker ha någn presentation av temp
i faktiskta grader C. Om inte (om det t.ex bara handlar om larmgränser eller
kanske presentation på en grön/gul/röd skala) så behöver du ju aldrig räkna
om värdet till grader C igentligen. Du kan använda vilken "temp-skala" du vill,
även det faktiska ADC värdet rakt av som det är...

Re: mäta resistans med pic

Postat: 27 juli 2010, 17:39:17
av diman
Jo, temperaturen ska presenteras i grader C på en skärm. Så tabellerna är önskvärda, och de är nog den vägen jag tar.

Tackar återigen!

Re: mäta resistans med pic

Postat: 27 juli 2010, 19:45:30
av jesse
Du vill väl gärna ha bra noggrannhet över hela skalan, men vilken del av skalan är den viktigaste att ha bäst precision i?

Om du väljer ett motstånd på 2.8k så får du bäst noggrannhet kring 20 grader... men mycket sämre för temperaturer över 60 grader. Om du vill ha bra noggrannhet kring 60 grader (30-90 grader) så är det bättre att välja ett motstånd på ca. 560 ohm ... men då blir noggrannheten sämre vid låga temperaturer istället.

Hur noga det blir beror på hur mycket avvikelser du får i spänning pga ledningar eller brus.
Bruset kan filtreras bort ganska effektivt med en kondensator samt att man visar ett medelvärde av *många* ADC-omvandlingar. Då kan man komma i närheten av ADC:ns bitdjup.. antar att PIC:en har 12-bitars ADC? Det är väldigt bra upplösning.

När jag hade ett NTC-motstånd som jag ville kunna avläsa exakt så gjorde jag så att jag limmade ihop det med en exakt tempgivare och kopplade båda till en processor. Processorn fick sedan ligga ett tag i varierande temperaturer (-20 till +100 grader C) och lagra färdiga temperaturvärden i en tabell med 256 heltal.

T.ex. om det var 15 grader C så läste processorn in 15.00 från tempsensorn och en siffra från NTC-motståndet, t.ex. 25150 (på en skala från 0 - 65536) De högsta 8 bitarna av talet 25150 blir 98 - så värdet 15.0 lagras i position [98] i RAM-minnet.

Sedan när jag skulle använda NTC-motståndet så skickade jag bara in värdet från ADC:n (de högsta 8 bitarna) till tabellen och vips - kom det ut en temperatur. Genom att approximera (se formel i inlägg ovan) mellan två värden kunde jag få ett exaktare resultat. Då använde jag de kvarvarande bitarna från ADC-värdet.

Re: mäta resistans med pic

Postat: 27 juli 2010, 19:58:34
av sodjan
> antar att PIC:en har 12-bitars ADC?

10, vissa modeller har 12.

Varför vill man ha oljetemperaturen angiven i grad C ?
Då får man ju själv i huvudet översätta till "för varmt", "lagom" o.s.v...
Är det inte vanligast att man anger det direkt ?