งาน12 ควบคุมความเร็วรอบMOTOR







โครงงานชุดควบคุมความเร็วรอบ DC MOTOR

November 11, 2013admin1 CommentKMUTNB - Mechatronics 56โปรเจคตัวอย่าง

โดย นาย อนันต์ เกิดสิน (anun_ms_38@hotmail.com)
สาขาวิศวกรรมแมคคาทรอนิกส์ ภาควิชาครุศาสตร์เครื่องกล มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ

 

 

 

Download Simulink Model File (proj05_dcmotor.7z)

 

รูปที่ 1 การต่อวงจรใช้งานจริง

Contents [hide]


1.) ที่มาและความเป็นมาของชุดควบคุมความเร็วรอบ DC MOTOR


2.) คุณสมบัติการทำงานของชุดควบคุมความเร็วมอเตอร์


3.) การต่อวงจรที่สมบูรณ์

3.1) การต่อวงจร LCD 2×16


3.2) การต่อวงจร KEYPAD 4×4


 3.3) การต่อวงจรบอร์ด Drive


3.4) การต่อสายของ Encoder


4.) โปรแกรมที่ใช้ในชุดควบคุมความเร็วรอบ DC Motor


5.) การใช้งานชุดควบคุมความเร็วรอบมอเตอร์


1.) ที่มาและความเป็นมาของชุดควบคุมความเร็วรอบ DC MOTOR

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

ดังนั้นจึงได้มีการคิดทำชุดควบคุมความเร็วมอเตอร์ขึ้นมา เพื่อขจัดปัญหาที่เกิดขึ้นกับการควบคุมความเร็วของมอเตอร์ ที่นำไปใช้งานรับภาระที่แตกต่างกัน

2.) คุณสมบัติการทำงานของชุดควบคุมความเร็วมอเตอร์

สามารถควบคุมความเร็วรอบมอเตอร์ที่ความเร็วตั้งแต่ 0-107 รอบต่อนาที (เฉพาะมอเตอร์ที่ใช้ในชุดนี้)


สามารถใช้กับมอเตอร์กระแสตรง 6 – 24V ได้(ในที่นี้ใช้ DC MOTOR 12 V)


มีการแสดง ความเร็วที่ต้องการให้มอเตอร์หมุน(SETPOINT) และความเร็วที่มอเตอร์หมุนอยู่ในขณะนั้น


สามารถป้อน SETPOINT ได้โดยผ่านทาง KEYPAD 4X4


รูปที่ 2 วงจรสมบูรณ์

 

3.) การต่อวงจรที่สมบูรณ์

3.1) การต่อวงจร LCD 2×16

3.2) การต่อวงจร KEYPAD 4×4

*ขา VCC ใช้ไฟเลี้ยง 3V และ NC เป็น GND จากบอร์ด STM32F4

 3.3) การต่อวงจรบอร์ด Drive

ไฟ +5V จ่ายเพื่อไปเลี้ยงบอร์ด Drive ในส่วนภาค Control โดย GND ด้านบนจะเป็น GND ของไฟ +5V


PE11 จะเป็นจุดที่รับสัญญาณ PWM จากบอร์ด STM32F4DISCOVERY


+15V เป็นไฟเลี้ยงในส่วนของภาคกำลัง เพื่อนำไป Drive Motor


3.4) การต่อสายของ Encoder


ในส่วนของการต่อ Encoder จะใช้ต่อทั้งหมด 4 สาย

เส้นสีแดง จะต่อไฟ +5V เพื่อไปเลี้ยง Encoder


เส้นสีดำ เป็น GND


เส้นสีขาว จะต่อเข้ากับขา PC6 ของบอร์ด STM32F4DISCOVERY


เส้นสีส้ม จะต่อเข้ากับขา PB5 ของบอร์ด STM32F4 DISCOVERY


4.) โปรแกรมที่ใช้ในชุดควบคุมความเร็วรอบ DC Motor

 

ในส่วนของบล็อก Target Setup นั้นก็เหมือนกับเป็นการกำหนดฮาร์ดแวร์ก่อนใช้งาน โดยกำหนด Compiler เป็น GNU ARM กำหนด MCU เป็น STM32F407VG หลักๆก็กำหนดประมาณนี้

