//File: Serial.h
#ifndef SERIALCLASS_H_INCLUDED
#define SERIALCLASS_H_INCLUDED
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
class Serial
{
private:
//Serial comm handler
HANDLE hSerial;
//Connection status
bool connected;
//Get various information about the connection
COMSTAT status;
//Keep track of last error
DWORD errors;
public:
//Initialize Serial communication with the given COM port
Serial(char *portName);
//Close the connection
~Serial();
//Read data in a buffer, if nbChar is greater than the
//maximum number of bytes available, it will return only the
//bytes available. The function return -1 when nothing could
//be read, the number of bytes actually read.
int ReadData(char *buffer, unsigned int nbChar);
//Writes data from a buffer through the Serial connection
//return true on success.
bool WriteData(char *buffer, unsigned int nbChar);
//Check if we are actually connected
bool IsConnected();
};
#endif // SERIALCLASS_H_INCLUDED
//File: Serial.cpp
#include "Serial.h"
Serial::Serial(char *portName)
{
//We're not yet connected
this->connected = false;
//Try to connect to the given port throuh CreateFile
#if _MSC_VER && !__INTEL_COMPILER
const size_t cSize = strlen(portName) + 1;
wchar_t* wc = new wchar_t[cSize];
mbstowcs_s(NULL, wc, cSize, portName, cSize);
this->hSerial = CreateFile(wc,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
#else
//Try to connect to the given port throuh CreateFile
this->hSerial = CreateFile(portName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
#endif
//Check if the connection was successfull
if(this->hSerial==INVALID_HANDLE_VALUE)
{
//If not success full display an Error
if(GetLastError()==ERROR_FILE_NOT_FOUND){
//Print Error if neccessary
printf("ERROR: Handle was not attached. Reason: %s not available.\n", portName);
}
else
{
printf("ERROR!!!");
}
}
else
{
//If connected we try to set the comm parameters
DCB dcbSerialParams = {0};
//Try to get the current
if (!GetCommState(this->hSerial, &dcbSerialParams))
{
//If impossible, show an error
printf("failed to get current serial parameters!");
}
else
{
//Define serial connection parameters for the arduino board
dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
//Setting the DTR to Control_Enable ensures that the Arduino is properly
//reset upon establishing a connection
dcbSerialParams.fDtrControl = DTR_CONTROL_ENABLE;
//Set the parameters and check for their proper application
if(!SetCommState(hSerial, &dcbSerialParams))
{
printf("ALERT: Could not set Serial Port parameters");
}
else
{
//If everything went fine we're connected
this->connected = true;
//Flush any remaining characters in the buffers
PurgeComm(this->hSerial, PURGE_RXCLEAR | PURGE_TXCLEAR);
//We wait 2s as the arduino board will be reseting
Sleep(2000);
}
}
}
}
Serial::~Serial()
{
//Check if we are connected before trying to disconnect
if(this->connected)
{
//We're no longer connected
this->connected = false;
//Close the serial handler
CloseHandle(this->hSerial);
}
}
int Serial::ReadData(char *buffer, unsigned int nbChar)
{
//Number of bytes we'll have read
DWORD bytesRead;
//Number of bytes we'll really ask to read
unsigned int toRead;
//Use the ClearCommError function to get status info on the Serial port
ClearCommError(this->hSerial, &this->errors, &this->status);
//Check if there is something to read
if(this->status.cbInQue>0)
{
//If there is we check if there is enough data to read the required number
//of characters, if not we'll read only the available characters to prevent
//locking of the application.
if(this->status.cbInQue>nbChar)
{
toRead = nbChar;
}
else
{
toRead = this->status.cbInQue;
}
//Try to read the require number of chars, and return the number of read bytes on success
if(ReadFile(this->hSerial, buffer, toRead, &bytesRead, NULL) && bytesRead != 0)
{
return bytesRead;
}
}
//If nothing has been read, or that an error was detected return -1
return -1;
}
bool Serial::WriteData(char *buffer, unsigned int nbChar)
{
DWORD bytesSend;
//Try to write the buffer on the Serial port
if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
{
//In case it don't work get comm error and return false
ClearCommError(this->hSerial, &this->errors, &this->status);
return false;
}
else
return true;
}
bool Serial::IsConnected()
{
//Simply return the connection status
return this->connected;
}
Berikut contoh koneksi pengiriman data
#include <iostream>
#include "windows.h"
#include "Serial.h"
#include <thread>
#include <chrono>
using namespace std;
void delay(int ms){
std::this_thread::sleep_for (std::chrono::milliseconds(ms));
}
int main(int argc, char** argv) {
char alamatPort[] = "\\\\.\\COM7";
Serial* s = new Serial(alamatPort);
char dataOn[256] = "on1\n"; //"Nyala!";
char dataOff[256] = "off0\n"; //"mati!";
cout<<"isikan angka 1 untuk menyalakan, atau 0 untuk mematikan"<<endl;
int jawab;
do{
cin>>jawab;;
if(jawab==0)
s->WriteData(dataOff, sizeof(dataOff));
if(jawab==1)
s->WriteData(dataOn, sizeof(dataOn));
if(jawab==2)
for(int a=0;a<5;a++){
s->WriteData(dataOn, sizeof(dataOn));
delay(500);
s->WriteData(dataOff, sizeof(dataOff));
delay(500);
}
}while(jawab<3);
return 0;
}
Berikut contoh untuk mengirim dan menerima data
#include <iostream>
#include <stdio.h>
#include <tchar.h>
#include "Serial.h" // Library described above
#include <string>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
char alamatPort[] = "\\\\.\\COM7";
Serial* SP = new Serial(alamatPort); // adjust as needed
void* baca(void* data)
{
char incomingData[256] = ""; // don't forget to pre-allocate memory
//printf("%s\n",incomingData);
int dataLength = 256;
int readResult = 0;
while (SP->IsConnected())
{
readResult = SP->ReadData(incomingData, dataLength);
if (readResult > 0) {
printf("%s\n", incomingData);
}
//printf("Bytes read: (-1 means no data available) %i\n",readResult);
//std::string test(incomingData);
//printf("%s",incomingData);
//test = "";
Sleep(500);
}
return NULL;
}
void* tulis(void* data)
{
while (SP->IsConnected())
{
char outgoingData[256] = "";
char keluar[256] = "keluar";
int dataLength = sizeof(outgoingData); // don't forget to pre-allocate memory
scanf_s("%255s", outgoingData, dataLength);
if (outgoingData != "")
{
if (strcmp(outgoingData, "OK") == 0) {
printf("Pengiriman selesai\n");
return NULL;
}
if (SP->WriteData(outgoingData, dataLength))
{
printf("Data send:%s\n", outgoingData);
}
}
Sleep(500);
}
// do stuff...
return NULL;
}
#if _MSC_VER && !__INTEL_COMPILER
#include <thread>
int main(int argc, char** argv) {
printf("Welcome to the serial test app!\n\n");
if (SP->IsConnected())
printf("Serial sudah terhubung\n");
int status;
std::thread thrd_1(baca,(void*)0);
std::thread thrd_2(tulis, (void*)0);
thrd_1.join();
thrd_2.join();
}
#else
// thread example
#include <pthread.h>
int main(int argc, char** argv) {
printf("Welcome to the serial test app!\n\n");
if (SP->IsConnected())
printf("Serial sudah terhubung\n");
pthread_t thrd_1;
pthread_t thrd_2;
int status;
pthread_create(&thrd_1, NULL, baca, (void*)0);
pthread_create(&thrd_2, NULL, tulis, (void*)0);
pthread_join(thrd_1, (void**)&status);
pthread_join(thrd_2, (void**)&status);
printf("Terima kasih");
return 0;
}
#endif
DTE adalah Data Terminal Equipment, dimana sumbaer data dan pengolahannya ada di bagian ini. Untuk koneksi SPI ini dinamakan Master. Sedangkan DCE atau Data Circuit terminating Equipment adalah perangkat periferal dari DTE. Ini dinamakan Slave pada antarmuka SPI.
DTE dan DCE
Gender koneksi DTE dibanding DCE
Pada koneksi DTE dalam banyak kasus biasanya jenis MALE, sedangkan untuk DCE adalah yang female. Namun tidak semuanya seperti ini, harus pintar membaca petunjuk atau datasheet.
Male untuk DTE dan Female untuk DCE
Pinout
Untuk koneksi RS232 dasar, biasanya hanya perlu Rx, Tx dan Ground. Beberapa peralatan mungkin memerlukan pin kontrol tambahan. Berikut bagaimana pengaturan pin menempatkan Tx ke Rx, DTR ke DSR, dan RTS ke CTS.
Pinout DB9 pada RS232 untuk Male (DTE) dan Female (DCE)
Contoh modul untuk DTE dan DCE
Modul untuk DCE dengan konektor Female
Modul untuk DTE dengan konektor Male
Null Modem
Null modem dibutuhkan untuk koneksi DTE ke DTE (Male – Male) atau DCE ke DCE (Female-Female)
Saat ukuran desain PCB kecil, katakanlah 2×3 cm, dan akan dibuat pada PCB dengan ukuran 10 x 10 cm, maka desain PCB dapat dibuat panel. PCB ukuran 10 x 10 akan dapat menampung setidaknya 12 desain PCB 2×3 cm.
Buka pada Panel Properties dan isikan ukuran PCB 100mm x 100mm. Tentukan jarak antar desain PCB 2mm.
Buka folder gerber pada menu Add Gerber Folder
kanan pada instance lalu pilih menu Add Instance. Lakukan 11 kali, hingga instance menjadi 12.
Pilih Autopack agar instance (desain board PCB) tertata otomatis.
Tambahkan Breaktab dengan Insert Breaktabs, untuk menyanbungkan instance. Atau pilih Create Breaktabs untuk penambahan Breaktab secara otomatis
Ekspor hasil gerber yang sudah digabung (Merged) ke folder
Tampilan proses eksport
Cek Gambar hasil gerber. Jika ada yang rusak, perlu diulangi.
Zip semua file gerber dan siap untuk dimasukkan ke percetakan atau dibuka dengan FlatCam untuk dicetak lewat CNC. Atau dapat juga dicetak di printer untuk metode toner transfer dan photoresist.
Konfigurasi untuk VBit 0.2mm pada PCB 1 Oz. Pada CNC yang saya gunakan, konfigurasi terbaik adalah: Tool Dia: 0.3 Width Passes: 3 Pass Overlap: 0.15 Combine passes: v
Konfigurasi untuk Millier 2 Flute 0.6mm pada PCB 1 Oz. Pada CNC yang saya gunakan, konfigurasi terbaik adalah: Tool Dia: 0.5 Width Passes: 2 Pass Overlap: 0.25 Combine passes: v
Lebar track >= 20mil (0,5 mm), jarak antar track >= 20mil (kecuali ada smd yang jarak kakinya 10 mil, tidak masalah)
Cetak via, hole, top/bottom dan dimension untuk Toner transfer.
Cetak tCream/bCream, hole, dan dimension untuk masking. Atau cukup pilih tStop/bStop, cetak dengan memilih solid dan black.
A. Persiapkan PCB: PCB harus bebas korosi. Jika banyak minyak, pertama tama bersihkan tembaga menggunakan sabun cuci piring lalu keringkan. Anginkan atau jemur PCB hingga kering. Jika sudah tidak ada minyak yang menempel pada tembaha, gosok tembaga menggunakan penggosok panci atau ampelas halus. Lalu bersihkan debu butiran menggunakan tisu atau kertas polos dan alkohol 95%. Jika menggunakan aceton murni akan lebih baik. Aceton ini bukan yang digunakan untuk pembersih kuku, karena biasanya aseton jenis ini sudah dilarutkan dengan air, alkohol, vitamin dan pewangi.
Catatan: PCB harus bebas dari minyak dan korosi, sehingga toner atau senyawa lain mudah menempel. Dissarankan untuk membersihkan dengan alkohol/aseton. Membersihakn dengan air dapat menjadikan air bereaksi dengan tembaga dan membentuk korosi.
B. Proses transfer toner 1.Siapkan kertas fotokopi yang sudah di-mirror. Potong sesuai ukuran. Tempelkan bagian toner ke tembaga dan kunci dengan isolasi jika perlu. 2. Tuang beberapa titik di diethyltoluamide (DEET), biasanya ada pada lotion anti nyamuk, di atas kertas dan usapkan hingga kertas menjadi transparan. Jika belum transparant, tambahkan sedikit-demi sedikit. Jangan menambahkan terlalu banyak karena dapat mengakibatkan kertas bergelombang, dan menjadikan toner terlalu lembek. 3. Tambahkan sedikit air cukup dengan mencelupkan tangan di air lalu usapka menggunakan tangan di kertas. Tutup dengan cellophane atau mika bungkus kado. 4. Gunakan koin atau kartu PVC untuk menggosok mika secara merata dan urut dari ujung ke ujung. Jangan terlalu keras menekan, terlalu keras menekan mangakibatkan toner menyebar, jalur jadi menebal dan bisa terhubung di sebelahnya. Lakukan hingga merata. 5. Lepas mika lalu lepas kertas perlahan. Saat melepas kertas kadang menjadikan beberapa toner di pinggir jalur ikut terlepas bersama kertas. Jika masih ada yang menempel di kertas, gosok ulang denga kartu PVC. 6. Saat kertas sudah terlepas, keringkan toner dengan menganginkan. Atau dapat juga memanaskannya dengan korek api pada bagian tembaganya pada api biru. Pengeringan dapat dilakukan dengan menaruh PCB pada pada wajan dengan tembaga menghadap ke atas sampai warna tembaga sedikit berubah pucat. Kurang lebih 1 menit dengan api sedang. Awas: Jika terlalu panas, PCB dapat melengkung. Lalu segera masukkan ke air dingin segera setelah PCB dipanasi. Air dingin digunakan untuk mendinginkan secara cepat, sehingga toner mengeras kembali. 7. Jika masih ada kertas yang menempel, lanjutkan dengan mengelus-elus pcb dengan jari hingga lapisan kertas yang menempel pada toner terlepas. 8. Cek jalur PCB jika ada yang terlepas/teputus, gambar jalur dengan spidol anti air. PAstikan PCB dalam kondisi kering. Jika ada jalur bersebelahan yang terhubung, kerok sedikit menggunakan cutter atau jarum.
C. Etching 1. Gunakan Feri Chorida 1 gram + 100 ml Air. Atau dapat gunakan campuran 1 bagian Asam Chlorida dan 2 bagian Peroxida (HCl + 2H2O2) + 4 bagian Air. Jika sulit ditemukan bisa menggunakan 2 bagian Wipol / WPC + 1 bagian Vanish. 2. Masukkan PCB dengan tembaga menghadap ke atas. Jika menggunakan FeCl, perlu digoyangkan. Namun jika menggunakan HCl cukup diamkan dan amati hingga tembaga larut. 3. Jika ada toner yang terkoyak, angkat dan keringkan dengan ditiriskan dan dianginkan. Jangan mengeringkan dengan cara diusap karena toner dapat terkelupas. Lalu gambar jalur toner yang putus dengan drawing pen atau spidol anti air. Kemudian masukkan lagi. 4. Angkat dan tiriskan PCB ke tisue. Bersihkan menggunakan aseton (pembersik kutek) 5. Jika ada minyak atau korosi, amplas dengan amplas terhalus (nomor 1)
D. Persiapkan Curabe UV Solder Mask (CUVSM) / Dry film solder mask 1. Cureble UV harus bebas dari minyak, Minyak digunakan untuk melumasi agar tidak mudah beku. Jika Curable UV terlalu cair dan keliatan ada minyaknya, taruh curable di atas tisue dan biarkan beberapa saat. Minyak mengakibatkan curable sulit menempel ke PCB. 2. PCB harus dalam keadaan bersih. Lihat poin A. 3. Tuangkan pasta CUVSM yang sudah tanpa minyak, atau minyak sudah tidak tampak, ke PCB. 4. Gunakan plastik pembungkus kado (cellophane) untuk menutup CUVSM. Jika menggunakan plastik mika fotokopi, bisanya hasit akhir solder mask malah menempel ke mika. Jika menggunakan plastik pembungkus makanan biasanya membuat CUVSM tidak rata (bergelombang). 5. Pasang mika tebal atau kaca untuk menekan cellophane yang dipasang menempel CUVSM. Tekan hingga permukaan rata. Jika jalur PCB belum terlihat, tekan kaca/mika lebih kuat lagi 6. Siapkan hasil cetakan solder paste area yang dicetak di kertas polos dan tambahkan minyak baby oil / kayu putih hingga transparan. Cetakan solder paste dapat juga dicetak di kertas transparant atau difotokopi, sehigga tidak memerlukan minyak untuk menjadikan trasnparan. Namun perlu di cek apakah warna hitam masih tembus? jika tebus maka pasang 1 lapis lagi agar bener-benar warna hitamnya tidak tembus cahaya. Penggunaan transparant ditujukan agar saat memasang di atas CUVSM jalur dapat terlihat jelas, dibandingkan menggunakan kertas yang diberi minyak. 7. Gunakan penjepit jika inggin menggunakan kaca untuk dapat meratakan CUVSM. Pasang kertas transparan di atas cellophane sesuai relief yang diinginkan, dengan bagian permukaan cetak di bawah. Hal ini agar cahaya tidak terdispersi saat menyinari CUVSM. Jangan pula menaruh mika tebal atau kaca tebal diatas kertas transparan, karena mengakibatkan penyinaran tidak maksimal. Kaitkan dengan isolasi jika perlu, agar posisi tidak mudah berubah. 8. Gunakan Lampu UV atau pengering UV HP atau pengering kuku kutek atau apapun yang dapat menyinari gelombang UV. Lama penyinaran tergantung dari kuat cahayanya. Untuk UV 8 watt TL, membutuhkan 4 – 5 menit. Untuk 2×9 watt (2 lampu pengering kuku) cukup 20 – 30 detik. Disarankan untuk mencoba menyunari CUVSM di kertas yang tidak terpakai dan tandai dari 1 s.d 7 menit. Cari lama penyinaran yang tepat, dimana CUVSM sudah mulai mengeras dan mengkilap. Pastikan pula CUVSM yang menenpel di kertas juga sudah mengeras, sehingga tidak lagi dijumpai dalam bentuk pasta. 9. Lepas cellophane secara perlahan dengan menggeser sedikit demi sedikit pada pucuknya. Usahakan saat membuka cellophane, sudut cellophane tidak leboh dari 5 derajat terhadap PCB. 10. Bersihkan sisa pasta CUVSM yang tidak mengeras, yang tidak mendapatkan sinar UV, dengan menempel – tempel dengan tisue kering hingga tidak ada pasta CUVSM yang bsa menempel ke tisue. Tuang sedikit aseton ke tisue dan ulangi tempel-tempel ke pasta CUVSM. Jangan digosok, karena dapat menjadikan CUVSM yang telah menempel ke PCB, yang mengeras, terkoyak dan lepas dari ikatan tembaga. Jika ada lubang yang tertutup pasta, gunakan aseton yang dituang di wadah dan masukkan PCB dengan digoyang goyangkan agar pasta larut. Penggunaan tiner tidak disarankan, karena bisa mengupas CUVSM yang sudah keras. Penggunaan alkohol 70% juga tidak disarankan karena pasta malah dapat berpindah di tempat lain, karena pasta tidak menempel di tissue yang ada alkoholnya. 11. Saat pasta sudah bersih, ulangi penyinaran hingga 1 jam. Ini digunakan untuk mengeraskan CUVSM dan membuatnya lebih menempel ke tembaga. Jika perlu, panaskan PCB ke suhu 250C selama bebrapa menit dengan blower atau pemanggang. Dapat juga jemur di bawah matahari terik selama 2 jam. 12. Masukkan kapas atau tisue ke AgNO3 (perak nitrat) dan tempel-tempel (tap) ke PCB. Jika memiliki AgNO3 ukuran banyak, PCB dapat dicelupkan selama 3 menit.
Konfigurasi kedalaman guratan PCB 1 oz adalah -0.078 s.d -0.10 mm
Membuat jalur PCB dapat menggunakan beberapa cara, dari mulai menggambar menggunakan tinta anti air, sablon, toner transfer, dan salah satunya adalah menggunakan Dry Film Photoresist. Berikut langkahnya
A. Pembersihan PCB PCB dapat cukup dibersihkan dengan digosok menggunakan sabut cuci piring Scotch-Brite, atau sabut per cuci, atau menggunakan amplas yang paling halus. Lalu usap dengan aseton bila perlu. Aseton dapat dibeli di toko kimia atau di toko swalayan sebagai pembersih kutek (cat kuku).
Jika ada minyak yang menempel pada PCB, biasanya bekas sidik jari, dapat dibersihkan dengan sabun cuci dan keringkan. Setelah itu baru digosok dengan sabut cuci atau amplas.
B. Potong PCB sesuai ukuran Pemotongan FR2 dapat dilakukan dengan cutter. Tandai dengan cutter di sisi tembaga dan sisi sebailknya. Lalu tekan di tempat rata dan patahkan. Pemotongan FR4 perlu menggunakan gergaji besi atau semarcamnya.
C. Siapkan DFP Siapkan DFP dengan memotong sesuai ukuran lalu buka strip plastik pelapis menggunakan isolasi.
D. Pasang DFP ke PCB Ada beberapa cara untuk masang DFP ke PCB. 1. Cara Kering, pastikan PCB kering lalu pasang DFP dari sudut dan ditekan menggunakan jari lalu ratakan dengan rakel / kartu ATM. 2. Cara Basah, berikan bantuan sedikit air murni (jangan pakai sabun) di PCB lalu pasang DFP dari arah diteteskannya air. Jika memiliki laminator dapat dilaminating dengan suhu kurang dari 100 derajat. Beberapa tutorial ada yang menggunakan blower suhu rendah untuk memanasi DFP, namun pastikan suhu < 100 derajat. Penting: Tunggu 15 menit agar kering dan perekat DFP aktif, tidak disarankan langsung disinari walaupun sudah kering!
E. Siapkan desain PCB negatif Siapkan cetakan negatif dari jalur PCB. Dapat menggunakan kertas transparan, jika memiliki printer laser. Atau cukup difotokopi di kertas transparan. Jika kesulitan, dapat pula dicetak di printer tinta. Untuk cetakan di kertas transparan, biasanya ada toner, gambar hitam, yang agak transparan. Solusinya adalah mendobeli gambar dan diisolasi. Sedangkan jika dicetak di kertas HVS, nantinya cukup diberikan minyak, semisal minyak baby oil agar kertas menjadi trasnparan.
F. Pasang desain ke PCB Pasang desain ke PCB. Untuk desain pada kertas HVS, tempelkan, isolasi bagian pinggir dan tuang minyak hingga semua kertas transparan. Kertas akan menempel ke PCB karena daya ikat minyak. Sedangkan jika menggunakan kertas transparan, maka selain diisolasi bagian pinggir, perlu ditindih dengan kaca agar benar-benar menempel sempurnya.
G. Penyinaran Penyinaran dapat dilakukan di matahari terik kurang lebih 1 menit. Atau dapat juga menggunakan lampu UV untuk cek uang 18 Watt, dengan waktu 5 menit. Atau dapat juga menggunakan lampu UV pengering kutek kuku 1.5 menit (90 detik) untuk film berupa kertas yang diolesi minyak. Jika menggunakan film berupa mika trasnparan (biasanya perlu didobel untuk mendapatkan hitam sempurna), lama penyinaran dengan UV pengering kuku cukup 20 – 30 detik saja. Lama penyinaran tergantung dari intensitas sinar UV. Lakukan percobaan penyinaran dengan mengambil sampel DFP ukuran kecil.
H. Melepas lapisan pelindung DFP Lepas plastik pelindung DFP dengan menggunakan isolasi.
I. Bersihkan DFP DFP yang tidak terkena sinar UV akan tetap menjadi pasta, sedangkan yang terkena sinar UV akan mengeras. Bersihkan DFP yang berbentuk pasta dengan Na2CO3 atau soda Ash (1 gram/100ml). Jangan terlalu banyak menggunakan sida ash, perabdingan yang lebih besar mengakibatkan DFP mudah lepas dan larut! Jika kesulitan mendapatkan Soda Ash, dapat juga menggunakan detergen cuci baju yang mengandung Na2CO3. Rendam beberapa saat lalu bersihkan menggunakan kuas kecil. Jika tidak ada kuas kecil, gunakan kapas, namun gosok perlahan jangan sampai DFP kering ikut terkelupas.
J. PCB siap di-etching
Ket: DRC – Design Rule Check untuk penggunaan DFP terbaik yang pernah dicoba adalah: Clearance: >=0,3mm Track Width: >= 0.3mm
DRC – Design Rule Check untuk penggunaan DFP yang disarankan adalah: Clearance: >= 0,4 mm Track Width: >= 0.4 mm
Hasil:
Jalur 0.3mm terbentuk jadi sekitar 0.4 – 0.5 mm, clearance 0.3mm terbentuk menjadi berkurang menjadi 0.2mm hingga 0.1mmJalu 0.4mm terbentuk menjadi 0.6mm, clearance 0.4mm berkurang menjadi 0.3mm. INI ADALAH BATAS REKOMENDASI AGAR JALUR AMAN DARI SHORT ATAU PUTUSUntuk jalur 0.2mm dengan clearance 0.2mm gagal terbentuk gap, menyambung semua. Dimungkinkan karena tiap jalur 0.2mm bleeding menjadi 0.3mm sehingga clearance mendekati 0 mm Untuk pad komponen 0402 masih bisa terbentuk, yang seharusnya 0.6mm menjadi 0.7mm, sedangkan komponen 0201 clearance sudah hilang alias pad tergabung.