FAQ |
Calendar |
![]() |
|
Programming Share, tanya jawab, saling bantu antar programmer dengan berbagai macam bahasa pemrograman. |
![]() |
|
Thread Tools |
#1
|
||||
|
||||
![]()
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 For I = 1 To 8 Print Hex(id2(i)); (Menampilkan kode ID sensor2) Next 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 Terkait:
|
![]() |
|
|