בקר מנוע.

עובדים עם בקרים מסוג אחר? זה המקום בינתיים. אם יהיו הרבה דיונים על בקר מסויים, נוסיף פורום נפרד.

בקר מנוע.

הודעהעל ידי Michaelz1992 » ו' ינואר 06, 2012 8:47 pm

שלום :)

אני רשמתי תוכנה בשפת C לבקר מנוע :
https://www.4project.co.il/product.php?id=507&sectid=21

ומשום מה לא עובד לי.
אפשר לבדוק אולי איפשהו טעיתי.
קוד: בחר הכל
#include "REG_89C51.h"
#include "type_var_H.h"
#include "lcd_play.h"
void delay_lcd();            
void delay();

void forward()
{
  u8 data STB,i;
  P0_6 = STB;   // P0_6 connected to stb pin
  STB='1'; // For work, pin stb need to be '1'
   while(1)
    {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='0';//Motor A
        P0_1='1';//Motor A
        P0_2='1';//Motor B
        P0_3='0';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
    }//End if(n=='2')
}//End void forward()
//===================================================================
void reverse()
{
  u8 data STB,i;
  P0_6 = STB;   // P0_6 connected to stb pin
  STB='1'; // For work pin stb need to be '1'
   while(1)
    {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='1';//Motor A
        P0_1='0';//Motor A
        P0_2='0';//Motor B
        P0_3='1';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
    }//End if(n=='8')
}//End void reverse()
//===================================================================
void right()
{
  u8 data n = write_num();
  u8 data STB,i;
  P0_6=STB;   // P0_6 connected to stb pin
  STB='1'; // For work pin stb need to be '1'
   while(1)
    {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='0';//Motor A
        P0_1='0';//Motor A
        P0_2='1';//Motor B
        P0_3='0';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
    }//End if(n=='6')
}//End void right()
//===================================================================
void left()
{
  u8 data n = write_num();
  u8 data STB,i;
  P0_6=STB;   // P0_6 connected to stb pin
  STB='1'; // For work pin stb need to be '1'
   while(1)
    {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='0';//Motor A
        P0_1='1';//Motor A
        P0_2='0';//Motor B
        P0_3='0';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
    }//End if(n=='4')
}//End void left()
//===================================================================
void riht_point()
{
  u8 data n = write_num();
  u8 data STB,i;
  P0_6=STB;   // P0_6 connected to stb pin
  STB='1'; // For work pin stb need to be '1'
   while(1)
    {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='1';//Motor A
        P0_1='0';//Motor A
        P0_2='1';//Motor B
        P0_3='0';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
    }//End if(n=='9')
}//End void riht_point()
//===================================================================
void left_point()
{
  u8 data n = write_num();
  u8 data STB,i;
  P0_6=STB;   // P0_6 connected to stb pin
  STB='1'; // For work pin stb need to be '1'
   while(1)
    {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='0';//Motor A
        P0_1='1';//Motor A
        P0_2='0';//Motor B
        P0_3='1';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
    }//End if(n=='7')
}//End void left_point()
//===================================================================
void stop()
{
  u8 data STB,i;
  P0_6=STB;   // P0_6 connected to stb pin
  STB='1'; // For work pin stb need to be '1'
  while(1)
  {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='0';//Motor A
        P0_1='0';//Motor A
        P0_2='0';//Motor B
        P0_3='0';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
  }
}//End void stop()
//===================================================================
void standby()
{
  u8 data STB,i;
  P0_6=STB;   // P0_6 connected to stb pin
  STB='0'; // For work pin stb need to be '0'
  while(1)
  {
    for(i=0 ; i<9000000 ; i++)
    {
       P0_4='1';// PWM A get '1' to work full speed
      P0_5='1';// PWM B get '1' to work full speed
        P0_0='0';//Motor A
        P0_1='0';//Motor A
        P0_2='0';//Motor B
        P0_3='0';//Motor B
    }
    for(i=0 ; i<1000000 ; i++)
    {
      P0_4='0';// PWM A get '0' to delay
      P0_5='0';// PWM B get '0' to delay
    }
  }
}//End void standby()
Michaelz1992
 
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

הודעהעל ידי Alex » ו' ינואר 06, 2012 10:19 pm

