Ads 468x60px

Pembacaan Suhu dan Kelembaban SHT11 pada LCD Karakter

Suhu dan Kelembaban Ruang dapat diukur dengan sensor SHT11. Sensor ini sudah dilengkapi modul dengan keluaran data digital. Komunikasinya adalah dengan TWI, SCK dan DATA. Sensor ini dihubungkan langsung dengan 2 pin mikrokontroler untuk pembangkit pulsa clock dan datanya. Ini gambar komunikasinya



Dan gambar di bawah ini adalah timing diagram komunikasinya untuk ambil data RH.



Kalo pengen ambil data suhu tinggal ganti command seperti di datasheet. Nah ini dia program mikronya. Saya pake ATMEGA16.

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.3 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 3/24/2010
Author : dlogog
Company : ITS
Comments:


Chip type : ATmega16
Program type : Application
Clock frequency : 11.059200 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include
#include
#include

#define SDAout PORTB.0
#define SDAin PINB.0
#define SCLK PORTB.1

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include

// Declare your global variables here

unsigned char timeout,ackbit;
unsigned int dataread,suhuSHT,RHSHT;

void start (void)
{ DDRB=0x03;
SDAout=1;
SCLK=0;
SCLK=1;
SDAout=0;
SCLK=0;
SCLK=1;
SDAout=1;
SCLK=0;
DDRB=0x03;
}
void reset (void)
{ unsigned char i;

DDRB=0x03;
SDAout=1;
SCLK=0;

for (i=0;i<=8;i++) { SCLK=1; SCLK=0; } start(); DDRB=0x03; } void tunggu (void) { unsigned char i; DDRB=0x02; SDAout=1; for (i=0;i<255;i++) { timeout=SDAin; if (timeout==0) break; delay_ms(1); } DDRB=0x02; } void perintah (unsigned char data) { unsigned char i; DDRB=0x03; for (i=0;i<8;i++) { if ((data>>7)==1) SDAout=1;
else SDAout=0;
SCLK=1;
SCLK=0;
data<<=1;
}

SDAout=1;
SCLK=1;
DDRB=0x02;
ackbit=SDAin;
SCLK=0;
DDRB=0x03;
}
void baca (void)
{ unsigned char i;

dataread=0x00;
DDRB=0x02;

for (i=0;i<8;i++)
{ dataread<<=1;
SCLK=1;
dataread|=SDAin;
SCLK=0;
}

DDRB=0x03;
if (ackbit==1) SDAout=1;
else SDAout=0;
SCLK=1;
SCLK=0;
SDAout=1;
DDRB=0x03;
}
void bacasuhu (void)
{
start();
perintah(0x03);
if (ackbit==0)
{
tunggu();
if (timeout==0)
{ ackbit=0;
baca();
suhuSHT=dataread;
suhuSHT<<=8;
ackbit=1;

baca();
suhuSHT|=dataread;
}
}
}
void bacaRH (void)
{
start();
perintah(0x05);
if (ackbit==0)
{
tunggu();
if (timeout==0)
{ ackbit=0;
baca();
RHSHT=dataread;
RHSHT<<=8;
ackbit=1;

baca();
RHSHT|=dataread;
}
}
}
void main(void)
{
unsigned char suhu[16];
unsigned char lembab[16];
float RHlin,RHtrue,temp;

// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// LCD module initialization
lcd_init(16);

lcd_gotoxy(0,0);
lcd_putsf("coba");
delay_ms(300);

while (1)
{
reset();
bacasuhu();
temp=(-40)+(0.01*(float)suhuSHT);

sprintf(suhu,"suhu = %0.02f",temp);
lcd_gotoxy(0,0);
lcd_puts(suhu);
delay_ms(100);
reset();

bacaRH();
RHlin=((float)RHSHT*(float)RHSHT*(-0.0000028))+(0.0405*(float)RHSHT)-4;
RHtrue=(temp-25)*(0.01+(0.00008*(float)RHSHT))+RHlin;

sprintf(lembab,"RH = %0.02f",RHtrue);
lcd_gotoxy(0,1);
lcd_puts(lembab);
delay_ms(100);
reset();
// Place your code here

};
}

Yaa..ini cuma secarik cerita yang pernah tak jalani..smoga bermanfaat..

Pengukur Jarak dengan Ultrasonik Parallax PING

