mäta resistans med pic

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
diman
EF Sponsor
Inlägg: 192
Blev medlem: 14 februari 2007, 09:58:06
Ort: Löddeköpinge

mäta resistans med pic

Inlägg 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 ?
Användarvisningsbild
Icecap
Inlägg: 26658
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: mäta resistans med pic

Inlägg 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.
diman
EF Sponsor
Inlägg: 192
Blev medlem: 14 februari 2007, 09:58:06
Ort: Löddeköpinge

Re: mäta resistans med pic

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: mäta resistans med pic

Inlägg 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.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: mäta resistans med pic

Inlägg 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?
diman
EF Sponsor
Inlägg: 192
Blev medlem: 14 februari 2007, 09:58:06
Ort: Löddeköpinge

Re: mäta resistans med pic

Inlägg 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:
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: mäta resistans med pic

Inlägg 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.
diman
EF Sponsor
Inlägg: 192
Blev medlem: 14 februari 2007, 09:58:06
Ort: Löddeköpinge

Re: mäta resistans med pic

Inlägg av diman »

jo, jag minns något sådant litet från mina algebra klass i skolan...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: mäta resistans med pic

Inlägg 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...
diman
EF Sponsor
Inlägg: 192
Blev medlem: 14 februari 2007, 09:58:06
Ort: Löddeköpinge

Re: mäta resistans med pic

Inlägg 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!
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: mäta resistans med pic

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: mäta resistans med pic

Inlägg 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 ?
Skriv svar