Sabtu, 30 November 2013

TIMER SEBAGAI GENERATOR GELOMBANG

Pada entri kali ini saya akan sedikit berbagai pengetahuan mengenai fungsi timer selain menunda jeda, tujuan saya membuata entri ini adalah :
1. memanfaatkan timer sebagai generator gelombang.
2. memanfaatkan timer sebagai generator gelombang dengan adjustable duty cycle.
3. memanfaatkan timer sebagai generator gelombang dengan adjustable frekuensi


ini gan peralatan yang harus di miliki :
1.   Komputer
2.   Arduino Uno
3.   Project board
4.   Kabel jumper
5.   LCD
6.   Potensiometer 10K
7.   LED
8.   Resistor 330 Ohm
9.   Transistor 2N2222
10. Resistor 2K2

Mari kita masuk percobaan I.


PERCOBAAN I
GENERATOR GELOMBANG DENGAN ADJUSTABLE DUTYCYLE

  Pada percobaan kali ini akan dibuat program untuk mengeluarkan gelombang kotak pada pin 9 (OC1A). Gelombang yang akan dikeluarkan pada pin 9 adalah gelombang berbentuk duty cycle dapat diataur lebar nya. Lebar duty cycle akan di atur lebarnya. Lebar duty cycle akan diatur oleh potensiometer yang terhubung pada pin A0. Pada percobaan kali ini akan digunakan fungsi analogWrite yang berfungsi untuk mengeluarkan sinyal gelombang pin pada PWM.

a. Buat Rangkaian seperti gambar dibawah

b. tulis program seperti sintak di bawah
int  val = 0;
void  setup() {
Serial.begin(9600);
pinMode(9,  OUTPUT);
}
void  loop() {
val  =  analogRead(A0);
analogWrite(9,  val/4);
Serial.print("PWM  Value  =  ");
Serial.println(val,DEC);
delay(500);
}

c. Hasil nya




jadi kita dapat mengatur duty cycle dengan mengatur potensiometer nya


'
PERCOBAAN II
GENERATOR GELOMBANG DENGAN AJDUSTABLE FREKUENSI

  
Pada percobaan kali ini gelombang yang akan dikeluarkan pada pin 9 adalah gelombang berbentuk kotak dengan duty cycle yang besarnya tetap yaitu 50%, namun besarnya frekuensi dapat berubah-ubah. Perubahan frekuensi akan diatur oleh pentesiometer yang terhubung pada pin A0. Program pada percobaan kali ini akan menggunakan konfigurasi register untuk mengeluarkan sinyal gelombang pada pin PWM.

a. Gambar Rangkaian seperti gambar dibawah :



b. Tulis program seperti sintaks dibawah :
int  setCycles;

void  set(int  cycles)  {

char  oldSREG;
int  dutyCycle  =  cycles  * 0.5;
if  (dutyCycle  <  6) {
dutyCycle  =  6;
}
if  (dutyCycle  >  1015) {
dutyCycle  =  1015;
}
if  (cycles  <  50)  {
cycles  =  50;
}
oldSREG  =  SREG;
cli();
ICR1  =  cycles;
OCR1A  =  dutyCycle;
SREG  =  oldSREG;
}

void  setup() {

TCCR1A  =  0;
TCCR1B  =  _BV(WGM13);
TCCR1B  &=  ~(_BV(CS10)  |  _BV(CS11)  |  _BV(CS12));
TCCR1B  |=  _BV(CS10);
DDRB  |=  _BV(PORTB1);
TCCR1A  |=  _BV(COM1A1);
}

void  loop() {

int  temp_cycles  = analogRead(A0);
if  (temp_cycles  != setCycles ) {
setCycles  =  temp_cycles;
set(setCycles);
}
}


c. Hasil






jadi kita dapat mengatur frekuensi untuk gelombang duty cycle nya dengan menggunakan potensiometer


PERCOBAAN III
PWM DENGAN ADJUSTABLE FREKUENSI DAN DUTY CYCLE (7 KHz sampai 300KHz)

  Pada percobaan kali ini  gelombang yang akan dikeluarkan pada pin 9 adalah gelombang berbentuk kotak dengan duty cycle dan frekuensi yang dapat beruba-ubah. Perubahaan frekuensi akan diatur oleh potensiometer yang terhubung pada pin A1. 

a. Gambar Rangkaian seperti gambar dibawah :



b. tulis program sepereti sintaks dbawah :

int  setCycles;
int  setDuty;

void  set(int  cycles,  float  duty)  {
char  oldSREG;
int  dutyCycle  =  cycles  *  duty;
if  (dutyCycle  <  6) {
dutyCycle  =  6;
}
if  (dutyCycle  >  1015) {
dutyCycle  =  1015;
}
if  (cycles  <  50)  {
cycles  =  50;
}
oldSREG  =  SREG;
cli();
ICR1  =  cycles;
OCR1A  =  dutyCycle;
SREG  =  oldSREG;
}

void  setup() {
TCCR1A  =  0;
TCCR1B  =  _BV(WGM13);
TCCR1B  &=  ~(_BV(CS10)  |  _BV(CS11)  |  _BV(CS12));
TCCR1B  |=  _BV(CS10);
DDRB  |=  _BV(PORTB1);
TCCR1A  |=  _BV(COM1A1);
}

void  loop() {
int  temp_cycles  = analogRead(A0);
int  temp_duty  =  analogRead(A1);
if  (temp_cycles  != setCycles || temp_duty != setDuty) {
setCycles  =  temp_cycles;
setDuty  =  temp_duty;
set(setCycles,  setDuty  /  1024.0);
}
}


c. Hasil














Tidak ada komentar:

Posting Komentar