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");
      }}
}