Apa kabar semua ?? Pasti semuanya baik-baik , Amin ??
OK , kawan-kawan , saya akan menyampaikan sebuah materi , sebuah generator gelombang atau pembangkit gelombang dapat kita atur frekwensinya .
OK langsung aja , tak usah berlama-lama !!
Dibawah ini , ada video tentang percobaan kali ini , mudahan membantu kawan-kawan !!!
Generator Gelombang dengan Adjustable Frekwensi
kita dapat mensimulasikan rangkaian ini pada aplikasi proteus .
Terimah kasih kawan-kawan yang telah melihatnya !!!
Mudahan saya dapat terus membagikan ilmu saya kepada kawan-kawan.
OK , kawan-kawan , saya akan menyampaikan sebuah materi , sebuah generator gelombang atau pembangkit gelombang dapat kita atur frekwensinya .
OK langsung aja , tak usah berlama-lama !!
Dibawah ini , ada video tentang percobaan kali ini , mudahan membantu kawan-kawan !!!
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 frekwensi dapat berubah-ubah. perubahan frekuensi akan diatur oleh potensiometer yang terhubung pada pin A0. Program pada percobaan kali ini akan menggunakan konfigurasi register untuk mengeluarkan sinyal gelombang pada pin PWM.
- Buatlah rangkaian seperti dibawah ini !!!
kita dapat mensimulasikan rangkaian ini pada aplikasi proteus .
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);
}
}
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);
}
}
Terimah kasih kawan-kawan yang telah melihatnya !!!
Mudahan saya dapat terus membagikan ilmu saya kepada kawan-kawan.