LCD Setup เป็นการเรียกใช้ในส่วนของการเชื่อมต่อกับ LCD

Volatile Data Storage เป็นการประกาศตัวแปลที่ชื่อว่า Line1

Volatile Data Storage1 เป็นการประกาศตัวแปลที่ชื่อว่า Line2


ในส่วนนี้เป็นการกำหนดให้ค่าจากตัวแปล Line1 แสดงที่ที่ LCD แถวที่ 1 และเริ่มตั้งแต่ตัวอักษร ที่ 0

ในส่วนนี้เป็นการกำหนดให้ค่าจากตัวแปล Line2 แสดงที่ที่ LCD แถวที่ 2 และเริ่มตั้งแต่ตัวอักษร ที่ 0

ในส่วนนี้เป็นการรับค่าจาก Encoder ด้วยบล็อก Encoder Read จะกำหนดให้บล็อกนับจำนวนเพาร์ที่ได้จาก Encoder ตั้งแต่ 0 – 65536 และให้ว่า CH_A ของ Encoder ให้ต่อเข้าที่ขา PC6 และ CH_B ให้ต่อเข้าที่ขา PB5 ของบอร์ด STM32F4 ค่าที่ได้ในส่วนของ Direction จะไม่ได้ใช้ ซึ่งก็จะถูกปิดด้วยบล็อก Terminator ค่าที่ได้ในส่วนของ Position จะนำไปต่อเข้ากับบล็อก Data Type Conversion ซึ่งจะเป็นการแปลงค่าของ Position จาก uint32 เป็น Double

บล็อก Discrete Derivative1 จะค่า Position มา diff ในแบบของไมโครเปลี่ยนเป็นความเร็ว

บล็อก Discrete จะนำค่าความเร็วที่ได้จากการ Diff มากรองสัญญาณให้ค่าความเร็วที่ได้ออกมาเรียบขึ้น


บล็อก Gain3 จะนำความเร็วที่ผ่านการกรองแล้วมาคูณเกณฑ์ 60/1000 เพื่อเปลี่ยนค่าความเร็วให้มีหน่วยเป็น รอบต่อนาที 60 ก็คือ นาที 1000 จะได้มาจากการหมุนของ Encoder หนึ่งรอบ จะมีเพาร์ออกมา 250 เพาร์ แต่เนื่องจากบล็อกที่ใช้รับค่าจาก Encoder มีวงจรคูณสี่อยู่ ดังนั้นเมื่อหมุน Encoder หนึ่งรอบจะนับค่า Position ได้ 1000


เนื่องจากความเร็วที่ได้จะมีค่าในฝั่งบวก และฝั่งลบ คือถ้าเราหมุน Encoder ทวนเข็มนาฬิกาความเร็วจะเป็นบวก และถ้าหมุนตามเข็มนาฬิกาความเร็วจะเป็นลบ แต่ในชุดควบคุมความเร็วรอบ DC Motor ชุดนี้เราจะกำหนดให้หมุนทวนเข็มเท่านั้น จึงเขียนเงื่อนไขให้เฉพาะความเร็วที่เป็นบวกผ่านได้

บล็อก Printf1 จะ Print ค่าของความเร็วรอบต่อนาทีที่ได้ ลงไปที่ตัวแปล Line2

 

บล็อก Regular ADC จะใช้รับค่าแรงดันจาก VR เข้ามาที่ขา PA1 ค่าแรงดันจาก VR จะมีค่าตั้งแต่ 0 – 3V แต่เมื่อบล็อก Regular ADC รับค่าแรงดันเข้ามาแล้ว ค่าที่ได้จาก 0 – 3 จะเปลี่ยนเป็น 0 – 4095 จากนั้นก็จะนำค่าที่ได้มาคูณเกณฑ์ 107/4095 เพื่อเปลี่ยนค่าจาก 0 – 4095 เป็น 0 – 107 เพื่อไปใช้เป็น SETPOINT ต่อไป

ในส่วนนี้จะเป็นการอ่านค่าจากการกด KEYPAD โดยใช้ Stateflow อันดับแรกจะใช้บล็อก Digital Input เพื่อรับค่า Digital จาก KEYPAD เข้ามาที่ขา PD0,PD1,PD2,PD3 ส่วนวิธีการต่อได้กล่าวมาแล้วข้างต้น จากนั้นก็นำไปต่อเข้าในส่วนของ Input ของบล็อก Stateflow ดังรูป

ในส่วนของ Output ของบล็อก Stateflow E2,E4,E5,E6 จะส่ง Output ไปเข้าที่บล็อก Digital Output1 จากนั้นบล็อก Digital Output1 ก็จะส่งออกไปที่ขา PE2,PE4,PE5,PE6 แล้วไปเข้าที่ KEYPAD
Output E7 จะส่งค่าตัวเลขที่บล็อก Stateflow สแกนได้จากการกด KEYPAD ไปเข้าที่บล็อก Volatile Data Storage Write บล็อก Volatile Data Storage Write จะเขียนค่า Output E8 ให้อยู่ในรูปของตัวแปลที่ชื่อว่า Output
ส่วนบล็อก Volatile Data Storage2 เป็นการประกาศตัวแปลที่ชื่อว่า Output
บล็อก Pulse Generator จะเป็นตัวที่ไปทิกบล็อก Stateflow ให้ทำงาน

การทำงานภายในบล็อก Stateflow

เริ่มแรกจะเริ่มทำงานที่บล็อก Initiar Output ที่ออกจากบล็อก Stateflow จะมีค่าดังรูป

Step1

ใน Step1 นั้นจะเป็นการสแกนในแถวที่ 1 ว่ามีการกดในแถวที่ 1 หรือไม่ และถ้ามีถูกกดอยู่ที่หลักไหน วิธีการสแกน คือ ให้ Output E2 เท่ากับ 0 แล้วตรวจสอบจาก Input ที่เข้ามาว่าตัวไหนเป็นสูญ [ถ้า D0=0 จะให้ Output E7=1 และ Output E8=1], [ถ้า D1=0 จะให้ Output E7=2 และ Output E8=1], [ถ้า D2=0 จะให้ Output E7=3 และ Output E8=1], [ถ้า D3=0 จะให้ Output E7=4 และ Output E8=1] และถ้าไม่มีตัวใดเป็น 0 จะเปลี่ยนไปทำใน Step2

Step2

ใน Step2 นั้นจะเป็นการสแกนในแถวที่ 2 ว่ามีการกดในแถวที่ 2 หรือไม่ และถ้ามีถูกกดอยู่ที่หลักไหน วิธีการสแกน คือ ให้ Output E4 เท่ากับ 0 แล้วตรวจสอบจาก Input ที่เข้ามาว่าตัวไหนเป็นสูญ [ถ้า D0=0 จะให้ Output E7=5 และ Output E8=1], [ถ้า D1=0 จะให้ Output E7=6 และ Output E8=1], [ถ้า D2=0 จะให้ Output E7=7 และ Output E8=1], [ถ้า D3=0 จะให้ Output E7=8 และOutput E8=1] และถ้าไม่มีตัวใดเป็น 0 จะเปลี่ยนไปทำใน Step3

Step3

ใน Step3 นั้นจะเป็นการสแกนในแถวที่ 3 ว่ามีการกดในแถวที่ 3 หรือไม่ และถ้ามีถูกกดอยู่ที่หลักไหน วิธีการสแกน คือ ให้ Output E5 เท่ากับ 0 แล้วตรวจสอบจาก Input ที่เข้ามาว่าตัวไหนเป็นสูญ [ถ้า D0=0 จะให้ Output E7=9 และ Output E8=1], [ถ้า D1=0 จะให้ Output E7=20 และ Output E8=1], [ถ้า D2=0 จะให้ Output E7=10 และ Output E8=1], [ถ้า D3=0 จะให้ Output E7=11 และOutput E8=1] และถ้าไม่มีตัวใดเป็น 0 จะเปลี่ยนไปทำใน Step4

Step4

