Újrakonfigurálható eszközök 13. Cypress PSOC 5LP analóg perifériák 3. rész 1
Felhasznált irodalom és segédanyagok Cypress: CY8C58LP FamilyDatasheet Cserny István: PSOC 5LP Mikrokontrollerek programozása Cypress: PSOC 5LP Architecture Technical Reference Manual) Cypress: CY8CKIT-059 Prototyping Kit Guide Cypress: AN777759: Geting Started with PSoC 5LP Cypress: PSoC Creator User Guide Yuri Magda: Cypress PSoC 5LP Prototyping Kit Measurement Electronics U. Tietze Ch. Schenk: Analóg és digitális áramkörök 2
Termopár (hőelem) A hőelem elektromotoros ereje a termopár meleg és hideg vége közöti hőmérsékletől és az anyagától függ A mért feszültség tehát Tsense és Tref különbségét adja meg, a mért értéket tehát korrigálni kell Tref értékével Az ábrán az iparban elterjedten használt K-típusú NiCr Ni termopár látható, amely 200 to +1350 tartományban használható hőmérséklet mérésre 3
Különféle termopárok jelleggörbéi A legelterjedtebben használt hőelemek Ni ötvözetekből készülnek Chromel: Ni 90 %, Cr 10 % Type E (NiCr CuNi): : 68 µv/ Type J (Fe CuNi) : 54 µv/ Type M (NiMo NiCo) : 50 µv/ Type K (NiCr Ni) : 41 µv/ Konstantán: Cu 55 %, Ni 45 % Alumel: Ni 95 %, Al 2 %, Mg 2 %, Si 1 % (a NiCr Ni termopár újabban chromel alumel páros) 4
Hőmérés termoelemmel Egy Aoyue 907 forrasztópáka hőmérsékletét monitorozzuk, a termopár kivezetéseinek felhasználásával 32 x 0 25 mv 0 800 mv 5
PGA konfigurálása A programozható erősítésű műveleti erősítő konfgurálásánál a referencia bemenetet belső földre kötjük Lassú jel esetén nem kell nagy sávszélesség, a Low Power mód is megfelel Az erősítést 32-re állítjuk (szofverből is állítható) 6
Az ADC konfigurálása A delta-sigma ADC-t single ended módban használjuk, 20 bites felbontással A bemeneti tartomány 0 1.024 V legyen A belső referenciát a P0.3 lábon keresztül kötjük be (beépítet szűrőkondenzátor) A bemenet Bypass Bufer, vagy Level shif legyen 7
Az UART modul konfigurálása Ezútal csak egyirányú forgalmat kérünk (Tx only), mivel csak az eredményt kívánjuk kiíratni Programmegszakítást nem kérünk az Advanced lapon Az adatsebesség és adatformátum: 9600, N, 1 8
További konfigurációs lépések Kivezetések hozzárendelése A hőelemet J típusúra (vas-konstantán) állítsuk be! A Termocouple modul nem hardver alkatrész, hanem két API függvényt biztosít: int32 Thermocouple_GetTemperature(int32 voltage) a termofeszültségből meghatározza a hőmérsékletet int32 Thermocouple_GetVoltage(int32 temperature) a megadot hőmérséklethez tartozó termofeszültséget adja meg Mértékegységek a fenti függvényekben: C/100 és μv 9
main.c #include "project.h" #include <stdio.h> char buf[64]; int main(void) { int32 result, microvolts, temperature, correction; PGA_1_Start(); PGA_1_SetGain(PGA_1_GAIN_32); PGA_1_SetPower(PGA_1_LOWPOWER); ADC_DelSig_1_Start(); UART_1_Start(); CyGlobalIntEnable; // Enable global interrupts. ADC_DelSig_1_StartConvert(); correction = Thermocouple_1_GetVoltage(2500); // Correction for room tempereature for(;;) { while(!adc_delsig_1_isendconversion(adc_delsig_1_return_status)); result = ADC_DelSig_1_GetResult32(); microvolts = ADC_DelSig_1_CountsTo_uVolts(result)/32; // assume gain of 32 temperature = Thermocouple_1_GetTemperature(microVolts + correction); sprintf(buf,"%lu uv %lu C\n",microVolts,temperature/100); UART_1_PutString(buf); CyDelay(1000); } } 10
Mérési adatok Felfűtés kb. 1 perc T [ C] t [s] 350 Lehűlési görbe kikapcsolás után 8 10 percig nem érdemes tapogatni! 300 250 200 150 100 50 80 10 6 13 2 15 8 18 4 21 0 23 6 26 2 28 8 31 4 34 0 36 6 39 2 41 8 44 4 47 0 49 6 52 2 54 8 57 4 60 0 62 6 65 2 2 28 54 0 11
Mérési adatok Az általunk mért eredmények az alábbi táblázatban láthatók A skálán beállítot hőmérséklet és a termofeszültségből számolt értékek jelentős eltérést mutatnak nem kielégítő a kalibráció Skála Uthermo Tcalc 30,0 25,0 200 15,4 282 250 17,1 313 300 18,5 340 15,0 350 20,3 371 10,0 400 22,2 406 450 23,9 437 480 25,2 460 20,0 5,0 0,0 150 200 12 250 300 350 400 450 500
Aoyue 936 forrasztóállomás triac Opto triac 13
Hőmérőből hőszabályozó? Néhány lehetőség a hőmérő kiegészítéséhez További analóg modulok felhasználásával hardveres analóg szabályozót alakíthatunk ki (PID szabályozó OPA felhasználásával) A digitalizált jel felhasználásával digitális szabályozót alakíthatunk ki (pl. PWM) A digitalizált jel felhasználásával a mért hőmérsékletet digitálisan kijelezhetjük (7 szegmenses LED, vagy alfanumerikus LCD kijelző) Kapacitív érintésérzékelés, és VDAC segítségével beállíthatjuk a kívánt hőmérsékletet 14
PID szabályozó Az egyszerű PID szabályozó frekvenciamenete két töréspontal rendelkezik f 1= 1 R2C 2 2π f 2= 1 R C 2π 1 1 Probléma: kis és nagy frekvenciánál bezajosodik 15
Javítot PID szabályozó A PID szabályozó gyakorlati kivitelénél két további ellenállással korlátozzuk az erősítést a nagyon kis és nagy frekvenciákon. Ezzel két új töréspontot hozunk létre: 16
Kisjelű AC erősítő Forrás: Yury Magda: Cypress PSoC 5LP Prototyping Kit Measurement Electronics hardware and software 17
Szimuláció Az áramkör működését a www.systemvision.com online szimulátorában kipróbálhatjuk Az AC (váltóáramú) jelet az unipoláris táplálás miat csak a nullapont eltolásával tudjuk kezelni A bemenőjel 500 mv-ra ültetet 150 mv amplitúdójú jel, az erősítés 3-szoros 18
WaveDAC konfigurálás Az 1 khz-es színuszjelet egy WaveDAC segítségével állítjuk elő A DAC töltése DMA csatornán történik, 100 khz-es gyakorisággal A színuszjel amplitúdója 150 mv az eltolás 510 mv A szinuszjelet egy 100 mintás hullámtábla tartalmazza A frekvencia mintavételi arány és a mintaszám hányadosa (100 khz/100) 19
Az erősítő konfigurálása Az erősítőt egy invertáló PGA modul felhasználásával alakítjuk ki Az erősítést 3-szorosra állítjuk 20
DVDAC konfigurálása A nullapont eltolást egy 12 bites DVDAC (dithered DAC) segítségével állítjuk be. Az időben változó jel kisimítására egy szűrőkondenzátort kell csatlakoztatni a DVDAC kimenetére 21
main.c A főprogram feladata a perifériák elindítása, a műveletvégzés a továbbiakban DMA csatornán és megszakítási szinten zajlanak A WaveDAC8 elindítása a DMA átvitelt is elindítja A főprogram listája: #include <project.h> int main() { CyGlobalIntEnable; /* Enable global interrupts. */ WaveDAC8_1_Start(); Opamp_1_Start(); DVDAC_1_Start(); PGA_Inv_1_Start(); for(;;) { /* Place your application code here. */ } } 22
Szegény ember oszcilloszkópja Az időben változó analóg jelet oszcilloszkóppal lehet vizsgálni, de az drága műszer, az amatőr műhelyében ritkán található meg. Egy áthidaló megoldást hangfrekvenciás jelek vizsgálatához a Soundcard Oscilloscope alkalmazás, amely a hangkártya bemenetére vezetet jel(ek)et a számítógép képernyőjén jeleníti meg Ügyeljünk arra, hogy a vizsgálni kívánt jel AC csatolású legyen (azaz egy kondenzátorral válasszuk le az egyenfeszültségű komponenst) és túl nagy jelet ne engedjünk a bemenetre Az alábbi ábrán látható az a bekötés, amelyet a projektünkben előállítot jelek vizsgálatához használtunk. Mikrofonbemenet esetén csak egy csatornát tudunk használni 23
A bemenőjel (P1_6 kivezetés) 24
A felerősítet jel (P2_3 kivezetés) 25
CY8CKIT-059 fejlesztői kártya USB csatlakozás a PC-hez USB UART Kivezetések KitProg programozó és hibavadász C8C5868LTI-LP039 PSOC 5LP Target áramkör LED1 (2.1 kivezetés) A tápellátás történhet a programozó felől (5V), Az alkalmazói USB csatlakozóról (5V), vagy a VDD csatlakozáson keresztül (3,3 5 V). SW1 (2.2 kivezetés) Utóbbi esetben a D1 és D2 diódákat el kell távolítani az USB-re csatlakozás előtt! RESET gomb helye CY8C5888LTI-LP097 JTAG csatlakozás USB alkalmazói csatl. 26
A céláramkör kapcsolási rajza 27