Tampilkan postingan dengan label Mikrokontroler. Tampilkan semua postingan
Tampilkan postingan dengan label Mikrokontroler. Tampilkan semua postingan
Jumat, 23 Maret 2012
Sensor jarak Ultrasonik PING dengan Atmega8535 dan program Code Vision
Sensor Ping merupakan sensor untuk mengukur jarak. pada postingan sebelumnya juga sudah dijelaskan bagaimana coding sensor PING tapi menggunakan AVR Studio. Bagaimana cara mengaksesnya...?
Berikut saya jelaskan tahapan-tahapan untuk mengakses sensor PING.
1. PIN dijadikan sebagai output
2. Keluarkan pulsa pada PIN sebesar 2 microseconds – 5 microseconds
3. PIN dijadikan sebagai input + aktifkan pullup internal
4. Hitung pulsa high
5. Konversi pulsa menjadi jarak dengan rumus =>> Jarak (cm) = Pulsa (us) / 29.034 / 2
Berikut ini listing program dimana sensor PING di hubungkan ke mikro melalui PORTD 2 dan LCD di PORT C :
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define DDR_PING DDRD.2 //DDR yang dijadikan output dari sensor PING yaitu DDRD.2
#define PORT_PING PORTD.2 //PORT yang dijadikan output dari sensor PING yaitu PORTD 2
#define PIN_PING PIND.2 //PIN yang dijadikan output dari sensor PING yaitu PIND 2
unsigned char kata[16];
float baca_jarak()
{
unsigned int count=0;
float jarak;
DDR_PING=1; //jadikan PIN output
PORT_PING=1; // memberi sinyal high selama 5 us
delay_us(5);
PORT_PING=0; //memberi sinyal low
DDR_PING=0; //jadikan PIN sebagai input
PORT_PING=1; //aktifkan internal pullup
while (PIN_PING==0){} //ketika sinyal low tidak ada perintah
while (PIN_PING==1) //ketika sinyal high maka nilai counter mencacah naik setiap 1 us
{
count++;
delay_us(1);
}
jarak=((float)count/29.034/2); //hitung nilai count dan dikalibrasi menjadi jarak dalam cm
return(jarak);
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
lcd_init(16);
while (1)
{
lcd_clear();
sprintf(kata, "Jarak = %.1f cm", baca_jarak());
lcd_gotoxy(0,0);
lcd_puts(kata);
delay_ms(300);
};
}
Minggu, 26 Februari 2012
Simulasi Komunikasi Serial dengan Proteus
Buat para newbie di bidang Mikrokontroler untuk mempelajari komunikasi serial mungkin akan sedikit repot. Karena sekarang udah jarang PC dan laptop yang masih menyediakan port serial atau biasa disebut DB9. Atau bahkan ada yang ingin belajar programing mikro tapi ga punya hardwarenya. Nah trus gimana donk biar bisa tetep mempelajari komunikasi serial..?? Buat yang ingin mempelajari komunikasi serial dan ga punya laptop ato pc yang masih ada port serial nya kita bisa memakai software2 ini..
untuk membuat port serial virtual kita bisa memakai software vspe. Silahkan download disini http://www.eterlogic.com/downloads/SetupVSPE.zip
VSPE adalah software simulasi port serial yang memungkinkan kita membuat port serial virtual, Hal ini mampu menciptakan berbagai perangkat virtual untuk mengirim / menerima data. Tidak seperti port serial biasa, perangkat virtual memiliki kemampuan khusus: misalnya, perangkat yang sama dapat dibuka lebih dari sekali oleh berbagai aplikasi, yang dapat berguna dalam banyak kasus. Dengan VSPE Anda dapat berbagi data port fisik serial untuk beberapa aplikasi, mengekspos port serial untuk jaringan lokal (melalui protokol TCP), membuat pasangan perangkat virtual port serial dan sebagainya.
Untuk simulasi mikrokontroler kita bisa menggunakan Software proteus. Proteus adalah sebuah software untuk mendesain PCB yang juga dilengkapi dengan simulasi pspice pada level skematik, sebelum rangkaian skematik diupgrade ke PCB shingga sebelum PCBnya di cetak kita akan tahu apakah PCB yang akan kita cetak sudah benar atau tidak.
Proteus mengkombinasikan program ISIS untuk membuat skematik desain rangkaian dengan program ARES untuk membuat layout PCB dari skematik yang kita buat.
Software ini bagus digunakan untuk desain rangkaian mikrokontroller. Proteus juga bagus untuk belajar elektronika seperti dasar2 elektronika sampai pada aplikasi mikrokontroller. Software ini jika di install menyediakan banyak contoh aplikasi desain yang disertakan sehingga kita bisa belajar dari contoh2 yang sudah ada.
Proteus mengkombinasikan program ISIS untuk membuat skematik desain rangkaian dengan program ARES untuk membuat layout PCB dari skematik yang kita buat.
Software ini bagus digunakan untuk desain rangkaian mikrokontroller. Proteus juga bagus untuk belajar elektronika seperti dasar2 elektronika sampai pada aplikasi mikrokontroller. Software ini jika di install menyediakan banyak contoh aplikasi desain yang disertakan sehingga kita bisa belajar dari contoh2 yang sudah ada.
Setelah semua software siap. sekarang tinggal instal software dan pembuatan proramnya..
1. Instal VSPEnya trus jalankan.. pada menu device pilih create
2. pada device type pilih pair kemudian tekan next.. dan finish..
3. selamat kita sudah membuat virtual port COMx --> COMy. hasil di penulis yaitu COM1 <==> COM2
4. Disini kita menggunakan mikrokontroller ATmega8535. sekarang buat rangkaian seperti ini di proteus.
5. Masukan source code C ini. Jangan lupa di compile dulu pake CVAVR dengan frekuesi 8Mhz
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 27/02/2012
Author : Bayu Sasongko
Company : Teknik Elektro, University Of Lampung
Comments:
Chip type : ATmega8535
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/
#include
// Standard Input/Output functions
#include
#include
// Declare your global variables here
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;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your code here
printf("Bayu Sasongko ");
printf("http://etekno.blogspot.com ");
delay_ms(100);
};
}
6. Setelah di compile, load programnya di proteus dan pilih setingg CKSEL fuses nya "int.RC 8Mhz" karena kita tadi memakai frekuesi 8 Mhz di progarmnya. Atur juga settingan DB9di proteusnya, pilih physical port-nya COM1 dan setiingan lainnya seperti gambar dibawah ini
7. Buka hyperterminal pilih connecting using COM2 (beda sama langkah sebelumnya), setting bit per second = 9600, data bit=8, parity=none, stop bit=1, dan flow control =none, klik apply8. Jalankan rangkain di proteus dan lihat di hyperterminal
9. Selain hiperterminal bisa juga dengan menggunakan Visual basic, LabView atau Software lainnya sesuai dengan kreatifitas anda untuk menampilkan datanya. Jika anda memakai windows 7 ternyata hiperterminalnya hilang atau sengaja dihilangkan oleh microsoft. tenang kita bisa mengakalinya, baca di postingan saya berikutnya.
Selamat berkreasi.
Jumat, 16 Desember 2011
Kendali Kecepatan Kipas Menggunakan Mikrokontroler dan Sensor Suhu LM35
Postingan kali ini berjudul Kendali Kecepatan Kipas Menggunakan Mikrokontroler dan Sensor Suhu LM35. Proyek kali ini yaitu kita akan mengatur kecepatan putar kipas berdasarkan sensor suhu LM35. Ketika suhu yang diterima sensor suhu LM35 tinggi maka kecepatan putar kipas akan tinggi, ketika suhu menurun maka kecepatan putar kipas juga akan menurun. Untuk skematiknya bisa dilihat dibawah ini:
untuk programnya bisa dilihat berikut ini,
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "lcd.h"
void delay_ms(int ms)
{for (int i=0;i<ms;i++){_delay_ms(1);}}
void adc_init(void)
{
ADMUX= (0<<REFS1)|(1<<REFS0)| //Tegangan referensi
(0<<ADLAR)| //Format hasil konversi
(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);//PIN INPUT ADC
ADCSRA= (1<<ADEN)| //1= ADC enable
(0<<ADIE)| //1= interupsi ADC
(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
}
int baca_suhu(void)
{
adc_init();
_delay_ms(20);
ADCSRA |=(1<<ADSC);
loop_until_bit_is_set(ADCSRA, ADIF); //cek ADIF =1?
ADCSRA |=(1<<ADIF);
return ADCW;
}
int main (void)
{
lcd_init();
delay_ms(10);
DDRD=0xFF;
PORTD=0x00;
TCCR1A= (1<<WGM11)|(1<<WGM10)|
(1<<COM1A1)|(0<<COM1A0)|
(1<<COM1B1)|(0<<COM1B0);
TCCR1B= (0<<WGM13)|(1<<WGM12)|
(0<<CS12)|(0<<CS11)|(1<<CS10);
TCNT1=0x0000;
OCR1A=0;
OCR1B=0;
sei( );
while(1)
{
if (((baca_suhu()/2)-10)<0)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SANGAT RENDAH");
delay_ms(500);
OCR1A=0;
}
else if(((baca_suhu()/2)-10)>0&&((baca_suhu()/2)-10)<30)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("RENDAH");
delay_ms(500);
OCR1A=250;
}
else if (((baca_suhu()/2)-10)>30&&((baca_suhu()/2)-10)<60)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SEDANG");
delay_ms(500);
OCR1A=500;
}
else if (((baca_suhu()/2)-10)>60&&((baca_suhu()/2)-10)<100)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("TINGGI");
delay_ms(500);
OCR1A=750;
}
else if (((baca_suhu()/2)-10)>100)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SANGAT TINGGI");
delay_ms(500);
OCR1A=1000;
}
}
}
atau silahkan download proyek ini disini
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "lcd.h"
void delay_ms(int ms)
{for (int i=0;i<ms;i++){_delay_ms(1);}}
void adc_init(void)
{
ADMUX= (0<<REFS1)|(1<<REFS0)| //Tegangan referensi
(0<<ADLAR)| //Format hasil konversi
(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);//PIN INPUT ADC
ADCSRA= (1<<ADEN)| //1= ADC enable
(0<<ADIE)| //1= interupsi ADC
(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
}
int baca_suhu(void)
{
adc_init();
_delay_ms(20);
ADCSRA |=(1<<ADSC);
loop_until_bit_is_set(ADCSRA, ADIF); //cek ADIF =1?
ADCSRA |=(1<<ADIF);
return ADCW;
}
int main (void)
{
lcd_init();
delay_ms(10);
DDRD=0xFF;
PORTD=0x00;
TCCR1A= (1<<WGM11)|(1<<WGM10)|
(1<<COM1A1)|(0<<COM1A0)|
(1<<COM1B1)|(0<<COM1B0);
TCCR1B= (0<<WGM13)|(1<<WGM12)|
(0<<CS12)|(0<<CS11)|(1<<CS10);
TCNT1=0x0000;
OCR1A=0;
OCR1B=0;
sei( );
while(1)
{
if (((baca_suhu()/2)-10)<0)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SANGAT RENDAH");
delay_ms(500);
OCR1A=0;
}
else if(((baca_suhu()/2)-10)>0&&((baca_suhu()/2)-10)<30)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("RENDAH");
delay_ms(500);
OCR1A=250;
}
else if (((baca_suhu()/2)-10)>30&&((baca_suhu()/2)-10)<60)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SEDANG");
delay_ms(500);
OCR1A=500;
}
else if (((baca_suhu()/2)-10)>60&&((baca_suhu()/2)-10)<100)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("TINGGI");
delay_ms(500);
OCR1A=750;
}
else if (((baca_suhu()/2)-10)>100)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SANGAT TINGGI");
delay_ms(500);
OCR1A=1000;
}
}
}
atau silahkan download proyek ini disini
penjelasan to be continued......
Selasa, 06 Desember 2011
Lampu Cepat Tepat Dengan Mikrokontroler
Setelah pada postingan sebelumnya membuat lampu cepat tepat dengan menggunakan PLC, pada postingan ini saya tertarik untuk membuat lampu cepat tepat atau bel kuis menggunakan mikrokontroler. Adapun mikrokontroler yang saya pakai yaitu mikrokontroler murah meriah dan mudah di cari yaitu mikrontroler ATmega8535. Untuk rangkain sekematik beserta simulasinya saya pakai program proteus 7, dapat dilihat di bawah ini :
Untuk Programnya saya menggunakan AVR studio 4 dengan bahasa C. Kodenya sebagai berikut:
#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
DDRA=0xFF;
PORTA=0x00;
DDRB=0x00;
PORTB=0xFF;
while(1)
{
label1:
PORTA=0x00;
if(bit_is_clear(PINB,0))
{
while(1)
{
PORTA|=(1<<PORTA0);
if(bit_is_clear(PINB,3))
{
goto label1;
}
}
}
if(bit_is_clear(PINB,1))
{
while(1)
{
PORTA|=(1<<PORTA1);
if(bit_is_clear(PINB,3))
{
goto label1;
}
}
}
if(bit_is_clear(PINB,2))
{
while(1)
{
PORTA|=(1<<PORTA2);
if(bit_is_clear(PINB,3))
{
goto label1;
}
}
}
}
}
download proyek ini disini
Sabtu, 13 Agustus 2011
Belajar Program Sederhana dengan Code Vision (CAVR)
Bagi pemula yang ingi belajar program mikrokontroler dapat belajar dengan program sederhana seperti untuk menghidup atau mematikan lampu menggunakan tombol switch botton. pada postingan sebelumnya kita banyak belajar menggunakan program AVR Studio namu kali ini kita akan belajar programer menggunakan software CVAR. Bagaimana programnya ikuti tulisan dibawah ini.
Switch & LED 1
Deskripsi
Membaca saklar toggle pada PINA.6 dan PINA.7 untuk memilih rutin atau fungsi pilihan. Kondisi saklar toggle ini akan dibaca oleh mikrokontroler ketika power up (power pertama kali dinyalakan). Data saklar akan disimpan pada variable Flag. Kemudian mikrokontroler akan memantau push button Start yang dipasang di PINA.5. Jika tombol start belum di tekan (PINA.5==0), maka mikrokontroler tetap memantau kondisi tombol Start. Ketika tombol Start ditekan (PINA.5==1), maka mikrokontroler akan menjalankan fungsi sesuai data saklar toggle.
Source Code :
#include <mega8535.h>
#include <mega8535.h>
#include <delay.h>
// Declare your global variables here
unsigned char Flag;
void nyala1()
{ while(1)
{
PORTC=0×01;
delay_ms(1000);
PORTC=0×00;
delay_ms(1000);
}
}
void nyala2()
{ while(1)
{
PORTC=0×02;
delay_ms(1000);
PORTC=0×00;
delay_ms(1000);
}
}
void nyala3()
{ while(1)
{
PORTC=0×03;
delay_ms(1000);
PORTC=0×00;
delay_ms(1000);
}
}
void nyala4()
{ while(1)
{
PORTC=0×04;
delay_ms(1000);
PORTC=0×00;
delay_ms(1000);
}
}
void main(void)
{
Flag=PINA & 0b11000000; // Baca saklar toggle
while (PINA.5==0){} // Tombol Start ditekan?
switch (Flag)
{ case 0×00: nyala1(); break;
case 0×40: nyala2(); break;
case 0×80: nyala3(); break;
case 0xC0: nyala4(); break;
}
while (1)
{
// Place your code here
};
}
setelah selesai dibuat di CAVR maka kompile dan download ke mikrokontroler ATmega8535, bisa menggunakan downloader serial, paralel ataupun USB.
sumber: hendawan.wordpress.com
SELAMAT MENCOBA
tags : Informasi Elektronika dan Teknologi, Belajar Program Sederhana dengan Code Vision (CAVR)a, CVAR, mikrokontroler, LED, Program
Minggu, 17 Juli 2011
Membuat Sendiri “USB TO SERIAL CONVERTER” Dengan Microcontroller AVR ATMEL ATmega8
Pada artikel berikut akan dibahas bagaimana caranya mengimplementasikan dan membuat Converter USB to Serial sendiri dengan microcontroller ATmega8. Pada ATmega8 ini nanti akan diberikan source code firmwarenya Free dan bisa di download di bagian bawah.
Karena pada ATmega8 tidak tersedia fasilitas untuk komunikasi dengan USB, maka mau tidak mau protokol komunikasi data dengan USB harus dibuat sendiri pada firmware tersebut. Untuk panduan belajar protokol USB bisa dilihat di bagian lain di Website ini atau klik link berikut untuk melihatnya. Pada
firmware yang bisa didownload sudah ada code untuk menghandle protokol usb, sehingga bisa langsung digunakan, tetapi jika anda ingin menambahkan fasilitas lain, anda bisa meng-edit firmware tersebut. Firmware yang disediakan ditulis dalam bahasa assembler yang bisa di kerjakan dan di compile dengan AVR Studio 4. Selain code Assemblernya disertakan juga code Hexa-nya hasil kompilasi dari AVR Studio 4 yang bisa langsung di masukkan di IC-nya.
firmware yang bisa didownload sudah ada code untuk menghandle protokol usb, sehingga bisa langsung digunakan, tetapi jika anda ingin menambahkan fasilitas lain, anda bisa meng-edit firmware tersebut. Firmware yang disediakan ditulis dalam bahasa assembler yang bisa di kerjakan dan di compile dengan AVR Studio 4. Selain code Assemblernya disertakan juga code Hexa-nya hasil kompilasi dari AVR Studio 4 yang bisa langsung di masukkan di IC-nya.
Berikut ini adalah gambar schematic rangkaian USB to Serial converter dengan ATmega8
Line data USB yaitu D+ dan D- dihubungkan dengan PB0 dan PB1 pada ATmega8, koneksi ini tidak boleh dirubah karena pada pin ini bisa dilakukan transfer data dengan kecepatan tinggi. Agar terjadi suatu koneksi dan pen-signal-an yang bagus antara USB dan devais ini, maka ATmega8 akan diperkerjakan pada kecepatan data Low Speed yaitu dengan cara mem-pull-up resistor 1k5 Ohm pada line data D-. Untuk komponen yang lain hanya digunakan sebagai pelengkap agar system dapat beropersai dengan bagus, misalnya Xtall digunakan sebagai clock dan capacitor digunakan sebagai filter power supply.
Jika pada rangkaian ini anda menginginkan USB to RS-232 converter maka anda perlu menambahkan IC MAX 232 sebagai converter dari Level TTL ke level RS232. Jika hanya ingin digunakan untuk mengontrol LED anda bisa langsung hubungkan ke PIN I/O langsung yang di seri dengan resistor sebelumnya.
Untuk implementasi firmwarenya sebagai penerima dan coding dari USB protocolnya, akan menerima semua paket data dari USB dan kemudian disimpan di dalam internal buffer. Dimulai dari penerimaan pertama yang diperoleh dari external interrupt (INT0) adalah data untuk “sync pattern”, selama proses penerimaan hanya paket yang terakhir yang di check yaitu signal EOP (End of Packet). Setelah proses penerimaan berhasil, berikutnya firmware akan mong-coding sejumlah paket data yang diterimanya dan kemudian menganalisanya. Sekali lagi karena protocol USB ini sangat sulit anda bisa baca lagi protocol USB pada Link berikut. Proses penerimaan data pada USB secara umum bisa dilihat pada alur flowchart berikut.
Jika pada rangkaian ini anda menginginkan USB to RS-232 converter maka anda perlu menambahkan IC MAX 232 sebagai converter dari Level TTL ke level RS232. Jika hanya ingin digunakan untuk mengontrol LED anda bisa langsung hubungkan ke PIN I/O langsung yang di seri dengan resistor sebelumnya.
Untuk implementasi firmwarenya sebagai penerima dan coding dari USB protocolnya, akan menerima semua paket data dari USB dan kemudian disimpan di dalam internal buffer. Dimulai dari penerimaan pertama yang diperoleh dari external interrupt (INT0) adalah data untuk “sync pattern”, selama proses penerimaan hanya paket yang terakhir yang di check yaitu signal EOP (End of Packet). Setelah proses penerimaan berhasil, berikutnya firmware akan mong-coding sejumlah paket data yang diterimanya dan kemudian menganalisanya. Sekali lagi karena protocol USB ini sangat sulit anda bisa baca lagi protocol USB pada Link berikut. Proses penerimaan data pada USB secara umum bisa dilihat pada alur flowchart berikut.
Firmware secara umum dibagi menjadi beberapa bagian blok utama, yaitu :
Interrupt Routine
Decoding Routine (Termasuk NRZI Encoding, BitStuffing Removal/Addition).
USB Reception
USB Transmission
Requested Action Decoding
Performing Requested Custom Actions
User dapat menambah function function tertentu kedalam firmware, seperti function untuk membuat “Customer-Specific”, function untuk “Direct Pin Control” dan lain sebagainya. Untuk firmware lengkapnya bisa anda download di bagian bawah.
Untuk ATmega8 yang akan dipakai berikut support untuk 800 byte FIFO buffer, dengan baudrate 300 sampai 115200 baudrate, databit (5,6,7,8), stopbit (1,2), dan parity-nya (none, odd, even, mark, space).
Dengan menggunakan ATmega8 ini ada beberapa kemungkinan fitur yang bisa ditambahkan misalnya :
USB read/write ke dalam internal memori EEPROM yang berukuran 512 byte untuk menyimpan data misalnya data kalibrasi atau data kode produk.
Kemungkinan untuk memanfaatkan PWM dan ADC (Analog to Digital Converter) yang ada pada ATmega8.
Dengan space memori program yang masih besar, user bisa menambahkan fasilitas lain misalnya untuk USB to I2C converter atau USB to Serial PS2 dan converter – converter yang lain.
User bisa membuat / menambahkan semacam bootloader kedalam ATmega8, sehingga apabila ingin dilakukan Upgrade Firmware cukup dilakukannya lewat USB.
Pada contoh artikel dibawah ini digunakan Delphi sebagai program antarmuka di komputernya. Untuk source code dan executable Delphi ini bisa di download dibagian bawah. Bentuk program delphi executablenya seperti pada gambar dibawah
Interrupt Routine
Decoding Routine (Termasuk NRZI Encoding, BitStuffing Removal/Addition).
USB Reception
USB Transmission
Requested Action Decoding
Performing Requested Custom Actions
User dapat menambah function function tertentu kedalam firmware, seperti function untuk membuat “Customer-Specific”, function untuk “Direct Pin Control” dan lain sebagainya. Untuk firmware lengkapnya bisa anda download di bagian bawah.
Untuk ATmega8 yang akan dipakai berikut support untuk 800 byte FIFO buffer, dengan baudrate 300 sampai 115200 baudrate, databit (5,6,7,8), stopbit (1,2), dan parity-nya (none, odd, even, mark, space).
Dengan menggunakan ATmega8 ini ada beberapa kemungkinan fitur yang bisa ditambahkan misalnya :
USB read/write ke dalam internal memori EEPROM yang berukuran 512 byte untuk menyimpan data misalnya data kalibrasi atau data kode produk.
Kemungkinan untuk memanfaatkan PWM dan ADC (Analog to Digital Converter) yang ada pada ATmega8.
Dengan space memori program yang masih besar, user bisa menambahkan fasilitas lain misalnya untuk USB to I2C converter atau USB to Serial PS2 dan converter – converter yang lain.
User bisa membuat / menambahkan semacam bootloader kedalam ATmega8, sehingga apabila ingin dilakukan Upgrade Firmware cukup dilakukannya lewat USB.
Pada contoh artikel dibawah ini digunakan Delphi sebagai program antarmuka di komputernya. Untuk source code dan executable Delphi ini bisa di download dibagian bawah. Bentuk program delphi executablenya seperti pada gambar dibawah
Download Section :
Program antarmuka dengan Delphi
DLL dan Driver
Source Code Firmware ATmega8 dan file hasil kompilasinya
Resource :
http://www.usb.org
http://www.atmel.com
http://www.cesko.host.sk/
Program antarmuka dengan Delphi
DLL dan Driver
Source Code Firmware ATmega8 dan file hasil kompilasinya
Resource :
http://www.usb.org
http://www.atmel.com
http://www.cesko.host.sk/
Rabu, 01 Juni 2011
Membuat Sensor Suhu dengan LM35 dan mikrokontroler ATmega8535
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 .
Gambar diatas menunjukan bentuk dari LM35 tampak depan dan tampak bawah. 3 pin LM35 menujukan fungsi masing-masing pin diantaranya, pin 1 berfungsi sebagai sumber tegangan kerja dari LM35, pin 2 atau tengah digunakan sebagai tegangan keluaran atau Vout dengan jangkauan kerja dari 0 Volt sampai dengan 1,5 Volt dengan tegangan operasi sensor LM35 yang dapat digunakan antar 4 Volt sampai 30 Volt. Keluaran sensor ini akan naik sebesar 10 mV setiap derajad celcius sehingga diperoleh persamaan sebagai berikut :
VLM35 = Suhu* 10 mV
Secara prinsip sensor akan melakukan penginderaan pada saat perubahan suhu setiap suhu 1 ºC akan menunjukan tegangan sebesar 10 mV. Pada penempatannya LM35 dapat ditempelkan dengan perekat atau dapat pula disemen pada permukaan akan tetapi suhunya akan sedikit berkurang sekitar 0,01 ºC karena terserap pada suhu permukaan tersebut. Dengan cara seperti ini diharapkan selisih antara suhu udara dan suhu permukaan dapat dideteksi oleh sensor LM35 sama dengan suhu disekitarnya, jika suhu udara disekitarnya jauh lebih tinggi atau jauh lebih rendah dari suhu permukaan, maka LM35 berada pada suhu permukaan dan suhu udara disekitarnya .
Jarak yang jauh diperlukan penghubung yang tidak terpengaruh oleh interferensi dari luar, dengan demikian digunakan kabel selubung yang ditanahkan sehingga dapat bertindak sebagai suatu antenna penerima dan simpangan didalamnya, juga dapat bertindak sebagai perata arus yang mengkoreksi pada kasus yang sedemikian, dengan mengunakan metode bypass kapasitor dari Vin untuk ditanahkan. Berikut ini adalah karakteristik dari sensor LM35.
1. Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu 10 mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.
2. Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC seperti terlihat pada gambar 2.2.
3. Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
4. Bekerja pada tegangan 4 sampai 30 volt.
5. Memiliki arus rendah yaitu kurang dari 60 µA.
6. Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada udara diam.
7. Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.
8. Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.
Gambar berikut adalah blok sederhana untuk mengilustasikan koneksi antara modul LM35 dengan mikrokontroler AVR ATmega. Pin output LM 35 di hubungkan ke pin A0 mikrokontroler. GND keduanya harus dipastikan terhubung agar memiliki referensi tegangan yang sama. Jika keduanya menggunakan catu daya yang sama, maka hal ini tidak perlu dikhawatirkan lagi karena pasti GND-nya sudah menjadi satu.
Program membaca data sensor melalui kaki ADC0. Data hasil konversi ADC tersebut kemudian dikalkulasi untuk mendapatkan nilai suhu terukur. Selanjutnya, mikro mengirimkan data ADC dan SUHU ke port serial. Tidak sulit bukan. untuk program akan saya lanjutkan kemuadian
download datasheet lm35: http://www.ziddu.com/download/15212301/LM35.pdf.html
Langganan:
Postingan (Atom)