ใน Step4 นั้นจะเป็นการสแกนในแถวที่ 4 ว่ามีการกดในแถวที่ 4 หรือไม่ และถ้ามีถูกกดอยู่ที่หลักไหน วิธีการสแกน คือ ให้ Output E6 เท่ากับ 0 แล้วตรวจสอบจาก Input ที่เข้ามาว่าตัวไหนเป็นสูญ [ถ้า D0=0 จะให้ Output E7=12 และ Output E8=1], [ถ้า D1=0 จะให้ Output E7=13 และ Output E8=1], [ถ้า D2=0 จะให้ Output E7=14 และ Output E8=1], [ถ้า D3=0 จะให้ Output E7=15 และOutput E8=1] และถ้าไม่มีตัวใดเป็น 0 จะกลับไปทำใน Step1 ใหม่
* ในการที่จะดูว่าตัวเลขใดถูกกดให้ดูจาก Output E7 ส่วนของ Output E8 จะแสดงเป็น 1 เมื่อมีการกด KEYPAD และจะแสดงเป็น 0 เมื่อ KEYPAD ไม่ถูกกด

บล็อก Digital Output นี้จะรับค่าจาก Output E8 จากบล็อก Stateflow และกำหนดให้ Output ออกไปที่ขา PD12,PD13,PD14,PD15 ซึ่งขาดังกล่าวจะได้ถูกต่อไว้กับหลอด LED ของบอร์ดทั้ง 4 ขา ดังนั้นเมื่อมีการกด KEYPAD จะทำให้ LED ทั้ง 4 หลอดติด

บล็อก Data Type Conversion2 จะรับค่าจาก Output E8 ของบล็อก Stateflow มาแปลงชนิดของค่าจาก int32 เป็น Double

บล็อก Volatile Data Storage Read2 จะเป็นการดึงค่าของตัวแปลที่ชื่อว่า Output ขึ้นมาใช้ จากนั้นก็จะส่งไปเข้าบล็อก Data Type Conversion1 เพื่อแปลงชนิดของ ค่าจาก int32 เป็น Double

บล็อก Embedded MATLAB Functoin13 จะรับค่าจากบล็อก Data Type Conversion1 มันก็คือตัวเลขที่ได้จากการกด KEYPAD นั่นเอง ซึ่งจะนำมาเข้าในเงื่อนไขที่มีอยู่ว่า ถ้าค่า u ที่เข้ามาเท่ากับ 12 จะให้ y = 0 และ y1 = 0 แต่ถ้าไม่เข้าเงื่อนไขจะให้ y = u และ y1 = 1 ซึ่ง Output ที่ได้จากบล็อกนี้จะนำไปใช้ในส่วนของการรีเซ็ตค่า SETPOINT เมื่อกดปุ่มที่ 12 ของ KEYPAD ซึ่งจะอธิบายรายละเอียดไว้ในส่วนถัดไป

บล็อก Product 1 จะนำค่าจาก Output E7 กับ E8 ของบล็อก Stateflow มาคูณกัน ซึ่งจะมีผลทำให้ค่าตัวเลขที่ได้จากกด KEYPAD จะผ่านบล็อก Product 1ไปได้ในช่างที่กดเท่านั้น เมื่อปล่อย ค่าที่ออกบล็อก Product 1 ไปก็จะเป็น 0 (Output E8 จะแสดงเป็น 1 เมื่อมีการกด KEYPAD และจะแสดงเป็น 0 เมื่อ KEYPAD ไม่ถูกกด) ส่วนของบล็อก Embedded MATLAB Functoin4 จะเป็นการนัครั้งในการกด KEYPAD การทำงานก็มีอยู่ว่า เริ่มแรกให้ o = i (ค่า i เริ่มต้นจะเป็น 0 เนื่องจากยังไม่มีการกด) และถ้าเมื่อไรที่กด จะทำในเงื่อนไขของ if คือ [i ไม่เท่ากับ i1 และ i1 เท่ากับ 0] (ที่เข้าเงื่อนไขแรกเพราะว่าค่าเดิมของ i1=0 เมื่อค่า i เปลี่ยนทำให้ i ไม่เท่ากับ i1) จะทำให้ค่าของ o1 เท่ากับ 1+i2 (ค่าเริ่มแรกของ i2 = o1= 0) ดังนั้นค่าของ o1 จะมีค่าเป็น 1 ในการกดครั้งแรก และจะส่งผลให้ i2=1 ด้วย เมื่อปล่อยปุ่มก็จะทำในส่วนของ else ค่า o1 จะเท่ากับ i2+0 (ค่า i2 ที่ได้จากการบวกเมื่อสักคู่เท่ากับ 1) i2 ก็จะมีค่าเท่าเดิม และเมื่อมีการกดครั้งที่ 2 การทำก็จะเป็นในลักษณะเดียวกัน ค่าของ o1=i2=2 และกดครั้งที่ 3ก็เช่นกัน ในการนับนี้จะนับแค่ถึงสาม เพราะว่าถ้ากดครั้งที่ 4 ตัวเลขที่ถูกนับจะถูกรีเซ็ตให้เป็น 0 ซึ่งจะเป็น 0 ได้อย่างไรจะอธิบายในส่วนถัดไป

