คอมพิวเตอร์ควบคุมอุปกรณ์ต่างๆ ควบคุมไฟฟ้าผ่าน USB

คะแนน 1 คะแนน 2 คะแนน 3 คะแนน 4 คะแนน 5

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

รูปที่ 1

ตัวต้านทาน R1 เชื่อมต่อระหว่างขั้วบวกของแหล่งจ่ายไฟและสาย USB D-bus สลับไปที่โหมด LS ความเร็วต่ำด้วยอัตราแลกเปลี่ยน 1.5 Mbit/s ซึ่งช่วยให้คุณถอดรหัสข้อความคอมพิวเตอร์ได้ โดยทางโปรแกรม- ตัวต้านทาน R4 และ R5 กำจัดภาวะชั่วครู่ที่เกิดขึ้นระหว่างการแลกเปลี่ยนข้อมูล ซึ่งจะเพิ่มเสถียรภาพในการทำงาน บล็อกตัวเก็บประจุ C1 เสียงแรงกระตุ้นในวงจรจ่ายไฟซึ่งช่วยเพิ่มเสถียรภาพของอุปกรณ์ด้วย ไดโอด VD1 และ VD2 ใช้เพื่อลดแรงดันไฟฟ้าของไมโครคอนโทรลเลอร์ลงเหลือประมาณ 3.6 V - ซึ่งจำเป็นเพื่อให้ตรงกับระดับกับบัส USB

สัญญาณควบคุมอุปกรณ์ถูกสร้างขึ้นที่เอาต์พุต PB0-PB5 และ PC0, PC1 ของไมโครคอนโทรลเลอร์ สูง ระดับตรรกะ- แรงดันไฟประมาณ 3.4 V. แรงดันไฟ ระดับต่ำใกล้ศูนย์แล้ว คุณสามารถเชื่อมต่ออุปกรณ์เข้ากับเอาต์พุตที่ใช้กระแสไฟฟ้าไม่เกิน 10 mA (จากแต่ละเอาต์พุต) หากต้องการค่ากระแสหรือแรงดันไฟฟ้าจำนวนมากควรใช้โหนดที่ตรงกัน

อุปกรณ์ประกอบอยู่ เขียงหั่นขนมรุ่นที่พิมพ์ยังไม่ได้รับการพัฒนา ใช้ตัวต้านทาน MLT ตัวเก็บประจุ C2 และ SZ เป็นตัวเก็บประจุเซรามิกความถี่สูง C1 คือ K50-35 หรือนำเข้าที่คล้ายกัน ไดโอดซิลิคอนที่มีแรงดันตกคร่อมทางแยกประมาณ 0.7 V

โปรแกรมสำหรับไมโครคอนโทรลเลอร์ได้รับการพัฒนาในสภาพแวดล้อม บาสคอม-AVRรุ่นต่างๆ 1.12.0.0. ไลบรารีใช้เพื่อทำงานกับบัส USB swusb.LBXซึ่งทำการถอดรหัสซอฟต์แวร์ของสัญญาณ USB แบบเรียลไทม์ ผลลัพธ์โค้ดโปรแกรมจากไฟล์ที่มี ส่วนขยาย HEXควรโหลดลงในหน่วยความจำ FLASH ของไมโครคอนโทรลเลอร์ สถานะของบิตการกำหนดค่าไมโครคอนโทรลเลอร์จะต้องสอดคล้องกับที่แสดงในรูปที่ 1 2.

รูปที่ 2

เมื่อคุณเชื่อมต่ออุปกรณ์เข้ากับคอมพิวเตอร์เป็นครั้งแรก ระบบปฏิบัติการจะตรวจพบอุปกรณ์ใหม่ ยูเอสบี ซ่อน อุปกรณ์ที่รองรับด้วยชื่อ” uniUSB" และติดตั้ง ไดรเวอร์ที่จำเป็น- หลังจากนั้นไม่กี่วินาที อุปกรณ์ก็ได้รับการกำหนดค่าและพร้อมใช้งาน เพื่อใช้งานโปรแกรม UniUSB จึงถูกสร้างขึ้น นำเสนอในสองเวอร์ชัน: สำหรับระบบปฏิบัติการ 32 บิต (x86) และ 64 บิต (x64) ครอบครัววินโดวส์- เวอร์ชัน 32 บิตได้รับการทดสอบในระบบปฏิบัติการแล้ว ระบบวินโดวส์ 98, Windows XP, Windows 7 และ 64 บิต - เฉพาะใน Windows XP x64

โปรแกรม ยูนิยูเอสบีเขียนด้วยภาษา เพียวเบสิก(เวอร์ชัน 4.31) โดยใช้ไลบรารี ฟังก์ชั่นที่กำหนดเอง HID_Lib,สนับสนุนการทำงานด้วย ยูเอสบี ซ่อนอุปกรณ์ รูปร่างหน้าต่างโปรแกรมจะแสดงดังรูป 3.

รูปที่ 3

ในโฟลเดอร์เดียวกันกับเธอ ไฟล์ปฏิบัติการน่าจะมีไฟล์ชื่อ UniUSB_KOfl.txt- ไฟล์นี้จัดเก็บสคริปต์สำหรับควบคุมอุปกรณ์ภายนอก เมื่อโปรแกรมเริ่มทำงาน ข้อมูลจากไฟล์จะถูกโหลดลงในตารางที่อยู่ในหน้าต่างหลัก และเมื่องานเสร็จสิ้นก็จะถูกบันทึกลงในไฟล์ การคลิกซ้ายบนเซลล์ตารางช่วยให้คุณสามารถเปลี่ยนสถานะได้: 1 - ระดับลอจิคัลสูง 0 หรือว่าง - ระดับลอจิคัลต่ำ

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

ชั้น = "eliadunit">

โปรดทราบว่าระบบปฏิบัติการ Windows ทำงานหลายอย่างพร้อมกัน! ซึ่งหมายความว่าเวลาประมวลผลจะถูกแบ่งตามกระบวนการต่างๆ ซึ่งบางครั้งซ่อนไม่ให้ผู้ใช้เห็น ซึ่งจะถูกดำเนินการตามลำดับ โดยคำนึงถึงลำดับความสำคัญที่ตั้งไว้ในระบบ ดังนั้นคุณไม่ควรคาดหวังความถูกต้องแม่นยำในการรักษาช่วงเวลาให้น้อยกว่า 100 มิลลิวินาที

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

ที่มา: วิทยุกระจายเสียง ฉบับที่ 2, 2554

ที่เก็บถาวรสำหรับบทความ "การควบคุมโหลดผ่าน อินเตอร์เฟซ USB"
คำอธิบาย: ข้อความต้นฉบับโปรแกรม, ไฟล์เฟิร์มแวร์ไมโครคอนโทรลเลอร์, โปรแกรม uniUSB
ขนาดไฟล์: 89.3 กิโลไบต์ จำนวนการดาวน์โหลด: 2 773

ความเร็วในการเปลี่ยน

การเลือกพอร์ต COM

ปุ่มเริ่มและหยุดชั่วคราว

(เปิดใช้งานพอร์ต)

ปุ่มหยุด

(ปิดการใช้งานพอร์ต)

ปุ่มตั้งค่าเอาท์พุต

ปุ่มแมนนวล

อินพุตควบคุม (1, 2, 3)

ปุ่มล้างตาราง

ปุ่มช่วยเหลือ

ปุ่มออก

ตัวชี้วัดที่จำลอง

การดำเนินการส่งออก

ตารางตารางที่มีค่า

(เซลล์ว่าง
เท่ากับศูนย์)

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

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

เพื่อเพิ่มกระแสสวิตชิ่งจะมีการติดตั้ง triac บนหม้อน้ำ โปรดทราบว่าในส่วนไฟฟ้าแรงสูงจะใช้ความต้านทานที่มีกำลัง 0.5 W

อย่าลืมเกี่ยวกับ ข้อควรระวังด้านความปลอดภัย - ในขณะที่สวิตช์กำลังทำงาน ห้ามสัมผัสชิ้นส่วนที่ถูกเปิดเผย และเมื่อทำการบัดกรีชิ้นส่วนและสายไฟ ให้ถอดสวิตช์ออกจากเครือข่าย

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

หากต้องการควบคุมเอาต์พุต (LED) อุปกรณ์เพียงแค่ต้องเชื่อมต่อกับพีซีด้วยสายไฟ 4 เส้น สายไฟถูกบัดกรีเข้ากับขั้วต่อมาตรฐานเข้ากับพอร์ต COM - ซ็อกเก็ต DB9

สัญญาณ +5V สำหรับสายร่วมของอินพุตดิจิตอลนั้นนำมาจากวงจรอุปกรณ์ ตัวต้านทานในสายอินพุตดิจิทัลสามารถบัดกรีเข้ากับตัวช่องเสียบ DB9 ได้

คุณสามารถเชื่อมต่อปุ่ม สวิตช์สลับ ไมโครสวิตช์ เข้ากับอินพุตดิจิทัลได้

ข้อมูลความเป็นมา

พื้นฐานของอุปกรณ์คือชิป 74hc595 ที่มีอยู่ซึ่งเป็นรีจิสเตอร์กะอนุกรมพร้อมการล็อคเอาต์พุต เพื่อควบคุมไมโครวงจรนี้เส้นสัญญาณสามเส้นก็เพียงพอแล้ว ในกรณีของเรา สัญญาณจะเริ่มในโปรแกรม การควบคุมยูนิคอมและออกผ่านทางอินเตอร์เฟส RS-232 (พอร์ต COM) เส้นของตัวเชื่อมต่อ 9 พินถูกใช้เป็นสายสัญญาณในอินเทอร์เฟซนี้: RTS - 7 พิน, DTR - 4 พินและ TxD - 3 พิน

