สารบัญ:

สร้าง POV Display ของคุณเอง: 3 ขั้นตอน
สร้าง POV Display ของคุณเอง: 3 ขั้นตอน

วีดีโอ: สร้าง POV Display ของคุณเอง: 3 ขั้นตอน

วีดีโอ: สร้าง POV Display ของคุณเอง: 3 ขั้นตอน
วีดีโอ: Arduino POV Propeller Clock using 7-Segment LED Display 2024, มิถุนายน
Anonim
สร้าง POV Display ของคุณเอง
สร้าง POV Display ของคุณเอง

การรับรู้การมองเห็น (POV) หรือการคงอยู่ของการมองเห็น (มีหลายรูปแบบ) เป็นปรากฏการณ์การเห็นของมนุษย์ที่น่าสนใจ ซึ่งเกิดขึ้นเมื่อการรับรู้ทางสายตาของวัตถุไม่หยุดแม้วัตถุจะเปลี่ยนตำแหน่งก็ตาม มนุษย์เห็นภาพในช่วงเวลาเสี้ยววินาที ภาพเหล่านี้จะถูกบันทึกไว้ในสมองในเวลาอันสั้น (ชั่วพริบตา) ตัวอย่างของปรากฏการณ์นี้คือเมื่อคุณสังเกตแหล่งกำเนิดแสง เช่น LED หรือหลอดไฟ เปิดและหมุนไปรอบๆ วิสัยทัศน์ของเราถูกหลอกให้เชื่อว่าแท้จริงแล้วแสงหมุนเป็นวงกลมต่อเนื่อง เหมือนกับวงกลมต่อเนื่องที่เกิดจากใบพัดหมุนบนเครื่องบิน POV ถูกใช้มาหลายปีแล้ว โดยเริ่มจากกล้องส่องทางไกลเพื่อสร้างภาพลวงตาและแอนิเมชั่นประเภทต่างๆ ให้กับวิสัยทัศน์ของเรา มักใช้เพื่อแสดงข้อความและภาพเคลื่อนไหวบนจอแสดงผลโดยใช้ไฟ LED โดยหมุนเป็น 2D หรือ 3D สำหรับข้อความประเภทต่างๆ วัตถุประสงค์ของบันทึกแอปนี้คือการออกแบบและสาธิตวิธีการทำงานของ Perception of Vision โดยการเขียนคำว่า “SILEGO” บนหน้าจอเพื่อสร้าง และให้แนวคิดเพื่อแนะนำคุณตลอดกระบวนการออกแบบที่ซับซ้อนมากขึ้นในอนาคต สำหรับโครงการนี้ เราใช้ Dialog GreenPAK™ SLG46880 พร้อมชุดซ็อกเก็ตที่ช่วยให้ต้นแบบนี้เชื่อมต่อกับส่วนประกอบภายนอกทั้งหมดได้อย่างง่ายดายโดยใช้สายเคเบิล การใช้ GreenPAK ที่ใหญ่ขึ้นเพื่อออกแบบจอแสดงผล POV สำหรับวัตถุประสงค์ทั่วไปนั้นมีประโยชน์อย่างมาก เนื่องจากส่วนประกอบที่แข็งแกร่ง เช่น ระบบย่อย ASM ซึ่งจะช่วยให้คุณพิมพ์รูปแบบใดๆ บนจอแสดงผลได้ แอปพลิเคชั่นนี้จะแสดงผลสุดท้ายโดยใช้ SLG46880

ด้านล่างนี้ เราได้อธิบายขั้นตอนที่จำเป็น ทำความเข้าใจว่าชิป GreenPAK ได้รับการตั้งโปรแกรมเพื่อสร้างจอแสดงผล POV อย่างไร อย่างไรก็ตาม หากคุณต้องการเพียงแค่ผลลัพธ์ของการเขียนโปรแกรม ให้ดาวน์โหลดซอฟต์แวร์ GreenPAK เพื่อดูไฟล์การออกแบบ GreenPAK ที่เสร็จสมบูรณ์แล้ว เสียบ GreenPAK Development Kit เข้ากับคอมพิวเตอร์ของคุณและกดโปรแกรมเพื่อสร้าง IC แบบกำหนดเองสำหรับ POV Display

ขั้นตอนที่ 1: แผนผัง

แผนผัง
แผนผัง

ตัวอย่างการแสดง POV นี้มุ่งเป้าไปที่ประเภท 2D ที่แสดงในรูปที่ 1 ซึ่งมีอาร์เรย์ LED สิบเอ็ดดวง (แต่ละตัวมีตัวต้านทานเพื่อควบคุมกระแส) เชื่อมต่อโดยตรงกับหมุด GPO ต่างๆ บน GreenPAK CMIC วงจรนี้ถูกสร้างต้นแบบและบัดกรีเป็นแผงวงจร PCB แหล่งจ่ายไฟที่ใช้สำหรับจอแสดงผลคือแบตเตอรี่อัลคาไลน์ 9 V 10 A L1022 เชื่อมต่อกับวงจรควบคุมแรงดันไฟฟ้าโดยใช้ LM7805V ที่ให้เอาต์พุต 5 V นอกจากจะทำให้จอแสดงผลหมุนแล้วยังต้องการมอเตอร์ DC ที่มีกำลังเพียงพอในการเคลื่อนย้ายทั้งหมด วงจรควบคุมที่ติดอยู่กับขาตั้งแบบกำหนดเอง ในกรณีนี้ มีการใช้มอเตอร์ 12 V เชื่อมต่อกับสวิตช์หลัก และแหล่งจ่ายไฟแบบควบคุมนอกชั้นวาง ซึ่งจะส่งสัญญาณระดับแรงดันไฟฟ้าที่แตกต่างกันผ่านสวิตช์แบบหมุน ทำให้มอเตอร์สามารถหมุนได้หลายความเร็ว

ขั้นตอนที่ 2: การออกแบบ GreenPAK

การออกแบบ GreenPAK
การออกแบบ GreenPAK
การออกแบบ GreenPAK
การออกแบบ GreenPAK
การออกแบบ GreenPAK
การออกแบบ GreenPAK
การออกแบบ GreenPAK
การออกแบบ GreenPAK

เมื่อออกแบบข้อความและแอนิเมชั่นประเภทต่างๆ สำหรับ POV Display โดยใช้ GreenPAK เราควรทราบทั้งเครื่องมือและข้อจำกัดของชิป ด้วยวิธีนี้ เราสามารถสร้างการออกแบบที่เชี่ยวชาญ โดยใช้ส่วนประกอบอิเล็กทรอนิกส์น้อยที่สุดเพื่อให้ได้จอแสดงผล POV การออกแบบนี้ใช้ข้อได้เปรียบใหม่ที่นำเสนอโดย SLG46880 CMIC โดยเน้นที่ส่วนประกอบระบบย่อยของสถานะอะซิงโครนัส เครื่องมือระบบย่อย SLG46880 ASM มีประโยชน์มากกว่าเครื่องมือ GreenPAK ASM รุ่นก่อนๆ เนื่องจากคุณสมบัติใหม่ ซึ่งทำให้การออกแบบ State Machine มีความซับซ้อนมากขึ้น ส่วนประกอบภายในของระบบย่อย ASM ที่เกี่ยวข้องบางส่วนที่ใช้คือ:

● ASM Macrocell 12 สถานะ

● หน่วยความจำแบบไดนามิก (DM) Macrocell

● F(1) การคำนวณ Macrocell

● องค์ประกอบอิสระของรัฐ

ยิ่งชิปแมโครเซลล์ที่มีสถานะเครื่องจักรสร้างและกำหนดค่าได้มากเท่าใด ความเป็นไปได้ในการออกแบบก็จะยิ่งมากขึ้นเท่านั้น แต่ละสถานะทั้งสิบสองสถานะถูกใช้เพื่อเขียนเศษส่วนต่างๆ ของคำที่จะแสดง เปิด/ปิดชุดค่าผสมที่แตกต่างกันของ LED ซึ่งบางสถานะซ้ำสองครั้งหรือมากกว่านั้น และในบางกรณี เวลาของสถานะที่เกิดซ้ำจะเปลี่ยนไปเพราะ รูปแบบเดียวกันนี้สามารถนำมาใช้สำหรับตัวอักษรที่แตกต่างกันในช่วงเวลาต่างๆ รัฐมีโครงสร้างในตารางที่ 1

ตารางที่ 1 แสดงให้เห็นว่าแต่ละสถานะที่มีอยู่ในการออกแบบเกี่ยวข้องกับตัวอักษรในคำว่า “SILEGO” อย่างไร สิ่งนี้สัมพันธ์กับการกำหนดค่า LED ที่แสดงในรูปที่ 2

ดังที่คุณสังเกตได้ สถานะทั้งหมดที่ทำร่วมกันในเวลาที่ต่างกันจะทำให้เกิดการสร้างคำที่สมบูรณ์ รูปที่ 3 แสดงให้เห็นว่ารัฐมีการเชื่อมต่อ/เกี่ยวข้องกันอย่างไร การเปลี่ยนสถานะทั้งหมดอยู่ในลำดับมิลลิวินาที และแต่ละคอลัมน์ในแผนภาพของรูปที่ 2 แสดงถึงหนึ่งมิลลิวินาที (1 มิลลิวินาที) บางสถานะมีอายุ 3 ms, 4 ms และอื่นๆ นานพอด้วยความเร็วต่ำสุดของมอเตอร์ที่ใช้สำหรับการสาธิตวิดีโอที่ประมาณ 460 RPM

สิ่งสำคัญคือต้องพิจารณาและวัดความเร็วของมอเตอร์เพื่อให้ทราบและคำนวณระยะเวลาในการออกแบบตามวัตถุประสงค์ทั่วไป ด้วยวิธีนี้ ข้อความสามารถซิงค์กับความเร็วของมอเตอร์ ซึ่งจะทำให้มองเห็นได้ด้วยตามนุษย์ การพิจารณาอีกประการหนึ่งเพื่อทำให้การเปลี่ยนแปลงของรัฐมองไม่เห็นและชัดเจนยิ่งขึ้นสำหรับวิสัยทัศน์ของเราคือการเพิ่มความเร็วของมอเตอร์เป็นมากกว่า 1,000 รอบต่อนาทีและกำหนดเวลาของสถานะตามลำดับไมโครวินาทีเพื่อให้มองเห็นข้อความได้อย่างราบรื่น คุณอาจจะถามตัวเองว่า คุณจะซิงโครไนซ์ความเร็วของมอเตอร์กับความเร็วของข้อความหรือแอนิเมชั่นอย่างไร? ทำได้โดยใช้สูตรง่ายๆ ไม่กี่สูตร หากคุณมีความเร็วมอเตอร์ 1,000 รอบต่อนาที หากต้องการทราบว่ามอเตอร์กระแสตรงใช้เวลานานเท่าใดต่อการปฏิวัติในหน่วยวินาที ให้ทำดังนี้

ความถี่ = 1000 RPM / 60 = 16.67 Hz ช่วงเวลา = 1 / 16.67 Hz = 59.99 ms

เมื่อรู้ช่วงเวลา คุณจะรู้ว่ามอเตอร์จะหมุนนานแค่ไหน หากคุณต้องการพิมพ์ข้อความเช่น "สวัสดีชาวโลก" เมื่อคุณทราบระยะเวลาของแต่ละเทิร์นแล้ว สำคัญว่าคุณต้องการให้ข้อความแสดงบนจอแสดงผลมากแค่ไหน หากต้องการพิมพ์ข้อความที่ต้องการในขนาดที่ต้องการ ให้ปฏิบัติตามกฎง่ายๆ นี้:

ตัวอย่างเช่น หากคุณต้องการให้ข้อความครอบคลุมพื้นที่แสดงผล 40% ให้ทำดังนี้

ขนาดข้อความ = (ระยะเวลา * 40 %) / 100 % = (59.99 ms * 40 %) / 100 % = 24 ms

นั่นหมายความว่าข้อความจะแสดงใน 24 มิลลิวินาทีสำหรับแต่ละเทิร์น ดังนั้นพื้นที่ว่างหรือพื้นที่ที่เหลือในเทิร์นนั้น (หากคุณไม่ได้แสดงบางอย่างหลังจากข้อความ) ควรเป็น:

ช่องว่าง = ระยะเวลา – ขนาดข้อความ = 59.99 ms - 24 ms = 35.99 ms

สุดท้าย หากคุณต้องการแสดงข้อความที่ 40% ของช่วงเวลานั้น คุณจำเป็นต้องทราบจำนวนสถานะและการเปลี่ยนที่ข้อความจะต้องเขียนข้อความที่คาดไว้ ตัวอย่างเช่น หากข้อความมีการเปลี่ยนผ่านยี่สิบ (20) ครั้ง ให้ทำดังนี้

ระยะเวลาสถานะเดียว = ขนาดข้อความ / 20 = 24 ms / 20 = 1.2 ms

ดังนั้นแต่ละสถานะควรมีอายุ 1.2 ms เพื่อแสดงข้อความอย่างถูกต้อง แน่นอน คุณจะสังเกตเห็นว่าการออกแบบแรกๆ ส่วนใหญ่ไม่สมบูรณ์แบบ ดังนั้นคุณอาจเปลี่ยนพารามิเตอร์บางอย่างในระหว่างการทดสอบทางกายภาพเพื่อปรับปรุงการออกแบบ เราใช้ Macrocells Dynamic Memory (DM) เพื่ออำนวยความสะดวกในการเปลี่ยนสถานะ สองในสี่บล็อก DM มีการเชื่อมต่อเมทริกซ์เพื่อให้สามารถโต้ตอบกับบล็อกนอกระบบย่อย ASM DM Macrocell แต่ละรายการสามารถมีการกำหนดค่าที่แตกต่างกันได้ถึง 6 แบบซึ่งใช้ในสถานะต่างๆ ได้ บล็อก DM ถูกใช้ในการออกแบบนี้เพื่อกระตุ้น ASM เพื่อเปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง ตัวอย่างเช่น สถานะ Silego [3] ซ้ำสองครั้งในช่วงการเปลี่ยนภาพ ต้องเขียนต้นและท้ายตัว "I" ตัวพิมพ์ใหญ่ซึ่งมีรูปแบบเหมือนกัน แต่ต้องไปที่ Silego [4] เพื่อเขียนรูปแบบตรงกลางของตัวพิมพ์ใหญ่ "I" จากนั้นเมื่อ Silego [3] ถูกดำเนินการเป็นครั้งที่สอง จะต้องไปที่สถานะไม่มีข้อความ ดำเนินการเปลี่ยนที่เหลือต่อไป เป็นไปได้อย่างไรที่จะป้องกันไม่ให้ Silego [3] ตกลงไปในลูปที่ไม่มีที่สิ้นสุดด้วย Silego [4] ง่ายมาก มี LUT บางตัวที่กำหนดค่าเป็น SR Flip Flop ที่บอกให้ Silego [3] ไม่เลือก Silego [4] ซ้ำแล้วซ้ำเล่า แต่เลือกสถานะไม่มีข้อความในครั้งที่สอง การใช้ SR Flip Flops เพื่อป้องกัน infinite loops เมื่อสถานะใดๆ เกิดขึ้นซ้ำๆ เป็นวิธีที่ดีในการแก้ปัญหานี้ และต้องการเพียง 3 บิต LUT ที่กำหนดค่าดังแสดงในรูปที่ 4 และ รูปที่ 5 กระบวนการนี้เกิดขึ้นพร้อมกัน เอาต์พุต ASM ทำให้ Silego [3] ไปที่ Silego [4] ดังนั้นในครั้งต่อไปที่เครื่องสถานะเรียกใช้ Silego [3] จะได้รับแจ้งให้เลือกสถานะไม่มีข้อความเพื่อดำเนินการต่อ

บล็อก ASM อื่นที่เป็นประโยชน์สำหรับโครงการนี้คือ F(1) Computational Macrocell F(1) สามารถทำรายการคำสั่งเฉพาะเพื่ออ่าน จัดเก็บ ประมวลผล และส่งออกข้อมูลที่ต้องการ สามารถจัดการได้ครั้งละ 1 บิต ในโปรเจ็กต์นี้ บล็อก F(1) ถูกใช้เพื่ออ่าน หน่วงเวลา และส่งออกบิตเพื่อควบคุม LUT บางส่วนและเปิดใช้งานสถานะ (เช่นใน Silego [1] เพื่อเปิดใช้งาน Silego [2])

ตารางในรูปที่ 1 อธิบายว่า LED แต่ละดวงจะถูกส่งไปยังหมุด GPO ของ GreenPAK อย่างไร พินทางกายภาพที่เกี่ยวข้องได้รับการระบุจาก ASM Output RAM ในเมทริกซ์ดังแสดงในตารางที่ 2

ดังที่คุณเห็นในตารางที่ 2 พินแต่ละพินของชิปถูกส่งไปยังเอาต์พุต ASM ที่แตกต่างกัน ASMOUTPUT 1 มีแปด (8) เอาต์พุตทั้งหมดที่ใช้เชื่อมต่อโดยตรงกับ GPO ภายนอก ยกเว้น OUT 4 ASM OUTPUT 0 มีเอาต์พุตสี่ (4) เอาต์พุต โดยที่ OUT 0 และ OUT 1 เชื่อมต่อโดยตรงกับ PIN 4 และ PIN 16 ตามลำดับ OUT 2 ใช้เพื่อรีเซ็ต LUT5 และ LUT6 ที่ Silego [5] และ Silego [9] และสุดท้าย OUT 3 ใช้เพื่อตั้งค่า LUT6 ที่ Silego [4] และ Silego [7] ASM nRESET ไม่ได้ถูกเปิดใช้งานในการออกแบบนี้ ดังนั้นมันจึงถูกบังคับให้เชื่อมต่อกับ VDD ระดับสูงเท่านั้น ไฟ LED ด้านบนและด้านล่างถูกเพิ่มลงในโปรเจ็กต์นี้เพื่อสร้างแอนิเมชั่นเพิ่มเติมในขณะที่ “SILEGO” กำลังแสดงอยู่ แอนิเมชั่นนี้เป็นเรื่องเกี่ยวกับสองสามบรรทัดที่วนเวียนอยู่ตามกาลเวลากับการเคลื่อนไหวของมอเตอร์ เส้นเหล่านี้เป็นไฟ LED สีขาว ในขณะที่เส้นที่ใช้เขียนตัวอักษรจะเป็นสีแดง เพื่อให้บรรลุอนิเมชั่นนี้ เราใช้ PGEN และ CNT0 ของ GreenPAK PGEN เป็นเครื่องกำเนิดรูปแบบซึ่งจะส่งออกบิตถัดไปในอาร์เรย์ของมันที่ขอบนาฬิกาทุกอัน เราแบ่งระยะเวลาการเลี้ยวของมอเตอร์ออกเป็น 16 ส่วน และผลลัพธ์ถูกตั้งค่าเป็นช่วงผลลัพธ์ของ CNT0 รูปแบบที่ตั้งโปรแกรมไว้ใน PGEN จะแสดงในรูปที่ 6

ขั้นตอนที่ 3: ผลลัพธ์

ผลลัพธ์
ผลลัพธ์

เพื่อทดสอบการออกแบบ เราได้เชื่อมต่อซ็อกเก็ตของ SLG46880 กับ PCB ด้วยสายแพ แผงวงจรภายนอกสองแผงเชื่อมต่อกับวงจร โดยแผงหนึ่งมีตัวควบคุมแรงดันไฟฟ้าและอีกแผงหนึ่งมีอาร์เรย์ LED เพื่อเริ่มแสดงข้อความสำหรับการสาธิต เราเปิดวงจรลอจิกซึ่งควบคุมโดย GreenPAK จากนั้นจึงเปิดมอเตอร์กระแสตรง อาจจำเป็นต้องปรับความเร็วเพื่อการซิงโครไนซ์ที่เหมาะสม ผลลัพธ์สุดท้ายแสดงในรูปที่ 7 นอกจากนี้ยังมีวิดีโอที่เกี่ยวข้องกับบันทึกการใช้งานนี้

บทสรุป Perception of Vision Display ที่นำเสนอในโครงการนี้ได้รับการออกแบบโดยใช้ Dialog GreenPAK SLG46880 เป็นตัวควบคุมหลัก เราแสดงให้เห็นว่าการออกแบบใช้งานได้โดยการเขียนคำว่า “SILEGO” โดยใช้ไฟ LED การปรับปรุงบางอย่างที่สามารถทำได้ในการออกแบบ ได้แก่:

● การใช้ GreenPAK หลายรายการเพื่อเพิ่มจำนวนสถานะในการพิมพ์ข้อความหรือภาพเคลื่อนไหวที่ยาวขึ้น

● เพิ่มไฟ LED ให้กับอาร์เรย์ การใช้ LED แบบยึดบนพื้นผิวแทน LED แบบทะลุผ่านเพื่อลดมวลของแขนหมุนอาจเป็นประโยชน์

● การรวมไมโครคอนโทรลเลอร์อาจทำให้คุณสามารถเปลี่ยนข้อความที่แสดงโดยใช้คำสั่ง I2C เพื่อกำหนดค่าการออกแบบ GreenPAK ใหม่ สามารถใช้สร้างการแสดงนาฬิกาดิจิตอลที่อัพเดตตัวเลขเพื่อแสดงเวลาได้อย่างแม่นยำ

แนะนำ: