
สารบัญ:
- ขั้นตอนที่ 1: ไดอะแกรมบล็อกระบบ
- ขั้นตอนที่ 2: SLG46108 การออกแบบตัวถอดรหัสแบบหมุน
- ขั้นตอนที่ 3: การออกแบบตัวควบคุมพัดลม SLG46826
- ขั้นตอนที่ 4: การสร้าง PWM พร้อมตัวนับออฟเซ็ต
- ขั้นตอนที่ 5: การควบคุมวัฏจักรหน้าที่ด้วยการฉีดนาฬิกาและการข้ามนาฬิกา
- ขั้นตอนที่ 6: อินพุตปุ่ม
- ขั้นตอนที่ 7: การป้องกันการโรลโอเวอร์วัฏจักรหน้าที่
- ขั้นตอนที่ 8: การควบคุมวัฏจักรหน้าที่ด้วย I2C
- ขั้นตอนที่ 9: การอ่านมาตรวัดรอบเครื่อง
- ขั้นตอนที่ 10: การออกแบบวงจรภายนอก
- ขั้นตอนที่ 11: การออกแบบ PCB
- ขั้นตอนที่ 12: แอปพลิเคชัน C#
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

คำแนะนำนี้อธิบายการสร้างตัวควบคุม 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 การออกแบบตัวถอดรหัสแบบหมุน



ใช้ตัวเข้ารหัสแบบหมุนเพื่อเพิ่มหรือลดรอบการทำงานของพัดลมด้วยตนเอง อุปกรณ์นี้ส่งสัญญาณพัลส์บนเอาต์พุตช่อง 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

ขั้นตอนที่ 4: การสร้าง 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 ไปยัง 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 ทางด้านซ้ายคือ "ตัวควบคุมพัดลม" ซึ่งมีตัวเข้ารหัสแบบโรตารี่ แจ็ค 12 V SLG46108 GreenPAK และตัวเชื่อมต่อสำหรับบอร์ดฝ่าวงล้อม FT232H USB ถึง I2C PCB สองตัวทางด้านขวาคือ "Fan Boards" ซึ่งมี SLG46826 GreenPAK, ปุ่มกด, สวิตช์, LED และส่วนหัวของพัดลม
Fan Board แต่ละอันมีส่วนหัวของตัวผู้ที่หุ้มไว้ทางด้านซ้ายและส่วนหัวของตัวเมียอยู่ทางด้านขวาเพื่อให้สามารถผูกมัดด้วยดอกเดซี่ได้ แต่ละ Fan Board สามารถบรรจุทรัพยากรเพื่อควบคุมพัดลมสองตัวได้อย่างอิสระ
ขั้นตอนที่ 12: แอปพลิเคชัน 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 ด้วยตัวนับออฟเซ็ตคู่หนึ่ง และวิธีการเพิ่มและลดรอบการทำงานของสัญญาณนั้นโดยไม่ต้องโรลโอเวอร์
แนะนำ:
การทดลอง PWM มอเตอร์ DC แบบสุ่ม + การแก้ไขปัญหาตัวเข้ารหัส: 4 ขั้นตอน

การทดลองสุ่ม PWM ของมอเตอร์ DC แบบสุ่ม + การแก้ไขปัญหาตัวเข้ารหัส: มีบ่อยครั้งที่ขยะของใครบางคนเป็นสมบัติของผู้อื่น และนี่เป็นหนึ่งในช่วงเวลาเหล่านั้นสำหรับฉัน หากคุณติดตามฉันมาตลอด คุณคงรู้ว่าฉันทำโปรเจ็กต์ขนาดใหญ่เพื่อสร้าง CNC เครื่องพิมพ์ 3 มิติของฉันเองจากเศษวัสดุ ชิ้นส่วนเหล่านั้น
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน

PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
DIY 2000 Watts PWM Speed Controller: 8 ขั้นตอน (พร้อมรูปภาพ)

DIY 2000 Watts PWM Speed Controller: ฉันกำลังพยายามแปลงจักรยานของฉันให้เป็นจักรยานไฟฟ้าโดยใช้มอเตอร์ DC สำหรับกลไกประตูอัตโนมัติ และฉันได้ผลิตก้อนแบตเตอรี่ที่พิกัด 84v DC ด้วย ตอนนี้ เราต้องการตัวควบคุมความเร็วที่สามารถจำกัดปริมาณพลังงานที่ลดลง
DIY VMix Control Surface 5 อินพุตช่องสัญญาณ: 6 ขั้นตอน

DIY VMix Control Surface 5 อินพุตช่องสัญญาณ: สร้าง vMix Controller 5 อินพุตโดยใช้ Arduino Nano คุณสมบัติ: 5 ปุ่มดูตัวอย่าง 5 ปุ่มที่ใช้งาน 2 ปุ่มเอฟเฟกต์ 5 อินพุตระดับเสียง ระดับเสียงหลัก T-BAR ให้สร้าง
Alexa Voice Control DIY: 7 ขั้นตอน (พร้อมรูปภาพ)

Alexa Voice Control DIY: สวัสดี นี่เป็นคำสั่งแรกของฉัน ฉันจะแสดงวิธีสร้างสวิตช์ควบคุมด้วยเสียงสำหรับ Amazon Alexa ซึ่งสามารถทำงานร่วมกับ Google Assistant ได้ กรุณาลงคะแนนให้ฉัน