Mikrokontroler AVR Seri Tiny

AVR Tiny merupakan mikrokontroler yang mengesankan dan ekonomis. Secara fisik cukup kecil, namun di dalamnya tidak demikian. AVR Tiny mengusung arsitektur AVR RISC yang kompatibel dengan semua mikrokontroler AVR. Mereka memiliki In System Programming (ISP), Flash Memory, Internal EEPROM dan RAM, Timer, Interupsi, Analog Comparator, ADC dan yang lainnya.

Berikut adalah beberapa anggota keluarga ATtiny, namun tidak semuanya tersedia di Indonesia:


  • ATtiny11 1-Kbyte In-System programmable Flash Program Memory, 32 byte SRAM, Up to 6 MIPS throughput at 6 Mhz.

  • ATtiny12 1-Kbyte In-System programmable Flash Program Memory, 32 byte SRAM, 64 Byte EEPROM, Up to 8 MIPS throughput at 8 Mhz.

  • ATtiny13 1-Kbyte In-System programmable Flash Program Memory, 64-Byte SRAM, 64-Byte EEPROM, 32-Byte Register File, 4-channel 10-bit A/D, Up to 20 MIPS throughput at 20 Mhz.

  • ATtiny15L 1-Kbyte In-System programmable Flash Program Memory, 64-Byte EEPROM, 32-Byte Register File, 4-channel 10-bit A/D, Up to 1.6 MIPS throughput at 1.6 MHz.

  • ATtiny2313 2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. USI--Universal Serial Interface, Full Duplex UART. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. Compatible with Obsolete AT90S2313.

  • ATtiny24 2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. 8-bit and 16-bit timer/counters with PWM, 10-bit ADC, USI-Universal Serial Interface, On-chip Temperature Sensor. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny84
    * 4KB version: ATtiny44

  • ATtiny25 2K Bytes of In-System Self-Programmable Flash, 128 Bytes In-System Programmable EEPROM, 128 Bytes Internal SRAM. Two 8-bit timer/counters with PWM and prescaler, 10-bit ADC, USI-Universal Serial Interface. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny85
    * 4KB version: ATtiny45

  • ATtiny26 2K Flash Program Memory, 128 Bytes SRAM, 128-Byte EEPROM, 11-Channel 10-bit A/D converter. Universal Serial Interface. High Frequency PWM. Up to 16 MIPS throughput at 16 MHz.

  • ATtiny28L 2K Flash Program Memory, 32 bytes register file, Keyboard interrupt, high-current LED driver, Analog Comparator. Up to 4 MIPS throughput at 4 MHz.

  • ATtiny44 4K Bytes of In-System Self-Programmable Flash, 256 Bytes In-System Programmable EEPROM, 256 Bytes Internal SRAM. 8-bit and 16-bit timer/counters with PWM, 10-bit ADC, USI-Universal Serial Interface, On-chip Temperature Sensor. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny84
    * 2KB version: ATtiny24

  • ATtiny45 4K Bytes of In-System Self-Programmable Flash, 256 Bytes In-System Programmable EEPROM, 256 Bytes Internal SRAM. Two 8-bit timer/counters with PWM and prescaler, 10-bit ADC, USI-Universal Serial Interface. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 8KB version: ATtiny85
    * 2KB version: ATtiny25

  • ATtiny84 8K Bytes of In-System Self-Programmable Flash, 512 Bytes In-System Programmable EEPROM, 512 Bytes Internal SRAM. 8-bit and 16-bit timer/counters with PWM, 10-bit ADC, USI-Universal Serial Interface, On-chip Temperature Sensor. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 4KB version: ATtiny44
    * 2KB version: ATtiny24

  • ATtiny85 8K Bytes of In-System Self-Programmable Flash, 512 Bytes In-System Programmable EEPROM, 512 Bytes Internal SRAM. Two 8-bit timer/counters with PWM and prescaler, 10-bit ADC, USI-Universal Serial Interface. debugWIRE for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 V operation.
    * 4KB version: ATtiny45
    * 2KB version: ATtiny25

Menggunakan Perintah RCTIME pada PBASIC

Dalam PBASIC, perintah RCTIME dapat digunakan untuk mengukur waktu charge dan discharge dari sebuah rangkaian resistor/kapasitor. Untuk mengukur resistansi dan kapasitansi, gunakan sensor resistif atau kapasitif seperti thermistor atau sensor kelembaban kapasitif atau potensiometer. Dalam penginderaan yang lebih luas, RCTIME dapat berfungsi sebagai stopwatch yang presisi untuk kejadian yang berdurasi sangat pendek.

Ketika RCTIME di-eksekusi, perintah ini akan memulai sebuah counter (menghitung jumlah unit waktu). Counter ini akan segera berhenti setelah pin yang ditentukan tidak lagi dalam kondisi 0 atau 1 (tergantung pada definisi yang diberikan). Gambar di bawah menunjukkan rangkaian RC yang cocok untuk digunakan dengan perintah RCTIME. Rangkaian A disarankan, karena ambang logika BASIC Stamp adalah sekitar 1.4 Volt. Ini berarti bahwa tegangan yang diamati pada pin akan dimulai pada 5V, kemudian turun hingga 1.4V (span 3.6V) sebelum RCTIME berhenti. Dengan rangkaian B, tegangan akan mulai pada 0V kemudian naik hingga 1.4V (span 1.4V) sebelum RCTIME berhenti.

Sebelum RCTIME di-eksekusi, kapasitor harus ditempatkan pada keadaan yang ditentukan dalam perintah RCTIME. Sebagai contoh, untuk rangkaian A, kapasitor harus di-charge hingga penuh (5V) terlebih dahulu.

Berikut adalah urutan instruksi tipikal untuk rangkaian A (asumsi menggunakan pin 7)"

result VAR Word
HIGH 7
PAUSE 1
RCTIME 7, 1, result
DEBUG DEC ? result
END


Pada BASIC Stamp 2, unit waktu adalah 2 µs, sementara pada BASIC Stamp 2p, unit waktu adalah 0.75 µs.

Menggunakan PWM pada ATmega8535

Kebanyakan mikrokontroler AVR memiliki kanal PWM di dalam chip-nya. Fasilitas ini membuat penggunaan PWM menjadi lebih sederhana dan lebih akurat. Timer atau Counter dalam AVR dapat digunakan dalam modus PWM tanpa mengganggu fungsi dasar timer. Timer1 dapat di-konfigurasi dalam modus PWM dengan men-setting bit PWM11 dan PWM10 dalam register TCCR1A.




























PWM11PWM10Description
00PWM operation of Timer/Counter1 is disabled
01Timer/Counter1 in 8-bit PWM Mode
10Timer/Counter1 in 9-bit PWM Mode
11Timer/Counter1 in 10-bit PWM Mode

Prescale dapat dipilih melalui register TCCR1B.

Lebar pulsa di-load ke dalam timer output compare register OCR1A (OCR1AH dan OCR1AL) dan OCR1B (OCR1BH dan OCR1BL). Timer/Counter1 bertindak sebagai up/down counter, menghitung naik dari 0000H hingga TOP, kemudian berbalik menghitung turun hingga nol, demikian seterusnya. Ketika nilai counter sama dengan isi dari 10-bit OCR1A atau OCR1B, pin OC1A dan OC1B di-set atau di-clear sesuai dengan setting bit dari COM1A1/COM1A0 atau COM1B1/COM1B0 dalam Timer/Counter1 Control Register (TCCR1A).






















PWM ResolutionTimer Top ValueFrequency
8-bit PWM$00FF (255)Ftck1/510
9-bit PWM$01FF (511)Ftck1/1022
10-bit PWM$03FF (1023)Ftck1/2046




























COM1X1COM1X0Effect on OCX1
00Not Connected
01Not Connected
10Cleared on compare match, up-counting. Set on compare match down-counting (non-inverted PWM)
11Cleared on compare match, down-counting. Set on compare match up-counting (inverted PWM)

Berikut adalah contoh dalam Bahasa C:

#define PULSE_WIDTH 0x40

void pwm_start(){
OCR1AL = PULSE_WIDTH; //Load Pulse width
OCR1AH = 0;
DDRD |= (1<<5); //PortD.5 as o/p
TCCR1A = 0x81; //8-bit, Non-Inverted PWM
TCCR1B = 1; //Start PWM
}

Frekuensi yang dapat digunakan untuk aplikasi motor, tergantung pada kualitas motor dan kemampuan H-bridge yang digunakan. Motor yang digunakan pada power window mobil atau mainan, bekerja dengan baik pada frekuensi 500 Hz hingga 1 kHz. Beberapa motor kelas "high-end" bekerja dengan mulus pada 20 kHz. H-bridge 754410 dan L293D telah diuji dan berjalan dengan baik pada frekuensi 5 kHz.

Berikut adalah contoh pemrograman dengan BASCOM-AVR:

$regfile = "m8535.dat"
$crystal = 4000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 50

Dim Dummy As Integer
Dim Potvalue As Integer

