Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

PROGRAMMING ROBOT USING BASCOM AVR & CODEVISION AVR

Presentasi serupa


Presentasi berjudul: "PROGRAMMING ROBOT USING BASCOM AVR & CODEVISION AVR"— Transcript presentasi:

1 PROGRAMMING ROBOT USING BASCOM AVR & CODEVISION AVR

2 Trend Industri Elektronika dan TI
Aplikasi berbasiskan controller/mikrokontroler Aplikasi harus mendukung antarmuka dengan USB Aplikasi dapat dikontrol/dipantau dengan software Visual Aplikasi harus kompak dan sekecil mungkin Daya yang dibutuhkan rendah Harga harus kompetitif Solusi ? Peluang besar bagi yang kompeten pada Embedded System

3 Peluang karir TI berbasis Elektronika
Developer aplikasi embedded dan kontrol (Sistem kontrol, robotika, instrumentasi, Monitoring, PDA, Aplikasi SMS dll) Pengusaha Aplikasi Elektronika (Peluang besar !) (System minimum, kit-kit elektronika, produk industri dll). Pengajar dan Peneliti aplikasi embedded dan kontrol (Robotika, Instrumentasi, sistem kontrol, Wireless application dll) Engineer /Teknisi profesional Menggunakan Software : Visual Basic .net, C++, Visual C# .Net, Java, assembly dll.

4 Kunci Sukses Menguasai Elektronika dan TI
Software : Assembly + C/C++/ Bascom AVR Pemrograman & Interfacing Mikrokontroler Visual Basic .Net 2010 dan Arduino Visual C# .Net 2010 dan Raspberry Pi 3 Java (J2SE, J2EE dan J2ME) Sql Server/Oracle 10g dan MySql Hardware: Pemrograman dan Interfacing mikrokontroler dan PLC Memahami dan familiar dengan rangkaian

5 Bidang Elektronika Saat ini

6 Mengapa Mikrokontroler ?
Chip teknologi terkini yang mampu melaksanakan tugas- tugas kontrol sistem, karena di dalamnya umumnya sudah mencakup: CPU RAM ROM EEPROM (Tidak semua) I/O (Serial /paralel, I2C) Timer Sehingga dimungkinkan membangun Aplikasi single chip(Aplikasi dengan hanya 1 buah chip)

7 MiKrokontroler Umum

8 Berbagai Mikrokontroler
Mikrokontroler ATMEL contoh: 89C51,89S51,89S8252,AVR 89S8535, 90S2313 Mikrokontroler PIC contoh : 16F84A,16F628,16F877A,12F625 Mikrokontroler Basic Stamp contoh : BS1, BS2, BS2sx (menggunakan PIC) Mikrokontroler Raspberry Pi 3 Mikrokontroler Motorolla contoh: 68HC11, 6800 Mikrokontroler Arduino Uno

9 Aplikasi Mikrokontroler
Robotika Home remote system Industrial control Kontrol alat over SMS Pengontrol mesin pertanian Aplikasi hiburan seperti Games dan DVD Player Antarmuka PC dll

10 Pertimbangan memilih mikrokontroler
Ketersediaan IC dan programmer Harga Banyaknya pengguna di lingkungan Anda Mendukung ADC (Pengubah analog ke digital) dan fitur lainnya Bahasa pemrograman assembly/C/Basic

11 Mikrokontroler AVR Atmega 8535
Mikrokontroler terdiri dari : Port I/O untuk kirim-terima data ( umunya 8 bit dan serial) Port sumber detak Port serial Channel ADC Pin sumber detak

12 Mikrokontroler AVR ATmega8535
Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D. ADC (Analog to Digital Converter) 10 bit sebanyak 8 channel. SRAM sebesar 512 byte. Memori Flash sebesar 8 Kb dengan kemampuan Read While Write dan dapat ditulis ulang x EEPROM sebesar 512 byte yang dapat diprogram saat operasi dan dapat ditulis ulang x Mencapai 16MIPS pada 16 MHz

