PDA

צפייה בגרסה מלאה : עזרה בבהגבלת עוצמת מנועים ומניעת ציפצוף



pardicimo
18-08-2019, 18:44:45
אודה לממוחים שיזרו לי בהגבלת הסל"ד ועוצמת המנועים וביטול הציפצוף במהירות נמוכה




int numPinsENG1 = 20;
int ledPinsENG1[] = {14, 15, 16, 17, 18, 19, 20, 21, 22, 23,24,25,26,27,28,29,30,31,32,33};
int ledStatesENG1[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW,LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int numPinsENG2 = 20;
int ledPinsENG2[] = {34, 35, 36, 37, 38, 39, 40, 41, 42, 43,44,45,46,47,48,49,50,51,52,53};
int ledStatesENG2[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW,LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};


// Analog pin A0 is where you hook the potentiometer up. Or microphone. Or w/e.
int sensorPinENG1 = A0;
int sensorValENG1 = 0;
int sensorPinENG2 = A1;
int sensorValENG2 = 0;

int enA = 9;
int in1 = A2;
int in2 = A3;

int enB = 10;
int in3 = A4;
int in4 = A5;


int SpeedControl1 = A0;
int SpeedControl2 = A1;

int MotorSpeed1 = 0;
int MotorSpeed2 = 0;

void setup() {
// set the digital pin as output:
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);


int i = 0;
int e = 0;
for(i = 0; i < numPinsENG1; i++) {
pinMode(ledPinsENG1[i], OUTPUT);
for(e = 0; e < numPinsENG2; e++) {
pinMode(ledPinsENG2[e], OUTPUT);
}
}
}

void loop(){
sensorValENG1 = analogRead(sensorPinENG1);
sensorValENG1 /= 50;
sensorValENG2 = analogRead(sensorPinENG2);
sensorValENG2 /= 50;// want this to be btn 0-10
// arduino has a 10bit A->D converter. So divide 1024 by 100 gives us ~ 0-10 scale.
//ENG1
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
//ENG2
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);


// Read the values from the potentiometers

MotorSpeed1 = analogRead(SpeedControl1);
MotorSpeed2 = analogRead(SpeedControl2);

// Convert to range of 0-255

MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 255);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 255);

// Adjust to prevent "buzzing" at very low speed

if (MotorSpeed1 < 8)MotorSpeed1 = 0;

if (MotorSpeed2 < 8)MotorSpeed2 = 0;


// Set the motor speeds

analogWrite(enA, MotorSpeed1);
analogWrite(enB, MotorSpeed2);


int i = 0;
int e = 0;
for(i = 0; i < numPinsENG1; i++) {
if(sensorValENG1 > i) {
ledStatesENG1[i] = HIGH;
}
else {
ledStatesENG1[i] = LOW;
}
digitalWrite(ledPinsENG1[i], ledStatesENG1[i]);

}
for(e = 0; e < numPinsENG2; e++) {
if(sensorValENG2 > e) {
ledStatesENG2[e] = HIGH;
}
else {
ledStatesENG2[e] = LOW;
}
digitalWrite(ledPinsENG2[e], ledStatesENG2[e]);

}
}

איזי
19-08-2019, 10:15:28
כמה שאלות:

1. תוכל להוסיף מידע לגבי סוג המנועים, Brushless או Brushed?
2. האם אתה מפעיל אותם עם בקר דומה לזה שמותקן בטיסן או מכונית? או שעל ידי בקר שמתאים יותר ל-DIY. כלומר אחד שאתה יכול לשלוט על התדר שלו בקוד.
3. איך אתה מודד את מהירות המנועים? MotorSpeed1 MotorSpeed2
4. זה הקוד המלא?

pardicimo
19-08-2019, 19:08:51
היי
1) מדובר במנוע DC פשוט (שמקבלים בערכות מתחילים באלקטרוניקה)
2) המנועים מחוברים לבקר L294N ומשם לארדואינו - השליטה על המנועים מתבצעת על ידי 2 פוטנציאלמטרים ליניארים ומווסטים את המהירות ואלו ממוחשים ע"י בר גרף עם 20 לדים להמחשת העוצמה
3) מהירות המנועים נמדדת ע"י הפוטנציאלמטרים
4) כן זה הקוד המלא.
____
הבהרה וחידוד,
1) המנועים מחוברים למטוס תצוגה והם כחלק מפרוייקט שאני עושה, כרגע בעוצמה נמוכה מנועי הDC משמיעים צפצוף וזה אמור להיעלם במהירות גבוהה אני מנסה לבטל את הצפצוף.
2) מטוס התצוגה עשויח מבלזה והרעידות מהמנועים כאשר אלו פועלים בעוצמה גבוהה עלול לפגוע במטוס כך שאני רוצה להגביל את מהירות המנועים.
כמו

איזי
19-08-2019, 19:20:55
כדי להגביל את מהירות המנועים (לפני שאני מתחיל לקרא על L294N ולחפש אם יש לי אחד בבית לבדיקה), פשוט תשנה את המיפוי:



MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 255);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 255);


כך שהמקסימום של הפוטנציומטרים יגיע נניח עד 180 במקום 255


MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 180);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 180);


לגבי הציפצוף, תן לי לחפור טיפה. או אולי לתת להם גם מינימום יותר גבוה? אלה אם המינימום לביטול הצפצוף גבוה מידי?

pardicimo
19-08-2019, 20:00:18
כדי להגביל את מהירות המנועים (לפני שאני מתחיל לקרא על L294N ולחפש אם יש לי אחד בבית לבדיקה), פשוט תשנה את המיפוי:



MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 255);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 255);


כך שהמקסימום של הפוטנציומטרים יגיע נניח עד 180 במקום 255


MotorSpeed1 = map(MotorSpeed1, 0, 1023, 0, 180);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 0, 180);


לגבי הציפצוף, תן לי לחפור טיפה. או אולי לתת להם גם מינימום יותר גבוה? אלה אם המינימום לביטול הצפצוף גבוה מידי?

תודה רבה!!!

אכן מהירות המנועים הוגבלה ל 80.
לגבי הצפצוף מהמנועים רשום שהפוצקציה הזו:
"// Adjust to prevent "buzzing" at very low speed

if (MotorSpeed1 < 8)MotorSpeed1 = 0;

if (MotorSpeed2 < 8)MotorSpeed2 = 0;"

אמורה לשלוט בצפצוף אבל ככל שאני מנסה לשחק איתה אני לא מצליח לבטלו..

איזי
19-08-2019, 20:47:04
אין לי בקר בשלוף לבדוק אבל מה שזה אומר:


if (MotorSpeed1 < 8)MotorSpeed1 = 0;
if (MotorSpeed2 < 8)MotorSpeed2 = 0;

זה שכל עוד מהירות המנוע קטנה מ-8, תאפס אותה. כלומר המנוע לא יכול להסתובב במהירות 1 עד 8.

אתה יכול לבצע את מה שעשינו עם המיפוי להקטנה של המהירות המקסימלית ולהתחיל את המיפוי מנניח 50 (ולהקשיב למנועים ולפי זה לשנות את הערך):


MotorSpeed1 = map(MotorSpeed1, 0, 1023, 50, 180);
MotorSpeed2 = map(MotorSpeed2, 0, 1023, 50, 180);

זה אמור לבצע אותו דבר כמו זוג השורות הראשונות.

איזי
20-08-2019, 20:11:22
pardicimo
נו??? השתקנו את המנועים?

אל תשאיר אותי במתח :)

pardicimo
20-08-2019, 22:05:48
היי סליחה,
לא המנועים לא הושתקו
כאשר שיניתי את זה MotorSpeed1 = map(MotorSpeed1, 0, 1023, 50, 180);
המנועים פשוט התחילו לעבוד מעוצמה 50 במקום מאפס, אך הצפצוף לא הפסיק...

מישהו אמר לי שאני צריך אולי לשנות את תדירות ה PWA בארדואינו.. רק שאין לי מושג איך לעשות זאת.. :)

איזי
22-08-2019, 14:06:49
שמע, נראה שהמודול הזה לא מאפשר שינוי של תדר העבודה שלו.
אני בכל מקרה לא מצאתי מספיק מידע כדי לעשות את זה בשינוי קוד פשוט.

מה שהייתי מנסה זה לחבר במקביל למנועים זוג קבלים ולנסות מידות שונות השילוב בינהם.

קבל אלקטרוליטי וקבל קרמי. יכול להיות שהם ימתנו את שינויי המתח על המנועים וישתיקו את הציפצוף.

Sent from my SM-G950F using Tapatalk

pardicimo
22-08-2019, 22:28:41
תודה רבה על הכל! סבלנו ועזרה.