في مجال الإلكترونيات ، تُستخدم المحركات المؤازرة في الغالب في مشاريع الروبوتات نظرًا لدقتها وسهولة التعامل معها. المحركات المؤازرة أصغر حجمًا وهي فعالة جدًا وموفرة للطاقة. إنها توفر عزم دوران عالٍ ويمكن استخدامها لرفع أو دفع الأوزان وفقًا لمواصفات المحركات. في هذا البرنامج التعليمي سوف نتعرف على محرك سيرفو وكيفية واجهة سيرفو مع لوحة STM32F103C8. يتم أيضًا ربط مقياس الجهد لتغيير موضع عمود المحرك المؤازر ، وشاشة LCD لعرض قيمة الزاوية.
المكونات مطلوبة
- لوحة STM32F103C8 (بلو بيل)
- محرك سيرفو (SG90)
- LCD (16 × 2)
- مقياس فرق الجهد
- اللوح
- أسلاك توصيل
مخطط الدائرة والتوصيلات
تفاصيل دبوس SMT32F103C8
في STM32F103C8 ، لدينا 10 دبابيس ADC (PA0-PB1) ، وهنا نستخدم دبوسًا واحدًا فقط (PA3) للقراءة التناظرية () لضبط موضع عمود المحرك بواسطة مقياس الجهد. أيضًا من بين 15 دبابيس PWM من STM32 (PA0 ، PA1 ، PA2 ، PA3 ، PA6 ، PA7 ، PA8 ، PA9 ، PA10 ، PB0 ، PB1 ، PB6 ، PB7 ، PB8 ، PB9) ، سيتم استخدام دبوس واحد لتوفير نبضات إلى المؤازرة دبوس المحرك PWM (عادة ما يكون برتقالي اللون).
يمكنك معرفة المزيد حول PWM و ADC من خلال قراءة المقالات التفصيلية أدناه:
- كيفية استخدام ADC في STM32F103C8
- تعديل عرض النبضة (PWM) في STM32F103C8
الاتصال بين STM32F103C8 وشاشات الكريستال السائل
STM32F103C8 | شاشة LCD |
GND | VSS |
+ 5 فولت | VDD |
إلى مركز الجهد PIN | V0 |
PB0 | RS |
GND | RW |
PB1 | ه |
PB10 | د 4 |
PB11 | د 5 |
PC13 | د 6 |
PC14 | د 7 |
+ 5 فولت | أ |
GND | ك |
اتصال بين محرك سيرفو و STM32F103C8
STM32F103C8 |
سيرفو |
+ 5 فولت |
أحمر (+5 فولت) |
PA0 |
البرتقال (دبوس PWM) |
GND |
براون (أرضي) |
اتصالات الجهد
لقد استخدمنا اثنين من مقاييس الجهد هنا
1. يُستخدم مقياس الجهد الموجود على اليمين لتغيير تباين شاشة LCD. يحتوي على ثلاثة دبابيس ، الدبوس الأيسر لـ + 5V واليمين لـ GND والدبوس المركزي متصل بـ V0 من شاشة LCD.
2. يتم استخدام مقياس الجهد الموجود على اليسار لتغيير موضع عمود المحرك المؤازر من خلال التحكم في جهد الدخل التناظري ، والدبوس الأيسر لديه دخل 3.3 فولت واليمين به GND ومخرج المركز متصل بـ (PA3) من STM32
برمجة STM32 لمحرك سيرفو
مثل برنامجنا التعليمي السابق ، قمنا ببرمجة STM32F103C8 مع Arduino IDE من خلال منفذ USB دون استخدام مبرمج FTDI. يمكننا المضي قدمًا في برمجته مثل Arduino. يتم إعطاء الرمز الكامل أدناه في نهاية المشروع.
أولاً قمنا بتضمين ملفات المكتبة لوظائف المؤازرة و LCD:
#تضمن
ثم أعلن عن دبابيس لشاشة LCD وتهيئتها. أعلن أيضًا عن بعض المتغيرات الأخرى لـ PWM ومقياس الجهد:
const int rs = PB0 ، en = PB1 ، d4 = PB10 ، d5 = PB11 ، d6 = PC13 ، d7 = PC14 ؛ LiquidCrystal LCD (rs، en، d4، d5، d6، d7) ؛ int servoPin = PA0 ؛ int potPin = PA3 ؛
هنا أنشأنا مؤازرة متغيرة مع نوع البيانات Servo وربطها بدبوس PWM المعلن مسبقًا.
أجهزة مؤازرة servo.attach (servoPin) ؛
ثم اقرأ القيمة التناظرية من pin PA3 لأنه دبوس ADC يحول الجهد التناظري (0-3.3) إلى شكل رقمي (0-4095)
analogRead (بوتبين) ؛
نظرًا لأن الإخراج الرقمي هو دقة 12 بت ، فنحن بحاجة إلى الحصول على قيم في نطاق درجة (0-170) ، حيث يقسم قيمة ADC (0-4096) وفقًا للزاوية القصوى 170 درجة لذلك نقسم على 24.
زاوية = (قراءة / 24) ؛
البيان أدناه يجعل محرك سيرفو لتدوير العمود بزاوية معينة.
مؤازرة الكتابة (زاوية) ؛
يتم إعطاء الرمز الكامل أدناه ويتم شرحه جيدًا من خلال التعليقات.