13 Perbandingan Mikro ATMEL
Type RAM Flash Memory EEPROM AT89C51/ AT89S51 8 X 128 Byte 4 KByte No AT89C52/ AT89S52 8 X 256 Byte 8 KByte AT89C55 20 KByte AT89S53 12 KByte AT89S8252 2 KByte Atmega 8535 512 8KByte 512B

14 Sistem minimum Mikrokontroler
Kelip.bas ‘Konfigurasi port B sebagai output Config portb=output Do ’pengulangan Portb=255 ‘hidup semua Waitms 100 ’delay 100ms Portb=0 ’mati semua Loop Terdapat 4 PORT sebagai I/O yaitu PA, PB, PC dan PD

15 Pengubah Analog ke Digital
ADC.bas Start Adc Dim W As Word Channel = 0 ‘Baca data di channel Do W = Getadc(channel) ‘kirim ke port serial Print "Channel " ; Channel ; " value " ; W Portb=w ‘keluarkan ke port B Loop End

16 Single Chip Solution for ROBOT
2.4 GHz RF Ext. Serial EEPROM Serial Com CMUCam Speed Encoder Other I/O Line Detector 32kB Flash, 2kB SRAM, 1 KB EEPROM, 2 cycle hardware multipler

17 Bascom AVR (WWW.MCSELEC.COM)
Bahasa basic Paling mudah Mendukung pengisian mikro melalui port Paralel dan serial

18

19 Program Kelap Kelip Kelip.bas:
Config portb=output ‘konfigurasi port B sebagai output Do Portb=255 ‘aktifkan semua karena 8 bit MSB D7 D6 D5 D4 D3 D2 D1 D0 LSB Waitms 500 ‘delay 500ms Portb=0 Wait 1 ‘delay 1 detik ‘ Loop

20 Langkah mengisi program ke Mikro
Hubungkan kabel ISP ke Port Paralel Komputer Hubungkan ujung kabel ISP ke mikro Hubungkan catu daya ke mikro Buka Bascom AVR Ketik program Simpan program Kompilasi Isi program ke mikro

21 Terima input dari suatu port
IO.bas: ’Program terima input dari port D keluarkan ke portB Config portb =output Config portd=input ‘ port D sebagai input do Portb=pind ‘data di port D dikirim ke Port B Loop

22 Deteksi input pada suatu pin
Deteksi.bas ’Program mendeteksi input pada suatu pin Config portB=output Config pinD.6 =input Dim w as byte Do W=pinD.6 ‘Input di Pin D.6 (1/0) Portb=w loop

23 Set pin Setpin.bas ’program mengeset bit pada suatu pin di suatu port Config portb=output Portb.1=1 ‘high Portb.3=1 Portb.5=1 Portb.6=0 ‘low

24 Rotate Rotate all bits one place to the left or right. Dim A As Byte
Config portb =output Portb=1 Do Portb = 1 For A = 1 To 8 ‘looping Rotate Portb , Left 'rotate bits left Wait 1 ‘delay 1 detik Next

25 Shift Shift all bits one place to the left or right. Dim a as Byte a = 128 Shift A , Left , 2 Print a '0 End

26 Dasar Kendali kendali.bas: Config Portc= Input Config Porta= Output
Dim A As Byte Do ‘lakukan operasi DO..LOOP A = Pinc.0 ‘pinD.7 -> A If A = 1 Then ‘ Jika saklar di PinD.7 aktif Portb = 0 ‘portb = Low End If ‘akhiran If If A = 0 Then Portb=255 End If ‘ Loop

27 SELECT ..CASE (Penentuan Kondisi)
Dim X As Byte Do Input "X ? " , X ‘terima input tampung di X Select Case X Case 1 To 3 : Print "1 , 2 or 3 will be ok" Case 4 : Print "4" Case Is > 10 : Print ">10" Case Else : Print "no" End Select Loop End

28 Aritmatika Dim X As Single , Y As Single , Result As Single Dim Z As String * 10 'So this leaves the TRIG functions to be implemented Input "Enter x " , X 'ask for 2 values Input "Enter y " , Y Z = " " Result = Val(z) : Print Result Z = Str(result) : Print Result 'X = 'Y = 5.75 Print "X+Y=" ; : Result = X + Y : Print Result 'calculate Print "X-Y=" ; : Result = X - Y : Print Result Print "X/Y=" ; : Result = X / Y : Print Result If X > Y Then Print ">" End If

29 LCD (Liquid Crystal Display)
NO Nama Pin Deskripsi Port 1 VCC + 5V 2 GND 0 V 3 VEE Tegangan Kontras LCD 4 RS Register Select, 0=Input Instruksi, 1=Input Data PD7 5 R/W 1= Read ;0 = Write Ground 6 E Enable Clock PD6 7 D0-D3 Data D0-D3 - 11 D4 Data Bus 4 PC4 12 D5 Data Bus 5 PC5 13 D6 Data Bus 6 PC6 14 D7 Data Bus 7 PC7 15 Anode Tegangan Positif backlight 5V 16 Katode Tegangan Negatif backlight

30 LCD dim A As Byte Config Lcd = 16 * 2 'configure lcd 2baris x 16 karakter do cls Lcd "Hello world." ‘tampilkan pada baris 1 Wait 1 Lowerline ‘ke baris ke 2 Lcd "Shift this." 'display this at the lower line For A = 1 To 10 Shiftlcd Right geser kanan Wait 1 'wait a moment Next loop

31 Posisi LCD Do Cls 'bersihkan layar lcd Cursor Blink Locate 1 , 1 ‘baris 1 kolom 1 Lcd "SmartAVR 8535" Locate 2 , 1 ‘baris 2 kolom 1 Lcd " ATmega8535“ wait 1 loop

32 Pulsout PULSEOUT PORT , PIN , PERIOD Dim A As Byte Config Portb = Output 'PORTB all output pins Portb = 0 'all pins 0 Do For A = 0 To 7 Pulseout Portb , A , 'generate pulse 60000x1us at 4MHz Waitms 250 'wait a bit Next Loop 'loop for ever

33 Blok Mobile Robot Sederhaha

34 Blok Robot Kompleks

35 Rangkaian Mikro Sederhana

36 Prinsip Robot Sederhana

37 Robot Sederhana

38 Actuator for Robot Servo Cont & Standard DC Motor FOR COUNTER =1 TO 24
‘turn left ¼ circle PULSOUT 13, 650 PULSOUT 12, 650 PAUSE 20 NEXT PORTB=2 ‘ right motor PORTB=1 ‘ left motor

39 Robot Sederhana AVT

40 SPC DC Motor Pin Nama Fungsi Pada Motor 1 S1 Run 1 Stop berlogika 1, Run berlogika 0 S2 Dir 1 CW berloika 1, CCW berlogika 0 Pada Motor 2 S3 Run 2 Stop berlogika 1, Run berlogika 0 S4 Dir 2 CW berloika 1, CCW berlogika 0

41 Penerapan Pada Robot Robot.bas Config Portb = Output Dim W As Word
Start ADC Do W = Getadc(0) ‘baca sensor jarak If W < 200 Then ‘jika tdk ada halangan Portb = ‘maju Wait 2 ‘delay 2 detik Else ‘jika ada halangan Portb = 0 'belok kiri Wait 2 End If Loop

42 Led.bs2: Basic Stamp ' Lampu LED ' {$STAMP BS2} ' {$PBASIC 2.5} DO
HIGH 12 ‘beri logika 1 PAUSE 500 LOW 12 ‘beri logika 0 LOOP

43 Sensors SRF04/8 Ultrasonic Range Finder CMUcam Photoreflector P5887
Thermal Array Sensor Compass Sensor UVtron Flame detector Photoreflector P5887 Lynxmotion director Sharp GP2D12 Infrared distance sensor

44 Contoh pembacaan sensor jarak
Ultrasonic SRF04 (3cm -3m) Infrared GP2D12 (10cm-80cm) Ultrasonic.bas : Initialize-Ultrasonic Distance=US_Front() If Distance <200 then Portb=8 ‘ Move forward Function US_Front() As Integer Portc.0 = 0 Pulseout Portc , 0 , 5 Pulsein US_Front , Pinc , 1 , 1 End Function Sub Initialize_ultrasonic Config Pinc.0 = Output Config Pinc.1 = Input End sub InfraredDistance.bas: Do Data=Getadc(0) If W < 200 Then ‘’ if there is no obstacle Portb = ‘move forward Wait 2 ‘delay 2 second Else ‘if there is obstacle Portb = 0 ‘ turn left Wait 2 End If

45 Servo Motor

46 Gerakan Servo COUNTER VAR Word
FREQOUT 4,2000,3000 ‘sinyal program start/reset FOR COUNTER =1 TO ‘gerak maju 10 detik PULSOUT 13, ‘ pin 13 keluarkan sinyal 850 PULSOUT 12,650 ‘ pin 12 keluarkan sinyal 650 PAUSE 20 NEXT FOR COUNTER =1 TO ‘ belok kiri ¼ putaran PULSOUT 13, 650 PULSOUT 12, 650 PAUSE 20 FOR COUNTER =1 TO ‘ belok kanan ¼ putaran PULSOUT 13, 850 PULSOUT 12, 850

47 PING get_sonar : ‘ kode utama ping =IsLow PULSOUT ping, trigger
PULSIN ping, isHigh, rawDist rawDist=rawDist */Scale rawDist =rawDist/2 RETURN

48 SRF04

49 CONFIG ADC = single, PRESCALER = AUTO, REFERENCE = opt ADC Running mode. May be SINGLE or FREE. PRESCALER A numeric constant for the clock divider. Use AUTO to let the compiler generate the best value depending on the XTAL REFERENCE Some chips like the M163 have additional reference options. Value may be OFF , AVCC or INTERNAL. See the data sheets for the different modes.

50 ADC ADC.bas Config Adc = Single , Prescaler = Auto 'Now give power to the chip Start Adc 'With STOP ADC, you can remove the power from the chip 'Stop Adc Dim W As Word , Channel As Byte Channel = 0 'now read A/D value from channel 0 Do W = Getadc(channel) Print "Channel " ; Channel ; " value " ; W Incr Channel If Channel > 7 Then Channel = 0 Loop End

51 LCD Lcd "SMART DataLogger" Waitms 100 Lowerline Lcd "e-Technology Center" Thirdline Lcd "Press 1-4" Fourthline Lcd "Press 5 to Go Out" Home Third Home Fourth For B = 1 To 15 Shiftlcd Right Waitms 25 Next

52 LCD Designer Sub Displaysuhu() Cls Lcd "Suhu:" Locate 2 , 13
Deflcdchar Print 1 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 Lcd Chr(1) Locate 1 , 19 Lcd "C"

53 Keypad Config Kbd = Portb Dim B As Byte 'loop for ever Do B = Getkbd()
Print B 'when no key is pressed 16 will ‘be returned Loop Lcd B End

54 7 Segment

55 Robot Avoider If W < 150 Then Portb = 10 'maju Waitms 1 Else
‘Robot Avoider Dim A As Byte Dim B As Byte Config Portb = Output Dim W As Byte , Channel As Byte Declare Sub Bacajarak() Config Adc = Single , Prescaler = 32 , Reference = Avcc Enable Adc Enable Interrupts Do call Bacajarak ‘panggil fungsi bacajarak Loop Sub Bacajarak() Channel = 0 W = Getadc(channel) Start Adc If W < 150 Then Portb = 10 'maju Waitms 1 Else Portb = 0 'mundur Portb = 1 'belok kanan Waitms 2 End If End Sub

