วิธีการระบุเครื่องหมาย LED ด้วยการปรับความสว่างของพวกเขา?


11

สำหรับโครงการของฉันฉันต้องใช้เครื่องหมาย LED อินฟราเรดเพื่อระบุตำแหน่งของจุดในอวกาศด้วยอัลกอริทึม stereovision และกล้อง IR หลายตัว ฉันต้องการตัวแสดงสถานะ LED แต่ละอันเพื่อให้มี ID ที่เป็นเอกลักษณ์ซึ่งเป็นปัญหาปัจจุบันของฉัน

ความคิดของฉันคือให้แต่ละ LED แฟลชระหว่างสองสถานะของความสว่าง (เป็นไปได้?) ในลำดับที่รู้จัก แต่ยังคงสว่างพอที่จะติดตามในสถานะความสว่างต่ำกว่า

ฉันไม่รู้ว่าจะนำสิ่งนี้ไปใช้อย่างไรหรือเริ่มต้นที่ไหนดี ฉันเป็นโปรแกรมเมอร์ แต่ไม่เคยทำงานกับวงจรจริงมาก่อน คุณช่วยฉันเริ่มต้นได้ไหม

led 

คำตอบ:


11

หากไฟ LED ทั้งหมดของคุณถูกควบคุมจากแหล่งเดียวกันให้พิจารณาใช้ไมโครคอนโทรลเลอร์ + ส่วนต่างของการเข้ารหัสแมนเชสเตอร์ + สถานะ LED สูง / ต่ำของคุณเพื่อเข้ารหัส bitstrings ของลำดับการทำซ้ำเช่น:

id #0: 1000000000000000[10000000000000001000000000000000....]
id #1: 1000000000000001[10000000000000011000000000000001....]
id #2: 1000000000000010
id #3: 1000000000000011
id #4: 1000000000000100

เพื่อเข้ารหัสหมายเลข ID เป็นบิตต่อมาแบบ 16 บิตประกอบด้วย 1, 7 ตามด้วยศูนย์และ 8 บิต ID # จากนั้นเมื่อถอดรหัสให้มองหา 1 ตามด้วย 7 ศูนย์จากนั้นนำบิตต่อมาที่ตามมา ใช้งานได้กับ ID 8 บิตทั้งหมด # (แม้แต่ # 128 = 10000000 ซึ่งเข้ารหัสเป็น 1000000010000000 ซึ่งไม่สามารถซิงค์ได้อย่างถูกต้อง แต่สำหรับหมายเลขนั้นมันไม่สำคัญ)

(ถ้าคุณมี LED ที่อาจเกิดขึ้นน้อยลงให้ใช้บิตน้อยลงชุดรูปแบบนี้ค่อนข้างเรียบง่ายและแปลงเป็นศูนย์ 1 + (N-1) ศูนย์ + หมายเลข N บิต)

