กลับไปหน้ารวมไฟล์
erasynth-2c1fdd.md

การสร้างเครื่องกำเนิดสัญญาณ RF ด้วย Arduino

เครื่องกำเนิดสัญญาณเป็นส่วนสำคัญของชุดทดสอบ RF และไมโครเวฟ แม้ว่าจะมีหลากหลายรูปแบบ ตั้งแต่อุปกรณ์พกพาขนาดเล็กไปจนถึงกล่องตั้งโต๊ะขนาดใหญ่ แต่เครื่องกำเนิดสัญญาณ RF มักมีราคาแพงมาก เราใช้ Arduino สร้าง ERASynth ซึ่งเป็นเครื่องกำเนิดสัญญาณ RF ราคาไม่แพงที่ครอบคลุมแบนด์วิธ RF ตั้งแต่ 250 kHz ถึง 15 GHz เราสามารถรวมบอร์ด Arduino Due ทั้งหมดเข้ากับการออกแบบของ ERASynth เพื่อให้มีพลังประมวลผลที่จำเป็นสำหรับการคำนวณความถี่และแอมพลิจูด รวมถึงการสื่อสารทั้งหมดกับโลกภายนอกผ่าน RS232 และ Wi-Fi

ทำไมต้อง Arduino Due?

เราเลือก Arduino Due สำหรับ ERASynth ด้วยเหตุผลหลายประการ: พลังการประมวลผล, จำนวนขา hard SPI LE ที่มีอยู่, จำนวนขา GPIO ที่มีอยู่มากมาย, และการผสานรวมเข้ากับโมดูล Wi-Fi ESP8266 ที่แพร่หลายได้อย่างเป็นธรรมชาติ

MCU ที่ทรงพลัง:

เมื่อเราเริ่มออกแบบ ERASynth เราสามารถใช้โปรเจกต์โอเพนซอร์สมากมายสำหรับควบคุมโปรเจกต์เครื่องกำเนิดสัญญาณของเรา เราประเมินทางเลือกของเราและพบว่า Arduino Due มีพลังงานเพียงพอที่จะรองรับการคำนวณทั้งหมด พลัง CPU เป็นตัวชี้วัดที่สำคัญสำหรับเรา เพราะเราตั้งเป้าที่จะสร้างเครื่องกำเนิดสัญญาณที่คล่องตัว เมื่อคุณตั้งเป้าที่จะทำความเร็วในการเปลี่ยนความถี่ให้ต่ำกว่า 100 µs คุณจะไม่มีเวลาเหลือเฟือที่จะเสียไปกับการคำนวณ ด้วย ATSAM3XE ความเร็ว 84MHz ทำให้ Arduino Due เป็นตัวเลือกที่สมบูรณ์แบบสำหรับ ERASynth

จำนวนขา Hard LE:

Serial Peripheral Interface (SPI) เป็นโปรโตคอลอนุกรมที่ใช้สี่เลนสำหรับการสื่อสารแบบสองทิศทางระหว่างอุปกรณ์ master และ slave สำหรับ PLL synthesizer, SPI เป็นมาตรฐานอุตสาหกรรมในปัจจุบัน IC PLL ที่ทันสมัยเกือบทั้งหมดมีขา 3 ขาขึ้นไปสำหรับการกำหนดค่าโดย host microcontroller โดยใช้โปรโตคอล SPI การตั้งชื่อขาอาจแตกต่างกันไป แต่ฟังก์ชันการทำงานยังคงเหมือนเดิม นี่คือรายการชื่อขา SPI ที่พบใน datasheet ของ PLL:

  • Master Out Slave In: MOSI, DATA, SDATA, SDO, SDIO
  • Master In Slave Out: MISO, SDI, SDIO, MUXOUT
  • Clock: CLK, SCLK, SCK
  • Slave Select: SS, CS, LE, SEN, CSB

ERASynth รุ่นปัจจุบันใช้ IC PLL สี่ตัวที่แตกต่างกัน: ADF4002, HMC830, ADF4356 และ LTC6945 ต้นแบบสุดท้ายจะใช้ ADF4002 และ LMX2594 IC เหล่านี้ทั้งหมดต้องใช้การสื่อสารแบบ SPI สำหรับการโปรแกรม Arduino Due มีบัส SPI หนึ่งชุดพร้อมขา hard LE สามขา ดังนั้น เราจึงสามารถโปรแกรม IC PLL แยกกันได้สูงสุดสามตัวโดยใช้ Arduino Due ขา hard LE สามขาเพียงพอสำหรับวัตถุประสงค์ส่วนใหญ่ ในกรณีที่มีอุปกรณ์ slave มากกว่าสามตัว (เช่นในกรณีของ ERASynth) สามารถใช้ขา soft LE ได้ ขา soft LE คือขา GPIO ปกติที่ใช้สำหรับการเลือก slave มีความล่าช้าจำนวนมากที่เกี่ยวข้องกับขา soft LE นั่นคือ การสื่อสาร SPI ที่ใช้ขา hard LE นั้นเร็วกว่าการสื่อสาร soft LE มาก สำหรับ RF synthesizer ที่เร็วเป็นพิเศษอย่าง ERASynth การมีขา hard LE ใน Arduino Due ถือเป็นข้อได้เปรียบ เราใช้ขา hard LE ทั้งสามขาสำหรับ IC ที่ความเร็วเป็นสิ่งสำคัญ HMC830 (tunable reference generator), ADF4356 (main VCO), และ LTC6945 (main PLL) ถูกโปรแกรมโดยใช้ขา hard LE นี่คือภาพหน้าจอของการสื่อสาร SPI สำหรับความถี่ 4 GHz:

SPI transactions for a frequency change command in ERASynth

ดังที่คุณเห็นในภาพด้านบน คำสั่งเปลี่ยนความถี่หนึ่งครั้งต้องใช้การสื่อสาร SPI 16 ไบต์ เราสามารถส่งข้อมูล 16 ไบต์ได้ภายในเวลาไม่ถึง 30 µs

การผสานรวม ESP8266 อย่างเป็นธรรมชาติ:

หนึ่งในคุณสมบัติที่โดดเด่นของ ERASynth คือการเชื่อมต่อ Wi-Fi ต้องขอบคุณโมดูล Wi-Fi ESP8266 บนบอร์ด ก่อนเริ่มออกแบบ ERASynth เราไม่มีประสบการณ์ในการใช้ ESP8266 มาก่อน เราสามารถเริ่มต้นได้อย่างรวดเร็วเนื่องจากมีโค้ดจำนวนมากให้ใช้ Arduino ทำให้งานของเราง่ายมาก การทำให้ ESP8266 ทำงานได้เป็นเพียงแค่การโหลดไลบรารีใหม่เท่านั้น การใช้ Arduino IDE เราสามารถโปรแกรม flash ของ ESP8266 ได้โดยไม่ต้องเปิดฝาครอบ ERASynth ด้วยซ้ำ เราใช้พอร์ต mini-USB เดียวกันเพื่อโปรแกรม flash ของทั้ง ATSAM3XE และ ESP8266 ทั้งหมดนี้เป็นไปได้ด้วยชุมชนที่แข็งแกร่งเบื้องหลัง Arduino และ ESP8266 การโปรแกรม ESP8266 โดยใช้ Arduino IDE ไม่ใช่ความสำเร็จเล็กน้อยเมื่อพิจารณาว่า Dave Jones เพิ่งเผยแพร่วิดีโอสำหรับเรื่องนี้เมื่อ ไม่นานมานี้

เราปรับปรุงอะไรบ้าง?

เราไม่ได้เพียงแค่คัดลอกวงจรของ Arduino Due และโค้ดโอเพนซอร์สที่มีอยู่แบบตรงไปตรงมา เราได้ปรับปรุงหลายด้านทั้งในส่วนของฮาร์ดแวร์และซอฟต์แวร์:

แพ็กเกจ BGA:

มีข้อเสียเปรียบหนึ่งประการในการเลือก Arduino Due สำหรับการควบคุม ERASynth MCU ใน Arduino Due คือ ATSAM3X8E โดย Atmel (ปัจจุบันเป็นของ Microchip) บอร์ด Arduino Due ใช้ ATSAM3X8E เวอร์ชัน LQFP ซึ่งมีขนาด 22 มม. * 22 มม. ดังนั้น หากเราใช้ ATSAM3X เวอร์ชันแพ็กเกจ LQFP เราจะต้องจัดสรรพื้นที่บอร์ด 484 ตร.มม. ซึ่งมีค่ามาก PCB stack-up ของเรามีราคาแพง ดังนั้นเราจึงตัดสินใจประหยัดพื้นที่เท่าที่เราทำได้ เราเลือกเวอร์ชัน BGA ซึ่งใช้พื้นที่บอร์ดเพียง 100 ตร.มม. การเปลี่ยนจากแพ็กเกจ LQFP เป็น BGA ไม่ใช่งานที่ท้าทายมากนัก มีความแตกต่างเล็กน้อยเพียงไม่กี่อย่างระหว่างแพ็กเกจทั้งสอง อย่างไรก็ตาม เราต้องระมัดระวังเป็นอย่างมาก

การเร่งความเร็ว soft SPI:

ดังที่เราได้กล่าวไว้ข้างต้น เมื่อขา hard LE ไม่เพียงพอ สามารถใช้ขา GPIO เป็นขา soft LE ได้ ใน Arduino ขา soft LE สามารถถูกนำมาใช้โดยใช้ฟังก์ชัน digitalWrite() ทั่วไป อย่างไรก็ตาม ฟังก์ชันนี้สิ้นเปลืองเวลาไปหลายไมโครวินาที นี่คือหน้าจอออสซิลโลสโคปที่แสดงรูปคลื่นสำหรับ soft LE โดยใช้ digitalWrite():

Soft LE using the digitalWrite()

ดังที่คุณเห็นได้อย่างชัดเจนในภาพด้านบน มีความแตกต่างของเวลาประมาณ 1.25 µs จาก falling edge ของ LE ไปยัง first rising edge ของ CLOCK มีเวลามากกว่านั้นอีก –ประมาณ 2.5 µs– ระหว่าง last falling edge ของ CLOCK และ rising edge ของสัญญาณ LE มีเวลาเสียเปล่ารวม 3.75 µs เนื่องจากไม่มีข้อมูลถูกส่งหรือรับในช่วงเวลาเหล่านี้ การสิ้นเปลืองนี้เกิดขึ้นต่อรอบ LE เมื่อมี 10 รอบ LE มันจะเพิ่มขึ้นเป็น 37.5 µs ซึ่งเป็นเวลาที่มากเกินไปที่จะเสียไปสำหรับ RF synthesizer ที่มีเป้าหมายในการทำ lock-time ทั้งหมด 100 µs ดังนั้น เราจึงแก้ไข soft LE ดังที่แสดงในโค้ดด้านล่าง:

 SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); 
//REG_PIOD_ODSR &= ~(1 << 2); //Low PD2 (27)
digitalWrite(pin_LE, LOW);
SPI.transfer(&array[0], array_size);
//REG_PIOD_ODSR |= 1 << 2; //High PD2 (27)
digitalWrite (pin_LE, HIGH);
SPI.endTransaction();

W

ข้อมูล Frontmatter ดั้งเดิม

title: "ERASynth"
description: "An open-source, Arduino-compatible RF signal generator with Wi-Fi connectivity."
author: "edensrock"
category: "Lab Stuff"
tags:
  - "communication"
  - "internet of things"
views: 9008
likes: 2
price: 4500
difficulty: "Intermediate"
components:
  - "1x LMX2594"
  - "1x Arduino Due"
  - "1x ESP8266 ESP-12E"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "http://github.com/erainstruments/erasynth"
  - "http://github.com/erainstruments/erasynth"
documentationLinks: []
passwordHash: "5e513df8b894f5eb90f3d004efabf825f7f39d489c3beda7439e7d80a9a8e0ed"
encryptedPayload: "U2FsdGVkX18dtDH23ZIJqQSCggOjvbznlFiywvATKDo2eCmbtoPw2JLunY1qeiUrPXuE4PYhH7OBSfFfgRBZh1mLG/bGX7U13Rx9QOrG8EM="
seoDescription: "ERASynth: Open-source, Arduino-compatible RF signal generator with Wi-Fi connectivity for professional RF synthesis."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/erasynth-2c1fdd_cover.png"
lang: "th"