มอเตอร์ที่ผมใช้นั้น 6000rpm มีทดเหลือ 10 rpm ตรงปลายเพลา มี encoder 500pulse/rev ติดที่ตูดวัดตัว 6000 rpm นะครับ
เพราะฉะนั้น pulse ใน 1 รอบที่ออกมาจะเท่ากับ pulse = (6000/10)*500 = 300000 pulse / rev ที่ปลายเพลา
ผมใช้ บอร์ด lpc2138 exp ไรเนี้ยซึ่งผมเขียนโค๊ดโดยมี Interrupt uart0 สำคัญสุด
รองลงมาคือ Interrupt Timer1 วัด encoder
รองมาคือ Interrupt Timer0 คอยอัพเดต PWM
หมุนประมาณ 1 รอบ[กะๆเอา] มันโชออกมาประมาณแค่ 340 องศาเอง [แบบยังไม่ใช้ Interrupt Timer0]
ยิ่งพอรวมใช้ Interrupt Timer0 ค่าที่อ่านจาก Encoder จะไม่ทันเลย หมุนไปเป็นรอบยัวัดได้แค่ 10 - 20 องศาเอง
คือมัน Interrupt ไม่ทันอ่ะ จากเดินก็ไม่ค่อยทันอยู่แล้ว ยิ่งมี Interrupt Timer0 เข้ามา ยิ่งอ่านไม่ทันเลย
มันละเอียดเกิ๊นนนนน จะแก้ไขยังไงดีครับ