Weee e e e..halo dulur kabeh..
Artikel kali ni saya coba sharingkan pengalaman saya menggunakan sensor ultrasonic sebagai pengukur jarak. Nah sebelumnya seperti biasa sruput kopinya dulu..
Sensor yang digunakan adalah modul Parallax PING yang ssudah jadi dan tinggal pakai. Maksude g perlu da rangkaian elka lain, Cuma minsys mikrokontroler untuk kontrolnya. Nah ini dia barangnya .



Sensor PING ini memiliki 3 kaki yaitu sebagai supply +5 volt (+5), ground (GND), dan signal (SIG). Frekuensi gelombang yang dipancarkan adalah 40kHz. Teori operasinya berdasarkan time diagram berikut.



Sensor ini bekerja bila pada pin SIG diberikan trigger pulsa TTL positif selama 5 us. Setelah mendapat trigger baru memancarkan gelombangnya. Setelah dipacarkan oleh, penerima bertugas menangkap echo/pantulan. Nah prinsipnya sederhana saja kan..Hoahhhh ngantuk e, nyruput kopi dulu ah…
Berdasarkan prinsip kerja dan time diagram di atas, ntuk interface ke ultrasonik, terdapat aturan yang cukup mudah, yaitu:
1. Pada SIG diberi sebuah pulsa (tcut)sebesar 5 mikro detik. ini berati dengan mengeset mikrokontroler sebagai output dan memberikan data ke ultrasonik.
2. Mikrokontroller menunggu sampai pin SIG dari ultrasonik mengeluarkan sinyal kondisi "high" dengan mengeset mikro sebagai input.
3. Selama kondisi input mikro “high” maka dilakukan perhitungan lamanya sampai input “low”.
4. Data hasil perhitungannya kita tampilkan di LCD ya..
Kalau pengen tau datasheetnya download disini.. Di bawah ini adalah soucecode pengukur jarak yang saya buat dengan codevision avr..monggo dibaca..
#include
#include
#include

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include

// Declare your global variables here

unsigned int i;
unsigned char buf[16];
float jarak;

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// LCD module initialization
lcd_init(16);

lcd_gotoxy(0,0);
lcd_putsf("jajal");
delay_ms(1000);

while (1)
{
// Place your code here
i=0;

DDRD.1=1;
PORTD.1=1;
delay_us(5);
PORTD.1=0;
DDRD.1=0;
PORTD.1=1;

while (PIND.1==0)
{};
while (PIND.1==1)
{ i++;
}

jarak=i*0.01572;
sprintf(buf,"jarak = %0.02f",jarak);
lcd_gotoxy(0,0);
lcd_clear();
lcd_puts(buf);
delay_ms(100);

};
}

Sensor ini banyak diaplikasikan dalam pembuatan robot cerdas yang sering dilombakan dalam KRCI..Sekian ya, semoga bermanfaat, silahkan kasih feedback ya. Salam pagi yang indah

Alat Ukur Tingkat Kejernihan Air

Halo sodara semua sebangsa tanah dan sebangsa air (waduh kliru, sebangsa dan setanah air) hehe. Dini hari ini saya lagi pengen sharingkan alat yang dulu pernah saya buat ketika dapat tugas kuliah instrumentasi. Wah sayangnya alat ini sederhana banget, maklumlah ilmu pas-pasan. Alat ini adalah penentu tingkat kejernihan air. Ini cerita seriusnya..(eitss, nyruput kopi dulu donk…)
Air merupakan suatu kebutuhan yang sangat penting dalam kehidupan manusia. Karena itu, kualitas air yang bisa dikonsumsi manusia harus diperhatikan. Parameter-parameter yang bisa digunakan untuk menentukan kualitas air antara lain kejernihan, kondutifitas listrik, rasa, bau. Parameter itu menentukan kemurnian dari air itu dan sehat atau tidaknya untuk dikonsumsi manusia.
Salah satu parameter kualitas air yaitu kejernihan, dapat dinyatakan dengan kemampuannya untuk meneruskan cahaya yang mengenainya. Dengan kondisi itulah dibuat sebuah alat yang mampu mendeteksi transmisi cahaya dari air itu dengan sensor fotodioda. Dengan alat ini mampu ditentukan tingkat kejernihan air.
Peralatan yang digunakan dalam proses percobaan ini antara lain power supply DC +5, +12, dan -12, IC LM741, potensiometer 10k, resistor 1k, 400k, 330, IC ATMega 8535L, LED putih, LCD Character 16x2, gelas ukur 400 ml, tinta printer e-print hitam, dan air.

