جدول المحتويات:
- الخطوة 1: العرض التوضيحي
- الخطوة 2: التحكم في محرك PWM
- الخطوة 3: الموارد المستخدمة
- الخطوة 4: ESP 32 Dev Kit - Pinout
- الخطوة 5: تركيب التوربينات
- الخطوة 6: الدائرة - التوصيلات
- الخطوة 7: القياس على راسم الذبذبات
- الخطوة 8: كود المصدر
- الخطوة 9: قم بتنزيل الملفات
فيديو: توربين كهربائي مع ESP32: 9 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
اليوم ، سأناقش التوربينات الكهربائية مع ESP32. يحتوي التجميع على جزء تمت طباعته بشكل ثلاثي الأبعاد. سأقدم وظيفة PWM لـ ESP32 المناسبة للتحكم في المحركات الكهربائية. سيتم استخدام هذا في محرك DC. سأوضح أيضًا تشغيل MCPWM (التحكم في المحرك PWM) في تطبيق عملي.
لقد استخدمت ESP32 LoRa في هذا المشروع ، وأعتقد أنه من المهم أن نلاحظ هنا أن هذا المتحكم الدقيق يحتوي على كتلتين بداخله. هذه الكتل قادرة على التحكم في ثلاثة محركات لكل منها. وبالتالي ، من الممكن التحكم في ما يصل إلى ستة محركات باستخدام PWM ، كل ذلك بشكل مستقل. هذا يعني أن عنصر التحكم الذي سأستخدمه هنا ليس هو المعيار (وهو شيء مشابه لـ Arduino). بدلاً من ذلك ، يكون عنصر التحكم هو الشريحة نفسها ، والتي تضمن لـ ESP32 قدرًا كبيرًا من المرونة فيما يتعلق بالتحكم في المحرك.
الخطوة 1: العرض التوضيحي
الخطوة 2: التحكم في محرك PWM
رسم تخطيطي عام:
• يمكن استخدام وظيفة MCPWM الخاصة بـ ESP32 للتحكم في أنواع مختلفة من المحركات الكهربائية. لديها وحدتين.
• كل وحدة لها ثلاثة أزواج إخراج PWM.
• يمكن مزامنة كل زوج من المخرجات A / B مع واحد من ثلاثة مؤقتات التزامن 0 أو 1 أو 2.
• يمكن استخدام One Timer لمزامنة أكثر من زوج خرج PWM
رسم تخطيطي كامل:
• كل وحدة قادرة أيضًا على جمع إشارات الإدخال مثل إشارات التزامن.
• الكشف عن علامات الخطأ للتيار الزائد أو الجهد الزائد للمحرك.
• الحصول على ردود الفعل مع إشارات الالتقاط ، مثل موضع المحرك
الخطوة 3: الموارد المستخدمة
• وصلات صداري للاتصال
• Heltec Wifi LoRa 32
• محرك DC مشترك
• جسر H - L298N
• كابل USB
• Protoboard
• مزود الطاقة
الخطوة 4: ESP 32 Dev Kit - Pinout
الخطوة 5: تركيب التوربينات
الخطوة 6: الدائرة - التوصيلات
الخطوة 7: القياس على راسم الذبذبات
الخطوة 8: كود المصدر
رأس
# تضمين // Não é implário caso استخدم Arduino IDE # تتضمن "driver / mcpwm.h" // inclui a biblioteca "Motor Control PWM" nativa do ESP32 #include // Necessário apenas para o Arduino 1.6.5 e posterior #include SSD1306.h "// o mesmo que # تتضمن" SSD1306Wire.h "// OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 # تعريف SDA 4 # تعريف SCL 15 # تعريف عرض RST 16 SSD1306 (0x3c ، SDA ، SCL ، RST) ؛ // Instanciando e ajustando os pinos do objeto "display" #define GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B
اقامة
إعداد باطل () {Serial.begin (115200) ؛ display.init () ؛ //display.flipScreenVertically () ؛ // Vira a tela verticalmente display.clear () ؛ // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT) ؛ // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16) ؛ // mcpwm_gpio_init (unidade PWM 0، Saida A، porta GPIO) => Instancia o MCPWM0A no pino GPIO_PWM0A_OUT لا يُصرح عن começo do código mcpwm_gpio_init (MCPWM_UNIT_0، GPAOUT0) ؛ // mcpwm_gpio_init (unidade PWM 0، Saida B، porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT لا يُعلن عن الأمر código mcpwm_gpio_init (MCPWM_UNIT_0، GPIO_OT0؛ mcpwm_config_t pwm_config ؛ pwm_config.frequency = 1000 ؛ // Frequência = 500 هرتز ، pwm_config.cmpr_a = 0 ؛ // Ciclo de trabalho (دورة العمل) هل PWMxA = 0 pwm_config.cmpr_b = 0 ؛ // Ciclo de trabalho (دورة العمل) هل PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER ؛ // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0 ؛ // تعريف ciclo de trabalho em nível alto // Inicia (Unidade 0، Timer 0، Config PWM) mcpwm_init (MCPWM_UNIT_0، MCPWM_TIMER_0، & pwm_config) ؛ // تعريف PWM0A & PWM0B com على أنهما configurações acima}
المهام
// Função que configura o MCPWM operador A (Unidade، Timer، Porcentagem (ciclo de trabalho)) static void brushed_motor_forward (mcpwm_unit_t mcpwm_num، mcpwm_timer_t timer_num، float duty_set) (0، 1 ou 2)، Operador (A ou B)) ؛ => Desliga o sinal do MCPWM no Operador B (حدد o sinal em Baixo) mcpwm_set_signal_low (mcpwm_num ، timer_num ، MCPWM_OPR_B) ؛ // mcpwm_set_duty (unidade PWM (0 ou 1) ، Número do timer (0 ، 1 ou 2) ، Operador (A ou B) ، Ciclo de trabalho (٪ do PWM)) ؛ => Configura a porcentagem do PWM no Operador A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num، timer_num، MCPWM_OPR_A، duty_cycle) ؛ // mcpwm_set_duty_tyoe (unidade PWM (0 ou 1) ، Número do timer (0 ، 1 ou 2) ، Operador (A ou B) ، Nível do ciclo de trabalho (alto ou baixo)) ؛ => حدد o nível do ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num، timer_num، MCPWM_OPR_A، MCPWM_DUTY_MODE_0) ؛ // Nota: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter o ciclo de trabalho configurado anteriormente} // Função que configura o MCPWM Do operador B (Unidade) الفراغ الثابت brushed_motor_backward (mcpwm_unit_t mcpwm_num، mcpwm_timer_t timer_num، float duty_cycle) {mcpwm_set_signal_low (mcpwm_num، timer_num، MCPWM_OPR_A) ؛ // Desliga o sinal do MCPWM no Operador A (حدد o sinal em Baixo) mcpwm_set_duty (mcpwm_num ، timer_num ، MCPWM_OPR_B ، duty_cycle) ؛ // Configura a porcentagem do PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num، timer_num، MCPWM_OPR_B، MCPWM_DUTY_MODE_0) ؛ // تعريف o nível do ciclo de trabalho (alto ou baixo)} // Função que para o MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num، mcpwm_timer_t timer_num) {mcpwm_num_mlow_set // Desliga o sinal do MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num، timer_num، MCPWM_OPR_B) ؛ // Desliga o sinal do MCPWM no Operador B}
حلقة
حلقة باطلة () {// تحريك محرك بدون فرشاة متحركة (MCPWM_UNIT_0، MCPWM_TIMER_0، 50.0)؛ oled ("50") ؛ تأخير (2000) ؛ // Para o motor brushed_motor_stop (MCPWM_UNIT_0 ، MCPWM_TIMER_0) ؛ oled ("0") ؛ تأخير (2000) ؛ // تحريك المحرك بدون محرك مضاد للحركة مصقول_الموتور_الخلف (MCPWM_UNIT_0 ، MCPWM_TIMER_0 ، 25.0) ؛ oled ("25") ؛ تأخير (2000) ؛ // Para o motor brushed_motor_stop (MCPWM_UNIT_0 ، MCPWM_TIMER_0) ؛ oled ("0") ؛ تأخير (2000) ؛ // Aceleracao i de 1 a 100 لـ (int i = 10 ؛ i <= 100 ؛ i ++) {brushed_motor_forward (MCPWM_UNIT_0، MCPWM_TIMER_0، i) ؛ oled (سلسلة (i)) ؛ تأخير (200) ؛ } // Desaceleração i de 100 a 1 delay (5000) ؛ لـ (int i = 100 ؛ i> = 10 ؛ i -) {brushed_motor_forward (MCPWM_UNIT_0 ، MCPWM_TIMER_0 ، i) ؛ oled (سلسلة (i)) ؛ تأخير (100) ؛ } تأخير (5000)؛ }
الخطوة 9: قم بتنزيل الملفات
بي دي إف
انا لا
رسم
موصى به:
وحدة PSU صغيرة محمولة بجهد كهربائي متعدد الجهد مع USB وضوء فلاش وجهاز اختبار المكونات وشاحن مدمج: 6 خطوات
وحدة PSU صغيرة محمولة بجهد كهربائي متعدد الجهد مع USB وضوء فلاش وجهاز اختبار المكونات وشاحن مدمج: مرحبًا بكم في أول تدريب لي! باستخدام هذه التعليمات ، يمكنك تحويل بنك الطاقة الشمسية المراوغ / الرخيص (مع بعض الأجزاء الإضافية) إلى شيء مفيد. شيء يمكنك استخدامه كل يوم ، كما أفعل ، لأنه رائع حقًا للاستخدام! معظم المركبات
طائرة توربين ثلاثية الأبعاد مطبوعة: 3 خطوات
طائرة توربين ثلاثية الأبعاد مطبوعة: مرحبًا بالجميع ، لقد صنعت هذا التوربينات النفاثة فائقة الصخب أو نموذج المحرك الذي يتم تشغيله بواسطة محرك BLDC بقوة 1400 كيلو فولت ، وهذا المشروع بسيط نوعًا ما لأننا نحتاج فقط إلى طباعة الجسم ثلاثية الأبعاد أولاً ثم تجميعها جميعًا معًا ، قم بتوصيل ESC بمحرك bldc وتشغيل
لوح تزلج كهربائي - لوح تزلج كهربائي ثلاثي الأبعاد: 5 خطوات (مع صور)
Fusion Board - لوح تزلج كهربائي مطبوع ثلاثي الأبعاد: هذا Instructable هو نظرة عامة على عملية إنشاء لوحة Fusion الإلكترونية التي صممتها وصنعتها أثناء العمل في 3D Hubs. تم تكليف المشروع بالترويج لتقنية HP Multi-Jet Fusion الجديدة التي تقدمها 3D Hubs ، ولإظهار
زجاجة رذاذ توربين DIY: 12 خطوة (مع صور)
زجاجة رذاذ التوربينات DIY: لدينا صيف حار للغاية في مكاني لذلك كان علي أن أكتشف شيئًا يمكن أن يبردنا ، وهنا تأتي النتيجة
توربين تسلا من محركات الأقراص الصلبة القديمة والأدوات البسيطة: 11 خطوة (بالصور)
توربين تسلا من محركات الأقراص الصلبة القديمة والأدوات البسيطة: قم ببناء توربين تسلا من محركي قرص صلب قديم للكمبيوتر باستخدام الأدوات اليدوية الأساسية وحفر العمود. لا يلزم استخدام مخرطة معدنية أو غيرها من آلات التصنيع باهظة الثمن وتحتاج فقط إلى بعض المهارات الحرفية الأساسية. إنه فظ ، لكن هذا الشيء يمكن أن يصرخ