Acoustic Manipulation: Ultrasonic Levitator
Ultrasonic Levitator เนี่ยแหละคือฟิสิกส์ที่เห็นกันจะๆ! เราแค่เอาเซนเซอร์วัดระยะอัลตราโซนิกราคาถูกๆ สองตัวมาประยุกต์ใช้ใหม่ แทนที่จะเอาไว้วัดระยะด้วยเสียงสะท้อน เราใช้ Arduino สร้างคลื่นเสียงความถี่สูงที่แม่นยำสุดๆ และเฟสตรงข้ามกัน เพื่อสร้าง "โหนดความดัน" ที่สามารถยกเม็ดสไตโรโฟมหรือหยดน้ำให้ลอยกลางอากาศได้จริงๆ เลย!
Ultrasonic Transmitter
ถ้าน้องเคยเล่นโมดูลอัลตราโซนิก เช่น SRF05 น้องจะเห็นว่าในโมดูลพวกนี้จะมีเซนเซอร์เสียงสองตัว ตัวหนึ่งส่งคลื่น อีกตัวรับคลื่นที่สะท้อนกลับมา ถ้าแกะดูที่หลังเซนเซอร์ จะมีตัวอักษรพิมพ์ไว้ว่า 'R' หรือ 'T' อยู่ สำหรับโปรเจคนี้ เราต้องใช้แบบ 'T' หรือ Transmitter (ตัวส่ง) เท่านั้น ส่วน 'R' คือ Receiver (ตัวรับ) เก็บไว้ทำโปรเจคอื่นก่อนนะ
L298N Driver Module
โมดูลขับ L298N เนี่ย ปกติเอาไว้ขับมอเตอร์ DC ใช่มั้ย? แต่ในโปรเจคนี้เราจะใช้มันในแบบที่ต่างออกไปหน่อย โมดูลนี้มีเอาต์พุตสี่ช่อง (out1, out2, out3, out4) ซึ่งเราจะใช้แค่ out1 กับ out2 ในโปรเจคนี้ Arduino จะส่งสัญญาณสี่เหลี่ยม 5V pp (peak-to-peak) เข้าไปที่โมดูลขับ แล้วโมดูลขับจะบูสต์แรงดันขึ้นไปเป็น 25V pp ก่อนส่งไปเลี้ยงตัวส่งสัญญาณอัลตราโซนิกของเรา
The Hardware Driver (L298N Frequency Math)
ห้ามเอา Transducer ต่อตรงกับขา Arduino นะน้อง! มันต้องใช้มอเตอร์ไดรเวอร์ (L298N) เป็นตัวขยายสัญญาณความเร็วสูงต่างหาก
- ตัวส่งด้านบน หันหน้าลง ตัวส่งด้านล่าง หันหน้าขึ้น ทั้งสองตัวต้องจัดเรียงให้ตรงกันเป๊ะ
- Arduino ต้องส่งสัญญาณคลื่นสี่เหลี่ยมความถี่ 40,000 เฮิรตซ์ (40kHz) ออกมาให้แม่นยำ (คนหูหนวกกับความถี่นี้เลย 555)
- L298N จะรับสัญญาณสี่เหลี่ยม 5V เล็กๆ นั้นมา แล้วขยายกำลังมันขึ้นมหาศาลจากแหล่งจ่ายไฟ ก่อนส่งไปกระแทกตัวส่งทั้งสองตัว
- ฟิสิกส์ของ Standing Wave: เมื่อคลื่นเสียง 40kHz ที่เดินทางลงด้านล่าง ชนกับคลื่นเสียง 40kHz ที่เดินทางขึ้นด้านบน มันจะชนกัน! แล้วก็สร้าง "กระเป๋า" ความดันสูงและความดันต่ำ (โหนด) ที่จับต้องได้ให้ลอยอยู่ในอากาศที่มองไม่เห็น!
Arduino Nano
บอร์ด Arduino ที่ใช้ CPU เป็น Atmega328 ตัวโค้ดที่เราต้องเขียนสำหรับโปรเจคนี้จะถูกโปรแกรมลงไปในไมโครคอนโทรลเลอร์ตัวนี้ และจะส่งสัญญาณไปขับที่ Driver ผ่านขาเอาต์พุต A0 กับ A1 ซึ่งเป็นขาเอาต์พุตแบบอนาล็อกของเรา
DC-DC variable voltage “XL6009E1”
เพื่อจ่ายไฟให้กับโมดูล L298N เราต้องใช้แหล่งจ่ายไฟ 12 โวลต์ ดังนั้นการใช้โมดูลนี้จะช่วยให้เราปรับแรงดันจากแบตเตอรี่ทั่วไปที่ 3.7 โวลต์ให้กลายเป็น 12 โวลต์ได้ง่ายๆ
หมายเหตุ: ระวังนิดนึงนะน้อง เพราะถ้าเราใส่ไฟเข้า 3.5 หรือ 3.7 โวลต์ให้โมดูลนี้ มันสามารถดันไฟออกได้สูงสุดถึง 37 โวลต์เลย! ก่อนจะต่อโมดูลเข้าวงจร อย่าลืมใช้มัลติมิเตอร์วัดแรงดันขาออก แล้วปรับโพเทนชิออมิเตอร์บนโมดูลให้ได้แรงดันตามที่ต้องการก่อนล่ะ
หลักการลอยวัตถุ
เมื่อน้องต่อทรานสดิวเซอร์เข้ากับไดรเวอร์แล้ว จะได้ยินเสียงเบาๆ แต่ค่อนข้างน่ารำคาญในระยะยาว นั่นแหละคือสัญญาณว่าอุปกรณ์ทำงานแล้วจ้า
ความแม่นยำทางเรขาคณิต (Geometric Tolerances)
เขียนโค้ดน่ะง่าย แต่ปรับแต่งชิ้นส่วนทางกายภาพนี่สิที่เหนื่อยสุดๆ
- ช่องว่างระหว่างทรานสดิวเซอร์ด้านบนและด้านล่างต้องแม่นยำมากๆ ต้องตรงกับความยาวคลื่นของเสียง 40kHz ในอากาศ (ประมาณ 8.5 มิลลิเมตร) เป๊ะๆ ตามหลักการทางคณิตศาสตร์
- ถ้าอาร์เรย์ด้านบนคลาดไปแค่ 2 มิลลิเมตร โหนดเสียงจะพังทลาย และเม็ดสไตโรโฟมก็จะร่วงลงมาทันที
- ใช้คีมคีบเม็ดโฟมเล็กๆ วางลงไปใน "กระเป๋าอากาศ" ที่มองไม่เห็น แรงดันจากการแผ่รังสีเสียง (Acoustic radiation pressure) จากคลื่นเสียงจะกักเก็บเม็ดโฟมไว้ได้ โดยต้านทานแรงโน้มถ่วงของโลกให้มันลอยนิ่งๆ ได้เลย!
อุปกรณ์สำหรับสร้างการลอยได้
- Arduino Nano (ใช้สำหรับสร้างพัลส์ขับ 40kHz โดยใช้รีจิสเตอร์ Timer)
- ทรานสดิวเซอร์อัลตราโซนิก 40kHz จำนวน 2 ตัว (ปกติจะได้มาจากการแกะโมดูลโซนาร์ HC-SR04 นั่นแหละ!)
- โมดูลขับมอเตอร์ L298N (ใช้เป็นแอมป์ขยายสัญญาณเสียงความถี่สูง)
- โครงสร้างรูปตัว C ที่พิมพ์จากเครื่อง 3D พริ้นเตอร์ และแข็งมากๆ (ความแข็งแรงเป็นสิ่งบังคับ ห้ามงอ!)
Schematic
- Arduino A0 ====> IN1 L298
- Arduino A1 =====>IN2 L298
- L298 out1 =====> Ultrasonic transmitter
- L298 out2 =====>Ultrasonic transmitter