תזמון והספק

הקושחה קובעת setMaxSpeed(500) ו־setAcceleration(200), ודגימת חיישנים כל 2000 ms. מהלך 20° הוא משולש קצר שלא מגיע ל־500 צעד/שנייה — הדגימה, לא המנוע, היא השהיית המפעל. באותו זמן handleClient() יכול להרעיב פולסים. למטה: למה סלילי NEMA17 הם המוצר, וה־ESP32 הוא עיגול.

פרופיל תנועה

מעטפת מהירות

מהירות כנגד זמן — משולש או טרפז זמן (s) צעדים/שנייה vmax 500 דגימה 2s

זווית ומספרים מהקושחה

סוג פרופיל
צעדים
שיא מהירות
זמן מנוע
בוהק→הגעה (הטוב)
בוהק→הגעה (גרוע)

תקציב לולאה שיתופית

loop() קורא handleClient() ואז stepper.run(). AccelStepper חייב לרוץ לפני מועד הצעד הבא. אין esp_task_wdt בקושחה. תקיעת I²C יכולה להרעיב גם פולסים וגם את ה־WDT של הליבה.

מרווח צעד בשיא
slack
פולסים
WDT 5s (לא מחומש)

חסימת WiFi ב-setup

עד 10 שניות של delay(200) לפני loop(). המנוע לא רץ. אחרי timeout האוטו המקומי ממשיך — זה בקושחה, ונבדק.

setup חסום
איטרציות delay(200)

לולאת בקרה

גנט של loop() אחד

handleClient כל איטרציה. I²C + החוק רק כל 2 שניות. calcOptimalAngle הוא עשרות µs — העיגול ליד HTTP.

עסוק בלולאה
עד הדגימה הבאה

שרשרת השהיה + הבזק שמתפספס

בוהק → הגעה
P(פספוס הבזק)
צוואר בקבוק
המתנה לדגימה

תקציב הספק

סלילים מול לוגיקה — לא מדידה

החזקת מנוע: 2 × I²R ל־1.5 A ו־1.5 Ω — רצפה מדף-נתונים, בלי הפסדי מנהל. ESP32 + WiFi ≈ 180 mA @ 3.3 V. USB 5 V / 500 mA = 2.5 W — מתחת להחזקה.

יום עבודה

החזקת סלילים
לוגיקה (ESP32+חיישנים)
אנרגיה ל־24 שעות
USB 5V/500mA

כיבוי סלילים בלי תולעת חוסך ואטים ומשחרר את המסך — ראו מחשבון המומנט. פירוט זרם וסוללה: תקציב הספק. אנרגיה זולה ≠ בטיחות.