สารบัญ:
- ขั้นตอนที่ 1: การสร้างสัญญาณ Pwm สำหรับ 50Hz
- ขั้นตอนที่ 2: โปรแกรม Arduino สำหรับวัฏจักรหน้าที่ตัวแปร
- ขั้นตอนที่ 3: สลับที่ 50Hz Arduino Pins
- ขั้นตอนที่ 4: ขับสะพาน H และกรองสัญญาณ Pwm
วีดีโอ: Arduino Sinewave สำหรับอินเวอร์เตอร์: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ในโครงการนี้ ฉันได้สร้างสัญญาณ SPWM (มอดูเลตแบบกว้างคลื่นไซน์) จากเอาต์พุตดิจิตอล Arduino pwm สองช่อง
เนื่องจากการทำโปรแกรมดังกล่าว ฉันต้องพูดถึงฟังก์ชันและคุณสมบัติอื่นๆ ของ Arduino เกี่ยวกับโปรเจ็กต์ตัวเต็ม รวมถึงภาพออสซิลโลสโคปและความถี่ต่างๆ โปรดเยี่ยมชมเว็บไซต์ของฉัน:
eprojectszone
ขั้นตอนที่ 1: การสร้างสัญญาณ Pwm สำหรับ 50Hz
ในการสร้างสัญญาณ 50Hz ที่ความถี่สูง จำเป็นต้องทำการคำนวณบางอย่าง ความถี่จาก Arduino สามารถอยู่ที่ 8MHz แต่เราต้องการสัญญาณที่มีวัฏจักรหน้าที่ผันแปร
เพื่อให้เข้าใจถึงประเภทของวัฏจักรหน้าที่ผันแปรของ Arduino คุณสามารถอ่าน 3 ส่วนนี้ของโพสต์ 1, 2 และ 3 เดียวกัน
สมมติว่าความถี่ของเราคือ 50Hz ซึ่งหมายความว่าช่วงเวลาคือ 20ms ดังนั้น 10ms จึงเป็นช่วงครึ่งรอบ ใน 10 มิลลิวินาทีนั้น เราจำเป็นต้องมีพัลส์จำนวนมากที่มีรอบการทำงานที่แตกต่างกันโดยเริ่มจากรอบการทำงานเล็กๆ ตรงกลางของสัญญาณ เรามีรอบการทำงานสูงสุดและสิ้นสุดด้วยรอบการทำงานเล็กๆ ด้วย ในการสร้างคลื่นไซน์ เราจะใช้หมุดสองตัวหนึ่งอันสำหรับ ครึ่งวงจรบวกและหนึ่งรอบสำหรับครึ่งรอบเชิงลบ ในโพสต์ของเราเราใช้พิน 5 และ 6 ซึ่งหมายถึงตัวจับเวลา 0
สำหรับสัญญาณที่ราบรื่น เราเลือก pwm ที่ถูกต้องของเฟสที่ความถี่ 31372 Hz-ดูโพสต์ก่อนหน้า หนึ่งในปัญหาที่ใหญ่ที่สุดคือวิธีที่เราคำนวณรอบการทำงานที่จำเป็นสำหรับแต่ละพัลส์ ดังนั้น เนื่องจากความถี่ของเราคือ f=31372Hz ช่วงเวลาสำหรับแต่ละพัลส์คือ T=1/31372=31.8 เรา ดังนั้นจำนวนพัลส์สำหรับครึ่งรอบคือ N=10ms/31.8us=314 พัลส์ ตอนนี้เพื่อคำนวณรอบการทำงานสำหรับแต่ละพัลส์ เรามี y=sinx แต่ในสมการนี้ เราต้องการองศา ดังนั้นครึ่งรอบจะมี 180 องศาสำหรับ 314 พัลส์ สำหรับแต่ละชีพจร เรามี 180/314=0.57deg/pulse นั่นหมายถึงทุก ๆ ชีพจรที่เราก้าวไปข้างหน้าด้วย 0.57 องศา
y คือรอบการทำงานและ x ค่าของตำแหน่งในครึ่งรอบการทำงาน ในตอนแรก x คือ 0, หลังจาก x=0.57, x=1.14 และไปเรื่อยๆ จนถึง x= 180
หากเราคำนวณค่าทั้งหมด 314 ค่า เราจะได้องค์ประกอบอาร์เรย์ 314 (ประเภท "int" เพื่อให้ Arduino คำนวณได้ง่ายขึ้น)
อาร์เรย์ดังกล่าวคือ:
int sinPWM={1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
คุณจะเห็นได้ว่าวัฏจักรหน้าที่ต่ำที่สุดที่องค์ประกอบแรกและสุดท้ายและสูงที่สุดที่อยู่ตรงกลาง เช่นเดียวกับคลื่นไซน์
ขั้นตอนที่ 2: โปรแกรม Arduino สำหรับวัฏจักรหน้าที่ตัวแปร
ในภาพด้านบน เรามีสัญญาณวัฏจักรหน้าที่ผันแปรพร้อมค่าจากอาร์เรย์
แต่จะสร้างสัญญาณดังกล่าวได้อย่างไร??
ส่วนของโปรแกรมด้านล่างใช้อินเตอร์รัปต์เพื่อเปลี่ยนค่าของรอบการทำงาน
sei();// เปิดใช้งานการขัดจังหวะ
}
ISR(TIMER1_COMPA_vect){// ขัดจังหวะเมื่อตัวจับเวลา 1 ตรงกับค่า OCR1A
if(i>313 && OK==0){// ค่าสุดท้ายจากเวกเตอร์สำหรับพิน 6
i=0;// ไปที่ค่าแรกของ vector(array)
OK=1;//เปิดใช้งานพิน 5
}
x=sinPWM;// x นำค่าจากเวกเตอร์ที่สอดคล้องกับตำแหน่ง i (i เป็นศูนย์ที่จัดทำดัชนี) - ค่าของรอบการทำงาน
i=i+1;// ไปยังตำแหน่งถัดไป
}
ขั้นตอนที่ 3: สลับที่ 50Hz Arduino Pins
เนื่องจากแต่ละพินสร้างเพียงครึ่งรอบการทำงานเพื่อสร้างคลื่นไซน์เต็มรูปแบบ เราใช้พินสองพินซึ่งสลับกันหลังจาก 10mseconds ที่แน่นอน (สำหรับ 50Hz) การเปลี่ยนแปลงของพินนี้ทำขึ้นที่ส่วนท้ายของอาร์เรย์ - หลังจากที่สมมติว่าพิน 5 สร้าง 314 พัลส์ พินนี้ถูกปิดและเปิดใช้งานพิน 6 ซึ่งทำให้สิ่งเดียวกัน แต่สำหรับรอบการทำงานเชิงลบ
เนื่องจาก Arduino สามารถสร้างสัญญาณบวกได้เฉพาะวงจรการทำงานเชิงลบที่สร้างขึ้นในสะพาน h- คุณสามารถอ่านได้ที่นี่
โปรแกรมสำหรับเปลี่ยนพิน:
sei();// เปิดใช้งานการขัดจังหวะ
}
ISR(TIMER1_COMPA_vect){// ขัดจังหวะเมื่อตัวจับเวลา 1 ตรงกับค่า OCR1A
if(i>313 && OK==0){// ค่าสุดท้ายจากเวกเตอร์สำหรับพิน 6
i=0;// ไปที่ค่าแรกของเวกเตอร์
OK=1;//เปิดใช้งานพิน 5
}
if(i>313 && OK==1){// ค่าสุดท้ายจากเวกเตอร์สำหรับพิน 5
i=0;//ไปที่ค่าแรกของเวกเตอร์
OK=0;//เปิดใช้งานพิน 6
}
x=sinPWM;// x รับค่าจากเวกเตอร์ที่สอดคล้องกับตำแหน่ง i (i ถูกสร้างดัชนีเป็นศูนย์)
i=i+1;// ไปยังตำแหน่งถัดไป
ถ้า(ตกลง==0){
OCR0B=0;//สร้างพิน 5 0
OCR0A=x;//เปิดใช้งานพิน 6 กับรอบการทำงานที่สอดคล้องกัน
ถ้า(ตกลง==1){
OCR0A=0;//ทำพิน 6 0
OCR0B=x;//เปิดใช้งานพิน 5 ไปยังรอบการทำงานที่สอดคล้องกัน
}
}
ขั้นตอนที่ 4: ขับสะพาน H และกรองสัญญาณ Pwm
สัญญาณที่ได้รับจาก Arduino เป็นส่วนควบคุมสำหรับการประยุกต์ใช้อินเวอร์เตอร์เนื่องจากทั้งคู่เป็นค่าบวก ในการสร้างคลื่นไซน์แบบเต็มและอินเวอร์เตอร์ที่ใช้งานได้จริง เราต้องใช้สะพาน h และเพื่อล้าง pwm ตัวกรองความถี่ต่ำ
H-bridge ถูกนำเสนอที่นี่
ตัวกรองความถี่ต่ำผ่านทดสอบกับมอเตอร์ไฟฟ้ากระแสสลับขนาดเล็กที่นี่
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino