![Arduino Lightning Detector W / กราฟเวลาจริง: 3 ขั้นตอน (พร้อมรูปภาพ) Arduino Lightning Detector W / กราฟเวลาจริง: 3 ขั้นตอน (พร้อมรูปภาพ)](https://img.gwsigeps.com/img/circuits/arduino-lightning-detector-w/-real-time-graphing-4.jpg)
สารบัญ:
Hi! นี่เป็นคำสั่งแรกของฉันและฉันจะชอบข้อเสนอแนะ!
โครงการนี้เริ่มต้นหนึ่งวันเมื่อฉันรู้สึกเบื่อ ฉัน Googled 'โครงการ Arduino' และสิ่งนี้เกิดขึ้นในสนามเด็กเล่น Arduino
บันทึก: นี่ไม่ใช่ความคิดดั้งเดิมของฉันฉันค้นพบมันในสนามเด็กเล่น Arduino แต่นี่เป็นบทความต้นฉบับ: http://runtimeprojects.com/2016/02/a-lightning-detector-for-arduino/ ฉันได้ทำการแก้ไขโครงการซึ่งฉันคิดว่าอาจทำให้ดีขึ้น
คุณต้องการ:
- x1 Arduino
(ฉันเริ่มจาก Uno แต่ลงเอยด้วยการใช้ Micro)
- x1 เขียงหั่นขนม
(ในที่สุดคุณก็สามารถใช้ Perfboard ได้ฉันเดา)
- x4-7 สายจัมเปอร์
(เพื่อเชื่อมต่อส่วนประกอบ)
- x1 แรงดัน Divider Circut
คุณมีสองทางเลือก:
- x1 โพเทนชิออมิเตอร์
- ตัวต้านทาน x3
- x2 10K โอห์ม
- x1 3.3M โอห์ม
วัสดุ:
ขั้นตอนที่ 1: ความรู้สายฟ้าพื้นหลัง
เมื่อเกิดฟ้าผ่ามันจะปลดปล่อยพลังงานหลายชนิด คนส่วนใหญ่รู้ว่ามันปล่อยแสงและเสียง แต่ Lightning ยังปล่อยคลื่นวิทยุโดยเฉพาะในช่วง VLF (ความถี่ต่ำมาก) ไปยังช่วง LF (ความถี่ต่ำ) หรือประมาณ 3 ถึง 300 KHz ด้วย Arduino สามารถจับความถี่ได้ประมาณ 7 KHz ซึ่งอยู่ภายในขอบเขตความถี่ที่ปล่อยออกมา
ด้วยโครงการนี้เราควรจะสามารถรับสายฟ้าผ่าภายในระยะเวลาประมาณ 12.5 ไมล์ (20 กิโลเมตร)
ขั้นตอนที่ 2: วงจร
คำเตือน: สายฟ้าผ่าสามารถทำให้เกิดกระแสทั้งบวกและลบในสายดังนั้นโปรดปฏิบัติตามคำแนะนำอย่างระมัดระวัง 100% แน่ใจว่าตัวแบ่งแรงดันไฟฟ้าของคุณกำลังทำงานเพื่อหลีกเลี่ยงความเสียหายของ Arduino
วงจรนั้นง่ายมาก ส่วนที่ซับซ้อนที่สุดเรียกว่าตัวแบ่งแรงดันไฟฟ้าเพื่อป้องกัน Arduino ของเราไม่ให้เสียหายจากกระแสที่เกิดจากสายฟ้าผ่า
การเลือกพิษของคุณ: Voltage Dividers
มีวิธีการที่แตกต่างกันสองสามวิธีที่คุณสามารถใช้ตัวแบ่งแรงดันไฟฟ้าในวงจรของคุณ
ตัวเลือกที่ 1: ตัวต้านทาน
ถ้าคุณจะใช้ตัวต้านทานคุณจะต้องแนบมันดังในรูปที่ 2
ตัวเลือก 2: โพเทนชิออมิเตอร์
หากคุณกำลังจะใช้โพเทนชิออมิเตอร์คุณสามารถต่อเข้ากับวงจรไดอะแกรมซึ่งเป็นภาพแรก
ขั้นตอนที่ 3: รหัส
มีโปรแกรมที่แตกต่างกันสองโปรแกรมที่ทำงานสำหรับการทำงานปกติ
ดาวน์โหลดรหัสและแผนภาพวงจรของฉันจาก Github
- Arduino
โปรแกรม Arduino นั้นง่ายมาก
การตั้งค่าเป็นโมฆะ () {
Serial.begin (115200); // ตั้งค่าการสื่อสารแบบอนุกรมที่ 115200 baud
pinMode (A4, INPUT); // กำหนดขาอะนาล็อก 4 เป็นอินพุต
}
void loop () {
Serial.println (analogRead (A4)); // พิมพ์ค่าจากขา A4 ไปยังพอร์ตอนุกรม
}
- การประมวลผล
โปรแกรมประมวลผลมีความซับซ้อนกว่าเล็กน้อย
นำเข้าการประมวลผล.serial. *;
อนุกรม myPort; // พอร์ตอนุกรม
int xPos = 1; // ตำแหน่งแนวนอนของกราฟลอยใน Byte = 0;
การตั้งค่าเป็นโมฆะ () {
// กำหนดขนาดหน้าต่าง (หมายเหตุ: สามารถปรับขนาดสำหรับหน้าจอของคุณ):
ขนาด (1,000, 750);
// แสดงรายการพอร์ตอนุกรมที่มีอยู่ทั้งหมด
// หากใช้การประมวลผล 2.1 หรือใหม่กว่าให้ใช้ Serial.printArray ()
println (Serial.list ());
// เปิดพอร์ตใด ๆ ที่คุณใช้อยู่
// เปลี่ยน 0 เป็น # ในรายการที่คุณใช้ (-1)
myPort = new Serial (สิ่งนี้, Serial.list () 0, 115200);
// อย่าสร้าง serialEvent () เว้นแต่คุณจะได้ตัวอักษรขึ้นบรรทัดใหม่:
myPort.bufferUntil (' n');
// set inital background:
พื้นหลัง (0);
}
โมฆะวาด () {
// วาดเส้น:
จังหวะ (127, 34, 255);
เส้น (xPos, height, xPos, height - inByte);
// ที่ขอบของหน้าจอกลับไปที่จุดเริ่มต้น:
if (xPos> = width) {
xPos = 0;
พื้นหลัง (0);
}
อื่น {
// เพิ่มตำแหน่งแนวนอน:
xPos ++;
}
}
ถือเป็นโมฆะ serialEvent (Serial myPort) {
// รับสตริง ASCII:
String inString = myPort.readStringUntil (' n');
if (inString! = null) {
// ตัดส่วนที่เหลือออกจากช่องว่าง:
inString = trim (inString);
// แปลงเป็น int และแมปเป็นความสูงของหน้าจอ:
inByte = float (inString);
println (inByte);
inByte = map (inByte, 0, 1023, 0, ความสูง);
}
}