เครื่องปรับกำลังไฟฟ้าสำหรับหัวแร้ง
ตัวควบคุมนี้ช่วยให้คุณสามารถควบคุมกำลังไฟที่โหลดได้สองวิธี
สำหรับวิธีที่สอง การกระจายพัลส์จะพบโดยใช้อัลกอริทึม Bresenham ซึ่งเป็นซอร์สโค้ด การตัดสินใจครั้งนี้ฉันเอามาจากบทความและโพสต์ในฟอรัมของผู้เป็นที่เคารพอย่างสมบูรณ์ ริดิโก เลโอนิด อิวาโนวิช, ขอบคุณมาก!
ตัวควบคุมถูกควบคุมโดยปุ่มสามปุ่ม:
ตัวควบคุมช่วยให้คุณจัดเก็บการตั้งค่าพลังงานด่วน 3 แบบ
มีฟังก์ชั่นปิดเครื่องอัตโนมัติหากไม่มีการกดปุ่มใด ๆ เป็นเวลา 30 นาที ไฟแสดงสถานะจะเริ่มกระพริบ จากนั้นหลังจากผ่านไป 10 นาที โหลดจะปิดลง
บล็อกไดอะแกรมของการควบคุมในโหมดการตั้งค่า
INC - ขั้นตอนที่จะเพิ่ม/ลดกำลังโดยใช้ปุ่มบวก/ลบ
_t_ - การควบคุมฟังก์ชั่นปิดเครื่องอัตโนมัติเปิดใช้งาน, ปิดการใช้งานปิด ดังที่เห็นได้จากแผนภาพบล็อก การตั้งค่าพลังงานอย่างรวดเร็วสำหรับโหมด PAU และ FI(PRC) จะเหมือนกัน เนื่องจากมีช่วงอยู่ที่ 0..100 FI(NUM) มีการตั้งค่าของตัวเอง เนื่องจากมีช่วงอยู่ที่ 0..145
สามารถเปิดใช้งานตัวควบคุมได้อย่างรวดเร็ว
ในเหล็ก
บทนำ ในการผลิต (ในระบบควบคุมอัตโนมัติ) และในชีวิตประจำวัน มักจำเป็นต้องควบคุมพลังงานที่จ่ายให้กับโหลด ตามกฎแล้วโหลดจะดำเนินการจากเครือข่าย เครื่องปรับอากาศ- ดังนั้นงานจึงค่อนข้างซับซ้อนกว่าเมื่อเปรียบเทียบกับการปรับกำลังของโหลดที่ทำงานที่แรงดันไฟฟ้าคงที่ เมื่อโหลดทำงานที่แรงดันไฟฟ้าคงที่ จะใช้พัลส์ไวด์มอดูเลชั่น (PWM) และโดยการเปลี่ยนรอบการทำงาน กำลังที่จ่ายให้กับโหลดก็จะเปลี่ยนไปตามไปด้วย หากคุณใช้การควบคุม PWM เพื่อควบคุมพลังงานในเครือข่าย AC สวิตช์ที่คุณควบคุมสัญญาณ (เช่น ไทรแอก) จะเปิดและส่งผ่านส่วนของไซน์ซอยด์ที่มีพลังงานต่างกันเข้าไปในโหลด ฐานองค์ประกอบและการประกอบตัวควบคุม รูปที่ 1 ไฟฟ้า แผนภาพวงจรเครื่องควบคุม ในการดำเนินโครงการนี้มีการใช้สิ่งต่อไปนี้: Pinboard บนไมโครคอนโทรลเลอร์ AVR ATmega16, Philips BT138 12A triac, สะพานไดโอด DB105, ออปโตซิมิสเตอร์ MOC3022, ออปโตคัปเปลอร์ PC817, ความต้านทาน 220 โอห์ม - 10 kOhm, โพเทนชิออมิเตอร์ 5 kOhm การเชื่อมต่อขององค์ประกอบจะแสดงในรูปที่ 1 หลักการทำงานของอุปกรณ์ ตัวควบคุมนี้ออกแบบมาเพื่อทำงานกับโหลดที่ใช้งานซึ่งเชื่อมต่อกับเครือข่าย 220 V ออปโตคัปเปลอร์ใช้เพื่อกำหนดจุดเริ่มต้นของแต่ละครึ่งคลื่น ดังนั้นที่เอาต์พุตของเครื่องตรวจจับศูนย์เราจะได้รับพัลส์บวกสั้น ๆ ในขณะที่แรงดันไฟฟ้าในเครือข่ายผ่าน 0 สัญญาณจากเครื่องตรวจจับศูนย์เชื่อมต่อกับอินพุตขัดจังหวะภายนอกของ MK เพื่อกำหนดจุดเริ่มต้นของใหม่ ครึ่งคลื่นและเปิด triac ตามเวลาที่ต้องการหรือครึ่งรอบจำนวนหนึ่ง ในการปลดล็อคไทรแอก แรงดันไฟฟ้าจะถูกจ่ายไปที่อิเล็กโทรดควบคุมผ่านออปโตซิมิเตอร์ที่สัมพันธ์กับแคโทดทั่วไป วิธีเฟส ด้วยวิธีเฟสซึ่งเปลี่ยนค่าการหน่วงเวลาของตัวจับเวลาโดยใช้ไมโครคอนโทรลเลอร์ ADC (ในกรณีของเราคือโพเทนชิออมิเตอร์) เราจะเปลี่ยนการหน่วงเวลาการเปิดของ triac ตามลำดับหลังจากเริ่มครึ่งคลื่น ยิ่งความล่าช้านานขึ้น ส่วนที่เล็กกว่าของครึ่งคลื่นจะถูกส่งผ่านไปยังโหลด ดังนั้นเราจึงได้รับพลังงานน้อยลง และในทางกลับกัน เมื่อทราบความถี่สัญญาณนาฬิกาของไมโครคอนโทรลเลอร์แล้วจะคำนวณความล่าช้า ที่ความถี่ แรงดันไฟหลักเวลาครึ่งรอบ 50 Hz จะเป็น 0.01 วินาที นั่นคือหาก triac เปิดหลังจาก 0.003 วินาที จะพลาดประมาณ 2/3 ของครึ่งคลื่น และกำลังจะเป็น 70% หากเปิดไทรแอกโดยไม่ชักช้า ครึ่งคลื่นทั้งหมดจะถูกส่งผ่าน และกำลังขับจะเป็น 100% โปรแกรมถูกนำไปใช้งานโดยใช้วิธีการควบคุมโหลดเฟส การเขียนโปรแกรมดำเนินการด้วย C++ ในสภาพแวดล้อม CodeVisionAVR ค่าที่อ่านได้จากออสซิลโลสโคปบนโหลดจะแสดงในรูปที่ 2 รูปที่ 2 การปรับกำลังโดยใช้วิธีเฟส การคำนวณความล่าช้าในการเปิดไทรแอก เนื่องจากฟังก์ชันแรงดันไฟฟ้าไม่เป็นเชิงเส้น กล่าวคือ พื้นที่ใต้ไซนูซอยด์ในช่วงเวลาเดียวกันจะแตกต่างกัน และกำลังจะแตกต่างกันตามไปด้วย ดังนั้นความล่าช้าจึงคำนวณโดยคำนึงถึงความไม่เชิงเส้นของแรงดันไฟฟ้า รูปที่ 3 แสดงคลื่นไซน์ของเครือข่ายและช่วงเวลาล่าช้าที่คำนวณในตารางที่ 1 แสดงค่าความล่าช้าห้าค่าแรกของหนึ่งร้อยเปอร์เซ็นต์ รูปที่ 3 การปรับโดยวิธีเฟส ตารางที่ 1 การคำนวณความล่าช้าในการเปิดไตรแอค จำนวนจุดครึ่งคลื่น เวลาเป็นไมโครวินาที ไซน์ของจุด 0 0 0 1 638 0.199 2 903 0.279 3 1108 0.341 4 1282 0.391 5 1436 0.435 วิธีเบรเซนแฮม มี ยังเป็นวิธีการควบคุมกำลังตามหลักการจ่ายสำหรับโหลดแรงดันไฟฟ้าหลักหลายครึ่งรอบตามด้วยการหยุดชั่วคราว (รูปที่ 4) ช่วงเวลาการสลับของ triac เกิดขึ้นพร้อมกับช่วงเวลาที่แรงดันไฟหลักข้ามศูนย์ ดังนั้นระดับการรบกวนทางวิทยุจึงลดลงอย่างรวดเร็ว การใช้ไมโครคอนโทรลเลอร์ทำให้สามารถใช้อัลกอริธึม Bresenham เพื่อการกระจายพัลส์ที่สม่ำเสมอ อย่างไรก็ตาม มีความถี่ในการสวิตชิ่งกระแสในโหลดลดลงเมื่อเปรียบเทียบกับการควบคุมเฟส ที่ต้องการสำหรับการควบคุมโหลด พลังงานสูง(จาก 1 กิโลวัตต์) โปรแกรมถูกนำไปใช้ และเช่นเดียวกับในวิธีเฟส จำนวนครึ่งรอบที่พลาดถูกเปลี่ยนแปลงโดยใช้ ADC ช่วงการส่งสัญญาณถูกเลือกจากทุกๆ ครึ่งคลื่น ไปจนถึงการส่งสัญญาณจากครึ่งคลื่นหนึ่งถึงสิบ รูปที่ 4 แสดงภาพออสซิลโลสโคปของการใช้งานคอนโทรลเลอร์โดยใช้วิธี Bresenham รูปที่ 4. การควบคุมกำลังโดยใช้วิธี Bresenham สรุป ตัวควบคุมเป็นแบบสากลซึ่งทำให้สามารถใช้งานได้ทั้งในชีวิตประจำวันและในอุตสาหกรรม การมีการควบคุมไมโครคอนโทรลเลอร์ช่วยให้คุณสามารถกำหนดค่าระบบใหม่ได้อย่างรวดเร็วซึ่งทำให้อุปกรณ์มีความยืดหยุ่น อัลกอริธึมการควบคุมสองชุดจะช่วยให้สามารถใช้คอนโทรลเลอร์ในช่วงพลังงานที่กว้างได้
อัลกอริธึมของ Bresenham เป็นหนึ่งในอัลกอริธึมที่เก่าแก่ที่สุดในคอมพิวเตอร์กราฟิก ดูเหมือนว่าเราจะใช้อัลกอริธึมในการสร้างเส้นแรสเตอร์เมื่อสร้างเตาบัดกรีที่บ้านได้อย่างไร ปรากฎว่ามันเป็นไปได้และด้วยผลลัพธ์ที่ดีมาก เมื่อมองไปข้างหน้า ฉันจะบอกว่าอัลกอริธึมนี้ป้อนเข้าสู่ไมโครคอนโทรลเลอร์ 8 บิตที่ใช้พลังงานต่ำได้เป็นอย่างดี แต่สิ่งแรกก่อน
อัลกอริธึมของเบรเซนแฮมเป็นอัลกอริธึมที่กำหนดว่าจุดใดบนแรสเตอร์สองมิติจำเป็นต้องแรเงาเพื่อให้ได้ค่าประมาณอย่างใกล้ชิดของเส้นตรงระหว่างจุดที่กำหนดสองจุด สาระสำคัญของอัลกอริทึมคือสำหรับแต่ละคอลัมน์ เอ็กซ์(ดูภาพ) กำหนดว่าเส้นไหน ยใกล้กับเส้นมากที่สุดแล้วลากจุด
ตอนนี้เรามาดูกันว่าอัลกอริทึมดังกล่าวจะช่วยเราในการควบคุมองค์ประกอบความร้อนในเตาไฟฟ้าได้อย่างไร
องค์ประกอบความร้อนใช้พลังงานจากแรงดันไฟหลัก 220V/50Hz ลองมาดูกราฟกัน
เมื่อใช้แรงดันไฟฟ้าดังกล่าวกับอินพุตของเครื่องทำความร้อนไฟฟ้าในรูปแบบบริสุทธิ์ เราจะได้รับพลังงานความร้อน 100% ที่เอาต์พุต มันง่ายมาก
จะเกิดอะไรขึ้นหากคุณใช้แรงดันไฟหลักเพียงครึ่งคลื่นบวกกับอินพุตขององค์ประกอบความร้อน ถูกต้อง เราได้เอาท์พุตความร้อน 50%
หากเราใช้ทุกๆ ครึ่งคลื่นที่สาม เราจะได้พลัง 33%
ตามตัวอย่าง ลองพิจารณาการไล่ระดับ 10% ของกำลังเอาท์พุตและช่วงเวลา 100 มิลลิวินาที ซึ่งเทียบเท่ากับ 10 ครึ่งคลื่นของแรงดันไฟหลัก ลองวาดตารางขนาด 10x10 แล้วจินตนาการว่าแกนนั้น ยนี่คือแกนของค่ากำลังไฟฟ้าเอาท์พุต ลองวาดเส้นตรงจาก 0 ถึงค่ากำลังที่ต้องการ
คุณกำลังติดตามการเสพติดของคุณหรือไม่?
เมื่อเพิ่มช่วงเวลาเป็น 1 วินาที คุณสามารถได้รับการไล่ระดับของกำลังเอาต์พุต 1% ผลลัพธ์จะเป็นตารางขนาด 100x100 พร้อมผลลัพธ์ที่ตามมาทั้งหมด
และตอนนี้สำหรับสิ่งดีๆ:
อัลกอริธึม Bresenham สามารถสร้างเป็นวงในลักษณะที่แต่ละขั้นตอนตามแนวแกน เอ็กซ์เพียงติดตามค่าความผิดพลาด ซึ่งหมายถึง - ระยะห่างแนวตั้งระหว่างค่าปัจจุบัน ยและค่าที่แน่นอน ยสำหรับปัจจุบัน x- เมื่อใดก็ตามที่เราเพิ่มขึ้น xเราเพิ่มค่าความผิดพลาดตามจำนวนความชัน หากข้อผิดพลาดเกิน 0.5 เส้นจะเข้าใกล้จุดถัดไปมากขึ้น ยดังนั้นเราจึงเพิ่มขึ้น ยทีละหนึ่ง (อ่าน - เราข้ามแรงดันไฟฟ้าครึ่งคลื่น) ในขณะเดียวกันก็ลดค่าข้อผิดพลาดลง 1 พร้อมกัน
วิธีนี้สามารถลดลงเป็นวัฏจักรได้อย่างง่ายดาย การบวกจำนวนเต็ม(เพิ่มเติมในภายหลังเมื่ออธิบายอัลกอริธึมการทำงานของ MK ในบทความถัดไป) ซึ่งเป็นข้อดีที่ชัดเจนสำหรับไมโครคอนโทรลเลอร์
ฉันไม่ได้ตั้งใจทำให้คุณเป็นภาระกับสูตร อัลกอริธึมเป็นพื้นฐานและง่ายต่อการใช้ Google ฉันแค่อยากจะแสดงความเป็นไปได้ของการประยุกต์ในการออกแบบวงจร เพื่อควบคุมโหลดจะถูกใช้ แผนภาพทั่วไปการเชื่อมต่อออปโตคัปเปลอร์ triac MOC3063 กับเครื่องตรวจจับศูนย์
มีข้อดีหลายประการสำหรับแนวทางนี้
ที่จะดำเนินต่อไป
ตัวควบคุมนี้ช่วยให้คุณสามารถควบคุมกำลังไฟที่โหลดได้สองวิธี
สำหรับวิธีที่สอง พบการกระจายแรงกระตุ้นโดยใช้อัลกอริธึม Bresenham ฉันใช้ซอร์สโค้ดของโซลูชันนี้ทั้งหมดจากบทความและโพสต์ในฟอรัมของผู้ที่เคารพนับถือ ริดิโก เลโอนิด อิวาโนวิช, ขอบคุณมาก!
ตัวควบคุมถูกควบคุมโดยปุ่มสามปุ่ม:
ตัวควบคุมช่วยให้คุณจัดเก็บการตั้งค่าพลังงานด่วน 3 แบบ มีฟังก์ชั่นปิดเครื่องอัตโนมัติหากไม่มีการกดปุ่มใด ๆ เป็นเวลา 30 นาที ไฟแสดงสถานะจะเริ่มกระพริบ จากนั้นหลังจากผ่านไป 10 นาที โหลดจะปิดลง
มีฟังก์ชั่นปิดเครื่องอัตโนมัติหากไม่มีการกดปุ่มใด ๆ เป็นเวลา 30 นาที ไฟแสดงสถานะจะเริ่มกระพริบ จากนั้นหลังจากผ่านไป 10 นาที โหลดจะปิดลง
เมื่อคุณกด SET ค้างไว้นานกว่า 2 วินาที REG จะแสดงบนหน้าจอ จากนั้นใช้ปุ่มบวก/ลบเพื่อเลือกอัลกอริธึมที่ต้องการ
ดังที่เห็นได้จากบล็อกไดอะแกรม การตั้งค่าพลังงานอย่างรวดเร็วสำหรับโหมด PAU และ FI(PRC) จะเหมือนกัน เนื่องจากมีช่วงอยู่ที่ 0..100 FI(NUM) มีการตั้งค่าของตัวเอง เนื่องจากมีช่วงอยู่ที่ 0..145
คุณสามารถเปิดตัวควบคุมที่กำลังไฟเต็มได้อย่างรวดเร็วโดยการกดปุ่ม SET+PLUS สองปุ่ม (ควรกดปุ่ม SET เร็วขึ้นเล็กน้อย) และข้อความ "เปิด" จะปรากฏขึ้นบนหน้าจอ ปิดเครื่องอย่างรวดเร็วโดยการกด SET+MINUS จากนั้น "OFF" จะแสดงบนหน้าจอ
สามารถเปิดใช้งานตัวควบคุมได้อย่างรวดเร็ว
ในเหล็ก
แผงวงจรพิมพ์. โปรดทราบว่าไม่มีตัวต้านทานติดตั้งอยู่บนตัวบ่งชี้นั้น ฉันติดตั้งไว้บนตัวบ่งชี้แล้ว
เราได้เรียนรู้วิธีการแสดงสัญลักษณ์และเส้นบนจอแสดงผล TFT และในบทช่วยสอนนี้ เราจะได้เรียนรู้การวาดรูปทรงเรขาคณิต มีรูปทรงเรขาคณิตไม่มากนักที่จะมีประโยชน์เมื่อสร้างส่วนต่อประสานกราฟิก รูปทรงหลักคือสี่เหลี่ยมและวงกลม เหล่านี้คือรูปทรงที่เราจะเรียนรู้ในการวาดในสองเวอร์ชันแบบแรเงาและแบบไม่แรเงา ฉันจะบอกทันทีว่าบทความนี้จะอธิบายรายละเอียดเกี่ยวกับอัลกอริทึมสำหรับการวาดเพียงบางส่วนเท่านั้น รูปทรงเรขาคณิตซึ่งก็น่าจะพอจะเข้าใจได้ หลักการทั่วไปการสร้างภาพแรสเตอร์ เริ่มจากรูปร่างที่ง่ายที่สุด - สี่เหลี่ยมผืนผ้าที่เต็มไป
จากบทความก่อนหน้านี้เราจำได้ว่าหากคุณระบุพิกัดของจุดแล้วส่งสี SSD1289 จะทาสีจุดตามอัลกอริทึมที่เลือกระหว่างการเริ่มต้น แต่ในกรณีนี้มีคุณลักษณะหนึ่งคือตัวควบคุม ย้ายไปยังบรรทัดถัดไปเมื่อถึงจุดสิ้นสุดของบรรทัดปัจจุบันเท่านั้น
การลงทะเบียนต่อไปนี้จะช่วยเราวาดรูปสี่เหลี่ยมผืนผ้าที่เต็มไป
เมื่อใช้รีจิสเตอร์เหล่านี้ เราสามารถกำหนดจุดเริ่มต้นและจุดสิ้นสุดของพื้นที่ที่เราจะเขียน จากนั้นจึงวนซ้ำ ปริมาณที่ต้องการครั้งหนึ่ง เราส่งสี และคอนโทรลเลอร์จะทำทุกอย่างเองตามอัลกอริธึมที่ระบุระหว่างการเริ่มต้น แต่ตอนนี้เขาจะ เลื่อนไปยังบรรทัดถัดไปเมื่อถึงจุดสิ้นสุดของพื้นที่ที่เรากำหนด
ในการบันทึกขอบเขตของพื้นที่ตาม X นั้นมีจุดประสงค์หนึ่งการลงทะเบียน R44 และเพื่อเขียนขอบเขตตาม Y - สองการลงทะเบียน R45 และ R46 เรามาใส่สิ่งที่อธิบายไว้ข้างต้นในรูปแบบของฟังก์ชัน เพื่อความสะดวก เราจะย้ายโค้ดที่รับผิดชอบในการเลือกพื้นที่ทำงานไปไว้ในฟังก์ชันแยกต่างหาก Set_Work_Area()
เป็นโมฆะ Set_Work_Area (uint16_t y1, uint16_t x1, uint16_t x2, uint16_t y2) ( Lcd_Write_Reg (0x0044, ((x2<< 8) | x1));
Lcd_Write_Reg(0x0045,y1);
Lcd_Write_Reg(0x0046,y2);
Set_Cursor(x1, y1);
}
///////////////////////////////////////
void Draw_Area(uint16_t left, uint16_t top, uint16_t right, uint16_t bottom, uint16_t color)
{
register uint16_t x,y;
Set_Work_Area(left, top, right, bottom);
for(y=top; y<=bottom; y++)
{
for(x=left; x<=right; x++)
{
Lcd_Write_Data(color);
}
}
Set_Work_Area(0, 0, 319, 239);
}
กล่าวโดยย่อหลักการทำงานของอัลกอริธึม Bresenham มีดังนี้: เราใช้เซ็กเมนต์ที่มีพิกัดเริ่มต้น x และ y ในวงเราเพิ่มหนึ่งเข้ากับ x ในทิศทางของจุดสิ้นสุดของเซ็กเมนต์ และในแต่ละขั้นตอนเราจะคำนวณข้อผิดพลาด - ระยะห่างระหว่างพิกัดจริงในสถานที่นี้กับเซลล์กริดที่ใกล้ที่สุด หากข้อผิดพลาดไม่เกินครึ่งหนึ่งของเซลล์ให้ทาสีทับ