Config Pind.5 = Output
Config Pind.4 = Output
Config Timer1 = Pwm , Prescale = 64 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Enable Interrupts
Enable Timer1
Config Adc = Single , Prescaler = 64
Start Adc
Ocr1ah = 0
Ocr1ah = 0
Do
Potvalue = Getadc(0)
Dummy = Potvalue / 2
Dummy = Dummy / 2
Ocr1bl = Dummy
Loop



NEXT SYSTEM Robotics Learning Center menyelenggarakan sejumlah program pelatihan seputar pemrograman mikrokontroler dan aplikasinya dalam robotika. Pelatihan diselenggarakan secara reguler maupun inhouse, terbuka untuk siswa kelas 2 hingga kelas 12, mahasiswa, profesional dan umum.Berikut adalah kelas pelatihan yang saat ini diselenggarakan:


  • Pemrograman Robot Lego Mindstorms NXT dengan NXT-G

  • Pemrograman Robot Lego Mindstorms NXT dengan Bahasa C

  • Pemrograman Robot Lego Mindstorms NXT dengan Bahasa Java

  • Pemrograman Robot Lego Mindstorms NXT dengan Microsoft Robotics Studio

  • Pemrograman Robot Boe-Bot dengan Bahasa BASIC

  • Pemrograman Robot Scribbler dengan Bahasa BASIC

  • Pemrograman Robot Edukasi dengan Bahasa BASIC

  • Pemrograman Robot Edukasi dengan Bahasa C

  • Pemrograman Robot Edukasi dengan Bahasa Pascal

  • Pemrograman Mikrokontroler BASIC Stamp dengan Bahasa BASIC

  • Pemrograman Mikrokontroler MCS-51 dengan Bahasa BASIC

  • Pemrograman Mikrokontroler MCS-51 dengan Bahasa C

  • Pemrograman Mikrokontroler AVR dengan Bahasa BASIC

  • Pemrograman Mikrokontroler AVR dengan Bahasa C

  • Pemrograman Mikrokontroler AVR dengan Bahasa Pascal

  • Pemrograman Mikrokontroler PIC dengan Bahasa BASIC

  • Pemrograman Mikrokontroler PIC dengan Bahasa C

  • Pemrograman Mikrokontroler PIC dengan Bahasa Pascal


Disamping itu, NEXT SYSTEM Robotics Learning Center membuka program pelatihan Robotics for Kidz. Program ini ditujukan bagi anak usia 8-12 tahun.

Untuk informasi lebih lanjut, silahkan menghubungi:

NEXT SYSTEM
Robotics Learning Center
ITC Kosambi F2
Jl. Baranang Siang 6-8
Bandung 40112
Telp. (+62 22) 4222062, 70775874
Email: info@nextsys.web.id


http://edukasi.nextsys.web.id

Mikrokontroler PIC

Walaupun mikrokontroler yang satu ini excellent, populasi pemakai di Indonesia, tidak terlalu banyak. Mungkin dikarenakan faktor harga, yang umumnya, hampir 2-3 kali lipat dibanding produk sejenis dari Atmel.

Ada beberapa jenis yang walaupun agak sulit ditemukan, tapi bisa dicari, seperti PIC 16F877A dan PIC 16F84A. Untuk pemula, PIC 16F88 bisa disarankan, karena sudah memiliki internal ADC (7 channel) dan menyediakan fasilitas PWM walaupun cuma satu. Bandingkan dengan PIC 16F84A yang hanya menyediakan input digital saja.

Mikrokontroler ini agak sedikit unik. Saya sebut unik karena sangat berbeda dengan pakem Intel yang selama ini kita ketahui. Yang menarik lagi adalah, instructions set nya cuma 35 (low end) hingga 80 (high end) saja. Ini pula yang disebut sebagai "keterbatasan" selain cuma memiliki akumulator tunggal.

Berikut adalah penjelasan teknis dari beberapa tipe PIC yang kebetulan ada di tangan saya:

PIC16F88 (18 pin)

This powerful (200 nanosecond instruction execution) yet easy–to-program (only 35 single word instructions) CMOS Flash-based 8-bit microcontroller packs Microchip’s powerful PIC® architecture into an 18-pin package and is upwards compatible with the PIC16C7x, PIC16C62xA, PIC16C5X and PIC12CXXX devices. The PIC16F88 features 8 MHz internal oscillator, 256 bytes of EEPROM data memory, a capture/compare/PWM, an Addressable USART, a synchronous serial port that can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus, 7 channels of 10-bit Analog-to-Digital (A/D) converter and 2 Comparators that make it ideal for advantage analog / integrated level applications in automotive, industrial, appliances and consumer applications.