บล็อก Embedded MATLAB Functoin10 จะรับค่าตัวเลขที่ถูกกดจากบล็อก Embedded MATLAB Functoin13 มาเข้าเงื่อนที่ว่า ถ้า u = 20 จะให้ y = 0 เพื่อที่จะนำเลข 0 ไปใช้ ถ้าไม่เข้าเงื่อนไขก็จะให้ y = u

บล็อก Embedded MATLAB Functoin5 จะทำการคูณค่าของตัวเลขที่ได้จากการกด KEYPAD ในแต่ล่ะครั้ง ในการกดครั้งที่ 1 จะนำตัวเลขที่ไปคูณ 100 แล้วส่งออกไปที่ o กดครั้งที่ 2 จะนำตัวเลขที่ไปคูณ 10 แล้วส่งออกไปที่ o1 กดครั้งที่ 3 จะนำตัวเลขที่ไปคูณ 1 แล้วส่งออกไปที่ o2 กดครั้งที่ 4 จะให้ o=o1=o2=o3 =0 ค่า 0 ที่ได้จะนำไปคูณกับค่าการนับครั้งของการกดที่ o1 ของบล็อก Embedded MATLAB Functoin4 เป็นการรีเซ็ตการนับครั้งการกด

ในส่วนนี้จะเป็นการนำค่าที่ได้จากการคูณในหลักร้อยมาแสดงค้างไว้ที่ o1 ในการกดครั้งที่ 1และจะแสดงค้างจนกว่าจนกว่าจะกดรีเซ็ต หรือกดครั้งที่ 4

ส่วนนี้จะเป็นการนำค่าที่ได้จากการคูณในหลักสิบมาแสดงค้างไว้ที่ o1 ในการกดครั้งที่ 2 และจะแสดงค้างจนกว่าจนกว่าจะกดรีเซ็ต หรือกดครั้งที่ 4

ส่วนนี้จะเป็นการนำค่าที่ได้จากการคูณในหลักหน่วยมาแสดงค้างไว้ที่ o1 ในการกดครั้งที่ 3 และจะแสดงค้างจนกว่าจนกว่าจะกดรีเซ็ต หรือกดครั้งที่ 4

บล็อก Add1จะนำค่าในแต่ละหลักมาบวกกัน และจะออกมาเป็น SETPOIN จาก KEYPAD

บล็อก Embedded MATLAB Functoin6 จะเป็นตัวกำหนด การส่งค่า SETPOINT การทำงานก็คือ จะรับค่าการนับครั้งในการกดเข้ามาที่ u1 ว่าเข้าเงื่อนไขใด เงื่อนไขแรก ถ้า u1=3 จะให้ y และ y1 เท่ากับ u และในเงื่อนไขที่ 2 ถ้า u1 มากว่า 0 และ u1 น้อยกว่า 3 จะให้ y=0 ให้ y1=u และถ้าไม่เข้าเงื่อนไขใดจะให้ y=y1=0

บล็อก Embedded MATLAB Functoin7 จะเป็นบล็อกที่ใช้ในการป้องกัน การป้อนค่า SETPOINT เกินกว่าค่าความเร็วสูงดุดของมอเตอร์ นั้นคือจะไม่เกิด 107 ถ้าป้อนค่า SETPOINT เกินกว่าความเร็วสูงสุดของมอเตอร์ ค่านั้นจะไม่ผ่านบล็อกนี้ ซึ่งจะทำให้ค่าที่ป้อนเกินจะไม่มีผลต่อการคอนโทรล

ในส่วนของบล็อก Goto3 จะรับค่าจาก y1 ของบล็อก Embedded MATLAB Functoin13 เมื่อเรากด KEYPAD ที่แถวที่ 3 หลักที่ 2 จะทำให้ y1 เป็น 0 แล้ว 0 จะถูกส่งไปคูณกับค่าที่ค้างอยู่ที่จุดต่างๆ ที่ถูกคุมไว้เพื่อให้ค่าเหล่านั้นเป็น 0 ซึ่งจะเป็นการรีเซ็ต

ในส่วนนี้จะเป็นการกำหนดเงื่อนไขในการแสดงค่า SETPOINT ระหว่าง SETPOINT จาก KEYPAD กับ SETPOINT จาก VR เงื่อนไขมีอยู่ว่า ถ้าค่า SETPOINT จาก KEYPAD เป็น 0 ค่า SETPOINT จาก VR ถึงจะได้ออกไปแสดงบน LCD Line1แต่ถ้าค่า SETPOINT จาก KEYPAD มีค่ามากกว่า 0 ค่า SETPOINT จาก KEYPAD จะไปแสดงบน LCD Line1 แทน

บล็อก Embedded MATLAB Functoin10 จะเป็นการกำหนดเงื่อนไขในการเลือกใช้ค่า SETPOINT ระหว่าง SETPOINT จาก KEYPAD กับ SETPOINT จาก VR เงื่อนไขมีอยู่ว่า ถ้าค่า SETPOINT จาก KEYPAD เป็น 0 ค่า SETPOINT จาก VR ถึงจะได้นำไปใช้เป็นค่า SETPOINT ของระบบ แต่ถ้าค่า SETPOINT จาก KEYPAD มีค่ามากกว่า 0 แต่ไม่เกิน 107 ค่า SETPOINT จาก KEYPAD จะถูกนำไปใช้เป็นค่า SETPOINT ของระบบแทน

บล็อก Subtract จะรับค่า SETPOINT กับ SPEED MOTOR เข้ามาหักล้างกัน จากนั้นก็จะนำค่า ERROR ที่ได้ แยกไปคูณเกณฑ์ของ P ของ I ของ D จากนั้นก็นำค่า PID มารวมกัน แล้วนะไปเข้าบล็อก Discrete Transfer Fcn2 เพื่อกรองสัญญาณ ค่าเกณฑ์ของ PID ที่ได้มาจากการลองผิดลองถูก โดยจะจูนไปแล้วดูผลตอบสนองที่ได้

ในบล็อกนี้เป็นการกำหนดว่าจะไม่ยอมให้ค่าสัญญาณที่มีค่าน้อยกว่า หรือเท่ากับ 2.85 ผ่าน

ในบล็อกนี้เป็นการกำหนดว่า ถ้าค่าสัญญาณที่เข้ามามีค่ามากกว่า 100 จะปรับให้เป็น 1003

ในบล็อกนี้เป็นการกำหนดว่า ถ้าค่า SETPOINT ที่ถูกป้อนเข้ามามีค่ามากกว่า 106.7 จะให้ค่าที่ออกไปเท่ากับ 100

บล็อก Basic PWM จะรับสัญญาณจากระบบคอนโทรลมาเป็นเปอร์เซ็นต์ Duty Cycle และกำหนดให้จ่ายสัญญาณ PWM ออกไปที่ขา E11

5.) การใช้งานชุดควบคุมความเร็วรอบมอเตอร์

5.1) ต้องต่อไฟ DC +12V จาก Supply เข้าที่สายเส้นสีแดง และ GND ของไฟ +12V ให้ต่อเข้ากับสายเส้นสีเท่า ดังรูปที่ 3. ในส่วนนี้เป็นนำไฟ +12V ไปเข้า IC Regulator 7805 เพื่อแปลไฟให้เหลือ +5V DC และจะนำไฟ DC +5V ที่ได้ไปใช้เป็นไปเลี้ยงอุปกรณ์ในชุดควบคุมความเร็วรอบ DC MOTOR

รูปที่ 3 การต่อไฟเลี้ยงอุปกรณ์

5.2) ต้องจ่ายไฟ DC 15V ให้กับบอร์ด Drive ในส่วนของภาคกำลัง เพื่อที่จะนำไปใช้ในการ Drive Motor ดังรูปที่ 4.

5.3) การป้อน SETPOINT เป็นเลข 3 หลัก สมมติว่าเราจะป้อนค่า SETPOINT เป็น 107 อันดับแรกที่ต้องกดคือหลักร้อย ซึ่งหลักร้อยของ 107 ก็คือเลข 1 ก็กดที่เลข 1 ที่จอ LCD Line1ก็จะแสดงตัวเลข 100 ดังรูปที่ 5.

รูปที่ 5 กดเลข 1 ในหลักร้อย

อันดับต่อมาจะต้องกดตัวเลขในหลักสิบ ซึ่งหลักสิบของ 107 ก็คือเลข 0 ก็กดที่เลข 0 ที่จอ LCD Line1ก็จะแสดงตัวเลข 100 เหมือนเดิม ดังรูปที่ 6.

รูปที่ 6 กดเลข 0 ในหลักสิบ

 

ต่อไปจะกดตัวเลขในหลักหน่วย ซึ่งหลักหน่วยของ 107 ก็คือเลข 7 ก็กดที่เลข 7 จากนั้นเมื่อกดครบ 3 หลัก ค่า SETPOINT ที่ได้ป้อนเข้าไปก็จะถูกนำไปใช้โดยอัตโนมัติ มอเตอร์ก็จะทำงาน ที่จอ LCD Line1 ก็จะแสดงตัวเลข 107 และ Line2 ก็จะแสดงความเร็วมอเตอร์ นั่นก็คือ 107 รอบต่อนาที ดังรูปที่ 7.

รูปที่ 7 กดเลข 7 ในหลักหน่วย

5.4) การป้อน SETPOINT เป็นเลข 2 หลัก สมมติว่าเราจะป้อนค่า SETPOINT เป็น 50 อันดับแรกที่ต้องกดคือหลักร้อย ซึ่งหลักร้อยของ 50 ก็คือเลข 0 ก็กดที่เลข 0 ที่จอ LCD Line1ก็จะแสดงตัวเลข 0 ซึ่งจะไม่มีการเปลี่ยนแปล ดังรูปที่ 8.

รูปที่ 8 กดเลข 0 ในหลักร้อย

อันดับต่อมาจะต้องกดตัวเลขในหลักสิบ ซึ่งหลักสิบของ 50 ก็คือเลข 5 ก็กดที่เลข 5 จอ LCD Line1ก็จะแสดงตัวเลข 50 ดังรูปที่ 9.

รูปที่ 9 กดเลข 5 กดเลข 5 ในหลักสิบ

ต่อไปจะกดตัวเลขในหลักหน่วย ซึ่งหลักหน่วยของ 50 ก็คือเลข 0 ก็กดที่เลข 0 จากนั้นเมื่อกดครบ 3 หลัก ค่า SETPOINT ที่ได้ป้อนเข้าไปก็จะถูกนำไปใช้โดยอัตโนมัติ มอเตอร์ก็จะทำงาน ที่จอ LCD Line1 ก็จะแสดงตัวเลข 50 และ Line2 ก็จะแสดงความเร็วมอเตอร์ นั่นก็คือ 50 รอบต่อนาที ดังรูปที่ 10.

 

รูปที่ 10 กดเลข 0 ในหลักหน่วย

5.5) การป้อน SETPOINT เป็นเลข 1 หลัก สมมติว่าเราจะป้อนค่า SETPOINT เป็น 1 อันดับแรกที่ต้องกดคือหลักร้อย ซึ่งหลักร้อยของ 1 ก็คือเลข 0 และเลขในหลักสิบของ 1 ก็คือเลข 0 ดังนั้นก็กดที่เลข 0 สองครั้ง ที่จอ LCD Line1ก็จะแสดงตัวเลข 0 ซึ่งจะไม่มีการเปลี่ยนแปลง ดังรูปที่ 11.

 

รูปที่ 11 กดเลข 0 สองครั้งในหลักร้อยกับหลักสิบ

อันดับต่อมาจะต้องกดตัวเลขในหลักหน่วย ซึ่งหลักหน่วยของ 1 ก็คือเลข 1 ก็กดที่เลข 1 จากนั้นเมื่อกดครบ 3 หลัก ค่า SETPOINT ที่ได้ป้อนเข้าไปก็จะถูกนำไปใช้โดยอัตโนมัติ ที่จอ LCD Line1 ก็จะแสดงตัวเลข 1 และ Line2 ก็จะแสดงความเร็วมอเตอร์ นั่นก็คือ 1 รอบต่อนาที ดังรูปที่ 12.

รูปที่ 12 กดเลข 1 ในหลักหน่วย

5.6) ในการรีเซ็ตค่า SETPOINT ใหม่ให้กดที่ตัว C
5.7) ในส่วนของการแสดงผลที่จอ LCD ในบรรทัดที่ 1 จะแสดงค่า SETPOINT ที่เราป้อนเข้าไป และในบรรทัดที่ 2 จะใช้แสดงความของมอเตอร์ที่หมุนอยู่ในขณะนั้น ค่าทั้งสองมีหน่วยเป็น รอบต่อนาที
5.8) ในกรณีที่ต้องการนำชุดควบคุมความเร็วรอบ DC MOTOR ชุดนี้ไปใช้งานขัดโหลด สำหลับมอเตอร์ตัวนี้จะแนะนำว่าให้เอาไปใช้ในงานที่ใช้ความเร็วรอบไม่เกิน 100 รอบต่อนาที่ เพราะในการทำงานของระบบเมื่อมีโหลดเข้ามาที่เพลามอเตอร์ ระบบจะทำการเพิ่มเปอร์เซ็น Duty Cycle ของสัญญาณ PWM ให้มากขึ้น ซึ่งจะมีผลทำให้มอเตอร์หมุนเร็วขึ้นไปต้านกับโหลด แต่ถ้าเรานำมอเตอร์ไปใช้งานที่ความเร็วรอบ สมมติว่าเป็น 107 รอบต่อนาที ที่ 107 รอบต่อนาที เป็นความเร็วสูงสุดของมอเตอร์ แน่นอนว่านะที่ความเร็วดังกล่าวระบบได้จ่ายสัญญาณ PWM ที่เปอร์เซ็น Duty Cycle สูงสุดแล้ว เพราะฉะนั้นเมื่อมีโหลดเข้ามาที่เพลาของมอเตอร์ ระบบจะไม่สามารถเพิ่มเปอร์เซ็น Duty Cycle ของสัญญาณ PWM ไปต้านกับโหลดได้อีก นั้นก็เป็นเหตุที่ควรใช้ที่ความเร็วไม่เกิน 100 รอบต่อนาที

ตัวเลขที่ตั้งไว้บน KEYPAD

6.) สรุป
ชุดควบคุมความเร็วรอบ CD MOTOR สามารถใช้งานได้จริง สามารถควบคุมความเร็วได้ตามต้องการ ตั้งแต่ 0-107 รอบต่อนาที โดยที่ป้อน SETPOINT ผ่าน KEPAD และระบบสามารถรักษาความเร็วของมอเตอร์ไว้ตามค่าของ SETPOINT ได้ เมื่อมีโหลดมากระทำที่เพลาของมอเตอร์ และสามารถดูค่า SETPOINT ที่ป้อนเข้าไป กับค่าของความเร็วมอเตอร์ที่หมุนอยู่ในขณะนั้น บนจอ LCD
*สามารถรับชมวีดีโอการใช้งานได้ที่http://www.youtube.com/watch?v=1N5rFEgyQgQ และhttp://www.youtube.com/watch?v=eJaMjZ36j_g

 

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

 

ความคิดเห็น

แสดงความคิดเห็น

บทความที่ได้รับความนิยม