Showing posts with label PIC lesson dan Projek Berkaitan. Show all posts
Showing posts with label PIC lesson dan Projek Berkaitan. Show all posts

Sunday, March 27, 2011

.:Projek PIC-3x3 LED Cube:.


Video yang ditunjukkan diatas adalah salah satu projek yang telah di hasilkan oleh En. Chong Man Lung. Projek ini adalah untuk memprogramkan LED yang di susun secara kuib, dan menyalakan LED tersebut secara row dan column. Pelajar-pelajar sering menganggap projek yang berasaskan LED ini remeh dan senang. Cuba buat dulu kalau nak tahu senang ke susah. Kepada pelajar yang berminat, boleh berjumpa dengan En. Chong Man Lung. Mikropengawal yang digunakan untuk mengawal LED cube ini menggunakan PIC16F877A.




Thursday, March 10, 2011

.:Mengawal Servo Motor dengan PIC16F877A:.

Memandangkan post saya sebelum ini .:Mengawal Servo Motor:. tidak dapat membantu pelajar-pelajar yang menggunakan servo motor, jadi disini saya sertakan contoh/sampel programming dan litarnya sekali. Diharap para pelajar yang menggunakan servo motor untuk mengawal robot arm dan pelajar yang membuat projek Hexapod robot dapat menemui cahaya yang selama ini dalam kegelapan dan seterusnya membawa mereka ke jalan yang benar...hehe :)... Litar dan programming adalah seperti dibawah :



Sambungan servo motor ke PIC16F877A



Thursday, March 3, 2011

.:Mengawal Servo Motor:.

Tempoh untuk menyiapkan projek yang bertemakan PMU Robocon semakin hampir ke penghujungnya. Semakin ramai juga bertungkus lumus menyiapkan sisa-sisa projek yang masih lagi banyak....BANYAK?? Sisa ke? Itu bukannya sisa, itu adalah kerja-kerja yang sepatutnya disiapkan lebih awal, namun dipandang enteng oleh para pelajar, lengah-lengah, balik kampung, facebook, web facebook lebih penting daripada web carian google, web blog saya, hehe, macam-macam lagi, yang baru nak buat litar pun ada, baru nak faham litar lagi la ada....aduhai.....masa genting beginilah baru mula sungguh-sungguh mencari dan mengejar pensyarah...nasib baik saya baik..hehe...jadi di kesempatan ini, memandangkan adanya pelajar yang menggunakan servo motor untuk mengawal 'robot arm', jadi saya tunjukkan cara untuk mengawal servo motor menggunakan mikropengawal. Lihat, baca dan fahamkan rajah di bawah. Klik pada gambar untuk mendapatkan saiz yang lebih besar.


Bagaimana nak buat programming? Di gambar tu saya dah letak programming yang utama. selebihnya cuba buat sendiri dulu. Cuba ingat balik subjek E3062, kalau lupa, sama ada terlebih makan semut, atau banyak makan meggi, atau terbuat banyak benda-benda 'lagha', boleh rujuk dengan pelajar-pelajar sem 3 yang mengambil subjek E3062, DKE 3A,  tidak perlu rasa malu, dalam belajar jgn ada rasa malu, dan jangan terlalu ego. Kalau tak nak, boleh jumpa saya, atau mana-mana pensyarah. Semestinya mereka sedia membantu. Good Luck!!! Gambate Tebayyo.....!!!


* nilai delay adalah bergantung kepada nilai crystal oscilator/oscilator.
* nilai cycle adalah bergantung kepada model servo motor. Lihat data sheet/lampiran data model servo motor. Bagi yang menggunakan model C36R, C40R dan C55R, cycle adalagh 20 ms. oleh itu, untuk berpusing ke kiri, kitaran adalah 1 ms untuk 1 dan 19 ms untuk 0. Manakala untuk berpusing ke kanan, kitaran adalah 2 ms untuk 1 dan 18 ms untuk 0.


  _                        _                       _
 | |                        | |                      | |
 | |                        | |                      | |         
 | |____________| |___________| |___________________ (50 kali)
 1ms    19ms      1ms      19ms     1ms   19ms
 
 |<----20ms--->|


  _                           _                        _
 |   |                        |   |                      |   |
 |   |                        |   |                      |   |            
 |   |____________|   |___________|   |___________________ (50 kali)
 2ms    18ms          2ms      18ms       2ms   18ms
     
 |<-----20ms----->|



THERE's NO MEDICINE TO CURE LAZINESS..........................



Wednesday, January 19, 2011

.:Pengubahsuaian Push Button:.

Dalam post kali ini saya akan terangkan sedikit sebanyak tentang push button yang akan disambungkan pada mikropengawal. Push button kebiasaannya punyai 2 pin sahaja, pin positif dan pin negatif, sedangkan push button yang akan disambungkan pada mikropengawal mesti mempunyai sekurang-kurangnya 3 pin, pin positif, negatif dan signal. (jika nak gunakan 2 pin sahaja pun boleh, tetapi kurang sesuai). Rajah dibawah adalah modifikasi yang perlu dibuat pada push button.


Anda boleh memilih jenis push button yang akan dihasilkan sama ada jenis Active High atau active Low. Apakah yang dimaksudkan dengan Active High dan Active Low? Active High bermaksud dalam keadaan biasa port PIC adalah low. Apabila suis di tekan, port PIC akan menjadi high, bagi Active Low pula, dalam keadaan biasa port PIC adalah High, apabila suis ditekan, port PIC akan low. 






Tuesday, January 4, 2011

.:Projek PIC-LCD HD44780 siri 2:.

Ada beberapa email dan pertanyaan lisan saya terima bertanyakan bagaimana caranya untuk menggerakkan character dari kiri ke kanan atau kanan ke kiri. Saya sendiri pun tidak tahu lagi masa tu, so saya terbaca dalam data sheet. satu kaedah yang boleh dilakukan adalah dengan menggunakan shift function, pada pin LCD DB2. Saya telah cuba buat, namun tidak berhasil, mungkin cara atau pun kaedah yang saya gunakan tidak betul, jadi saya telah menggunakkan cara yang lain, iaitu dengan cara memanipulasi address character yang dimasukkan. LCd display JHD162A ini boleh memaparkan maksimum 16 character dalam satu-satu masa. Jadi, apa yang saya buat adalah dengan memanipulasi address, sebagai contoh perkataan SAYA; address pada 0x40 terisi huruf S, address 0x41 terisi huruf A, address 0x42 akan terisi huruf Y dan address 0x43 akan terisi huruf A, kaedahnya huruf A akan overwrite ataupun berpindah ke address 0x40, huruf Y akan overwrite huruf A, dan begitulah seterusnya. Secara mudah untuk menerangkannya ibarat ada 5 kotak, kotak kelima ada sebiji guli, guli itu di pindahkan ke kotak ke 4, kemudian ke 3, ke kotak 2 dan seterusnya. (Harap-harap faham)susah nak terangkan melalui penulisan ni). Hasilnya anda boleh lihat video dibawah :


Modifikasi pada programming perlu dibuat untuk menghasilkan character yang bergerak. Programming projek sebelum ini boleh lihat post saya bertajuk .:Projek PIC-LCD HD44780:.

Modifikasi yang perlu dibuat adalah dengan menambahkan satu lagi funsi/function,  function definition adalah seperti berikut :


  void lcd_puts(const char * s)
  {
  LCD_RS = 1;// write characters
  int i=0;
  while(*s && i <16)
  {
  lcd_write(*s++);
  i++;
  }
  }

Modifikasi pada function main juga perlu di ubah seperti dibawah :



  void main(void)
  {
  const char s[] =" http://robot-geek.blogspot.com;PENYELIA PROJEK : EN. HISYAMSANI; ";
  const char t[] ="PELAJAR:AZHAR;QAYYUM,NAZRI,AFIQ,REBITA & SUNTI";
  //lcd_init(); //initialise the LCD
  pic_init(); //initialize PIC
  lcd_init(); //initialize LCD
  char *b;
  char *c;
  int son=1;
  b=&s;
  c=&t;
  for(;;)
  {
  lcd_goto(0x40);// select first line
  lcd_puts(b);
  lcd_puts(c);
  lcd_goto(0x00);// Select second line
  lcd_puts("<--:ROBO-ROI:-->");
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  if(*b)
  {
*b++; //scrolling to next char
  }
  else {
if(son)
   {
b=&s;
c=&t;
son=0;
   }
else
   {
b=&t;
c=&s;
son=1;
   }


}
  lcd_clear();
  }
  }

Disini ingin saya ingatkan, delay adalah untuk mempercepat atau melambatkan pergerakan character. Semakin banyak delay ditambah semakin perlahan pergerakannya. Selamat mencuba. Display kurang jelas, sebab bateri dah nak habis. Heh....heh..



Friday, December 31, 2010

.:Projek PIC-LCD HD44780:.

Liquid Crystal Display (LCD) adalah sebuah alat untuk memaparkan sebarang imej atau pun character (huruf,nombor, simbol dan sebagainya). Projek yang saya hasilkan ini adalah untuk memaparkan perkataan pada paparan LCD HD44780 (16x2). Anda boleh lihat hasilnya pada gambar dibawah :

Hasil Projek

Kepada pelajar-pelajar yang berminat untuk menghasilkan projek ini, saya senaraikan komponen asas yang diperlukan :

Dibawah saya sertakan litar bagi projek ini. Juga sila rujuk post saya bertajuk .:Litar Teras PIC16F877A:. dan .:Litar Alternatif Pengatur Voltan:.


Di sini juga saya sertakan programming untuk PIC16F877A. 

Programming LCD Display (16x2) with PIC16F877A

Selamat mencuba. Sekiranya perlukan sebarang bantuan ataupun pertanyaan, sila berjumpa saya atau email saya hsani2u@gmail.com



Sunday, December 26, 2010

.:Motor Driver L293D:.

Motor driver L293D
Dalam post kali ini, saya akan tuliskan sedikit sebanyak tentang kegunaan motor driver. Untuk mengawal sesebuah DC motor dengan menggunakan micropengawal bukannlah sesuatu yang sukar. Untuk pengetahuan semua sesebuah DC motor boleh dikawal terus dengan menggunakan mikropengawal, tetapi perlu diketahui bahawa, voltan yang keluar dari sesebuah mikropengawal PIC16F877A contohnya, hanyalah +5V sahaja. Bagaimana sekiranya motor tersebut memerlukan voltan +12V contohnya? Adakah +5V itu mencukupi? Semestinya tidak. Oleh itu motor driver diperlukan untuk mengatasi masalah tersebut. Terdapat banyak motor driver dipasaran dan pelbagai jenis, DC motor driver, servo motor driver, stepper motor driver, high current motor driver dan pelbagai lagi. Disini saya akan terangkan tentang DC motor driver jenis L293D keluaran Texas Instrument. Dibawah adalah pin diagram bagi L293D.
L293D pin diagram
Disini saya juga akan tunjukkan contoh litar untuk aplikasi pada mikropengawal. Detail berkenaan motor driver ini, sila baca helaian data/data sheet, boleh download sini.

Contoh Litar untuk mengawal dua DC motor. (MCU=microcontroller unit)
Di atas adalah salah satu contoh litar kawalan motor menggunakan motor driver L293D. Terdapat pelbagai variasi litar motor driver, bergantung kepada jenis dan kegunaan.


Klik pada ikon pendrive untuk muat turun helaian data/data sheet L293D

Motor driver ini boleh diperolehi melalui saya dengan harga RM 16.50 termasuk soket.
Dalam stok : 2
Berminat/perlukan motor driver/H-Bridge ini? Sila isi borang dibawah :





Nama:


No. Telefon:



E-Mail:



Alamat:



Item/Barang:


Kaedah Bayaran:



Saya akan membuat bayaran dalam tempoh:







Thursday, December 9, 2010

.:Litar Teras PIC16F877A:.


Memandangkan terdapat beberapa kumpulan projek pelajar menggunakan mikropengawal PIC16F877A, maka disini saya tunjukkan litar asas/teras bagi mikropengawal PIC16F877A. Litar teras uC ini adalah perlu untuk membolehkan PIC16F877A berfungsi. Nilai pengayun kristal (cystal oscilallator) tidak semestinya 4 Mhz. Disini saya lebih menggalakkan pelajar menggunakan Pengayun Kristal 20 Mhz, kenapa? Saya tinggalkan persoalan ini untuk memudahkan saya tanya semula soalan ini semasa pembentangan projek nanti. Tanda anak panah dikedua  arah menunjukkan pin tersebut adalah jenis 'bidirectional I/O pin' bermaksud pin tersebut boleh dijadikan sebagai pin masukan ataupun pin keluaran, manakala anak panah satu arah (yang menunjuk kedalam/keluar sahaja) bermaksud ia adalah pin masukan/keluaran. Litar ini adalah litar asas, oleh itu untuk setiap aplikasi, sekurang-kurangnya, komponen yang tersebut adalah wajib ada bagi membolehkan sesuatu litar PIC16F877A berfungsi, kecuali pin1, MCLR. Kenapa? Sila baca helain data (Data Sheet PIC16F877A).



Monday, November 22, 2010

.:PIC Target Board:.

