Jumat, 27 April 2012

Tombol Menu dengan Baskom

Tanpa basa basi lagi dari judulnya mungkin sudah pada tau, yaitu bagaimana cara membuat menu program dengan beberapa tombol, yang gunanya untuk menseting beberapa nilai variable atau pilihan lainnya juga dapat dibuat. disini akan saya buat contoh program pengaturan suhu dan dapat di aplikasikan untuk mesin tetas telur.

karna saya jarang membuat skematik dalam me-Layout rangkaian jadi saya deskripsikan pin2 yang digunakan pada rankaian nantinya.
4 buah tombol aktiv low yang dihubungkan ke PortB.0 - PortB.3
LCD 2 x 16 ke Portc dengan susunan (RS= PC.0 / RW=PC.1 / EN=PC.2 / DB1=PC4 / DB2=PC5 / DB3=PC6 / DB4=PC7 )
Sensor LM 35 ke PORTA.0
Led di Portd / dapat di ganti untuk relay karna sebagai outputnya.

listing program nya:

$regfile = "m16def.dat"
$crystal = 11059200
membuat inisialisasi header program yaitu menggunakan mikrokontroler ATmega16, dan menggunakan cristal 11.059200. kenapa pake cristal segitu..?? ya karna di sismin saya selalu pake segitu dan bisa juga mau pake yang lebih kecil juga bisa.. hehehe..

$lib "lcd4busy.lbx"
Config Lcd = 16 * 2
Const _lcdport = Portc
Const _lcdddr = Ddrc
Const _lcdin = Pinc
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off

nah kalo ini hanya untuk inisialisasi atau konfigurasi LCD, saya menggunakan library nya baskom jadi sedikit berbeda dari biasanya.. dan kenapa saya pake seperti ini karna alasan kadang saya menggunakan library codevision jadi biar tidak memindahkan pin RW nya ke GND jadi saya lebih suka buat seperti di atas jika menggunakan Baskom AVR.

Deflcdchar 1 , 32 , 32 , 32 , 31 , 31 , 32 , 32 , 32
Deflcdchar 0 , 32 , 4 , 10 , 21 , 27 , 14 , 4 , 32
Config Adc = Single , Prescaler = Auto , Reference = Avcc
'#===========================================
Dim X As Byte
Dim Ws As Word
Dim Wt As Word
Dim Ss As Word

Dim Aa_suhu0 As Eram Byte
Dim Aa_suhu1 As Eram Byte
Dim Aa_suhu2 As Eram Byte
Dim Oper_heat As Eram Byte
Dim Kalibrasi As Eram Byte
Dim Bb_lembab As Eram Byte
Dim Sensor As Eram Byte

Dim Kp0 As Byte
Dim Kp1 As Byte
Dim Kp2 As Byte
Dim Kp3 As Byte
Dim Kd As Byte
Dim Kb As Byte
Ddrb = &B11110000
Portb = &B11111111
Ddrd = &B11111111
Portd = &B11111111

Kp0 = Aa_suhu0
Kp1 = Aa_suhu1
Kp2 = Aa_suhu2
Kp3 = Oper_heat
Kd = Bb_lembab
Kb = Kalibrasi
Program di atas inisialisasi juga.. mari kita lanjuta ke berikutnya nanti bagian atas itu akan ngerti dengan sendirinya. menu program yang akan di buat ada bebrapa pengturan yang dirancang yaitu:
pengaturan  suhu0 yaitu untuk level 1
pengaturan  suhu1 yaitu untuk level 2
pengaturan  suhu2 yaitu untuk level 3
pengaturan  oper_heat atau batas suhu maksimal nya pada sistem
serta menu program untuk mengkalibrasi sensor *misal alat ukur nya tidak sesui nilainya dengan alat ukur yang sudah ada maka dibuat menu untuk mencocokan kalibrasinya
Sw_a Alias Pinb.0  ' Tombol Program
Sw_b Alias Pinb.1  ' Tombol OK
Sw_c Alias Pinb.2  ' Tombol UP
Sw_d Alias Pinb.3  ' Tombol Donw

membuat inisial tombol pada pin mikronya, tombol aktiv low atau akan aktiv jika dihubungkan dengan ground nya.

Cls
Ok:
   Start Adc
   Gosub Suhu
   Gosub Kelembapan
   Do
   If Sw_a = 0 Then Goto Program                            'masuk menu setingan
   If Sw_b = 0 Then Goto Ok
   Loop

'*******************************************************************************
Program:
   If Sw_c = 0 Then Goto Atur_suhu0
   If Sw_d = 0 Then Goto Atur_lembab

   Cls
   Lcd "Input Setingan"
   Lcd "              "
   Waitms 300
      Do
   If Sw_c = 0 Then Goto Kalibrasi
   If Sw_a = 0 Then Goto Credit
   If Sw_b = 0 Then
      Waitms 300
      Goto Set_simpan
      End If
   If Sw_c = 0 Then
      Waitms 300
      Goto Atur_suhu0
      End If

   If Sw_d = 0 Then
      Waitms 300
      Goto Atur_lembab
      End If
   Loop


'*******************************************************************************

Atur_suhu0:
   Cls
   Locate 1 , 1
   Lcd "Atur Suhu"
   Locate 2 , 1
   Lcd "Level_1  " ; Chr(0)
   Do
   Locate 2 , 12
   Lcd Kp0 ; "  "

   If Sw_b = 0 Then
       Aa_suhu0 = Kp0
       Aa_suhu1 = Kp1
       Aa_suhu2 = Kp2
      Kalibrasi = Kb
      Bb_lembab = Kd
      Goto Set_simpan
      End If

   If Sw_a = 0 Then
      Waitms 300
      Goto Atur_suhu1
      End If

   If Sw_c = 0 Then
      Waitms 150
      Incr Kp0
      End If

   If Sw_d = 0 Then
      Waitms 150
      Decr Kp0
      End If
   Loop

Atur_suhu1:
   Cls
   Locate 1 , 1
   Lcd "Atur Suhu"
   Locate 2 , 1
   Lcd "Level_2  " ; Chr(0)
   Do
   Locate 2 , 12
   Lcd Kp1 ; "  "

   If Sw_b = 0 Then
       Aa_suhu0 = Kp0
       Aa_suhu1 = Kp1
       Aa_suhu2 = Kp2
      Kalibrasi = Kb
      Bb_lembab = Kd
      Goto Set_simpan
      End If

   If Sw_a = 0 Then
      Waitms 300
      Goto Atur_suhu2
      End If

   If Sw_c = 0 Then
      Waitms 150
      Incr Kp1
      End If

   If Sw_d = 0 Then
      Waitms 150
      Decr Kp1
      End If
   Loop

Atur_suhu2:
   Cls
   Locate 1 , 1
   Lcd "Atur Suhu"
   Locate 2 , 1
   Lcd "Level_3  " ; Chr(0)
   Do
   Locate 2 , 12
   Lcd Kp2 ; "  "

   If Sw_b = 0 Then
       Aa_suhu0 = Kp0
       Aa_suhu1 = Kp1
       Aa_suhu2 = Kp2
      Kalibrasi = Kb
      Bb_lembab = Kd
      Goto Set_simpan
      End If

   If Sw_a = 0 Then
      Waitms 300
      Goto Oper_heat
      End If

   If Sw_c = 0 Then
      Waitms 150
      Incr Kp2
      End If

   If Sw_d = 0 Then
      Waitms 150
      Decr Kp2
      End If
   Loop

Oper_heat:
   Cls
   Locate 1 , 1
   Lcd "Atur Suhu"
   Locate 2 , 1
   Lcd "OperHeat " ; Chr(0)
   Do
   Locate 2 , 13
   Lcd Kp3 ; "  "

   If Sw_b = 0 Then
       Aa_suhu0 = Kp0
       Aa_suhu1 = Kp1
       Aa_suhu2 = Kp2
      Kalibrasi = Kb
      Bb_lembab = Kd
      Goto Set_simpan
      End If

   If Sw_a = 0 Then
      Waitms 200
      Goto Kalibrasi
      End If

   If Sw_c = 0 Then
      Waitms 200
      Incr Kp3
      End If

   If Sw_d = 0 Then
      Waitms 200
      Decr Kp3
      End If
   Loop

Kalibrasi:
   Cls
   Locate 1 , 1
   Lcd "Kalibrasi Suhu"
   Locate 2 , 1
   Lcd "kalibarsi= "
   Do
   Locate 2 , 13
   Lcd Kb ; "  "

   If Sw_b = 0 Then
       Aa_suhu0 = Kp0
       Aa_suhu1 = Kp1
       Aa_suhu2 = Kp2
      Kalibrasi = Kb
      Bb_lembab = Kd
      Goto Set_simpan
      End If

   If Sw_a = 0 Then
      Waitms 200
      Goto Atur_suhu0
      End If

   If Sw_c = 0 Then
      Waitms 200
      Incr Kb
      End If

   If Sw_d = 0 Then
      Waitms 200
      Decr Kb
      End If
   Loop

'*******************************************************************************
Atur_lembab:
      Cls
      Locate 1 , 1
      Lcd "Atur Kelembapan"
      Locate 2 , 1
      Lcd "Lembab " ; Chr(0)
      Do
      Locate 2 , 10
      Lcd Kd ; "  "

   If Sw_b = 0 Then
       Aa_suhu0 = Kp0
       Aa_suhu1 = Kp1
       Aa_suhu2 = Kp2
      Kalibrasi = Kb
      Bb_lembab = Kd
      Goto Set_simpan
      End If

   If Sw_b = 0 Then
      Waitms 300
      Goto Atur_lembab
      End If

   If Sw_c = 0 Then
      Waitms 150
      Incr Kd
      End If

   If Sw_d = 0 Then
      Waitms 150
      Decr Kd
   End If
Loop

'*******************************************************************************
Set_selesai:
      Cls
      Locate 1 , 1
      Lcd "SETTING SELESAI..."
      Waitms 500

Set_simpan:
      Cls
      Locate 1 , 1
      Lcd Chr(0) ; "Simpan Program" ; Chr(0)
      Locate 2 , 1
      Lcd "Loading " ; Chr(1)
      Waitms 400
      Locate 2 , 1
      Lcd "Loading " ; Chr(1) ; Chr(1)
      Waitms 400
      Locate 2 , 1
      Lcd "Loading " ; Chr(1) ; Chr(1) ; Chr(1)
      Waitms 400
      Locate 2 , 1
      Lcd "Loading " ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1)
      Waitms 500
      Locate 2 , 1
      Lcd "Loading " ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1)
      Waitms 500
      Locate 2 , 1
      Lcd "Loading " ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1)
      Waitms 500
      Locate 2 , 1
      Lcd "Loading " ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1) ; Chr(1)
      Waitms 600

'*******************************************************************************
Suhu:
  Cls
  Locate 1 , 1
  Lcd "Suhu   " ; Chr(0);
  Locate 2 , 1
  Lcd "Lembab " ; Chr(0);
  Do
      Ws = Getadc(0)
      X = Ws / 2
      Ss = X + Kb
      Locate 1 , 10
      Lcd Ss ; "   "
      Waitms 50

  If Ss >= Kp0 Then
     Portd.2 = 0
     Elseif Ss <= Kp0 Then
     'Kp0 = Kp0 - 2
     Portd.2 = 1
     End If

  If Ss >= Kp1 Then
     Portd.3 = 0
     Elseif Ss <= Kp1 Then
     'Kp0 = Kp0 - 2
     Portd.3 = 1
     End If

  If Ss >= Kp2 Then
  Portd.4 = 0
     Elseif Ss <= Kp2 Then
     'Kp0 = Kp0 - 2
     Portd.4 = 1
     End If
    If Sw_a = 0 Then
  Goto Program
  End If

'*******************************************************************************
Kelembapan:

      Wt = Getadc(1)
      Locate 2 , 10
      Lcd Wt ; "    "
      Waitms 500

  If Wt >= Kd Then
      Portd.5 = 0
      Elseif Wt <= Kd Then
      Portd.5 = 1
      End If


  If Sw_a = 0 Then
      Goto Program
  End If
Loop

'*******************************************************************************
Credit:
Cls
Locate 1 , 1
Lcd Chr(0) ; "Sistem Kontrol Temp By. Micro Logic"
Locate 2 , 1
Lcd Chr(0) ; " Keren Sekali Pokoknya ................."

     Waitms 800
     For X = 1 To 44
     Shiftlcd Left
     Waitms 250
     Next
     Wait 1
     Goto Ok

Program diatas memiliki 3 level suhu, masing2 level dengan output terpisah

Sekian Program jadinya... panjang banget kalo saya jelaskan bisa sampe pagi.. hehehe..
silahkan di coba aja dulu .. jika ada yang kurang jelas monggo di tanyaken..

Donwload program......

Selamat Berkarya...

Rabu, 21 Maret 2012

Jam Digital LCD dengan RTC DS1307

