בקר FOC למנוע BLDC בסטנדרט רפואי, עם תצוגת LCD ובקרת מיקום של סיב-אופטי
- Rotem Segev
- 9 בנוב׳
- זמן קריאה 3 דקות
פיתחנו פלטפורמת בקרה EMBEDDED ברמת דיוק גבוהה, המיועדת להנעת מנוע BLDC באמצעות בקרת שדה מכוונת (FOC), ובמקביל לשליטה מדויקת על מיקום חוט סיב-אופטי המשמש להולכת אור בטיפולים רפואיים. המערכת כוללת ממשק משתמש גרפי מלא עם מסך TFT מגע קיבולי, המאפשר תכנות תרחישי תנועה, שליטה וניטור בזמן-אמת.
הארכיטקטורה מבוססת על שני מיקרו-בקרים ייעודיים מסוג STM32, המאפשרים בקרה דטרמיניסטית על המנוע, עיבוד משובים מהיר, וניהול מערכת אמין עבור יישומים רפואיים קריטיים.

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

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

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

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

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


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


Outputs a torque or current reference.
Clark Transform:

Park Transform:

Current PI gains:

Inverse Park:

Inverse Clark to drive voltages (SVPWM):

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


תגובות