สร้างเซ็นเซอร์ความใกล้ชิด IR แบบ Attiny13 ที่ราคา $ 2.42: 7 ขั้นตอน (พร้อมรูปภาพ)

สร้างเซ็นเซอร์ความใกล้ชิด IR แบบ Attiny13 ที่ราคา $ 2.42: 7 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

Anonim

หมายเหตุ: แผนภาพผิด หมุดความรู้สึกไปที่ขา 6 (อีกหนึ่งทางซ้าย) ไม่ใช่ขา 5 ฉันจะอัปเดตไดอะแกรมในไม่ช้าขอบคุณ brmccollum สำหรับการแก้ไข (ไดอะแกรมได้รับการแก้ไขแล้ว)

นี่คือเซ็นเซอร์ความใกล้เคียง IR ราคาถูกมากที่คุณสามารถทำได้ด้วยชิ้นส่วนราคาถูกเพียงไม่กี่ตัวและโปรแกรมเมอร์ AVR ฉันใช้ Arduino เป็นโปรแกรมเมอร์ของฉันในคำสั่งนี้

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

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

การออกแบบนี้ย้ายการประมวลผลบางส่วนออกจากสมองของหุ่นยนต์หลักของคุณและเข้าสู่โหนดของตัวเอง คุณอาจต้องการ debounce สัญญาณ แต่คุณไม่จำเป็นต้องกะพริบไฟ led และทำการอ่าน คุณยังสามารถใช้พินดิจิตอลเพียงอันเดียวในการอ่าน ร่างเป็นประมาณ 700K จาก 1024 ใช้ได้

ทำไมฉันถึงสร้างสิ่งนี้

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

ติดตาม @ dustin1970

วัสดุ:

ขั้นตอนที่ 1: รวบรวมวัสดุ

อุปกรณ์อิเล็กทรอนิกส์ที่คุณต้องการมีดังนี้ ตัวเลขและส่วนหนึ่งของ Digikey เป็นข้อมูล ณ วันที่ 4/18/2012

ปริมาณ

หมายเลขชิ้นส่วน Digikey ลักษณะ ราคา
1 475-1439-ND475-1439-ND ช่างถ่ายภาพ NPN W / ตัวกรอง 5 มม $0.53
1 ATTINY13A-PU-ND IC MCU AVR 1K FLASH 20MHZ 8PDIP $0.95
3 CF14JT220RCT-ND RES 220 OHM 1 / 4W 5% ฟิล์มคาร์บอน $0.24
1 CF14JT1M00CT-ND RES 1M OHM 1 / 4W 5% ฟิล์มคาร์บอน $0.08
1 2N3904FS-ND IC TRANS NPN SS GP 200MA TO-92 $0.18
2 754-1241-ND EMITTER IR 3MM 940NM CLEAR WATER CLEAR $0.44
ทั้งหมด $2.42

คุณจะต้อง

  • เทปไฟฟ้า
  • หลอดพลาสติก
  • กรรไกร
  • ลวดสลิง
  • เขียงหั่นขนมและ / หรือหัวแร้ง
  • สายจัมเปอร์
  • โปรแกรมเมอร์ AVR (ใช้งานกับ Ardunio ได้)
  • ซอฟต์แวร์ Ardunio 1.0 พร้อมการแก้ไขโปรแกรมหลัก Attiny และ Atiny13

ขั้นตอนที่ 2: สร้าง Sensor Shroud

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

ตัดฟางประมาณ 1.5 "(4 ซม.) ห่อด้วยเทปไฟฟ้าตัดปลายและทำให้เรียบร้อย

ตัดเทป 1/2 นิ้ว (8 มม.) และม้วนขึ้นจากขอบสั้นพับครึ่งม้วนมันจะไม่อยู่ แต่ใส่รอยพับที่ดีมันจะเสียบด้านล่างของเซ็นเซอร์และเก็บ แสงเล็ดลอดออกมาทางนั้น

ขั้นตอนที่ 3: เตรียมเซ็นเซอร์

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

ค่อยๆกระดิกเซ็นเซอร์เข้าไปในหลอดจนกระทั่งฐานอยู่ที่ 1/4 "(5 มม.) เข้าหรือออกจากนั้นดันม้วนเทปที่พับด้านหลังไว้และปิดด้านหลังด้วยเทปสักเล็กน้อย

ขั้นตอนที่ 4: Wire It Up

คุณสามารถทำสิ่งนี้บนเขียงหั่นขนมหรือประสานมันเข้าด้วยกันสไตล์ "ตายผิด" ทำเขียงหั่นขนมก่อนเพื่อให้คุณสามารถตั้งโปรแกรม Attiny13 ได้อย่างง่ายดาย คุณสามารถประสานเข้าด้วยกันได้

ปฏิบัติตามแผนภาพการเดินสายและจดบันทึกบางอย่างไว้ในใจ

  • ชิปไฟ LED และทรานซิสเตอร์ทำงานได้เพียงทางเดียวเท่านั้น
  • ขาสั้นของ LEDS เชื่อมต่อกับตัวต้านทาน 220 โอห์ม
  • ยาว ขาของ phototransistor เชื่อมต่อกับตัวต้านทาน 1meg
  • คุณสามารถเพิ่มคู่อิมิตเตอร์ / ตัวต้านทาน IR เพิ่มเติมพร้อมกับคู่ที่มีอยู่ ให้วงจรพื้นฐานทำงานก่อน คุณสามารถใช้อีซีแอล IR เพียงตัวเดียว แต่ 2 ดูเหมือนจะทำให้การอ่านมีเสถียรภาพมากขึ้น
หมายเหตุ: หลังจากที่ฉันทำแผนภาพนี้ฉันค้นพบตัวเก็บประจุ 0.1 ยูเอฟในชิป Attiny จาก VCC ถึง GND ช่วยให้มีเสถียรภาพ ขอแนะนำให้ใส่หนึ่งในไมโครชิปทุกอันในการออกแบบ มันใช้งานได้อย่างสมเหตุสมผลในเขียงหั่นขนมที่ไม่มี แต่แผงวงจรก็ปรับปรุงขึ้นด้วยการเพิ่ม

ขั้นตอนที่ 5: วางสาย AVR (Arduino) และตั้งโปรแกรมชิป

หากคุณเบิร์นร่าง ArduinoISP ไปยัง Ardunio ที่ใช้ AtmegaX28 ใด ๆ ก็สามารถเขียนโปรแกรม Attiny Chips ได้ แผนภาพแสดง pro-mini เพื่อประหยัดพื้นที่ เพียงใช้หมายเลขพินเดียวกันกับทุกบอร์ดที่คุณใช้ หากคุณมีโปรแกรมเมอร์ AVR ตัวอื่นฉันคิดว่าคุณรู้วิธีใช้งาน

ติดตั้ง Attiny13 Core13 จาก sourceforge นี่คือคำแนะนำโดย diy_bloke พร้อมคำแนะนำและแม้แต่ไฟล์ zip ที่จะดาวน์โหลด

นี่คือคำแนะนำของ MIT ในการแก้ไขสภาพแวดล้อมของคุณเพื่อเบิร์น Attiny

หน้านี้อาจช่วยได้หากคุณมีปัญหา ตรวจสอบความคิดเห็น

สายไฟใน Arduino คุณสามารถคลายมันได้เมื่อการเขียนโปรแกรมเสร็จสิ้น

โหลดไฟล์ INO และเบิร์นไปที่ชิป Attiny13

หรือเพียงแค่ใช้โปรแกรมเมอร์ AVR เพื่อเบิร์นไฟล์ฐานสิบหกหรือผู้เขียนที่สอนได้ nikkipugh มีการออกแบบแผงแถบป้องกันแบบซุปเปอร์สำหรับการเขียนโปรแกรมชิป attiny13

คุณอาจต้องการตัวเก็บประจุ 10 ยูเอฟหรือตัวต้านทาน 120 โอห์มจากการรีเซ็ตของ Arduino ไปที่กราวด์

รหัส:

/ * เซ็นเซอร์ความใกล้ชิด Attiny13 โดย Dustin Andrews 2012 ใบอนุญาต: ครีเอทีฟคอมมอนส์ Unported http://creativecommons.org/licenses/by/3.0/ * / // ทำการเขียน AVR pin ระดับต่ำเพื่อบันทึกคำแนะนำ 1,010 จาก 1024 ปิด! #define SetPin (บิต) PORTB | = (1 << บิต) #define ClearPin (บิต) PORTB & = ~ (1 << บิต) // เชื่อมโยง IR ของคุณไปยังขานี้ (พินชิป 5?); #define irOutPin 3 // พินนี้สูงขึ้นเมื่อเซ็นเซอร์ตรวจจับและกีดขวาง (chip pin 6) #define outPin 1 // ต่อ pin นี้ไปยัง phototranscc ของคุณ -> phototrans -> pin4 -> res 1M -> gnd (chip pin3) #define sensorInPin 2 เป็นโมฆะการตั้งค่า () {pinMode (irOutPin, OUTPUT); pinMode (outPin, OUTPUT); // pinMode (2, OUTPUT); analogReference (0); // analogread จะไม่ทำงานบน Atiny13 ที่ไม่มีบรรทัดนี้ จะไม่ทำงานกับคนอื่นด้วยมันอาจเป็นไปได้ } void loop () {static long difference = 0; lastTime ที่ไม่ได้ลงชื่อแบบสแตติกนาน = 0 SetPin (irOutPin); delay1 (); int r1 = analogRead ที่ไม่ได้รับการลงนาม (sensorInPin); ClearPin (irOutPin); delay1 (); int r2 = analogRead ที่ไม่ได้รับการลงนาม (sensorInPin); ความแตกต่าง + = r1 - r2; if (millis () - lastTime> 5) // อาจได้รับการตอบสนองที่ราบรื่นยิ่งขึ้นด้วยความล่าช้าที่ใหญ่กว่า {if (different> 0) {SetPin (outPin); } else {ClearPin (outPin); } different = 0; lastTime = millis (); }} void delay1 () {// ล่าช้า (1) มีราคาแพงเกินไปในหน่วยความจำ ทำไมราคาถูกกว่านี้มาก?: D long start = millis (); ในขณะที่ (จริง) {ถ้า (millis () - เริ่ม> 1) {break;}}}

ขั้นตอนที่ 6: สร้างหุ่นยนต์ที่ยอดเยี่ยมด้วยเซ็นเซอร์

ณ จุดนี้คุณควรมีเซ็นเซอร์ที่ใช้งานได้บนเขียงหั่นขนม ประสานเข้าด้วยกันเพื่อรับเซ็นเซอร์ราคาถูกที่คุณสามารถเพิ่มไปยังหุ่นยนต์ เซ็นเซอร์จะมีสายภายนอก 3 เส้น VCC (5v), GND และ Sense ดูแผนภาพวงจรสำหรับตำแหน่งที่จะเชื่อมต่อกับ "ความรู้สึก" มันเป็นสายเดียวกับขายาวของ LED แสดงสถานะ

การแก้ไขปัญหา:

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

ขั้นตอนที่ 7: ตัวเลือก - แผงวงจร

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

พิมพ์ลวดลายบนสิ่งที่จะอยู่ด้านล่างของบอร์ด ใส่ส่วนประกอบจากด้านที่ว่างของบอร์ดตามแผนภาพและบัดกรี ฉันงอ LED และเซ็นเซอร์นำไปสู่ ​​90 องศาดังนั้นเซ็นเซอร์จะมอง "ข้างหน้า"

PDF และเลย์เอาต์นั้นแตกต่างจากรูปภาพเล็กน้อย ฉันเพิ่ม 0.1 ยูเอฟแคปอย่างชัดเจนและทำให้ขาฐานของทรานซิสเตอร์วิ่งให้ห่างจากสายเซ็นเซอร์