6 Nisan 2023 Perşembe

DS18B20 sıcaklık sensörü php serial port bağlantı ccs c compiler

DS18B20 sıcaklık sensörü php serial port bağlantı kurma ve mysql database verileri kaydetme. Pic 12f683 ile des18b20 serial port bağlantı kurma.


DS18B20 sensörü -55 ile +125 derece arasında, 9-12 bit çözünürlükte ölçüm yapan dijtial sıcaklık sensörüdür. Üzerinde dahili alarm sistemi bulunmaktadır. 12 bit sıcaklık ölçümünü en fazla 750ms’de tamamlamaktadır. Herhangi bir ayar yapılmazsa sensör varsayılan olarak 12 bit çözünürlükte çalışmaktadır.

  • Mikrodenetleyici ile tek pin üzerinden haberleşebilir.
  • Tek hat üzerinden birden fazla cihazla haberleşebilir.
  • Harici hiçbir bileşene ihtiyaç duymaz.
  • Veri hattından güç alabilir.
  • 3V-5V besleme aralığına sahiptir.
  • -55C ile +125C arasındaki sıcaklıkları ölçebilir.
  • -10C ile +85C arasında ±0.5C hassasiyette ölçüm yapabilir.
  • 9-bit ile 12-bit arası programlanabilir çözünürlüğe sahiptir.
  • 12-bit dönüşümde 750ms dönüştürme süresine sahiptir.
  • Kullanıcı tarafından ayarlanabilen sıcaklık alarmları vardır.

ccs c compiler kodları 12f683 ile ds18b20 bağlantı kurma ve veri gönderme.

-----------------------

#include<12f683.h>

#fuses INTRC_IO,NOWDT,nomclr

#use delay(clock=4m)

#use rs232(baud=9600,parity=N,xmit=PIN_A0,bits=8,stop=1)

#include "DS18b20.c"

float sicaklik;

void main()

{

while(true)

{

sicaklik = ds1820_read();

printf("Sicaklik : %.1f \r\n",sicaklik);

}

}




DS18b20.c dosya kodları.

---------------------

#define ONE_WIRE_PIN PIN_a5

void onewire_reset() 

{

output_low(ONE_WIRE_PIN);

delay_us( 500 ); //1-wire resetleme için sıfıra çekilir

output_float(ONE_WIRE_PIN); //1-wire bir yapılır

delay_us( 500 ); // sensörün hazırlanması için beklenir.

output_float(ONE_WIRE_PIN);


void onewire_write(int data)

{

int count;

for (count=0; count<8; ++count)

{

output_low(ONE_WIRE_PIN);

delay_us( 2 ); // Sensöre yazma işlemine başlamak için  1-wire sıfıra çekilir.

output_bit(ONE_WIRE_PIN, shift_right(&data,1,0)); // yazılacak bilgi 1-wire'da

delay_us( 60 ); // Yazma işlemi zamanı doldurulur.

output_float(ONE_WIRE_PIN); // 1-wire bir yapılır,

delay_us( 2 ); // 1us'den fazla beklenir.

}


int onewire_read()

{

int count, data;

for (count=0; count<8; ++count)

{

output_low(ONE_WIRE_PIN);

delay_us( 2 ); //Sensördem okuma işlemi içinl 1-wire sıfıra çekilir.

output_float(ONE_WIRE_PIN); //1-wire bir yapılır,

delay_us( 8 ); // Sensörün kendine gelmesi beklenir,

shift_right(&data,1,input(ONE_WIRE_PIN)); // sonuc bilgisi alınır.

delay_us( 120 ); //Okuma işlemi zamanı doldurulur.

}

return( data );


float ds1820_read()

{

int8 busy=0, temp1, temp2;

signed int16 temp3;

float result;

onewire_reset();

onewire_write(0xCC);

onewire_write(0x44);

while (busy == 0)

busy = onewire_read();

onewire_reset();

onewire_write(0xCC);

onewire_write(0xBE);

temp1 = onewire_read();

temp2 = onewire_read();

temp3 = make16(temp2, temp1);

result = (float) temp3 / 16.0;//18b20 icin

//result = (float) temp3 / 2.0;//18s20 icin

delay_ms(200);

return(result);

}



PHP dosyası kodları

-----------

<?php 


//Database bağlantı


try{

$pdo = new PDO("mysql:host=localhost; dbname=serial","root","");

$pdo->query("SET CHARSET UTF8");

}


catch(PDOException $e){

die("Bağlantı kurulamadı : ". $e->getMessage());

}



//php ile serial bağlantı kodları


function rs232init($com,$bautrate)

 {

 `mode $com: BAUD=$bautrate PARITY=N data=8 stop=1 xon=off`;

 }

 

function send($comport,$char)

 {

$fp = fopen ("com7", "w+");

 if (!$fp)

 {

 echo "not open for read";

 }

 else {

 fputs ($fp, $char);

 fclose ($fp);

 }

 }

function read($comport2,$sek)

 {

$buffer = "";

$fp2 = fopen ("com7", "r+");

 if (!$fp2)

 {

 echo "port is open for read";

 }

 else

 {

 sleep($sek);

 $buffer .= fgets($fp2, 4096);

 }

 return $buffer;

 fclose ($fp2);

}

rs232init("com7","9600"); // Port Adını ("com3")

//ve BaudRate("9600")'yi giriyoruz.


send("com7","7");


$a = read("com7","7"); //Serial portumuza ("com3") bağlı

//cihazımızdan gelen verileri okuyoruz.


//echo $a; // Ekrana Yazdırıyoruz

echo '<center><p><font face="tahoma" size="7" color="maroon">

<b>'.$a.'</b></font></p></center>'; // Ekrana Yazdırıyoruz


// Database ekleme kodları

$tarih=date("Y-m-d h:i:s");


$kayit = $pdo->query("insert into veri SET data= '$a' , tarih= '$tarih'");

if($kayit)

{

echo "Kayıt başarılı";

}

else

{

echo "Başarısızdır";

}

?>







Hiç yorum yok:

Yorum Gönder

Her yorum bilgidir. Araştırmaya devam...