Fórum témák

» Több friss téma
Fórum » PIC hőmérséklet mérő termoelemmel
Lapozás: OK   1 / 1
(#) Crea hozzászólása Aug 5, 2010 /
 
Sziasztok!

Nemrég kaptam egy feladatot, melyben egy pic mikrovezérlővel kell kiértékelnem és kiíratnom egy termoelem mérőjelét. A mérőelem 0-40mV feszültséget ad ki működés közben, ezt szeretném úgy felerősíteni, hogy pontos jelet kapjak amit majd a uvezérlő analóg bemenetén beolvasok.

Első kérdésem az lenne a tapasztalt szakiktól, hogy milyen erősítő IC-t javasolnak?

Jelenleg AD625-ös műszererősítő megoldást találtam egy másik fórumon. Az IC-t a táblázat alapján javasolt Rf -> 20 Kohm Rg -> 402 ohm ellenálásokkal 100-as erősítésre állítanám be, tehát 0-40mV-ból 0-4 V-ot csinálna ami elég jól kiértékelhető lenne a 8 bites AIN-nel, vagyis remélem. Az előforduló zavarok ellen mit tehetek, (csavart mérőkábel stb)? Az beállításhoz vegyek inkább műszerellenállásokat?

A válaszokat előre is köszönöm!

AD625.pdf
    
(#) vilmosd válasza Crea hozzászólására (») Aug 5, 2010 /
 
Hali
Ez az erosito vegulis egy jo valasztas. Az ellenallasokat feltetlenul valami jobb minosegut kellene beszerezni. Nem fontos azert UPR, de ha tudsz szerezni az jobb lehet. Femreteg ellenallasokkal jo erositot lehet csinalmi. Viszont fontos lenne egy homerseklet kompenzalo aramkor, (LT chipcad), es egy 4.096 voltos referencia. Esetleg ha nagyobb felbontast akarsz akkor egy kulso AD (MCP35xx). Kabelkent csak kompenzacios vezeteket hasznalhatsz, mert a sima rezvezetek homersekletfuggo hibat visz a meresbe. Nem tudom milyen uC- akarsz hasznalni, de a 8 bit felbontas az eleg karcsu. 10 bit felbontasnal kb 1 C fok felbonyast tudsz elerni. Viszont ehhez kell egy kulso referencia (4.096 V)- Igy stabil merest lehet csinalni. Esetleg meg lehet 8 meres atlagat szamolni, mert ezzel is lecsokken a zavar merteke. Meg fontos lehet a linearizalas, mert a hoelemek nem linearis eszkozok. A Microchip oldalan talasz AN-t a homerseklet meresrol.
Udv Vili
Ps TC alapok
(#) aticska válasza Crea hozzászólására (») Aug 5, 2010 /
 
Szia!

K típusú hőelemhez MAX6675.
(#) dcsabi válasza Crea hozzászólására (») Aug 5, 2010 /
 
Van itthon "kapóra" egy ilyesmi, de egy kicsit régebbi kivitel.
TLC27L9-el van megoldva, smd a környezete, közönséges ellenállás és néhány kondenzátor.
Ahol ezeket használjuk elég sok a zavar, de nem hinném hogy ézékeny rá, ugynis a hőelem a bemeneten gyakorlatikag rövidzár.
A mai korszerűbb előerősítők még jobbak lehetnek.
Az alkalmazott hőelem karakterisztikáját mindenképpen szerezd meg, és ezt a uC- be kell "kompenzálni".
Feszültség ref. is ajánlott!
A felbontást állítsd 10 bitre (0-1023) mert elég "buta" lesz.
(#) Hp41C válasza vilmosd hozzászólására (») Aug 5, 2010 /
 
Sziasztok!

A 18F2423, 2523, 4423, 4523, 2553, 4553 stb. -ban a belső A/D 12 bites...
(#) vilmosd válasza Hp41C hozzászólására (») Aug 5, 2010 /
 
Hali
Mondjuk en tudom, de a kollega akarta 8 biten merni a hoelemet. A masik pedig nem tudjuk a kollega mennyire jartas a PIC programozasben. En csinaltam 16F690-ben homerot linearizallassal "K" es "J" tipusu hoelemekhez LCD-vel.
Udv Vili
(#) dcsabi válasza Crea hozzászólására (») Aug 5, 2010 /
 
A uC oldaláról többszörösen meg van oldva a feladat már, ezt valójában a kérdező is megoldja. A topic indító kérdése, milyen vezetékkel kösse be?
Mindenképpen szerezz be ehhez a hőelemtipushoz tartozó kompenzációs kábelt. (ez polarítás helyesen az érzékelő saját anyagából van, kb: 4-500ft/m)
Több méter távolságra is elviheted igy az érzékelőt.
(#) tardis válasza aticska hozzászólására (») Aug 6, 2010 /
 
A Max6675-ről van valami tapasztalat? Én most akarom kipróbálni.
(#) aticska válasza tardis hozzászólására (») Aug 6, 2010 /
 
Pofonegyszerű a kezelése. Már jópár hőmérőt építettem vele. Volt egy projectem aminek része volt többek közt hőelemes mérés. Nem volt sok időm tökölni vele, ekkor találtam rá erre az IC-re, és azóta ezt használom. Meg lehet oldani másképp is, de ez nekem bevált.
(#) vilmosd válasza tardis hozzászólására (») Aug 6, 2010 /
 
Hali
En vegulis nem hasznaltam, de az "olcsosaga" miatt (3000Ft +ifa) nem is fogom. Ennyi penzbol ki lehet hozni cakom-pakk mindent. Biztos egyszeru a kezelese, de a felso tartomanyban (700+) mar azert jelentos hibaval rendelkezik (+-19 LSB= 4.75 fok). Egyszerubb egy jo erosito, diodas (esetleg MCP9700A) hidegpont kompenzacio, egy TL431 referencia, es 1 fok bontasra a PIC AD-je. A linearizaras SW-ben megoldva. Meg hozza jon a szabadon valaszthato hoelem (E, J, K). De vegulis akinek megfelel ez a pontossag, es sok penze van, am legyen. Ezt kell felhasznalni.
Udv Vili
(#) Crea válasza vilmosd hozzászólására (») Aug 7, 2010 /
 
A max6675 IC jó és egyszerű megoldásnak kínálkozik csak a beszerezhetősége kérdéses illetve nem értem, hogy miért 4.75C fokot téved ha a gyártó szerint 0.25C fokos pontossággal dolgozik?
Szerinted a hőmérséklet kompenzációt szoftveres úton egy digitális hőmérő IC-vel meg lehet valósítani? Az analóg megoldás nem tűnik túl rokonszenvesnek mert nem egyszerű ráilleszteni ilyen módon a termoelem karakterisztikájára illetve mV-os nagyságrendű mérőjelére!
(#) vilmosd válasza Crea hozzászólására (») Aug 7, 2010 / 4
 
Hali
Az IC beszerezheto a RET-nel, de 3000 +ifa+szallitas. Ha jol megnezed az adatlapjat, az also tartomanyban garantal +- 3 LSB hibat. 1 LSB 0.25 C. A kozapso tartomany +- 8 LSB, a felso tartomany +-19 LSB. Ha megszorzod az LSB-t (0.25 C) a hibaval kijon ez a hiba. A felbontasa az IC-nek 0.25 (12 bit), viszont a hiba az LSB-ben van megadva (marketing). A homerseklet kompenzaciot szerintem egyszerubb analog modon megoldani, mint digitalisan. Az analog jel feldolgozasahoz mindenkeppen kell hasznalnod AD atalakitot. Hasznalhatsz TC1047A v. MCP9700A hoerzekelot a csatlakozasi pont homersekletenek a meresehez. Ezek 10 mV/C kimenetu erzekelok es nagyon olcsok. A meres pontossaga 2.56 V referencia fesznel 1/4 C felbontast ad. Plusz egy csatorna meresehez nem kell sok program. Az SPI, I2C erzekeloket szerintem nehezebb kezelni SW-ben, mint egy AD csatornat. Ezek utan az en szvsz. jobb muszert lehet csinalni (foleg olcsobbat) analog es PIC keveresevel, mint tisztan digitalis megoldassal. Mindenfelekeppen meg kell oldani a linerarizalast, mert mint a belinkelt leiras mutatja a hoelem nem liearis elem. Viszont ha Te meg a Max IC-vel beviszel hibakat, az eletben nem fogsz pontos homerot csinalni. Olyan sacc/kb homero kijon jo dragan, de a hasznalhatosaga megkerdojelezheto. Vegulis nem tudjuk mi a celfeladat, ezert lehet akar jo is. Nalam 1360 C homersekletnel azert eloiras volt a +- 5 C szabalyzas. A meresnek ennel pontosabbnak kellett lennie. De vegulis a felhasznalasa valogatja. Ja a masik. a MAX IC biztos nem linearizal, csak a nullpont kompenzaciot csinalja meg analog modon, tehat a hoelem nonlinearitasat igy-is ugy-is ki kell egyenliteni. Meg hozza is ad egy rakas hibat.
De vegulis Te tudod mire akarod hasznalni, es hanyszor akarod ujrakezdeni a tervezest.
Udv Vili
(#) kobold válasza Crea hozzászólására (») Aug 7, 2010 /
 
Precíziós, minimális offszetű, GND-t magába foglaló bemenetű, rail-to-rail kimenetű műveleti erősítővel nagyon szépen lehet mV-os jeleket is erősíteni. Linearizálni pedig nem analóg módon kell, hanem szoftveresen: egyszer kell a mérendő tartományon 5...10...20 °C-onként végigmenve (vagy más lépcsővel, ahogy szükséges) megmérni a kimeneti jelet (teszem azt, lcd-re kiírni a konverzió pillanatnyi értékét), ezeket eltárolni egy táblában, és a programban nem bonyolult képletekkel kell számolgatni, hanem a tábla azon két eleme között, melyek közé a konverzió utáni eredmény esik, kell egy lineáris interpolációt végrehajtani. Akármilyen görbe a karakterisztika, kis szakaszokon lineárisnak tekinthető, és ez a módszer gyorsan képes elég pontos értéket visszaadni.
(#) Crea válasza vilmosd hozzászólására (») Aug 21, 2010 /
 
Köszönöm a segítséget mindenkitől!
A kapcsolás következő fő alkatrészekkel lesz megvalósítva:

K-típusú termoelem
átalakítás:
cs5524 22-bit A/D
hidegpont kompenzálás mérésére:
2 db MCP9700A (sajnos 2 fokos pontosságot garantál, nem lehetne feljebb húzni?)
kiértékeléshez:
pic18f2620
2*16-os LCD kijelző

Ha sikerült összerakni és működőképes elküldöm!
(#) jocc válasza Crea hozzászólására (») Aug 21, 2010 /
 
hali kicsit későn... de hasonlóval én is foglalkoztam egy lm35-ös mérő jelét erősítettem fel műveleti erősítővel az adc illesztésére(bár nem a legjobb de egy behatárolt tartomány mérésére 0.2.-es pontossággal mért valós értéket !!! szimulációt proteus-on csináltam és öszerakva teszteléshez úgyszint jó volt. most nem vagyok otthon majd csak holnap, majd felrakom a rajzot bár szerintm lesznek benne hibák nincs sok tapasztalatom még az elektronikában...
(#) vilmosd válasza Crea hozzászólására (») Aug 21, 2010 /
 
Hali
Az AD-t nem ismerem, ezert nem tudok rola nyilatkozni. A MCP9700A helyet a kicsit dragabb TC1047A tipust is hasznalhatod(SMD), ezek pontosabbak. Ezeknek az eszkozoknek a pontossaga vegulis az abszolut ertektol valo elterest jelenti, de az ismetlesi pontossag az sokkal jobb. Tehat ez nem sokat fog bejatszani a muszered pontossagaba. A linearizalas ugyis visz be hibat. Nem tudom miert valasztottad ezt a az AD-t. Eloszor is nagyon draga. Masodszor a Te esetedben elegendo lenne egy 14-16 bites AD, mert a 24 bitesnel ugy sem tudod semmire sem hasznalni az also 8 bitet. A MCHP gyart sokkal olcsobb 16-18 bites AD-ket.Nagyon fontos lehet meg a Vref eloallitasa, mert nagyban befolyasolja a meres pontossagat. Egy jo minosegu ref IC is eleg draga.
Udv Vili
(#) Crea válasza vilmosd hozzászólására (») Aug 22, 2010 /
 
Hello!
Azért szeretném használni ezt a 2000 Ft-os A/D-t, mert bele van integrálva egy prec. erősítő, 2.5V-os referencia mellett 100mV-os tartományt tud 22 bites felbontással átalakítani, az utolsó 5-6 bit a garantált pontosság illetve zavar miatt elhanyagolható 4 csatornás AIN 3 ki lesz belőle használva, TDK munka része, finanszírozás nem zsebből megy . Megnéztem a TC1047A adatlapját sajnos itt is +-2 fokos értéktartást biztosítja max csak a "tipikus" hiba 0.5 fok ez elég megbízhatatlan paraméter szerintem, arra viszont kíváncsi lennék, hogy mivel lehetne megvalósítani 0.1 vagy 0.2 fokos garantált hőmérséklet mérési pontosságot?
Üdv,
Crea
(#) vilmosd válasza Crea hozzászólására (») Aug 22, 2010 /
 
Hali
En lattam sok ilyet, de ennyire nem kellett precizitas a hidegpont kompenzaciohoz. Ezek az erzekelok abszolut pontossaga +-2 fok (maximum), de a visszaallasi (ismetlesi) pontossag sokkal jobb. A Te esetedben esetleg lehet felvenni egy hibagorbet az altalad kivant tartomanyban es mar meg is van oldva az ugy. Persze Te tudod mi a feladat. Esetleg meg kellene probalni valami digitalis kimenetu erzekelot. Pl: TC77, MCP9804. A MCP9804 I2C kommunikacioval rendelkezo szenzor, 12 bit felbontassal, es +-0.25 C tipikus pontossaggal. A max hiba itt is +-1 C. Az alapja muindegyik erzekelonek BandGap erzekelo, tehat ebbol adodik a pontossag. Esetleg probalhatsz PT100, PT1000 erzekeloket, de ezek dragabbak sokkal, es a feldolgiozasa is sokkal macerasabb. Kulonben is beszelsz itt 22 bites felbontasrol, de ehhez szukseges egy nagyon preciz referencia feszultseg, es preciz ellenallasok. Sima kozonseges TL431 tud 30 ppm pontossagot. A Te muszeredhez szukseges referecia legalabb 5 ppm pontiossagu kell hogy legyen. Na az sem lesz olcso. Pl ehhez a kategoriahoz megfelelo ADR441 3$ korul van 1000 tetelnel a gyartotol. Tudom a penz nem szamit, de viszont ha pontossagot akarsz, ezekkel a dolgokkal szamolni kell. Ja visszaterve az ellenallasokra: fontos beszerezni preciz ellenallasokat, mert sajnos az atlag ellenallasok hofokfuggese es a zaja jelentos hibakat visz be a meresbe. A jobb muszerekben altalaban manganin, vagy UPR ellenallasokat hasznalnak.
De vegulis nem tudom Te milyen precizitast akarsz, tehat ezek csak tanacsok.
Udv Vili
(#) jocc hozzászólása Aug 23, 2010 /
 
hali most sikerült hazaérni, feldobom a saját kapcsolásom + a programot a rajzot proteus7 el készítettem és szimuláltam lehet hogy vannak benne hibák a profik tuti észreveszik...
(#) Panzer576 hozzászólása Ápr 28, 2012 /
 
Hali!
Nekem is ilyen kapcsolás kellene 0-500 °C-ig, de én J típusú hőelemet használok. Az alapötletem: a hőelem adatlapja szerint 53 uV/K feszültséget ad ki, ugyan ez 20 °C-on átváltva 15,5 mV-kellene hogy legyen, de naaaaaagyon nem ennyi!
Úgy próbáltam PIC-re kötni, hogy egy MCP602-es kettős műveleti erősítő két felét egymás után kötöttem, létrehozva egy kb 117X-es erősítést. a hőelem egyik lába a műveleti erősítőre megy, a másik a testre, de nem nagyon akar csinálni semmit. PIC16F887 pic-re kötöttem rá a műveleti erősítő kimenetét, vagy 0°C-ot mutat, vagy 500°C-ot... nincs átmenet... Durva ugrás!
Tudnátok egy kicsit segíteni, mit hagytam ki? Olvastam hideg illesztésről az mi is?

Előre is köszi:
Panzer
(#) glaci válasza vilmosd hozzászólására (») Nov 12, 2012 /
 
Idézet:
„En csinaltam 16F690-ben homerot linearizallassal "K" es "J" tipusu hoelemekhez LCD-vel.”


Kedves vilmosd!
Napok ota kinlodok egy 16F690 adc-jevel. En is szeretnek epiteni ezzel az pic-el egy homerot, egyenlore pic programozas gyakakorlasa cellal. A kijelzes most csak a digitek C porton valo megjelenitese. A problema az, hogy sorolnak is szepen a digitek a ledsoron, de megjelenik emellett, a portokon egy kb. 50us impulzus is. A legszembetunobb az eppen 0-ba levo port, mert az halvanyan villog ugyan, eppen csak eszrevenni, de ott van. A magasabb helyierteku biteknel csak bizonyos bemeno feszultseg ertekeknel.
  1. |     Tutorial 18C - iBoard Tiny iCP21 (PIC16F690) ADC Demo         |
  2.  ********************************************************************
  3.  This program shows how to use the ADC (Analog-to-Digital converter)
  4.  pin on a PIC16F690.                    
  5.  This tutorial will work with the Hi-Tech C compilers.              
  6.                                                                  
  7.  iBoard connection as follows:                                    
  8.     PIN            Module                                      
  9.  -------------------------------------------                        
  10.    PORTC      iCM02 - 8 LEDs Module                            
  11.     RA2        10K Potentiometer                            
  12.  
  13. Note:
  14. 1. RA0 & RA1: ICSP (PGD & PGC)
  15. 2. RA3: MCLR
  16.                                                                    
  17. **********************************************************************
  18. |              WWW.PICCIRCUIT.COM  (C) Copyright 2012                |  
  19. **********************************************************************
  20. | This source code may only be used with PICCIRCUIT products only.   |
  21. | If you distribute the source code, the source code must have this  |
  22. | entire copyright and disclaimer notice. No other use, reproduction |
  23. | or distribution is permitted without written permission.          |
  24. **********************************************************************
  25. |   Program: main.c                                         |
  26. |   Version: 1.0                                        |
  27. |-------------------------------------------------------------------*/
  28. #define   XTAL_FREQ   8MHZ      /* Crystal frequency in MHz */
  29. #include <pic.h>
  30. #include "delay.h"
  31.  
  32. unsigned char ADC_Value=0;
  33.  
  34. // ============================================================
  35. // Configuration Bits
  36. // ============================================================
  37. __CONFIG(FOSC_INTRCIO & WDTE_OFF & CP_OFF & CPD_OFF & BOREN_OFF);
  38.  
  39. /**************************************************************
  40.                     Initialise System
  41. **************************************************************/
  42. void System_init(void){
  43.  
  44.    IRCF0 = 1;          //Internal Oscillator Frequency: 8MHz
  45.    IRCF1 = 1;
  46.    IRCF2 = 1;
  47.    ANSEL = 0b00000100;    //Enable analog input AN2
  48.    ANSELH = 0x00;
  49.    TRISA = 0b00000111;      //set A3-A5 as output, A0-A2 as input
  50.    TRISC = 0b00000000;      //set portc as output port
  51.  
  52.    ADCON0 = 0b00001001;    //Left justified, Channel 2 (AN2), A/D converter ON
  53.    ADCON1 = 0b00110000;   //Frc
  54.  
  55.    PORTC = 0xff;      //On portc
  56.    DelayMs(1000);      //delay 1sec
  57.     PORTC = 0;         //Off portc
  58. }
  59.  
  60. /**************************************************************
  61.                       Main Program
  62. **************************************************************/
  63. void main(void){
  64.  
  65.    System_init();
  66.    while(1){            //looping
  67.       GO_nDONE = 1;       //Start Conversion
  68.       while(GO_nDONE){}    //Wait for conversion complete
  69.       ADC_Value = ADRESH;    
  70.       PORTC = ADC_Value;   //Display ADC value at portc
  71.                      
  72.    }
  73. }

Ez egy talalt program, de a sajatommal is ilyet produkal
  1. program ADC_on_leds;
  2. var temp_res : word;
  3. { Declarations section }
  4.  
  5. begin
  6.   { Main program }
  7.      Ansel:=%00000010;                     // Configure AN1 pin as analog
  8.     Adcon0:=%10000101;                        //Jobbra rendezzük a biteket, az AN1 van kiválasztva bemenetnek
  9.                                             //és bekapcsoljuk az AD modult
  10.     Adcon1:=%01010000;                         // A kritály 6 Mhz, azért hogy a konverziós időt 2,7us
  11.  
  12.  
  13.  
  14.     TRISA  :=%000010;                       // PORTA.1 is input
  15.     TRISC  := 0;                          // PORTC is output
  16.     TRISB  :=%00110000;                       // PORTB is RB7, RB6 output
  17.     portb:=  %00110000;
  18.     portc:=0;
  19.  
  20.     while (TRUE) do
  21.       begin
  22.       adcon0.1:=1;
  23.       pir1.6:=0;
  24.       while (adcon0.1=1) do begin end;
  25.       pir1.6:=1;
  26.       adcon0.1:=0;
  27.       temp_res:=adresl;
  28.         PORTC := temp_res;                // Send lower 8 bits to PORTC
  29.         PORTB := word(temp_res shr 2);    // Send 2 most significant bits to RB7, RB6
  30.       end;
  31. end.


Ez pacaslban van irva, az nekem jobban fekszik.

Legyszives segiteni kiszuorni a hibat.
(#) vilmosd válasza glaci hozzászólására (») Nov 12, 2012 /
 
A kerdes: a HW felepites milyen? Mivel programozol, mivel taplalod? Mentkozben rajta van a programozo ha ICSP?
(#) glaci hozzászólása Nov 12, 2012 /
 
A HW egy fejleszto panel szurt halozati trafos, 7805, elko,100n. PICKIT2 a programozo. Mnetkozben nincs rajta a programozo.
(#) vilmosd válasza glaci hozzászólására (») Nov 12, 2012 /
 
Akkor +1 kerdes: milyen forras feszultseget kivanod merni? Probara egy 5-10k poti 0-5V kozott, a csuszka pedig az AD bemeneten. Esetleg nincs valami mas is rakotve ezen a szuper univerzalis panelen? Volt mar ilyen a vilagtortenelemben. Multimeter mit mutit az AD labon?
(#) vilmosd válasza glaci hozzászólására (») Nov 12, 2012 /
 
  1. var temp_res : word;
helyett
  1. var temp_res : byte;
Talan. Nem ismerem a uPascalt, sot a pascalt sem, es nem tudom mit csinal amikor egy 16 bites valtozot probalsz beirni egy 8 bites portba. Ja esetleg meg a hurokba tegyel egy kesleltetest, ne azonnal fusson ujra az AD konverzio.
(#) glaci válasza vilmosd hozzászólására (») Nov 12, 2012 /
 
Megprobaltam 20ms kesleltetett indítást a hurokban, ez sajnos csak idoben eltolta a problemat, de nem szuntette meg. Pedig bizonyara idozitesbeli a problema. Holnap megprobalom belso oszcillatorral hasznalni a picet.
(#) vilmosd válasza glaci hozzászólására (») Nov 13, 2012 /
 
Probald meg azokat amiket mar leirtam. A Word->byte valtoztatast.
(#) Fiti hozzászólása Márc 22, 2014 /
 
Helló!

Tud valaki segíteni, hogy a MAX6675 3 lábát a PIC24H melyik lábaira kell kötni? Csak PIC16-ra találtam rajzokat és nem igazán vagyok benne biztos, mert ott az UART I/O-kat használták.
(#) Zsora válasza Fiti hozzászólására (») Márc 22, 2014 /
 
Szia!
A MAX6675 SPI buszon kommunikál, tehát a PIC24H SPI lábaival kell őket összekötni.
SO->SDI, SCK->SCK, /CS->tetszőleges kimenet
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem