- ตอนที่ 1 วาดลายวงจร โดยใช้ KiCad และจำลองวงจรโดยใช้ gnucap ร่วมกับ gspiceui
- ตอนที่ 2 ออกแบบแผ่นวงจรพิมพ์โดยใช้ KiCad และ
- ตอนที่ 3 ประกอบวงจรและทดสอบ
วาดลายวงจร โดยใช้ KiCad และจำลองวงจรโดยใช้ gnucap ร่วมกับ gspiceui
วงจรที่เลือกคือวงจรขยายเสียงคลาสเอบีขนาด 0.5 วัตต์ ไม่ใช้ออปแอมป์หรือไอซีขยายเสียงสำเร็จรูป ออกแบบตามตำราเป๊ะ ๆ ไม่พลิกแพลงใด ๆ วงจรแบ่งออกเป็น 3 ส่วนย่อยซึ่งคนที่ผ่านวิชาอิเล็กทรอนิกส์น่าจะสังเกตได้ คือ
- วงจรขยายแรงดันแบบอิมิตเตอร์ร่วม
- วงจรกันชน (Buffer)
- วงจรขยายกำลังคลาสเอบี
เมื่อได้ลายวงจรแล้ว เราจะให้ KiCad สร้าง Netlist สำหรับ gnucap ให้เราได้ ผลที่ได้จะเป็นแฟ้มข้อความนามสกุล CIR ซึ่งมีเนื้อหาดังนี้
* EESchema Netlist Version 1.1 (Spice format) creation date: อา. 25 เม.ย. 2553, 18:45:25จากแฟ้มนี้ เราพบว่าต้องแก้ไขเพื่อให้จำลองวงจรใน gnucap ได้ 3 - 4 จุดด้วยกันคือ
C1 14 3 1u
P4 0 CONN_1
P3 5 CONN_1
P1 14 0 CONN_2
C2 13 0 470u
R2 3 0 42k
R1 5 3 79k
R5 13 0 39
R3 5 12 430
Q1 4 3 12 2N3904
RV1 10 10 9 100
R4 4 13 82
Q2 11 12 5 2N3904
R6 8 0 220
D2 9 8 1N4148
D1 11 10 1N4148
C3 6 7 470u
P2 7 0 CONN_2
R8 6 15 1
R7 2 6 1
Q4 15 8 0 2N2907
Q3 2 11 5 2N2222
.end
- ขั้วต่อสัญญาณ Px ต่าง ๆ ไม่ต้องใช้ ก็ลบออก
- การเรียงลำดับของขาทรานซิสเตอร์ใน KiCad กับ gnucap ไม่ตรงกัน กล่าวคือ ใน KiCad จะเรียงลำดับเป็น E-B-C ในขณะที่ gnucap ต้องการให้เรียงลำดับเป็น C-B-E ก็แก้ไขลำดับของขาให้ถูกต้อง
- มีอุปกรณ์ตัวหนึ่งคือตัวต้านทานปรับค่าได้ ที่ gnucap ยังจำลองไม่ได้ ก็แก้ไขให้เป็นตัวต้านทานแทน ไม่ต้องปรับค่า
- อุปกรณ์เซมิคอนดักเตอร์ยังไม่มีโมเดล (.model) ในโปรแกรม gnucap นี้เราสามารถใช้โมเดลของ Spice ซึ่งหาได้จากบริษัทผู้ผลิตทั่วไปได้ทันที แต่โมเดลเหล่านี้ไม่ใช่ Opensource ผมจึงนำมาพิมพ์ไว้ตรงนี้ไม่ได้ หากใครสนใจให้ลองเข้าไปหาจากดาตาชีทของบริษัท หรือจากเว็บก็ได้ เมื่อโหลดมาแล้วก็เติมเข้าไปท้ายแฟ้ม ก่อน .end
- ไม่ได้กำหนดตำแหน่งไฟเลี้ยง และสัญญาณขาเข้า ก็ให้เพิ่ม VSupply กับ Vin เข้าไป ตามไวยกรณ์ของ gnucap
โมเดลที่ดอกจัน (*) ไว้ หมายความว่าจะต้องไปโหลดมาจากเว็บของผู้ผลิตเอง ซึ่งจะมีพารามิเตอร์ให้ครบสำหรับ Spice ในกรณีของเราซึ่งใช้ gnucap นี้ เมื่อรันโปรแกรมซิมูเลชั่นแล้วจะเกิด Error ขึ้นเนื่องจาก gnucap ไม่รู้จักพารามิเตอร์บางตัว ให้ลบพารามิเตอร์ตัวนั้นทิ้งได้ (อย่างไรก็ตาม ไม่สามารถรับรองผลการทดลองได้)* EESchema Netlist Version 1.1 (Spice format) creation date: อา. 25 เม.ย. 2553, 18:45:25
C1 14 3 1u
P4 0 CONN_1
P3 5 CONN_1
P1 14 0 CONN_2
C2 13 0 470u
R2 3 0 42k
R1 5 3 79k
R5 13 0 39
R3 5 12 430
Q1 12 3 4 2N3904
RV1 10 10 9 100
RV1 10 9 50
R4 4 13 82
Q2 5 12 11 2N3904
R6 8 0 220
D2 9 8 1N4148
D1 11 10 1N4148
C3 6 7 470u
P2 7 0 CONN_2
R8 6 15 1
R7 2 6 1
Q4 0 8 15 2N2907
Q3 5 11 2 2N2222
VSupply 5 0 12
Vin 14 0 GENERATOR
.model 1N4148 D (Is=5.84n...)*
.model 2N3904 NPN (Is=6.734f...)*
.model 2N2222 NPN (is=19f...)*
.model 2N2907 PNP (is=1.1P...)*
.end
เมื่อเตรียมแฟ้มเรียบร้อยแล้ว เราสามารถเลือกใช้ gnucap แบบบรรทัดคำสั่งก็ได้ หรือจะใช้ gspiceui เพื่อใช้ gnucap แบบ GUI ก็ได้ ในกรณีนี้เราเลือกใช้ gspiceui ซึ่งเรียกจากบรรทัดคำสั่งโดย
> gspiceui &จะได้
หลักการของ gspiceui ก็คือเราจะต้อง "สร้าง" (Create) การซิมูเลชั่นขึ้นมาเสียก่อน แล้วจึงจะ "รัน" (Run) ซิมูเลชั่นนั้น ๆ ได้ การ "สร้าง" ซิมูลเลชั่นก็คือการตั้งค่าต่าง ๆ ของการซิมูเลชั่น นั่นเอง เช่นการกำหนดประเภทของการซิมูเลชั่น (.op .dc .ac) การกำหนดโหนด (Node) ที่ต้องการสังเกต การกำหนดประเภทของตัวแปรที่ต้องการสังเกต (แรงดัน กระแส กำลัง ค่าความต้านทาน) ส่วนการ "รัน" ซิมูเลชั่นก็คือการสั่งให้ gnucap ทำตามที่สั่ง
เมื่อทดลองใช้ดูพบว่าข้อความในแท็บ Netlist ไม่สามารถแก้ไขได้ ส่วนข้อความในแท็บ Simulation สามารถแก้ไขได้ นั่นหมายความว่าเราสามารถตกแต่งแก้ไขคำสั่งการซิมูเลชั่นที่ gspiceui ตั้งให้เราได้ ซึ่งมีจุดหนึ่งที่ต้องแก้ไขด้วยตนเองแน่ ๆ ก็คือ หากต้องการซิมูเลตแบบอื่น ๆ ที่ไม่ใช่ .op จะต้องสั่ง .op ก่อนเสมอ ไม่เช่นนั้นจะได้ผลเสมือนว่าวงจรไม่ได้รับไฟเลี้ยง
เมื่อทดลองซิมูเลตแบบ Transient (.tr) gspiceui จะอำนวยความสะดวกในการตั้งค่าต่าง ๆ ให้เรา ที่ได้ทดลองคือ
- ตั้งค่า Vin เป็น 0.5 V ความถี่ 1 kHz (ลอง 1.0 V แล้ว สัญญาณเพี้ยน)
- Start Time = 0 ms
- Stop Time = 10 ms
- Step Time = 10us
หลังจากลองผิดลองถูกมานาน ผัดวันประกันพรุ่งมาหลายหน ก็ทำได้เสียที ขั้นตอนต่อไปก็จะลองใช้ KiCad ออกแบบแผ่นวงจรพิมพ์สำหรับวงจรนี้