Senin, 23 Maret 2015

USB ASP DOWNLOADER ATMEGA8


USBasp adalah salah satu downloader yang support untuk atmel mikrokontroller dan yang pada penggunaannya memakai jalur komunikasi melalui port usb.

Fitur USBasp:
* Kompatible dengan OS windows (2k/XP/vista/seven)
* Tidak memerlukan pengontrol atau komponen smd khusus
* Kecepatan pemrograman bisa mencapai 5kByte/detik
* Terdapat jumper untuk opsi slowSCK untuk mendukung mikrokontroler target yang berkecepatan rendah (< 1.5 MHz)
* Tidak memerlukan tegangan external karena sudah mengambil tegangan dari komputer melalui port usb
* Terdapat jumper tegangan untuk mikrokontroller target bila ingin mengambil tegangan dari port usb, bila mikrokontroller target ingin menggunakan tegangan external lepas jumpernya.

di bawah ini adalah gambar skematik rangkaian USBasp
 
Rangkaian jadi
 

Kamis, 05 Maret 2015

SENSOR SUHU LM35 SEBAGAI PENGONTROL NYALA KIPAS



A. Rangkaian Simulasi





B. Program
#include mega16.h
#include stdlib.h
#include lcd.h
#include delay.h
#define kurangi_suhu_kipas    PIND.6
#define tambah_suhu_kipas   PIND.7

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
int SUHU;
char temp[8];
float suhu_celcius;
unsigned char suhu_kipas,simpan;
eeprom unsigned char p_eeprom;
void tulis_eeprom()
{
        p_eeprom=simpan;
}

void baca_eeprom()
{
        simpan=p_eeprom;
}

#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;
}


void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTD=0xFF;
DDRD=0xFF;
suhu_kipas=24;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("ALAT PENGONTROL");
lcd_gotoxy(0,1);
lcd_putsf("KIPAS DENGAN");
delay_ms(50);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("SENSOR SUHU LM35");
delay_ms(50);

while (1)
    {
    lcd_clear( );
    SUHU = read_adc(3);
    suhu_celcius = (float)SUHU*425/1023;//rumus untuk mengubah kedalam derajat celcius  
    lcd_gotoxy(0,0);
    lcd_putsf("SUHU RUANG");
    ftoa(suhu_celcius,0,temp);//float to array, mengubah tipedata float k tipe data array yg kan ditampilkan di LCD
    lcd_gotoxy(12,0); 
    lcd_puts(temp);
   
    lcd_gotoxy(14,0);
    lcd_putchar(0x89);//menampilkan karakter derajat
    lcd_putsf("C");
   
    lcd_gotoxy(0,1);
    lcd_putsf("KPS ON SH >");
    ftoa(simpan,0,temp);
    lcd_gotoxy(12,1); 
    lcd_puts(temp);
    lcd_gotoxy(14,1);
    lcd_putchar(0x89);//menampilkan karakter derajat
    lcd_putsf("C");
    if(kurangi_suhu_kipas==0){suhu_kipas--;delay_ms(300);simpan=suhu_kipas;tulis_eeprom();}
    if(tambah_suhu_kipas==0){suhu_kipas++;delay_ms(300);simpan=suhu_kipas;tulis_eeprom();}
    baca_eeprom();
    //if(kurangi_suhu_kipas==0){suhu_kipas--;delay_ms(300);}
    //if(tambah_suhu_kipas==0){suhu_kipas++;delay_ms(300);}
    if(suhu_celcius>simpan){PORTB.0=1;}
    else PORTB.0=0;                                                
    delay_ms(5);
    };
}



C. Rangkaian Implementasi





rangkaian simulasi+program dapat di download disini

BLUETOOTH HC-05 CONTROL ROBOT CAR


Untuk membuat robot biasanya terkendala dari mahalnya biaya yang harus dikeluarkan, terutama untuk biaya motor dc dan bateray. Salah satu solusinya kita bisa memanfaatkan motor dc yang ada pada mainan ank- anak. Karena sudah dilengkapi dengan gear box yang ada di dalamnya sehingga bisa langsung di pakai. Untuk bateray juga tidak usah pusing-pusing membeli bateray lipo yang tergolong mahal. Untuk kebutuhan mikronya yg membutuhkan tegangan 5V bisa pake bateray 9V baik yang sekali pake atau yang bisa di cash.  
Robot HC-05 merupakan robot beroda yang dapat dikendalikan menggunakan aplikasi “Robot Controller” dari hp android.  Agar hp dapat digunakan untuk mengendalikan robot harus dilakukan koneksi terlebih dahulu antara bluetooth di hp dengan bluetooth di mikrokontroler . Bluetooth di hp sebagai pengirim data sedangkan bluetooth di mikrokontroler sebagai penerima data. Data yang kirimkan akan diolah oleh mikrokontroler ATMEGA32 untuk menggerakkan motor dc. Komunikasi data antara bluetooth dengan mikrokontroler menggunakan komunikasi serial melalui Pin TX dan RX.  Robot dapat digerakkan maju, mundur, belok kanan, belok kiri. Sebagai penggerak motor dc menggunakan rangkaian driver dr relay.
A. Blok Diagram
 