Alhamdulillah, syukur ke hadrat Ilahi kerana dengan limpah kurnianya saya dapat menyiapkan sebuah target board bagi kegunaan pelajar-pelajar saya yang berminat dalam aplikasi sistem terbenam dan robotik menggunakan mikropengawal PIC. Ciri-ciri target board yang telah saya hasilkan :
  • Target board ini digunakan untuk memprogramkan PIC.
  • Target Board ini boleh disambungkan terus dengan programmer PICKit2.
  • Dilengkapi dengan terminal blok, untuk setiap input/output pin bagi memudahkan komponen mudah dipasang dan ditanggalkan.
  • Zif Soket digunakan untuk memudahkan PIC ditanggalkan dari soket. Berlainan dengan menggunakan soket IC biasa ataupun turn pin soket, yang boleh menyebabkan kaki PIC bengkok dan seterusnya patah semasa memasang dan menanggalkan PIC.
  • Pelajar boleh menguji komponen seperti PIC, Oscilator, LED, atau apa-apa komponen yang disambungkan pada PIC.
  • Pelajar boleh melihat perbezaan sekiranya oscilator/pengayun 20Mhz dan 4Mhz digunakan dalam litar teras PIC, kerana saya telah sediakan terminal blok untuk kaki oscilator, oleh itu jenis oscilator boleh ditanggal dan ditukar.
  • Pelajar boleh menggunakan board ini sebagai prototaip sementara. Setelah semuanya berfungsi seperti yang diinginkan barulah litar sebenar dibuat.
Pelajar-pelajar yang berminat dengan PIC, ingin belajar PIC, sistem terbenam dan robotik, dan berminat dengan board ini, sila email hsani2u@gmail.com atau berjumpa terus dengan saya. Saya akan cuba guide/pandu ke jalan yang benar. heehehee...

InsyALLAH sekiranya berkesempatan saya akan 'post'kan cara-cara untuk 'hack' servo motor ke DC motor biasa. Setakat ini belum berkesempatan, sebab sibuk banget... tapi mana-mana pelajar yang tak sabar boleh jumpa dengan pelajar projek dibawah seliaan saya, saya dah ajar mereka cara-caranya. Sila belajar dari mereka.




Saturday, November 13, 2010

.:PIC16F877A Pin Diagram:.


Dalam post kali ini saya akan tunjukkan pin diagram bagi PIC16F877A. Gambarajah yang ditunjukkan adalah pin diagram bagi PIC16F877A. Setiap pin mempunyai fungsi tertentu. Pin diagram ini saya perolehi daipada Data Sheet PIC16F877A. Kepada pelajar-pelajar, data sheet adalah untuk dibaca, bukannya digunakan untuk ditunjukkan semasa pembentangan projek semata-mata atau pun disimpan dan hanya menunjukkan Data sheet kepada penyelia projek apabila di minta tanpa dibaca. (Bila ditanya itu tak tahu dan ini pun tak tahu). Last-last penyelia projek tolong baca, tolong jelaskan, sudah dijelaskan, lupe.... aduhai... berganda-ganda fenim kafla ana....

Anda boleh download data sheet PIC16F877A disini dengan klik icon dibawah.




Friday, November 12, 2010

.:MENGATURCARA PIC16F877A:.

Pada post kali ini saya akan menerangkan secara ringkas sahaja cara untuk mengaturcara PIC16F877A. PIC16F877A ini boleh diaturcara dengan pelbagai bahasa pengaturcaraan seperti bahasa himpunan/Assembly Language, Bahasa C, PIC Basic atau mana-mana bahasa yang sesuai untuk uC ini, kerana sekarang ini telah banyak pengkompil wujud untuk memprogramkan uC ini dengan lebih mudah. Saya hanya pernah menggunakan 2 jenis bahasa sahaja untuk mengaturcara uC ini iaitu Assembly language dan C language.






Dulu semasa zaman saya belajar (2002-2006), saya menggunakan assembly language untuk mengaturcara uC ini. Untuk mengaturcara atau 'memprogramkan' PIC16F877A ini, software MPLab (perlu diingat, MPLab bukan MathLab-MathLAb adalah perisian yang berbeza dari segi fungsi dan pengeluarnya)diperlukan. Mengaturcara uC menggunakan Assembly language agak sukar bagi saya kerana struktur bahasanya yang agak sukar difahami dan sukar untuk diaturcara. Namun setelah adanya pengkompil HiTech C, bahasa C telah boleh digunakan untuk mengaturcara uC ini dengan menggunakan MPLab. Namun, hanya MPLab versi 8.0 ketas sahaja yang mempunyai pengkompil HiTech C ini, oleh itu MPLab versi 7 tidak dapat menyokong bahasa C. Berdasarkan pengalaman, saya lebih mengesyorkan para pelajar saya menggunakan bahasa C untuk mngaturcara uC ini kerana bahasanya lebih mudah difahami dan dibina/construct.
Perisian MPLab ini boleh muat turun secara percuma di web MicroChip.



*Walaupun begitu, perlu diketahui, menggunakan assembly language membolehkan pengaturcara  mengarahkan apa yang pemproses/processor buat dengan lebih tepat. Oleh itu, programnya lebih pantas dan padat. Penggunaan memory dalam PIC juga adalah kurang berbanding jika menggunakan C language.



.::PIC16F877A::.

PIC di sini adalah singkatan bagi Peripheral Interface Controller. PIC adalah microcontroller keluaran Microchip Technology.


 


PIC16F877A adalah salah satu model uC keluaran Microchip Techmology. Ia merupakan sejenis mikropengawal yang berkuasa dan sesuai digunakan dalam aplikasi robotik atau system terbenam. Ia berkuasa untuk melaksanakan suruhan sepantas 200 nano saat dan senang untuk di programkan (35 set arahan sahaja). PIC16F877A adalah 8 bit mikropengawal dimuatkan kedalam satu cip DIP (Dual Inline Package), 40 pin. Ia mempunyai 256 bait EEPROM data memori, self programming, 2 comparator, 2 saluran 10 bit penukar analog ke digital (A/D), fungsi PWM, USART, SPI™ dan I²C™. Berikut adalah antara cirri-ciri PIC16F877A :


Ciri-ciri:
  • Pin Count: 40-pin PDIP
  • Program Memory: 14KB or 8K 14-bit Flash
  • Max Crystal Speed: 20MHz
  • RAM Bytes: 368
  • EEPROM Bytes: 256
  • Timers: 2 x 8 bit, 1 x 16-bit
  • Digital Communication: 1xA/E/USART, 1 x MSSP(SPI/I2C)
  • Capture/Compare/PWM: 2 x CCP
  • ADC: 8ch, 10-bit
  • Comparators: 2
  • RM 27.00
Dalam stok : 3
Pada post akan datang saya kan terangkan lebih detail berkenaan dengan PIC16F877A dan bagaimana untuk memprogramkannya.
Berminat? Sila isi borang di bawah untuk pesanan:



Nama:




No. Telefon:




E-Mail:




Alamat:




Item/Barang:




Kaedah Bayaran:




Saya akan membuat bayaran dalam tempoh:








.:MIKROPENGAWAL - PIC16F877A:.

Micropengawal atau dalam bahasa Inggerisnya Microcontroller, bagi Pelajar kejuruteraan Elektrik/Elektronik, mungkin biasa dengan istilah microcontroller atau ringkasnya uC/MCU.


        Mikropengawal adalah sebuah komputer kecil yang dimuatkan kedalam satu cip ataupun IC (Integrated Circuit), bermaksud CPU, RAM, ROM, input/output port dan serial communication interface semuanya dalam satu cip sahaja. Selain itu, mikropengawal juga dikenali dengan IC yang boleh diprogramkan. Sememangnya uC ini mesti diprogramkan, kerana sesebuah uC yang dibeli adalah kosong, bermaksud tidak diprogramkan. Ianya mesti di programkan oleh pengguna untuk tujuan aplikasi sistem terbenam (embeded system) ataupun pun untuk aplikasi yang lain seperti mengawal robot.


       Terdapat banyak uC di pasaran seperti PIC, Atmel, Motorola, Rabbit dan Freescale. Setiap jenis dan model mempunyai kelebihan dan kekurangan masing-masing. Disini saya hanya pernah menggunakan uC jenis PIC16F84A, PIC16F877A, Rabbit 3200 dan Rabbit 3400. Namun pada pandangan saya, uC yang paling popular dan termurah setakat ini adalah PIC. Walaupun begitu, Atmel juga semakin meningkat naik, dan board yang berasaskan Atmel juga semakin banyak di pasaran seperti Arduino (saya tak pernah guna, cuma tahu yang board ini juga senang digunakan berdasarkan recomendation daripada kawan-kawan). Di PMU, saya akan cuba dedahkan kepada para pelajar dengan uC jenis PIC16F877A, kerana uC jenis ini senang untuk digunakan, harganya yang murah (sekitar RM25-RM29) serta senang untuk diprogramkan, kerana PIC sekarang tidak hanya boleh diprogramkan dengan Assembly Language/Bahasa Himpunan sahaja, tetapi pelbagai seperti Bahasa C dan PIC Basic yang mana bahasa ini lebih mudah untuk di fahami dan diprogramkan.


Apakah itu PIC? PIC16F877A?


Saya akan terangkan lebih lanjut dalam post saya akan datang.