วิธีที่ง่ายที่สุดในการสร้าง PWM โดยไม่มีไมโครคอนโทรลเลอร์คืออะไร?


15

อะไรคือวิธีที่รวดเร็วและสง่างามในการสร้าง PWM โดยไม่ใช้ไมโครคอนโทรลเลอร์เพื่อควบคุมเซอร์โวมอเตอร์? ด้วยโพเทนชิออมิเตอร์หรือวิธีอื่น ๆ ในการควบคุมรอบการทำงานด้วยระยะเวลาการแก้ไข

  • ขอโทษเกี่ยวกับความยุ่งเหยิงฉันต้องการควบคุมเซอร์โวงานอดิเรก

คุณหมายถึงการควบคุมมอเตอร์เป็นส่วนหนึ่งของระบบควบคุมเซอร์โวหรือคุณกำลังถามเกี่ยวกับการควบคุม "อดิเรกเซอร์โว" หรือไม่? ดูเพิ่มเติมที่คำตอบของฉัน
Olin Lathrop

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

2
@ThePhoton ถ้าเขาควบคุม servo อดิเรก, PWM เป็นสิ่งที่จำเป็นในการเป็นสัญญาณควบคุม
นิคจอห์นสัน

หากคุณลดความต้องการในช่วงเวลาคงที่ตัวกำหนดเดลตาซิกม่าจะเป็นวิธีแก้ปัญหาที่ง่ายมาก ฉันเคยเห็นการใช้งานด้วย opamp เดี่ยวและตัวต้านทาน / ตัวเก็บประจุจำนวนหนึ่ง สมมุติว่าคุณไม่ได้พูดถึง RC-servo
jippie

1
@jippie - oscillator delta-sigma คืออะไร? ฉันรู้ว่าเดลต้าซิกมา ADC ต้องการออสซิลเลเตอร์ แต่ฉันคิดเสมอว่ามันเป็นเรื่องปกติเพราะมันไม่ได้เป็นส่วนหนึ่งของตัวแปลง
stevenvh

คำตอบ:


25

ผมขอแนะนำให้ (หอบ!) 555 จับเวลาในโหมด คุณจะพบทุกสิ่งที่คุณต้องการในลิงค์ แต่ฉันคัดลอกมาที่นี่เพื่อคุณ!

โหมด Astable ช่วยให้คุณมีความถี่ PWM ผันแปรและอนุญาตให้ปรับรอบการทำงานได้เช่นกัน (สมการสูงและต่ำในลิงค์)

วงจร:

555 Timer, astable mode

หมายเหตุ: ฉันจะเพิ่มฝาอิเล็กโทรไลต์ใน Vcc (ตะกั่วที่เป็นบวก) และ GND (ตะกั่วที่เป็นลบ) เพื่อลดผลกระทบของ dips ในแรงดันไฟฟ้าของแหล่งจ่ายไฟ

ความถี่ PWM:

Output frequency of 555 Timer in astable mode

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

555 เป็นชิปแอนะล็อกที่ยอดเยี่ยมและทำในสิ่งที่คุณต้องการ ฉันหวังว่าผู้คนจะไม่เกลียดพวกเขามากนัก


2
ฉันชอบ 555s แต่ฉันคิดว่า @supercat นั้นถูกต้องในที่เดียว 555 จะไม่สามารถให้สัญญาณความถี่คงที่และตัวแปรอัตราส่วนหน้าที่คุณได้ C ได้รับการเรียกเก็บเงินผ่าน R1 + R2 และปล่อยผ่าน R2 หากคุณเพิ่ม R2 คุณจะเพิ่มเวลาเปิดและปิดดังนั้นจึงเป็นช่วงเวลา หากคุณเพิ่ม R1 คุณจะเพิ่มเฉพาะเวลา แต่เพิ่มระยะเวลา หากคุณเพิ่ม C คุณจะเพิ่มขึ้นตลอดเวลารวมถึงระยะเวลา คุณต้องการสอง 555 วินาที หนึ่งในโหมด Astable ที่จะกำหนดระยะเวลาเรียกหนึ่งในโหมด monostable ที่จะกำหนดอัตราส่วนหน้าที่
Telaclavo

5
"คุณจะพบทุกสิ่งที่คุณต้องการในลิงค์" ไม่นั่นไม่ใช่วิธีตอบที่ถูกต้อง ระบุรายละเอียดที่นี่
stevenvh

1
ฉันไม่ได้เกลียด 555 ผมก็หวังว่าคนจะไม่ได้หมายถึงพวกเขาเป็นที่ดีที่สุดวิธีแก้ปัญหาสำหรับทุกอย่าง ซิงเกิ้ล 555 ไม่ใช่วิธีที่ดีที่สุดในการควบคุมเซอร์โวอดิเรก
stevenvh