Ini dia skema rangkaiannya
a. Blok sensor dan sumber cahaya


b. Blok penguat


c. Blok display


d. Blok Mikrokontroler



Masing-masing blok rangkaian dihubungkan dengan power supply DC. Jarak fotodioda dan led diatur pada 22 cm. Gelas ukur diisi air dengan volume 400 ml, kemudian diletakkan tepat diatas fotodioda. Setelah itu, tegangan keluaran dari blok penguat dimasukkan ke input ADC mikrokontroler untuk diolah yang kemudian ditamoilkan ke LCD. Tampilan di LCD berupa tegangan keluaran penguat, intensitas cahaya, dan Tingkat kejernihan air. Kemudian setiap penambahan tinta, hasil pengolahan mikrokontroler ditampilkan ke LCD.
Yah…Cuma itulah alatnya, sangat sederhana saja. Pada dasarnya untuk mencoba mengaplikasikan sebuat sensor menjadi alat yang lebih berguna..hehe
OOO iyo ni foto alate..




Shaking Table

 Shaking Table???

Mungkin istilah ini menjadi pertanyaan yang gak perlu dijawab,,,(hehe, maksude bagi yang g pengen tau,,peace!!). Yo bagi yang mau tau,,,ada syaratnya. Buat dulu secangkir kopi (kalo bisa kopi ijo khas Tulungagung), haha. Jangan lupa rokoknya!!! (Buat yang gak ngrokok ya g usah, merokok itu menyebabkan paru2, tapi kalo gak ngrokok penyakitnya rupa2…hehe becanda boss). Oke, persiapan cukup. Bersedia, siap, mulai kita bicarakan Shaking Table.

Oh ya, sebelum saya sok tau, tolong kalo ada yang kurang bener, kasih feedback ke saya boss. 

Oke, yang saya tau Shaking Table itu adalah alat simulasi gempa yang biasanya dimiliki orang Jurusan Teknik Sipil. Gambaran kerjanya gini, tanah dimasukkan ke dalam kotak ukuran 1x0.75x0.5 m3. Nah kotak itu nantinya dikasih percepatan linier, caranya dengan menghubungkan lengannya dengan motor…(Srrruuuuuutttt,,,,wuuhhhh!!!!sruput kopinya,isep rokoknya dulu). Kalo motornya dinyalakan, tanah itu jadi getar. Nah itu simulasi gempanya. Selanjutnya untuk masalah analisa tanahnya saya kurang tau lagi dech…
Waduh mas ini sok tau amat sich (“kata cewek yang lagi baca ini”, hehe becanda boss..). Ya kebetulan saya dapat krjaan buatin sistem otamasinya. Kebetulan juga saya pernah belajar Instrumentasi, jadi ya bisa ngerjain, hehe. Ni diagram blok alatnya.





Ceritanya…??? Laptop menirimkan data serial ke mikrokontroler untuk menyalakan motor…Nah saat motor bekerja mikro mengambil data sensor ketinggian dan rotary. Opo she fungsine sensor iku???? Sensor ketinggian dipakai untuk mengamati ketinggian tanah di kotak tadi selama motor bekerja, sedangkan rotary untuk sensor kecepatan motor. Jadi nanti tau dech nilai penurunan tanah dan percepatan liniernya. Sayangnya percepatan motor g bisa dikontrol dari laptop (soalnya bos g mau sech ditawarin …hehe). Rotary encodernay pake ni bos E6A2-CW5C punya OMRON,,. Kalo sensor ketinggian pake potensio yang dikopel dengan gear..(Wah bisa bayangin gak ya???sori dech kalo bikin pusing)…Program interface laptopnya saya pake Delphi 7 trus mikronya pake Codevision AVR...Yang mau lihat source code nya klik Delphi . O iya disitu da source mikro, dan kalo yang g punya delphi, bisa langsung masuk folder cilil > simulasitanah > express > interm > singleimage > diskimage > disk1 > setup..Sori panjang baget, hehe. tu langsung bisa diinstall and run bos,,,sudah masuk start menu windows.
Wah kayake cukup dulu ya tulisan sok tau saya ni...Smoga bermanfaat...O iya lagi, untuk teknik interface serial mikro dgn delphi, trus cara input sensor dll, nanti coba akan saya share di postoing mendatang..AMIN...

Terus belajar generasi muda!!!