หลักการทำงานของไมโครเซอร์กิต 74hc595 คือการบันทึกสัญญาณลอจิกระดับสูงและต่ำตามลำดับที่จ่ายให้กับอินพุต DS (14 พิน) การบันทึกจะดำเนินการโดยขอบที่ตกลงมา (การเปลี่ยนจากลอจิก 1 เป็นลอจิก 0) ที่อินพุต SH_CP (พิน 11) ผลลัพธ์ของข้อมูลที่บันทึกไว้ก็เกิดขึ้นพร้อมกับขอบที่ตกลงมา แต่ที่อินพุต ST_CP (ขาที่ 12) ดังนั้นระดับของสัญญาณที่บันทึกไว้แปดครั้งล่าสุดจะปรากฏบนพิน 1-7 และ 15

ระดับสัญญาณสูงที่เอาต์พุต (พิน 1-7 และ 15) สอดคล้องกับแรงดันไฟฟ้าของวงจรไมโคร - ในกรณีของเรา +5 โวลต์และระดับต่ำสอดคล้องกับ 0 โวลต์ สัญญาณเอาท์พุตเป็นแบบคงที่ เช่น ไม่เปลี่ยนแปลงจนกว่าพัลส์ถัดไปจะมาถึงอินพุต ST_CP (ขาที่ 12) ควรสังเกตว่าการลดแรงดันไฟฟ้าให้ต่ำกว่าระดับต่ำสุดจะนำไปสู่การรีเซ็ตสัญญาณเอาท์พุต ตามเอกสารประกอบของชิป แรงดันไฟฟ้าขั้นต่ำแหล่งจ่ายไฟคือ 2 โวลต์

อินเทอร์เฟซ RS-232 เชื่อมต่อกับวงจรไมโคร 74hc595 โดยใช้ซีเนอร์ไดโอด 5.1V ตามข้อกำหนด RS-232 ระดับสูงสัญญาณอยู่ในช่วงตั้งแต่ +3 ถึง +25V ซึ่งช่วยให้เราจัดระเบียบได้ ข้อเสนอแนะด้วยโปรแกรมควบคุม UniCOM

อุปกรณ์ควบคุมคอมพิวเตอร์
อุปกรณ์ต่าง ๆ ดังแสดงในรูป 1 มีลักษณะการทำงานคล้ายคลึงกัน
อธิบายไว้ในแต่เชื่อมต่อกับพอร์ต USB ของคอมพิวเตอร์ซึ่ง (ไม่เหมือน
จากพอร์ต COM) มีอยู่ในแต่ละอันในปัจจุบัน ชิปตัวเดียวของเครื่อง
- ไมโครคอนโทรลเลอร์ ATmega8 ทั่วไป เป็นสิ่งจำเป็นสำหรับองค์กร
การสื่อสารบัส USB แม้ว่าจะขาดฮาร์ดแวร์พิเศษก็ตาม
โมดูลฟังก์ชันนี้ดำเนินการในซอฟต์แวร์ ตัวต้านทาน R1 เชื่อมต่อระหว่าง
ขั้วบวกของแหล่งจ่ายไฟและสาย USB D-bus จะถ่ายโอนไปยังความเร็วต่ำ
โหมด LS ที่มีอัตราแลกเปลี่ยน 1.5 Mbit/s ซึ่งช่วยให้คุณสามารถถอดรหัสพัสดุได้
คอมพิวเตอร์โดยทางโปรแกรม ตัวต้านทาน R4 และ R5 กำจัดภาวะชั่วคราว
กระบวนการที่เกิดขึ้นระหว่างการแลกเปลี่ยนข้อมูลซึ่งเพิ่มความมั่นคงในการทำงาน
ตัวเก็บประจุ C1 ปิดกั้นสัญญาณรบกวนจากแรงกระตุ้นในวงจรไฟฟ้าซึ่งช่วยปรับปรุงเช่นกัน
ความเสถียรของอุปกรณ์ ไดโอด VD1 และ VD2 ใช้เพื่อลดแรงดันไฟฟ้า
จ่ายไมโครคอนโทรลเลอร์ให้ประมาณ 3.6 V - จำเป็นสำหรับ
ระดับที่ตรงกับบัส USB สัญญาณควบคุมอุปกรณ์ถูกสร้างขึ้นบน
เอาต์พุตРВ0-РВ5และ PC0, PC1 ของไมโครคอนโทรลเลอร์ ระดับตรรกะสูง -
แรงดันไฟฟ้าประมาณ 3.4 V แรงดันไฟฟ้าระดับต่ำใกล้กับศูนย์ ถึงทางออก
คุณสามารถเชื่อมต่ออุปกรณ์ที่ใช้กระแสไฟฟ้าไม่เกิน 10 mA (จากแต่ละเอาต์พุต)
หากต้องการค่ากระแสหรือแรงดันไฟฟ้าขนาดใหญ่ก็ควรใช้โหนด
ข้อตกลงที่แสดงในรูป 5 และ 6

อุปกรณ์ประกอบบนเขียงหั่นขนม
ไม่มีการพัฒนาฉบับพิมพ์ ใช้ตัวต้านทาน MLT ตัวเก็บประจุ C2 และ C3 -
เซรามิกความถี่สูง C1 - K50-35 หรือนำเข้าที่คล้ายกัน ไดโอด
ซิลิคอนที่มีแรงดันตกคร่อมทางแยกประมาณ 0.7 V. โปรแกรมสำหรับไมโครคอนโทรลเลอร์
พัฒนาในสภาพแวดล้อม Bascom-AVR เวอร์ชัน 1.12.0.0 สำหรับการทำงานของบัส USB
มีการใช้ไลบรารี swusb.LBX ซึ่งทำการถอดรหัสสัญญาณซอฟต์แวร์
ยูเอสบีแบบเรียลไทม์ รหัสโปรแกรมผลลัพธ์
จากไฟล์ที่มีนามสกุล HEX ควรโหลดลงในหน่วยความจำ FLASH ของไมโครคอนโทรลเลอร์
เพื่อจุดประสงค์นี้ โปรแกรมเมอร์จึงถูกนำมาใช้ร่วมกับ Bascom-AVR ในตัว
คุณประโยชน์. สถานะของบิตการกำหนดค่าไมโครคอนโทรลเลอร์จะต้องสอดคล้องกัน
แสดงในรูป 2. เมื่อเชื่อมต่ออุปกรณ์เข้ากับคอมพิวเตอร์เป็นครั้งแรกระบบปฏิบัติการ
ระบบจะตรวจจับอุปกรณ์ที่รองรับ USB HID ใหม่พร้อมชื่อ
“uniUSB” และติดตั้งไดรเวอร์ที่จำเป็น ในไม่กี่วินาที
อุปกรณ์ได้รับการกำหนดค่าและพร้อมใช้งาน

มีการสร้างโปรแกรมขึ้นมาเพื่อใช้งานกับมัน
ยูนิยูเอสบี นำเสนอในสองเวอร์ชัน: สำหรับ 32 บิต (x86) และ 64 บิต
(x64) ระบบปฏิบัติการของตระกูล Windows เวอร์ชัน 32 บิตได้รับการตรวจสอบแล้วว่าใช้งานได้
ในระบบปฏิบัติการ Windows 98, Windows XP, Windows 7 และ 64 บิต -
บน Windows XP x64 เท่านั้น โปรแกรม UniUSB เขียนด้วยภาษา PureBasic (เวอร์ชัน
4.31) การใช้ไลบรารี HID_lib ของฟังก์ชันที่ผู้ใช้กำหนด
รองรับการทำงานกับอุปกรณ์ USB HID หน้าตาของหน้าต่างโปรแกรม
แสดงในรูป 3. ต้องมีโฟลเดอร์เดียวกันกับไฟล์ปฏิบัติการ
ไฟล์ชื่อ UniUSB_Code.txt หรือ UniCOM_Code.txt ต้องใช้ตัวเลือกสุดท้าย
เพื่อความเข้ากันได้กับโปรแกรม UniCOM ที่เสนอในรูปแบบ . ในไฟล์นี้
สคริปต์สำหรับควบคุมอุปกรณ์ภายนอกจะถูกจัดเก็บไว้ เมื่อโปรแกรมเริ่มทำงานข้อมูล
จากไฟล์จะถูกโหลดลงในตารางที่อยู่ในหน้าต่างหลักและเมื่อเสร็จสิ้น
งานจะถูกบันทึกไว้ในไฟล์ การคลิกซ้ายบนเซลล์ตารางช่วยให้คุณทำได้
เปลี่ยนสถานะ: 1 - ระดับตรรกะสูง 0 หรือว่างเปล่า - ต่ำ
ระดับตรรกะ หากต้องการเพิ่มหรือลบคอลัมน์ในตาราง คุณต้องใช้คอลัมน์นั้น
คลิกขวาและเลือกการกระทำที่ต้องการจากเมนูที่ปรากฏขึ้น

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

