בעיה עם מנוע סרוו

הפורום הראשי, אתר הרובוטיקה הישראלי

המנהלים: אסף פוניס, גיא יונה

בעיה עם מנוע סרוו

הודעהעל ידי greg » ה' מאי 21, 2009 12:41 pm

שלום לכם,
אני מנסה להפעיל מנוע סרוו קטן(Futaba s3004) בעזרת software pwm עם pic 16f877,ולוח פיתוח olimex pic-p40-usb .
זה הקוד שאני עובד איתו:
קוד: בחר הכל
#include <16F877A.H>

#fuses HS, NOLVP
#use delay(clock = 20000000)

#define PWM_PIN  PIN_B1

#define LOOPCNT 400

int32 width;
static int32 loop = LOOPCNT;
static int32 pulse;

//-------------------------------
#INT_RTCC
void tick_interrupt(void);
void init_main();
//====================================
void init_main()
 {
  set_tris_b(0x00);            // servo port
  output_b(0x00);
   
   
 }

void main()
{
width = 40;

setup_counters(RTCC_INTERNAL | RTCC_8_BIT, RTCC_DIV_1);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
 
while(1);
}

//====================================
#INT_RTCC
void tick_interrupt(void)
{

if(--loop == 0)
  {
   loop = LOOPCNT;
   pulse = width;
  }

if(pulse)
  {
   output_high(PWM_PIN);
   pulse--;
  }
else
  {
   output_low(PWM_PIN);
  }

}


הבעיה היא שהמנוע רוב הזמן רק עושה רעש של גלגלי שיניים מסתובבים ללא סיבוב מעשי,אך לפעמים הוא כן מסתובב כאשר לא שיניתי דבר בקוד.
האם לדעתכם יש איזו שהיא בעיה בקוד או שהבעיה יותר בכיוון של המנוע,המתחים או אולי המומנט שחסר למנוע?
תודה מראש על העזרה.
greg
משתמש חדש
משתמש חדש
 
הודעות: 6
הצטרף: ה' מאי 21, 2009 12:29 pm

הודעהעל ידי i-pink » ה' מאי 21, 2009 12:54 pm

תבנה TESER /SERVO DRIVER מ555 ותרא אם הבעיה חוזרת גם שם.
i-pink
משתמש ותיק
משתמש ותיק
 
הודעות: 200
הצטרף: ד' ינואר 21, 2009 11:10 pm

הודעהעל ידי אמנון » ו' מאי 22, 2009 9:07 am

GREG שלום
ראשית תמיד תירשום באיזה קומפיילר את עובד.
שנית לפי המערך שלך אני מנחש שאתה מבן גוריון (אני לא טועה , נכון?)

אני לא עובר על הקוד שלך לעומק כרגע, אבל מיספר שאלות :

האם רוכב הפולס מתאים להגדרות של מנוע סרבו ?
האם מנוע הסרבו שלך פרוץ או לא (אם הוא לא פרוץ הוא ישאר תמיד באותה זוויות אלא אם תשנה לו את הזוית ההתחלתית או שתשנה פעם בכמה זמן את רוכב הפולס בתוכנית).

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

אם אין לך סקופ אתה יכול להכפיל את הזמן של המערכת ולחבר במקום הסרבו LED וליראות בעיין שהתוכנית שלך עובדת נכון).

אתה גם יכול להתחיל בתוכנית לבדיקת סרבואים פשוטה ולא על בסיס אינטרפטים (אלא על בסיס השהיות) שרק תראה לך שהמערכת עובדת נכון .

אמנון
:shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

הודעהעל ידי greg » ו' מאי 22, 2009 11:44 am

שלום אמנון ,
כן , אתה לא טועה.
הקומפיילר זה ccs4.057 , המנוע אכן פרוץ לכן אני מצפה שהוא יסתובב.
בדקתי את היציאה בסקופ והיא מתאימה לפולס(אני יוצא מתוך הנחה שהמנוע צריך20ms עם רוחב פולס של 10%). כמו כן המנוע כבר הסתובב לי כמה פעמים עם הקוד הנ"ל ואחרי כמה סיבובים הפסיק ללא שום התערבות מצידי, ועושה את זה אקראי .פרסמתי את הקוד בפורום של ccs וקיבלתי רק הערות בונות כלומר הקוד אמור לעבוד.
הכיוון שלי הוא שהסרוו דפוק או שיש איזו שהיא בעיית מתחים\זרמים.זה יהיה נחמד אם תוכל להסתכל בעצמך על כל העסק פעם הבאה שתהיה באוניברסיטה.

אשמח לשמוע עוד רעיונות.
תודה ושבת שלום.
greg
משתמש חדש
משתמש חדש
 
הודעות: 6
הצטרף: ה' מאי 21, 2009 12:29 pm

הודעהעל ידי i-pink » ו' מאי 22, 2009 12:35 pm

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

אם מדובר בשיטה הראשונה אז אלי הפוטנציומטר זז?

א מובר בשניה, הכי פשוט לבדור עם מעגל של SERVO TESTER מ555 ותוך 2 שניות לדעת אם הSERVO דפוק או לא.

תכלס אם הוא דפוק, תבנה H בריג' קטן,

ותפר את המנוע מהמעגל של הSERVO, ותח בר לH בריג' את המנוע בלבד..
i-pink
משתמש ותיק
משתמש ותיק
 
הודעות: 200
הצטרף: ד' ינואר 21, 2009 11:10 pm

הודעהעל ידי אמנון » ו' מאי 22, 2009 12:51 pm

ענבר יש עוד שיטה, זה סרבו של האוניברסיטה , אז מחליפים אותו :)

גרג - אם הסרבו פרוץ תיכתוב קוד שעושה את הדבר הבא:
מרים את הרגל
ממתין 1.2 מילי שניות
מוריד את הרגל
ממתין 16.8 מילי שניות
וחוזר חלילה.

כמו כן אם אתה עובד עם מחשב נייד תעבור למחשב רגיל , מיפני שאולי המחשב לא מספק מספיק זרם עבור הזזת הסרבו , ותפעיל את הסרבו ללא מאמץ.

אמנון

:shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

הודעהעל ידי greg » ו' מאי 22, 2009 1:20 pm

ניסיתי עם delay פשוט של 2\18 (לפי מה שבדקתי delay לא עובד עם ספרות אחרי הנקודה ) וקיבלתי את אותו הדבר: המנוע הסתובב חצי דקה והפסיק .בפעם השנייה שהרצתי את התוכנית הוא כבר לא הסתובב.הרצתי את הקוד המקורי עם הled והוא מהבהב.
לצערי סוף שבוע אני תקוע עם נייד אבל גם במעבדה עם נייח קיבלתי את אותם התוצאות.
אני מגיע למסקנה שהבעיה במנוע. האם אני צודק?
תודה.
greg
משתמש חדש
משתמש חדש
 
הודעות: 6
הצטרף: ה' מאי 21, 2009 12:29 pm

הודעהעל ידי אמנון » ו' מאי 22, 2009 1:28 pm

גרג
ב CCS C יש לך שתי פקודות DELAY
אחת DELAY_MS לאלפיות
ואחרת SELAY_US למיליוניות.

אתה יכול להגיע לערכים שצינתי עם הפקודה השניה
בכוונה אני לא מכוון לקצה התנוע תישתמש בערכים שאני נתתי.

האם יש לך ספק שהוא 5וולט או סוללות שיכולות להפעיל את הסרבו שלא בהיתבסס על המחשב הנייד ?

ושים לב שהמחזור שאני מכוון אותך אליו הו 18 אלפיות לא 20
אמנון :shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

הודעהעל ידי greg » ו' מאי 22, 2009 2:01 pm

אז ככה, השתמשתי בdelay_us(1200) ן-delay_us(16800) והמנוע אפילו לא עושה רעש כמו מקודם . בdelay_ms ,הרעש קיים.
אני מפסיק לשבור את הראש על זה עד שיהיה לי מנוע אחר או מקור מתח אחר.
תודה לשניכם על העזרה.
greg
משתמש חדש
משתמש חדש
 
הודעות: 6
הצטרף: ה' מאי 21, 2009 12:29 pm

הודעהעל ידי i-pink » ו' מאי 22, 2009 5:01 pm

סרוו יכול לעבוד על מתח של בין 4.8 ל6V והוא יעבוד מעולה..

אז אתה יכול לקנות 4 AA אלקליין או נטענות, ואז לא תהיה לך בעיה של זרם לסרוו
i-pink
משתמש ותיק
משתמש ותיק
 
הודעות: 200
הצטרף: ד' ינואר 21, 2009 11:10 pm

הודעהעל ידי greg » א' מאי 24, 2009 12:33 am

תודה i-pink , אני כבר אסתדר עם החשמל בצורה כזאת או אחרת.

שאלה אחרת . יש טעם לפרסם פה קוד שאני כותב ולבקש יעוץ לגביו? אני יודע שיש לccs פורום ו כבר השתמשתי בו אבל יותר נוח לי לשאול שאלות בעיברית.
תודה.
greg
משתמש חדש
משתמש חדש
 
הודעות: 6
הצטרף: ה' מאי 21, 2009 12:29 pm

הודעהעל ידי אמנון » א' מאי 24, 2009 8:47 am

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

אמנון :shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

מנועי סרבו דיגיטלים

הודעהעל ידי greg » ב' יוני 01, 2009 8:50 pm

המשך הרפתקאותי .
הצלחתי להפעיל בצורה מושלמת 3 מנועי סרבו אנלוגים שעובדים עם 50 Hz .החלפתי למנועי סרבו דיגיטלים ומסתבר שהם צריכים 300 Hz .שיניתי את הקוד ואכן שלושת היציאות מוציאות פולסים של 300 Hz .אבל כאשר אני מחבר את המנועים , כל המערכת מתחילה לעשות שטויות . או שהמנועים לא מסתובבים או שאין פולסים ביציאות והשטות האהובה עלי: pwm בשלושת היציאות עובד ב loop אין סופי כשאני אפילו לא קרוב לזה בקוד.
האם יצא למישהו לעבוד עם סרבו דיגיטלי ויכול לעזור לי ? אולי צורת החיבור של דיגיטלים שונה מאלה האנלוגים?
תודה.
greg
משתמש חדש
משתמש חדש
 
הודעות: 6
הצטרף: ה' מאי 21, 2009 12:29 pm

הודעהעל ידי אמנון » ב' יוני 01, 2009 9:08 pm

גרג
את הבעיה הזאת לא שמעתי עדיין . אני הייתי במקביל לשאלות כאן מחפש על זה תשובה בGOOGLE , פשוט כי אילו סרבואים יקרים וניראה לי שפחות אנשים כאן (גם בארץ) הישתמשו בהם.

אמנון :shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

Re: בעיה עם מנוע סרוו

הודעהעל ידי xalmek » ו' נובמבר 17, 2023 3:41 pm

xalmek
רובוטריק
רובוטריק
 
הודעות: 221558
הצטרף: ה' נובמבר 16, 2023 10:48 am

הבא

חזור אל פורום הרובוטיקה

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ו 6 אורחים

cron