1
@Telaclavo - คุณถูกต้อง; คุณไม่สามารถเปลี่ยนรอบการทำงานและรักษาความถี่ให้คงที่ได้ อย่างไรก็ตามตามที่ WoutervanOoijen กล่าวถึงคุณไม่จำเป็นต้องมีความถี่คงที่อย่างเข้มงวดในการเรียกใช้เซอร์โว การเปลี่ยนแปลงของวัฏจักรหน้าที่อาจทำให้เกิดการโยกเยกประมาณ 10-20% (ประมาณคร่าว ๆ ) ในความถี่พัลส์ซึ่งควรแม่นยำพอสำหรับเซอร์โวส่วนใหญ่ และอีกครั้งคุณไม่จำเป็นต้องปรับรอบการทำงานเพื่อควบคุมเซอร์โวอย่างไรก็ตาม
kevlar1818

2
@stevenvh คุณแจ้งให้เราทราบเมื่อ Wikipedia ตาย แม้ว่ามันจะเป็นไปตามที่คณบดีแสดงความคิดเห็นข้างต้น แต่ก็เป็นไปได้ยากที่จะหาหนังสือเล่มเก่าบล็อกเล็ก ๆ หรือเว็บไซต์งานอดิเรกที่มีข้อมูลเกี่ยวกับพวกเขา
kevlar1818

8

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

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

ที่เพิ่ม:

Mark Rages ชี้ให้เห็นว่าเมื่อคุณพูดว่า "servo motor" คุณอาจหมายถึงมอเตอร์อดิเรกที่ควบคุมตำแหน่งที่ใช้กับเครื่องบินจำลองและสิ่งที่คล้ายกัน คำตอบของฉันใช้กับการควบคุมมอเตอร์โดยสมมติว่าคุณมีแรงดันไฟฟ้าแบบอะนาล็อกตามสัดส่วนกับความยากในการขับเคลื่อนมอเตอร์ มันใช้ไม่ได้กับ "servos งานอดิเรก" เหล่านี้ สิ่งเหล่านั้นไม่ได้ถูกควบคุมโดย PWM ในแง่สามัญสำนึกของคำนั้น แต่ด้วยความกว้างของพัลส์ที่โดยทั่วไปแล้วจะต้องมีขนาดตั้งแต่ 1 ถึง 2 ms ทำซ้ำทุก ๆ 20 ถึง 50 มิลลิวินาทีหรือมากกว่านั้น หากคำถามนี้เกี่ยวกับเซอร์โวงานอดิเรกจริง ๆ ควรแก้ไขให้ชัดเจน


ขณะนี้ทำงานได้สำเร็จเป็นสิ่งสำคัญที่จะต้องทราบว่า @pstan ต้องการขับเซอร์โวดังนั้นการมีฟังก์ชั่นตัวสร้างฟังก์ชั่นในการติดตั้งของเขาอาจจะไม่สามารถพกพาได้
kevlar1818

1
รอบการทำงานของเซอร์โวมอเตอร์นั้นค่อนข้างต่ำเช่น 10% หรือน้อยกว่า และเซอร์โวใช้ความกว้างพัลส์โดยตรงไม่ใช่ค่าเฉลี่ยดังนั้นจึงควรใช้วงจรที่แยกความกว้างของพัลส์ออกจากอัตราการทำซ้ำ
markrages

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

@ Markrages: ใช่มั้ย มอเตอร์ดูค่าเฉลี่ยของรถไฟพัลส์หากมันเร็วพอ สองสามเฮิร์ตซ์นั้นดีพอสำหรับมอเตอร์ส่วนใหญ่ ส่วนเซอร์โวสามารถทำได้โดยชุดควบคุมซึ่ง OP ไม่ได้ถาม ดูเหมือนว่าเขามีระดับแอนะล็อกตามสัดส่วนแล้วว่าจะขับเคลื่อนมอเตอร์ได้อย่างไร
แลงทรอพ

@ Markrages: มันเพิ่งเกิดขึ้นกับฉันว่าคุณกำลังพูดถึงเซอร์โวงานอดิเรกที่ต้องการชีพจร 1-2 มิลลิวินาทีทุก ๆ 20 มิลลิวินาที? ความคิดเห็นของคุณทำให้รู้สึกบางอย่างในแง่นั้น แต่ OP ไม่ได้พูดถึงเซอร์โวงานอดิเรกเลย
Olin Lathrop

7

คลื่นสามเหลี่ยม เปรียบเทียบ เกณฑ์การควบคุม นั่นเป็นวิธีพื้นฐานในการทำ

หากคุณต้องการควบคุมเซอร์โวงานอดิเรกอย่างไรก็ตามนี่ไม่ใช่วิธีที่ดีที่สุด วัฏจักรหน้าที่แตกต่างกันไประหว่าง 5% ถึง 10% (ความกว้างพัลส์ 1ms ถึง 2ms ในระยะเวลา 20ms) ซึ่งสั้นและเป็นไปได้มากว่าคุณต้องการควบคุมด้วยความแม่นยำ บน 5VPP

enter image description here

เริ่มแรกสร้างคลื่นสี่เหลี่ยมที่ 50Hz วิธีที่ง่ายที่สุด:

enter image description here

Ω

REXTCEXT

T=REXT×CEXT

เวลาเข้า μΩ

ในการรับความกว้างพัลส์ที่แตกต่างกันระหว่าง 1ms ถึง 2ms คุณต้องใช้ C = 100nF และ R = 10kΩΩ

ฉันสามารถทำได้ด้วยสอง LM555 แต่ฉันต้องการส่วนประกอบภายนอกเพิ่มเติม

แก้ไข (เกี่ยวกับไมโครคอนโทรลเลอร์)
ฉันเห็นด้วยกับแลง (ดูความคิดเห็น) ว่าการยกเว้นไมโครคอนโทรลเลอร์เป็นสายตาสั้น (Olin กล่าวว่า "โง่") มีเวลาที่การพัฒนาไมโครคอนโทรลเลอร์มีความซับซ้อน แต่วันนี้มันไม่เป็นความจริงอีกต่อไป นอกจากนี้คุณยังสามารถมีอินเทอร์เฟซการเขียนโปรแกรมสำหรับยูโรสองสาม วิธีแก้ปัญหานั้นจะดูง่ายจนไม่มีวิธีแก้ปัญหาที่ไม่ใช่ตัวควบคุมที่สามารถแข่งขันได้: คุณใช้ATTiny5 (Olin ใช้ PIC10F220) ใน SOT23-6 เชื่อมต่อตัวเก็บประจุตัวแยกสัญญาณกับการเชื่อมต่อพลังงานและโพเทนมิเตอร์กับอินพุต ADC แค่นั้นแหละ! ส่วนประกอบ 3 (สาม) การแปลงการอ่าน ADC ไปยังเอาต์พุตความกว้างพัลส์นั้นง่ายมากจนเกือบไร้สาระแม้แต่สำหรับโปรแกรมเมอร์เริ่มต้น

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

บันทึก
จากคำถามอื่นของคุณฉันเห็นว่าคุณทำใช้ไมโครคอนโทรลเลอร์ ทำไมคุณต้องการหลีกเลี่ยงพวกเขาที่นี่?


วิธีการรับคลื่นสามเหลี่ยมคืออะไร
m.Alin

1
@ m.Alin - หากคุณต้องการรูปสามเหลี่ยมที่สะอาดมากนี่เป็นวิธีที่เหมาะสม แต่อินเวอร์เตอร์อินพุตในออสซิลเลเตอร์ของฉันก็ประมาณสามเหลี่ยมได้เช่นกัน
stevenvh

1
การพูดในพื้นที่ 555 มีราคาถูกกว่า 74HCT1G14 ที่นี่ +1 BTW. \
มาตรฐาน Sandun

3
@stevenvh "ถ้าคุณต้องการรูปสามเหลี่ยมที่สะอาดมากนี่เป็นวิธีที่เหมาะสม" โดยเหตุผลของคุณสิ่งนี้ไม่สามารถยอมรับได้อย่างสมบูรณ์ โปรดระบุสิ่งนี้ไว้ในคำตอบที่ให้ข้อมูลและครบถ้วน
kevlar1818

2
@pstan - หากรายละเอียดของคุณไม่สูงเกินไปคุณอาจใช้วงจร 555 มันยังห่างไกลจากความสมบูรณ์แบบ: ความถี่แตกต่างกันไปตามวัฏจักรหน้าที่และการควบคุมไม่ได้เป็นเชิงเส้น ตัวสร้างรูปสามเหลี่ยม + ตัวเปรียบเทียบเปรียบเทียบแก้ไขข้อเสียเหล่านั้น
stevenvh

4

วิธีที่ง่ายที่สุดในการสร้างสัญญาณ PWM คือการป้อนคลื่นฟันเลื่อยหรือคลื่นสามเหลี่ยมลงในอินพุตหนึ่งของตัวเปรียบเทียบแบบอะนาล็อกและแรงดันไฟฟ้าควบคุมในอีกอันหนึ่ง หากไม่มีคลื่นสามเหลี่ยมบริสุทธิ์อันใดอันหนึ่งอาจประมาณหนึ่งคลื่นได้โดยการส่งคลื่นสี่เหลี่ยมผ่านตัวกรอง RC เพื่อให้เอาท์พุทของตัวกรองเหวี่ยงระหว่างประมาณ 1 / 4VDD และ 3 / 4VDD จากนั้นปรับแรงดันไฟฟ้าควบคุมไป เข้าไปในตัวเปรียบเทียบเพื่อให้แรงดันไฟฟ้าควบคุมที่ควรทำหน้าที่ 0.01% รอบการทำงานจะถูกแปลเป็นแรงดันไฟฟ้าต่ำสุดของคลื่นสี่เหลี่ยมที่กรองและแรงดันไฟฟ้าควบคุมที่ควรให้ค่ารอบการทำงาน 99.99% จะถูกแปลเป็นแรงดันสูงสุดของตัวกรอง คลื่นสี่เหลี่ยม สิ่งนี้จะให้ความกว้างของพัลส์ที่ไม่ได้เป็นสัดส่วนเชิงเส้นกับแอมพลิจูด แต่ใกล้พอสำหรับหลาย ๆ วัตถุประสงค์


1
และนี่คือสิ่งที่วงจร NE555 ทำตามที่เสนอโดย kevlar1818 ...
Cees Meijer

2
@CeesMeijer: ผู้โพสต์ถามถึงรอบการทำงานที่ผันแปรและระยะเวลาที่แน่นอน ฉันไม่ทราบวิธีการใช้ 555 เดียวในการแปลงแรงดันไฟฟ้าควบคุมเป็นคลื่นความถี่รอบหน้าที่แปรผัน มันสามารถให้บริการได้เป็นอย่างดีในการสร้างคลื่นสามเหลี่ยมไอซีเพื่อป้อนเข้าไปในตัวเปรียบเทียบ
supercat

เป็นเวลา 20 ปีแล้วที่ฉันสร้างวงจรนี้ขึ้นมาดังนั้นฉันจึงต้องมองหามัน และแน่นอนว่าคุณพูดถูก ฉันใช้ทริกเกอร์ภายนอกเพื่อรับความถี่คงที่ คุณสามารถใช้ 555 วินาทีในการทำสิ่งนั้น
Cees Meijer

2

ผมขอแนะนำให้ใช้แรงดันต่ำ (BiCMOS) การควบคุมแหล่งจ่ายไฟ IC เช่นUCC3803 ความถี่ในการทำงานสามารถตั้งค่าได้ง่ายด้วย R และ C ที่ง่ายและการควบคุมรอบการทำงานทำได้ง่ายด้วยโพเทนชิออมิเตอร์ มันจะทำงานบนราง 5V

ตัดตอนมาจากแผ่นข้อมูล TI UC3842

UCC3803 สามารถใช้งานร่วมกับพินกับชุดควบคุม PWM ของ UCx84x ได้ หากคุณต้องการทำ PWM อย่างง่ายคุณสามารถใช้วงจรข้างต้นโดยไม่ใช้ R1, 2N2222 และ ISENSE 5k ปรับหม้อ (เพียงผูกขา 3 กับพื้น) คุณยังสามารถละเว้นตัวต้านทาน 4.7k สองตัวในซีรีส์ที่มีแอมป์ปรับข้อผิดพลาดและไปที่ Vref และ Gnd โดยตรงหรือใช้ตัวแบ่งแรงดันไฟฟ้าที่ชัดเจนหากไม่จำเป็นต้องทำการปรับ (คุณไม่ได้ระบุหากคุณต้องการเปลี่ยนรอบการทำงานอย่างง่ายดาย)

IC มีความสามารถในการขับขี่ประมาณ 1A ของกระแสไฟฟ้า (ถ้าเซอร์โวมอเตอร์ของคุณมีอินพุต PWM นี่เป็นจุดที่สงสัย)


"อาจต้องใช้ไดรเวอร์ภายนอกเพื่อจ่ายพลังงานให้กับมอเตอร์" คุณแน่ใจไหม? ฉันคิดเสมอว่าอินพุต PWM เป็นเพียงระดับสัญญาณต่ำ สำหรับพลังงานเซอร์โวมีการเชื่อมต่อที่สาม
stevenvh

นอกจากนี้ฉันเพิ่งจำได้ว่ารอบการทำงานเป็นเพียง 5 ถึง 10% นั่นเป็นวิธีที่เหมาะสมในการจ่ายพลังงาน
stevenvh

นี่เป็นสิ่งที่ดี แต่ยังนับส่วนประกอบภายนอกจำนวนมาก
มาตรฐาน Sandun

ดูเหมือน UEMIG: EMI Generator ที่ไม่จำเป็น :-(
stevenvh

ดูเหมือนว่าต้องมีอินพุต 10V ขั้นต่ำ อาจไม่ใช่ตัวเลือกที่ดีที่สุด ...
พ.ย. stevenvh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.