מציג תוצאות 1 עד 4 מתוך 4

נושא: טיימר אלקטרוני לטיסנים חופשיים

  1. #1
    תאריך הצטרפות
    Sep 2013
    הודעות
    171
    תודה
    37
    קיבל/ה 17 תודות ב-13 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts

    טיימר אלקטרוני לטיסנים חופשיים

    שלום,
    במקביל לפרוייקט ה-GPS Tracker שעדיין נמשך, החלטתי לנסות להשתמש בכישורים החדשים שרכשתי בזכותו, לפיתוח מוצרים נוספים.

    אז החלטתי לפתח מוצר פשוט בהרבה (שהתברר בדיעבד שהוא לא כזה פשוט):
    טיימר אלקטרוני!
    כל מה שהוא אמור לעשות זה למדוד זמן מוגדר מראש, ובסופו, להזיז סרוו, וכך לגרום לטיסן לבצע נחיתה.
    המטיס אמור להיות מסוגל לתכנת את הטיימר - לשנות את הזמן המוגדר לטיסה, וגם לבחור את כיוון הסיבוב של הסרוו.
    אז מה מורכב כ"כ?
    על פניו פרוייקט פשוט, אבל, חשיבות עליונה כאן היא הגודל והמשקל - מה שמאוד פוגע בחווית המשתמש.
    החלטתי להתקין כפתור אחד ושני לדים, אדום וכחול בתור ממשק המשתמש.
    בחרתי להשתמש ב-Attiny85 בתור הבקר.
    לאבטיפוס השתמשתי בגרסה הגדולה שלו (PDIP), שאפשר לחבר בקלות למטריצה.
    הצ'יפ עבד עם השעון הפנימי בקצב של 8MHZ, ופרט לקושי שבדיבוג, או יותר נכון - בחוסר דיבוג, הפיתוח היה די מהיר.
    היה בהתחלה קצת קושי בתפעול הסרוו, שכן כדי לגרום לו לעבוד, היה צריך לקרוא כל הזמן לפונקציית Refresh (של ספריית software servo), בניגוד לשימוש האינטואיטיבי הפשוט בארדואינו רגיל.

    אז הזמנתי מסין את גרסת ה-SOIC של הבקר, וכאן התחילו לצוץ כל הבעיות.
    ראשית, הצ'יפ עבד בתדר של 1MHZ. על פניו הכל היה נראה תקין, עד שניסיתי להזיז את הסרוו - הוא התחיל לרעוד ולא הצליח להשאר יציב במקום.
    ניסיתי להבין מה קרה שם, והתברר לי שככל הנראה במהירות שעון איטית שכזו, פעולות פסיקה שמתבצעות ברקע, גורמות לסיגנל להיות מלוכלך.
    ב-8MHZ כנראה הסיגנל גם מלוכלך, אך זה לא מורגש בכלל.
    אז החלטתי לעזוב את הספרייה ההיא, ולממש בעצמי את הסיגנל PWM - וגם אז קרה אותו הדבר.
    לאחר קריאה נוספת ברשת, הבנתי שעלי לכבות את הפסיקות, במהלך הפעלת הסרוו, ולהדליק מחדש לאחר מכן (משך שתי שניות).
    ואז אכן הסרוו זז חלק! אך התוכנה נתקעה בלולאה של השתי שניות...
    מסתבר שהלולאה, התבססה על התזמון של פונקציית micros, שבעצמה מבוססת על הפסיקות.
    אם הפסיקות כבויות לזמן רב מדי, נוצרת חריגה שגורמת לפונקציה להפסיק להתעדכן (או להתעדכן במספרים שליליים) - אני לא סגור בדיוק למה ואיך זה קורה,
    אבל ברגע שדאגתי להדליק את הפסיקות שוב ושוב בכל איטרציה של הלולאה - הבעיה נפתרה, והקוד המשיך לרוץ כרגיל.

    את הלדים חיברתי ביחד באנודה לאותו הנגד - בנסיון לחסוך עוד נגד, מה שמנע משניהם להדלק בו זמנית.
    באב טיפוס השתמשתי בלד ירוק וצהוב ובהם לא היתה בעיה שכזו.
    הפיתרון לזה היה להדליק את הלד האדום בעזרת אות PWM בעוצמה נמוכה יותר, וכך הלד הכחול נדלק גם הוא.
    בדיעבד היה עדיף שיהיה עוד נגד ושהלדים לא יהיה תלויים אחד בשני.

    בהמשך, התחילו לצוץ בעיות עם המתג.
    למרות שהגדרתי את הפין כ-Input PullUp, לאחר כמה דקות של פעולה, המעגל התחיל להשתגע, כאילו מישהו רוקד סטפס על הכפתור.
    שורש הבעיה מורכב משני דברים:
    1. כנראה המעטפת המתכתית של הכפתור, אשר אינה מחוברת לאף אחד מהמוליכים שלו - מגיעה די קרוב לשני הפדים, וכנראה שיש זליגה.
    ניתוק של המתג והלחמתו מחדש מעט בצד, ייצבה במעט את הבעיה, אך לא לגמרי.
    2. כנראה שהנגד הפנימי לא עושה עבודה מספיק טובה. אחרי שהלחמתי נגד של 220 אוהם בין הפלוס לרגל של המפסק, הבעיה נפתרה לחלוטין.
    ניסיתי גם לחבר קבל של 100nF בין ההדקים, להקטנת רעשים, אך זה לא עזר.

    למדתי לעבוד עם Eagle ושרטטתי כמה סוגי מעגלים שיתאימו למתגים שונים.
    הכנתי גם מעגל עבור ביצוע הצריבה של התוכנה:


    הטיימר שוקל פחות מ-1 גרם!




    וסרטון שמסביר על הפעלת הטיימר:
    תמונות ממוזערות מצורפות תמונות ממוזערות מצורפות Click image for larger version. 

Name:	20161128_224501.jpg‏ 
Views:	121 
Size:	222.3 קילובייט 
ID:	3987   Click image for larger version. 

Name:	WhatsApp Image 2016-11-25 at 23.08.40 (1).jpeg‏ 
Views:	119 
Size:	96.7 קילובייט 
ID:	3988   Click image for larger version. 

Name:	WhatsApp Image 2016-11-25 at 23.08.40.jpeg‏ 
Views:	116 
Size:	58.0 קילובייט 
ID:	3989  
    נערך לאחרונה על ידי liav; 28-11-2016 בשעה 22:00-24.

  2. מי אמר/ה ל-liav תודה על ההודעה המועילה הזו:

    NoamArduino (30-11-2016)

  3. פרסומת
  4. #2
    תאריך הצטרפות
    Mar 2015
    מיקום
    פתח תקווה
    הודעות
    208
    תודה
    1
    קיבל/ה 32 תודות ב-31 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts
    יפה מאד.
    לגבי תכנון PCB. אתה צריך למלא בנחושת את כל המשטח (cooper pour) עם כמובן מרווח מינימלי בין המוליכים. המעגל יראה מקצועי.
    הסיבות שעושים את זה הן: (1) הפחתה של כמות נחושת שהחומצה צריכה לאכל (2) כאשר יש 4 שכבות ומעלה המעגל יציב ולא מתעקם כי הוא מחוזק ע"י הנחושת שמפוזרת על כל המשטחים.
    כדי לעשות משטחים בבתוכנת Eagle אתה מצייר פוליגון סביב כל הלוח, מגדיר אותו כסיגנל אדמה והתוכנה תמלא אותו אוטומטית.
    ש.ר. תכנון ופיתוח כרטיסים אלקטרוניים, ארדואינו, FPGA, Verilog, תוכנה וחומרה. sreches@gmail.com
    http://www.arduino-freelance.com

  5. מי אמר/ה ל-foont תודה על ההודעה המועילה הזו:

    liav (29-11-2016)

  6. #3
    תאריך הצטרפות
    Sep 2013
    הודעות
    171
    תודה
    37
    קיבל/ה 17 תודות ב-13 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts
    תודה,
    אני מכיר את זה ועשיתי זאת במעגל אחר.
    לא הכרתי את יתרון העניין של החומצה, אבל היות ואני מזמין את זה מיצרן, לא לקחתי את זה כשיקול.

    מדובר במעגל 2 שכבות.

    אולי להבא עדיף להוסיף את הנחושת.

    Sent from my LG-H815 using Tapatalk

  7. #4
    תאריך הצטרפות
    Mar 2015
    מיקום
    פתח תקווה
    הודעות
    208
    תודה
    1
    קיבל/ה 32 תודות ב-31 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts
    חוץ מיתרונות מבחינת ייצור שהזכרתי יש גם יתרונות חשמליים:
    משטח אדמה הוא בעל מוליכות טובה יותר ממוליך דק הוא פחות רועש, יכול להעביר זרם גבוה יותר ויכול לשמש גם כסיכוך.
    ש.ר. תכנון ופיתוח כרטיסים אלקטרוניים, ארדואינו, FPGA, Verilog, תוכנה וחומרה. sreches@gmail.com
    http://www.arduino-freelance.com

  8. מי אמר/ה ל-foont תודה על ההודעה המועילה הזו:

    liav (29-11-2016)

הרשאות פרסום

  • אין באפשרותך לפרסם נושאים חדשים
  • אין באפשרותך לפרסם תגובות
  • אין באפשרותך לצרף קבצים
  • אין באפשרותך לערוך את הודעותיך
  •  
הרשמה