Top Banner
Microcontroller Mekatronika, STT Mandala
28

Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Jan 13, 2016

Download

Documents

Rosamond King
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

MicrocontrollerMekatronika, STT Mandala

Page 2: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Isi Kuliah

• Arsitektur Microcomputer • Microcontrollers untuk aplikasi rekayasa

– Apa itu microcontroller?– Bagaimana menggunakan microcontrollers?– Platform perangkat keras Arduino– Programming the Arduino

• Basic steps• Digital I/O• Analog I/O

Page 3: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Sistem Mekatronika

Page 4: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Arsitektur Mikrokomputer

Page 5: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Microcomputer

• Microprocessor: chip VLSI dgn rangkaian digital yg mengerjakan

aritmetika, logika, komunikasi dan kontrol• ALU: arithmetic logic unit, mengeksekusi fungsi matematika dalam biner• Instruction decoder: interpretasi instruksi dari memory oleh control unit

dan disimpan di instruction register. Setiap instruksi me merintahkan ALU

untuk melakukan manipulasi bit seperti penambahan biner atau fungsi

logika, dan disimpan di register. Hasil dari ALU juga disimpan

dalam data register dan ditransfer ke memory oleh control unit• Bus: jalur komunikasi (jaringan saraf komputer)• ROM : penyimpanan data secara permanen• RAM: penyimpanan data selama program berjalan

– SRAM: static RAM : data dalam flip-flops selama memory ada daya– DRAM : dynamic RAM, penyimpanan capacitive harus di refreshed karena charge – leakage

• EPROM: erasable programmable EEPROM : electrically EPROM

Page 6: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Microcomputer

• RISC : Reduced instruction-set computer, jika instruksi2 yg digunakan

hanya sedikit maka disebut RISC microcomputer• Bahasa mesin: komunikasi ke dan dari microprocessor terjadi melalui

input/output (I/O) yg terhubung ke bus. Dalam mekatronika : ADC, DAC

D/D merupakan interface antara microcomputer dan switch, sensor

dan aktuator • Bahasa Assembly: bahasa yg dpt digunakan untuk memprogram

Microprocessor, yg terdiri dari perintah2 dasar seperti ADD, MOV• Assembler: mengkonversi bahasa assembly menjadi bahasa mesin

sehingga microprocessor mengerti dan mengeksekusi instruksi• High level language: program dengan bahasa tingkat tinggi : basic, C, dll

Page 7: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Microcontroller

Microcontroller:Microprocessor dalam sebuah IC -PIC--Atmel--Intel 8051-dll

Page 8: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Microcontroller?

• A small computer usually implemented on a single IC that contains a central processing unit (CPU), some memory, and peripheral devices such as counter/timers, analog-to-digital converters, serial communication hardware, etc.

http://www.amazon.com/AVR-Pin-20MHz-32K-ATMega328/dp/B004G5AVS6

ATmega328the ‘brain’ of the Arduino

Page 9: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Atmega 328 pin mapping

Page 10: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Penggunaan Microcontroller

– Car– Phone– Toothbrush– Microwave oven– Copier– Television– PC keyboard– Appliances

• http://ecomodder.com/wiki/index.php/MPGuino

Page 11: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Platform Arduino

• Atmel ATmega328 microcontroller

• 14 digital I/O pins– 6 with PWM

• 6 analog I/O pins• 32 kB (-2 kB)

Flash memory• 2 kB RAM• 1 kB EEPROM• 16 MHz clock

FTDIUSB chip

Digital Pins

Analog Pins

USBjack

Microcontrollerpowerjack

Voltageregulator

Pwr/GND Pins

ICSPHeader

ResetButton

PowerLED

Pin 13 LEDRx + TxLEDs

http://arduino.cc/

Page 12: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Programming the Arduino

• An arduino program == ‘sketch’– Must have:

• setup()• loop()

– setup()• configures pin modes and

registers

– loop()• runs the main body of the

program forever– like while(1) {…}

– Where is main() ?• Arduino simplifies things• Does things for you

/* Blink - turns on an LED for DELAY_ON msec, then off for DELAY_OFF msec, and repeats*/const byte ledPin = 13; // LED on digital pin 13const int DELAY_ON = 1000;const int DELAY_OFF = 1000;

// setup() method runs once, when the sketch starts

void setup(){ // initialize the digital pin as an output: pinMode(ledPin, OUTPUT); }

// loop() method runs forever,// as long as the Arduino has power

void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(DELAY_ON); // wait for DELAY_ON msec digitalWrite(ledPin, LOW); // set the LED off delay(DELAY_OFF); // wait for DELAY_OFF msec}

Page 13: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Using setup()

• A digital pin can either be an output or an input – Output

• your program determines what the voltage on a pin is (either 0V (LOW or logic 0) or 5V (HIGH or logic 1)

– Information is sent out

– Input• the world outside the

microcontroller determines the voltage applied to the pin

– Information is taken in

const byte ledPin = 13; // LED on digital pin 13

void setup(){ // initialize the digital pin as an output: pinMode(ledPin, OUTPUT); }

where can you find out aboutthe commands, etc?

http://arduino.cc/en/Reference/Extended

pinMode() sets whether a pin is an

input or an output ledPin byte constant

assigned the value of 13 OUTPUT is a macro defined

constant Which has the value 1

INPUT is a macro … ?

Page 14: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Blinking the LED in loop()

• digitalWrite()– Causes the voltage on the

indicated pin to go HIGH (+5V) or LOW (0V)

– Note: must first configure the pin to be an output

• To make pin go to 5V (high):– digitalWrite(pin_num,HIGH);

» Best to #define pin num.• To make pin go to 0V (low):

– digitalWrite(pin_num,LOW);

• delay()– Causes the program to wait for

a specified time in milliseconds

#define LED_PIN 13 // LED on digital pin 13#define DELAY_ON 500 // in ms#define DELAY_OFF 100

void setup(){ // initialize the digital pin as an output: pinMode(LED_PIN, OUTPUT); }void loop() { digitalWrite(LED_PIN, HIGH); // turn LED on delay(DELAY_ON); // wait for DELAY_ON ms digitalWrite(LED_PIN, LOW); // turn LED off delay(DELAY_OFF); // wait for DELAY_OFF ms}

http://arduino.cc/en/Reference/Extended

Page 15: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Pull-up Resistor Concept

ATmega328

PD3

VTG= +5V

0

1

ATmega328

PD3

VTG= +5V

0

1

Pull-up resistor OFF Pull-up resistor ON

Pull-up resistor

Page 16: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Code to Set Up Button Pins

• Two steps:1. Make the pin an

INPUT• pinMode()

2. Turn the pull-up resistor on

• digitalWrite() a 1 to the pin

const byte SW0 = 12; // button SW0const byte SW1 = 8; // button SW1const byte SW2 = 7; // button SW2const byte SW3 = 4; // button SW3

void setup() { pinMode(SW0, INPUT); // make SW0 an INPUT digitalWrite(SW0, HIGH); // turn on pullup resistor

etc.}

(See full_test.pde for a more elegant approach to setting up button pins)

Page 17: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Digital I/O Example - Problem Statement

• Write a program to turn on the blue of the RGB LED (connected to digital pin 6) when SW0 is pressed (off otherwise)– Pseudocode:

• define pin assignments• configure pins (which are input, which are output)• loop forever

– if SW0 button is pressed» make pin 6 high

– else» make pin 6 low

Page 18: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Digital I/O Example - Pin Assignment and Configuration• Refine the pseudocode:

– define pin assignments• const byte RGB_blue_pin = 6;• const byte SW0_pin = 12;

– configure pins (in function setup())• RGB_blue_pin

– make it an _______• SW0_pin

– make it an ______• turn on pull-up resistor on

SW0 pin– pin will read high (1) until

pulled low (0)– see schematic

void setup() { pinMode(RGB_blue_pin, OUTPUT); pinMode(SW0_pin, INPUT); digitalWrite(SW0_pin, HIGH);}

OUTPUT

INPUT

Page 19: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Digital I/O Example - loop() Algorithm

• Refine the pseudocode, cont.:– loop forever (use function loop())

• If button is not pressed:– voltage on button pin 12 will be _______– make pin 6 voltage low (LED will go off or stay off)

• If button is pressed:– voltage on button pin 12 will be _______– make pin 6 voltage high (LED will go on or stay on)

void loop() { if(digitalRead(SW0_pin) == LOW) { digitalWrite(RGB_blue_pin, HIGH); } else { digitalWrite(RGB_blue_pin, LOW); }}

high (5V)

low (0V)

Page 20: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Digital I/O Example - Arduino Program

• Arduino program• Suppose a change to the

specifications:– LED is on until button

pressed, then off– Contrast mechatronic

approach vs. non-mechatronic

• re-wire, or…• re-program• the mechatronics

approach separates the sensing elements from the control elements

/* Blue_LED_button_cntrl1 - turns on blue LED when SW0 on Experimenter board is pressed, off otherwise*/

/* pin assignments */const byte RGB_blue_pin = 6;const byte SW0_pin = 12;

/* configure pins */void setup() { pinMode(RGB_blue_pin, OUTPUT); pinMode(SW0_pin, INPUT); digitalWrite(SW0_pin, HIGH);}

/* loop forever */void loop(){ if(digitalRead(SW0_pin) == LOW) digitalWrite(RGB_blue_pin, HIGH); else digitalWrite(RGB_blue_pin, LOW);}

Page 21: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

/* Blue_LED_button_cntrl1 - turns on blue LED when SW0 on Experimenter board is pressed, off otherwise*/

/* pin assignments */const byte RGB_blue_pin = 6;const byte SW0_pin = 12;

/* configure pins */void setup() { pinMode(RGB_blue_pin, OUTPUT); pinMode(SW0_pin, INPUT); digitalWrite(SW0_pin, HIGH);}

/* loop forever */void loop(){ if(digitalRead(SW0_pin) == LOW) digitalWrite(RGB_blue_pin, HIGH); else digitalWrite(RGB_blue_pin, LOW);}

Digital I/O Example - Modification

• Modify Arduino program, so that LED is on until button is pressed, then turns off– How?

• Pin assignments?– setup()?

» Need to turn on the LED!

– loop()?» Swap values

of second argument in digitalWrite calls

Page 22: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Comparison of Digital I/O Programs

/* Blue_LED_button_cntrl1 - turns on blue LED when SW0 on Experimenter board is pressed, off otherwise */

/* pin assignments */const byte RGB_blue_pin = 6;const byte SW0_pin = 12;

/* configure pins */void setup() { pinMode(RGB_blue_pin, OUTPUT); pinMode(SW0_pin, INPUT); digitalWrite(SW0_pin, HIGH);}

/* loop forever */void loop(){ if(digitalRead(SW0_pin) == LOW) digitalWrite(RGB_blue_pin, HIGH); else digitalWrite(RGB_blue_pin, LOW);}

/* Blue_LED_button_cntrl2 - turns off blue LED when SW0 on Experimenter board is pressed, on otherwise */

/* pin assignments */const byte RGB_blue_pin = 6;const byte SW0_pin = 12;

/* configure pins */void setup() { pinMode(RGB_blue_pin, OUTPUT); pinMode(SW0_pin, INPUT); digitalWrite(SW0_pin, HIGH); digitalWrite(RGB_blue_pin, HIGH);}

/* loop forever */void loop(){ if(digitalRead(SW0_pin) == LOW) digitalWrite(RGB_blue_pin, LOW); else digitalWrite(RGB_blue_pin, HIGH);}

Page 23: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Analog In with Serial Out

• Read the POT– Note: analog voltage!

• 0 V 0• 5 V 1023

• Blink an LED at a rate proportional to the pot voltage

• Output the pot voltage to the serial monitor

• Initialize with Serial.begin()

• Map voltage to delay• Write a line with

Serial.print or Serial.println

#define MAX_DELAY_TIME 1000 // max delay in ms#define MIN_DELAY_TIME 10 // min delay in ms#define MAX_POT_VALUE 855 // max pot reading#define MIN_POT_VALUE 0 // min pot reading

const byte potPin = 1; // pot output on pin 1const byte ledPin = 6; // blue LED on pin 6unsigned int potVoltage = 0; // value of pot voltageunsigned int delay_ms;void setup() { pinMode(ledPin, OUTPUT); pinMode(potPin, INPUT); Serial.begin(9600); // init serial comm at 9600 bps}void loop() { potVoltage = analogRead(potPin); // read pot delay_ms = map(potVoltage,MIN_POT_VALUE,MAX_POT_VALUE,MIN_DELAY_TIME,MAX_DELAY_TIME); Serial.print("sensor = " ); // print to monitor Serial.print(potVoltage); Serial.print(" delay, ms = " ); Serial.println(delay_ms); // print delay and linefeed digitalWrite(ledPin, HIGH); // turn the LED on delay(delay_ms); // wait for delay_ms digitalWrite(ledPin, LOW); // turn the LED off: delay(delay_ms); // wait for delay_ms } POT_input_Serial_Out.pde

Page 24: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Effect of Using delay()

• Leads to poor (slow) performance as delay time increases

• Try to avoid long delays– Use millis() instead

– Check for time exceeding millis() + delay_time– Ex. POT_in_Serial_Out.pde

• Note also the use of #ifdef for ‘conditional compilation’• Note how roll-over of millis() is handled

Page 25: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Analog Out (PWM) Concept

• No facility exists on most microcontrollers to directly output an analog voltage (i.e., a voltage that varies continuously over the range of 0 to 5V)– Use Pulse Width Modulation (PWM) to approximate

an analog voltage• Digital outputs are capable of 0V or 5V• Over a fraction (ton) of a time period tcycle, keep pin at 5V, the

rest of the time, at 0V– The average voltage is proportional to ton/tcycle, which is called

the ‘Duty Cycle’– See Lab View PWM_demo.vi

5Vtime

Page 26: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

30% dutycycle

Front Panel

Block Diagram

Page 27: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Arduino analogWrite( )

• analogWrite(pin, value);– 0 value 255

• 0% duty cycle --> 0 V --> analogWrite(pin, 0);• 100% duty cycle --> 5 V --> analogWrite(pin, 255);

• fade_example.pde (see next page)

Page 28: Microcontroller Mekatronika, STT Mandala. Isi Kuliah Arsitektur Microcomputer Microcontrollers untuk aplikasi rekayasa –Apa itu microcontroller? –Bagaimana.

Analog Output Example

• Fade the red LED in, then out– duty cycle is

incremented then decremented

– 256 steps• 0% to 100%

const byte ledPin = 3; // red RGB LED on Experimenterconst byte FADE_MAX = 255; // max value for setting duty cycleconst byte FADE_INC = 5; // increment for changing duty cycle

void setup(){ pinMode(ledPin, OUTPUT); }

void loop(){ int fadeValue; // PWM value

// fade in from min to max in increments of 5 points: for(fadeValue = 0 ; fadeValue <= FADE_MAX; fadeValue +=FADE_INC) { analogWrite(ledPin, fadeValue); // sets the value (range from 0 to 255): } // fade out from max to min in increments of 5 points: for(fadeValue = FADE_MAX; fadeValue >= 0; fadeValue -=FADE_INC) { analogWrite(ledPin, fadeValue); // sets the value (range from 0 to 255): } }

fade_example.pde