Analog to digital converter merupakan rangkaian yang berfungsi untuk menerjemahkan keadaan secara fisik menjadi sebuah sinyal listrik yang datanya dapat diolah untuk menjadi keluaran yang lain. Aplikasi dari ADC ini dapat digunakan untuk membuat voltmeter. Dalam pembuatannya, ADC melibatkan Atmega untuk memproses konversi tersebut.
Dalam membuat ADC, atmega hanya mampu menerima sinyal maksimum sebesar 5V. jika terjadi kelebihan voltase masuk, maka atmega akan rusak dan terbakar. jadi, bagaimana kalau kita ingin membuat voltmeter yang dapat mengukur voltase sampai lebih dari 5V?
Di sini, kita memerlukan rangkaian tambahan agar voltase masukan tetap 5V. rangkaian ini hanyalah terdiri dari 2 resistor yang di susun secara paralel. Untuk menentukan resistoryang akan digunakan, kita bisa menggunakan peramaan ini:
Setelah menambahkan rangkaian tersebut, maka listrik yang di berikan aman untuk atmega sesuai dengan ambang batas yang mampu di tahan oleh resistor. Sehingga, rangkaian ini menjadi seperti gambar di bawah ini.
Kamis, 18 Mei 2017
Simulasi Motor Driver
Driver motor merupakan sebuah rangkaian yang biasa digunakan untuk mengendalikan motor agar dapat bergerak sesuai dengan yang kita inginkan. Driver ini biasanya digunakan pada motor DC. Tanpa menggunakan driver motor ini sebenarnya kita dapat dengan mudah merubah arah putaran motor DC, yaitu dengan merubah polaritas catu daya sehingga aliran arusnya berubah arah. Dengan demikian, kita bisa mendapat motor dengan putaran clockwise dan dapat pula berputar secara anti-clockwise. Namun tentunya hal ini tidaklah efektif saat digunakan dalam instrument otomatis seperti robot. Perubahan arah puataran tentunya harus dilakukan secara otomatis sesuai dengan keadaan yang telah ditentukan sebelumnya. Dengan demikian, robot akan bekerja dengan efektif dan sesuai dengan keinginan kita.
Untuk membuat driver motor ini, biasanya digunakan rangkaian H-Bridge. Rangkaian ini sukup sederhana dengan memanfaatkan 4 transistor saja. kemudian H-Bridge ini dihubungkan pada atmega untuk selanjutnya mendapatkan perintah sesuai dengan keadaan yang diinginkan. Rangkaian H-Bridge sederhana tampak seperti gambar di bawah ini.
Untuk mensimulasikan pergeraknnya, kita akan menggunakan CvAVR seperti biasa. Coding yang dimasukkan pada CvAVR adalah sebagai berikut:
// 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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 10.800 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0D;
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: Timer2 Stopped
// Mode: Normal top=0xFF
// 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
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
PORTD.0 = 1;
PORTD.3 = 1;
OCR1B = 128;
}
}
Video di bawah ini adalah hasil dari simulasi driver motor.
Untuk membuat driver motor ini, biasanya digunakan rangkaian H-Bridge. Rangkaian ini sukup sederhana dengan memanfaatkan 4 transistor saja. kemudian H-Bridge ini dihubungkan pada atmega untuk selanjutnya mendapatkan perintah sesuai dengan keadaan yang diinginkan. Rangkaian H-Bridge sederhana tampak seperti gambar di bawah ini.
Untuk mensimulasikan pergeraknnya, kita akan menggunakan CvAVR seperti biasa. Coding yang dimasukkan pada CvAVR adalah sebagai berikut:
========================================================================
#include <mega16.h>// 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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 10.800 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0D;
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: Timer2 Stopped
// Mode: Normal top=0xFF
// 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
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
PORTD.0 = 1;
PORTD.3 = 1;
OCR1B = 128;
}
}
========================================================================
Video di bawah ini adalah hasil dari simulasi driver motor.
Jumat, 07 April 2017
Desain 3 Dimensi dengan SketchUp!
Gambar teknik merupakan sebuah komponen penting dalam engineering. Selain merupakan alat
komunikasi antara engineer, gambar
teknik juga merupakan sebuah sketsa awal dalam membuat sebuah produk engineering. Jauh sebelum komputer
ditemukan, gambar teknik sudah sering digunakan. Tanpa program dan bantuan
komputasi digital, mereka membuat gambar teknik secara presis dengan
menggunakan alat ukur analog sederhana seperti penggaris dan busur diatas
sebuah kertas dengan menggunakan tinta. Gambar 3 dimensi benar-benar dibuat
dengan menggunakan gambar persfektif isometrik lengkap dengan skala yang
diperlukan.
Sekarang,
zaman sudah maju. Banyak sekali software
untuk menggambar teknik, contohnya Sketch Up, Autodesk Inventor, AutoCAD,
Solidworks dan masih banyak lagi. Seluruh software
tersebut sudah memberikan fitur yang sangat membantu untuk melakukan sebuah
desain. Mulai dari sketsa 2 dimensi, proyeksi 3 dimensi, animasi pergerakan,
jenis material, estimasi berat sampai langsung membuat cetak biru dari produk engineering tersebut. Nah, sebagai anak teknik, rasanya
miris kalau kita tidak tahu minimal dasar dari software diatas. Maka dari itu, yuk kita kenal sedikit.
Disini,
kita mau bikin kunci pas atau wrench
dengan ukuran 22mm dan 20mm. Produk asli yang akan kita tiru adalah seperti di
bawah ini.
Kita buat bentuk 3 dimensinya dengan menggunakan Sketch Up. Berikut
adalah langkah-langkahnya:
1.
Buat garis sepanjang 150 mm
2.
Buat lingkaran di kedua ujung masing-masing
dengan radius 22,5 mm dan 20 mm
3.
Pada garis tengah, buat garis sejajar dengan
ordinat Y +8 mm dan ordinat Y -8
4.
Dari tengah lingkaran dengan radius 22,5 mm,
buat garis lurus dengan panjang 22 mm
5.
Buat juga garis sejajar dengan garis tengah
dengan ordinat Y +11 mm dan Y -11 mm
6.
Buang bagian yang dibatasi oleh 3 garis lurus
dan sebuah juring
7.
Lakukan hal yang sama pada lingkaran dengan
radius 20 mm namun garis lurus yang digunakan adalah 10mm
8.
Push bagian lingkaran modifikasi sejauh 4 mm
kemudian pull pada sisi lainnya sejauh 4 mm
9.
Terakhir, push bagian tengah (batang) sejauh 2
mm dan pull sejauh 2 mm
Untuk lebih jelasnya, cek video tutorial di bawah ini.
Selasa, 04 April 2017
Menampilkan Simulasi Tulisan Pada LCD dengan Proteus 8 dan Code Vision AVR
LCD, apa sih itu? LCD merupakan komponen yang berfungsi
untuk menampilkan huruf dan angka. Manfaat dari LCD ini sangat beragam, mulai
dari sebatas dekorasi, penyaji data atau informasi, sampai membantu dalam
memilih mode dan aksi dari suatu alat listrik. Dengan kata lain, LCD adalah
alat komunikasi manusia dengan robot secara tulisan.
Untuk membuat
tulisan dalam LCD, kita perlu menggunakan beberapa perintah. Untuk itu, hari
ini, mari kita simulasikan LCD dengan program kesayangan kita, Proteus 8 dan
Code Vision AVR.
Untuk memulainya, copy script berikut ke Code Vision AVR
=========================================================================
#include <mega32.h>
// Alphanumeric LCD functions
#include <alcd.h>
// 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=Out Func5=Out Func4=Out Func3=Out Func2=Out
Func1=Out Func0=Out
// State7=T State6=1 State5=1 State4=1 State3=1 State2=1
State1=1 State0=1
PORTB=0x7F;
DDRB=0x7F;
// 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=P State2=P
State1=P State0=P
PORTC=0x0F;
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=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 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: Timer2 Stopped
// Mode: Normal top=0xFF
// 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
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD
menu:
// RS - PORTB Bit 0
// RD - PORTB Bit 1
// EN - PORTB Bit 2
// D4 - PORTB Bit 3
// D5 - PORTB Bit 4
// D6 - PORTB Bit 5
// D7 - PORTB Bit 6
// Characters/line: 16
lcd_init(16);
while (1)
{
if (PINC.0==0){
lcd_gotoxy(4,0);
lcd_putsf("CURRENCY");
lcd_gotoxy(0,1);
lcd_putsf("1.RUPIAH 2.DOLAR");}
if (PINC.0==0){
lcd_clear();
lcd_gotoxy(3,0);
lcd_putsf("10k RUPIAH");
lcd_gotoxy(1,1);
lcd_putsf("0,75USD
1.BACK");}
else
if (PINC.2==0){
lcd_clear();
lcd_gotoxy(4,0);
lcd_putsf("CURRENCY");
lcd_gotoxy(0,1);
lcd_putsf("1.RUPIAH 2.DOLAR");}
else
if(PINC.1==0){
lcd_clear();
lcd_gotoxy(2,0);
lcd_putsf("1 US DOLAR");
lcd_gotoxy(0,1);
lcd_putsf("13321Rp 1.BACK");}
else
if(PINC.3==0){
lcd_clear();
lcd_gotoxy(4,0);
lcd_putsf("CURRENCY");
lcd_gotoxy(0,1);
lcd_putsf("1.RUPIAH 2.DOLAR");}
}
}
=========================================================================
Setelah berhasil di build tanpa adanya eror, mari kita buka
Proteus 8 dan mulai merangkai.
Komponen yang digunakan adalah ATMega 32, LCD 2 x 16,
POT-HG, Source +5V dan Ground. Setelah komponen itu di dapat, rangkailah sesuai
dengan gambar ini.
Nah, setelah codingan dari Code Vision AVR di unggah ke AT
Mega 32, maka akan tampil seperti video di bawah ini.
Langganan:
Postingan (Atom)
