الجمعة، 13 فبراير، 2015

التحكم بالمحركات الكهربائية بواسطة الأوامر الصوتية .

Voice Control DC Motor 





تتضمن هذه المقال تجربة لعمل تحكم بمحرك مستمر DC Motor بأتجاهه و بسرعته عن طريق الصوت

يمكن لهذا التطبيق ان يستخدم لتشغيل - فتح الأبواب الكهربائية  , تشغيل و اطفاء اجهزة كهربائية عن طريق تغيير بعض القطع في المشروع "كأضافة مرحل Relay "

سنحتاج لهذه التجربة :


1) بطاقة أردوينو .
2) موديول التعرف على الصوت Voice Recognation Module 
4)محرك كهربائي DC Motor 
5)اسلاك توصيل Jumper Wire  .
6)مصدر جهد خارجي "في حال تم استخدام محركات ذات قدرة كبيرة " 


خطوات المشروع : 

اولا :  نقوم بتحديد الأوامر الصوتية التي سنستخدمها للتحكم بالموتور ثم نقوم بتسجيل الصوت.

أنا اخترت الأوامر :

Forward , Backward للتحكم باتجاه الحركة 

Increase ,Decrease للتحكم بالسرعة 

Stop لايقاف الحركة


لمعرفة كيفية تسجيل الصوت التحكم بالأردوينو عن طريق الصوت من خلال هذا  المقال في المدونة من هنا 

ثانياً : نقوم بأختبار دارة قيادة المحرك L298 ووصلها بالمحرك , يمكنكم معرفة طريقة استخدام هذه الدارة من خلال هذا المقال في المدونة

نقوم بتوصيل القطع جميعاً مع بعضهم البعض كما في المخطط :





في هذا المشروع قمنا بتخزين الأوامر كالآتي : 

الأمام : 0x11
الخلف :0x12
الوقوف : 0x13
زيادة السرعة :0x14
تقليل السرعه :0x15



حيث يتم تسجيلهم بهذا التسلسل في المجموعه الأولى في موديول التعرف على الأصوات 
البرنامج :
/*
Control DC Motor Using Voice 
Command and Arduino .

Component : 
Voice Recognation Module 
http://www.genotronexstore.com/#!product/prd1/2299136471/speech-recognition-module-v2-serial-control
connection : 
VCC    5V 
Gnd    Gnd
Tx     D7
Rx     D8
Motor driver L298 Module
http://www.genotronexstore.com/#!product/prd1/2300224681/l298n-motor-driver-module
You Can Use external Power supply If needed
IN1   D3
IN2   D5
IN3   D6
IN4   D9
EN1,EN2 To VCC "By Default " 
VCC     Power Supply 5-12V
GND     GND

Code written By : 
Lina Amer          - Jordan
Mohannad Rawashdeh - Jordan 
Tested On Arduino Uno - Nano - Mini
http://www.genotronex.com/
*/
#include"SoftwareSerial.h"
 
SoftwareSerial Geno (7,8);
int i;
int pin=0;
const int IN1=3;
const int IN2=5;
const int IN3=6;
const int IN4=9;
boolean dir =false ; // false forward , true backward
int sp = 128 ;
void setup() {
Serial.begin(9600);
Geno.begin(9600);
pinMode( IN1 ,OUTPUT);
pinMode( IN2 ,OUTPUT);
pinMode( IN3 ,OUTPUT);
pinMode( IN4 ,OUTPUT);
delay(2000);
Geno.write(0xAA);
Geno.write(0x37);
delay(2000);
Geno.write(0xAA);
Geno.write(0x21);
}
void Run(){
  if(!dir) { // fowrward
  analogWrite(IN1,0);
  analogWrite(IN2,sp);
  analogWrite(IN3,sp);
  analogWrite(IN4,0);
  }   
  if(dir){// backward 
   analogWrite(IN1,sp);
  analogWrite(IN2,0);
  analogWrite(IN3,0);
  analogWrite(IN4,sp);
  }  
}
void Stop(){
  analogWrite(IN1,0);
  analogWrite(IN2,0);
  analogWrite(IN3,0);
  analogWrite(IN4,0);
}
void loop(){
while(Geno.available()){
  pin=Geno.read();
  Serial.println(pin,HEX);
  delay(10);
  switch(pin)
  {
      
    case 0x11: // Move Motor Forward
    Stop();
    delay(40);
    dir = false ; // forward 
    Run();
    break;
    case 0x12: //Move Motor Backward
    Stop();
    delay(40);
    dir=true;
    Run();
    break;
    case 0x14: //Increase Motor speed
    sp+=50 ;
    if(sp>255){sp=255;}
        Run();
        break;
      case 0x15://decrease Motor speed
    sp-=50 ;
    if(sp<=0){sp=0;}      
        Run();
        break;
      case 0x13: //Stop 
      Stop();
      break;
}
}
}







يجب الأنتباه إلى انه في هذه التجربة تم استخدام محرك ذو قدرة منخفضة , في حال اردت استعمال محرك كبير و ذو تيار و فولتية عالية , ننصح باستخدام مصدر جهد خارجي "كبطارية او Power supply " بما يناسب مشروعك . 


تم كتابة المقال بواسطة :
 لينه أحمد  عامر - الأردن
البريد الإلكتروني : linaaamer93@gmail.com

1 التعليقات :

  1. مجهود جميل جداً ما شاء الله ربنا يكرمك

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.