56 Line Follower Dim A As Byte Dim B As Byte Config Portb = Output Config Pinc.0 = Input Config Pinc.1 = Input Dim W As Byte , Channel As Byte Declare Sub Bacajarak() Config Adc = Single , Prescaler = 32 , Reference = Avcc Enable Adc Enable Interrupts Do A = Pinc.0 B = Pinc.1 If A = 1 And B = 1 Then Portb = 'maju Waitms 5 End If If A = 1 And B = 0 Then Portb = 'belok kanan Waitms 10 If A = 0 And B = 0 Then Portb = 'mundur Loop

57 Hexapod Avoider dengan Sharp GP2D12
Dim A As Byte Dim B As Byte Config Portb = Output Dim W As Byte , Channel As Byte Declare Sub Bacajarak() Config Adc = Single , Prescaler = 32 , Reference = Avcc Enable Adc Enable Interrupts Do Call Bacajarak ‘panggil fungsi bacajarak Loop Sub Bacajarak() Channel = 0 ‘sensor di ch 0 W = Getadc(channel) Start Adc If W < 150 Then Portb = 10 Waitms 30 Else Portb = 5 Waitms 5 Portb = 0 ‘mundur Wait 2 Portb = 4 'belok kanan Wait 1 End If End Sub

58 Hexapod Avoider dengan SRF04
Declare Sub Initialize_ultrasonic() Declare Function Ultrasonic_depan() As Integer Dim Jarakdepan As Integer Dim W As Word Config Portb = Output Config Portd = Input Config Portc = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc 'configurasi ADC Start Adc Call Initialize_ultrasonic Portb = 'mundur dulu Waitms 500 Do Jarakdepan = Ultrasonic_depan() Print "jarak depan :" ; Jarakdepan If Jarakdepan > 40 Then Portb = 'maju Wait 1 Else Portb = 0 Waitms 'mundur Portb = 4 End If 'BELOK KANAN Loop End Function Ultrasonic_depan() As Integer Portc.0 = ' Set initial state of trigger pin Pulseout Portc , 0 , ' generate a 5us 8 mhz Pulsein Ultrasonic_depan , Pinc , 1 , ' measure the return pulse End Function Sub Initialize_ultrasonic Config Pinc.0 = Output Config Pinc.1 = Input End Sub

59 Pemadam Api

60 Serial Print “Data yang masuk” ; data

61 Code Vision AVR

62 Membuat proyek baru

63 Konfigurasi Port DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7 DDRD=0x00; // Port D dikonfigurasi sebagai input DDRB=0; // Port B dikonfigurasi sebagai input PORTB=0; //internal pull-up aktif PORTB=PINC; //Semua data di Port C dikirim ke Port B PORTB.0=PINC.0 ; //Data di Port C.0 dikirim ke Port B.0

64 Proyek baru IO1.c: // Mencoba Membuat Program CodeVision AVR // Percobaan Output dan delay pada Port B #include <mega16.h>//menyertakan library file mega16 #include <delay.h> //menggunakan delay jadi librarynya harus digunakan void main(void) { //Program Utama bertipe data void DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7 PORTB=255; //Semua Port B mengeluarkan logika 1, jadi semua LED mati // Program akan berulang terus while (1) { PORTB.0=0; //LED PB0 menyala PORTB.2=0; //LED PB2 menyala delay_ms(500); //Delay 0.5 detik PORTB.0=1; //LED PB0 mati PORTB.2=1; //LED PB2 mati delay_ms(1000); //Delay 1 detik }; //akhir looping } //Akhir program utama

65 Kompilasi dan Pengisian

66 Pengendalian relay

67 Out data Outportb.c: // Percobaan Output dan delay pada Port B #include <mega16.h>//menyertakan library file mega16 #include <delay.h> //menggunakan delay, jadi librarynya harus digunakan void main(void) { //Program Utama DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7 PORTB=255; //Semua Port B mengeluarkan logika 1 , jadi LED mati // Program akan berulang terus while (1) { PORTB.0=0; //LED PB0 menyala PORTB.1=1; // LED PB1 mati PORTB.2=0; //LED PB2 menyala delay_ms(500); //Delay 0.5 detik PORTB.0=1; //LED PB0 mati PORTB.1=0; // LED PB1 menyala PORTB.2=1; //LED PB2 mati delay_ms(1000); //Delay 1 detik }; //akhir looping } //Akhir program utama

