Thread pertama ane...hahaha
Gan, bagi yang mau mengetahui suhu dengan menggunakan mikrokontroler AVR via bascom dapat menggunakan sensor ds1820.
1-Wire adalah merek dagang terdaftar dari Dallas Semiconductor Corp (sekarang maxim) untuk perangkat bus sistem komunikasi yang dirancang oleh Dallas Semiconductor yang menyediakan kecepatan data rendah, signaling dan kuasa (power) atas satu sinyal, walaupun menggunakan dua kawat, satu untuk tanah, satu untuk daya dan data. 1-Wire mirip dalam konsep ke I � C, tetapi dengan data harga lebih rendah lagi dan jangkauan. Hal ini biasanya digunakan untuk berkomunikasi dengan murah perangkat kecil seperti digital termometer cuaca dan instrument. Sebuah jaringan dari 1-Wire perangkat master yang terkait dengan perangkat yang disebut �MicroLan�, istilah yang menjadi merek dagang oleh Dallas. (diambil dari wikipedia trus ditranslate pake google translate, tp gw edit dikit

)
Dengan teknologi one-wire ini, kita bisa menghubungkan banyak sensor ke suatu mikrokontroller, karena
port yang dibutuhkan hanya sedikit, sebuah sensor suhu hanya membutuhkan 1 port.
DS18S20 memiliki spesifikasi sebagai berikut:
- Catu daya: 3,0 ~ 5,5 V.
- Antarmuka: 1-Wire�.
- Range pengukuran: �55�C sampai +125�C.
- Waktu konversi: maks. 750 ms.
- Akurasi: �0,5�C pada suhu �10�C sampai +85�C.
$regfile = �8535def.dat�
$crystal = 8000000
$baud = 19200
Config 1wire = Portb.1
Dim Rom(8) As Byte
Dim Temp As Single
Dim Tempdif As Single
Dim Id1(8) As Byte (Buat ID sensor 1, tiap sensor punya ID sendiri jadi kasih variabel buat nyimpen)
Dim Id2(8) As Byte (Buat ID sensor 2)
Dim I As Integer
Id1(1) = 1wsearchfirst() (Mencari sensor pertama)
Id2(1) = 1wsearchnext() (Cari sensor selanjutnya)
I = 1wirecount() (Hitung ada berapa sensor terhubung?!)
Print I
For I = 1 To 8
Print Hex(id1(i)); (Menampilkan kode ID sensor1)
Next
Print
For I = 1 To 8
Print Hex(id2(i)); (Menampilkan kode ID sensor2)
Next
Print
wait 1
Do
1wreset
1wwrite &HCC
1wwrite &H44
Ddrb.1 = 1
Waitms 800
Ddrb.1 = 0
1wreset
1wwrite &H55
For I = 1 To 8
1wwrite Id1(i)
Next I
1wwrite &HBE
Rom(1) = 1wread(1)
Temp = Rom(1) / 2
Print Temp;
Print ;
1wreset
1wwrite &H55
For I = 1 To 8
1wwrite Id2(i)
Next I
1wwrite &HBE (Baca data dari scratchpad)
Rom(1) = 1wread(8)
Temp = Rom(1) / 2
Tempdif = 16 � Rom(7)
Tempdif = Tempdif / 16
Tempdif = 0.25 * Tempdif
Temp = Temp + Tempdif
Print Fusing(temp , �#.##�)
Waitms 100
Loop
Tiap kita ingin melakukan sesuatu (membaca temperatur/ mengetahui kode ID) diawali dengan me-reset bus yaitu dengan perintah 1wreset setelah itu kita dapat melakukan membaca atau menulis data. Karena kita berkomunikasi dengan sebuah single IC saja, maka kita gunakan perintah SKIP ROM (CCh / &HCC).
Hal ini menyebabkan IC menganggap dirinya sebagai alamat, bisa dibilang suatu tempat cuma ditempati oleh 1 orang, jadi cuma dia doang yang ditempat itu.
Selanjutnya kita akan mengukur temperatur, dengan memberikan perintah CONVERT T (44h / &h44). Untuk itu portb.1=1 di set sebagai ouput dahulu agar DS1820 dapat mengkonversi, kemudian kita harus menunggu 750ms, untuk lebih aman disini digunakan 800ms.
Alasannya, karena 750ms hanya waktu untuk mengkonversi temperatur, untuk menulis pada EEPROM internalnya dibutuhkan waktu lagi! Klo mau aman kasih aja delay 1s.
Untuk lebih jelasnya mungkin dapat dilihat dari datasheet DS1820
disini
Spoiler for
wiring ds1820:
thread ini bersumber dari
http://ak67.wordpress.com/2009/07/15/one-wire/





bagi yang suka kirim bintang yeh agan-agan sekalian melon juga diterima, maklum ane nge-thread ginian karena emang dari jurusan instrument..hiihi
mimin momon, sori nih kalo ane salah kamar, maklum masih newbie...n_n