เครื่องวัดพลังงานแบบไร้สายพร้อมการควบคุมโหลด: 5 ขั้นตอน
เครื่องวัดพลังงานแบบไร้สายพร้อมการควบคุมโหลด: 5 ขั้นตอน
Anonim
Image
Image
เครื่องวัดพลังงานแบบไร้สายพร้อมการควบคุมโหลด
เครื่องวัดพลังงานแบบไร้สายพร้อมการควบคุมโหลด

การแนะนำ

ช่อง Youtube::::

โปรเจ็กต์นี้ใช้ไมโครคอนโทรลเลอร์ Atmega16 ของ Atmel เป็นสมองหลักในการคำนวณ

โมดูลการสื่อสารไร้สาย NRF24L01+ ใช้สำหรับการรับส่งข้อมูลแบบไร้สาย

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

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

ฉันได้นำข้อมูลจากเครื่องวัดพลังงานสามตัวและส่งข้อมูลไปยังเครื่องรับซึ่งคำนวณภาระและปริมาณการใช้ทั้งหมดต่อเมตร

หากโหลดเกินระดับที่อนุญาต ออดจะเริ่มขึ้น

ข้อมูลจะถูกบันทึกไว้ที่ฝั่งผู้ส่ง ดังนั้นข้อมูลจะไม่สูญหายหากเครื่องรับปิดอยู่หรือขาดการเชื่อมต่อ

นี่คือวิดีโอการทำงาน

ส่วนประกอบที่แตกต่างกันคือ:

  • เครื่องวัดพลังงาน X 3
  • NRF24L01 X 2
  • Atmega16 X 2
  • ออปโตคัปเปลอร์ X 3

ขั้นตอนที่ 1: การตั้งค่าเครื่องวัดพลังงาน

การตั้งค่าเครื่องวัดพลังงาน
การตั้งค่าเครื่องวัดพลังงาน
การตั้งค่าเครื่องวัดพลังงาน
การตั้งค่าเครื่องวัดพลังงาน
การตั้งค่าเครื่องวัดพลังงาน
การตั้งค่าเครื่องวัดพลังงาน

1. เปิดเครื่องวัดพลังงานก่อน

2. เพียงแค่ตัดขั้วแคโทดของ Cal LED

3. บัดกรี 2 สายที่ปลาย 2 ของ LED

4. เชื่อมต่อแคโทดของ LED กับ Pin1 ของ Opto-coupler (MCT2E) และปลายอีกด้านหนึ่งของ LED กับ Pin2 ของ Opto-coupler

5. เชื่อมต่อพิน 4 ของ opto-coupler กับสายสีดำและ Pin5 กับสายสีน้ำตาล ต่อสายสีดำเข้ากับกราวด์ของแผงวงจรสำหรับโครงการ เครื่องวัดพลังงานแบบจ่ายล่วงหน้า หรือ โครงการอ่านมิเตอร์อัตโนมัติ สายสีน้ำตาลมีเอาต์พุตพัลส์

6. เชื่อมต่อแหล่งจ่ายไฟและโหลดตามภาพนี้

ขั้นตอนที่ 2: Algo พื้นฐานสำหรับการคำนวณ

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

หลังจากใช้พลังงาน 0.3125 วัตต์ LED มิเตอร์ (สอบเทียบ) จะกะพริบ หมายความว่าถ้าเราใช้หลอดไฟ 100 วัตต์เป็นเวลา 1 นาที ชีพจรจะกะพริบ 5.3 ครั้งในหนึ่งนาที และสามารถคำนวณได้โดยใช้สูตรที่กำหนด

พัลส์= (อัตราชีพจรของมิเตอร์* วัตต์ * 60) / (1000 * 3600)

หากอัตราชีพจรของมิเตอร์คือ 3200 imp และวัตต์ที่ใช้คือ 100 เราก็มี

พัลส์ = (3200 * 100 * 60) / (1000 * 3600)

ชีพจร = 5.333333333 ต่อนาที

หากเกิดพัลส์ 5.3333333333 ในหนึ่งนาที จากนั้นในหนึ่งชั่วโมงพัลส์จะเกิดขึ้น..

พัลส์ = 5.3333333333* 60 พัลส์ = ~320 ~320 พัลส์จะเกิดขึ้นในหนึ่งชั่วโมง

ดังนั้น ในหนึ่งชั่วโมง หลอดไฟ 100 วัตต์ใช้ไฟฟ้า 100 วัตต์ และกะพริบเกือบ 320 ครั้ง

ตอนนี้เราสามารถคำนวณกระแสไฟฟ้าหนึ่งพัลส์ที่ใช้เป็นวัตต์

หนึ่งพัลส์ (วัตต์) = 100\320

หนึ่งพัลส์ (วัตต์) = 0.3125

หมายถึง 0.3125 วัตต์ ไฟฟ้าใช้พัลส์เดียว

ตอนนี้ หน่วย หน่วย = (หนึ่งพลังงานพัลส์ (ไฟฟ้า))* พัลส์ / 1000

ถ้าหนึ่งพัลส์ = 0.3125 วัตต์ พัลส์ใน 10 ชั่วโมง = 3200

จากนั้นหน่วยจะเป็นหน่วย = (0.3125 * 3200) /1000 หน่วย = 1 หมายถึงหนึ่งหน่วยใน 10 ชั่วโมงสำหรับหลอดไฟ 100 วัตต์

สมมุติว่าอัตราหนึ่งหน่วยคือ 7 รูปี จากนั้น สำหรับค่าใช้จ่ายพัลส์เดียวจะเป็น

ค่าใช้จ่ายพัลส์เดี่ยว = (7 * ใช้พลังงานหนึ่งพัลส์) / 1,000

ค่าใช้จ่ายพัลส์เดี่ยว = (7 * 0.3125) / 1,000

ค่าใช้จ่ายพัลส์เดี่ยว = 0.0021875 รูปี

ขั้นตอนที่ 3: Nrf24L01 (ให้เครดิตกับ

Nrf24L01 (เครดิต Http://gizmosnack.blogspot.in/)
Nrf24L01 (เครดิต Http://gizmosnack.blogspot.in/)

ศึกษาลิงค์นี้

โมดูล nRF24L01 เป็นโมดูล RF ที่ยอดเยี่ยมซึ่งทำงานบนย่านความถี่ 2, 4 GHz และเหมาะสำหรับการสื่อสารแบบไร้สายในบ้านเพราะจะเจาะผนังคอนกรีตหนาได้ nRF24L01 ทำหน้าที่เขียนโปรแกรมฮาร์ดทั้งหมดให้กับคุณ และยังมีฟังก์ชันเพื่อตรวจสอบโดยอัตโนมัติว่าข้อมูลที่ส่งนั้นได้รับที่ปลายอีกด้านหรือไม่ มีชิปตระกูล nRF ที่แตกต่างกันสองสามรุ่น และดูเหมือนว่าทั้งหมดจะทำงานใน วิธีที่คล้ายกัน ตัวอย่างเช่น ฉันได้ใช้โมดูล nRF905 (433MHz) ที่มีรหัสเดียวกันกับที่ฉันใช้กับ nRF24L01 และ nRF24L01+ โดยไม่มีปัญหาใดๆ โมดูลเล็กๆ เหล่านี้มีช่วงที่น่าประทับใจ โดยบางรุ่นสามารถจัดการการสื่อสารได้สูงถึง 1,000 ม. (ฟรีการมองเห็น) และสูงถึง 2,000 ม. ด้วยเสาอากาศแบบสองทิศทาง

nRF24L01 กับ nRF24L01+

รุ่น (+) เป็นชิปรุ่นใหม่ที่อัปเดตและรองรับอัตราข้อมูล 1 Mbps, 2 Mbps และ "โหมดระยะไกล" ที่ 250 kbps ซึ่งมีประโยชน์มากเมื่อคุณต้องการขยายความยาวออกอากาศ nRF24L01 รุ่นเก่า (ซึ่งฉันได้ใช้ในโพสต์ก่อนหน้าของฉัน) รองรับอัตราข้อมูล 1 Mbps หรือ 2 Mbps เท่านั้นทั้งสองรุ่นสามารถทำงานร่วมกันได้ตราบใดที่ตั้งไว้ที่อัตราข้อมูลเดียวกัน เนื่องจากทั้งสองมีราคาใกล้เคียงกัน (แทบไม่มีอะไรเลย) เราขอแนะนำให้คุณซื้อเวอร์ชัน +!

ส่วนที่หนึ่ง - ความแตกต่างของ SetupConnection โมดูล nRF24L01 มีตัวเชื่อมต่อ 10 ตัว และเวอร์ชัน + มี 8 ตัว ความแตกต่างคือเวอร์ชัน + แทนที่จะมี 3, 3 V และ GND สองตัว มีกราวด์ (อันที่มีสี่เหลี่ยมสีขาวล้อมรอบ) และ แหล่งจ่ายไฟ 3, 3 V ติดกัน หากเปลี่ยนโมดูลจากเวอร์ชัน + ใหม่เป็นเวอร์ชันเก่า อย่าลืมย้ายสายเคเบิล GND ไปยังตำแหน่งที่ถูกต้อง มิฉะนั้นจะทำให้วงจรของคุณสั้นลง นี่คือรูปภาพของเวอร์ชัน + (มุมมองด้านบน) โดยที่ คุณสามารถดูการเชื่อมต่อทั้งหมดที่มีป้ายกำกับ เวอร์ชันเก่ามีการเชื่อมต่อ GND สองครั้งที่ด้านบนสุดแทนที่จะเป็นที่มุมขวาล่าง

แหล่งจ่ายไฟ (GND & VCC) โมดูลจะต้องใช้พลังงาน 3, 3 V และไม่สามารถใช้แหล่งจ่ายไฟ 5 V ได้! เนื่องจากใช้กระแสไฟน้อยมาก ฉันจึงใช้ตัวควบคุมเชิงเส้นเพื่อลดแรงดันไฟฟ้าลงเหลือ 3, 3 V เพื่อให้ง่ายขึ้นสำหรับเรา ชิปสามารถรองรับ 5 V บนพอร์ต i/O ซึ่งถือว่าดี เป็นความเจ็บปวดในการควบคุมสาย i/O ทั้งหมดจากชิป AVR Chip Enable (CE) ใช้เมื่อต้องส่งข้อมูล (ตัวส่งสัญญาณ) หรือเริ่มรับข้อมูล (ตัวรับ) ขา CE เชื่อมต่อกับที่ไม่ได้ใช้ พอร์ต i/O บน AVR และตั้งค่าเป็นเอาต์พุต (ตั้งค่าบิตเป็น 1 ใน DDx register โดยที่ x คือตัวอักษรพอร์ต)Atmega88: PB1, ATtiny26: PA0, ATtiny85: PB3SPI Chip Select (CSN)หรือที่เรียกว่า "Ship ไม่เลือก" พิน CSN ยังเชื่อมต่อกับพอร์ต i/O ที่ไม่ได้ใช้บน AVR และตั้งค่าเป็นเอาต์พุต พิน CSN อยู่ในระดับสูงตลอดเวลา ยกเว้นเมื่อจะส่งคำสั่ง SPI จาก AVR ไปยัง nRF. Atmega88: PB2, ATtiny26: PA1, ATtiny85: PB4SPI Clock (SCK) นี่คือนาฬิกาอนุกรม SCK เชื่อมต่อกับ SCK-pin บน AVR. Atmega88: PB5, ATtiny26: PB2, ATtiny85: PB2SPI Master output Slave input (MOSI หรือ MO) นี่คือสายข้อมูลในระบบ SPI หากชิป AVR ของคุณรองรับการถ่ายโอน SPI เช่นเดียวกับ Atmega88 สิ่งนี้เชื่อมต่อกับ MOSI บน AVR เช่นกันและถูกตั้งค่าเป็นเอาต์พุต สำหรับ AVR ที่ไม่มี SPI เช่น ATtiny26 และ ATtiny85 นั้นมาพร้อมกับ USI แทน และแผ่นข้อมูลระบุว่า: "โหมด USI Three-wire คือ สอดคล้องกับโหมด Serial Peripheral Interface (SPI) 0 และ 1 แต่ไม่มีฟังก์ชันหมุดเลือกทาส (SS) อย่างไรก็ตาม คุณลักษณะนี้สามารถนำไปใช้ในซอฟต์แวร์ได้หากจำเป็น" "SS" ที่อ้างถึงจะเหมือนกับ "CSN" และหลังจากการค้นคว้า ฉันพบบล็อกนี้ที่ช่วยฉันจัดสรร เพื่อให้ USI เป็น SPI และใช้งานได้ ฉันพบว่าฉันต้องเชื่อมต่อพิน MOSI จาก nRF กับพิน MISO บน AVR และตั้งค่าเป็นเอาต์พุต Atmega88: PB3, ATtiny26: PB1, ATtiny85: PB1SPI Master input Slave output (MISO หรือ MI)นี่คือสายข้อมูลในระบบ SPI หาก AVR ของคุณ ชิปรองรับการถ่ายโอน SPI เช่น Atmega88 ซึ่งเชื่อมต่อกับ MISO บน AVR และอันนี้ยังคงเป็นอินพุต เพื่อให้มันทำงานบน ATtiny26 และ ATtiny85 ฉันต้องใช้ USI ตามที่กล่าวไว้ข้างต้น สิ่งนี้ใช้ได้เฉพาะเมื่อฉันเชื่อมต่อพิน MISO บน nRF กับพิน MOSI บน AVR และตั้งค่าเป็นอินพุตและเปิดใช้งาน pullup ภายใน Atmega88: PB4, ATtiny26: PB0, ATtiny85: PB0Interrupt Request (IRQ)IRQ pin ไม่จำเป็น แต่เป็นวิธีที่ดีในการรู้เมื่อมีบางสิ่งเกิดขึ้นกับ nRF ตัวอย่างเช่น คุณสามารถบอก nRF ให้ตั้งค่า IRQ สูงเมื่อได้รับพัสดุภัณฑ์ หรือเมื่อการส่งสำเร็จเสร็จสิ้น มีประโยชน์มาก! หาก AVR ของคุณมีมากกว่า 8 พินและอินเทอร์รัปต์พินที่พร้อมใช้งาน ฉันขอแนะนำอย่างยิ่งให้คุณเชื่อมต่อ IRQ กับอันนั้นและตั้งค่าคำขอขัดจังหวะ Atmega88: PD2, ATtiny26: PB6, ATtiny85: -

ขั้นตอนที่ 4: แผนภาพการเชื่อมต่อพื้นฐาน

แผนภาพการเชื่อมต่อพื้นฐาน
แผนภาพการเชื่อมต่อพื้นฐาน
แผนภาพการเชื่อมต่อพื้นฐาน
แผนภาพการเชื่อมต่อพื้นฐาน

ไดอะแกรมการเชื่อมต่อนี้เป็นแผนผัง

ขั้นตอนที่ 5: รหัส

สำหรับรหัสเยี่ยมชม GitHub