In today’s guide, we will go over how to find out how much force a linear actuator is applying by monitoring the amount of current it is using. This will be one of our more advanced guides and will require some complex coding, calibrating and programming. We will be covering the monitoring of analog input and how it utilizes its functions. For this project, we’ll be using a מגה-מוטו פלוס, א מפעיל ליניארי (אנחנו משתמשים ב-PA-14 שלנו מיני מפעיל), א ארדואינו אונו ו-א ספק כוח של לפחות 12 וולט.

כדי להתחיל, נצטרך לבצע חיווט כדי לחבר את הכל יחד. התחילו בחיבור ה-MegaMoto לארדואינו, פשוט הניחו את ה-MegaMoto מעל ה-Uno לשם כך. לאחר מכן חברו חוט מהדק BAT+ שנמצא ב-MegaMoto לפין Vin שנמצא ב-Uno.

כעת עלינו לחבר את חוטי המפעילים הליניאריים להדקים A ו-B במגה-מוטו ולחבר את מקור הכוח 12V ל-BAT+ ואת GND ל-BAT-. נצטרך גם לחווט שני כפתורים לבקרה על ידי חיווט כל אחד מהם בין פין שאינו בשימוש ל-GND. אנו ממליצים לחבר את הכפתורים ללוח ניסויים.

עכשיו הגיע הזמן לקצת קידוד עם הארדואינו אונו. אנחנו רוצים לתכנת את הכפתורים כך שיוכלו לשלוט מתי המפעיל ייפתח ונסוג. הזרם יתחיל להיות מנוטר ברגע שהמפעיל ייפתח וזה יאפשר לנו לראות אם הוא עובר את מגבלת הזרם המרבית או לא. אם הוא עובר את הגבול, המפעיל יעצור אוטומטית עד שתבחרו לסגת. בהתחשב בכך שלמנועים בתוך המפעילים יש עלייה גדולה בזרם כשהם מופעלים לראשונה, לקוד שנזין תהיה השהייה קצרה לפני שהוא יתחיל לנטר את הזרם. קוד זה יוכל לקרוא מתי המפעיל הגיע למתגי הגבול שלו, כלומר כאשר הזרם יורד ל-0.
const int EnablePin = 8;
קבוע int PWMPinA = 11;
const int PWMPinB = 3; // סיכות עבור Megamoto
const int כפתורשמאל = 4;
const int buttonRight = 5;//כפתורים להזזת המנוע
const int CPin1 = A5; // משוב מנוע
int leftlatch = נמוך;
int rightlatch = LOW;// נעילת מנוע (משמשת להיגיון קוד)
int hitLimits = 0;//התחל ב-0
int hitLimitsmax = 10;//ערכים כדי לדעת אם הושגו מגבלות הנסיעה
זמן משוב ארוך = 0; // חייב להיות ארוך, אחרת הוא גולש
int firstfeedbacktimedelay = 750; //השהיה ראשונה להתעלמות משיא הזרם
int feedbacktimedelay = 50; //השהיה בין מחזורי משוב, באיזו תדירות ברצונך לבדוק את המנוע
currentTimefeedback = 0; // must be long, else it overflows unceTime = 300; //amount to debounce buttons, lower values makes the buttons more sensitivelong lastButtonpress = 0; // timer for debouncing
זמן ניתוק נוכחי ארוך = 0;
int CRaw = 0; // ערך קלט עבור קריאות נוכחיות
int maxAmps = 0; // מגבלת טריפ
bool dontExtend = false;
bool firstRun = true;
bool fullyRetracted = false; // לוגיקת תוכנית
הגדרת ריק ()
{
סידורי.התחלה(9600);
מצב פינים (EnablePin, פלט);
מצב פינים (PWMPinA, פלט);
pinMode(PWMPinB, OUTPUT);//הגדרת יציאות מנוע
מצב_pin(כפתור_שמאלי, קלט);
pinMode(buttonRight, INPUT);//כפתורים
digitalWrite(כפתורשמאל, גבוה);
digitalWrite(buttonRight, HIGH);//הפעלת משיכות פנימיות
pinMode(CPin1, INPUT);//הגדרת קלט משוב
נוכחיזמןהפסקה = מילישניות();
משוב זמן נוכחי = 0; // הגדרת זמנים ראשוניים
maxAmps = 15;// הגדר כאן את הזרם המקסימלי
}//סיום ההתקנה
לולאת ריק ()
{
latchButtons();// בדוק כפתורים, ראה אם אנחנו צריכים לזוז
moveMotor();//בדיקת בריחים, הזזת מנוע פנימה או החוצה
}//סוף לולאה ראשית
כפתורי void latch()
{
אם (digitalRead(buttonLeft)==LOW)// left הוא קדימה
{
currentTimedebounce = millis() - lastButtonpress;// בדיקת זמן מאז הלחיצה האחרונה
אם (currentTimedebounce> debounceTime && dontExtend == false) // לאחר שהפעלת את dontExtend, התעלם מכל הלחיצות קדימה
{
leftlatch = !leftlatch;// אם המנוע נע, עצור, אם נעצר, התחל לנוע firstRun = true;// הגדר את דגל firstRun להתעלם מקפיצת הזרם
fullyRetracted = false; // ברגע שאתה זז קדימה, אתה לא נסוג לחלוטין
לחיצת כפתור אחרונה = millise(); // אחסון זמן הלחיצה האחרונה על הכפתור
לַחֲזוֹר;
}//סוף אם
}//סוף btnLEFT
אם (digitalRead(buttonRight)==LOW)//ימין הוא הפוך
{
currentTimedebounce = millis() - lastButtonpress;// בדיקת זמן מאז הלחיצה האחרונה
אם (זמן_הפסקה_current>_זמן_הפסקה)
{
rightlatch = !rightlatch;// אם המנוע נע, עצור, אם נעצר, התחל לנוע
firstRun = true;// הגדר את דגל firstRun להתעלם משיא הנוכחי
לחיצת כפתור אחרונה = millise(); // אחסון זמן הלחיצה האחרונה על הכפתור
לַחֲזוֹר;
}//סוף אם
}//סוף btnRIGHT
}//סוף כפתורי תפס
ריק הזזת מנוע ()
{
אם (leftlatch == HIGH) motorForward(255); //מהירות = 0-255
אם (leftlatch == LOW) מנועStop();
אם (rightlatch == HIGH) motorBack(255); //מהירות = 0-255
אם (rightlatch == LOW) מנועStop();
}//סוף תנועהמנוע
מנוע חלל קדימה (מהירות int)
{
בזמן (dontExtend == false && leftlatch == HIGH)
{
digitalWrite(EnablePin, גבוה);
analogWrite(PWMPinA, מהירות);
analogWrite(PWMPinB, 0);//להזיז את המנוע
אם (firstRun == true) delay(firstfeedbacktimedelay); // עיכוב גדול יותר כדי להתעלם מעלייה חדה בזרם
אחרת עיכוב (משוב זמן עיכוב); // עיכוב קטן כדי להגיע למהירות
קבל משוב();
הפעלה ראשונה = שקר;
latchButtons();//בדוק שוב את הכפתורים
}//סוף בזמן
}//סוף מנוע קדימה
מנוע חלל חזור (מהירות int)
{
בזמן (ימין == גבוה)
{
digitalWrite(EnablePin, גבוה);
אנלוגי כתיבה(PWMPinA, 0);
analogWrite(PWMPinB, speeed);//הזזת מנוע
אם (firstRun == true) delay(firstfeedbacktimedelay);// עיכוב גדול יותר כדי להתעלם מעלייה חדה בזרם
אחרת עיכוב (משוב זמן עיכוב); // עיכוב קטן כדי להגיע למהירות
קבל משוב();
הפעלה ראשונה = שקר;
latchButtons();//בדוק שוב את הכפתורים
}//סוף בזמן
dontExtend = false;// אפשר למנוע להתארך שוב, לאחר שהוא נסוג לאחור
}//סוף מנועחזור
void motorStop()
{
אנלוגי כתיבה(PWMPinA, 0);
אנלוגי כתיבה(PWMPinB, 0);
כתיבה דיגיטלית (EnablePin, נמוך);
firstRun = true;//לאחר שהמנוע עצר, הפעל מחדש את firstRun כדי להתחשב בקפיצות זרם האתחול
}//עצירת קצהמנוע
void getFeedback()
{
CRaw = analogRead(CPin1); // קריאה נוכחית
אם (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
אחרת hitLimits = 0; // בדוק אם המנוע נמצא בגבולות והזרם הפסיק
אם (hitLimits == hitLimitsmax ו- rightlatch == HIGH)
{
נעילה ימנית = נמוך; // עצירת מנוע
נסוג לחלוטין = נכון;
}//סוף אם
אחרת אם (hitLimits == hitLimitsmax ו- leftlatch == HIGH)
{
שמאליאטץ' = נמוך;//עצור את המנוע
גבולות_הגעה = 0;
}//סוף אם
אם (CRaw> maxAmps)
{
dontExtend = true;
leftlatch = LOW; //עצור אם המשוב מעל המקסימום
}//סוף אם
lastfeedbacktime = millis(); // אחסון הזמן הקודם לקבלת משוב
}//סוף קבל משוב
החדש והמשופר מפעיל מיני PA-01 (שדרוג PA-14) הוא הדגם הנוכחי שאנו מציעים עם מגוון יתרונות נוספים. להשוואה, עיינו בטבלאות למטה ושדרגו בביטחון!
|
|
PA-01 |
PA-14 |
|
אפשרויות טעינה דינמיות |
16, 28, 56, 112, 169, 225 פאונד |
35, 50, 75, 110, 150 פאונד |
|
העומס הגבוה ביותר |
225 lb |
150 lb |
|
המהירות המהירה ביותר |
3.54 "/sec |
2.00"/sec |
|
הגנה מפני חדירה |
IP65 |
IP54 |
|
אפשרויות משיכה |
אינץ' אחד עד 40 אינץ' |
אינץ' אחד עד 40 אינץ' |
|
משוב אפקט הול |
אופציונלי |
לֹא |
With this basic code, you will successfully monitor the feedback of your linear actuator. In חלק ב' we will go more into how the code works and how to edit it to your liking. Hopefully, you found this post helpful and stay tuned for Part II in the coming weeks. If you'd like to order any units we used in this example or want to learn more about our מוצריםבבקשה צרו קשר.