ฉันพยายามหาวิธีที่มีประสิทธิภาพในการคำนวณค่าอินเวอร์สบน AVR (หรือประมาณค่า)
ฉันพยายามคำนวณระยะเวลาพัลส์สำหรับสเต็ปเปอร์มอเตอร์เพื่อให้ฉันสามารถเปลี่ยนแปลงความเร็วเชิงเส้นได้ ช่วงเวลานั้นแปรผันตามค่าผกผันของความเร็ว ( p = K/v
) แต่ฉันไม่สามารถคิดวิธีที่ดีในการคำนวณสิ่งนี้ได้ในทันที
สูตรของฉันคือ
p = 202/v + 298; // p in us; v varies from 1->100
การทดสอบใน Arduino ส่วนที่ดูเหมือนว่าจะถูกละเว้นอย่างสมบูรณ์ออกจากp
คงที่298
(แม้ว่าอาจจะแตกต่างกันใน avr-gcc) ฉันได้ลองหาข้อสรุปv
แบบวนซ้ำจนกระทั่งมันเกิน202
และนับลูป แต่มันค่อนข้างช้า
ฉันสามารถสร้างตารางการค้นหาและเก็บไว้ในแฟลช แต่ฉันสงสัยว่ามีวิธีอื่น
แก้ไข : บางทีชื่อควรจะเป็น "การหารที่มีประสิทธิภาพ" ...
อัปเดต : เนื่องจาก pingswept ชี้ให้เห็นว่าสูตรการทำแผนที่ช่วงเวลากับความเร็วไม่ถูกต้อง แต่ปัญหาหลักคือการดำเนินการหาร
แก้ไข 2 : ในการตรวจสอบเพิ่มเติมหารกำลังทำงานกับ arduino ปัญหาเกิดจากทั้งสูตรที่ไม่ถูกต้องด้านบนและ int ล้นที่อื่น