Sebelumnya sudah pernah saya posting tentang RTC DS1307 juga pada Tutorial Jam Digital dengan Bascom AVR, sedikit teori dan datasheet RTC DS1307 dapat dilihat pada postingan tersebut.
Pada tutorial kali ini saya akan memberikan contoh program jam digital dengan RTC DS1307 menggunakan bahasa pemrograman CodeVision AVR. Jam digital tersebut akan menampilkan tanggal dan waktu pada LCD dan port serial atau Hyperterminal.


Pengaturan LCD pada wizard CodeVision AVR sbb:



Pengaturan port serial pada wizard CodeVision AVR sbb:



Pengaturan I2C DS1307 pada wizard CodeVision AVR sbb:




Jangan lupa pilih data float pada pengaturan Project --> Configure --> C Compiler sbb:



Listing Program :

#include <mega16.h>
#include <delay.h>
#include <stdio.h> 

// I2C Bus functions
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=1
   .equ __scl_bit=0
#endasm
#include <i2c.h> 
#include <ds1307.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

char buf[33];
unsigned char dd;
unsigned char mm;
unsigned char yy;
unsigned char s;
unsigned char m;
unsigned char h;

void main(void)
{
PORTA=0x00;DDRA=0x00;
PORTB=0x00;DDRB=0x00;
PORTC=0x00;DDRC=0x00;
PORTD=0x00;DDRD=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
ACSR=0x80;
SFIOR=0x00;
i2c_init();
rtc_init(0,0,0);

lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("==Digital CLOCK==");
lcd_gotoxy(0,1);
lcd_putsf("===============");
printf("Jam Digital RTC DS 1307\r");
delay_ms(2000);

rtc_set_date(21,03,12);
rtc_set_time(20,51,00);
while (1)
      {         
      rtc_get_time(&h,&m,&s);
      rtc_get_date(&dd,&mm,&yy);
      lcd_gotoxy(0,0);
      sprintf(buf,"Tanggal:%02u/%02u/%02u",dd,mm,yy);
      lcd_puts(buf);
      lcd_gotoxy(0,1);
      sprintf(buf,"Waktu  :%02u:%02u:%02u",h,m,s);
      lcd_puts(buf);
      printf("Tanggal: %02u:%02u:%02u \r",dd,mm,yy);
      printf("Waktu  : %02u:%02u:%02u \r",h,m,s);
      delay_ms(1000);       
      };
}

Setelah Mendonwloadkan sekali dan sudah menampilkan jam pada LCD. maka butuh mendonwloadkan sekali lagi namun pada bagian :
rtc_set_date(21,03,12);
rtc_set_time(20,51,00);
di hilangkan atau di no-Aktifkan, agar hasil setingan tidak berubah saat jam mulai di run kembali.

donwload pertama :
rtc_set_date(21,03,12);
rtc_set_time(20,51,00);
disesuaikan dengan tanggal dan jam saat ini:





Minggu, 18 Maret 2012

Monitoring suhu dengan WEB server NM7010A

Bahasan kali ini akan mencoba modul NM7010A yaitu sebuah modul komunikasi basis website. dimana pemanfaatan nya untuk monitoring suatau keadaan dengan tampilan WEBsite.



dalam perancangan kali ini menggunakan mikrokontroler ATmega328, ukuran nya ramping dan memiliki memori yang cukup besar. kenapa tidak menggunakan mikrokontroler lain nya yang memiki memory besar dan pin I/O yang lebih banyak..?? alasan nya dalam projeck ini tidak membutuhkan pin I/O yang banayak. dan ini juga project pesanan seseorang, jadi mikrokontroler disesuaikan dengan pesanan pelanggan.



Senin, 09 Januari 2012

Arduino ATmega8

Membuat Board Arduino ATmega8


Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel.
Mikrokontroler itu sendiri adalah chip atau IC (integrated circuit) yang bisa diprogram menggunakan komputer. Tujuan menanamkan program pada mikrokontroler adalah agar rangkaian elektronik dapat membaca input, memproses input tersebut dan kemudian menghasilkan output sesuai yang diinginkan. Jadi mikrokontroler bertugas sebagai ‘otak’ yang mengendalikan input, proses dan output sebuah rangkaian elektronik.
Mikrokontroler ada pada perangkat elektronik di sekeliling kita. Misalnya handphone, MP3 player, DVD, televisi, AC, dll. Mikrokontroler juga dipakai untuk keperluan mengendalikan robot. Baik robot mainan, maupun robot industri.
Karena komponen utama Arduino adalah mikrokontroler, maka Arduino pun dapat diprogram menggunakan komputer sesuai kebutuhan kita.

