Categories: Atmega CVAVR

Cara Mengakses Motor DC L293D CVAVR Atmega

Hello Sahabat Anak Kendali

kali ini saya akan mencoba mengakses Motor DC dengan Driver L293 yang mana mikrokontroller yang saya gunakan adalah mikrokontroller berbasis Atmega yang diprogram dengan CVAVR
untuk mengontrol Motor DC kita menggunakan fungsi PWM dan fungsi PWM ini sangat terkait dengan penggunaan Timer pada mikrokontroller, untuk itu alangkah baiknya jika agan membaca terlebih dahulu postingan tentang cara menggunakan timer pada ATmega dengan CVAVR

jika agan sudah membacanya, sekarang kita bisa menlajutkan untuk percobaan mengontrol motor DC L293 dengan Atmega CVAVR,

karena Driver yang saya gunakan hanyalah IC l293 bukan module nya maka saya membuat rangkaian sendiri untuk driver ini, dan rangkaian yang saya gunakan seperti pada gambar dibawah ini !

dari gambar diatas terdapat dua chanel yang bisa kita gunakan untuk menghubungkan ke motor DC tapi disini saya hanya menggunakan satu motor DC, sekarang silahkan hubungkan Motor DC sobat pada Connector chanel Motor A kemudian untuk wirig ke mikrokontroller Atmega nya, silahkan hubungkan ke PORTD.3 dan PORTD.4
Port D 4 digunakan sebagai keluaran PWM dan port D 3 digunakan sebagai keluaran digital biasa

kemudian bukalah aplikasi CVAVR sobat lalu konfigurasi codewizard seperti pada gambar berikut !

selanjutnya buat lah program seperti berikut :

/*****************************************************
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 : 
Version : 
Date    : 1/19/2018
Author  : Chaerul Anam
Company : Sixty Light
Comments: 


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

#include <mega32.h>

// Alphanumeric LCD functions
#include <alcd.h>
#include <delay.h>
#include <stdlib.h>
void motor (int kec){
 if (kec<0){
 PORTD.3=1;
 OCR1B = kec+255;
 }               
 else if (kec >= 0){
 PORTD.3 =0;
 OCR1B = kec;
 }
}


// Declare your global variables here
char buff [10];
int hitung=0;
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=P State6=P State5=P State4=P State3=T State2=T State1=T State0=T 
PORTB=0xFF;
DDRB=0x0F;

// 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=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x74;

// 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: 16000.000 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=0x09;
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 – 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: 20
lcd_init(20);

while (1)
      {
      // Place your code here
        lcd_clear();
       if (PINB.7 == 0){
       hitung++;
       PORTB.1=0;
       PORTB.0=1;
        lcd_gotoxy(0,1);
       lcd_putsf(“Increase”);}
       else if (PINB.6==0) {
       hitung–;
       PORTB.1=1;
       PORTB.0=0;
       lcd_gotoxy(0,1);
       lcd_putsf(“Decrease”);}
          
      motor(hitung);
      itoa (hitung, buff);
      lcd_gotoxy(0,0);  
      lcd_putsf(“PWM value = “);
      lcd_puts(buff);
      delay_ms(100);    
}
       }

Download My Project || DOWNLOAD
Jadi hasil yang akan dihasilkan, kita dapat mengontrol Motor DC, kecepatan dan Arahnya dengan Pushbutton dimana Pushbutton itu untuk menambah dan mengurangi nilai PWM
mungkin cukup sekian apa yang bisa saya bagikan, semoga bermanfaat, silahkan beri masukan, saran, kritik atau pertanyaan di kolom komentar !


keyword:
Anak kendali
motor dc
mengakses motor dc cvavr
mengakses motor dc atmega16
mengakses motor dc atmega32
mengontrol motor dc l293
program cvavr motor dc
program cvavr l293D

chaerul

Recent Posts

Panduan Lengkap: Cara Menyiapkan Klaster Kubernetes pada Ubuntu 22.04 LTS

Pendahuluan Dalam dunia pengembangan perangkat lunak yang terus berkembang, Kubernetes telah muncul sebagai alat kunci dalam orkestrasi…

6 days ago

AplikasiAkademik.com: Solusi Terbaik untuk Manajemen Sekolah yang Efisien

Mengelola sebuah sekolah atau lembaga pendidikan adalah tugas yang kompleks dan penuh tantangan. Dengan berbagai…

7 months ago

Cara Mudah Menginstal OpenVPN Server di Ubuntu 20.04 di Huaweicloud Panduan Langkah demi Langkah

Selamat datang di artikel kami tentang cara menginstal OpenVPN server di Ubuntu 20.04 di HuaweiCloud!…

12 months ago

Install Docker Portainer dan Nginx Proxy Manager Ubuntu Server

Dalam dunia pengembangan aplikasi, salah satu hal yang menjadi penting adalah mengelola dan memonitor kontainer…

1 year ago

Tutorial led blinking lengkap, Wiring & Code

Tutorial led blinking. LED (Light Emitting Diode) merupakan salah satu komponen elektronik yang paling umum…

1 year ago

Tutorial LCD Display Lengkap dengan wiring & code untuk pemula

Tutorial LCD Display, ini merupakan salah satu komponen yang sering digunakan dalam project elektronika sebagai…

1 year ago