My Lab #2

Pindahan Lab, menyusul reorganisasi ruangan dirumah, Lab kena gusur, mulailah ruang bekas gudang di ubah menjadi Lab, workshop atau apapun namanya, yang penting masih bisa menyalurkan hobby. Terlihat perbedaan signifikan sejak lab ini dimulai bisa dilihat pada link berikut https://diankurniawan.wordpress.com/2011/05/16/my-lab/

hinge rack diatas meja, ruang solder dengan lampu yang terang, tools set tergantung rapi di gantungan yang di beli di ace hardware

hinge rack diatas meja, ruang solder dengan lampu yang terang, tools set tergantung rapi di gantungan yang di beli di ace hardware

 

rack komponen yang dekar dengan meja solder dan meja laptop.. i called it the most crowded corner in room

rak komponen yang dekat dengan meja solder dan meja laptop.. i called it the most crowded corner in room

 

rak komponen dari berbagai zaman, mulai dari awal kuliah hingga yang terbaru dibeli dibeli di ace hardware

rak komponen dari berbagai zaman, mulai dari awal kuliah hingga yang terbaru dibeli dibeli di ace hardware

 

peralatan mekanik, bor meja, bor tangan, grinda meja, gergaji, catok, kikir, palu, mesin lilit trafo.sudah tidak ada ruang untuk desk bending machine.

peralatan mekanik, bor meja, bor tangan, grinda meja, gergaji, catok, kikir, palu, mesin lilit trafo.sudah tidak ada ruang untuk desk bending machine.

 

book corner, sebagian buku yang masih sering diakses.. selebihnya didalam gudang atau sudah menjadi softcopy

book corner, sebagian buku yang masih sering diakses.. selebihnya didalam gudang atau sudah menjadi softcopy

 

CNC corner.. mesin cnc mini dengan lcd yang tergantung.. sebuah PC yang di packed ulang dalam chasing mini menemani CNC ini

CNC corner.. mesin cnc mini dengan lcd yang tergantung.. sebuah PC yang di packed ulang dalam chasing mini menemani CNC ini

 

sebagian perangkat HAM dan instrument..

sebagian perangkat HAM dan instrument..


			

3.2 Inch TFT (IL9320) LCD interfacing to ATMega1284p

LCD ini sudah lama saya beli (sekitar tahun 2011) melalui ebay.com dari penjual di China, tetapi baru sempat diutak atik sekarang. Awalnya saya kesulitan menentukan jenis controller dari LCD ini karena penjual tidak melengkapi informasi tersebut. Ada banyak jenis TFT controller untuk kelas 3.2 Inch. Setelah try and error beberapa hari akhirnya saya menemukan cara mengetahui jenis controller LCD nya (ILI9320) dari source code embedded linux yang menggunakan LCD yang sama… busyet dah, ini pelajaran penting membeli barang dari China sebab umumnya mereka hanya penjual jangan berharap banyak untuk support teknis.

Akhirnya saya coba kaitkan kemungkinan memanfaatkan LCD ini untuk hobby transceiver saya.. mungkin untuk “my another bitx” dengan sedikit terinspirasi dengan project PICASTAR maka mulailah saya merancang rangkaiannya. Beberapa hal teknis yang menjadi pertimbangan adalah sbb:

  • LCD ini membutuh kan interface yang cukup banyak artinya memakan cukup banyak I/O pin dari mikrokontroler
  • Compiler yang saya gunakan jenis low end BASCOM konsekwensinya tidak ada default driver…semua harus start from the scratch (saya beruntung ternyata ada yang sudah memulai dengan BASCOM http://www.six1.net/), juga beberapa driver dari openmcu.com untuk bahasa C
  • Mikrokontroler saya pilih ATMega1284, 40 DIP dengan 128Kbyte Flash dan 16Kbyte RAM.. cukup untuk bahkan beberapa image kecil..
  • Mikrokontroler saya kerjakan pada clock 25Mhz (over clock dari maximum 20MHz operation). Banyak proses kalkulasi yang membutuhkan mcu power lebih besar
  • Walaupun LCD ini datang satu paket dengan interface touch panel dan SDCard saya tidak akan memasukkanya pada project kali ini
  • Berikut adalah skema nya:
schs

ATMega1284p 3.2 Inch TFT

  • LCD TFT 3.2″
LCD1s

3.2″ TFT LCD ILI9320

LCD2s

3.2″ TFT LCD Pinout

  • PCB component Side
pcb2s

Component Side (ATMEga1284) + Voltage Regulator LM317

  • PCB solder side
pcb1s

SOlder Side + 25Mhz overclocked Mega1284P

  • Its on now
dsips

LCD sudah menyala, kira2 tampilan untuk BITX

  • The Code

Saya berasumsi bahwa kunci penting pemrograman LCD ini adalah pada saat inisialiasi dan selebihnya operasi adalah operasi moveto RAM position dan putpixel, bisa  kita perhatikan pada code listing berikut belum banyak yang saya modifikasi dari coding aslinya:

‘*******************************************************************************
‘  Copyright Michael Koecher aka six1 8/2010
‘  -> http://www.six1.net/   michael@koecher-web.de
‘*******************************************************************************

‘——————————————————————————-
‘Initial the LCD Display Controller ILI9320  or SPFD5408
‘——————————————————————————-
Sub Ili9320_init(byval Modus As Byte)
‘(
Modus:
1 – Vertical
2 – Horizontal
‘)

Display_modus = Modus
‘ First, Reset the Display
Res_disp = 0
Waitms 1
Res_disp = 1
Waitms 1

Call Ili9320_write_reg(start_oscillation , &B0000_0000_0000_0001)
Waitms 10
Call Ili9320_write_reg(driver_output_control , &B0000_0000_0000_0000 )
Call Ili9320_write_reg(lcd_driving_control , &B0000_0111_0000_0000 )
‘Horizontal left-upper to right-bottom
If Modus = 1 Then
Call Ili9320_write_reg(entry_mode , &B0001_0000_0011_1000 )
X_pixel = 320
Y_pixel = 240
End If
‘Vertical left-upper to right-bottom
If Modus = 2 Then
Call Ili9320_write_reg(entry_mode , &B0001_0000_0010_0000)
X_pixel = 240
Y_pixel = 320
End If

Call Ili9320_write_reg(rgb_display_interface_control_1 , &B1110_0000_0000_0001)

Call Ili9320_write_reg(power_control_1 , &B0001_0110_1011_0000 )
Call Ili9320_write_reg(power_control_2 , &B0000_0000_0011_0111 )
Waitms 10
Call Ili9320_write_reg(power_control_3 , &B0000_0001_0011_1110 )
Call Ili9320_write_reg(power_control_4 , &B0001_1010_0000_0000 )
Call Ili9320_write_reg(power_control_7 , &B0000_0000_0000_1111 )

Call Ili9320_write_reg(horizontal_gram_address , &B0000_0000_0000_0000)
Call Ili9320_write_reg(vertical_gram_address , &B0000_0000_0000_0000)

Call Ili9320_write_reg(horizontal_add_start_position , &B0000_0000_0000_0000)
Call Ili9320_write_reg(horizontal_add_end_position , 239)       ‘&B0000_0000_1110_1111)
Call Ili9320_write_reg(vertical_add_start_position , &B0000_0000_0000_0000)
Call Ili9320_write_reg(vertical_add_end_position , 319)  ‘&B0000_0001_0011_1111)

Call Ili9320_write_reg(driver_output_control_2 , &B0010_0111_0000_0000)
Call Ili9320_write_reg(base_image_display_control , &B0000_0000_0000_0001 )
Call Ili9320_write_reg(vertical_scroll_control , &B0000_0000_0000_0000)

Call Ili9320_write_reg(gamma_control_1 , &B0000_0000_0000_0111)
Call Ili9320_write_reg(gamma_control_2 , &B0000_0100_0000_0011)
Call Ili9320_write_reg(gamma_control_3 , &B0000_0100_0000_0100)
Call Ili9320_write_reg(gamma_control_4 , &B0000_0000_0000_0010)
Call Ili9320_write_reg(gamma_control_5 , &B0000_0111_0000_0111)
Call Ili9320_write_reg(gamma_control_6 , &B0000_0110_0000_0110)
Call Ili9320_write_reg(gamma_control_7 , &B0000_0001_0000_0110)
Call Ili9320_write_reg(gamma_control_8 , &B0000_0000_0000_0111)
Call Ili9320_write_reg(gamma_control_9 , &B0000_0111_0000_0000)
Call Ili9320_write_reg(gamma_control_10 , &B0000_0111_0000_0111)

