Kamis, 18 Mei 2017

membaca ADC dengan input tegangan DC 0-100 di tampikan di LCD


Analog To Digital Converter (ADC) adalah pengubah input analog menjadi kode – kode digital. ADC banyak digunakan sebagai pengatur proses industri, komunikasi digital dan rangkaian pengukuran/pengujian. Umumnya ADC digunakan sebagai perantara antara sensor yang kebanyakan analog dengan sistim komputer seperti sensor suhu, cahaya, tekanan/berat, aliran dan sebagainya kemudian diukur dengan menggunakan sistim digital (komputer).
ADC (Analog to Digital Converter) memiliki 2 karakter prinsip, yaitu kecepatan sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog dikonversikan ke bentuk sinyal digital pada selang waktu tertentu. Kecepatan sampling biasanya dinyatakan dalam sample per second (SPS)

Nah kali ini saya akan mengerjakan sebuah tugas ADC dengan cvavr. Membuat rangkaian yang dapat menentukan hasil pembacaan ADC dengan input tegangan DC 0-100 volt dengan output diatur oleh potensiometer dan ditampilkan di LCD.

Setelah rangkaian dalam proteus selesai, buka cvavr lalu coding. Berikut program yang saya tulis:

#include <mega16.h>
#include <stdio.h>
#include <delay.h>

// Alphanumeric LCD functions
#include <alcd.h>

#define ADC_VREF_TYPE 0x00

// 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 int hasiladc;
unsigned char lcd[16];
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=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 Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// 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 - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);

while (1)
      {
      // Place your code here
        hasiladc=read_adc(0);
       lcd_gotoxy(0,0);
       sprintf(lcd,"Hasil ADC: %d",hasiladc);
       lcd_puts(lcd);
       delay_ms(10);
       lcd_clear();
      }

}



Kamis, 11 Mei 2017

Mendesign Kunci Pas Dengan SketchUp

Sekarang, zaman sudah maju. Banyak sekali software untuk menggambar teknik, contohnya Sketch Up, Autodesk Inventor, AutoCAD, Solidworks dan masih banyak lagi
SketchUp merupakan aplikasi yang digunakan untuk mendesain objek 3D. Dalam dunia professional, aplikasi ini banyak digunakan dibidang teknik sipil, arsitektur, pembuatan game dll.  Perbedaan SketchUp dibanding software-software 3D lain adalah lebih mudah digunakan. SketchUp didesain untuk siapapun pengguna baik profesional maupun pemula, karena teknik yang digunakan tidak rumit dan mudah dipelajari.
Nah kali ini saya akan memberi contoh mendesain kunci pas seperti gambar dibawah ini, menggunakan aplikasi SketchUp.


Kita buat bentuk 3 dimensinya dengan menggunakan Sketch Up. Berikut adalah langkah-langkahnya:
1.       Buat garis sepanjang 200 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 +10 mm dan ordinat Y -10
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 +13 mm dan Y -13 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 4mm

9.       Terakhir, push bagian tengah (batang) sejauh 2 mm dan pull sejauh 2 mm



Liquid Crystal Display (LCD) 2x16

LCD adalah komponen yang dapat menampilkan huruf, angka, atau symbol lainya. LCD kita butuhkan untuk menampilkan nilai data yang akan kita proses. LCD yang kita pakai berukuran 2x16 (2 baris 16 kolom).

Berikut adalah rangkaian  LCD yang saya buat:



1. Komponen yang digunakan adalah atmega32, LCD 2x16, trimpot, button, terminal mode power dan ground, serta generator DC.

2. Setelah rangkaian tersusun, kemudian masuk ke software cvavr. 
3. Membuat codingan menyalakan LCD dan menampilkan huruf :

#include <mega32.h>
#include <delay.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=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=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);
    lcd_gotoxy(5,0);
    lcd_putsf("BM STORE");
    lcd_gotoxy(0,1);
    lcd_putsf("1.adidas");
    lcd_gotoxy(9,1);
    lcd_putsf("2.nike");
while (1)
      {
      // Place your code here
       DDRC.0=0;
       DDRC.1=0;
       if (PINC.0==1)
      {
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_putsf("1.Habis");
      lcd_gotoxy(0,1);
      lcd_putsf("2.back");
      }
      else if (PINC.1==1)
      {
      lcd_clear();
      lcd_gotoxy(0,0);
      lcd_putsf("1.Ga jual");
      lcd_gotoxy(0,1);
      lcd_putsf("2.back");
      }}
}

Senin, 03 April 2017

SIMULASI PROTEUS LED

Kali ini kita membagikan hasil pembelajaran dari lab Mekatronika bertema tentang LED menggunakan software proteus. Tugas yang saya peroleh tentang membuat rangkaian sistem minimum di proteus dengan 3 push button dan 8 buah LED. Dengan syarat :
-ketika button 1 ditekan, LED menyala dengan urutan (1,2,3,4,5,6,7,8)
-ketika button 2 ditekan, LED menyala dengan urutan (8,7,6,5,4,3,2,1)
-ketika button 3 ditekan, LED menyala dengan urutan(4,5),(3,6),(2,7),(1,8)
Sebelum mengerjakan tugas tersebut, software yang dibutuhkan adalah proteus dan cvavr.
Buka proteus, klik ikon schematic capture
Kemudian klik component mode, klik icon P,Kemudian tuliskan komponen yang dibutuhkan (Atmega32,Button,LED (Bisa warna terserah anda)) dan cari icon ground.
3 Rangkai Menjadi seperti gambar di bawah ini
4 Kemudian buka aplikasi CVAVR, klik new, kemudian pilih project, yes, AT90, lalu klik program, lalu generate save exit. Jangan lupa simpan gambar sebanyak 3X
5 Dan kita buat codingan
#include <mega32.h>
#include <delay.h>
void main(void)
{
PORTA=0x00; DDRA=0x00;
PORTB=0x00; DDRB=0x00;
PORTC=0xFF; DDRC=0x00;
PORTD=0x00; DDRD=0xFF;
TCCR0=0x00; TCNT0=0x00;
OCR0=0x00; TCCR1A=0x00;
TCCR1B=0x00; TCNT1H=0x00;
TCNT1L=0x00; ICR1H=0x00;
ICR1L=0x00; OCR1AH=0x00;
OCR1AL=0x00; OCR1BH=0x00;
OCR1BL=0x00; ASSR=0x00;
TCCR2=0x00; TCNT2=0x00;
OCR2=0x00; MCUCR=0x00;
MCUCSR=0x00; TIMSK=0x00;
UCSRB=0x00; ACSR=0x80;
SFIOR=0x00; ADCSRA=0x00;
SPCR=0x00; TWCR=0x00;
while (1) {
if (PINC.0==0)
{PORTD=0b00000001; delay_ms(15);
PORTD=0b00000010; delay_ms(15);
PORTD=0b00000100; delay_ms(15);
PORTD=0b00001000; delay_ms(15);
PORTD=0b00010000; delay_ms(15);
PORTD=0b00100000; delay_ms(15);
PORTD=0b01000000; delay_ms(15);
PORTD=0b10000000; delay_ms(15);
} else {
if (PINC.1==0)
{PORTD=0b10000000; delay_ms(15);
PORTD=0b01000000; delay_ms(15);
PORTD=0b00100000; delay_ms(15);
PORTD=0b00010000; delay_ms(15);
PORTD=0b00001000; delay_ms(15);
PORTD=0b00000100; delay_ms(15);
PORTD=0b00000010; delay_ms(15);
PORTD=0b00000001; delay_ms(15);
} else {
if (PINC.2==0)
{PORTD=0b00011000; delay_ms(15);
PORTD=0b00100100; delay_ms(15);
PORTD=0b01000010; delay_ms(15);
PORTD=0b10000001; delay_ms(15);
} else {
PORTD=0;}
};
};
}
}
6 Jangan lupa coba untuk mengetahui apakan codingan yang kita buat bisa menyala atau tidak

