- المواد المطلوبة
- محرك متدرج (28BYJ-48)
- ULN2003 محرك سائق IC
- مخطط الدائرة والتوصيلات
- تدوير محرك متدرج مع STM32F103C8
- برمجة STM32 لمحرك متدرج
المحرك السائر هو محرك DC بدون فرش ، والذي يمكن تدويره بزوايا صغيرة ، وتسمى هذه الزوايا بالخطوات. بشكل عام ، يستخدم محرك السائر 200 خطوة لإكمال دوران 360 درجة ، مما يعني استدارة 1.8 درجة لكل خطوة. يتم استخدام محرك متدرج في العديد من الأجهزة التي تحتاج إلى حركة دورانية دقيقة مثل الروبوتات ، والهوائيات ، ومحركات الأقراص الصلبة وما إلى ذلك. يمكننا تدوير محرك السائر إلى أي زاوية معينة من خلال إعطائه التعليمات المناسبة. هي أساسا نوعين من المحركات السائر المتاحة، أحادي القطب و ثنائي القطب. أحادي القطب أسهل في التشغيل والتحكم وكذلك أسهل في الحصول عليه. هنا في هذا البرنامج التعليمي نقوم بتوصيل Stepper Motor بلوحة STM32F103C8 (الحبة الزرقاء).
المواد المطلوبة
- STM32F103C8 (حبة زرقاء)
- محرك متدرج (28BYJ-48)
- ULN2003 IC
- مقياس الجهد 10 كيلو
- اللوح
- أسلاك توصيل
محرك متدرج (28BYJ-48)
28BYJ-48 هو محرك متدرج أحادي القطب يتطلب إمداد 5 فولت. يحتوي المحرك على ترتيب أحادي القطب 4 لفائف ويتم تصنيف كل ملف لـ + 5 فولت ومن ثم يسهل التحكم فيه باستخدام أي متحكمات مثل Arduino و Raspberry Pi أيضًا STM32 لكننا نحتاج إلى محرك محرك IC مثل ULN2003 لقيادته ، لأن محركات السائر تستهلك تيارًا عاليًا وقد تتلف المتحكمات الدقيقة.
من البيانات المهمة الأخرى التي يجب ملاحظتها هي زاوية Stride: 5.625 ° / 64. هذا يعني أن المحرك عندما يعمل في تسلسل من 8 خطوات سيتحرك 5.625 درجة لكل خطوة وسيستغرق 64 خطوة (5.625 * 64 = 360) لإكمال دورة كاملة واحدة. يتم توفير المواصفات الأخرى في ورقة البيانات أدناه:
تحقق أيضًا من التفاعل مع Stepper Motor مع وحدات التحكم الدقيقة الأخرى:
- ربط محرك متدرج مع Arduino Uno
- تحكم في محرك متدرج مع Raspberry Pi
- محرك متدرج يتفاعل مع متحكم 8051
- ربط محرك متدرج مع متحكم PIC
يمكن أيضًا التحكم في محرك السائر بدون أي متحكم ، انظر دائرة سائق محرك متدرج.
ULN2003 محرك سائق IC
يتم استخدامه لتشغيل المحرك وفقًا للنبضات الواردة من وحدة التحكم الدقيقة. يوجد أدناه مخطط صورة ULN2003:
الدبابيس (IN1 إلى IN7) هي دبابيس إدخال و (OUT 1 to OUT 7) هي دبابيس إخراج مقابلة. يتم إعطاء COM جهد مصدر موجب مطلوب لأجهزة الإخراج. ويرد أدناه مزيد من الوصلات لمحرك السائر في قسم مخطط الدائرة.
مخطط الدائرة والتوصيلات
يوجد أدناه شرح التوصيلات لمخطط الدائرة أعلاه.
STM32F103C8 (حبة زرقاء)
كما نرى في الرسم البياني أدناه ، يشار إلى دبابيس PWM في شكل موجة (~) ، وهناك 15 دبوسًا يمكن استخدامها لإخراج النبض إلى محرك السائر. نحتاج فقط إلى أربعة سنون ، نستخدم (PA0 toPA3).
STM32F103C8 مع ULN2003 محرك IC
تعتبر الدبابيس (PA0 إلى PA3) بمثابة دبابيس إخراج متصلة بدبابيس الإدخال (IN1-IN4) الخاصة بـ ULN2003 IC.
دبابيس STM32F103C8 |
دبابيس ULN2003 IC |
PA0 |
في 1 |
PA1 |
في 2 |
PA2 |
في 3 |
PA3 |
IN4 |
5 فولت |
COM |
GND |
GND |
ULN2003 IC مع محرك متدرج (28BYJ-48)
تتصل دبابيس الإخراج (OUT1-OUT4) الخاصة بـ ULN2003 IC بدبابيس محركات السائر (البرتقالي والأصفر والوردي والأزرق).
دبابيس ULN2003 IC |
دبابيس من STEPPER MOTOR |
خارج 1 |
البرتقالي |
خارج 2 |
الأصفر |
خارج 3 |
زهري |
خارج 4 |
أزرق |
COM |
أحمر |
STM32F103C8 مع مقياس الجهد
يستخدم مقياس الجهد لضبط سرعة محرك السائر.
مقياس فرق الجهد |
STM32F103C8 |
اليسار (الإدخال) |
3.3 |
المركز (الإخراج) |
PA4 |
يمين (GND) |
GND |
تدوير محرك متدرج مع STM32F103C8
فيما يلي خطوات قليلة لتشغيل محرك السائر:
- اضبط سرعة المحرك السائر عن طريق تغيير مقياس الجهد.
- ثم أدخل خطوات التدوير يدويًا إما في اتجاه عقارب الساعة (+ القيم) أو عكس اتجاه عقارب الساعة (- القيم) عبر SERIAL MONITER الموجود في ARDUINO IDE (Tools-> Serial monitor) أو CTRL + SHIFT + M.
- وفقًا لقيمة الإدخال الواردة في الشاشة التسلسلية ، تتم بعض خطوات الدوران في محرك متدرج.
فمثلا
القيمة المعطاة في الشاشة التسلسلية |
دوران |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) مكافحة CLK الحكمة |
-1024 |
(-180) مكافحة CLK الحكمة |
-512 |
(-90) مكافحة CLK الحكمة |
برمجة STM32 لمحرك متدرج
مثل البرنامج التعليمي السابق ، قمنا ببرمجة STM32F103C8 مع Arduino IDE من خلال منفذ USB دون استخدام مبرمج FTDI. للتعرف على برمجة STM32 باستخدام Arduino IDE ، اتبع الرابط. يمكننا المضي قدمًا في برمجته مثل Arduino. يتم إعطاء رمز كامل في نهاية المشروع.
أولاً ، يتعين علينا تضمين ملفات مكتبة السائر #include
#تضمن
ثم نحدد لا. من الخطوات لإكمالها عند الدوران ، هنا نستخدم 32 لأننا نستخدم خطوة كاملة (4 خطوات تسلسل) لذلك (360/32 = 11.25 درجة). لخطوة واحدة ، يتحرك العمود بمقدار 11.25 درجة وهي زاوية الخطوة. في تسلسل 4 خطوات ، يلزم 4 خطوات لدورة كاملة واحدة.
#define STEPS 32
يمكننا أيضًا استخدام وضع نصف الخطوة حيث يوجد تسلسل من 8 خطوات (360/64 = 5.625) زاوية خطوة.
خطوات لكل ثورة = 360 / زاوية الخطوة
أثناء قيامنا بتعيين السرعة ، يجب أن نأخذ القيمة التناظرية من PA4 المتصلة بمقياس الجهد. لذلك يجب أن نعلن الدبوس لذلك
const int speedm = PA4
ثم قمنا بتحويل القيمة التناظرية إلى رقمية عن طريق تخزين تلك القيم في متغير من نوع عدد صحيح ، وبعد ذلك علينا تعيين قيم ADC لضبط السرعة لذلك نستخدم العبارة أدناه. تعرف على المزيد حول استخدام ADC مع STM32 هنا.
int adc = analogRead (speedm) ؛ نتيجة int = map (adc ، 0، 4096، 1، 1023) ؛
لضبط السرعة ، نستخدم stepper.setSpeed (نتيجة) ؛ نطاق السرعة لدينا من (1-1023).
يجب علينا إنشاء مثيل مثل أدناه لتعيين المسامير المتصلة بالمحرك. كن حذرًا في هذه الخطوات لأن معظمهم يرتكبون خطأ هنا في هذا النمط. إنهم يعطون نمطًا خاطئًا وبسبب ذلك لا يمكن تنشيط الملفات.
السائر (STEPS ، PA0 ، PA2 ، PA1 ، PA3) ؛
البيان أدناه يستخدم للحصول على قيمة الخطوات من الشاشة التسلسلية. على سبيل المثال ، نحتاج إلى 2048 قيمة لدوران كامل واحد (32 * 64 = 2048) أي 64 سيكون نسبة التروس و 32 سيكون تسلسل نصف خطوة لدورة واحدة.
استدارة = Serial.parseInt () ،
يتم استخدام الكود أدناه لاستدعاء المثيل وتشغيل المحرك. إذا كانت قيمة التدوير 1 ، فإنه يستدعي وظيفة السائر مرة واحدة ويتم إجراء حركة واحدة.
stepper.step (تدوير) ؛
الكود الكامل مع الفيديو التوضيحي مذكور أدناه. تحقق أيضًا من جميع المشاريع المتعلقة بالمحرك السائر هنا ، مع التفاعل مع وحدات تحكم دقيقة أخرى مختلفة