בקר FOC למנוע BLDC בסטנדרט רפואי, עם תצוגת LCD ובקרת מיקום של סיב-אופטי

פיתחנו פלטפורמת בקרה Embedded ברמת דיוק גבוהה, המיועדת להנעת מנוע BLDC באמצעות בקרת שדה מכוונת (FOC), ובמקביל לשליטה מדויקת על מיקום חוט סיב-אופטי המשמש להולכת אור בטיפולים רפואיים. המערכת כוללת ממשק משתמש גרפי מלא עם מסך TFT מגע קיבולי, המאפשר תכנות תרחישי תנועה, שליטה וניטור בזמן אמת.
הארכיטקטורה מבוססת על שני מיקרו-בקרים ייעודיים מסוג STM32, המאפשרים בקרה דטרמיניסטית על המנוע, עיבוד משובים מהיר וניהול מערכת אמין עבור יישומים רפואיים קריטיים.
ארכיטקטורת מערכת
יחידת בקרה ראשית: STM32H743
- מריצה את ממשק המשתמש, לוגיקת המערכת, מנוע הסקריפטים, מנגנוני בטיחות, לוגים ותקשורת
- מפעילה את מסך ה-TFT 2.4 אינץ׳ עם מגע קיבולי (240×320)
- טוענת קבצים, אנימציות ולוגים מכרטיס SD ומזיכרון SPI חיצוני
- מנטרת מתחי מערכת (סוללה / מטען / Vin) ואת תקינות המערכת
- שולחת פקודות תנועה לבקר המנוע דרך UART
- מאפשרת הגדרת תסריטי תנועת מנוע דרך ממשק מגע
- מנהלת:
- חיווי RGB למצב מערכת
- קלט ממסך מגע, כפתורים וחיישנים חיצוניים
- רישום שגיאות לכרטיס SD
- תקשורת USB/UART מול מחשב/מארח
יחידת בקרת מנוע: STM32H750
- בקר ייעודי לבקרת מנוע בשיטת FOC
- מיישם לולאות בקרה סגורות עבור:
- מיקום (Position)
- מהירות (Speed)
- זרם / מומנט (Current / Torque)
- מתממשק אל:
- אנקודר מגנטי אבסולוטי (12-bit)
- חיישני Hall (פנימיים + חיצוניים)
- גלגל חיכוך עם אנקודרי IR למדידת תנועת החוט
- חיישני חציצה אופטיים (Light Interrupters) לאזורי בטיחות
- חיישני זרם Shunt מסוג INA240
- מבצע מסלולי תנועה (Trajectories) המתקבלים מה-MCU הראשי
- מדווח סטטוס, שגיאות ומשובי מערכת בזמן אמת

מנגנון ייחודי: מיקום חוט הסיב-אופטי
חוט סיב-אופטי רפואי מוזז מכנית באמצעות מנוע ה-BLDC. כדי למדוד את מיקום החוט בצורה מדויקת, המערכת משתמשת במספר חיישנים משולבים:
| חיישן | מטרה |
|---|---|
| IR1 / IR2 / IR3 | זיהוי תנועת החוט ותוקף התנועה (בטיחות Go/No-Go) |
| אנקודר IR על גלגל החיכוך | מעקב אחר היסט החוט בפועל וכיוון התנועה |
| חיישן הול אבסולוטי | נקודת ייחוס B: מבטיחה עצירה מוחלטת וחזרה לאותו מיקום |
| אנקודר פנימי של המנוע | נקודת ייחוס A: מיקום יחסי |
| לולאות FOC של ה-STM32 | שמירה על תנועה מדויקת, מומנט ומהירות |
זה מאפשר למערכת לאתר ולהחזיר את החוט לאותו מיקום בדיוק, גם לאחר כיבוי והדלקה של המכשיר.
החוט מפיק הבזקי אור (Strobed Light) לטיפול רפואי, מסונכרנים עם תסריט התנועה של המנוע.
יכולות מנוע ו-FOC
המערכת משלבת יכולות מתקדמות לבקרת מנוע:
- בקרת שדה מכוונת (FOC) למקסימום יעילות מומנט
- עבודה בארבעה רבעים (שליטה מלאה בכל כיוון ובבלימה רגנרטיבית)
- יציבות מומנט במהירויות נמוכות
- לולאות מהירות ומיקום עם PID
- טווח הזנת מנוע: 5.5V–24V
- זרם יציאה: 3A רציף / 5A בשיא
- אנקודר מגנטי אינטגרלי 12-bit למיקום אבסולוטי
- פרופילי תנועה מבוססי תסריט (Scripted Motion Profiles)
- שליטה דרך ספרייה ב-C++ / Python
דרייבר מנוע: L6234, גשר תלת-פאזי
מדידת זרם: INA240, מגבר מדויק דו-כיווני

