- Beranda
- Hobby & Community
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
...
TS
ahocool
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
DIGITAL ELECTRONICS HOBBY FORUM
UPDATE 8/JUNI/2014
DUKUN FUSEBIT AKAN MENGHIDUPKAN IC MU YANG MATI !
Selengkapnya dibahas di sini gan !!
CLINOMETER SEDERHANA MEMANFAATKAN ADC
Selengkapnya dibahas di post berikut
Proyek2 micro yg sudah jadi
I.N.D.E.X F.O.R.U.M
Biar ngiler, ane kasih contoh hasil karya TS...
.
Spoiler for apa aja sih yang dibahas?:
Spoiler for "Hobby Microcontroller Itu Mahal ? Kreativitasmu Itu yg Mahal Gan !":
UPDATE 8/JUNI/2014
DUKUN FUSEBIT AKAN MENGHIDUPKAN IC MU YANG MATI !
Selengkapnya dibahas di sini gan !!
CLINOMETER SEDERHANA MEMANFAATKAN ADC
Selengkapnya dibahas di post berikut
Spoiler for Buka Jika Mau Paket Belajar:
Proyek2 micro yg sudah jadi
Quote:
I.N.D.E.X F.O.R.U.M
Quote:
Biar ngiler, ane kasih contoh hasil karya TS...
Spoiler for Contact TS lewat dimari yahh:
.
Diubah oleh ahocool 08-06-2014 04:14
0
1M
8.6K
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Mari bergabung, dapatkan informasi dan teman baru!
Hobby & Community
10.4KThread•6.1KAnggota
Tampilkan semua post
TS
ahocool
#3522
MEMBACA SUHU & KELEMBABAN SENSOR DHT11
courtesy of : http://www.candrian.gr/index.php/dht...-one-wire-bus/
akhirnya kesampaian juga membahas pembacaan sensor DHT11
sensor DHT 11 merupakan sensor suhu & kelembaban versi LOW COST dengan hasil yang "cukup".
Specification
Supply Voltage: +5 V
Temperature range :0-50 °C error of ± 2 °C
Humidity :20-90% RH ± 5% RH error
Interface: Digital
Data bus sensor ini bukan TWI / I2C melainkan bus tersendiri dimana nilai 1 & 0 dibedakan melalui LEBAR PULSA HIGH
sebelum lanjut lebih mendalam, sebaiknya agan yang belum menguasai penulisan ke LCD agar menuju ke sana ( lihat index di page1)
skematik yang kita gunakan adalah sebagai berikut:
dan kita akanbahas scriptnya, tapi hanya dibagian DHT11 nya, untuk detail LCD harap membaca posting sebelumnya (LCD & ADC/termometer LM35 terutama dibagian ITOA)
seperti sumber link diatas , 1 PIN I/O akan berfungsi sebagai Output dan Input bergantian, untuk langkah pertama akan dikirimkan perintah START oleh micro ke DHT 11
jadi kita kirim pulsa Low 18ms dan High 40us, lalu kita tunggu sebentar sampai ada response/jawaban dari DHT 11 berupa pulsa low - high selebar 54us & 80us
setelah itu hasil pengukuran akan dikirimkan sensor menggunakan format 8bit sebanyak 5 kali
pada script diatas ada trick menggunakan variabel counter dan delay 1us, ini cara yg paling gampang dan menyederhanakan proses counter terhadap lebar pulsa
untuk membedakan nilai 1 & 0 kita perhatikan nilai lebar pulsa high nya , yaitu 0=24 us, 1=70us
jadi kita sederhanakan saja dengan trick counter dan delay, dimana jika counter melebihi 24 , maka kita anggap nilainya 1 dan sebaliknya
mudah bukan ? dan hasilnya lumayan mengecewakan jika dibanding dengan sensor yg paten sekelas SHT 11
SELAMAT MENCOBA
courtesy of : http://www.candrian.gr/index.php/dht...-one-wire-bus/
akhirnya kesampaian juga membahas pembacaan sensor DHT11
sensor DHT 11 merupakan sensor suhu & kelembaban versi LOW COST dengan hasil yang "cukup".
Specification
Supply Voltage: +5 V
Temperature range :0-50 °C error of ± 2 °C
Humidity :20-90% RH ± 5% RH error
Interface: Digital
Data bus sensor ini bukan TWI / I2C melainkan bus tersendiri dimana nilai 1 & 0 dibedakan melalui LEBAR PULSA HIGH
sebelum lanjut lebih mendalam, sebaiknya agan yang belum menguasai penulisan ke LCD agar menuju ke sana ( lihat index di page1)
skematik yang kita gunakan adalah sebagai berikut:
dan kita akanbahas scriptnya, tapi hanya dibagian DHT11 nya, untuk detail LCD harap membaca posting sebelumnya (LCD & ADC/termometer LM35 terutama dibagian ITOA)
seperti sumber link diatas , 1 PIN I/O akan berfungsi sebagai Output dan Input bergantian, untuk langkah pertama akan dikirimkan perintah START oleh micro ke DHT 11
jadi kita kirim pulsa Low 18ms dan High 40us, lalu kita tunggu sebentar sampai ada response/jawaban dari DHT 11 berupa pulsa low - high selebar 54us & 80us
setelah itu hasil pengukuran akan dikirimkan sensor menggunakan format 8bit sebanyak 5 kali
Code:
[FONT="Courier New"]void baca_sensor()
{
char dum; // variabel sementara
suhu=0;
humi=0;
counter=0;
DDRD|=(1<<PD3); //PD3 sebagai output
_delay_ms(250);
PORTD &=~(1<<PD3); // nolkan PD3
_delay_ms(18); //tunggu 18 ms
PORTD |=(1<<PD3); // naikkan PD3
_delay_us(40); //tunggu 40us
DDRD &=~(1<<PD3); //PD3 sebagai input
//tunggu response dari DHT11
while(counter <100)
{
_delay_us(1);
counter++;
if (bit_is_set(PIND, 3)) break;
}
counter=0;
while(counter <100)
{
_delay_us(1);
counter++;
if (bit_is_clear(PIND, 3)) break;
}
//baca data setelah response, lihat script di pembahasan selanjutnya untuk routine hitung()
//8 bit pertama ( puluhan kelembaban )
humi=hitung();
//8 bit kedua( satuan kelembaban ), tidak usah di baca karena nilai selalu 0 untuk DHT11
hitung();
//8 bit ketiga ( puluhan suhu )
suhu=hitung();
//8 bit keempat ( satuan suhu ), tidak usah di baca karena nilai selalu 0 untuk DHT11
hitung();
//8 bit ke 5 tidak perlu dihitung
//tulis lcd
lcd_gotoxy(9,0);
itoa(suhu,&dum/;)/;
lcd_puts(&dum/;)/;
lcd_gotoxy(9,1);
itoa(humi,&dum/;)/;
lcd_puts(&dum/;)/;
}
[/FONT]
pada script diatas ada trick menggunakan variabel counter dan delay 1us, ini cara yg paling gampang dan menyederhanakan proses counter terhadap lebar pulsa
untuk membedakan nilai 1 & 0 kita perhatikan nilai lebar pulsa high nya , yaitu 0=24 us, 1=70us
jadi kita sederhanakan saja dengan trick counter dan delay, dimana jika counter melebihi 24 , maka kita anggap nilainya 1 dan sebaliknya
Code:
[FONT="Courier New"]uint8_t hitung(void)
{
uint8_t a,counter,hasil;
counter=0;
hasil=0;
for (a=8;a>0;a--) // 8 kali tiap perhitungan
{
while(counter <100) // deteksi saat LOW ( tidak ada perhitungan)
{
_delay_us(1);
counter++;
if (bit_is_set(PIND, 3)) break; //tunggu sampai high dan keluar loop
}
counter=0;
while(counter <100)
{
_delay_us(1);
counter++; // counter mendeteksi lebar pulsa
if (bit_is_clear(PIND, 3)) break; //jika low maka keluar dari loop
}
// perhitungan 8 bit decimal dengan geser-geser bit
//jika lebih 25us =1 , kurang < 25 us = 0
[B]if(counter > 25) hasil += (1 << (a-1)) ;[/B]
counter=0;
}
return hasil;
}[/FONT]
mudah bukan ? dan hasilnya lumayan mengecewakan jika dibanding dengan sensor yg paten sekelas SHT 11
SELAMAT MENCOBA
0