B. Rangkaian Driver relay
 







Menggunakan relay 5V DC
Motor bisa dari mainan anak-anak yang murah meriah
C. Program
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :ROBOT HC-05 KONTROL HP ANDROID
Version :
Date    : 3/6/2015
Author  : Bagus Dwiarto
Company : SMK BTB JUWANA
Comments:


Chip type               : ATmega32
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 512
*****************************************************/

#include mega32.h
#include delay.h

// Standard Input/Output functions
#include stdio.h

// Declare your global variables here
char perintah;
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=0xFF; //PORTB SEBAGAI OUTPUT

// 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=0xFF;
DDRD=0x00; //PORTD SEBAGAI INPUT

// 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
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;

// 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)
      {
      // Place your code here
        if(PIND.7==0)
        {
        printf("AT+UART=9600,0,0\r\n"); 
        delay_ms(500);
       };
      
        perintah=getchar();
        if (perintah == 0x01)     {PORTB.0=1;PORTB.1=1;delay_ms(100);PORTB.0=0;PORTB.1=0;}  //maju
        else if (perintah == 0x02){PORTB.0=1;PORTB.1=1;delay_ms(100);PORTB.0=0;PORTB.1=0;}  //mundur
        else if (perintah == 0x04){PORTB.0=1;PORTB.1=0;delay_ms(50);PORTB.0=0;PORTB.1=0;}  //kiri
        else if (perintah == 0x03){PORTB.0=0;PORTB.1=1;delay_ms(50);PORTB.0=0;PORTB.1=0;}  //kanan
        else if (perintah == 0x05){PORTB.0=0;PORTB.1=0;}
        else {PORTB.0=0;PORTB.1=0;}                            
        } 
      }

Jumat, 19 Agustus 2011

KONTROL DISPLAY LED BERBASIS AT89S51














Rangkaian kontrol display led bekerja sebagai berikut:

· SW 1 ditekan 8 LED menyala dari kiri ke kanan ( 8 LED tetap menyala dari kiri ke kanan walaupun SW1 sudah dilepas lagi)

· SW 2 ditekan 8 LED menyala dari kanan ke kiri ( 8 LED tetap menyala dari kanan ke kiri walaupun SW2 sudah dilepas lagi)

· SW 3 ditekan 8 LED akan mati (8 LED tetap mati walaupun SW3 sudah dilepas lagi)


Program Sebagai Berikut:

ORG 00H
MULAI:
JNB P0.2, GESER_KANAN
JNB P0.1, GESER_KIRI
JNB P0.0, MATI
CLR P0.2
SJMP MULAI

GESER_KANAN:
MOV P2,#11111110B
CALL DELAY
MOV P2,#11111101B
CALL DELAY
MOV P2,#11111011B
CALL DELAY
MOV P2,#11110111B
CALL DELAY
MOV P2,#11101111B
CALL DELAY
MOV P2,#11011111B
CALL DELAY
MOV P2,#10111111B
CALL DELAY
MOV P2,#01111111B
CALL DELAY
JNB P0.1,GESER_KIRI
JNB P0.0, MATI
SJMP GESER_KANAN

GESER_KIRI:
MOV P2,#01111111B
CALL DELAY
MOV P2,#10111111B
CALL DELAY
MOV P2,#11011111B
CALL DELAY
MOV P2,#11101111B
CALL DELAY
MOV P2,#11110111B
CALL DELAY
MOV P2,#11111011B
CALL DELAY
MOV P2,#11111101B
CALL DELAY
MOV P2,#11111110B
CALL DELAY
JNB P0.0,MATI
JNB P0.2,GESER_KANAN
SJMP GESER_KIRI

MATI:
MOV P2,#11111111B
JNB P0.2,GESER_KANAN
JNB P0.1,GESER_KIRI
SJMP MATI


DELAY: MOV R1,#01H
DELAY1: MOV R2,#01H
DELAY2: MOV R3,#01H
DJNZ R3,$
DJNZ R2,DELAY2
DJNZ R1,DELAY1
RET
END