‘Enable Display
Call Ili9320_write_reg(display_control_1 , &B0000_0001_0111_0011)

End Sub

‘——————————————————————————-
‘ ILI9320_set_pixel  Set one Pixel in given color
‘——————————————————————————-
Sub Ili9320_set_pixel(byval X1 As Word , Y1 As Word , Color As Word)
Call Ili9320_set_cursor(x1 , Y1)
Call Ili9320_write_reg(write_data_to_gram , Color)
End Sub

‘——————————————————————————-
‘ ILI9320_select_reg  Select an index register
‘——————————————————————————-
Sub Ili9320_select_reg(byval Index As Byte )
Reset Cs_disp
Set Rd_disp
Reset Rs_disp
Data_low = Index
Data_hig = 0
Reset Wr_disp
Set Wr_disp
Set Cs_disp
End Sub

‘——————————————————————————-
‘ Ili9320_write_data  Write 16 Bit Data to Display
‘——————————————————————————-
Sub Ili9320_write_data(byval Daten As Word)
Reset Cs_disp
Set Rd_disp
Set Rs_disp
Data_low = Low(daten)
Data_hig = High(daten)
Reset Wr_disp : Waitus 1
Set Wr_disp
Set Cs_disp
End Sub

‘——————————————————————————-
‘ Ili9320_write_reg  Write 16 Bit Data to Index Register
‘——————————————————————————-
Sub Ili9320_write_reg(byval Index As Byte , Daten As Word)
Reset Cs_disp
Set Rd_disp

‘WRITE REGISTER
Reset Rs_disp
Data_low = Index
Data_hig = 0
Reset Wr_disp
Set Wr_disp

‘Write Data
Set Rs_disp
Data_low = Low(daten)
Data_hig = High(daten)
Reset Wr_disp : Waitus 1
Set Wr_disp
Set Cs_disp
End Sub

‘——————————————————————————-
‘ ILI9320_Set_Cursor(X, Y)
‘——————————————————————————-
Sub Ili9320_set_cursor(byval X As Word , Y As Word )
If Display_modus = 1 Then
Swap X , Y
‘X = 240 – X
End If
If Display_modus = 2 Then
X = 240 – X
‘      Y = 320 – Y

End If
Call Ili9320_write_reg(horizontal_gram_address , X)
Call Ili9320_write_reg(vertical_gram_address , Y)
End Sub

Semoga bermanfaat

PCB Prototyping

Karena banyak yang menanyakan berikut saya share cara saya membuat Protoype PCB bukan dengan CNC engraver atau Heat Transfer

Alamat produsen/dealer Kertas PCB Zong Zai, Jl. Jangasari Km. 1.5 Cianjur Telp (0263) 325752

1. Siapkan layout PCB pada kertas khusus Ziong Zai, bisa di cetak dengan printer laser atau di fotocopy terlebih dahulu. Tebal kertas Ziong Zai sama dengan kertas biasa tidak akan di plototin tukang foto copy.

2. Bersihkan PCB yang akan dibuat, gunakan sabun bila perlu di amplas sedikit sampai mengkilat.

3. Beri minyak angin (cap kapak atau cap lang) secukupnya

4. Ratakan minyak angin pada seluruh permukaan PCB dengan menggunakan kertas tissue atau kapas

5. Tempelkan kertas layout ke PCB

DSC_6012wp

6. Tekan-tekan/urut hingga merata ambil di beri air sedikit-sedikit untuk memastikan semua sudah menempel dan tidak ada gelembung udara. Hati-hati jangan terlalu keras hingga merobek kertas layout.

7. Bila sudah rata rendam kedalam air, tunggu beberapa menit. Kertas layout akan lepas dengan sendirinya.

8. Ini contoh tidak sabar kertas layout dipaksa lepas, maklum buru-buru karena sambil di foto.

9. Panaskan PCB secukupnya untuk mengeringkan air dan merekatkan tinta printer/fotocopy ke PCB. Bila ada jalur yang rusak atau terputus bisa di betulkan dengan spidol/pena khusus PCB

10. Rendam dalam laurutan ferrychloride, goyang-goyangkan secukupnya agar larutan bersirkulasi

11. Bersihkan sekali lagi sisa tinta


12. Bila diinginkan bisa lapisi dengan merendam pada larutan perak nitrat… selamat mencoba

Semoga Bermanfaat

Dian Kurniawan