בקר מנוע.

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

בקר מנוע.

שליחה על ידי Michaelz1992 »

שלום :)

אני רשמתי תוכנה בשפת C לבקר מנוע :
https://www.4project.co.il/product/507

ומשום מה לא עובד לי.
אפשר לבדוק אולי איפשהו טעיתי.

קוד: בחירת הכל

#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()
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 764
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

שליחה על ידי Alex »

אני לא מבין גדול בקוד ל-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
כל הרכיבים לפרוייקט שלכם
Michaelz1992
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

שליחה על ידי Michaelz1992 »

כן, זה אמור להיות כך.
זה בעיות קטנות.
אל תשים לב לזה.
בכל זאת משהו לא נותן לו לעבוד.
ועדיין לא גיליתי מה.
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 764
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

שליחה על ידי Alex »

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

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

אני גם לא יודע מה מהירות הריצה לך, תבדוק שאות ה-PWM שאתה מייצר מתאים למהירות שהבקר צריך לקבל.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
Michaelz1992
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

שליחה על ידי Michaelz1992 »

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

תודה על העזרה.
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 764
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

שליחה על ידי Alex »

כן. אפ יש לך פונקציה של 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
כל הרכיבים לפרוייקט שלכם
Michaelz1992
הודעות: 14
הצטרף: ו' אוקטובר 14, 2011 12:06 am

Re: בקר מנוע.

שליחה על ידי Michaelz1992 »

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

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

Re: בקר מנוע.

שליחה על ידי Michaelz1992 »

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

Re: בקר מנוע.

שליחה על ידי Michaelz1992 »

משום מה זה גם לא עובד.
יש אפשרות שיש בעיה ברכיב?או שאני כבר לגמרי שכחתי תוכנה?חחח
סמל אישי של משתמש
Alex
מנהל האתר
הודעות: 764
הצטרף: ה' ינואר 28, 2010 8:27 pm

Re: בקר מנוע.

שליחה על ידי Alex »

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

הכל אפשרי. אני יכול להגיד לך שרכיב זה עבר בדיקה אחרי היצור, כך שאני הייתי מחפש בעיות במקומות אחרים.
אולי חיבורים? מתחים?
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
שלח תגובה