PIC16F877A (40 pin)

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip's powerful PIC® architecture into an 40- or 44-pin package and is upwards compatible with the PIC16C5X, PIC12CXXX and PIC16C7X devices. The PIC16F877A features 256 bytes of EEPROM data memory, self programming, an ICD, 2 Comparators, 8 channels of 10-bit Analog-to-Digital (A/D) converter, 2 capture/compare/PWM functions, the synchronous serial port can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus and a Universal Asynchronous Receiver Transmitter (USART). All of these features make it ideal for more advanced level A/D applications in automotive, industrial, appliances and consumer applications.

PIC 16F872 (28 pin)

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip's powerful PIC® architecture into an 28-pin package and is upwards compatible with the PIC16C5X, PIC12CXXX and PIC16C7X devices. The PIC16F872 features 64 bytes of EEPROM data memory, self programming, an ICD, 5 channels of 10-bit Analog-to-Digital (A/D) converter, 2 additional timers, a capture/compare/PWM functions and the synchronous serial port can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus. All of these features make it ideal for more advanced level A/D applications in automotive, industrial, appliances and consumer applications.

PIC 16F84A (18 pin)

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS Flash/EEPROM-based 8-bit microcontroller packs Microchip’s powerful PIC® architecture into an 18-pin package. The same device can be used for prototyping and production and the end application can be easily updated without removing the device from the end product via the ICSP. Easily adapted for automotive, industrial, appliances low power remote sensors, electronic locks and security applications.

Menghubungkan BASIC Stamp dengan Modul Sonar SRF04

Mikrokontroler harus merubah level logika pada pin INIT pada modul sonar untuk memulai sebuah pembacaan. Setelah pin input INIT menjadi LOW, modul sonar akan mengirimkan sebuah ping. Setelah itu, output ECHO menjadi HIGH dan akan menjadi LOW kembali setelah modul menerima sebuah pantulan.

Perintah PULSOUT mengirimkan sebuah pulsa high pada pin INIT pada modul sonar. Perintah PULSIN mengukur waktu yang diperlukan gelombang pantul untuk kembali. Setelah merekam pembacaan, mikrokontroler menunggu 10 ms untuk memberikan waktu pada modul untuk melakukan reset secara baik.

Waktu eksekusi dari perintah PULSIN adalah berbeda untuk pin yang berbeda. Bila kita merubah pin yang digunakan, perintah PULSIN dalam subrutin sr_sonar di atas mungkin akan kehilangan tepi naik dari input ECHO dan mengembalikan nilai pembacaan nol. Menggunakan perintah RCTIME akan memperbaiki masalah ini. Trik lain adalah memberikan sedikit jeda dengan sebuah perintah dummy sebelum mengukur waktu echo dengan perintah RCTIME (lihat contoh di bawah). Kita perlu melakukan percobaan untuk menentukan kode terbaik untuk aplikasi yang dibuat.

'
' Devantech SRF04 Example
'

wDist var word

INIT con 0
ECHO con 1

' CONVERSION FACTORS:
'
' The PULSIN command returns the round-trip echo time in 2us units
' which is equivalent to the one-way trip time in 1us units.
'
' Filename: srf04-1.bs2
' distance = (echo time) / (conversion factor)
'
' use 74 for inches (73.746us per 1 in)
' use 29 for centimeters (29.033us per 1 cm)
'

convfac con 74 ' use inches

'---------------------------------------------

main
gosub sr_sonar
debug dec wDist, cr
pause 200
goto main

sr_sonar:
pulsout INIT,5 ' 10us init pulse
pulsin ECHO,1,wDist ' measure echo time
wDist=wDist/convfac ' convert to inches
pause 10
return

sr_sonar_2:
pulsout INIT,5 ' 10us init pulse
output INIT ' dummy command (delay)
rctime ECHO,1,wDist ' measure echo time
wDist=wDist/convfac ' convert to inches
pause 10
return

Menggunakan LCD

Penampil LCD cukup mudah ditemukan di pasaran, terutama ukuran 16x2. Harganya pun relatif terjangkau.

Di dalam penggunaannya, hubungan antara mikrokontroler dan LCD dapat menggunakan hubungan 8-bit atau 4-bit. Pilihan kedua lebih banyak digunakan karena akan menghemat pin I/O :) Selain pin data, juga perlu dihubungkan pin RS dan pin E.

Menggunakan penampil LCD 16*2, khususnya dengan mikrokontroler MCS51 dan BASCOM-8051, relatif mudah. Berikut adalah contoh program untuk menampilkan kata HELLO WORLD! pada dua baris LCD:

Config LCD = 16*2
Config lcdpin=pin, db4=p0.4, db5=p0.5, db6=p0.6, db7=p0.7,e=p0.3, rs=p0.2

Cursof Off
Cls
Lcd "Hello"
LowerLine
Lcd "World!"
End