สารบัญ:
- ขั้นตอนที่ 1: วัสดุที่จำเป็น
- ขั้นตอนที่ 2: การตั้งค่าสภาพแวดล้อม
- ขั้นตอนที่ 3: ภาพรวมการออกแบบ
- ขั้นตอนที่ 4: การสร้างแพตช์แบบกำหนดเองจาก XOD Core Library
- ขั้นตอนที่ 5: การสร้างแพตช์แบบกำหนดเองโดยใช้ C++
- ขั้นตอนที่ 6: การก่อสร้าง
- ขั้นตอนที่ 7: การทดสอบ ตอนที่ 1
- ขั้นตอนที่ 8: การทดสอบ ตอนที่ 2
- ขั้นตอนที่ 9: ภาคผนวกของ Fuzzy Logic
วีดีโอ: โคมไฟพลังงานแสงอาทิตย์แบบชาร์จไฟได้ XOD: 9 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
มีโคมไฟสวนพลังงานแสงอาทิตย์/โคมไฟทางเดินราคาไม่แพงที่ร้านขายเครื่องใช้ในบ้านและร้านฮาร์ดแวร์ส่วนใหญ่ แต่อย่างที่คนโบราณว่าไว้ คุณมักจะได้สิ่งที่คุณจ่ายไป วงจรการชาร์จและไฟส่องสว่างปกติที่ใช้นั้นเรียบง่ายและราคาถูก แต่แสงสว่างที่คุณได้รับนั้นน่าประทับใจ (และแทบจะไม่เพียงพอสำหรับทุกคนที่ใช้ทางเดินของคุณเพื่อดูว่าพวกเขากำลังจะไปที่ไหน!)
นี่คือความพยายามของฉันในการออกแบบโมดูลไฟส่องสว่างแบบนอกกริดซึ่งเป็นการปรับปรุงที่สำคัญ ในขณะที่ยังคงมีราคาไม่แพงนัก โดยให้ "สมอง" บ้าง XOD.io เป็น IDE ใหม่ที่เข้ากันได้กับแพลตฟอร์มการพัฒนาแบบฝังตัวของ Arduino ซึ่งคุณสามารถ "เขียน" โค้ดแบบกราฟิกได้ สภาพแวดล้อมเปลี่ยนภาพสเก็ตช์กราฟิกของคุณเป็น C++ ที่ทันสมัย ซึ่งมีประสิทธิภาพอย่างน่าทึ่งในการสร้างโค้ดขนาดกะทัดรัด และสร้างซอร์สที่เข้ากันได้อย่างสมบูรณ์กับ Arduino IDE ในสต็อกโดยไม่ต้องพึ่งพาภายนอกเพิ่มเติม ด้วยวิธีนี้ แม้แต่ไมโครคอนโทรลเลอร์ขนาดเล็กราคาไม่แพงที่มีโปรแกรมและทรัพยากรการจัดเก็บข้อมูลที่จำกัดก็สามารถนำมาใช้เพื่อทำงานที่ซับซ้อนได้
โครงงานนี้แสดงให้เห็นว่าไมโครคอนโทรลเลอร์ ATTiny85 ที่เข้ากันได้กับ Arduino สองตัวทำงานร่วมกันเพื่อจัดการความต้องการพลังงานของหลอดไฟได้อย่างไร โปรเซสเซอร์ตัวแรกจัดการข้อมูลสภาพแวดล้อมการตรวจจับจากฮาร์ดแวร์ภายนอก และตัวที่สองพยายามเก็บเกี่ยวพลังงานให้ได้มากที่สุดจากดวงอาทิตย์ที่สามารถทำได้ในระหว่างวัน จากนั้นจึงควบคุมการส่องสว่างของ LED กำลังสูงเมื่อแบตเตอรี่สำหรับจัดเก็บจะคายประจุในตอนกลางคืน โปรเซสเซอร์ตัวที่สองทำงานสำเร็จด้วยการใช้การควบคุม "fuzzy logic" อย่างกะทัดรัด ซอฟต์แวร์สำหรับชิปทั้งสองได้รับการพัฒนาเฉพาะในสภาพแวดล้อม XOD
ขั้นตอนที่ 1: วัสดุที่จำเป็น
Arduino IDE เวอร์ชันล่าสุดพร้อมส่วนขยาย ATTinyCore ที่ติดตั้งจากตัวจัดการ "บอร์ด"
Sparkfun USBTinyISP ATTiny โปรแกรมเมอร์ 11801 หรือเทียบเท่า หน้าผลิตภัณฑ์ Sparkfun
ตัวแปลงเพิ่มแรงดันต่ำ Pololu ที่ปรับได้พร้อมอินพุตปิด, U1V11A หรือหน้าผลิตภัณฑ์ Pololu เทียบเท่า
ไฟ LED สีขาวหรือ RGB กำลังไฟสูงพร้อมฮีทซิงค์, ขั้วบวกทั่วไป, Adafruit 2524 หรือหน้าผลิตภัณฑ์ Adafruit ที่เทียบเท่า
Microchip ATTiny85 ในแพ็คเกจ DIP 8 พิน, 2 หน้าผลิตภัณฑ์ Mouser
ซ็อกเก็ต DIP IC 8 พิน, 2
ตัวเก็บประจุขนาดใหญ่ 16 v 220 uF
ตัวเก็บประจุเอาต์พุต 6.3v 47uF
ตัวต้านทานจำกัดกระแส 50 โอห์ม 1/4 วัตต์
ตัวต้านทานแบบดึงขึ้น i2c, 4.7k, 2
ตัวต้านทานตัวแบ่งความรู้สึกแรงดันแผง, 1/4 วัตต์, 100k, 470k
ตัวต้านทานความรู้สึกปัจจุบัน 10 โอห์ม 1⁄2 วัตต์ 1% ความอดทน
ตัวเก็บประจุบายพาส, เซรามิก 0.1uF, 2
แบตเตอรี่ลิเธียมไอออนแบบรีชาร์จได้ 2 3.7 v 100mAh, PKCELL LP401 หรือเทียบเท่า
ช่องเสียบปลั๊ก Barrel สำหรับแผง 1
แผงขั้วต่อขนาดเล็ก 3”x3” แผ่นบัดกรีและลวดแกนแข็งบางสำหรับทำการเชื่อมต่อ
การทดสอบออสซิลโลสโคป มัลติมิเตอร์ และแหล่งจ่ายไฟแบบตั้งโต๊ะแทบจะเป็นสิ่งที่จำเป็นสำหรับการทดสอบ
ขั้นตอนที่ 2: การตั้งค่าสภาพแวดล้อม
สภาพแวดล้อม XOD ไม่สนับสนุนชุดโปรเซสเซอร์ ATTiny แบบสำเร็จรูป แต่การใช้ไลบรารีของบุคคลที่สามสองสามแห่งจากจักรวาล Arduino การเพิ่มการรองรับสำหรับ AVR ชุดนี้ทำได้ง่าย ขั้นตอนแรกคือการติดตั้งไลบรารี "ATTinyCore" จากเมนูดร็อปดาวน์ "Tools → Board → Board Manager" ของ Arduino IDE ตรวจสอบให้แน่ใจว่าการตั้งค่าตามที่แสดงในภาพที่รวมไว้นั้นถูกต้อง - จำไว้ว่าคุณต้องกด "เบิร์น bootloader" เพื่อเปลี่ยนฟิวส์การตั้งค่าแรงดันไฟฟ้าและความเร็วสัญญาณนาฬิกาก่อนที่จะอัปโหลดรหัสใด ๆ !
ซอร์สโค้ดสำหรับไลบรารีนี้มีอยู่ที่:
ไลบรารี่ที่มีประโยชน์อีกอย่างหนึ่งที่ควรมีจากพื้นที่เก็บข้อมูลคือ "FixedPoints" ซึ่งเป็นการนำคณิตศาสตร์จุดคงที่มาใช้ในการคอมไพล์เวลาสำหรับโปรเซสเซอร์ที่รองรับ Arduino ATTiny มี SRAM และหน่วยความจำโปรแกรมที่จำกัด และช่วยลดขนาดร่างสุดท้ายลงเพื่อใช้จำนวนเต็ม 2 ไบต์สำหรับการจัดเก็บข้อมูลทั่วไป แทนที่จะเป็นประเภทจุดลอยตัว ซึ่งต้องใช้ 4 ไบต์บน AVR ควรปรับปรุงความเร็วในการดำเนินการเนื่องจาก ATTiny ไม่มีหน่วยการคูณฮาร์ดแวร์ น้อยกว่าจุดลอยตัวของฮาร์ดแวร์มาก!
ซอร์สโค้ดมีอยู่ที่:
บทช่วยสอนเกี่ยวกับวิธีการสร้าง transpile และปรับใช้ภาพร่างกราฟิก XOD ที่: https://github.com/Pharap/FixedPointsArduino จะช่วยได้มากในการทำความเข้าใจว่าไฟล์ต้นฉบับที่รวมอยู่นั้นถูกสร้างขึ้นอย่างไร
ขั้นตอนที่ 3: ภาพรวมการออกแบบ
บนบอร์ด โปรเซสเซอร์ ATTiny85 สองตัวเชื่อมต่อกันผ่านอินเทอร์เฟซ i2c และใช้งานร่วมกันเพื่อจัดการการตรวจจับแรงดันไฟฟ้าของแผงโซลาร์เซลล์ กระแสไฟที่ไหลเข้าสู่แบตเตอรี่จากบูสต์คอนเวอร์เตอร์ในขณะที่แผงติดสว่าง แรงดันแบตเตอรี่ และแบตเตอรี่ อุณหภูมิ.
ตัวแปลงบูสต์เป็นโมดูลนอกชั้นวางที่ใช้ Texas Instruments TPS6120 IC ซึ่งสามารถรับแรงดันไฟฟ้าอินพุตได้ต่ำถึง 0.5 โวลต์และเพิ่มไปที่ใดก็ได้ตั้งแต่ 2 โวลต์ถึง 5 โวลต์ แกนเซ็นเซอร์ประกอบด้วยบล็อกการทำงานหลายส่วน นาฬิกาหลักเริ่มทำงานทันทีที่จ่ายไฟให้กับตัวแปลงเพิ่มจากอินพุตแผงโซลาร์เซลล์ การดำเนินการนี้จะเริ่มต้นการร่างภาพ และสิ่งแรกคือการพิจารณาว่าแผงมีแสงสว่างเพียงพอที่จะจ่ายกระแสไฟให้กับแบตเตอรี่หรือไม่
แรงดันไฟฟ้าของแผงโซลาร์เซลล์จะถูกส่งผ่านผ่านตัวกรองดิจิทัลสองตัว และหากอยู่เหนือเกณฑ์ที่กำหนด ระบบจะกำหนดว่าแผงรับแสงและควบคุมนาฬิกาหลักเข้าสู่จอภาพที่รับรู้กระแส นี่คือช่องสัญญาณตัวแปลงอนาล็อกเป็นดิจิทัลของชิป ซึ่งกำหนดค่าต่างกัน ซึ่งจะตรวจจับแรงดันไฟฟ้าข้ามตัวต้านทานความทนทาน 10 โอห์ม 1% ที่เชื่อมต่อแบบอนุกรมระหว่างเอาต์พุตของตัวแปลงบูสต์และอินพุตแบตเตอรี่ เมื่อแผงไม่สว่าง ATTiny จะส่งสัญญาณไปยัง ATTiny ตัวที่สองเพื่อบอกให้ตรวจสอบพลังงาน LED แทนการชาร์จพลังงาน และปิดตัวแปลงบูสต์และแยกอินพุตออกเพื่อไม่ให้แบตเตอรี่ส่งกระแสไฟกลับออกทางแผง.
แกน ATTiny ตัวที่สองเป็นที่ที่ตัวควบคุม LED และระบบตรวจสอบการชาร์จแบตเตอรี่ทำงาน ข้อมูลแรงดันไฟฟ้าของแผง แรงดันแบตเตอรี่ และข้อมูลกระแสการชาร์จแบตเตอรี่จะถูกส่งไปยังแกนหลักนี้เพื่อประมวลผลผ่านเครือข่ายฟัซซี่ลอจิก ซึ่งพยายามสร้างสัญญาณ PWM ที่เหมาะสมเพื่อใช้กับพิน SHTDN ซึ่งจะเป็นการควบคุมปริมาณกระแสไฟที่ส่งไปยังแบตเตอรี่ เพื่อชาร์จเมื่อสว่าง – รูปแบบพื้นฐานของการติดตามจุดกำลังสูงสุด (MPPT.) นอกจากนี้ยังได้รับสัญญาณจากแกนเซ็นเซอร์เพื่อแจ้งว่าควรเปิดหรือปิด LED หรือไม่ ทั้งนี้ขึ้นอยู่กับเอาต์พุตของวันของแกนเซ็นเซอร์/ ปัดพลิกกลางคืน
เมื่อไฟ LED ทำงานในเวลากลางคืน ATTiny จะตรวจสอบข้อมูลแรงดันแบตเตอรี่ที่ส่งจากบัดดี้ของมัน และเซ็นเซอร์อุณหภูมิบนชิปของมันเอง เพื่อประเมินคร่าวๆ ว่ากำลังถูกผลักเข้าไปใน LED มากแค่ไหน (แรงดันแบตเตอรี่ลดลง และอุณหภูมิของชิปจะเพิ่มขึ้นตามกระแสที่ดึงออกมาจากหมุด) เครือข่ายฟัซซี่ลอจิกที่เกี่ยวข้องกับแพทช์ LED PWM พยายามตัดสินว่ายังมีพลังงานแบตเตอรี่เหลืออยู่เท่าใด และลดความเข้มของ LED เมื่อแบตเตอรี่หมด
ขั้นตอนที่ 4: การสร้างแพตช์แบบกำหนดเองจาก XOD Core Library
การออกแบบนี้ใช้โหนดแพตช์แบบกำหนดเองหลายโหนด ซึ่งบางโหนดสามารถสร้างได้อย่างง่ายดายจากโหนด XOD ที่รวมอยู่ทั้งหมด และบางโหนดถูกนำไปใช้ใน C++
โหนดแพตช์ที่กำหนดเองตัวแรกจากสองรายการในรูปภาพ เป็นการนำตัวกรองค่าเฉลี่ยเคลื่อนที่แบบเอ็กซ์โปเนนเชียลมาใช้ นี่คือฟิลเตอร์ดิจิตอลความถี่ต่ำความถี่ต่ำโอเวอร์เฮดที่ใช้ในซีรีย์ในภาพร่าง ครั้งหนึ่งเพื่อกรองแรงดันไฟแผงโซลาร์ที่เข้ามาสำหรับแกนลอจิก และอีกครั้งเพื่อป้อนทริกเกอร์ซึ่งจะกำหนดแสงโดยรอบในระยะยาว ดูรายการ Wikipedia เกี่ยวกับการปรับให้เรียบแบบเอ็กซ์โปเนนเชียล
โครงสร้างโหนดในภาพเป็นเพียงการแสดงกราฟิกโดยตรงของฟังก์ชันการถ่ายโอนในบทความ โดยเชื่อมต่อเข้าด้วยกันโดยใช้ลิงก์จากอินพุตที่เหมาะสมไปยังเอาต์พุต มีโหนดเลื่อนจากไลบรารีที่อนุญาตให้สร้างลูปป้อนกลับ (XOD จะเตือนคุณหากคุณสร้างลูปป้อนกลับโดยไม่ใส่การหน่วงเวลาในลูป ดังที่อธิบายไว้ในโมเดลการดำเนินการ XOD) โดยที่รายละเอียดนั้นได้รับการดูแล แพตช์ทำงานได้ดี มันง่ายมาก
โหนดแพตช์แบบกำหนดเองที่สองเป็นรูปแบบหนึ่งของฟลิปฟล็อปสต็อกที่มาพร้อมกับ XOD ซึ่งป้อนด้วยแรงดันไฟแผงที่กรอง มันสลักสูงหรือต่ำขึ้นอยู่กับว่าสัญญาณอินพุตอยู่สูงหรือต่ำกว่าเกณฑ์ที่กำหนด Cast nodes ใช้เพื่อแปลงค่าเอาต์พุตบูลีนเป็นประเภทข้อมูลพัลส์เพื่อทริกเกอร์ฟลิปฟล็อป เนื่องจากสถานะเปลี่ยนจากต่ำไปสูง การออกแบบโหนดแพตช์นี้น่าจะอธิบายได้ด้วยตนเองจากภาพหน้าจอ
ขั้นตอนที่ 5: การสร้างแพตช์แบบกำหนดเองโดยใช้ C++
สำหรับข้อกำหนดพิเศษที่ฟังก์ชันการทำงานของโหนดจำเป็นจะซับซ้อนเกินกว่าจะแสดงภาพกราฟิกได้ง่าย หรือต้องอาศัยไลบรารี Arduino ที่ไม่ได้อยู่ในสภาพแวดล้อม Arduino แบบสต็อก XOD ทำให้ง่ายสำหรับผู้ที่มีความรู้ C/C++ ในการเขียนชิ้นขนาดพอดีคำ โค้ดที่สามารถรวมเข้ากับแพตช์ได้เหมือนกับโหนดอื่น ๆ ที่ผู้ใช้สร้างขึ้นหรือสต็อก การเลือก "สร้างแพตช์ใหม่" จากเมนูไฟล์จะสร้างแผ่นงานเปล่าเพื่อใช้งาน และสามารถลากโหนดอินพุตและเอาต์พุตจากส่วน "โหนด" ของไลบรารีหลักได้ จากนั้นสามารถลากโหนด "not-implemented-in-xod" เข้าไปได้ และเมื่อคลิกแล้ว จะแสดงโปรแกรมแก้ไขข้อความที่สามารถใช้งานฟังก์ชันที่ต้องการได้ใน C++ วิธีจัดการสถานะภายในและการเข้าถึงพอร์ตอินพุตและเอาต์พุตจากโค้ด C++ ครอบคลุมอยู่ที่นี่
ตัวอย่างของการนำแพตช์แบบกำหนดเองไปใช้ใน C++ แพตช์แบบกำหนดเองเพิ่มเติมอีกสองรายการสำหรับคอร์ของไดรเวอร์จะใช้สำหรับการประมาณค่าแรงดันจ่ายและอุณหภูมิคอร์ของแกนไดรเวอร์ นอกจากเครือข่ายที่คลุมเครือแล้ว ยังช่วยให้สามารถประมาณพลังงานแบตเตอรี่ที่เหลืออยู่ได้อย่างคร่าวๆ เพื่อจ่ายไฟให้ LED เมื่ออยู่ในที่มืด
แพทช์เซ็นเซอร์อุณหภูมิยังถูกป้อนด้วยเอาต์พุตของเซ็นเซอร์แรงดันไฟจ่ายเพื่อให้ได้ค่าประมาณที่ดีขึ้น - อุณหภูมิแกนที่ตรวจจับได้ช่วยให้เราประเมินคร่าวๆ ว่าไฟ LED ถูกเผาไปเท่าใด และเมื่อรวมกับค่าแรงดันที่อ่านได้เมื่อ การใช้แบตเตอรี่จนหมดเป็นการประมาณคร่าวๆ เพิ่มเติมเกี่ยวกับพลังงานแบตเตอรี่ที่เหลืออยู่ ไม่จำเป็นต้องแม่นยำมาก ถ้าแกนกลาง "รู้" ว่าไฟ LED กำลังดึงกระแสไฟออกมามาก แต่แรงดันไฟของแบตเตอรี่ลดลงอย่างรวดเร็ว ก็น่าจะปลอดภัยที่จะบอกว่าพลังงานแบตเตอรี่จะอยู่ได้ไม่นานนัก และถึงเวลาปิดหลอดไฟแล้ว
ขั้นตอนที่ 6: การก่อสร้าง
ฉันสร้างโปรเจ็กต์บนกระดานสร้างต้นแบบชิ้นเล็กๆ ที่มีแผ่นทองแดงสำหรับชิ้นส่วนที่เจาะทะลุ การใช้ซ็อกเก็ตสำหรับไอซีช่วยได้มากสำหรับการเขียนโปรแกรม/การปรับเปลี่ยน/การทดสอบ USBTiny ISP จาก Sparkfun มีซ็อกเก็ตที่คล้ายกันบนบอร์ด ดังนั้นการเขียนโปรแกรมชิปทั้งสองจึงประกอบด้วยการเสียบโปรแกรมเมอร์เข้ากับพอร์ต USB ของ PC อัปโหลดโค้ด XOD ที่ transpiled จากไฟล์ Arduino.ino ที่รวมไว้ด้วยการตั้งค่าบอร์ดและโปรแกรมเมอร์ที่เหมาะสม และ จากนั้นค่อย ๆ ถอดชิปออกจากซ็อกเก็ตโปรแกรมเมอร์แล้วใส่ลงในซ็อกเก็ตโปรโตบอร์ด
โมดูลตัวแปลงบูสต์ที่ใช้ Pololu TPS6120 มาบนบอร์ดไรเซอร์ที่บัดกรีเข้ากับโปรโตบอร์ดบนส่วนหัวของพิน ดังนั้นจึงสามารถประหยัดพื้นที่โดยการติดตั้งส่วนประกอบบางอย่างไว้ด้านล่าง บนต้นแบบของฉัน ฉันใส่ตัวต้านทานแบบดึงขึ้น 4.7k สองตัวไว้ข้างใต้ สิ่งเหล่านี้จำเป็นสำหรับบัส i2c ระหว่างชิปเพื่อให้ทำงานได้อย่างถูกต้อง - การสื่อสารจะไม่ทำงานหากไม่มีพวกมัน! ทางด้านขวามือของบอร์ดคือแจ็คอินพุตสำหรับปลั๊กของแผงโซลาร์เซลล์และตัวเก็บประจุอินพุต ทางที่ดีควรพยายามเชื่อมต่อแม่แรงและฝาปิดนี้เข้าด้วยกันโดยตรงผ่านการ "วิ่ง" ของบัดกรี ไม่ใช่สายเชื่อมต่อ เพื่อให้ได้เส้นทางที่มีความต้านทานต่ำที่สุด จากนั้นใช้การบัดกรีแบบแข็งเพื่อเชื่อมต่อขั้วบวกของตัวเก็บประจุจัดเก็บข้อมูลโดยตรงกับขั้วแรงดันไฟฟ้าขาเข้าของโมดูลบูสต์ และพินกราวด์ของโมดูลบูสต์โดยตรงกับพินกราวด์ของแจ็ค
ทางด้านขวาและซ้ายของซ็อกเก็ตสำหรับ ATTinys สองตัวคือตัวเก็บประจุ despike / deglitching 0.1uF ส่วนประกอบเหล่านี้มีความสำคัญที่ไม่ควรละทิ้ง และควรเชื่อมต่อกับกำลังไอซีและพินกราวด์ผ่านเส้นทางที่สั้นและตรงที่สุด ตัวต้านทานความรู้สึกกระแสไฟ 10 โอห์มอยู่ทางด้านซ้าย ซึ่งเชื่อมต่อกับเอาต์พุตจากตัวแปลงบูสต์ และแต่ละด้านเชื่อมต่อกับพินอินพุตแกนเซ็นเซอร์ - พินเหล่านี้ได้รับการตั้งค่าให้ทำงานเป็น ADC ที่แตกต่างกันเพื่อวัดทางอ้อม กระแสไฟเข้าสู่แบตเตอรี่ การเชื่อมต่อระหว่างพิน IC สำหรับบัส i2c และพินการปิดบูสต์คอนเวอร์เตอร์ ฯลฯ สามารถทำได้โดยใช้สายเชื่อมต่อที่ด้านล่างของโปรโตบอร์ด ลวดเชื่อมต่อแบบโซลิดคอร์ที่บางมากใช้งานได้ดีเยี่ยมสำหรับสิ่งนี้ มันทำให้การเปลี่ยนแปลงง่ายขึ้นและยังดูเรียบร้อยกว่าการวิ่งจัมเปอร์ระหว่างรูที่ด้านบน
โมดูล LED ที่ฉันใช้คือหน่วย RGB สามสี แผนของฉันคือให้ไฟ LED ทั้งสามดวงทำงานเพื่อให้เป็นสีขาวเมื่อแบตเตอรี่ชาร์จจนเกือบเต็ม และค่อยๆ หรี่ไฟ LED สีฟ้าออกเป็นสีเหลืองเมื่อประจุไฟหมด แต่คุณลักษณะนี้ยังไม่ได้ใช้งาน ไฟ LED สีขาวเพียงดวงเดียวที่มีตัวต้านทานจำกัดกระแสไฟหนึ่งตัวก็ใช้ได้เช่นกัน
ขั้นตอนที่ 7: การทดสอบ ตอนที่ 1
หลังจากตั้งโปรแกรม ATTiny IC ทั้งสองด้วยไฟล์สเก็ตช์ที่รวมไว้ผ่านโปรแกรมเมอร์ USB จากสภาพแวดล้อม Arduino จะช่วยทดสอบว่าแกนทั้งสองบนต้นแบบนั้นทำงานอย่างถูกต้องก่อนที่จะพยายามชาร์จแบตเตอรี่จากแผงโซลาร์เซลล์ ตามหลักการแล้วสิ่งนี้ต้องใช้ออสซิลโลสโคปพื้นฐาน มัลติมิเตอร์ และแหล่งจ่ายไฟแบบตั้งโต๊ะ
สิ่งแรกที่ต้องตรวจสอบคือไม่มีไฟฟ้าลัดวงจรบนบอร์ดก่อนที่จะเสียบไอซี แบตเตอรี่ และแผงเข้ากับเต้ารับเพื่อหลีกเลี่ยงความเสียหายที่อาจเกิดขึ้นได้! วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้แหล่งจ่ายไฟแบบตั้งโต๊ะที่สามารถจำกัดกระแสไฟขาออกให้เป็นค่าที่ปลอดภัยในกรณีดังกล่าว ฉันใช้ชุดอุปกรณ์จ่ายไฟแบบตั้งโต๊ะที่ 3 โวลต์และขีดจำกัด 100 mA ที่เชื่อมต่อกับขั้วแจ็คอินพุตแผงโซลาร์เซลล์ไปยังสายจ่ายไฟบวกและลบ เมื่อไม่ได้ติดตั้งส่วนประกอบอื่นใดนอกจากส่วนประกอบแบบพาสซีฟ ไม่ควรมีการดึงกระแสไฟที่ลงทะเบียนบนจอภาพปัจจุบันของพาวเวอร์ซัพพลายที่จะพูดถึง หากมีกระแสไฟที่สำคัญ หรือแหล่งจ่ายเข้าสู่กระแสจำกัด แสดงว่ามีบางอย่างผิดพลาดและควรตรวจสอบบอร์ดเพื่อให้แน่ใจว่าไม่มีการเชื่อมต่อที่ผิดพลาดหรือตัวเก็บประจุที่มีการกลับขั้ว
ขั้นตอนต่อไปคือการทำให้แน่ใจว่าบูสต์คอนเวอร์เตอร์ทำงานอย่างถูกต้อง มีโพเทนชิออมิเตอร์แบบสกรูอยู่บนบอร์ด โดยที่แหล่งจ่ายไฟยังคงเชื่อมต่ออยู่ และหมุดของคอนเวอร์เตอร์สี่ตัวที่เชื่อมต่ออย่างเหมาะสม โพเทนชิออมิเตอร์ควรหมุนด้วยปลายไขควงขนาดเล็กจนกว่าแรงดันไฟที่ขั้วเอาต์พุตของโมดูลจะอ่านได้ประมาณ 3.8 ถึง 3.9 โวลต์ ค่า DC นี้จะไม่เปลี่ยนแปลงระหว่างการทำงาน แกนของไดรเวอร์จะควบคุมแรงดันไฟขาออกเฉลี่ยโดยการกดหมุดปิดของโมดูล
ขั้นตอนที่ 8: การทดสอบ ตอนที่ 2
สิ่งต่อไปที่ต้องตรวจสอบคือ i2c communicaton ทำงานได้ดีโดยที่บอร์ดหมดพลังงานจากม้านั่งจึงสามารถติดตั้ง IC แกนเซ็นเซอร์ได้ บนออสซิลโลสโคปควรมีสัญญาณพัลซิ่งทั้งพิน 5 และพิน 7 ของชิปจริง ซึ่งเป็นไดรเวอร์ i2c บนชิปที่พยายามส่งข้อมูลไปยังบัดดี้ หลังจากปิดแกนไดรเวอร์แล้ว สามารถติดตั้งและตรวจสอบการเชื่อมต่อด้วยออสซิลโลสโคปอีกครั้ง ควรมีลำดับที่มากขึ้นของพัลส์ที่มองเห็นได้ในทั้งสองบรรทัด ซึ่งหมายความว่าชิปกำลังสื่อสารอย่างถูกต้อง
ช่วยให้ชาร์จแบตเตอรี่ได้เล็กน้อยสำหรับการทดสอบเต็มรูปแบบครั้งสุดท้าย แหล่งจ่ายแบบตั้งโต๊ะยังสามารถใช้เพื่อดำเนินการนี้ โดยจำกัดกระแสไฟไว้ที่ประมาณ 50 mA และแรงดันไฟฟ้ายังคงอยู่ที่ 3.8 โวลต์ ปล่อยให้แบตเตอรี่ LiPo เชื่อมต่อโดยตรงเป็นเวลาสองสามนาที
ขั้นตอนสุดท้ายคือการทดสอบระบบทั้งหมด โดยทุกอย่างเชื่อมต่อกันหากแผงปิดไว้เป็นเวลาสิบหรือ 15 วินาที ไฟควรถูกขับผ่านเอาต์พุต PWM ของแกนไดรเวอร์ เมื่อแผงอยู่ในแสงแดดจ้า แบตเตอรี่ควรชาร์จจากเอาต์พุตของตัวแปลงบูสต์ เครือข่ายลอจิกฟัซซี่สามารถตรวจสอบทางอ้อมเพื่อดูว่าทำงานอย่างถูกต้องหรือไม่โดยดูที่สาย PWM ที่ขับขาปิดของตัวแปลงบูสต์ เมื่อความสว่างเพิ่มขึ้นเมื่อแบตเตอรี่อยู่ในสถานะการชาร์จต่ำ ความกว้างของพัลส์ควรเพิ่มขึ้น แสดงว่าเมื่อมีพลังงานมากขึ้นจากแสงแดด แกนไดรเวอร์ส่งสัญญาณว่ากำลังส่งพลังงานไปยังแบตเตอรี่มากขึ้น!
ขั้นตอนที่ 9: ภาคผนวกของ Fuzzy Logic
ลอจิกคลุมเครือเป็นเทคนิคการเรียนรู้ของเครื่องที่สามารถใช้ในการควบคุมระบบฮาร์ดแวร์ที่มีความไม่แน่นอนในหลายพารามิเตอร์ของระบบที่ถูกควบคุม ทำให้อินพุตที่ชัดเจนไปยังโซลูชันการควบคุมเอาต์พุตสำหรับเป้าหมายนั้นยากต่อการเขียนทางคณิตศาสตร์ ทำได้โดยใช้ค่าตรรกะที่อยู่ระหว่าง 0 (เท็จ) และ 1 (จริง) แสดงความไม่แน่นอนในค่าที่คล้ายกับวิธีที่มนุษย์ทำ ("จริงส่วนใหญ่" หรือ "ไม่จริง") และปล่อยให้พื้นที่สีเทา ระหว่างข้อความที่เป็นจริง 100% และเท็จ 100% วิธีนี้จะบรรลุผลสำเร็จได้โดยการสุ่มตัวอย่างตัวแปรอินพุตก่อนซึ่งการตัดสินใจจะต้องยึดตามและ "ทำให้ไม่ชัดเจน"
หัวใจของระบบลอจิกที่คลุมเครือคือ "หน่วยความจำเชื่อมโยงที่คลุมเครือ" สิ่งนี้ชวนให้นึกถึงเมทริกซ์ซึ่งในกรณีของวงจรการชาร์จแบตเตอรี่จะมีการจัดเก็บชุดค่า 3x3 ระหว่าง 0 ถึง 1 ค่าในเมทริกซ์สามารถเชื่อมโยงคร่าวๆ กับวิธีที่มนุษย์ให้เหตุผลว่าปัจจัย PWM ที่ควบคุมพิน SHTDN ของตัวแปลงบูสต์ควรเป็นอย่างไร ขึ้นอยู่กับว่าฟังก์ชันสมาชิกด้านบนมีคุณสมบัติอย่างไรกับชุดอินพุตที่กำหนด ตัวอย่างเช่น หากแรงดันไฟเข้าที่แผงควบคุมสูง แต่กระแสไฟที่ดึงเข้าไปในแบตเตอรี่ต่ำ อาจหมายความว่าสามารถดึงพลังงานได้มากขึ้น และการตั้งค่า PWM ไม่เหมาะสมและควรเพิ่มขึ้น ในทางกลับกัน หากแรงดันไฟที่แผงหน้าปัดลดต่ำลง แต่เครื่องชาร์จยังคงพยายามดันกระแสไฟขนาดใหญ่เข้าสู่พลังงานแบตเตอรี่ก็จะสูญเปล่าไปด้วย ดังนั้นจึงเป็นการดีที่สุดที่จะลดสัญญาณ PWM ไปยังตัวแปลงบูสต์ เมื่อสัญญาณอินพุตถูก "fuzzified" เป็นเซตที่คลุมเครือแล้ว พวกมันจะถูกคูณด้วยค่าเหล่านี้ คล้ายกับที่เวกเตอร์คูณด้วยเมทริกซ์เพื่อสร้างเซตที่แปลงร่างแล้ว ซึ่งเป็นตัวแทนของความหนักแน่นของ "ความรู้" ในเซลล์ ของเมทริกซ์ควรรวมเข้ากับฟังก์ชันการรวมขั้นสุดท้าย
การใช้โหนด “not-implemented-in-xod” ซึ่งอนุญาตให้โหนด XOD ที่ใช้ฟังก์ชันแบบกำหนดเองที่ซับซ้อนเกินไปที่จะสมเหตุสมผลที่จะสร้างจากบล็อคการสร้างสต็อก และ C++ สไตล์ Arduino เล็กน้อย หน่วยความจำเชื่อมโยง ฟังก์ชันการถ่วงน้ำหนัก และ " fuzzifier" คล้ายกับบล็อกที่อธิบายไว้ในเอกสารอ้างอิงนี้: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 นั้นสร้างได้ตรงไปตรงมาและทดสอบได้ง่ายกว่ามาก
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-