โปรดทราบว่าระบบปฏิบัติการคือ Windows
- มัลติทาสกิ้ง! ซึ่งหมายความว่าเวลาของ CPU จะถูกแบ่งออกเป็นหลายๆ ส่วน
บางครั้งถูกซ่อนจากกระบวนการของผู้ใช้ที่ถูกดำเนินการตามลำดับ
โดยคำนึงถึงลำดับความสำคัญที่กำหนดไว้ในระบบ ดังนั้นอย่าคาดหวังอะไรมาก
ความแม่นยำในการรักษาช่วงเวลาน้อยกว่า 100 มิลลิวินาที สำหรับระยะสั้น
หากต้องการหยุดวนซ้ำคอลัมน์ ให้ใช้ปุ่ม คลิกที่นี่ อีกครั้ง
จะค้นหาต่อจากที่หยุด ปุ่มนี้จะหยุดการเรียงลำดับตามคอลัมน์โดยสมบูรณ์
ตาราง หากในระหว่างที่มีการแลกเปลี่ยนข้อมูลระหว่างคอมพิวเตอร์และอุปกรณ์
เกิดความล้มเหลวหรืออุปกรณ์ถูกตัดการเชื่อมต่อจากขั้วต่อ USB ของคอมพิวเตอร์
โปรแกรมจะรายงานข้อผิดพลาดโดยแสดงข้อผิดพลาดที่เกี่ยวข้อง
ข้อความ.

วรรณกรรม

1. Nosov T. การควบคุมอุปกรณ์
ผ่านทางพอร์ต COM ของคอมพิวเตอร์ - วิทยุ, 2550, หมายเลข 11,0.61,62.

2. Ryzhkov A. โปรแกรมเมอร์ชาวสหรัฐอเมริกา
ไมโครคอนโทรลเลอร์ AVR และ AT89S เข้ากันได้กับ AVR910 - วิทยุ, 2551, ฉบับที่ 7, น.
28, 29.

จากบรรณาธิการ- มีโปรแกรมสำหรับไมโครคอนโทรลเลอร์และคอมพิวเตอร์อยู่
บนเซิร์ฟเวอร์ FTP ของเราที่ ftp:// ftp.radio.ru/pub/2011/02/uniUSB.zip

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

แผนภาพอุปกรณ์

โครงการดั้งเดิมนำมาจากหนึ่งในโครงการที่พบในอินเทอร์เน็ตและมีลักษณะดังนี้:

แต่มีการเปลี่ยนแปลงเล็กน้อยเท่านั้น: มีการเพิ่มตัวต้านทาน 390 โอห์มระหว่างพินที่ 1 ของออปโตคัปเปลอร์ 4N25 และพิน LPT ที่ 2 และมีการเพิ่ม LED เพื่อระบุการเปิดเครื่องด้วย วงจรถูกประกอบในโหมดทดสอบเช่น เพียงต่อสายไฟตามต้องการและทดสอบแล้ว ในเวอร์ชันนี้ เธอเพียงแค่เปิดและปิดไฟฉายโซเวียตตัวเก่า
มีการตัดสินใจว่าหากเราต้องควบคุม ไม่ใช่สำหรับอุปกรณ์เครื่องเดียว แต่สำหรับอุปกรณ์อย่างน้อย 4 เครื่อง (ขึ้นอยู่กับ: โคมไฟหนึ่งดวงบนโต๊ะ, โคมไฟระย้าที่มีสวิตช์สองตัว, ปลั๊กไฟสำรอง) บน ในขั้นตอนนี้จำเป็นต้องสร้างแผนภาพวงจรที่สมบูรณ์ของอุปกรณ์และเริ่มการเลือกโปรแกรมต่างๆ
ติดตั้งแล้ว:

  1. คิแคด
  2. อีเกิล
หลังจากดูทั้งหมดแล้ว ฉันก็ตัดสินใจเลือก Eagle เนื่องจากมีส่วนที่ "คล้ายกัน" ในห้องสมุด นี่คือสิ่งที่เกิดขึ้นในนั้น:

แผนภาพใช้พอร์ต DB9 เช่น สามัญ พอร์ตคอมสิ่งนี้ทำเพื่อประหยัดทั้งพื้นที่บนบอร์ดและตัวเชื่อมต่อ (ฉันมี COM) และเนื่องจากเราจะใช้ตัวนำเพียง 5 ตัวจึงเพียงพอสำหรับเราด้วยระยะขอบ อะแดปเตอร์ที่มี DB25 ( LPT) บน DB9 (COM) ในกรณีของฉันจะทำดังนี้:
LPT 2-9 pin = COM 1-8 pin เป็นพินควบคุมข้อมูล
LPT 18-25 พิน (มักเชื่อมต่อกัน) = COM 9 พิน - นี่คือกราวด์ของเรา
ใช้ในโครงการด้วย อาหารเสริมที่ 12V เพื่อจ่ายไฟให้รีเลย์ ตามแผนจะเป็นที่ชาร์จจีนธรรมดาหรืออาจเป็น 9V Krona (รีเลย์ตัวหนึ่งทำงานได้ดีคุณต้องตรวจสอบ 4 ตัวในเวลาเดียวกัน) แหล่งจ่ายไฟแยกและการแยกกระแสไฟฟ้าโดยใช้ออปโตคัปเปลอร์ใช้เพื่อรักษาความปลอดภัยพอร์ตคอมพิวเตอร์ หากคุณต้องการคุณสามารถจ่ายไฟจากแหล่งจ่ายไฟคอมพิวเตอร์ 12V ได้ แต่ทุกคนทำสิ่งนี้ด้วยตนเองและด้วยความเสี่ยงและอันตรายของตัวเอง