68 Input Port C ke Port B // Percobaan Input di Port C dan Output pada Port B // Saklar di Port C, LED terhubung di Port B #include <mega16.h> //Menyertakan library file ATmega16 #include <delay.h> //menggunakan delay, jadi librarynya harus digunakan void main(void) { //Program Utama DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7 PORTB=255; //Semua Port B mengeluarkan logika 1, semua LED mati PORTC =0; //Matikan internal pull up karena sudah ada //eksternal pull up pada rangkaian input #asm ("nop") //persiapan // Program akan berulang terus while (1) { PORTB=PINC ; //Semua push button yang ditekan di Port C, datanya dikirim ke Port B }; //akhir looping } //Akhir program utama

69 Deteksi input Port C ke Port B
DeteksiInputPortCkePortB.c: // Percobaan deteksi Input di Port C per pin dan Output pada Port B // Saklar di Port C, LED terhubung di Port B #include <mega16.h> //Menyertakan library file mega16 #include <delay.h> //menggunakan delay, jadi librarynya harus digunakan void main(void) { //Program Utama DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7 PORTB=255; //Semua Port B mengeluarkan logika 1 sehingga semua LED mati DDRC=0; //Port C dikonfigurasi sebagai input PORTC =0; //Matikan internal pull up karena sudah ada //eksternal pul up pada rangkaian input #asm ("nop") //persiapan // Program akan berulang terus while (1) { PORTB.1=PINC.0 ; //membaca data di PC0, datanya dikirim ke PB1 PortB.2= ~PINC.2 //Logika PB2 kebalikan dari PC2 }; //akhir looping } //Akhir program utama

70 Komunikasi Serial

71 Contoh program serial unsigned char judul[]={"Praktikum AVR"}; //Inisialisassi USART //Format frame; 8 data, 1 stop bit, no parity //USART Receiver & Transmitter ON //USART mode: Asinkron UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0X00; // Baud rate 9600bps, pada kristal 4 MHz UBRRL=0X19; puts(judul); //tampilkan pesan dan ganti baris UDR=’O’;

72 Konfigurasi Hyperterminal

73 Pembacaan sensor jarak
SharpGP2D12.c: // Percobaan 10.1, percobaan baca data sensor jarak Sharp GP2D12 // LED terhubung di Port B #include <mega16.h> #include <stdio.h> #include <delay.h> #define ADC_VREF_TYPE 0x60 flash unsigned char string1[]={"data adc: %d; "};

74 ADC unsigned char read_adc(unsigned char adc_input) {
// Baca 8 bit terpenting unsigned char 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); // Mulai konversi ADC ADCSRA|=0x40; // Tunggu konversi ADC selesai while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } void main(void) { // Inisialisasi Port B PORTB=0xFF; DDRB=0xFF;

75 Pembacaan sensor pada robot
// 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=0x19; // ADC initialization // ADC Clock frequency: 31,250 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: Free Running // Menggunakan 8 bit data ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA7; SFIOR&=0x1F; }

76 Pembacaan sensr pada robot
while (1) { PORTB=read_adc(0); // Baca data sensor di PA.0 printf(string1,PORTB); if (PORTB>100) PORTD=128; //Putar motor DC ke kanan } else PORTD=64; //Putar motor DC ke kiri };

77 Industrial Control

78 Robot for Human Don’t you want to develop these ???

79 Wireless Application Wireless Application
Frequency Range: 2.4~2.524 GHz Modulate Mode: GFSK Data Rate: 1Mbps Multi channel operation: 125 channels, Data Rate:1, K baud Frequency: Mhz (UHF)Transmission 500 ft


Download ppt "PROGRAMMING ROBOT USING BASCOM AVR & CODEVISION AVR"

Presentasi serupa


Iklan oleh Google