جدول المحتويات:
- الخطوة 1: توليد إشارة Pwm لـ 50 هرتز
- الخطوة 2: برنامج Arduino لدورة العمل المتغير
- الخطوة 3: التبديل عند 50 هرتز Arduino Pins
- الخطوة 4: قيادة جسر H وتصفية إشارة Pwm
فيديو: اردوينو Sinewave للعواكس: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
في هذا المشروع ، قمت بتوليد إشارة SPWM (موجة جيبية معدلة على نطاق واسع) من مخرجات رقمية اردوينو pwm.
نظرًا لعمل مثل هذا البرنامج ، يجب أن أتحدث عن العديد من وظائف وخصائص Arduino الأخرى ، المشروع الكامل بما في ذلك صور الذبذبات والترددات المختلفة ، يرجى زيارة موقع الويب الخاص بي:
eprojectszone
الخطوة 1: توليد إشارة Pwm لـ 50 هرتز
لتوليد إشارة 50 هرتز بتردد أعلى ، من الضروري إجراء بعض الحسابات. يمكن أن تكون الترددات من arduino في 8 ميجا هرتز ، لكننا نريد إشارة ذات دورة عمل متغيرة.
لفهم أنواع دورات المهام المتغيرة في اردوينو ، يمكنك قراءة هذه الأجزاء الثلاثة من نفس المنشور 1 و 2 و 3.
لنفترض أن التردد لدينا هو 50 هرتز مما يعني أن الفترة الزمنية هي 20 مللي ثانية. لذا فإن 10 مللي ثانية هي نصف دورة. في تلك العشر ملي ثانية نحتاج إلى العديد من النبضات بدورات عمل مختلفة تبدأ بدورات عمل صغيرة ، في منتصف الإشارة لدينا دورات عمل قصوى وننتهي أيضًا بدورات عمل صغيرة. لتوليد موجة جيبية ، سنستخدم دبابيس واحدة من أجل نصف دورة موجبة وواحد لنصف دورة سالبة. في منشورنا لهذا نستخدم الدبابيس 5 و 6 وهذا يعني Timer 0.
للحصول على إشارة سلسة ، نختار الطور الصحيح pwm عند تردد 31372 هرتز - انظر الوظيفة السابقة. واحدة من أكبر المشاكل هي كيف نحسب دورة العمل اللازمة لكل نبضة. لذلك ، نظرًا لأن التردد لدينا هو f = 31372 هرتز ، فإن الفترة الزمنية لكل نبضة هي T = 1/31372 = 31.8 لنا ، لذا فإن عدد النبضات لنصف دورة هو N = 10ms / 31.8us = 314 نبضة. الآن لحساب دورة العمل لكل نبضة ، لدينا y = sinx ، لكن في هذه المعادلة نحتاج إلى درجات ، لذا فإن نصف دورة بها 180 درجة مقابل 314 نبضة. لكل نبضة لدينا 180/314 = 0.57deg / نبضة. هذا يعني أنه لكل نبضة نتحرك للأمام بمقدار 0.57 درجة.
y هي دورة العمل و x قيمة المركز في نصف دورة العمل. في البداية x تساوي 0 ، بعد أن x = 0.57 ، x = 1.14 وهكذا حتى x = 180.
إذا قمنا بحساب جميع القيم الـ 314 ، نحصل على مصفوفة 314 عنصرًا (اكتب "int" ليتم حسابها بسهولة بواسطة arduino).
هذه المجموعة هي:
int sinPWM = {1 ، 2 ، 5 ، 7 ، 10 ، 12 ، 15 ، 17 ، 19 ، 22 ، 24 ، 27 ، 30 ، 32 ، 34 ، 37 ، 39 ، 42 ، 44 ، 47 ، 49 ، 52 ، 54 ، 57 ، 59 ، 61 ، 64 ، 66 ، 69 ، 71 ، 73 ، 76 ، 78 ، 80 ، 83 ، 85 ، 88 ، 90 ، 92 ، 94 ، 97 ، 99 ، 101 ، 103 ، 106 ، 108 ، 110 ، 113 ، 115 ، 117 ، 119 ، 121 ، 124 ، 126 ، 128 ، 130 ، 132 ، 134 ، 136 ، 138 ، 140 ، 142 ، 144 ، 146 ، 148 ، 150 ، 152 ، 154 ، 156 ، 158 ، 160 ، 162 ، 164 ، 166 ، 168 ، 169 ، 171 ، 173 ، 175 ، 177 ، 178 ، 180 ، 182 ، 184 ، 185 ، 187 ، 188 ، 190 ، 192 ، 193 ، 195 ، 196 ، 198 ، 199 ، 201 ، 202 ، 204 ، 205 ، 207 ، 208 ، 209 ، 211 ، 212 ، 213 ، 215 ، 216 ، 217 ، 219 ، 220 ، 221 ، 222 ، 223 ، 224 ، 225 ، 226 ، 227 ، 228 ، 229 ، 230 ، 231 ، 232 ، 233 ، 234 ، 235 ، 236 ، 237 ، 237 ، 238 ، 239 ، 240 ، 240 ، 241 ، 242 ، 242 ، 243 ، 243 ، 244 ، 244 ، 245 ، 245 ، 246 ، 246 ، 247 ، 247 ، 247 ، 248 ، 248 ، 248 ، 248 ، 249 ، 249 ، 249 ، 249 ، 249 ، 250 ، 250 ، 250 ، 250 ، 249 ، 249 ، 249 ، 249 ، 249 ، 248 ، 248 ، 248 ، 248 ، 247 ، 247 ، 247 ، 246 ، 246 ، 245 ، 245 ، 244 ، 244 ، 243 ، 243 ، 242 ، 242 ، 241 ، 240 ، 240 ، 239 ، 238 ، 237 ، 237 ، 236 ، 235 ، 234 ، 233 ، 232 ، 231 ، 230 ، 229 ، 228 ، 227 ، 226 ، 225 ، 224 ، 223 ، 222 ، 221 ، 220 ، 219 ، 217 ، 21 6 ، 215 ، 213 ، 212 ، 211 ، 209 ، 208 ، 207 ، 205 ، 204 ، 202 ، 201 ، 199 ، 198 ، 196 ، 195 ، 193 ، 192 ، 190 ، 188 ، 187 ، 185 ، 184 ، 182 ، 180 ، 178 ، 177 ، 175 ، 173 ، 171 ، 169 ، 168 ، 166 ، 164 ، 162 ، 160 ، 158 ، 156 ، 154 ، 152 ، 150 ، 148 ، 146 ، 144 ، 142 ، 140 ، 138 ، 136 ، 134 ، 132 ، 130 ، 128 ، 126 ، 124 ، 121 ، 119 ، 117 ، 115 ، 113 ، 110 ، 108 ، 106 ، 103 ، 101 ، 99 ، 97 ، 94 ، 92 ، 90 ، 88 ، 85 ، 83 ، 80 ، 78 ، 76 ، 73 ، 71 ، 69 ، 66 ، 64 ، 61 ، 59 ، 57 ، 54 ، 52 ، 49 ، 47 ، 44 ، 42 ، 39 ، 37 ، 34 ، 32 ، 30 ، 27 ، 24 ، 22 ، 19 ، 17 ، 15 ، 12 ، 10 ، 7 ، 5 ، 2 ، 1} ؛
يمكنك أن ترى أنه مثل الموجة الجيبية ، تكون دورة العمل في أدنى مستوياتها في العنصر الأول والأخير والأعلى في المنتصف.
الخطوة 2: برنامج Arduino لدورة العمل المتغير
في الصورة أعلاه ، لدينا إشارات دورات العمل المتغيرة بقيم من المصفوفة.
ولكن كيف نجعل مثل هذه الإشارة ؟؟
يستخدم جزء البرنامج أدناه المقاطعات لتغيير قيم دورات العمل
sei () ؛ // تمكين المقاطعات
}
ISR (TIMER1_COMPA_vect) {// المقاطعة عندما يتطابق المؤقت 1 مع قيمة OCR1A
إذا (i> 313 && OK == 0) {// القيمة النهائية من المتجه للدبوس 6
أنا = 0 ؛ // انتقل إلى القيمة الأولى للمتجه (مجموعة)
OK = 1 ؛ // تمكين الدبوس 5
}
x = sinPWM ؛ // x تأخذ القيمة من المتجه المقابل للموضع i (i مفهرس صفر) - قيمة دورة العمل
i = i + 1 ؛ // انتقل إلى الموضع التالي
}
الخطوة 3: التبديل عند 50 هرتز Arduino Pins
نظرًا لأن كل دبوس يولد نصف دورة عمل فقط لعمل موجة جيبية كاملة ، فإننا نستخدم دبابيس تتناوب واحدة تلو الأخرى بعد 10 مللي ثانية بالضبط (لـ 50 هرتز). يتم إجراء هذا التغيير في المسامير في نهاية المصفوفة - لنفترض أن الدبوس 5 قد أنتج 314 نبضة ، يتم إيقاف تشغيل هذا الدبوس وتمكين الطرف 6 مما يجعل نفس الشيء ولكن لدورة العمل السلبية.
نظرًا لأن اردوينو يمكن أن يولد إشارات إيجابية فقط ، فإن دورة العمل السلبية مصنوعة في جسر h- يمكنك أن تقرأ عنها هنا
برنامج تغيير الدبابيس:
sei () ؛ // تمكين المقاطعات
}
ISR (TIMER1_COMPA_vect) {// المقاطعة عندما يتطابق المؤقت 1 مع قيمة OCR1A
if (i> 313 && OK == 0) {// القيمة النهائية من المتجه للدبوس 6
أنا = 0 ؛ // انتقل إلى القيمة الأولى للمتجه
OK = 1 ؛ // تمكين الدبوس 5
}
if (i> 313 && OK == 1) {// القيمة النهائية من المتجه للدبوس 5
أنا = 0 ؛ // انتقل إلى القيمة الأولى للمتجه
OK = 0 ؛ // تمكين الدبوس 6
}
x = sinPWM ؛ // x تأخذ القيمة من المتجه المقابل للموضع i (i مفهرس صفر)
i = i + 1 ؛ // انتقل إلى الموضع التالي
إذا (موافق == 0) {
OCR0B = 0 ؛ // اصنع دبوس 5 0
OCR0A = x ؛ // تمكين الدبوس 6 لدورة العمل المقابلة
إذا (موافق == 1) {
OCR0A = 0 ؛ // اصنع دبوس 6 0
OCR0B = x ؛ // تمكين الدبوس 5 لدورة العمل المقابلة
}
}
الخطوة 4: قيادة جسر H وتصفية إشارة Pwm
الإشارات التي يتم الحصول عليها من arduino هي جزء التحكم في تطبيقات العاكس لأن كلاهما إيجابي. لعمل موجة جيبية كاملة وعاكس عملي ، يتعين علينا استخدام جسر h وتنظيف pwm مرشح تمرير منخفض.
يتم عرض جسر H هنا.
تم اختبار مرشح الترددات المنخفضة بمحركات التيار المتردد الصغيرة هنا.
موصى به:
قياس سرعة المحرك باستخدام اردوينو: 6 خطوات
قياس سرعة المحرك باستخدام Arduino: هل من الصعب قياس سرعة المحرك ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ إليك حل بسيط واحد فقط مستشعر IR واحد و Arduino في مجموعتك يمكنه القيام بذلك. في هذا المنشور سأقدم تعليميًا بسيطًا يشرح كيفية قياس RPM لأي محرك باستخدام مستشعر الأشعة تحت الحمراء و A
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف - خطوات خطوة: 4 خطوات
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف | خطوات بخطوة: في هذا المشروع ، سأصمم دائرة مستشعر لعكس مواقف السيارات من Arduino باستخدام مستشعر الموجات فوق الصوتية Arduino UNO و HC-SR04. يمكن استخدام نظام التنبيه العكسي للسيارة المستند إلى Arduino للتنقل الذاتي ومجموعة الروبوتات وغيرها من النطاقات
مقياس اردوينو لوكس - واجهة OPT3001 مع اردوينو: 4 خطوات
Arduino Lux Meter - واجهة OPT3001 مع Arduino: نواجه عمومًا الموقف ، حيث نحتاج إلى قياس شدة الضوء. لذلك قررت أن أقوم بمشروع صغير سيساعدنا في حل هذه المشكلة. يوضح هذا المشروع كيف يمكننا استخدام OPT3001 مع Arduino كمقياس لوكس. في هذا المشروع ، لدي
كيف تصنع رادار مع اردوينو - مشروع اردوينو: 4 خطوات
كيف تصنع رادار مع اردوينو | مشروع Arduino: في هذه المقالة سوف أعلمك كيف يمكنك عمل رادار بسيط باستخدام اردوينو. شاهد فيديو تعليمي كامل هنا: انقر فوقي
أرخص اردوينو -- أصغر اردوينو -- اردوينو برو ميني -- البرمجة -- اردوينو نينو: 6 خطوات (مع صور)
أرخص اردوينو || أصغر اردوينو || اردوينو برو ميني || البرمجة || اردوينو نينو: …………………………. الرجاء الاشتراك في قناتي على يوتيوب لمزيد من مقاطع الفيديو ……. يدور هذا المشروع حول كيفية التعامل مع أصغر وأرخص اردوينو على الإطلاق. أصغر وأرخص اردوينو هو اردوينو برو ميني. إنه مشابه لاردوينو