Cara Membuat Sinyal PWM ( PULSE WIDTH MODULATION ) Dengan Frequency dan Duty Cycle Tertentu BASCOM AVR
Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah sinyal PWM dengan frequency dan duty cycle yang bisa diatur sesuai keinginan. pada contoh kali ini saya menggunakan Frequency 40 Khz dengan Duty Cycle bisa diatur menggunakan potensiometer. fungsi dari alat ini yaitu untuk push pull MOSFET buck atau boost converter, karena rangkaian boost atau buck membutuhkan frequency PWM dan Duty Cycle yang bisa diatur dan sesuai perhitungan. yang perlu diperhatikan yaitu Crystal yang digunakan adalah 16 Mhz agar didapat frequency yang bagus. untuk lebih jelasnya berikut adalah program dan skemanya.
Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1
'untuk menghasilkan frequency 40 Khz
Const Inisial = &HFFB0
Dim Dataadc As Word
On Timer1 Timer1_isr
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Enable Timer1
Enable Interrupts
Do
Loop
Timer1_isr:
Tcnt1l = Low(inisial)
Tcnt1h = High(inisial)
Dataadc = Getadc(4)
'output di PORTD.4 = OC1B
Pwm1b = Dataadc
Return
d. Cara Mengatur Frequency
1. Pertama buka aplikasi KAVRCalc lalu set seperti gambar dibawah ini
2. Untuk menghasilkan Frequency diatas atau dibawah 40 Khz bisa dengan merubah nilai VALUE
3. Setelah dirubah maka pada TCNT Base akan tertera suatu nilai
4. Copy nilai tersebut dan masukkan kedalam program jangan lupa harus diawali &H untuk heksa
5. Atur frequency sesuai keinginan
6. Untuk mengatur duty cycle bisa dengan memberikan nilai langsung seperti berikut
PWM1B = 100
7. Jika ingin menggunakan POTENSIOMETER maka gunakan program berikut
PWM1B = dataadc
Membuat Mesin Antrian Dengan Mikrokontroller dan Bascom AVR
Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yaitu mesin antrian dengan menggunakan mikrokontroller dan bahasa bascom avr. Prinsip kerja alat ini sangatlah sederhana yaitu terdapat enam buah tombol untuk visitor yang mana akan disimpan didalam mikrokontroller dan upcounter aktif, terdapat 6 buah pilihan pelayanan yang visitor bisa pilih yaitu pelayanan a, b, c, d, e, f. misal visitor menekan tombol pada pelayanan a maka akan tertulis pada lcd 16x2 yaitu a1, begitu juga yang lainnya. kemudian terdapat 6 buah tombol pemanggilan yang terdapat pada CS layanan, jika CS pada layanan a menekan maka akan mengeluarkan nilai a1 tersebut pada Hyperterminal atau SERIAL UART, jika CS layanan a menekan lagi padahal tidak ada visitor lagi maka yang dikirimkan ke Hyperterminal adalah kosong. begitu juga dengan yang lainnya. berikut adalah skema dan programnya.
Dim A As Integer , B As Integer , C As Integer , D As Integer , E As Integer , F As Integer
A = 0
B = 0
C = 0
D = 0
E = 0
F = 0
Dim Cs1 As Integer , Cs2 As Integer , Cs3 As Integer , Cs4 As Integer , Cs5 As Integer , Cs6 As Integer
Dim Vs1 As Integer , Vs2 As Integer , Vs3 As Integer , Vs4 As Integer , Vs5 As Integer , Vs6 As Integer
Jadi pada saat ditekan tombol visitor pada layar lcd akan upcounter, misal layanan a dan b ditekan, maka akan tertampil a1, b1, c0, d0, e0, f0. jika tombol CS layanan a ditekan maka akan tampil pada Hyperterminal atau serial UART interface adalah a0, a1. jika ditekan lagi akan kosong. jika visitor pada layanan a ada 5 orang maka saat tombol CS layanan a ditekan, akan menampilkan a2, a3, a4, a5. meneruskan dari sebelumnya. begitu juga yang lainnya.
Membuat Radar Deteksi Jarak Benda Dengan Arduino dan Sensor Ultrasonik
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk mendeteksi jarak benda, sistemnya seperti radar yang bergerak memantau kondisi benda. jadi jika ada benda yang mendekat maka akan membunyikan buzzer dan menghidupkan led. alat ini terdiri dari sensor ultrasonik dan servo. mikroprosesor yang dipakai yaitu Arduino Mega. untuk lebih jelasnya berikut skema dan programnya.
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
if (distance < 10) { // This is where the LED On/Off happens
digitalWrite(buzzer, HIGH);
digitalWrite(ledx, LOW);
}
else {
digitalWrite(buzzer, LOW);
digitalWrite(ledx, HIGH);
}
MEMBUAT PASIEN MONITOR DENGAN ARDUINO LOADCELL HX711 AMPLIFIER, HEARTBEAT PULSE SENSOR, TEMPERATURE SENSOR DS18B20
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk pasien monitor, alat ini dikhususkan untuk bayi jadi detak jantung, suhu tubuh dan beratnya harus sangat diperhatikan, maka dari itu sensor yang digunakan juga harus yang terbilang akurat, sensor yang dipakai yaitu loadcell 5Kg, pulse sensor, dan sensor suhu DS18B20. jika BPM lebih dari 150 maka buzzer akan berbunyi, dan juga jika ingin memulai counter BPM, bisa menekan tombol PLAY atau push button. untuk lebih jelasnya berikut skema dan programnya.
a. ARDUINO MEGA
b.PULSE SENSOR / HEART BEAT SENSOR
c.Loadcell + HX711
c. Sensor Suhu DS18B20 water proof
d. Program ARDUINO IDE
//library HX711 bisa di download di link berikut
//https://github.com/bogde/HX711
Serial.println("Before setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
// by the SCALE parameter (not set yet)
scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare(); // reset the scale to 0
Serial.println("After setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// "count remain" gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let's zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
MEMBUAT ALAT DENGAN KENDALI RFID READER ID-12 dan ACCELEROMETER ( CV AVR ) CODE VISION AVR
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk mengendalikan sepeda motor dengan menggunakan kartu atau tag card RFID. reader yang digunakan pada alat ini yaitu ID-12 atau bisa juga dengan RDM630 / 6300 sama saja. output pada alat ini seharusnya adalah relay namun simulasi kali ini hanya menggunakan led. sensor accelerometer yang digunakan adalah GY 61 sebagai detektor maling, jadi jika motor berubah kemiringannya, maka buzzer akan ON otomatis. untuk lebih jelasnya berikut adalah skema dan programnya.
Project :
Version :
Date : 6/23/2016
Author : NeVaDa
Company : HP InfoTech s.r.l.
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
// Standard Input/Output functions
#include <stdio.h>
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int 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);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
Mengakses RFID ID-12 atau RDM6300 / RDM630 Menggunakan CV AVR ( Code Vision AVR )
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengekses RFID RDM630 / RDM6300 atau RFID ID-12, sebenarnya keduanya hampir sama output datanya maka dari itu pakai program ini bisa untuk kedua reader tersebut, yang perlu diketahui yaitu output dari reader ID-12 sebelum di filter adalah misal |||F6000657A780## maka dari itu harus dilakukan filter, jadi data dimulai dari pointer nomer 3 sampai 12. Untuk RFID RDM630 atau RDM6300 sama saja tergantung output yang didapat dan dilakukan filterisasi.untuk lebih jelasnya berikut adalah skema dan programnya.
Project :
Version :
Date : 6/23/2016
Author : NeVaDa
Company : HP InfoTech s.r.l.
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
// Standard Input/Output functions
#include <stdio.h>
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int 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);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
unsigned char pass[13] = "6F0085C0173";
unsigned char code[13];
int val = 0;
int bytesread;
void main(void)
{
// Declare your local variables here
MEMBUAT RUNNING LED /LED BERJALAN DENGAN PENGATUR KECEPATAN
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat RUNNING LED atau LED BERJALAN menggunakan rangkaian analog. IC yang dipakai adalah IC yang banyak dijual dipasaran, jadi sangatlah mudah untuk membuatnya, kecepatan RUNNING atau berjalannya led bisa diatur menggunakan potensiometer 200K. aplikasi dari alat ini yaitu untuk hiasan toko atau rumah saat hari raya atau bisa juga untuk hiasan dinding. untuk lebih jelasnya berikut adalah skema rangkaiannya. Untuk simulasi PROTEUS dari rangkaian ini bisa di download di LINK berikut.
*Ket : Ganti Resistor 200K dengan potensiometer 200k atau 500k
b. Cara Penggunaan Alat
Untuk menggunakan alat ini pertama yaitu berikan power supply 5v ke rangkaian, kemudian led akan berjalan searah, untuk mengatur kecepatannya, putar potensiometer perlahan dan lihat apa yang terjadi pada gerakan led. semakin diputar maka akan semakin cepat gerakannya, begitu sebaliknya, jika tombol ditekan maka gerakan led akan berhenti.