Kamis, 02 Maret 2017

Pengenalan Robot?

Kata robot diambil dari bahasa Ceko (Chech), yang memiliki arti pekerja (worker). Robot merupakan suatu perangkat mekanik yang mampu menjalankan tugas-tugas fisik, baik di bawah kendali dan pengawasan manusia, ataupun yang dijalankan dengan serangkaian program yang telah didefinisikan terlebih dahulu atau kecerdasan buatan (artificial intelligence). Ada banyak defenisi yang dikemukakan oleh para ahli mengenai robot. Beberapa ahli robotika berupaya memberikan beberapa defenisi, antara lain

(Gonzalez, 1987) :

a. Robot adalah sebuah manipulator yang dapat di program ulang untuk memindahkan tool, material, atau peralatan tertentu dengan berbagai program pergerakan untuk berbagai tugas dan juga mengendalikan serta mensinkronkan peralatan dengan pekerjaannya, oleh Robot Institute of America.

b. Robot adalah sebuah sistem mekanik yang mempunyai fungsi gerak analog untuk fungsi gerak organisme hidup, atau kombinasi dari banyak fungsi gerak dengan fungsi intelligent, oleh official Japanese. Industri robot dibangun dari tiga sistim dasar (Eugene, 1976):

1. Struktur mekanis, yaitu sambungan-sambungan mekanis (link) dan pasangan-pasangan (joint) yang memungkinkan untuk membuat berbagai variasi gerakan.
2. Sistem kendali, dapat berupa kendali tetap (fixed) ataupun servo, yang dimaksud dengan sistem kendali tetap yaitu suatu kendali robot yang pengaturan gerakannya mengikuti lintasan (path), sedangkan kendali servo yaitu suatu kendali robot yang pengaturan gerakannya dilakukan secara point to point (PTP) atau titik pertitik.
3. Unit penggerak (actuator), seperti hidrolik, fenumatik, elektrik ataupun kombinasi dari ketiganya, dengan atau tanpa sistim transmisi. Torsi (force) dan kecepatan yang tersedia pada suatu aktuator diperlukan untuk mengendalikan posisi dan kecepatan. Transmisi diperlukan untuk menggandakan torsi. Seperti diketahui menambah torsi dapat menurunkan kecepatan, dan meningkatkan inersia efektif pada sambungan. Untuk mengurangi berat suatu sistem robot maka aktuator tidak ditempatkan pada bagian yang digerakkan, tetapi pada sambungan yang sebelumnya. Ada beberapa jenis transmisi yang banyak dipakai, antara lain Belt, Cable, Chain dan roda gigi. Jika sebelumnya robot hanya dioperasikan di laboratorium ataupun dimanfaatkan untuk kepentingan industri, di negara-negara maju perkembangan robot mengalami peningkatan yang tajam, saat ini robot telah digunakan sebagai alat untuk membantu pekerjaan manusia. Seiring dengan berkembangnya teknologi, khususnya teknologi elektronik, peran robot menjadi semakin penting tidak saja dibidang sains, tapi juga di berbagai bidang lainnya, seperti di bidang kedokteran, pertanian, bahkan militer. Secara sadar atau tidak, saat ini robot telah masuk dalam kehidupan manusia sehari-hari dalam berbagai bentuk dan jenis. Ada jenis robot sederhana yang dirancang untuk melakukan kegiatan yang sederhana, mudah dan berulang-ulang, ataupun robot yang diciptakan khusus untuk melakukan sesuatu yang rumit, sehingga dapat berperilaku sangat kompleks dan secara otomatis dapat mengontrol dirinya sendiri sampai batas tertentu. Robot memiliki berbagai macam konstruksi. Diantaranya adalah:


1. Robot Mobile ( bergerak )
2. Robot Manipulator ( tangan )
3. Robot Humanoid
4. Flying Robot
5. Robot Berkaki
6. Robot jaringan
7. Robot Animalia

(http://id.wikipedia.org/wiki/Robot,2010)