Alice in Wonderland is an upcoming fantasy-adventure film directed by Tim Burton. It is an extension to the Lewis Carroll novels Alice’s Adventures in Wonderland and Through the Looking-Glass. The film will use a [...]

Jennifer’s Body is a 2009 black comedy horror film written by Diablo Cody and directed by Karyn Kusama. The film stars Megan Fox, Amanda Seyfried, Adam Brody and Johnny Simmons and portrays a newly [...]

Sherlock Holmes is a 2009 film adaptation of Arthur Conan Doyle’s fictional character of the same name. The film was directed by Guy Ritchie and produced by Joel Silver, Lionel Wigram, Susan [...]

The Imaginarium of Doctor Parnassus is a 2009 fantasy film directed by Terry Gilliam and written by Gilliam and Charles McKeown. The film follows the leader of a travelling theatre troupe who, having made a deal [...]

Alice in Wonderland Movie Poster Megan Fox in Jennifer’s Body Sherlock Holmes Nominated for Golden Globe The Imaginarium of Doctor Parnassus

Mengetahui Tentang Pemrograman Mikrokontroler

00.59 | Electronica Lesson


SmartAVR RRobotics ver 4



Konsep Sensor Robotika

* Sensor Sharp GP2D12

GP12D12 dan keluarganya merupakan sensor deteksi jarak Infra Red pada aplikasi robot dengan rentang 10-80cm, selain itu juga ukurannya yang kecil menghemat tempat dan daya Karena outputnya analog, maka sangat tepat jika dipasangkan dengan mikrokontroler AVR. Output sensor ini tidak linear, jadi Anda harus membuat look up table pada program untuk memperoleh hasil bacaan yang linear.


Gambar 1 Sharp GP2D12 dan kabel JST 3 pin


Percobaan 1. Membaca data Sharp GP2D12
Langkah-langkahnya;
1. Siapkan SmartAVR Robotics Ver 4.0, dan hubungkan dengan kabel AVR ISP Programmer ke PC. Hubungkan kabel serial dari mikrokontroler ke port serial PC
2. Hubungkan sensor Sharp GP2D12 di port A.0, motor DC 5-12V di output L298D pin OUT1 dan OUT2.
3. Buat program di bawah ini :
SharpGP2D12.c:

// Percobaan baca data sensor GP2D12
#include
#include
#include
#define ADC_VREF_TYPE 0x60
flash unsigned char string1[]={"data adc: %d; "};
// Baca 8 bit terpenting
unsigned char read_adc(unsigned char adc_input) {
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Mulai konversi ADC
ADCSRA|=0x40;
// Tunggu konversi ADC selesai
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void main(void) {
// Inisialisasi Port B
PORTB=0xFF;
DDRB=0xFF;
// 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=0x19;
// ADC initialization
// ADC Clock frequency: 31,250 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: Free Running
// Menggunakan 8 bit data
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA7;
SFIOR&=0x1F;
while (1)
{
PORTB=read_adc(0); // Baca data sensor di PA.0
printf(string1,PORTB);
if (PORTB>100)
{
...; //Putar motor DC ke kanan
}
else
{
...; //Putar motor DC ke kiri
}
};
}
4. Kompilasi dan jalankan, berikan halangan pada sensor jarak tersebut, lihat perubahan arah gerak motor DC. Buat grafik hasi pengukuran sensor tersebut.
Percobaan 2. Pengatur putaran Motor DC dengan PWM
Langkah-langkahnya;
5. Siapkan SmartAVR Robotics, dan hubungkan dengan kabel AVR ISP Programmer ke PC.
6. Hubungkan motor DC ke keluaran OUT3 dan OUT4 pada IC L298.
7. Buat program di bawah ini :

PWM.c:
// Percoban kontrol kecepatan motor dengan PWM
#include
#include
bit i;
void main(void) {
unsigned int temp;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x30; //PD4 dan PD5 sebagai output
// Inisialisasi Timer/Counter 1
// Clock source: System Clock/8
// Clock value: 500 kHz
// Mode: Phase correct PWM, TOP value = ICR1 value
//Jika TCCR1A=0x82 (Non-inverted PWM mode) maka:
// OC1A output: Clear OC1A on compare match when up-counting.
// Set OC1A on compare match when down-counting.
//Jika TCCR1A=0x22 (Non-inverted PWM mode) maka:
// OC1B output: Clear OC1B on compare match when up-counting.
// Set OC1B on compare match when down-counting.
// OC1A output: Disconected (Normal)
TCCR1A=0x82;
TCCR1B=0x12;
TCNT1=0x0000;
ICR1H=0xFF; //Resolusi phase correct PWM 16-bit
ICR1L=0xFF;
OCR1A=0x0000;
OCR1B=0x0000;
i=0;
temp=0x0FF0; //Nilai awal PWM
while (1)
{
if (PINC.0==0) //Jika tombol yang terhubung dengan PC0 ditekan,
{ // maka motor semakin lambat
delay_ms(100); // dan berputar sampai berhenti
temp-=0xFF;
if (temp==0xFF01) temp=0x0000;
}
else //Jika tombol yang terhubung dengan PC0 tidak ditekan,
{ // maka motor semakin cepat
delay_ms(100); // berputar sampai berputar terus
temp+=0xFF;
if (temp==0x00FE) temp=0xFFFF;
}
OCR1A=temp;
OCR1B=temp;
}
8. Kompilasi dan jalankan program, tekan saklar pada Port C.0 dan lihat efeknya pada putaran motor DC.

Share this post:

Digg it StumbleUpon del.icio.us Google Yahoo! reddit

0 komentar:

Posting Komentar

 
Copyright 2010 Rolly Blog™