สารบัญ:

DIY PWM Control สำหรับแฟนพีซี: 12 ขั้นตอน
DIY PWM Control สำหรับแฟนพีซี: 12 ขั้นตอน

วีดีโอ: DIY PWM Control สำหรับแฟนพีซี: 12 ขั้นตอน

วีดีโอ: DIY PWM Control สำหรับแฟนพีซี: 12 ขั้นตอน
วีดีโอ: วิธีการสร้างวงจรควบคุมความเร็วมอเตอร์กระแสตรงอย่างง่าย 2024, พฤศจิกายน
Anonim
การควบคุม PWM แบบ DIY สำหรับแฟนพีซี
การควบคุม PWM แบบ DIY สำหรับแฟนพีซี

คำแนะนำนี้อธิบายการสร้างตัวควบคุม PWM พัดลมพีซี 12 V ที่มีคุณสมบัติครบถ้วน การออกแบบสามารถควบคุมพัดลมคอมพิวเตอร์ 3 พินได้ถึง 16 ตัว การออกแบบใช้คู่ของ IC สัญญาณผสมที่กำหนดค่าได้ของ Dialog GreenPAK™ เพื่อควบคุมรอบการทำงานของพัดลมแต่ละตัว นอกจากนี้ยังมีสองวิธีในการเปลี่ยนความเร็วของพัดลม:

NS. ด้วยการสร้างพื้นที่สี่เหลี่ยมจัตุรัส/ตัวเข้ารหัสแบบหมุน

NS. ด้วยแอปพลิเคชัน Windows ที่สร้างขึ้นใน C # ที่สื่อสารกับ GreenPAK ผ่าน I2C

ด้านล่างนี้ เราได้อธิบายขั้นตอนที่จำเป็น ทำความเข้าใจว่าชิป GreenPAK ได้รับการตั้งโปรแกรมเพื่อสร้างการควบคุม PWM สำหรับพัดลมพีซีอย่างไร อย่างไรก็ตาม หากคุณต้องการเพียงแค่ผลลัพธ์ของการเขียนโปรแกรม ให้ดาวน์โหลดซอฟต์แวร์ GreenPAK เพื่อดูไฟล์การออกแบบ GreenPAK ที่เสร็จสมบูรณ์แล้ว เสียบ GreenPAK Development Kit เข้ากับคอมพิวเตอร์ของคุณและกดโปรแกรมเพื่อสร้าง IC แบบกำหนดเองสำหรับการควบคุม PWM สำหรับพัดลมพีซี

ขั้นตอนที่ 1: ไดอะแกรมบล็อกระบบ

ไดอะแกรมบล็อกระบบ
ไดอะแกรมบล็อกระบบ

ขั้นตอนที่ 2: SLG46108 การออกแบบตัวถอดรหัสแบบหมุน

SLG46108 การออกแบบตัวถอดรหัสแบบหมุน
SLG46108 การออกแบบตัวถอดรหัสแบบหมุน
SLG46108 การออกแบบตัวถอดรหัสแบบหมุน
SLG46108 การออกแบบตัวถอดรหัสแบบหมุน
SLG46108 การออกแบบตัวถอดรหัสแบบหมุน
SLG46108 การออกแบบตัวถอดรหัสแบบหมุน

ใช้ตัวเข้ารหัสแบบหมุนเพื่อเพิ่มหรือลดรอบการทำงานของพัดลมด้วยตนเอง อุปกรณ์นี้ส่งสัญญาณพัลส์บนเอาต์พุตช่อง A และช่อง B ซึ่งห่างกัน 90 ° ดู AN-1101: Unclocked Quadrature Decoder สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของ Rotary Encoder

สามารถสร้างตัวถอดรหัสแบบหมุนตามนาฬิกาได้โดยใช้ Dialog GreenPAK SLG46108 เพื่อประมวลผลสัญญาณ Channel A และ Channel B และส่งออกเป็นพัลส์ทวนเข็มนาฬิกา (CCW) และตามเข็มนาฬิกา (CW)

เมื่อ Channel A นำไปสู่ Channel B การออกแบบจะส่งสัญญาณพัลส์สั้น ๆ บน CW เมื่อช่อง B นำไปสู่ช่อง A จะส่งสัญญาณพัลส์สั้น ๆ บน CCW

DFF สามตัวซิงโครไนซ์อินพุตช่อง A กับนาฬิกา ในทำนองเดียวกัน ไพพ์ดีเลย์โดยตั้งค่า OUT0 เป็น DFF สองตัว และ OUT1 ตั้งค่าเป็น DFF สามตัว จะสร้างฟังก์ชันการทำงานเดียวกันสำหรับแชนเนล B

หากต้องการสร้างเอาต์พุต CW และ CCW ให้ใช้ LUT สองสามตัว สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการออกแบบตัวถอดรหัสแบบโรตารี่มาตรฐานนี้ โปรดไปที่เว็บไซต์นี้

ตัวถอดรหัสโรตารี GreenPAK จะได้รับพัลส์อินพุต A และ B และเอาต์พุตพัลส์ CW และ CCW ดังแสดงในรูปที่ 4

วงจรหลังจากประตู XOR ช่วยให้มั่นใจได้ว่าจะไม่มีชีพจร CW และพัลส์ CCW ในเวลาเดียวกัน ทำให้เกิดข้อผิดพลาดกับตัวเข้ารหัสแบบหมุน ความล่าช้าของขอบลดลง 8 ms บนสัญญาณ CW และ CCW บังคับให้อยู่ในระดับสูงเป็นเวลา 8 ms บวกหนึ่งรอบสัญญาณนาฬิกา ซึ่งจำเป็นสำหรับ SLG46826 GreenPAK ดาวน์สตรีม

ขั้นตอนที่ 3: การออกแบบตัวควบคุมพัดลม SLG46826

SLG46826 การออกแบบตัวควบคุมพัดลม
SLG46826 การออกแบบตัวควบคุมพัดลม

ขั้นตอนที่ 4: การสร้าง PWM พร้อมตัวนับออฟเซ็ต

การสร้าง PWM พร้อมตัวนับออฟเซ็ต
การสร้าง PWM พร้อมตัวนับออฟเซ็ต
การสร้าง PWM พร้อมตัวนับออฟเซ็ต
การสร้าง PWM พร้อมตัวนับออฟเซ็ต

ตัวนับออฟเซ็ตที่มีคาบเดียวกันถูกใช้เพื่อสร้างสัญญาณ PWM ตัวนับตัวแรกตั้งค่า DFF และตัวที่สองจะรีเซ็ตมัน สร้างสัญญาณ PWM รอบการทำงานที่สอดคล้องกันดังแสดงในรูปที่ 6 และรูปที่ 7

CNT6 ตั้งค่า DFF10 และเอาต์พุตกลับด้านของ CNT1 จะรีเซ็ต DFF10 พิน 18 และ 19 ใช้สำหรับส่งสัญญาณ PWM ไปยังวงจรภายนอก

ขั้นตอนที่ 5: การควบคุมวัฏจักรหน้าที่ด้วยการฉีดนาฬิกาและการข้ามนาฬิกา

การควบคุมวัฏจักรหน้าที่ด้วยการฉีดนาฬิกาและการข้ามนาฬิกา
การควบคุมวัฏจักรหน้าที่ด้วยการฉีดนาฬิกาและการข้ามนาฬิกา
การควบคุมวัฏจักรหน้าที่ด้วยการฉีดนาฬิกาและการข้ามนาฬิกา
การควบคุมวัฏจักรหน้าที่ด้วยการฉีดนาฬิกาและการข้ามนาฬิกา

ตัวควบคุมพัดลมจะรับสัญญาณ CW และ CCW เป็นอินพุตจากตัวถอดรหัสแบบหมุน และใช้เพื่อเพิ่มหรือลดสัญญาณ PWM ที่ควบคุมความเร็วของพัดลม สิ่งนี้ทำได้ด้วยส่วนประกอบตรรกะดิจิทัลหลายอย่าง

รอบการทำงานต้องเพิ่มขึ้นเมื่อได้รับพัลส์ CW สิ่งนี้ทำได้โดยการฉีดพัลส์นาฬิกาเพิ่มเติมเข้าไปในบล็อก CNT6 ทำให้มันส่งเอาต์พุตหนึ่งรอบนาฬิกาเร็วกว่าปกติ กระบวนการนี้แสดงในรูปที่ 8

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

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

ฟังก์ชันการฉีดนาฬิกาและการข้ามนาฬิกาจะดำเนินการโดยใช้องค์ประกอบลอจิกดิจิทัลบางอย่างภายใน GreenPAK คู่ของบล็อกมัลติฟังก์ชั่นใช้เพื่อสร้างคอมโบตัวตรวจจับสลัก/ขอบคู่ LUT0 4 บิตใช้เพื่อ mux ระหว่างสัญญาณนาฬิกาทั่วไป (CLK/8) และสัญญาณนาฬิกาหรือสัญญาณนาฬิกาข้าม ฟังก์ชันนี้มีรายละเอียดเพิ่มเติมในขั้นตอนที่ 7

ขั้นตอนที่ 6: อินพุตปุ่ม

อินพุตปุ่ม
อินพุตปุ่ม

อินพุต BUTTON ถูกดีบาวซ์เป็นเวลา 20 มิลลิวินาที จากนั้นจึงใช้เพื่อสลับสลักที่กำหนดว่าจะเลือกชิปตัวนี้หรือไม่ หากเลือกไว้ LUT 4 บิตจะส่งผ่านสัญญาณนาฬิกาข้ามหรือสัญญาณฉีด หากไม่ได้เลือกชิป LUT 4 บิตก็จะส่งสัญญาณ CLK/8

ขั้นตอนที่ 7: การป้องกันการโรลโอเวอร์วัฏจักรหน้าที่

ป้องกันรอบการทำงานโรลโอเวอร์
ป้องกันรอบการทำงานโรลโอเวอร์
ป้องกันรอบการทำงานโรลโอเวอร์
ป้องกันรอบการทำงานโรลโอเวอร์
ป้องกันรอบการทำงานโรลโอเวอร์
ป้องกันรอบการทำงานโรลโอเวอร์

RS แลตช์ 3-bit LUT5 และ 3-bit LUT3 ถูกใช้เพื่อให้แน่ใจว่าคุณไม่สามารถฉีดหรือข้ามนาฬิกาจำนวนมากจนตัวนับออฟเซ็ตพลิกคว่ำ เพื่อหลีกเลี่ยงไม่ให้ระบบถึงรอบการทำงาน 100 % แล้วจึงหมุนรอบการทำงาน 1% หากได้รับนาฬิกาที่ฉีดอีกอัน

แลตช์ RS ป้องกันไม่ให้สิ่งนี้เกิดขึ้นโดยการล็อคอินพุทเข้ากับบล็อคมัลติฟังก์ชันเมื่อระบบอยู่ห่างจากรอบนาฬิกาหนึ่งรอบจากการพลิกกลับ DFF คู่หนึ่งจะหน่วงสัญญาณ PWM_SET และ PWM_nRST ไปหนึ่งช่วงสัญญาณนาฬิกาดังแสดงในรูปที่ 11

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

ในทำนองเดียวกัน หากใกล้ถึงรอบการทำงานสูงสุด เช่น สัญญาณ PWM_nRST ที่ล่าช้าเกิดขึ้นพร้อมกับสัญญาณ PWM_SET จำเป็นต้องหลีกเลี่ยงการเพิ่มรอบการทำงานอีก ในกรณีนี้ ให้หน่วงสัญญาณ nRST ไปสองรอบสัญญาณนาฬิกา เพื่อให้แน่ใจว่าระบบจะไม่เปลี่ยนจาก 99 % เป็น 1 %

ขั้นตอนที่ 8: การควบคุมวัฏจักรหน้าที่ด้วย I2C

การควบคุมวัฏจักรหน้าที่ด้วย I2C
การควบคุมวัฏจักรหน้าที่ด้วย I2C
การควบคุมวัฏจักรหน้าที่ด้วย I2C
การควบคุมวัฏจักรหน้าที่ด้วย I2C
การควบคุมวัฏจักรหน้าที่ด้วย I2C
การควบคุมวัฏจักรหน้าที่ด้วย I2C

การออกแบบนี้รวมเอาอีกวิธีหนึ่งในการควบคุมรอบการทำงานนอกเหนือจากการข้ามนาฬิกา/การฉีดนาฬิกา สามารถใช้ไมโครคอนโทรลเลอร์ภายนอกเพื่อเขียนคำสั่ง I2C ไปยัง GreenPAK เพื่อตั้งค่ารอบการทำงาน

การควบคุมรอบการทำงานบน I2C ต้องการให้ตัวควบคุมดำเนินการตามลำดับคำสั่งเฉพาะ คำสั่งเหล่านี้แสดงตามลำดับในตารางที่ 1 "x" หมายถึงบิตที่ไม่ควรเปลี่ยนแปลง "[" หมายถึงบิตเริ่มต้น และ "]" หมายถึงบิต STOP

บล็อก PDLY สร้างพัลส์สูงแบบแอกทีฟในระยะสั้นที่ขอบตกของสัญญาณ CLK/8 ซึ่งเรียกว่า !CLK/8 สัญญาณนั้นใช้สำหรับนาฬิกา DFF14 ที่ความถี่คงที่ เมื่อ I2C_SET สูงขึ้นแบบอะซิงโครนัส ขอบที่เพิ่มขึ้นถัดไปของ !CLK/8 จะทำให้ DFF14 ส่งออกเป็น HIGH ซึ่งจะทริกเกอร์ CNT5 OneShot OneShot ทำงานตามจำนวนรอบสัญญาณนาฬิกาที่ผู้ใช้เขียนตามที่ระบุในคำสั่ง "เขียนไปยัง CNT5" I2C ในตารางที่ 1 ในกรณีนี้คือ 10 รอบนาฬิกา OneShot อนุญาตให้ออสซิลเลเตอร์ 25 MHz ทำงานตามระยะเวลาที่แน่นอนและไม่มีอีกต่อไป ดังนั้น LUT0 แบบ 3 บิตจึงได้รับจำนวนรอบสัญญาณนาฬิกาที่เขียนไปยัง CNT5

รูปที่ 15 แสดงสัญญาณเหล่านี้ โดยที่นาฬิกาสีแดงเป็นสัญญาณที่ส่งไปยัง LUT0 แบบ 3 บิต ซึ่งส่งผ่านไปยัง CNT6 (ตัวนับ PWM_SET) จึงสร้างออฟเซ็ตสำหรับการสร้างรอบการทำงาน

ขั้นตอนที่ 9: การอ่านมาตรวัดรอบเครื่อง

การอ่านมาตรวัดรอบเครื่อง
การอ่านมาตรวัดรอบเครื่อง
การอ่านมาตรวัดรอบเครื่อง
การอ่านมาตรวัดรอบเครื่อง

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

ขั้นตอนที่ 10: การออกแบบวงจรภายนอก

การออกแบบวงจรภายนอก
การออกแบบวงจรภายนอก

วงจรภายนอกค่อนข้างง่าย มีปุ่มกดที่เชื่อมต่อกับ Pin6 ของ GreenPAK เพื่อสลับว่าอุปกรณ์นี้ถูกเลือกสำหรับการควบคุมแบบหมุนหรือไม่ และไฟ LED ที่เชื่อมต่อกับ Pin12 และ Pin13 เพื่อระบุว่าเมื่ออุปกรณ์ถูกเลือก

เนื่องจากพัดลมทำงานที่แรงดันไฟ 12 V จึงจำเป็นต้องมี FET คู่หนึ่งเพื่อควบคุมการสลับ Pin18 และ Pin19 ของ GreenPAK ขับเคลื่อน nFET เมื่อเปิด nFET มันจะดึงเกทของ pFET LOW ซึ่งเชื่อมต่อพัดลมกับ +12 V เมื่อปิด nFET ประตูของ PFET จะถูกดึงขึ้นโดยตัวต้านทาน 1 kΩ ซึ่งจะปลดพัดลม จาก +12 V.

ขั้นตอนที่ 11: การออกแบบ PCB

การออกแบบ PCB
การออกแบบ PCB

เพื่อสร้างต้นแบบการออกแบบนั้นได้ประกอบ PCB สองสามตัว PCB ทางด้านซ้ายคือ "ตัวควบคุมพัดลม" ซึ่งมีตัวเข้ารหัสแบบโรตารี่ แจ็ค 12 V SLG46108 GreenPAK และตัวเชื่อมต่อสำหรับบอร์ดฝ่าวงล้อม FT232H USB ถึง I2C PCB สองตัวทางด้านขวาคือ "Fan Boards" ซึ่งมี SLG46826 GreenPAK, ปุ่มกด, สวิตช์, LED และส่วนหัวของพัดลม

Fan Board แต่ละอันมีส่วนหัวของตัวผู้ที่หุ้มไว้ทางด้านซ้ายและส่วนหัวของตัวเมียอยู่ทางด้านขวาเพื่อให้สามารถผูกมัดด้วยดอกเดซี่ได้ แต่ละ Fan Board สามารถบรรจุทรัพยากรเพื่อควบคุมพัดลมสองตัวได้อย่างอิสระ

ขั้นตอนที่ 12: แอปพลิเคชัน C#

แอปพลิเคชัน C#
แอปพลิเคชัน C#

แอปพลิเคชัน C# ถูกเขียนขึ้นเพื่อเชื่อมต่อกับ Fan Boards ผ่านบริดจ์ FT232H USB-I2C แอปพลิเคชันนี้สามารถใช้เพื่อปรับความถี่ของพัดลมแต่ละตัวด้วยคำสั่ง I2C ที่แอปพลิเคชันสร้างขึ้น

แอปพลิเคชันส่ง Ping ที่อยู่ I2C ทั้งหมด 16 แห่งหนึ่งครั้งต่อวินาที และเติม GUI ด้วยที่อยู่รองที่มีอยู่ ในตัวอย่างนี้ Fan 1 (slave address 0001) และ Fan 3 (slave address 0011) ที่เชื่อมต่อกับบอร์ด การปรับรอบการทำงานของพัดลมแต่ละตัวสามารถทำได้โดยการเลื่อนแถบเลื่อนหรือโดยการพิมพ์ค่าตั้งแต่ 0-256 ในกล่องข้อความใต้แถบเลื่อน

บทสรุป

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

แนะนำ: