يتم توصيل محرك السائر بلوحة ULN2003A التي يتم تزويدها بمصدر طاقة خارجي 5 فولت. ترتبط خطوط التحكم (IN1 و IN2 و IN3 و IN4) الخاصة بهذه اللوحة بـ Arduino على النحو التالي: IN1 إلى Arduino pin 11IN2 إلى Arduino pin 10IN3 إلى Arduino pin 9IN4 إلى Arduino pin 8
تحتوي لوحة عصا التحكم على 5 دبابيس: GND ، + 5V ، VRX ، VRY و SW حيث: GND و + 5V عبارة عن دبابيس إمداد الطاقة VRX هو خرج مقياس جهد المحور X VRY هو خرج مقياس جهد المحور YSW هو طرف زر الضغط (الطرف الآخر يتم توصيل خرج مقياس جهد المحور X (VRX) بمسمار Arduino التناظري A0 ، ويمكن أيضًا استخدام خرج مقياس جهد المحور Y (VRY). لم يتم استخدام دبوس المفتاح (SW) في هذا المثال. باستخدام مقاييس الجهد للمحور X والمحور Y ، يمكننا التحكم في محركي السائر بشكل مستقل.
المكونات الاساسية :
- Arduino UNO
- 28BYJ-48 stepper motor (with ULN2003A driver board)
- Bread board
- joystick
- 5V power source
- Jumper wires
++ مخطط الرسم البياني :
++ الكود البرمجي هنا :
// include Arduino stepper motor library #include <Stepper.h> // define number of steps per revolution #define STEPS 32 // define stepper motor control pins #define IN1 11 #define IN2 10 #define IN3 9 #define IN4 8 // initialize stepper library Stepper stepper(STEPS, IN4, IN2, IN3, IN1); // joystick pot output is connected to Arduino A0 #define joystick A0 void setup() { } void loop() { // read analog value from the potentiometer int val = analogRead(joystick); // if the joystic is in the middle ===> stop the motor if( (val > 500) && (val < 523) ) { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); } else { // move the motor in the first direction while (val >= 523) { // map the speed between 5 and 500 rpm int speed_ = map(val, 523, 1023, 5, 500); // set motor speed stepper.setSpeed(speed_); // move the motor (1 step) stepper.step(1); val = analogRead(joystick); } // move the motor in the other direction while (val <= 500) { // map the speed between 5 and 500 rpm int speed_ = map(val, 500, 0, 5, 500); // set motor speed stepper.setSpeed(speed_); // move the motor (1 step) stepper.step(-1); val = analogRead(joystick); } } }
No comments:
Post a Comment