מערך ההספק
ארכיטקטורה רב-שלבית ומוגנת, התומכת במצבים:
| מצב | התנהגות |
|---|---|
| מצב Vin primary | טוען את הסוללה, מזין את המערכת, מבטל טעינת סוללה |
| מצב Battery mode | המערכת פועלת מסוללת 18650 |
| מצב Sleep mode | כיבוי חלקי, התעוררות ממגע/כפתור |
רכיבי מערכת ההספק:
- הגנת עומסים: TPS25983 (2.7–26V, זרם עד 18A, מוגן בפני טרנזיאנטים)
- מטען סוללה: BQ25308 (טעינת תא יחיד, עד 3A)
- ממירי מתח Buck 5V, Boost 12V ומספר רגולטורים LDO
- הגנות: זרם יתר, מתח יתר/חסר, ניטור עומס
- הפרדת אדמה (GND) למניעת רעשים וסינון EMI לשמירה על תקינות האותות
ממשקים
| ממשק | פונקציה |
|---|---|
| TFT LCD + מסך מגע קיבולי | ממשק משתמש להגדרת תסריטי תנועה |
| כרטיס SD | לוגים, תמונות, קבצי קונפיגורציה ותוכניות תנועה |
| זיכרון SPI חיצוני | אחסון אתחול לתקלות (Failsafe Boot) |
| UART למארח (Host) | דיאגנוסטיקה ושליטה |
| מחברי חיישנים JST/Pico מרובים | מיקום החוט, בטיחות, אנקודרים |
| כפתור הפעלה (Trigger) | התחלת תנועה |
| מחבר מנוע | BLDC + Hall + אנקודר |
דיאגרמת בלוקים של בקר ה-FOC:

וזו הדיאגרמה המלאה של בקרי ה-PID:

תמונות של המערכת המורכבת:


איך חישבנו את מרכיבי ה-FOC מהאלגוריתם:


מפיק רפרנס מומנט או זרם.
טרנספורמציית קלארק (Clarke):

טרנספורמציית פארק (Park):

מקדמי ה-PI של לולאת הזרם:

פארק הפוך (Inverse Park):

קלארק הפוך למתחי הנעה (SVPWM):

| שלב | מטרת המשוואה |
|---|---|
| Encoder (אנקודר) | חישוב θₑ ו-ω (זווית ומהירות) |
| Position PID (בקרת מיקום) | המרת שגיאת מיקום ← רפרנס מהירות |
| Speed PI (בקרת מהירות) | המרת שגיאת מהירות ← רפרנס מומנט/זרם |
| Clarke (קלארק) | המרת זרמי שלושת הפאזות ← iα, iβ |
| Park (פארק) | המרה ל-id, iq באמצעות θₑ |
| PI Current loops (לולאות זרם) | יצירת vd, vq לתיקון שגיאה |
| Inverse Park (פארק הפוך) | המרה חזרה ל-vα, vβ |
| SVPWM / Inverse Clarke | יצירת אותות PWM תלת-פאזיים |