אני לא מבין גדול בקוד ל-8051 ודומיו, אבל האם בקוד הבא אתה באמת מעביר 1 לוגי לרגל STBY?
קוד: בחר הכל
  u8 data STB,i;
  P0_6 = STB;   // P0_6 connected to stb pin
  STB='1'; // For work, pin stb need to be '1'


זה לא אמור להיות ככה?
קוד: בחר הכל
  P0_6 = '1';   // P0_6 connected to stb pin
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 730
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

הודעהעל ידי Michaelz1992 » ו' ינואר 06, 2012 10:36 pm

כן, זה אמור להיות כך.
זה בעיות קטנות.
אל תשים לב לזה.
בכל זאת משהו לא נותן לו לעבוד.
ועדיין לא גיליתי מה.
Michaelz1992
 
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

הודעהעל ידי Alex » ו' ינואר 06, 2012 11:50 pm

מה בעיות קטנות?
כל עוד ה-STB לא יהיה ב-1 לוגי הבקר לא יעבוד.
ועד כמה שאני מבין את הקוד שלך ה-STB לא מורם ל-1 כי אתה כותב שם ערך של משתנה שכנראה מכיל 0 כברירת מחדל.

הדבר הקטן הוא זה שאתה כל הזמן כותב משהו לפורטים בתוך הלופים שלך.
כדי לייצר PWM אתה צריך לכתוב 1, לחכות (אולי לופ ריק), לכתוב 0 ולחכות.
אין טעם לכתוב את אותו ערך 9 מיליון פעם ברצף.

אני גם לא יודע מה מהירות הריצה לך, תבדוק שאות ה-PWM שאתה מייצר מתאים למהירות שהבקר צריך לקבל.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 730
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

הודעהעל ידי Michaelz1992 » ש' ינואר 07, 2012 1:11 am

את ה-שטות שעשיתי של STB תיקנתי בדיוק דקה אחרי שפרסמתי.
אז אתה מתכוון פשוט לעשות while() וזהו, שירוץ.
ולא הבנתי לגבי ה-" כדי לייצר PWM אתה צריך לכתוב 1, לחכות (אולי לופ ריק), לכתוב 0 ולחכות."
אתה מתכוון שפשוט לעשות את זה כמה פעמים עם delay?

תודה על העזרה.
Michaelz1992
 
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

הודעהעל ידי Alex » ש' ינואר 07, 2012 8:50 am

כן. אפ יש לך פונקציה של delay עם זמן מוגדר, אז זה מה שצריך להשתמש בו.
אם פונקצית delay מקבלת ערכים של מיקרושניות ונגיד אתה רוצה לתת לבקר PWM של 1 קילוהרץ, כלומר כל המחזור הוא 1 מילישניה (או 1000 מיקרו),
אז צריך להיות משהו כזה:

קוד: בחר הכל
P0_0='0';//Motor A
P0_1='1';//Motor A
P0_2='1';//Motor B
P0_3='0';//Motor B

while(1)
{
P0_4='1';
P0_5='1';
delay(666);

P0_4='0';
P0_5='0';
delay(333);
}
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 730
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

הודעהעל ידי Michaelz1992 » ש' ינואר 07, 2012 1:25 pm

בדיוק על זה חשבתי כשאמרת לי לגבי ה-delay.
אני אנסה את זה עוד מעט:).

תודה רבה על העזרה שלך פה:).
Michaelz1992
 
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

הודעהעל ידי Michaelz1992 » ש' ינואר 07, 2012 1:28 pm

ורק שכחת להוסיף את הפורט '1'=P0_6 שלי שהוא בעצם רגל STB כדי שהבקר יעבוד.
Michaelz1992
 
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

הודעהעל ידי Michaelz1992 » ש' ינואר 07, 2012 2:45 pm

משום מה זה גם לא עובד.
יש אפשרות שיש בעיה ברכיב?או שאני כבר לגמרי שכחתי תוכנה?חחח
Michaelz1992
 
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

הודעהעל ידי Alex » ש' ינואר 07, 2012 8:18 pm

הקוד האחרון הוא לגבי ה-PWM ולא לכל הפרוייקט...

הכל אפשרי. אני יכול להגיד לך שרכיב זה עבר בדיקה אחרי היצור, כך שאני הייתי מחפש בעיות במקומות אחרים.
אולי חיבורים? מתחים?
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 730
הצטרף: ה' ינואר 28, 2010 8:27 pm

הבא

חזור אל בקרים אחרים

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot]