ARM – Not4: STM32F4DISCOVERY Dahili Sıcaklık Sensörü.

Yayınlandı: 11 Ocak 2014 / ARM STM32F4DISCOVERY Programlama...
Etiketler:, , , , , ,

AdsızStm32f407 mikrodenetleyicisi içerisinde dahili sıcaklık sensörü bulunmaktadır. Bu sensör işlemcinin analog-dijital çevirici biriminin 16. kanalına bağlı bulunmaktadır. Aynı kanal istenilirse işlemcinin Vbat ucuna da yazılımsal olarak bağlanıp, tasarladığımız sistem batarya ile çalıştırılıyorsa, batarya gerilimini ölçmek için de kullanılabilir.  Sıcaklık sensörünün analpg dijital çeviricinin 1. kanalına bağlanabilmesi için ADC_CCR kaydedicisinin TSVREFE isimli bitinin set edilmesi gereklidir.  Bu uygulamada sensörden okunan değer USB Hid kütüphanesi kullanılarak PC’ye gönderilecek ve derleyicinin tools sekmesi altında bulunan hid terminalden gözlemlenebilecektir.

STM32f407 mikrodenetleyicisinin referans manueli incelenirse, sıcaklık sensöründen okunan değerin hesaplanabilmesi için bir formül verildiği görülür. Bu formülde katsayı değerleri yerine konulduğunda aşağıdaki hali alır;

Voltage = (VolADC * 3300) / 4095;
temp = ((Voltage - 760) / 2.5) + 25;

Yukarıdaki bilgiler ışığında kodlarımızı yazalım.

int okunan,Voltage,temp,ort;
long toplam;
char cnt;

char readbuff[64];
char writebuff[64];
char binler,yuzler,onlar,birler ;

void main() {
HID_Enable(&readbuff,&writebuff);
ADC1_Init();
ADC_CCR.TSVREFE=1;
while(1)
 {
 for(cnt=0;cnt<100;cnt++)
 {
 okunan=ADC1_Read(16);
 toplam+=okunan;
 delay_ms(5);
 }
 ort=toplam/100;
 toplam=0;
 Voltage = ((long)ort * 3300) / 4095;
 temp = ((Voltage - 760) / 2.5) + 25;

onlar=((temp/10)%10)+48;
 birler=(temp%10)+48;

 writebuff[0]=onlar;
 writebuff[1]=birler;
 writebuff[2]='°';
 writebuff[3]='C';
 writebuff[4]='\r';
 writebuff[5]='\n';
 HID_Write(&writebuff,64);
 }

}
void kesme() iv IVT_INT_OTG_FS ics ICS_AUTO {
USB_Interrupt_Proc();
}

Sıcaklık, celcius cinsinden tamsayı şeklinde gösterilmiştir.
Aşağıda hid terminal aracının ekran görüntüsü görülebilir.

Adsız

Projeyle ilgili dosyalara buradan ulaşabilirsiniz..

Devam edecek…

yorum
  1. Kerem dedi ki:

    HID Terminalde dahili sıcaklık sensörü diye bir device görünmüyor. Doğrudan proje dosyalarınızı indirip değişiklik yapmadan yazdırdım.

  2. burak dedi ki:

    bu kodları yazıp derledikten sonra demo limit hatası veriyor bu sorunu nasıl aşabilirim

  3. ugur dedi ki:

    4625 393 ‘malloc’ Identifier redefined __Lib_dlmalloc.c
    4656 324 Undeclared identifier ‘bytes’ in expression __Lib_dlmalloc.c ve benzeri hatalar alıyorum. Ne yapmam gerekiyor ? ve USB Hid kütüphanesini ayrıca kurmam gerekiyor mu ?

Yorum bırakın