PIC16F877 mikro denetleyici ve DS18B20 ısı sensörü ile lcd göstergeli dijital termometre yapımı tüm detaylar bulunmakta yazılım C dili ile (Mikroelektronika mikroC) hazırlanmış ısı alğılama projelerinizde örnek olabilir feyz alabilirsiniz. Harızlayan emeği geçen kişilere teşekkürler
Bu çalışmada elektronik devreler ve mikro denetleyici kullanılarak bir termo metre tasarımı amaçlanmıştır. Çalışmada algılanan sıcaklığa bağlı olarak değişen sıralamada yanan ledler ve algılanan sıcaklığı dijital olarak gösteren lcd cihazları çalışma prensibi esas alınmıştır. Bu yöntemde vücut sıcaklığı incelenir.
Normal bir insanın vücut sıcaklığı 37C olup birçok hastalıkların başlangıcında sıcaklık genellikle yükselmekte ve bazı hastalıklarda da vücut sıcaklığı düşmektedir. Bu nedenle hastalıkların anlaşılması için vücut sıcaklığını ölçen ve termometre denilen cihazlar tasarlanmıştır.
Öncelikle termometre hakkında kısa bir bilgi verilecek daha sonra kullanılan malzemeler hakkında bilgi verilecektir. Bir sonraki bölümde ise uygulanan yöntem hakkında bilgiler verilecek, tasarlanan sistem blok diyagramlarla anlatılacaktır. Ardından devre şemaları ve devre dizaynları ile ilgili açıklamalar yapılmıştır. Son olarak sonuç ve bugüne kadar gelinen nokta hakkında bilgiler verilecektir.
Genel olarak Santigrat, Fahrenheit, Reomür olmak üzere üç çeşit termometre vardır. Bunlar, genel yapı bakımından birbirlerinin aynıdır. Değişik olan, üzerlerinde bulunan rakamlardır. Bu da, kaynama derecesinin, her üçünde değişik olarak alınmasından ileri gelmektedir. Suyun donma derecesi, her üç termometrede 0 olduğu halde, kaynama derecesi, Santigratta 100, Fahrenheltta 212, Reomürde 80 olarak kabul edilmiştir. Oiva termometrelerinden başka madensel ve alkollü termometreler de yapılmıştır.
Dijital Termometre
Dijital termometreler genellikle vücut sıcaklığını ölçer. Ancak dijital olduğu için uzun süreli okuma yapabilirler; yine de termometreler arasında en hızlı ölçüm yapabilen çeşittir.
Cıvalı Termometre
Cıvalı termometre de vücut ısısını ölçer ancak dijital termometrenin ölçtüğü süreden daha uzun sürede bu işi görmektedir. Aynı zamanda “vücut termometresi” şeklinde de bilinir. Tıpta kullanılır.
Hasta Termometresi
Civalı bir termometredir. Vücut sıcaklığını ölçmede kullanılır. 35 santigrat derece ile 42 santigrat derece arasındaki sıcaklıkları 1/10 incelikle ölçer. Bu termometrelerin haznesi ile kılcal borunu birleştiği yerde bir boğum bulunur. Vücut sıcaklığı ölçüldükten sonra termometre sapından tutularak sallanır. Neden? Yeni bir ölçmeye hazır olan termometre ağız içi ya da koltuk altına konularak vücut sıcaklığı ölçülür.
*Bu projede PIC mikro kontrolör tabanlı bir dijital termometre yapmak amaçlanmaktadır.*
KULLANILAN MALZEME LİSTESİ
- 1) 1 adet 16F877 model pic
- 2) 1 adet BS18B20 sıcaklık entegresi
- 3) 1 adet 20MHZ Kristal
- 4) 2 adet 22Pf Kondansatör
- 5) 9 adet 10K Direnç
- 6) 1 adet LM016L LCD
- 7) 8 adet sarı 1 adet yeşil led
- 8) 1 adet 5V adaptör
- 9) 1 adet pull up direnci
Vücut sıcaklığını ölçen ve uygun bir şekilde gösteren PIC mikro kontrolör tabanlı cihaz tasarımı için sıcaklığı algılayan sıcaklık sensörü, PIC mikro kontrolör, Ölçülen sıcaklığı gösteren LED ya da LCD gereklidir.
Sıcaklık sensörleri genel olarak analog ya da sayısaldır. Analog sensörlerin çıkışları analog gerilim veya analog akım olup genellikle bu gerilim veya akım sıcaklık ile doğru orantılıdır. Analog sensörleri mikro kontrolöre bağlamak için analog-sayısal dönüştürücü devresi kullanmak gerekmektedir. Birçok PIC mikro kontrolör içinde analog-sayısal çevirici bulunmaktadır. Projede kullanılan PIC16F877 mikro kontrolörün içinde 8 tane ve her biri 10 bit olan analog-sayısal çevirici bulunmaktadır. Gerçekte analog-sayısal çevirici bir tane olup bir multipleksor sayesinde mikro kontrolöre 8 tane analog giriş bağlanabilir.
Projede algılanmış sıcaklığı göstermek için LED ve LCD kullandık. LCD ekranından gösterilen sıcaklığa bakarak ve yanmış olan LED lere bakarak sıcaklığı ölçmüş oluruz. LED lerle ölçüm hassas olmamasına rağmen vücut sıcaklığını ölçmek için kullanılabilir. Kullandığımız sıcaklık sensörü üç bacaklı bir sensördür. Bir bacağı +5V gerilime diğer bir bacağı toprağa üçüncü bacağı ise çıkış olup mikro kontrolörün analog girişine bağlanır.
DS18B20 Sayısal Sıcaklık Algılayıcısı
Maxim/Dallas firması tarafından üretilen DS18B20 sıcaklık algılayıcısı en fazla 0,5°C’lik hata ile -55°C ile +125°C arası ölçüm yapabilmekte ve sıcaklık bilgisini sayısal olarak vermektedir. TO-92 kılıfındaki DS18B20’nin görünümü Şekil-2’de verilmektedir.
DS18B20 gibi sayısal çıkış veren sıcaklık algılayıcılarının kullanımı ile analog/sayısal dönüştürücü kullanımına gerek kalmamaktadır. Ayrıca Maxim/Dallas tarafından geliştirilen tek hatlı (1-Wire®) bir haberleşme protokolü ile sıcaklık bilgisi sayısal bir işlemcinin sadece bir giriş/çıkış ucu kullanılarak okunabilmektedir. Her bir DS18B20 için tanımlanmış 64-bitlik bir seri numarası mevcuttur.
Bu seri numarası sayesinde tek bir tel üzerinden birden fazla DS18B20’den sıcaklık bilgisi okunabilmektir. Ayrıca parazit besleme özelliği ile (parasite power) harici besleme kaynağına gerek kalmadan sıcaklık bilgisi okunabilmektedir.
Termometre
İlk termometre, 1614 yılında ünlü bilgin Galile tarafından yapılmış, gittikçe evrim kazanarak, bugün kullanmakta olduğumuz termometrelerin meydana gelmesine yol açmıştır. Bugün kullanmakta olduğumuz termometreler, 1742 yılında Andres Celsius tarafından bulunmuştur.
Termometreler, genel olarak, ince bir cam tüp halindedirler. Bu tüpün alt tarafında şişkince olan bölümde, cıva deposu vardır. Sıcaklık karşısında genişlemeye uğrayan cava, bir sütun halinde, cam tüp içinde yükselir, önceden tespit edilmiş derece miktarlarına göre, civanın bu yükselmesine sebep olan sıcaklık, tespit edilmiş olur.
DQ ucu 4,7 K‘ lık bir pull-up direnci ile mutlaka +5 V ta bağlanmalı. Eğer bu nokta atlanırsa devre 0 dereceyi gösterecektir.
DS18B20 algılayıcısı (Tek Hat Sayısal Termometre) yüksek doğrusallığa sahip sayısal çıkış üreten bir sıcaklık algılayıcısıdır. Dallas/Maxim tarafından geliştirilen tek hat haberleşme protokolü ile haberleşilen bu algılayıcıların her birinin özel ve 64 bitten oluşan
tek bir seri numarası bulunmaktadır (8 bit CRC kodu + 48 bit seri no +8 bit aile kodu ). Böylece tek bir seri hatta bağlanan birden fazla DS18B20algılayıcılarından istenileni ile haberleşilerek ilgili noktadaki sıcaklık ölçülebilir. Bu sıcaklık algılayıcısı 100 metreye kadar herhangi bir ek devre elemanına gerek kalmadan kullanılabilmektedir. DS18B20, -55°C ile +125°C arasında 9, 10, 11 veya 12 bitlik çözünürlükte ölçüm yapabilmektedir. 12 bitlik çözünürlükteki hassasiyeti 0,0625’°C dir. Çözünürlük değeri yapılandırma kaydedicisinin 5. ve 6. bitleri değiştirilerek belirlenmektedir.
Link PIC16F877’nin Özellikleri ve Yapısı
GERİ BESLEME VE OSİLATÖRLER
Kristal Osilatörler: Bir osilatör, bir alıcı ya da verici sabit bir frekansta çalışacaksa yani çalıştığı frekansta az da olsa bir değişiklik olmayacaksa o zaman devredeki osilatörün kristalli olması en iyi yöntemdir. Kristal osilatörün ana parçası olan piezoelektrik kristal çoğunlukla kuvars madeninden yapılır. Kuvars, çeşitli büyüklüklerde kesilerek, yontularak çeşitli frekanslar için üretilir. Osilatör için üretilmiş bir kuvars yuvarlak vitamin haplarına ya da küçük dikdörtgen prizmaya benzer.
Bir kuvars kristaline basınç uygularsak iki kenarı arasında bir gerilim oluşturur. Kuvars benzeri maddelerle yapılmış çakmaklar buna bir örnektir. Tersi biçimde bir kuvars kristaline DC gerilim uygularsak bu kez de burkulur. Tersi bir gerilim uygularsak diğer yönde burkulur. AC bir gerilim uygularsak, uygulanan AC gerilimin frekansında her iki yöne burkulur yani titreşir. Uygulanan AC gerilimim frekansı, kristalin bir kesim özelliği olan rezonans frekansında ise o zaman en büyük titreşim elde edilir.
Yukarıdaki paragrafta anlattığım gibi kristalin hareketleri mekaniktir. Bu mekanik hareketi sağlayan kristalin elektriksel modeli ise aşağıdaki şekildedir.
Şekil 3.2’de sol taraf bir seri rezonans devresidir. Bu seri kısım kristalin hiç bir bağlantı ucu olmayan halini temsil eder. Sağ taraftaki Cj ise kristalin bağlantı elektrotları ve elektrotları elektronik devreye bağlayan bağlantı telleri arasındaki kapasiteyi temsil eder. Piezoelektrik kristallerin Q değerleri çok yüksek olur tipik bir değer olarak 5000 diyebiliriz.
Şeklin sol tarafına dönecek olursak L ve C kristalin rezonans frekansıdır ve kesim şekli ile büyüklüğü ile belirlenir. R direnci ise kristalin mekanik salınımına yaptığı direnmedir. R direnci ihmal edilirse seri kısmın rezonans frekansı;
Sağ tarafta seri rezonans devresine paralel bir Cj kondansatörü var. Bu kondansatörün değeri seri rezonans kısmındaki kondansatörden çok büyüktür. Bir örnek verecek olursak, tipik bir kristalde C=0,025pf Cj=3,5pf gibi. Bu durumda kristalin paralel devre olarak rezonans frekansı;
Paralel rezonansta oluşan frekans, seri rezonansta oluşan frekanstan biraz daha yüksektir. Tipik olarak seri rezonans frekansı paralel rezonans frekansının 0,9 daha düşüğüdür. Kristali paralel rezonansta çalıştırmanın bir avantajı vardır. Cj kondansatörü kristalin bağlantıları ile ilgili olduğu için kristale dışarıdan ayarlı bir kondansatör takarak (trimer kondansatör) frekansı çok az aşağı ya da yukarı çekmek mümkündür. Bu değişim çok fazla olmamak koşulu ile ince ayar için çokça kullanılır.
Kristal bir kütleye sahiptir. Bu nedenle ısındığı ya da soğuduğu zaman hacmi dolaysıyla frekansı değişir. Bu değişim az olmasına rağmen hassas devrelerde istenmez. Isıya bağlı frekans kaymasını önlemek için kristaller sabit ısıda çalıştırılır. Sabit ısı, içinde kristal ve termostatlı ısıtıcı bulunan küçük fırınlarla (crystal owen) sağlanır.
Aşağıda çeşitli kristal osilatör devreleri görülmektedir.
Yukarıdaki devrede kristal paralel rezonans devresi olarak çalıştırılır. Bu durumda kristal çok yüksek empedans gösterecektir. FET transistörün akaç tarafındaki L C kristal frekansına yakın bir değere ayarlanır.
PROJENİN YAPIM SÜRECİ ve AÇIKLAMALARI
• Mikro kontrolörün 1 numaralı bacağı besleme bacağıdır ve bu besleme bacağına (+5V) bağlanarak mikro kontrolör enerjilendirilmiştir.
• Sıcaklığı algılayabilmek için kullanılan DS18B20 sıcaklık sensöründe;
• VCC besleme, DQ(DIGITAL QUIT) data çıkışı, GND(GROUND) toprak bağlantısıdır. Sıcaklık sensörünün çıkışı olan dijital sinyal, paralel bağlı Pull up direnci ile kuvvetlendirilmiştir. Pull up direncinin bağlanma sebebi; ısı sensörünün çıkışından gelen zayıf sinyalin yeterli düzeye yükseltilmesini sağlamak içindir.
• Kuvvetlenen sinyal PIC’ in giriş kısmında 10 numaralı bacağı olan AN7/CS portuna bağlanmıştır.
• Mikro kontrolörün 13 ve 14 numaralı CLKIN ve CLKOUT bacakları arasına Kristal Osilatör ve kristalin 2 ucuna da (giriş ve çıkış uçlarına) paralel kondansatörler bağlanmıştır. Bağladığımız bu Kristal ve kondansatörler, Dc giriş gerilimini Kare dalga Ac gerilime çeviriyor ve bu kare dalga gerilim PIC’ in clock uçlarına uygulanıyor böylece mikro kontrolörde zaman kavramı oluşuyor. Eğer kondansatörlerin değerleri uygun seçilmezse elde ettiğimiz kare dalgalarda bozulmalar meydana gelir ve hassas bir sonuç elde edilmez.
• Mikro kontrolörün çıkış kısmına Port d 19-20-21-22-27-28-29-30 bacaklarına sırasıyla 8 led birbirine paralel olarak bağlanmıştır. Programımızın çalışma düzenine göre bağlanan ledler hexademical düzene göre yanmaktadır. Bağlanan 8 led sırayla yandığında (20 ,21 ,……27 ) değerlerini ifade ediyor.
Bizim devremiz maksimum 127,5 dereceye kadar ölçüm yapabiliyor, bu sıcaklıkta ledlerin tamamı yanar ve 255 değerini okunur. Ledlerin yanmasıyla okunan değer ve ölçülen sıcaklık arasında 2:1 oranı vardır.
Bir örnek üzerinde gösterecek olursak;
Yukarıdaki şekilde 4. Ve 6. Lamba yanıyor yani bizim okuyacağımız değer onluk tabanda değeri olacaktır.
• Ölçülen sıcaklığı LCD ekran üzerinde okuyabilmek için LM16L model lcd kulandım.
Resim 4.2 LM016L LCD
LCD 2 numaralı bacağına bağlı +5V gerilim ile beslenmektedir. 1 numaralı bacak ise nötr hat bağlanmıştır.
Projemde mikro kontrolör ile LCD arasında 4 bitlik haberleşme söz konusudur dolayısıyla çıkış tarafında port b 37-38-39-40 olmak üzere 4 bacak LCD’ nin 11-12-13-14 numaralı b ( D4 D5 D6 D7) bacaklarına ayrı ayrı bağlanmıştır. Mikro kontrolörün 36 numaralı bacağı LCD’ nin 6 numaralı E(enable signal) bacağına, mikro kontrolörün 35 numaralı bacağı ise LCD nin 4 numaralı RS bacağına bağlanmıştır. Yukarıda bahsettiğimiz 37-38-39-40 bacakları haberleşmeyi sağlamak için kullanılırken 35 ve 36 numaralı bacaklar kontrol amaçlı olarak bağlanmıştır ve LCD nin çalışmasını sağlamaktadırlar. 5 ve 3 numaralı bacaklar kullanılmadığı için topraklanmıştır.
• Tüm bunlara ek olarak;
Potansiyometre ile Lcd’nin parlaklığını değiştirmek mümkündür.
Mikro kontrolör 20 MHz rezonatör ile çalıştırılmıştır.
Ledlerin önüne aşırı akımları önlemek için akım sınırlayıcı 210 ohm’luk dirençler seri olarak bağlanmıştır.
Sistemimizin çalışması için gereken 5 V luk gerilim Adaptörle sağlanmıştır.
İnsan vücudu için uygun sıcaklık aralığı olan 36,5 ile 37 derece arasında vücudun sağlıklı bir sıcaklıkta olduğunu belirtmek için ayrıca yeşil bir led yanmaktadır.
Sonuç : Bu çalışma sayesinde hem vücut sıcaklığını sürekli olarak ölçüp sıcaklığın insan hayatı için tehlike arz eden sınırların altında veya üstünde olması durumunda uyarı veren bir dijital termometre tasarlanırken hem de PIC 16F877 mikro denetleyicisi, LM016L lcd entegresi, DS18B20 sıcaklık algılama sensörü gibi elemanlar ile kullanılan diğer elektronik elemanların yapıları, görevleri, çalışma prensipleri niçin ve nedenleri ile sorgulanmış ve öğrenilmiştir.
Ufak bir deney düzeniği ile elde ettiğimiz projemiz başarı ile çalışmaktadır ve %0.5 gibi ihmal edilebilecek bir hata payına sahiptir. Proje bu aşamada deney amaçlıdır; günlük hayatta daha kullanışlı olabilecek şekilde, aynı program ve yazılımlar kullanılarak daha farklı bir şekilde tasarlanılabilir. Projenin Proteus simülasyonu da yapılmıştır. Yazılan programın kaynak kodu ile proteus dosyası ve bu raporun elektronik ortamdaki versiyonu, faydalanılan malzeme datasheetleri raporla birlikte verilen cd içerisindedir.
Termo metre devre şeması
C yazılımı
// Set TEMP_RESOLUTION to the corresponding resolution of your DS18x20 sensor: // 18S20: 9 // 18B20: 12 (default setting; can be 9,10,11,or 12) const unsigned short TEMP_RESOLUTION = 12; const int RES_FACTOR_1[4] = {5000, 2500, 1250, 625}; const unsigned int RES_FACTOR_2[4] = {0x0001, 0x0003, 0x0007, 0x000F}; const unsigned int RES_FACTOR_3[4] = {0x8000, 0xC000, 0xE000, 0xF000}; float alarma; unsigned temp,temp2,new_temp; unsigned short j, RES_SHIFT,j2; void Display_Temperature(unsigned int temp) { const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8; unsigned int temp_whole, temp_fraction; unsigned short i; char text[8]; // Isolate the fraction and make it a 4-digit decimal integer (for display) temp_fraction = temp & RES_FACTOR_2[RES_SHIFT - 1]; temp_fraction = temp_fraction * RES_FACTOR_1[RES_SHIFT - 1]; //portc = temp_fraction; // Handle the whole part of temperature value temp_whole = temp; // Is temperature negative? if ((temp_whole & 0x8000) != 0u) i = 1; // Yes, i = 1 else i = 0; // No, i = 0 // PORTC = i; // Remove the fractional part temp_whole >>= RES_SHIFT; // Correct the sign if necessary if (i) temp_whole |= RES_FACTOR_3[RES_SHIFT - 1]; //portd = temp_whole; IntToStr(temp_whole, text); // Convert whole part to string Lcd_Out(2, 6, text); // Print whole part on LCD Lcd_Chr_Cp('.'); // Print dot to separate fractional part IntToStr(temp_fraction, text); // Convert fractional part to string // Add leading zeroes (we display 4 digits fractional part) if (temp_fraction < 1000u) Lcd_Chr_Cp('0'); if (temp_fraction < 100u) Lcd_Chr_Cp('0'); if (temp_fraction < 10u) Lcd_Chr_Cp('0'); Lcd_Out_Cp(text); // Print fractional part on LCD Lcd_Chr_Cp(223); // Print degree character Lcd_Chr_Cp('C'); // Print 'C' for Centigrades }//~ void main() { ADCON1 = 0xFF; // Configure RA5 pin as digital I/O PORTE = 0xFF; TRISE = 0x0F; // PORTE is input PORTB = 0; TRISB = 0; // PORTB is output TRISD=0; PORTD=0; TRISC=0; PORTC=0; // Initialize LCD on PORTB and prepare for output Lcd_Init(&PORTB); Lcd_Cmd(Lcd_CURSOR_OFF); Lcd_Out(1, 1, "Sicaklik: "); do { // main loop Ow_Reset(&PORTE,2); // Onewire reset signal Ow_Write(&PORTE,2,0xCC); // Issue command SKIP_ROM Ow_Write(&PORTE,2,0x44); // Issue command CONVERT_T Delay_us(120); Ow_Reset(&PORTE,2); Ow_Write(&PORTE,2,0xCC); // Issue command SKIP_ROM Ow_Write(&PORTE,2,0xBE); // Issue command READ_SCRATCHPAD Delay_ms(400); j = Ow_Read(&PORTE,2); // Get temperature LSB j2=j; temp = Ow_Read(&PORTE,2); // Get temperature MSB temp2=temp; temp <<= 8; temp += j; // Form the result temp2<<=5; j2>>=3; new_temp=temp2^j2; portd=new_temp; // alarma=39; alarma=((new_temp*127.5)/255); if(((alarma>=36.5)&&(alarma<=38))) { //YESİL LED AKTIF PORTC.F0=1; } else { portc.f0=0;} Display_Temperature(temp); // Format and display result on LCD Delay_ms(500); } while (1); }//~!
Şifre-Pass: 320volt.com
Yayım tarihi: 2009/05/12 Etiketler: ds18b20 sıcaklık metre, microchip pic projeleri, mikroc, pic16f877 dijital termometre, termometre devresi
merhabalar bişy sorcaktım bnm projem var bu termometre devresinde 16F84 ü kullanabilirmiyiz.. yardımcı olursanız sevinirim… zamanım azaldı:( 🙁
olmayabilir sanırım anolog dönüştürücüleri yok :s
DS18B20 ısı değerini hex olara vermektedir. herhangi bir adc ye ihtiyaç duymamaktadır…
ben devreyi kurdum fakat lcd nin ilk satırı yanıyor fakat 2. satırın ışıkları yanmıyor neden acaba birde bu programda 37.5 değilde 25 yapmam gerekior yaptım fakat hata veriyor derlerken neden acaba öğrenebilirmiyim
Merabalar
Tezim için 16f877 ile tek kanaldan rf haberleşme sağlamam lazım. Alıcı ve verici olarak udeanın ATX-34S NRX-34U kullanmayı düşünüyorum. Fakat pic te yeni olduğum ve daha önce rf haberleşmeyle uğraşmadığım için nerden nasıl başlayacağıma bir türlü karar veremedim. microc’un helpinde Manchester Code Library’de verilen kod RF haberleşme kısmında işimi görür mü acaba?
Bir ikinci sorum ise isiste smilasyonuyla ilgili,microcun library’sindeki devre yeterli olurmu,rf haberleşme için? Cevapları sabırsızlıkla bekliyorum..Teşekkürler
İyi günler. Ben devreyi kurdum ancak sıcaklık sadece -1.39 derece gösteriyor. 3 farklı sensörü taktığımda dahi aynı görüntüyü alıyorum. Acaba sorun nereden kaynaklanıyor olabilir? Şimdiden yardımınız için teşekkür ederim.
hi,, nice work, buddy!!
i just wanna know if u have the source code in assembly,,
ps: sorry i don’t understand turkish
thanks!
Lcd_Init(&PORTB); satırında Too many actual parameters. hatası veriyor .hex dosyasını oluşturamıyorum.MikroC Pro for PIC 2009 1.65 te denedim. yardımlarınızı bekliyoum.
sanırım yazıda verilen kodu direkt kopylayıp kullandınız dosya içindeki kaynak C kodunu kullanın
dosya içindeki C kaynak kodunu kullandım.Ama olmuyor.
baskı devresi olan koyabilirmi?
ayrıca bu graundları ve fazları birbirne bağlamayacakmıyız piller nasıl bağlanıcak yazarmısınız ????
code de porte sur l’isis et le pic_c 16F877
avec clavier
arkadaşlar bende bu devreyi kurdum ama derece -1.93 gösteriyor yaptığım yaanlışlık ve düzeltmem gereken nedir??
yardımcı olabilir misiniz acil lutfen
arkadaşlar yaklaşık 1 metre toprak altındaki sıcaklık ölçmem gerekiyor bunun için bu devreyi kullanabilirmiyim?
arkadaslar benim proteus programımda 16f877nin 31 12 11 32 inci uçları yok yani çizimde bu uçları hem topraklayamıyorum hemde gerilim veremiyorum fikri olan var mı?
microC de deniyorum ama şu hatayı veriyor (68 324 Undeclared identifier ‘Lcd_CURSOR_OFF’ in expression) sebebi nedir acaba yardım edebilir misiniz?
aynı hata bende de oldu arkadaşım, çözüm buldun mu
_LCD_CURSOR_OFF olarak yazmalısın
-(eksi) sonuç çıkaranlar için yazıyorum. MicroC programında pic özelliklerinden Oscillator Selection özelliği “XT” kristal seçilmeli. Kod hatalı yanlış sonuç veriyor. bundan dolayı aşağıdaki kodu kullanabilirsiniz. Küsüratla uğraşamadım sabit değer vermekte. Aşağıdaki kodları uygun yerlerde kullanmanız gerekmekte. Not!! Sanırım 18. satır ile “void main()” fonksiyonu arasındaki kodlardır
const unsigned short TEMP_RESOLUTION = 12;
const int RES_FACTOR_1[4] = {5000, 2500, 1250, 625};
const unsigned int RES_FACTOR_2[4] = {0x0001, 0x0003, 0x0007, 0x000F};
const unsigned int RES_FACTOR_3[4] = {0x8000, 0xC000, 0xE000, 0xF000};
float alarma;
unsigned temp,temp2,new_temp;
unsigned short j, RES_SHIFT,j2;
char *text = “00”;
void Display_Temperature(unsigned int temp2write) {
const unsigned short RES_SHIFT = TEMP_RESOLUTION – 8;
char temp_whole;
unsigned int temp_fraction;
temp_whole = temp / 2 ;
text[0] = (temp_whole/10)%10 + 48;
text[1] = temp_whole%10 + 48;
Lcd_Out(2, 6, text);
}
merhaba, benim micro c programıyla lcd ekranda saatli termometre yapmam gerek. Ayrı ayrı saat ve termometre devreleri yaptım ama ikisi beraber yapamıyorum yardımcı olabilir misiniz. Yukarıda verilen c koduyla olduğu için kullanamıyorum veya hep basic koduyla yazılmış projeler çıkıyor karşıma. Yardımcı olursanız sevinirim.
devreyi kurdum kristal i 4mhz kullandım LCD de yazıyı goremedım kare kare simgeler cıktı acaba krıstalı 20mhz kullansam sorun hallolur mu ?
merhaba . Bu projede ortam sıcaklığını ölçmek istersem hangi sensörü kullanmam daha iyi olur.
benım bı sorum olcak bu devrenın çıkışına 1 tane dc motor baglasam motor ısınınca benım ayarladıgım degerde dursa bunu programını yazıl yazabilirim yardımcı olurmusunuz lutfenn
*** Error 128 “termo2.c” Line 7(2,7): A #DEVICE required before this line
1 Errors, 0 Warnings.
Build Failed.
bu hatayı veriyor nasıl düzelte bilirim yardımcı olurmusunuz
Amacınız termometre yapmaksa bundan çok daha basit bi devre var.kendım bizzat test ettim..3310 ekranla termometre yapımı diye arattırın Google’da.
pic16f877yi arduino ile programlamak istiyorum c kodunu o kütüphaneye nasıl uyarlarım
İYİ GÜNLER TEMAZSIZ ATEŞ ÖLÇER , BLOUTOOT HABERLEŞMELİ YAPMAM LAZIM BİTİRME ÖDEVİ İÇİN PROTEUS DEVRE ŞEMASI NASIL ÇİZEBİLİRİM