
Power and Motor
Aitthikit/POV_Display_PCB
ที่ 2000 RPM: - 33 รอบ/วินาที = 33 FPS - 240 พิกเซลต่อรอบ - 125 µs ต่อพิกเซล

ที่ 2000 RPM: - 33 รอบ/วินาที = 33 FPS - 240 พิกเซลต่อรอบ - 125 µs ต่อพิกเซล
LED DisplayV2 is an open-source printed circuit board by Aitthikit, from the Aitthikit/POV_Display_PCB repository on GitHub. It is a 4-layer board of 51.6 × 42.4 mm with 105 parts on 167 nets, routed with 764 tracks and 23 vias.
It is built around the TPIC6C595N, A3144 and AMS1117-5.0. Its parts include 68 diodes, 13 capacitors, 10 ICs and 1 resistor. It belongs with the AVR (ATmega, ATtiny) boards of this library.
เอกสารสำหรับนำเสนออาจารย์ — สรุปการตัดสินใจดีไซน์ทั้งหมด
ชื่อโปรเจกต์: Rotating LED Display (POV - Persistence of Vision)
อ้างอิงหลัก:
ความต่างจากต้นฉบับ:
| รายการ | RD40 ต้นฉบับ | โปรเจกต์ของเรา |
|---|---|---|
| จำนวนแถว LED | 2 แถว | 4 แถว |
| LED ต่อแถว | 20 ตัว | 16 ตัว |
| LED รวม | 40 ตัว | 64 ตัว |
| MCU | Arduino Nano + ESP-01s | Arduino Nano เดียว |
| Image storage | ESP-01s WiFi | PROGMEM (32KB Flash) |
| ขนาด rotor | 120mm (CD size) | 120mm (เท่าเดิม) |
LED จำนวนน้อยหมุนเร็วๆ + เปิด/ปิดตามจังหวะ → ตามนุษย์เห็นเป็น "ภาพเต็ม"
ที่ 2000 RPM:
ใช้ Royer Converter ส่งไฟไร้สายจากฐานคงที่ → บอร์ดที่หมุน
| Parameter | ค่า |
|---|---|
| ความถี่ทำงาน | 120 kHz |
| แรงดัน input | 12V DC adapter |
| กำลังที่ต้องส่ง | ~4-5W |
| MOSFET | IRFZ44N × 2 |
| Resonant cap | 100nF polypropylene (film) |
| Input choke | 47-100µH |
12V DC Adapter
│
▼
Royer Converter (120 kHz)
│
▼
Primary PCB Coil (ฐาน)
║
║ wireless transfer (air gap 3-5mm)
║
▼
Secondary PCB Coil (rotor)
│
▼
Bridge Rectifier (4× SS14 Schottky)
│
▼
C1 = 220µF + C2 = 1µF ceramic (smoothing)
│
▼ V_raw ~7V
│
├──→ Arduino Nano VIN (regulator internal → 5V)
│
└──→ AMS1117-5.0 → +5V railเลือกใช้: 45° / 135° / 225° / 315° (KiCad-friendly)
แถว B (135°)
●●●●●●●●●●●●●●●●
│
แถว C ──────────●────── แถว A (45°)
(225°) │
●●●●●●●●●●●●●●●●
แถว D (315°)เหตุผล:
ในแต่ละคู่ของแถว:
Pin Assignment:
| Pin | หน้าที่ |
|---|---|
| D2 (INT0) | Hall sensor input |
| D10 | RCK (latch) ของ shift register |
| D11 (MOSI) | SER_IN ของ shift register |
| D13 (SCK) | SRCK ของ shift register |
| D9 (PWM) | G_N (brightness control) |
| VIN | V_raw 7V จาก rectifier |
| Designator | Component | Spec | Qty |
|---|---|---|---|
| D1-D4 | SS14 Schottky | 1A 40V SMA | 4 |
| C1 | Electrolytic | 220µF/16V | 1 |
| C2 | Ceramic | 1µF/25V X7R 0805 | 1 |
| U10 | AMS1117-5.0 | SOT-223 | 1 |
| C11 | Tantalum | 22µF/10V 1206 | 1 |
| C12 | Ceramic | 100nF/25V X7R 0603 | 1 |
| Designator | Component | Spec | Qty |
|---|---|---|---|
| A1 | Arduino Nano | ATmega328P, 5V | 1 |
| U2-U9 | TPIC6C595 | DIP-16 | 8 |
| U1 | A3144 | Hall sensor 5V | 1 |
| R1 | Resistor | 20k pull-up | 1 |
| R2-R9 | Resistor | 10k pull-up for CLR_N | 1 (shared) |
| Cdec | Ceramic | 100nF × 10 (decoupling) | 10 |
| Designator | Component | Spec | Qty |
|---|---|---|---|
| LED1-LED64 | LED 0805 | สีตามต้องการ | 64 |
| RN1-RN8 | Resistor Network | 470Ω × 8 | 8 |
| Component | Spec |
|---|---|
| L1 Primary | PCB bifilar coil, 17 turns, 90/30mm |
| L2 Coupling | PCB coil, 6 turns, 28/10mm |
| L3 Secondary | PCB coil, 14 turns, 90/30mm |
| Royer MOSFET | IRFZ44N × 2 |
| Resonant cap | 100nF film polypropylene |
| Parameter | ค่า |
|---|---|
| ขนาด | 120mm diameter (CD size) |
| Thickness | 1.6mm FR4 |
| Layers | 2 layers, 1oz copper |
| Mounting | CD motor spindle ตรงกลาง |
| Net Class | Trace Width |
|---|---|
| Power (+5V, V_raw, GND) | 0.8-1.0mm |
| Signal (SPI, GPIO) | 0.2mm |
| LED traces | 0.3-0.4mm |
| Load | Average Current | Power @ 5V |
|---|---|---|
| LED 64 ตัว (duty 30%) | 300 mA | 1.5W |
| TPIC6C595 × 8 | 25 mA | 0.13W |
| Hall sensor | 10 mA | 0.05W |
| Arduino Nano | 40 mA | 0.32W (Vin=8V) |
| รวมที่ฝั่งหมุน | ~375 mA | ~2.0W |
| + Coupling loss 30% | - | ~2.6W |
| Royer ต้องส่ง | - | ~4W |
ปัญหา: Royer 120 kHz สร้างสนามแม่เหล็กแรง
การแก้:
ปัญหา: บอร์ดต้องสมดุลที่ความเร็ว 2000 RPM
การแก้:
ปัญหา: AMS1117 drop 2V × ~400mA = 0.8-1.5W
การแก้:
| การตัดสินใจ | ทางเลือกอื่น | ที่เลือก | เหตุผล |
|---|---|---|---|
| MCU | ESP32, RP2040 | Arduino Nano | ง่าย, รู้จัก, เพียงพอ |
| Power regulator | MP1584, LM7805 | AMS1117 | noise ต่ำ, ขนาดเล็ก, ใช้ง่าย |
| Hall sensor | AH3503 (3.3V) | A3144 (5V) | ตรงกับ logic level Arduino |
| Image storage | SD card, EEPROM | PROGMEM | ง่าย, ไม่เพิ่ม component |
| LED layout | 0/90/180/270, 30/150/210/330 | 45/135/225/315 | KiCad-friendly, 4× scan |
| Bridge diode | 1N4007, DB107 | SS14 Schottky | Vf ต่ำ, เร็วพอ 120 kHz |
| Input cap C1 | 100µF, 470µF | 220µF + 1µF | balance ระหว่าง bulk + HF filter |
| Output cap C3 | Ceramic, Electrolytic | Tantalum 22µF | stable กับ AMS1117 |
Q1: ทำไมไม่ใช้ ESP32 ที่ทันสมัยกว่า? A: Arduino Nano เพียงพอสำหรับ timing budget (ใช้แค่ 3% ของเวลาต่อพิกเซล) และไม่ต้องการ WiFi/Bluetooth สำหรับ image storage แบบ static
Q2: ทำไมเลือก Royer Converter แทน buck/boost ปกติ? A: Royer เป็น self-oscillating, ไม่ต้องการ MCU/PWM controller, มี ZVS efficiency สูง และเหมาะกับการขับ resonant coil สำหรับ wireless power
Q3: ทำไม 4 แถวไม่ใช่ 2 แถวเหมือนต้นฉบับ? A: เพิ่ม effective scan rate เป็น 4× ทำให้ภาพสว่างขึ้นและกระพริบน้อยลง โดยเฉพาะที่ RPM ต่ำ
Q4: ทำไม PCB coil ไม่ใช้ wire-wound? A: PCB coil ได้ tolerance ดีกว่า, ทำซ้ำได้, ไม่ต้องประกอบ, ราคาเป็นส่วนหนึ่งของ PCB
Q5: balance ที่ 2000 RPM จะมีปัญหาไหม? A: ออกแบบให้สมมาตรกับแกน + มีรูสำหรับน็อตปรับ + LED 4 แถวกระจายช่วย balance อัตโนมัติ
อันนี้คือสรุปทั้งหมดที่คุยกันมา ครอบคลุมทุกการตัดสินใจ พร้อมเหตุผล ตัวเลข และเอกสารอ้างอิงที่อาจารย์มักถาม
ถ้าต้องการให้ผมขยายส่วนไหนเพิ่ม หรือทำเป็น slides PowerPoint บอกได้เลยครับ! 👍
ดีมากครับ Royer coil เป็นส่วนที่อาจารย์น่าจะถามรายละเอียดมาก ผมจะเพิ่มให้ละเอียดและครบทุกเรื่องที่คุยมา
เอกสารส่วนเสริมสำหรับนำเสนออาจารย์ — โฟกัสที่ระบบ coil ของ Royer Converter
Royer Converter ในงาน wireless power ไม่ใช่ขดลวดเดียว แต่ใช้ระบบ 3 coil ทำงานร่วมกัน
┌─── ฝั่งฐาน (อยู่นิ่ง) ──────────────────┐
│ │
│ ┌─────────────────┐ │
│ │ L1: Primary │ ← coil หลัก │
│ │ Bifilar │ เป็น LC tank │
│ │ 17 turns │ + ส่งกำลัง │
│ └─────────────────┘ │
│ ║║ │
│ ║║ inductive coupling │
│ ║║ │
│ ┌────╨╨─────────┐ │
│ │ L2: Coupling │ ← coil เล็ก │
│ │ 6 turns │ feedback ไป │
│ │ │ gate MOSFET │
│ └─────────────────┘ │
└─────────────╫───────────────────────────┘
║
║ AIR GAP (~3-5mm)
║ → ส่งกำลังที่นี่
║
┌─────────────╫───── ฝั่งหมุน ──────────────┐
│ ┌─────────────────┐ │
│ │ L3: Secondary │ ← coil รับ │
│ │ 14 turns │ อยู่บน rotor │หน้าที่ 2 อย่างพร้อมกัน:
เป็นส่วนหนึ่งของ LC Resonant Tank
ส่งสนามแม่เหล็ก AC
ทำไมต้อง Bifilar (พันลวด 2 เส้นพร้อมกัน)?
●───────●───────●
│ │ │ ← Center tap → V+ supply
Half 1 CT Half 2
│ │ │
● │ ●
│ ↓ MOSFETs ↓ │
Q1 → Q2
│ │
●━━━━━━━━━━━━━●
GNDหน้าที่: เป็น "ตัวฟัง" สนามแม่เหล็กของ L1 แล้วส่งสัญญาณไปเปิด-ปิด MOSFET
ทำไมต้องมี?
ขนาดทำไมเล็กกว่า L1 มาก?
หน้าที่: รับสนามแม่เหล็กจาก L1 ผ่านช่องอากาศ → จ่ายไฟให้บอร์ดที่หมุน
ขั้นตอน:
สนามแม่เหล็ก AC ที่ L1 ──→ L3 induced AC voltage
↓
Bridge Rectifier
↓
DC + Smoothing
↓
AMS1117 → 5V → LEDอัตราส่วน turns กำหนดแรงดัน output:
สมการพื้นฐาน: $$f = \frac{1}{2\pi\sqrt{LC}}$$
กำหนดเป้าหมาย:
คำนวณ L ที่ต้องการ: $$L = \frac{1}{(2\pi f)^2 \cdot C} = \frac{1}{(2\pi \times 120{,}000)^2 \times 100 \times 10^{-9}}$$
$$L \approx 17.6 , \mu H$$
→ L1 รวม = 18 µH (จากปลายถึงปลาย)
ใช้ Mohan's Formula สำหรับ planar spiral coil:
$$L = \frac{\mu_0 \cdot n^2 \cdot d_{avg}}{2} \left[ \ln\left(\frac{2.46}{\rho}\right) + 0.20 \cdot \rho^2 \right]$$
ค่าที่กำหนด:
คำนวณ: $$L = 6.18 \times 10^{-8} \cdot n^2 , H$$
ต้องการ L = 18 µH: $$n^2 = \frac{18 \times 10^{-6}}{6.18 \times 10^{-8}} = 291$$
→ n ≈ 17 turns (bifilar = trace 2 เส้น × 17 รอบ = 34 trace ทั้งหมด)
พื้นที่ใช้งาน: (90-30)/2 = 30 mm รัศมี
ระยะต่อรอบ: 30/34 = 0.88 mm
แบ่ง:
ตรวจสอบ current capacity:
กฎทั่วไป: L2 = L1/4 ในแง่ inductance
ค่าที่ใช้:
→ n ≈ 6 turns (single, ไม่ bifilar) → L2 ≈ 2-3 µH
Trace:
เป้าหมาย: ได้ V_DC ≈ 7-9V (สำหรับ headroom ของ AMS1117)
สมการ: $$V_{secondary,peak} \approx k \cdot \frac{n_2}{n_1} \cdot V_{primary,peak}$$
ค่าที่ใช้:
$$\frac{n_2}{n_1} = \frac{10}{38 \times 0.4} = 0.66$$
→ n₂ ≈ 11 turns (เกือบ minimum)
บวก margin เผื่อ coupling แย่กว่าคิด: → n₂ = 14 turns (ปลอดภัย)
Trace: กว้างขึ้น = resistance ต่ำลง
| Coil | หน้าที่ | Diameter (Out/In) | Turns | Trace Width | Gap | Layer | Type |
|---|---|---|---|---|---|---|---|
| L1 Primary | Power transmit + LC tank | 90/30 mm | 17 × 2 = 34 | 0.4 mm | 0.48 mm | Top+Bottom (via) | Bifilar |
| L2 Coupling | Feedback to MOSFET gates | 28/10 mm | 6 | 0.3 mm | 0.5 mm | Top only | Single |
| L3 Secondary | Power receive | 90/30 mm | 14 | 0.8 mm | 1.3 mm | Top+Bottom (via) | Single |
ค่า k บอกอะไร:
ปัจจัยที่กระทบ k:
| ปัจจัย | ผลต่อ k |
|---|---|
| Air gap น้อยลง | k เพิ่ม |
| Coil diameter ใหญ่ขึ้น | k เพิ่ม |
| Coil aligned ตรงกัน | k เพิ่ม |
| Coil shape เหมือนกัน | k เพิ่ม |
| Off-center | k ลดลงมาก |
ใหญ่กว่านี้ (>5mm):
น้อยกว่านี้ (<3mm):
3-5mm = sweet spot สำหรับ:
ปัญหา: ถ้า L2 ต่อขั้วผิด → MOSFET ทั้งสองเปิดพร้อมกัน → ลัดวงจร → พังทันที!
วิธีตรวจสอบ:
ห้าม: ceramic capacitor
เหตุผล:
ใช้: Polypropylene film cap, ≥250V rating
ค่า L ที่คำนวณได้อาจ คลาดเคลื่อน ±20% เพราะ:
วิธี tune:
Tip: เริ่มด้วย C = 47nF + 100nF (ขนาน) → 147nF → tune ลงได้
ปัญหา: ถ้า rotor กระดิก → coupling กระเพื่อม → output voltage แกว่ง
การแก้:
ฐานล่าง (Primary side):
Top Layer: L1 ครึ่งที่ 1 (spiral นอก→ใน) + L2 + Royer driver
Vias เชื่อมไป Bottom
Bottom Layer: L1 ครึ่งที่ 2 (spiral ใน→นอก) + GND planeRotor (Secondary side):
Top Layer: LED + IC + Arduino (rotor topside ↑)
Bottom Layer: L3 + bridge rectifier + power supply + GND plane
(ด้านที่หันลงเข้าหา primary)Square spiral vs Circular spiral:
| รูปทรง | ข้อดี | ข้อเสีย |
|---|---|---|
| Square spiral | Routing ง่าย, KiCad native | Inductance ต่ำกว่า circular ~5% |
| Circular spiral | Inductance สูงสุด | Routing ยาก ต้อง custom angle |
| Octagonal spiral | Compromise ที่ดี | ค่าระหว่าง 2 แบบ |
แนะนำ: Octagonal spiral (8-sided) — KiCad routable ใน 45° mode
L1 bifilar ต้องใช้ vias เพื่อข้ามตัวเอง:
Top layer: เริ่มขอบนอก → spiral ใน → via ลง Bottom
Bottom layer: via ขึ้น Top → spiral ออก → ขอบนอก (อีกขั้ว)Via spec:
Step 1: ต่อแค่ Royer + L1 + L2 (ไม่มี L3 rotor) Step 2: ค่อยๆ เพิ่มไฟจาก 0V → 12V ผ่าน current-limited supply Step 3: วัดที่ L1:
ถ้าผิดปกติ:
Step 1: วาง rotor PCB เหนือ Royer ที่ air gap 3-5mm Step 2: วัดที่ L3 ด้วย oscilloscope:
Step 1: ต่อ rotor ทั้งบอร์ด, ยังไม่หมุน Step 2: วัด +5V rail:
A: Classic Royer พึ่ง core saturation → core ร้อน, loss สูง, ใช้กับ ferrite transformer Resonant Royer พึ่ง LC tank → ZVS efficiency 90%+, sinewave (low EMI), เหมาะกับ PCB coil + air-core
A:
A:
A:
A:
| Slip Ring | Wireless (Royer) |
|---|---|
| ทำให้สึกหรอ (carbon brush) | ไม่สึกหรอ |
| Noise จากการเสียดสี | ไม่มี contact noise |
| Mechanical wear → ต้องเปลี่ยน | ไม่มี wear |
| ราคาแพง (mini ~500฿+) | ราคาเป็นส่วนของ PCB |
| ความเร็วจำกัด | หมุนได้ไม่จำกัด |
| ต้องการ space ตรงกลาง | ใช้ PCB area เดิม |
A:
A:
Mohan's Formula for PCB Spiral Inductors
Royer Converter Original Patent
Resonant Royer (Baxandall)
Wireless Power Transfer Theory
RD40 Project Documentation
ระบบ Royer coil ของเราใช้แนวคิด 3 coils ทำงานร่วมกัน:
ออกแบบทั้งหมดเป็น PCB spiral coils ผ่านการคำนวณตามทฤษฎี:
ทำงานที่ 120 kHz, 4-5W output, efficiency ~70%, k ≈ 0.4 — เหมาะกับ rotor 120mm ที่หมุน 2000 RPM
📖 คำอธิบายประกอบการดู Animation ลองกด Play แล้วดู animation ทำงาน — ผมจะอธิบายสิ่งที่เกิดขึ้นในแต่ละ step ให้ ขั้นที่ 1-4: ครึ่งคลื่นแรก (Positive Half-Cycle) Step 1: Q1 เปิด — MOSFET ตัวซ้าย "เปิดสวิตช์" ทำให้กระแสไหลจาก 12V → choke → L1a (ครึ่งซ้ายของ primary coil) → Q1 → GND Step 2: สนามแม่เหล็กขยายตัว — เมื่อกระแสไหลผ่าน coil → สร้างสนามแม่เหล็ก B ตามกฎ Ampere ขยายออกจาก coil Step 3: L3 รับสนามแม่เหล็ก — สนาม B พุ่งผ่าน air gap → ตัด L3 บน rotor → ตามกฎ Faraday เกิด induced EMF ขั้วบวก Step 4: D1+D4 conduct — แรงดัน AC ครึ่งคลื่นบวก → D1 และ D4 forward biased → กระแสไหลไป V+ output ขั้นที่ 5-8: ครึ่งคลื่นที่สอง (Negative Half-Cycle) Step 5: Q2 เปิด, Q1 ปิด — LC tank "ring" ทำให้ MOSFET สลับกันโดยอัตโนมัติ (self-oscillation) Step 6: B field กลับทิศ — กระแสไหลผ่าน L1b ในทิศตรงข้าม → สนาม B กลับทิศด้วย Step 7: L3 induced AC ขั้วลบ — สนาม B ทิศใหม่ตัด L3 → induced EMF กลับขั้ว Step 8: D2+D3 conduct — แม้ AC กลับขั้ว แต่ bridge rectifier ฉลาด — เลือก D2 และ D3 แทน → กระแสยังไหลไป V+ ทิศเดียวกับครึ่งคลื่นแรก! 🔑 จุดสำคัญที่ต้องเข้าใจ
Royer = หัวใจที่เต้นเอง ไม่ต้องมีสมองสั่ง — pace maker built-in Air gap = ทางเดินของแสง ผ่านอากาศได้ แม้บอร์ดหมุน Bridge rectifier = วาล์วน้ำ บังคับให้ไฟไหลทิศเดียว ไม่ว่า input จะกลับขั้วยังไง
| Qty | Value | Footprint | References |
|---|---|---|---|
| 64 | LED | LED_THT:LED_Rectangular_W3.0mm_H2.0mm | D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25 +48 |
| 8 | 0.1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C3, C4, C5, C6, C7, C8, C9, C10 |
| 8 | R_Network08 | Resistor_THT:R_Array_SIP9 | RN1, RN2, RN3, RN4, RN5, RN6, RN7, RN8 |
| 8 | TPIC6C595N | TPIC6C595N:N0016A | U2, U3, U4, U5, U6, U7, U8, U9 |
| 4 | , , , | ||
| 4 | 1N5818 | Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal | D1, D2, D3, D4 |
| 2 | 220uF | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C1, C2 |
| 1 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C12 |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C13 |
| 1 | 20k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1 |
| 1 | 22uF | Capacitor_Tantalum_SMD:CP_EIA-3528-12_Kemet-T_HandSolder | C11 |
| 1 | A3144 | my_footprints:A3144 | U1 |
| 1 | AMS1117-5.0 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U10 |
| 1 | Arduino_Nano_v3.x | Module:Arduino_Nano | A2 |

Aitthikit/POV_Display_PCB
ที่ 2000 RPM: - 33 รอบ/วินาที = 33 FPS - 240 พิกเซลต่อรอบ - 125 µs ต่อพิกเซล

Aitthikit/POV_Display_PCB
ที่ 2000 RPM: - 33 รอบ/วินาที = 33 FPS - 240 พิกเซลต่อรอบ - 125 µs ต่อพิกเซล

lhm0/rotating_display
A DIY 40 LED rotating display with Arduino nano and ESP-01s microcontrollers

dani0421/Compostaje
El SDA se conecta al pin 33 del ESP32 y el SCL al pin 36 de ESP32, cabe resaltar que en la placa no quedaran orificios para la pantalla, unicamente los pines para hacer la conexión.


noahrichards213/LED-guided-chessboard
Chessboard for beginners that lights up the available moves for the player


TheJustMoose/LED-display
PCB of 4 digit 7-segment LED display for Arduino based on tpic6c595


CoraBeanz/linescan-hyperspectral-splatting
A homebuilt pushbroom spectrograph rides a robot arm, and the 3D Gaussian splat it trains stores a full 500–950 nm spectrum in every Gaussian instead of an RGB color.
It measures 51.6 × 42.4 mm and has 4 copper layers, 1.6 mm thick.
105 parts, built around the TPIC6C595N, A3144 and AMS1117-5.0. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Aitthikit/POV_Display_PCB repository on GitHub, at the commit this page was made from: the board is LED_DisplayV2/LED_DisplayV2.kicad_pcb and its schematic LED_Display/LED.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Aitthikit before reusing the design.