Anwar Peternak Ayam Petelur dan Ikan Sukabumi

71
Making Things Move, Lighting Things Up and AVR Programming CS4062 - Eoin Brazil - Semester 2 - 2009

description

Anwar Peternak Ayam Petelur Melayani Pesanan : DOC, Pullet Petelur, Mesin Tetas Telur, Microcontroller, Nipple Drinker, Kandang Besi (Iron Cage). Hubungi kami di : 021-910 10 345, 0838 9469 5689, E-mail : [email protected] atau Kunjungi kami di : http://peternaklayer.blogspot.com

Transcript of Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Page 1: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Making Things Move, Lighting Things Up and

AVR ProgrammingCS4062 - Eoin Brazil - Semester 2 - 2009

Page 2: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Motion linear or

rotary

conversion issues

Types DC

Servo

Stepper

Gearhead

Servos and Motors

Servo

DC Motor

Stepper

Gearhead

Page 3: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

2 Connections Continual spin, given current & voltage

Reversing current, reverses the direction

Increasing the voltage, spins faster, decreasing the voltage, slows the spin

High speed but low torque

Gearbox can add torque but at the expense of speed

DC Motor

Page 4: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

DC Motor Example

Page 5: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

DC Motor Example

Page 6: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

DC Motor Example

Page 7: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Three Pieces

Page 8: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

DC Motor with gearbox Not fast but provide more torque

Servo Motor Gearhead motor with position feedback

Feedback is often from potentiometer

Pulsing the motor moves it to particular position within 180 degree range

Can’t move 360 degrees but can be positioned precisely within the 180 degree range

Gearhead Motor

Servo

Gearhead

Page 9: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Precise positioning & 360 degrees range

Move in discrete steps around a circle

A 200 step motor would move 1.8 degrees per step around the full 360 degrees

Continuous rotation in either direction

Good torque

Complex to connect

Stepper Motor

Page 10: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Linear Motion

Pull or Push

Types Solenoid

Actuator

Microactuator

Solenoids and Actuators

Microactuators

Actuator

Solenoid

Page 11: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Motor Characteristics gears or direct

rated voltage

current (efficiency) - stall / running

speed - spin / rpm, rps, Hz

torque

size, shaft diameter, shaft length

position resolution (Servos & Steppers)

Page 12: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Advanced Mediation Lisa McElligott, 2000 interactive confessional box

used real confessional box

confessor was computer program

interacted using a voice interface.

scripted interactions with random noises to add to immersion

suspension of disbelief

realism

Page 13: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Weave Mirror

Side and back views

Mechanical mirror

Any person standing in front of one of these pieces is instantly reflected on its surface.

Uses video cameras, motors and computers to achieve mirroring

Sound aspect - soothing sound

Daniel Rozin, Weave Mirror, 2007

Page 14: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Weave Mirror Daniel Rozin,

Weave Mirror, 2007

Page 15: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Organic Energy Cloud

Page 16: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Motorised Cloud

Page 17: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

PWM Analog input / output

Duration of the digital pulse of voltage

Microcontroller - HIGH 5V or LOW 0V

``Fake’’ it using PWM

Duty cycle, ratio from low to high to low cycle

LED dimming, DC Motor speed control, Piezo speakers, RC Servo positioning

Page 18: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Pulse Width Modulation

Page 19: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Wiring Diagram

Schematic Diagram

Page 20: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Servo Motor Connections on Arduino

Black wire would go to Grd pin

Red wire would go to 5V power pin

White wire would go to one of the digital pins on the board

Colours can vary, Ground (black or brown), Power (red), Control (orange, yellow or white)

RC Servo Motor

Page 21: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

/* * NewSerialServo * -------------- * Servo control from the Serial port * * Alteration of the control interface to use < and > keys * to slew the servo horn left and right. Works best with * the Linux/Mac terminal "screen" program. * * Created 10 December 2007 * copyleft 2007 Brian D. Wendt * http://principialabs.com/ * * Adapted from code by Tom Igoe, http://itp.nyu.edu/physcomp/Labs/Servo */

/** Adjust these values for your servo and setup, if necessary **/ int servoPin = 2; // control pin for servo motor int minPulse = 600; // minimum servo position int maxPulse = 2400; // maximum servo position int turnRate = 100; // servo turn rate increment (larger value, faster rate) int refreshTime = 20; // time (ms) between pulses (50Hz) /** The Arduino will calculate these values for you **/ int centerServo; // center servo position int pulseWidth; // servo pulse width int moveServo; // raw user input long lastPulse = 0; // recorded time (ms) of the last pulse

continuedon next

slide

Page 22: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

/* * NewSerialServo * -------------- * Servo control from the Serial port * * Alteration of the control interface to use < and > keys * to slew the servo horn left and right. Works best with * the Linux/Mac terminal "screen" program. * * Created 10 December 2007 * copyleft 2007 Brian D. Wendt * http://principialabs.com/ * * Adapted from code by Tom Igoe, http://itp.nyu.edu/physcomp/Labs/Servo */

/** Adjust these values for your servo and setup, if necessary **/ int servoPin = 2; // control pin for servo motor int minPulse = 600; // minimum servo position int maxPulse = 2400; // maximum servo position int turnRate = 100; // servo turn rate increment (larger value, faster rate) int refreshTime = 20; // time (ms) between pulses (50Hz) /** The Arduino will calculate these values for you **/ int centerServo; // center servo position int pulseWidth; // servo pulse width int moveServo; // raw user input long lastPulse = 0; // recorded time (ms) of the last pulse

continuedon next

slide

Setup the necessary control values and variables to store

information

Page 23: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

// Main program setupvoid setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin centerServo = maxPulse - ((maxPulse - minPulse)/2); pulseWidth = centerServo; // Give the servo a starting point (or it floats) Serial.begin(9600); Serial.println(" Arduino Serial Servo Control"); Serial.println("Press < or > to move, spacebar to center"); Serial.println(); }