การเข้ารหัสแมนเชสเตอร์นั้นเป็นการโอเวอร์คล็อกแบบตัวเองดังนั้นคุณควรจะซิงโครไนซ์ตัวรับกับมัน (แม้ว่ามันจะเป็นไมโครคอนโทรลเลอร์ตัวอื่นที่ไม่แน่ใจเรื่องความถี่ลองสุ่มตัวอย่างหลาย ๆ ครั้งต่อบิต


4

หากคุณสามารถเปิดและปิด LED แต่ละอันด้วยความถี่ที่แตกต่างกันนี่อาจจะทำให้สิ่งต่าง ๆ ง่ายขึ้นมากเนื่องจากคุณสามารถใช้วงจรที่มีฐาน 555 ตัวในการแฟลชแต่ละอันที่ความถี่ที่ต้องการ


2
ช่วยลดความยุ่งยากส่งสัญญาณ แต่มีความซับซ้อนรับ
เจสัน S

หากเขาติดตามคะแนนมากมายเขาอาจจะไม่ได้ใช้ Arduino หรือไมโครคอนโทรลเลอร์อื่น ๆ
Amos

.. สำหรับผู้รับนั่นคือบวกไม่ใช่การเขียนโปรแกรมที่เป็นปัญหามันคือวงจรดังนั้นวงจรที่ง่ายกว่าก็ดีกว่า
Amos

4

ดูเหมือนว่าทุกคนจะเริ่มต้นกับ Arduinos ทุกวันนี้ดังนั้นสิ่งนี้อาจเป็นสิ่งที่คุณกำลังมองหา อย่างไรก็ตามดูเหมือนว่าคุณตั้งใจจะใช้งานมากของ LEDs ในโครงการนี้ซึ่งจะยากกับ Arduino นี่คือทั้งหมดที่ด้านบนของหัวของฉัน * ที่นี่ แต่อาจเป็นไปได้ที่จะใช้ทรานซิสเตอร์และตัวต้านทานขนาดใหญ่แบบขนานเพื่อที่ว่าเมื่อทรานซิสเตอร์ถูกปิดกระแสจะไหลผ่านตัวต้านทานขนาดใหญ่และคุณจะได้รับแสงสลัว เมื่อคุณเปิดเครื่องกระแสจะไหลผ่านทรานซิสเตอร์เนื่องจากความต้านทานลดลงและคุณจะได้สถานะที่สว่างขึ้น สมมติว่าใช้งานได้คุณสามารถใช้ส่วนประกอบดิจิตอลเช่นไมโครคอนโทรลเลอร์เพื่อควบคุมทรานซิสเตอร์และให้การกะพริบที่คุณต้องการ สิ่งที่แนบมานั้นเป็นแผนผังของสิ่งที่ฉันหมายถึง (ค่าต่าง ๆ เป็นไปตามอำเภอใจคุณอาจจะต้องเปลี่ยนมันเป็นวงจรของคุณ)

แผนผังวงจรทรานซิสเตอร์

ไม่ว่าคุณจะทำอะไรมันจะค่อนข้างยากเมื่อพิจารณาว่าคุณไม่ได้ใช้อุปกรณ์อิเล็กทรอนิกส์มากนัก โชคดี!

*มันสาย; สิ่งนี้อาจผิดอย่างสมบูรณ์และไม่ทำงานเลย YMMV


1
โดยทั่วไปตกลง แต่คุณต้องมีตัวต้านทานอื่นเป็นอนุกรมพร้อม LED และทรานซิสเตอร์เพื่อตั้งค่าปัจจุบันสำหรับสถานะที่สว่างมิฉะนั้น LED ของคุณจะตาย
starblue

ใช่นี่เป็นเรื่องจริง ฉันคิดว่ามันส่อให้เห็น แต่ฉันควรจะพูดถึงมันต่อไป
เจเรมี

3

ฉันจะเปลี่ยนแปลงความคิดของเพ็ญจูน ฉันจะใช้สถานะเปิดและปิดเพื่อสร้างสองระดับ แทนที่จะพยายามติดตาม LED ในสถานะปิด (หรือสถานะต่ำ) ทำให้สถานะปิดสั้นและเพิ่งติดตามในสถานะเปิด

คุณไม่ได้พูดถึงจำนวนไฟ LED ที่คุณต้องติดตามและความเร็วในการเคลื่อนที่


1

ใช่ "สลัว" และ "สว่าง" สองสถานะเป็นเรื่องง่าย เมื่อใดก็ตามที่วงจรที่กระพริบ LED ยากและปิดด้วยทรานซิสเตอร์คุณจะต้องเพิ่มตัวต้านทานหนึ่งตัวในทรานซิสเตอร์นั้น จากนั้นเมื่อทรานซิสเตอร์ปิดตัวต้านทานจะทำให้แสงสลัว ฉันจะเริ่มต้นด้วยตัวต้านทานที่มีค่าเท่ากับตัวต้านทาน จำกัด ปัจจุบันที่เชื่อมต่อกับ LED แล้ว (LED ทุกตัวต้องมีตัวต้านทาน จำกัด กระแส)

สำหรับตัวบ่งชี้สองสามตัวแบตเตอรี่อิสระและตัวจับเวลา 555 ตัวในแต่ละอันจะเป็นฮาร์ดแวร์ตัวทำเครื่องหมายที่ง่ายที่สุด (รวมทั้งตัวต้านทานและตัวเก็บประจุ)

ระบบโดยรวมง่ายขึ้นถ้าคุณสามารถซิงโครไนซ์ไฟ LED: เปิดเครื่องหมายทั้งหมดในช่วงเริ่มต้นของรอบจากนั้นปิดหนึ่งเครื่องหมายในแต่ละครั้งจนกว่าพวกเขาจะปิดแล้วเปิดพวกเขาทั้งหมดและเริ่มรอบใหม่ ปริมาณพลังงานที่ต้องใช้เพื่อให้ไฟ LED หลาย ๆ ดวงกะพริบเป็นเวลาสองชั่วโมงโดยทั่วไปจะมีน้ำหนักน้อยกว่ามากในรูปแบบของแบตเตอรี่กลางหนึ่งหรือสองก้อนแทนที่จะเป็นหนึ่งแบตเตอรี่ต่อหนึ่ง LED (สิ่งนี้ต้องใช้ IC ตัวเปรียบเทียบในแต่ละ LED หรือรีจิสเตอร์การเปลี่ยนแปลงสองสามตัวหรือ Arduino จำลองเรจิสเตอร์การเปลี่ยนแปลงเหล่านั้นในบางตำแหน่งกลาง) (สิ่งนี้ต้องใช้สายไฟจำนวนมากที่ร้อยสายจากจุดหนึ่งไปยังอีกจุดหนึ่งหรือจากจุดแต่ละจุดไปยังจุดศูนย์กลาง - เพื่อไม่ให้แอปพลิเคชันของคุณทำ)

ทำให้ซอฟต์แวร์รู้จำวิสัยทัศน์ของคุณง่ายขึ้นหากพีซีสามารถควบคุมไฟ LED ได้โดยตรง จากนั้นเมื่อพีซีกำลังค้นหา LED_5 ก็สามารถปิดและเปิด LED_5 และมั่นใจได้ว่าไฟ LED หนึ่งดวงที่กะพริบต้องเป็น LED_5 บางทีการใช้ตัวแปลงพอร์ตขนานกับ USB เป็น 8 บิตซึ่ง (ที่มีตัวต้านทาน 8 ตัวหนึ่งตัวต่อ LED หนึ่งตัว) สามารถควบคุมไฟ LED 8 ดวงโดยตรงหรือ (พร้อมตัวต้านทาน 4 ตัวต่อหนึ่งตัวต่อคอลัมน์) เมทริกซ์ 4x4 ขนาด 16 LEDs (นี้ต้องยังไม่สายอีกสาย USB จากเครื่องคอมพิวเตอร์เพื่อแปลง แต่มันไม่จำเป็นต้องใด ๆแบตเตอรี่หรือทรานซิสเตอร์หรือชิปเพิ่มเติม - นี้อาจจะเป็นที่ง่ายที่สุดสำหรับโปรแกรมเมอร์ที่ไม่ใช่อิเล็กทรอนิกส์ผู้ชายที่จะได้รับการทำงาน)


1

ฉันคิดว่าคุณอาจมีปัญหาในด้านการมองเห็นหากอัตราเฟรมของกล้องไม่สูงพอเมื่อเทียบกับอัตราการเคลื่อนไหวของ LED

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

หากเครื่องหมายกำลังเคลื่อนที่ระยะทางมากกว่าที่อยู่ในลำดับเดียวกันกับระยะทางจากกันในเฟรมระบบการมองเห็นอาจสูญเสียความมั่นใจในการระบุอย่างถูกต้องว่าแฟลชใดเป็นของเครื่องหมายใด


0

แผนผัง

จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab

รูปที่ 1, 2 และ 3 ชุด LED

  • ไฟ LED คู่ให้การควบคุมที่ง่ายมาก R2 ตั้งค่าความสว่างของ LED ที่เปิดตลอดเวลา R1 ตั้งค่าความสว่างของ LED ชีพจร
  • ไฟ LED แบบเดี่ยวความสว่างสองเท่าเป็นอีกวิธีการง่ายๆ D3 จะส่องสว่างเสมอเมื่อกระแสผ่าน R4 เมื่อ BUF2 สวิตช์ต่ำมันเชื่อมต่อ R3 กับ GND และกระแสผ่าน D3 เพิ่มขึ้นทำให้ไฟ LED สว่างขึ้น
  • การควบคุมความสว่าง PWMนั้นง่ายที่สุดจากมุมมองของฮาร์ดแวร์ แต่ซอฟต์แวร์จำเป็นต้องควบคุมความสว่างของ LED

ป้อนคำอธิบายรูปภาพที่นี่

รูปที่ 2 การเข้ารหัส PWM

การใช้การปรับความกว้างพัลส์ (PWM) ทำให้คุณสามารถปรับความสว่างที่ปรากฏโดยเปลี่ยนแปลงอัตราส่วนการเปิด - ปิด รูปที่ 2 แสดงลำดับพลังงานสูงพลังงานต่ำพลังงานสูง

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

คุณอาจต้องระบุมุมลำแสงจากไฟ LED ดูเหมือนว่ากล้องของคุณจะไม่อยู่บนแกนตลอดเวลา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.