Apa saja yang bisa dilakukan Arduino?
Kegunaan Arduino tergantung kepada kita yang membuat program. Arduino bisa digunakan untuk mengontrol LED, bisa juga digunakan untuk mengontrol helikopter.
Contoh yang sudah pernah dibuat adalah MP3 player, pengontrol motor, mesin CNC, monitor kelembaban tanah, pengukur jarak, penggerak servo, balon udara, pengontrol suhu, monitor energi, statiun cuaca, pembaca RFID, drum elektronik, GPS logger, monitoring bensin dan masih banyak lagi. Silahkan buka Google, Youtube atau lihat di http://www.freeduino.org
Kelebihan Arduino
  • Tidak perlu perangkat chip programmer karena di dalamnya sudah ada bootloader yang akan menangani upload program dari komputer.
  • Sudah memiliki sarana komunikasi USB, sehingga pengguna Laptop yang tidak memiliki port serial/RS323 bisa menggunakan nya.
  • Bahasa pemrograman relatif mudah karena software Arduino dilengkapi dengan kumpulan library yang cukup lengkap.
  • Memiliki modul siap pakai (shield) yang bisa ditancapkan pada board Arduino. Misalnya shield GPS, Ethernet, SD Card, dll.
Bahasa Pemrograman Arduino
Bahasa pemrograman Arduino adalah bahasa C. Tetapi bahasa ini sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga pemula pun bisa mempelajarinya dengan cukup mudah.
Untuk membuat program Arduino dan mengupload ke dalam board Arduino, anda membutuhkan software Arduino IDE (Integrated Development Enviroment) yang bisa di download gratis di http://arduino.cc/en/Main/Software
Panduan bahasa pemograman Arduino beserta dengan contoh-contohnya bisa dibaca di halaman http://arduino.cc/en/Reference/HomePage

Bagaimana cara membuat Board Arduino
Langkah pertama anda buat dahulu sistem minimum  ATmega8 biasa dan lengkapi dengan serial com *cocokan dengan komunikasi serial to USB agar suport di semua Laptop
setelah rangkaian jadi anda perlu memasukan sebuah program BOOTLOADER berupa program driver pembaca serial com serta driver program yang nantinya akan suport di program aplikasi Arduino.
sebelum anda memasukan bootloader arduino anda wajib mensetting fusebit  atmega8 yang akan di buat board Arduino. menurut pengalaman saya jika tidak di setting fusebitnya maka program yang hanya sekali isi saja tidak bisa di tulis ulang kemali kecuali kita menghabis isi program di atmega8 lalu di isi kembali dengan bootloader.
settingan fusebit Borad Arduino ATmega8 :
atmega8.name=Arduino NG or older w/ ATmega8

atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200
atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca

atmega8.bootloader.path=atmega8
atmega8.bootloader.file=ATmegaBOOT.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F

atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard

Perhatikan bagian yang saya cetak tebal, itu adalah bagian fusebit yang perlu kita setting sebelum kita mengisi program bootloader ke ATmega8.

==================================

Desain Versi terbaru 


Contoh Vidio Aplikasinya 







** Versi Auto Reset

Versi sebelum nya sempat kebingungan setiap akan  upload program harus tekan reset, sedangkan yang asli tidak. cek dan ricek dan mencari sinyal di bagian serial ternyata ada di pin 4 di kaki DB 9 nya. saya coba kan sambungkan pin reset nya ke pin 4 DB9 nya dan menambahkan kapasitor 100 nf.
sehingga desain nya menjadi :



dan menambahkan PIN AREF serta output tegangan 3,6 volt dengan manambahkan zener 3,6

Silahkan yang berminat Membuat nya sendiri

File Pdf >>  Donwload disini
File OrcCad >> Donwload disini


Minggu, 08 Januari 2012

Sensor Suhu LM35

Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan.
Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan kesensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 µA hal ini berarti LM35 mempunyai kemampuan menghasilkan panas (self-heating) dari sensor yang dapat menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5 ºC pada suhu 25 ºC 
Karakteristik :
  • Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu 10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.
  • Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC seperti terlihat pada gambar 2.2.
  • Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
  • Bekerja pada tegangan 4 sampai 30 volt.
  • Memiliki arus rendah yaitu kurang dari 60 µA.
  • Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada udara diam.
  • Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.
  • Memiliki ketidaklinieran hanya sekitar ± ¼ ºC
Langsung saja kita merancang sensor suhu LM35 ini dalam aplikasinya:
Kelangkapan yang di butuhkan :
1. Sistem Minimum AVR ATmega16
2. LCD 2x16  (Hubungkan di PORTC)
3. Sensor LM35 (Hubungkan di PORTA)
4. LED
5. Resitor 330 ohm

dalam aplikasinya kita akan bahas bagai mana sensor suhu mengontrol LED menyala jika pada suhu tertentu. dengan indikator LED maka dapat dikembangkan untuk mengontrol Relay  atau kipas.


Listing Program

#include <mega16.h>
#include <stdio.h>.
#include <delay.h>
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

#define ADC_VREF_TYPE 0x40
#define heater PORTB.0
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
unsigned char buff[33];
void lcd_putint(unsigned int dat)
{
sprintf(buff,"%d ",dat);
lcd_puts(buff);
}
void main(void)
{
unsigned int suhu;
float adc;
DDRB=0xff;
PORTB=0x00;
DDRD=0xff;
PORTD=0xFF;

ADMUX=ADC_VREF_TYPE;
ADCSRA=0x85;
SFIOR&=0xEF;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
        adc = read_adc(0);
        adc=adc/255;
        suhu=adc*175;
        suhu=suhu-12;
          if (suhu<30)PORTD.0=0;
          if (suhu>45)PORTD.0=1;
          lcd_gotoxy(0,0);
          lcd_putsf("SUHU Ruangan= ");
          lcd_putint(suhu);
          delay_ms(100);
          lcd_clear();
    };
}


Jika suhu lebih kecil dari 30  (<30) maka led mati
Jika suhu lebih besar dari 40 (>40) maka led menyala

dengan ilustrasi ini dapat kita aplikasikan oput led ini dihubungkan ke relay dan mengotrol kipas AC sehingga dapat menghemat listrik.

SMS Kontroler Fastrack Wavecome

Membuat peralatan apa saja yang di kontrol menggunakan SMS sangat lah menarik sekali, bahkan untuk sistem keamanan rumah atau industri dapat menggunakan sistem ini. dalam kesempatan ini saya menggunakan SMS kontroler untuk memantau dan mengendalikan beberapa target yang ada di rumah.
Langkah pertama kita harus mengetahui beberapa perintah yang sering di gunakan untuk mengkomunikasikan modem wavecom baik untuk di PC dan mikrokontroler memiliki perintah yang sama.
AT+CMGL=”ALL” //BACA SMS
AT+CMGD=1,4 // DELETE SMS
ATE0 //KILL ECHO
AT+CUSD=1,*888# CEK PULSA
AT+CFUN=1 //RESTART
AT+IPR=BAUDARATE
AT&W // SAVE


dengan kita mengetahui ini cukup mudah untuk kita lakukan mengkomunikasikan mikrokontroler dengan modem ini, contohnya simpan salah satu baris karakter perintah lalu kirim kan secara serial, maka perintah itu sama artinya kita mengetikan pada PC lalu di kirim kan secara serial ke modem wavecom. jadi disini mikrokontroler adalah pengganti dari PC untuk menerima perintah dan mengirim perintah ke modem wavecome.


contoh penggalan perintah yang dikirim dari mikro ke modem yang memperintahkan untuk mengirim SMS :

     printf("AT+CMGS=");  // Perintah mengirimkan SMS
     printf(" Masukan No tujuan ");  // ke no tujuan peniriman
     putchar(13); putchar(10);   //  ctrl+z
     printf("sensor PIR 2 Aktif");  // Karakter yang dikrimkan ke no target
     putchar(26); 

sangat mudah sekali untuk di pelajari sistem menggunakan SMS kontroler menggunakan modem wavecome karna sudah tidak menggunakan PDU lagi yang sangat ribet dan berbelit2.

Lalu apa saja yang dapat lakukan dengan alat ini ...??
Banyak sekali yang dapat kita rancang dengan alat ini, untuk apa saja bisa.

Seniman ELektronik menyediakan Pesanan Alat baik untuk keperluan di rumah maupun untuk Tugas akhir siap menyedikan dengan harga menyesuaikan pesanan. dijamin bisa nego:
1. Sistem keamanan rumah menggunakn berbagai  Sensor 
2. Mengontrol keamanan rumah basis SMS ( untuk kunci pintu, dll)
3. detektor kebocoran GAS menggunakan SMS 
dan sistem kontrol lain nya yang berbasis SMS dapat kami sediakan...





Alat ini dapat di pesan disini.. dengan harga terjangkau.. dan menerima berbagai sistem lain nya.