ชิ้นส่วนที่จำเป็นในการสร้างอุปกรณ์
  1. พอร์ต COM - 1 ชิ้น
  2. ขั้วต่อสายไฟ - 1 ชิ้น
  3. LED สีเขียว - 4 ชิ้น
  4. ออปโตคัปเปลอร์ 4n25 - 4 ชิ้น
  5. ที่นั่งสำหรับออปโตคัปเปลอร์ (ฉันมีแค่ 8 ขา) - 4 ชิ้น
  6. ตัวต้านทาน 390 โอห์ม - 4 ชิ้น
  7. ตัวต้านทาน 4.7 kOhm - 4 ชิ้น
  8. ทรานซิสเตอร์ KT815G - 4 ชิ้น
  9. รีเลย์ HJR-3FF-S-Z - 4 ชิ้น
  10. ที่หนีบสำหรับ 3 หน้าสัมผัส - 4 ชิ้น
  11. PCB ฟอยล์

การเตรียมแผนผัง PCB

พยายามใช้อินทรีเตรียมตัว แผงวงจรพิมพ์ฉันรู้ว่ามันจะซับซ้อนเล็กน้อยจึงตัดสินใจหาตัวเลือกที่ง่ายกว่านี้ ตัวเลือกนี้เป็นโปรแกรม sprint รูปแบบ 5 แม้ว่าจะถูกสร้างขึ้นสำหรับ Windows แต่ก็ทำงานได้โดยไม่มีปัญหาในไวน์ภายใต้ Linux อินเทอร์เฟซของโปรแกรมใช้งานง่ายในภาษารัสเซียและโปรแกรมมีความช่วยเหลือ (help) ที่ชัดเจนพอสมควร ดังนั้นทุกอย่าง การดำเนินการเพิ่มเติมการพัฒนา PCB ดำเนินการในรูปแบบ Sprint 5 (ต่อไปนี้จะเรียกว่า SL5)
แม้ว่าหลายๆคนจะใช้ โปรแกรมนี้ในการพัฒนาบอร์ดสำหรับอุปกรณ์ของฉัน ไม่มีชิ้นส่วนที่ฉันต้องการ (แม้จะอยู่ในกองคอลเลกชันมาโครที่ดาวน์โหลดมาก็ตาม) ดังนั้นเราจึงต้องสร้างส่วนที่ขาดหายไปก่อน:
  1. พอร์ต COM (อันที่ไม่เหมือนกับของฉันตามรูยึด)
  2. ปลั๊กไฟ
  3. ที่หนีบสามขา
  4. รีเลย์ HJR-3FF-S-Z
ประเภทของชิ้นส่วนเหล่านี้:

หลังจากเพิ่มชิ้นส่วนที่จำเป็นแล้ว การออกแบบแผงวงจรพิมพ์จริงก็เริ่มขึ้น ต้องใช้ความพยายามหลายครั้ง มีประมาณห้าครั้ง บอร์ดแต่ละรุ่นพิมพ์บนกระดาษแข็ง เจาะรูและสอดชิ้นส่วนต่างๆ เข้าไป จริงๆ แล้วพบว่าพอร์ต COM ของฉันไม่ตรงกับพอร์ตที่อยู่ใน SL5 เกิดข้อผิดพลาดเล็กน้อยในวงจรรีเลย์ - อันที่จริงแล้วตัวรีเลย์ถูกเลื่อนไป 2-3 มม. แน่นอนว่าข้อผิดพลาดทั้งหมดได้รับการแก้ไขแล้ว
ฉบับพิมพ์ครั้งแรกปรากฏว่ายังไม่มี การเชื่อมต่อที่ถูกต้องทรานซิสเตอร์ มีหน้าสัมผัสสองตัวปะปนกัน
หลังจากแก้ไขและปรับแต่งทั้งหมดแล้ว บอร์ดผลลัพธ์จะมีลักษณะดังนี้:

SL5 มีฟีเจอร์ Photo View สำหรับการดูบอร์ด โดยมีหน้าตาดังนี้:

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

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

การเตรียม PCB

มีการตัดสินใจที่จะสร้างบอร์ดโดยใช้วิธี LUT (เทคโนโลยีเหล็กเลเซอร์) ต่อไปเป็นกระบวนการทั้งหมดอยู่ในรูปภาพ

ตัดชิ้นส่วน PCB ตามขนาดที่ต้องการ

เราใช้กระดาษทรายที่ดีที่สุดและทำความสะอาดพื้นผิวทองแดงอย่างระมัดระวัง

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

ตอนนี้คุณต้องถ่ายโอนภาพวาดจากกระดาษไปยัง textolite ในการทำเช่นนี้ เราตัดการออกแบบออกแล้วนำไปใช้กับ textolite พยายามจัดตำแหน่งตามต้องการ จากนั้นให้ความร้อนด้วยเตารีด จำเป็นต้องให้ความร้อนทั่วทั้งพื้นผิวอย่างทั่วถึงเพื่อให้ผงหมึกละลายและเกาะติดกับพื้นผิวทองแดง จากนั้นเราปล่อยให้กระดานเย็นลงเล็กน้อยแล้วนำไปทำให้เปียกใต้น้ำไหล เมื่อกระดาษเปียกเพียงพอ จะต้องแยกกระดาษออกจากกระดาน มีเพียงผงหมึกที่ติดอยู่เท่านั้นที่จะยังคงอยู่บนกระดาน ดูเหมือนว่านี้:

ถัดไปคุณต้องเตรียมสารละลายสำหรับการแกะสลัก ฉันใช้เฟอร์ริกคลอไรด์เพื่อสิ่งนี้ บนขวดเฟอร์ริกคลอไรด์เขียนว่าต้องทำสารละลาย 1 ถึง 3 ฉันเบี่ยงเบนไปจากนี้เล็กน้อยแล้วทำ 60 กรัม เฟอร์ริกคลอไรด์สำหรับน้ำ 240 กรัมเช่น ปรากฎว่าเป็น 1 ถึง 4 แม้ว่าจะเป็นเช่นนี้ การแกะสลักของกระดานก็เกิดขึ้นตามปกติ เพียงช้ากว่าเล็กน้อยเท่านั้น โปรดทราบว่ากระบวนการละลายเฟอร์ริกคลอไรด์แห้งในน้ำทำให้เกิดความร้อน ดังนั้นคุณจึงต้องเทลงในน้ำในส่วนเล็กๆ แล้วคนให้เข้ากัน โดยธรรมชาติแล้วสำหรับการแกะสลักจำเป็นต้องใช้ภาชนะที่ไม่ใช่โลหะ ในกรณีของฉันมันคือภาชนะพลาสติก (เช่นปลาเฮอริ่ง) ฉันได้รับวิธีแก้ปัญหานี้:

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

กระบวนการแกะสลักทั้งหมดใช้เวลา 45 นาที 40 นาทีก็เพียงพอแล้ว แต่ฉันแค่ยุ่งกับอีกสิ่งหนึ่ง
หลังจากการแกะสลักเราล้างกระดานด้วยสบู่ฉีกเทปด้วยสายเบ็ดแล้วรับ:

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

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

เครื่องแรกมาถึงแล้ว

ครั้งแรกที่ฉันใช้สว่านเพียงสองครั้ง และเมื่อใช้สว่านแบบนี้ กลับกลายเป็นว่ายังไม่เพียงพอ สว่านอันหนึ่งหักและอีกอันงอ ทั้งหมดที่ฉันสามารถเจาะได้ในวันแรก:

วันรุ่งขึ้นฉันซื้อสว่านห้าอัน และพวกเขาก็เพียงพอแล้วเพราะหากพวกมันไม่พัง (โดยวิธีการมีเพียงหนึ่งในห้าอันเท่านั้นที่พัง) พวกมันก็น่าเบื่อและเมื่อเจาะด้วยอันทื่อรางก็เสื่อมสภาพทองแดงก็เริ่มลอกออก หลังจากเจาะกระดานจนหมดเราจะได้:

หลังจากเจาะแล้วจำเป็นต้องทำการยึดบอร์ด สำหรับสิ่งนี้ฉันใช้ ทางเก่า- หัวแร้ง ฟลักซ์ TAGS และดีบุก ฉันอยากลองใช้โลหะผสมโรสแต่ไม่มีในเมืองของเรา

หลังจากทำการ Tinning เราจะได้ผลลัพธ์ดังนี้:

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

การติดตั้งชิ้นส่วน

เพื่อตรวจสอบความถูกต้องของบอร์ด ในตอนแรกฉันประกอบชิ้นส่วนเพียงบรรทัดเดียว (จากสี่) คุณไม่มีทางรู้ได้เลยว่าข้อผิดพลาดเกิดขึ้นที่ใด

หลังจากติดตั้งชิ้นส่วนแล้ว เราไปและเชื่อมต่ออุปกรณ์กับคอมพิวเตอร์ผ่าน LPT เพื่อจุดประสงค์นี้ อะแดปเตอร์จาก DB25(LPT) ถึง DB9(COM) จะถูกบัดกรีในรูปแบบต่อไปนี้:

  • DB25 2 ขา ถึง DB9 1 ขา
  • DB25 3 ขา ถึง DB9 2 ขา
  • DB25 4 พิน ถึง DB9 3 พิน
  • DB25 5 พิน ถึง DB9 4 พิน
  • DB25 6 พิน ถึง DB9 5 พิน
  • DB25 7 พิน ถึง 6 พิน DB9
  • 8 พิน DB25 ถึง 7 พิน DB9
  • 21 พิน DB25 (เป็นไปได้ตั้งแต่ 18 ถึง 25) ถึง 9 พิน DB9
เนื่องจากลวดที่ใช้เป็นแบบธรรมดา คู่บิดสายไฟขาดไปหนึ่งเส้น แต่สำหรับ ของอุปกรณ์นี้แค่ห้าสายก็เพียงพอแล้ว ตัวเลือกนี้พอดี โหลดสวิตช์ของเราคือไฟฉายโซเวียตธรรมดา เช่นเดียวกับแหล่งจ่ายไฟ - สากล บล็อกจีนแหล่งจ่ายไฟ (ขั้วต่อ 4 ตัวและแหล่งจ่ายไฟตั้งแต่ 3 ถึง 12 V) นี่คือทุกสิ่งที่ประกอบ:

แต่อุปกรณ์ใช้งานได้แล้ว:

จบลงในเย็นวันหนึ่งและเหลือการติดตั้งชิ้นส่วนที่เหลือในวันถัดไป

และนี่คืออุปกรณ์ที่ประกอบเสร็จแล้ว:

ดี วิดีโอสั้น ๆเกี่ยวกับวิธีการทำงาน (คุณภาพไม่ค่อยดี, ไม่มีอะไรต้องถอดอย่างถูกต้อง)

เพียงเท่านี้ก็เหลือเพียงการค้นหาเคสปกติสำหรับอุปกรณ์และนำไปใช้งาน

ส่วนซอฟต์แวร์

เป็นธรรมชาติสำหรับการจัดการ พอร์ตแอลพีทีฉันต้องการซอฟต์แวร์บางอย่าง แต่เนื่องจากฉันมี โฮมลินุกซ์จากนั้นจึงตัดสินใจเขียนโปรแกรมที่ง่ายที่สุดด้วยตัวเอง จากนั้นจึงทำให้เสร็จสิ้นและปรับเปลี่ยนตามความจำเป็น เธอมีลักษณะเช่นนี้:
#รวม
#รวม
#รวม
#รวม
#กำหนดฐาน 0x378
#กำหนดเวลา100000
int หลัก()
{
อินท์ x = 0x0F;
อินท์ y = 0x00;
ถ้า (ioperm(ฐาน, 1, 1))
{
perror("ioperm()");
ทางออก(77);
}
ออก(x,ฐาน);
กลับ 0;
}

โปรแกรมนี้ส่ง 0x0F = 00001111 ไปยังพอร์ต LPT เช่น จ่าย 1 ไปยังพิน 2-5 (Data0-Data3) และนี่คือแรงดันไฟฟ้าควบคุมของเราระหว่างพิน 2-5 และกราวด์ (พิน 18-25) ดังนั้นรีเลย์ทั้งสี่ตัวจะเปิดขึ้น โปรแกรมสำหรับส่ง 0x00 ไปยังพอร์ตเพื่อปิดระบบทำงานในลักษณะเดียวกันทุกประการ เพียงแค่ส่ง y แทน x - outb (y, BASE) คุณยังสามารถอ่านสถานะพอร์ตได้:
#define BASEPORT 0x378 /* lp1 */
...
printf("สถานะ: %d\n", inb(BASEPORT));
...

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

ต่อมาได้มีการแก้ไขโปรแกรมโดยผ่านพารามิเตอร์ต่างๆ บรรทัดคำสั่งสามารถระบุได้ว่าอุปกรณ์ใดและต้องทำอย่างไร
ผลลัพธ์ของ "sw --help":
โปรแกรมควบคุมรีเลย์ผ่านพอร์ต LPT
โปรแกรมสามารถมีพารามิเตอร์ได้หนึ่งหรือสองตัว
รูปแบบพารามิเตอร์: sw [หมายเลขอุปกรณ์] [การกระทำ]
หมายเลขอุปกรณ์ - ตั้งแต่ 1 ถึง 8
การกระทำ - "เปิด", "ปิด", "st" - เปิด, ปิด, สถานะ
ตัวอย่าง: "sw 2 on" เพื่อเปิดอุปกรณ์ตัวที่สองหรือ "sw --help" เพื่อแสดงความช่วยเหลือ

ป.ล. หากใครต้องการมัน ฉันสามารถโพสต์ไฟล์ของไดอะแกรมบอร์ดใน sl5 และซอร์สโค้ดของโปรแกรมควบคุมไว้ที่ใดที่หนึ่งได้