void loop() { // wait for serial input if (Serial.available() > 0) { // read the incoming byte: moveServo = Serial.read(); // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really) if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; } if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; } if (moveServo == 32) { pulseWidth = centerServo; } // stop servo pulse at min and max if (pulseWidth > maxPulse) { pulseWidth = maxPulse; } if (pulseWidth < minPulse) { pulseWidth = minPulse; } }

continuedon next

slide

Page 24: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

// Main program setupvoid setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin centerServo = maxPulse - ((maxPulse - minPulse)/2); pulseWidth = centerServo; // Give the servo a starting point (or it floats) Serial.begin(9600); Serial.println(" Arduino Serial Servo Control"); Serial.println("Press < or > to move, spacebar to center"); Serial.println(); }

void loop() { // wait for serial input if (Serial.available() > 0) { // read the incoming byte: moveServo = Serial.read(); // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really) if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; } if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; } if (moveServo == 32) { pulseWidth = centerServo; } // stop servo pulse at min and max if (pulseWidth > maxPulse) { pulseWidth = maxPulse; } if (pulseWidth < minPulse) { pulseWidth = minPulse; } }

continuedon next

slide

Setup servo its pin, its pulse, and its position. Setup serial connection

for control

Page 25: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

// Main program setupvoid setup() { pinMode(servoPin, OUTPUT); // Set servo pin as an output pin centerServo = maxPulse - ((maxPulse - minPulse)/2); pulseWidth = centerServo; // Give the servo a starting point (or it floats) Serial.begin(9600); Serial.println(" Arduino Serial Servo Control"); Serial.println("Press < or > to move, spacebar to center"); Serial.println(); }

void loop() { // wait for serial input if (Serial.available() > 0) { // read the incoming byte: moveServo = Serial.read(); // ASCII '<' is 44, ASCII '>' is 46 (comma and period, really) if (moveServo == 44) { pulseWidth = pulseWidth - turnRate; } if (moveServo == 46) { pulseWidth = pulseWidth + turnRate; } if (moveServo == 32) { pulseWidth = centerServo; } // stop servo pulse at min and max if (pulseWidth > maxPulse) { pulseWidth = maxPulse; } if (pulseWidth < minPulse) { pulseWidth = minPulse; } }

continuedon next

slide

The serial input controls the servo by the ‘<‘ or ‘>’ and keep its speed within the safe range

Page 26: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

// pulse the servo every 20 ms (refreshTime) with current pulseWidth // this will hold the servo's position if unchanged, or move it if changed if (millis() - lastPulse >= refreshTime) { digitalWrite(servoPin, HIGH); // start the pulse delayMicroseconds(pulseWidth); // pulse width digitalWrite(servoPin, LOW); // stop the pulse lastPulse = millis(); // save the time of the last pulse } }// END of Main program

Page 27: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

// pulse the servo every 20 ms (refreshTime) with current pulseWidth // this will hold the servo's position if unchanged, or move it if changed if (millis() - lastPulse >= refreshTime) { digitalWrite(servoPin, HIGH); // start the pulse delayMicroseconds(pulseWidth); // pulse width digitalWrite(servoPin, LOW); // stop the pulse lastPulse = millis(); // save the time of the last pulse } }// END of Main program

Pulse the servo every 20ms, this is where the desired change actually happens and its based

on the previous serial input

Page 28: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Types and contacts Knives and toggles Single pole = control of one circuit

Double pole = two circuits controlled at once

Single throw = one path for circuit

Double throw = two paths for circuit

Foot, tape / mat, roller, hair trigger, tilt, magnetic / reed

Switches

Knive (SPST)

Toggle (SPDT)

Page 29: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Practical switching Arduino looks for 0V (low) to 5V (high)

Digital inputs float between these values

Resistor “pulls” input to ground (0 volts)

Pressing switch “pushes” input to 5 volts

Switch pressed = HIGH, not pressed = LOW

setup(): pinMode(myPin,INPUT) loop(): digitalRead(myPin)

High and Low

Page 32: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Kinematics Gears and mechanical

models Geometry of pure motion without

reference to force or mass

Cornell University Library, Kinematic Models for Design Digital Library (KMODDL)

Tutorials, models, e-books, e.g. Linkages

Chapter 3 in Building Robot Drive Trains

Examples from www.flying-pig.co.uk

Page 34: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Arduino Library Software Servo Library

attach(int) Turn a pin into a servo driver.

detach() Release a pin from servo driving.

write(int) Set the angle of the servo in degrees, 0 to 180.

read() return that value set with the last write().

attached() return 1 if the servo is currently attached.

refresh() must call once every 50ms to keep servos updated, won't call more than every 20ms

setMinimumPulse(uint16_t) set the duration of the 0 degree pulse in microseconds. (default minimum value is 544 microseconds)

setMaximumPulse(uint16_t) set the duration of the 180 degree pulse in microseconds. (default maximum pluse value is 2400 microsconds)

Need to first send position with write() before you can receive any control signals

Page 35: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Projects and Prototyping Trade-offs

Page 36: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Projects and Prototyping Trade-offs

Re-programmable

Page 37: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Projects and Prototyping Trade-offs

Size matters

Page 38: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Stores charge I = C * dV/dt

removal of electrical noise

With resistors RC Circuit, parallel or series

low-pass or high-pass filtering

Capacitors

Page 39: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

BLK-0BRN-1RED-2ORN-3YEL-4GRN-5BLU-6VIO-7GRY-8WHT-9

BLK-0BRN-1RED-2ORN-3YEL-4GRN-5BLU-6VIO-7GRY-8WHT-9

BLK-0BRN-1RED-2ORN-3YEL-4GRN-5BLU-6VIO-7GRY-8WHT-9

GLD 0.1SLV 0.01

BLK-1BRN-10RED-100ORN-1KYEL-10K

GRN-100KBLU-1MVIO-10M

GLD ±±±± 5%SLV ±±±± 10%

RED ±±±± 2%BRN ±±±± 1%

GRN ±±±± 0.5%BLU- ±±±± 0.25%VIO ±±±± 0.1%

BRN-100ppmRED-50ppmORN-15ppmYEL-25ppm

1st Digit 2nd Digit 3rd Digit

Multiplier Tolerance

TemperatureCoefficient

276 !!!! ±±±± 5%

47.5 K !!!! ±±±± 1%

10K !!!! ±±±± 5%

Resistor Color Code

6 - band Color Code

5 - band Color Code

4-band Color Code

GRY-8

Page 40: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Measuring Resistance

Page 41: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Measuring Voltage

Page 42: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Diodes LEDs, Zener, Schottky, Photo Pass current in one direction

only Forward voltage drop

e.g. forward voltage drop of 0.7 V in circuit where input is 5V will have voltage of 4.3V on its far side

Rectification Removal of negative voltages from signal, i.e. a

bridge rectifier

LED, 1.6V forward voltage drop, current limit 36mA, circuit total voltage 5V.

VR = 5 - 1.6 = 3.4V

R = V / I = 3.4 / 0.036 = 94.44 Ohm (at least 100 Ohm)

P = V * I = 3.4 * 0.036 = 0.1224 W (at least 0.125W)

Page 43: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

RGB LEDs

Page 44: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

RGB LEDs

Page 45: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

RGB LEDs Ambient orb Cube of LEDS

Page 46: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

RGB LEDs TiniTinct, Arduino-based monome compatible

Page 47: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

AVR Programmer

Page 48: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

AVR ATTiny13 Blinky

Page 49: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

AVR ATTiny13 Blinky

Page 50: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms*/

#include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU#include <util/delay.h>#include "pin_macros.h" // Leah Buechley's pin macros for AVRs - very useful

int main(void){ // Set Port B pins for 3 and 4 as outputs

b0_output; //initialize LED pinb1_output; //initialize LED pinb0_high; //LED is offb1_high; //LED is off

DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop{

// Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535);

}return 1;

}

Page 51: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms*/

#include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU#include <util/delay.h>#include "pin_macros.h" // Leah Buechley's pin macros for AVRs - very useful

int main(void){ // Set Port B pins for 3 and 4 as outputs

b0_output; //initialize LED pinb1_output; //initialize LED pinb0_high; //LED is offb1_high; //LED is off

DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop{

// Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535);

}return 1;

}

Include the libraries and set the speed of chip

Page 52: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms*/

#include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU#include <util/delay.h>#include "pin_macros.h" // Leah Buechley's pin macros for AVRs - very useful

int main(void){ // Set Port B pins for 3 and 4 as outputs

b0_output; //initialize LED pinb1_output; //initialize LED pinb0_high; //LED is offb1_high; //LED is off

DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop{

// Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535);

}return 1;

}

Setup LED pins, Data Direction Register and

turn LEDS off.

Page 53: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

/* Two LEDs, tied to pin b0 and to b1 which correspond to physical pins 5 and 6 on ATTINY13 are turned on for 100ms and then off for 200ms*/

#include <avr/io.h> #define F_CPU 1000000 // set to 1 MHz as delay.h needs F_CPU#include <util/delay.h>#include "pin_macros.h" // Leah Buechley's pin macros for AVRs - very useful

int main(void){ // Set Port B pins for 3 and 4 as outputs

b0_output; //initialize LED pinb1_output; //initialize LED pinb0_high; //LED is offb1_high; //LED is off

DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)

for ( ; 1==1 ; ) // loop while 1 equals 1 - forever - C style loop{

// Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on) b0_low; //LED is on b1_low; //LED is on _delay_loop_2(65535); b0_high; //LED is off b1_high; //LED is off _delay_loop_2(65535);

}return 1;

}

Loop - Turn the pins on, wait for 262ms, and

turn off. Repeat.

Page 54: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

Page 55: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

When Make is run, needs a target

Page 56: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

Use avr-gcc to compile ‘c’ program

Page 57: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

Use avr-gcc on `o’ obj file to create `elf ’ file

Page 58: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

Use avr-objcopy to create rom from elf file

Page 59: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

Use avrdube and a usbtiny to copy to the

ATtiny13 chip

Page 60: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

# Makefile for sample_led_program for ATtiny13 chip# Note: to use makefile with a different chip change all# mmcu statements (-mmcu=attiny13) to reflect new chip # also change the part option (-p t13) for the avrdude install command

# default target when "make" is run w/o argumentsall: sample_led_program.rom

# compile sample_led_program.c into sample_led_program.osample_led_program.o: sample_led_program.c avr-gcc -c -g -O0 -Wall -mmcu=attiny13 sample_led_program.c -o sample_led_program.o

# link up sample_led_program.o into sample_led_program.elfsample_led_program.elf: sample_led_program.o avr-gcc sample_led_program.o -Wall,-nm,-Map=sample_led_program.map,--cref -mmcu=attiny13 -o sample_led_program.elf

# copy ROM (FLASH) object out of sample_led_program.elf into sample_led_program.romsample_led_program.rom: sample_led_program.elf avr-objcopy -O ihex sample_led_program.elf sample_led_program.rom

# command to program chip (invoked by running "make install")install: avrdude -c usbtiny -p t13 -e -U flash:w:sample_led_program.rom

# command to clean up junk (no source files) (invoked by "make clean")clean: rm -f *.o *.rom *.elf *.map *~

Clean up the files created

Page 61: Anwar Peternak Ayam Petelur dan Ikan Sukabumi
Page 62: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Call the Makefile

Page 63: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Call the Install part of Makefile which calls avrdude

Page 64: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Run avrdude, it reads the rom, writes it to the chip and verifies

this process

Page 65: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Things To Remember Safety first, last, and always

do not take another person’s work about the state of a piece of equipment, always check yourself and make sure its safe for you to work

use the right tool for the job

treat each tool with respect and rack them back in their correct place when they are not in use, don’t leave a dangerous tool loose when it can harm somebody else

don’t leave your safety glasses on the bench or in your pocket

don’t work on a live circuit, turn the power off first

don’t solder in an enclosed area without proper ventilation

read the datasheet first and double check it to be sure

get twice or three times the number of parts that you need for your circuit, you will make mistakes and sometimes you will have to throw an almost finished piece away

Page 66: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Data Sheets

Manufacturer’s details for particular electronic product typical device performance

minimum and maximum requirements and characteristics

device tolerances, what you can do without harming it

suggestions for applications, uses, or just hints

You don’t need to understand everything only need to focus on the parts that are of interest to your current problem

Page 67: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

2535HS–AVR–10/07

Features• High Performance, Low Power AVR® 8-Bit Microcontroller

• Advanced RISC Architecture

– 120 Powerful Instructions – Most Single Clock Cycle Execution

– 32 x 8 General Purpose Working Registers

– Fully Static Operation

– Up to 20 MIPS Througput at 20 MHz

• High Endurance Non-volatile Memory segments

– 1K Bytes of In-System Self-programmable Flash program memory

– 64 Bytes EEPROM

– 64K Bytes Internal SRAM

– Write/Erase cyles: 10,000 Flash/100,000 EEPROM

– Data retention: 20 years at 85°C/100 years at 25°C(1)

– Optional Boot Code Section with Independent Lock Bits

In-System Programming by On-chip Boot Program

True Read-While-Write Operation

– Programming Lock for Software Security

• Peripheral Features

– One 8-bit Timer/Counter with Prescaler and Two PWM Channels

– 4-channel, 10-bit ADC with Internal Voltage Reference

– Programmable Watchdog Timer with Separate On-chip Oscillator

– On-chip Analog Comparator

• Special Microcontroller Features

– debugWIRE On-chip Debug System

– In-System Programmable via SPI Port

– External and Internal Interrupt Sources

– Low Power Idle, ADC Noise Reduction, and Power-down Modes

– Enhanced Power-on Reset Circuit

– Programmable Brown-out Detection Circuit

– Internal Calibrated Oscillator

• I/O and Packages

– 8-pin PDIP/SOIC: Six Programmable I/O Lines

– 20-pad MLF: Six Programmable I/O Lines

• Operating Voltage:

– 1.8 - 5.5V for ATtiny13V

– 2.7 - 5.5V for ATtiny13

• Speed Grade

– ATtiny13V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V

– ATtiny13: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V

• Industrial Temperature Range

• Low Power Consumption

– Active Mode:

1 MHz, 1.8V: 240µA

– Power-down Mode:

< 0.1µA at 1.8V

8-bit

Microcontroller

with 1K Bytes

In-System

Programmable

Flash

ATtiny13V

ATtiny13

Summary

Rev. 2535HS–AVR–10/07

One page overview of models and capabilities

Date

Models

If it is the short summaryor longer full datasheet

Example: ATtiny13

Page 68: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Example: ATtiny13

2 ATtiny132535HS–AVR–10/07

Pin Configurations Figure 1. Pinout ATtiny13

Overview The ATtiny13 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced

RISC architecture. By executing powerful instructions in a single clock cycle, the

ATtiny13 achieves throughputs approaching 1 MIPS per MHz allowing the system

designer to optimize power consumption versus processing speed.

1234

8765

(PCINT5/RESET/ADC0/dW) PB5(PCINT3/CLKI/ADC3) PB3

(PCINT4/ADC2) PB4GND

VCCPB2 (SCK/ADC1/T0/PCINT2)PB1 (MISO/AIN1/OC0B/INT0/PCINT1)PB0 (MOSI/AIN0/OC0A/PCINT0)

8-PDIP/SOIC

12345

20-QFN/MLF

1514131211

20 19 18 17 16

6 7 8 9 10

(PCINT5/RESET/ADC0/dW) PB5(PCINT3/CLKI/ADC3) PB3

NCNC

(PCINT4/ADC2) PB4

NC

NC

GN

DN

CN

C

VCCPB2 (SCK/ADC1/T0/PCINT2)NCPB1 (MISO/AIN1/OC0B/INT0/PCINT1)PB0 (MOSI/AIN0/OC0A/PCINT0)

NC

NC

NC

NC

NC

NOTE: Bottom pad should be soldered to ground.NC: Not Connect

12345

10-QFN/MLF

10 9 8 7 6

(PCINT5/RESET/ADC0/dW) PB5(PCINT3/CLKI/ADC3) PB3

NC(PCINT4/ADC2) PB4

GND

VCCPB2 (SCK/ADC1/T0/PCINT2)NCPB1 (MISO/AIN1/OC0B/INT0/PCINT1)PB0 (MOSI/AIN0/OC0A/PCINT0)

NOTE: Bottom pad should be soldered to ground.NC: Not Connect

PDIP or SOIC are the only two

package types we'll use. The

other types require SMD soldering.

Date

Page 69: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Example: ATtiny13

4 ATtiny132535HS–AVR–10/07

Interrupt system to continue functioning. The Power-down mode saves the register con-

tents, disabling all chip functions until the next Interrupt or Hardware Reset. The ADC

Noise Reduction mode stops the CPU and all I/O modules except ADC, to minimize

switching noise during ADC conversions.

The device is manufactured using Atmel’s high density non-volatile memory technology.

The On-chip ISP Flash allows the Program memory to be re-programmed In-System

through an SPI serial interface, by a conventional non-volatile memory programmer or

by an On-chip boot code running on the AVR core.

The ATtiny13 AVR is supported with a full suite of program and system development

tools including: C Compilers, Macro Assemblers, Program Debugger/Simulators, In-Cir-

cuit Emulators, and Evaluation kits.

Pin Descriptions

VCC Digital supply voltage.

GND Ground.

Port B (PB5..PB0) Port B is a 6-bit bi-directional I/O port with internal pull-up resistors (selected for each

bit). The Port B output buffers have symmetrical drive characteristics with both high sink

and source capability. As inputs, Port B pins that are externally pulled low will source

current if the pull-up resistors are activated. The Port B pins are tri-stated when a reset

condition becomes active, even if the clock is not running.

Port B also serves the functions of various special features of the ATtiny13 as listed on

page 51.

RESET Reset input. A low level on this pin for longer than the minimum pulse length will gener-

ate a reset, even if the clock is not running. The minimum pulse length is given in Table

12 on page 31. Shorter pulses are not guaranteed to generate a reset.Note: 1.

Data Retention Reliability Qualification results show that the projected data retention failure rate is much

less than 1 PPM over 20 years at 85°C or 100 years at 25!C.

About Code

Examples

This documentation contains simple code examples that briefly show how to use various

parts of the device. These code examples assume that the part specific header file is

included before compilation. Be aware that not all C compiler vendors include bit defini-

tions in the header files and interrupt handling in C is compiler dependent. Please

confirm with the C compiler documentation for more details.

Descriptions of the pins shown in the previous

diagram with comments

Page 70: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Example: ATtiny13

120 ATtiny132535H–AVR–10/07

Electrical Characteristics

Absolute Maximum Ratings*

DC Characteristics

Operating Temperature.................................. -55!C to +125!C *NOTICE: Stresses beyond those listed under “Absolute

Maximum Ratings” may cause permanent dam-

age to the device. This is a stress rating only and

functional operation of the device at these or

other conditions beyond those indicated in the

operational sections of this specification is not

implied. Exposure to absolute maximum rating

conditions for extended periods may affect

device reliability.

Storage Temperature ..................................... -65°C to +150°C

Voltage on any Pin except RESET

with respect to Ground ................................-0.5V to VCC+0.5V

Voltage on RESET with respect to Ground......-0.5V to +13.0V

Maximum Operating Voltage ............................................ 6.0V

DC Current per I/O Pin ............................................... 40.0 mA

DC Current VCC and GND Pins................................ 200.0 mA

TA = -40!C to 85!C, VCC = 1.8V to 5.5V (unless otherwise noted)(1)

Symbol Parameter Condition Min. Typ. Max. Units

VILInput Low Voltage except

RESET pin

VCC = 1.8V - 2.4V

VCC = 2.4V - 5.5V-0.5

0.2VCC

0.3VCC

V

VIHInput High-voltage except

RESET pin

VCC = 1.8V - 2.4V

VCC = 2.4V - 5.5V

0.7VCC(3)

0.6VCC(3) VCC +0.5 V

VIL1

Input Low-voltage

CLKI pinVCC = 1.8V - 5.5 -0.5 0.1VCC V

VIH1

Input High-voltage

CLKI pin

VCC = 1.8V - 2.4V

VCC = 2.4V - 5.5V

0.8VCC(3)

0.7VCC(3) VCC +0.5 V

VIL2

Input Low-voltage

RESET pinVCC = 1.8V - 5.5 -0.5 0.2VCC V

VIH2

Input High-voltage

RESET pinVCC = 1.8V - 5.5 0.9VCC

(3) VCC +0.5 V

VIL3

Input Low-voltage

RESET pin

VCC = 1.8V - 2.4V

VCC = 2.4V - 5.5V-0.5 0.2VCC V

VIH3

Input High-voltage

RESET pin

VCC = 1.8V - 2.4V

VCC = 2.4V - 5.5V

0.7VCC(3)

0.6VCC(3) VCC +0.5 V

VOLOutput Low Voltage(4)

(PB1 and PB0)

IOL = 20 mA, VCC = 5V

IOL = 10 mA, VCC = 3V

0.7

0.5

V

V

VOL1Output Low Voltage(4)

(PB5, PB4, PB3 and PB2)

IOL = 10 mA, VCC = 5V

IOL = 5 mA, VCC = 3V

0.7

0.5

V

V

VOL2

Output Low Voltage(4)

(PB5, Reset used as I/O)

IOL =TBD mA, VCC =

TBDV

IOL =TBD mA, VCC =

TBDV

V

V

VOHOutput High-voltage(5)

( PB1 and PB0)

IOH = -20 mA, VCC = 5V

IOH = -10 mA, VCC = 3V

4.2

2.5

V

V

Descriptions of the what maximum ratings for device are. Running at these or beyond will

damage the device

Page 71: Anwar Peternak Ayam Petelur dan Ikan Sukabumi

Example: ATtiny13

121

ATtiny13

2535H–AVR–10/07

Notes: 1. All DC Characteristics contained in this data sheet are based on simulation and characterization of other AVR microcontrol-

lers manufactured in the same process technology. These values are representing design targets, and will be updated after

characterization of actual silicon.

2. “Max” means the highest value where the pin is guaranteed to be read as low.

3. “Min” means the lowest value where the pin is guaranteed to be read as high.

4. Although each I/O port can sink more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V for PB5, PB1:0, 10 mA

at VCC = 5V, 5 mA at VCC = 3V for PB4:2) under steady state conditions (non-transient), the following must be observed:

1] The sum of all IOL, for all ports, should not exceed 60 mA.

If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greater

than the listed test condition.

5. Although each I/O port can source more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V for PB5, PB1:0, 10

mA at VCC = 5V, 5 mA at VCC = 3V for PB4:2) under steady state conditions (non-transient), the following must be observed:

1] The sum of all IOH, for all ports, should not exceed 60 mA.

If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current

greater than the listed test condition.

VOH1Output High-voltage(5)

(PB4, PB3 and PB2)

IOH = -10 mA, VCC = 5V

IOH = -5 mA, VCC = 3V

4.2

2.5

V

V

VOH2Output High-voltage(5)

(PB5, Reset used as I/O)

IOH = - TBD mA, VCC =

TBDV

IOH = - TBD mA, VCC =

TBDV

V

V

IILInput Leakage

Current I/O Pin

Vcc = 5.5V, pin low

(absolute value)1 µA

IIHInput Leakage

Current I/O Pin

Vcc = 5.5V, pin high

(absolute value)1 µA

RRST Reset Pull-up Resistor 30 80 k!

Rpu I/O Pin Pull-up Resistor 20 50 k!

ICC

Power Supply Current

Active 1MHz, VCC = 2V 0.35 mA

Active 4MHz, VCC = 3V 1.8 mA

Active 8MHz, VCC = 5V 6 mA

Idle 1MHz, VCC = 2V 0.08 0.2 mA

Idle 4MHz, VCC = 3V 0.41 1 mA

Idle 8MHz, VCC = 5V 1.6 3 mA

Power-down modeWDT enabled, VCC = 3V < 5 10 µA

WDT disabled, VCC = 3V < 0.5 2 µA

VACIOAnalog Comparator Input

Offset Voltage

VCC = 5V

Vin = VCC/2< 10 40 mV

IACLKAnalog Comparator Input

Leakage Current

VCC = 5V

Vin = VCC/2-50 50 nA

tACPDAnalog Comparator

Propagation Delay

VCC = 2.7V

VCC = 4.0V

750

500ns

TA = -40"C to 85"C, VCC = 1.8V to 5.5V (unless otherwise noted)(1) (Continued)

Symbol Parameter Condition Min. Typ. Max. Units

Some chips have internal resistors which you can use for inputs, here is where you can find their value