
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46



כרגע אני בונה משדר/מקלט RC המבוסס על שבב ה- RF SX1280. אחת המטרות של הפרויקט היא שאני רוצה רזולוציית סרוו של 12 סיביות מהמקלות עד הסרווס. בין היתר מכיוון שלסרוואות דיגיטליות מודרניות יש רזולוציה של 12 סיביות שנית משדר ברמה גבוהה ממילא משתמש ב -12 סיביות. בדקתי כיצד אוכל לייצר אותות PWM ברזולוציה גבוהה במכשירי STM32. אני משתמש בגלולה שחורה (STM32F103C8T8) כרגע עבור אב הטיפוס.
שלב 1: רשימת חלקים
חוּמרָה
- כל לוח פיתוח STM32F103 (גלולה כחולה, כדור שחור וכו ')
- בנק כוח USB כאספקת חשמל
- מתכנת STM32 (Segger j-links, ST-LINK/V2, או פשוט שיבוט st-link)
תוֹכנָה
- STM32CubeMX
- Atollic TrueSTUDIO עבור STM32
- מקור הפרויקט מ- github
שלב 2: הפתרון הברור



כנראה שהפתרון הקל ביותר הוא להשתמש באחד הטיימר שיכול ליצור אותות PWM, כמו TIM1-3 ב- STM32F103. עבור סרוו דיגיטלי מודרני קצב המסגרות יכול לרדת ל -5 אלפיות השנייה בערך, אך עבור סרוו אנלוגי ישן הוא אמור להיות 20 מילישניות או 50 הרץ. אז, כתרחיש הגרוע ביותר בואו לייצר את זה. עם שעון 72 מגה -הרץ ורזולוציה נגדית של טיימר 16 סיביות, עלינו להגדיר את מסדר הטיימר למינימום 23 על מנת לכסות את קצב המסגרות של 20 מילי -שניות. בחרתי 24 כי אז במשך 20 אלפיות השנייה אני צריך להגדיר את המונה בדיוק ל 60000. אתה יכול לראות את ההתקנה של CubeMX ואת אותות PWM של 1 ו -1.5 אלפיות השנייה שנוצרו בצילומי המסך. למרבה הצער, במשך 1 ms יש להגדיר את מונה הטיימר ל -3000, דבר שייתן לנו רזולוציה של 11 ביט בלבד. לא נורא, אבל המטרה הייתה 12 ביט, אז בואו ננסה משהו אחר.
כמובן שאם הייתי בוחר בקר מיקרו עם מונה טיימר 32 סיביות, כמו STM32L476 רזולוציה זו יכולה להיות גבוהה בהרבה והבעיה תיפתר.
אבל כאן, ברצוני להציע פתרון חלופי שיגדיל עוד יותר את הרזולוציה גם ב- STM32F103.
שלב 3: טיימרים מדורגים ברזולוציה גבוהה יותר



הבעיה העיקרית עם הפתרון הקודם היא שקצב הפריימים (20 אלפיות השנייה) גבוה יחסית לאות ה- PWM שנוצר בפועל (בין 1 ל -2 אלפיות השנייה), ולכן אנו מבזבזים כמה סיביות מוערכות עבור 18 השניות הנותרות כאשר אנו מחכים המסגרת הבאה. ניתן לפתור זאת על ידי טיימרים מדורגים באמצעות תכונת קישור הטיימר לסנכרון.
הרעיון הוא שאשתמש ב- TIM1 כמאסטר ליצירת קצב הפריימים (20 אלפיות השנייה) ו- TIM2, TIM3 כדי להתמודד עם אותות PWM כעבדים. כאשר המאסטר מפעיל את העבדים הם יוצרים רק אות PWM במצב דופק אחד. לכן אני צריך לכסות רק 2 אלפיות השנייה בטיימרים אלה. למרבה המזל אתה יכול להפיל את הטיימרים האלה בחומרה, כך שהסנכרון הזה לא צריך שום התערבות של המעבד וזה גם מאוד מדויק, הרטט נמצא באזור ה- ps. אתה יכול לראות את ההתקנה של CubeMX בצילומי המסך.
כפי שאתה יכול לראות בחרתי 3 בתור prescalar אז במשך 2 ms אני צריך להגדיר 48000 בדלפק הטיימר. זה נותן לנו 24000 עבור 1 ms שזה בעצם יותר מה שאנחנו צריכים בשביל רזולוציה של 14 ביט. Tadaaaa…
אנא תסתכל על צילומי המסך של האוסילוסקופ במבוא לתוצאה הסופית. הערוץ 3 (סגול) הוא ההפסקה של הטיימר הראשי אשר תפעיל את המלחים ליצירת דופק אחד. ערוץ 1 ו -4 (קרן צהובה וירוקה) הם אותות ה- PWM בפועל שנוצרים על ידי טיימרים שונים. שים לב שהם מסונכרנים אך הם מסונכרנים בקצוות הנגררים, כלומר בגלל מצב PWM 2. זו לא בעיה, מכיוון שקצב ה- PWM עבור הסרוו המסוים עדיין נכון.
יתרון נוסף של פתרון זה הוא ששינוי קצב המסגרות פירושו שינוי התקופה ב- TIM1 בלבד. עבור סרוו דיגיטלי מודרני אתה יכול לרדת אפילו ל-200-300 הרץ, אך אנא עיין במדריך של סרוו אם אתה רוצה לכוונן.
מוּמלָץ:
מונה תדר ברזולוציה גבוהה: 5 שלבים (עם תמונות)

מונה תדרים ברזולוציה גבוהה: מדריך זה מציג מונה תדרים הדדי המסוגל למדוד תדרים במהירות ובדיוק סביר. הוא עשוי עם רכיבים סטנדרטיים וניתן להכין אותו בסוף שבוע (לקח לי קצת יותר :-)) עריכה: הקוד זמין כעת
מצלמת רשת ברזולוציה גבוהה: 9 שלבים (עם תמונות)

מצלמת רשת ברזולוציה גבוהה: במשך כמה שנים השתמשתי במצלמת אינטרנט מבוססת RPi (עם מודול PiCam). התמונות שהופקו היו בסדר אבל אז, היה הרגע שבו לא הייתי שבע רצון יותר מהאיכות. החלטתי להכין מצלמת רשת ברזולוציה גבוהה. החלקים הבאים עם
QuickFFT: FFT במהירות גבוהה עבור Arduino: 3 שלבים

QuickFFT: FFT במהירות גבוהה עבור Arduino: ל- Arduino אופייני יש זיכרון RAM מוגבל וכוח עיבוד, ו- FFT הוא תהליך אינטנסיבי לחישוב. עבור יישומים רבים בזמן אמת, הדרישה היחידה היא לקבל תדר עם משרעת מרבית או נדרש לזהות שיאי תדרים. באחד מ
OpenLogger: ברזולוציה גבוהה, Wi-Fi מופעל, קוד פתוח, רישום נתונים נייד: 7 שלבים

OpenLogger: רושם נתונים ברזולוציה גבוהה, Wi-Fi מופעל, קוד פתוח, לוגר נתונים נייד: OpenLogger הוא לוגר נתונים נייד, בעל קוד פתוח בעלות נמוכה ורזולוציה גבוהה שנועד לספק מדידות באיכות גבוהה ללא צורך בתוכנה יקרה או תוכנת כתיבה. מאפס. אם אתה מהנדס, מדען או חובב שאינו
כיצד להוציא תמונות ברזולוציה גבוהה ממדריך: 4 שלבים

כיצד להוציא תמונות ברזולוציה גבוהה ממדריך: האם באמת נהנית מהתמונה המתאימה הזו ורצית לשמור עותק שלה ברזולוציה גבוהה? אפשר להתעלם בקלות מהתכונה הקטנה והגדולה הזו