tôi có một động cơ bước (được điều khiển bởi một arduino) để di chuyển một số bánh răng và ròng rọc. vấn đề là ròng rọc giật rất nhiều: chuyển động bắt đầu và dừng quá nhiều đột ngột. để làm cho chuyển động trở nên trôi chảy hơn, tôi nghĩ rằng tôi có thể sử dụng một loại đường dốc: chuyển động đầu tiên là chậm, khi các động cơ đã đạt đến vận tốc mà nó tiếp tục, sau đó chậm lại một cách trơn tru.
tôi đã thử sử dụng sóng hình sin theo cách này:
// generate ramp
float t = 0;
float deltat = PI/(200+1)
for(int i=0; i<200; i++) {
ramp[i] = 1000 - sin(t)*900;
t += deltat;
}
bây giờ tôi có một đoạn gồm 200 phần tử đi từ 1000 (rất chậm) đến 100 (rất nhanh) sau một làn sóng xoang. Bây giờ tôi di chuyển động cơ với mã này:
for(int i=0; i<200; i++) {
int delay_velocity = ramp[i];
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(delay_velocity);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(delay_velocity);
}
Điều này hoạt động khá tốt: ròng rọc không giật quá nhiều và tôi có quyền kiểm soát bao nhiêu bước để làm.
nhưng công việc này cũng có vấn đề:
- tôi không thể tạo ra các đường dốc rất dài (do tràn vào atmega) - giả sử một mảng không dài hơn 400 phần tử nhiều hơn (nó phụ thuộc vào thời gian phác thảo arduino)
- Tôi có quyền kiểm soát bao nhiêu bước nhưng tôi không biết phải mất bao nhiêu thời gian để hoàn thành nó (tôi nghĩ tôi có thể tính toán nó với một số tổng hoặc tích phân nhưng nó không thực tế lắm)
Vì vậy, tôi đang tìm kiếm một số cách khác để làm mịn chuyển động của tôi. tôi nghĩ rằng tôi có thể có một đường cong khác thay vì hình sin. một cái gì đó như thế này?
Cho đến bây giờ tôi đã không cân nhắc để tạo ra đoạn đường nối trong máy tính và sau đó chuyển nó sang arduino nhưng có thể là một khả năng.
vài lời khuyên? suy nghĩ?