اطلاعیه

Collapse
No announcement yet.

UltraSonicWIthmotorDc

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    UltraSonicWIthmotorDc

    با سلام.
    من میخوام وقتی رباتم مانع دید؛ از حرکت بایستد.

    در ابتدا ماژول التراسونیک را بدون موتور تست کردم و اندازه های معقولی میداد(برای تست سالم بودن قطعه)
    مشکل1:
    اما وقتی با موتور تست کردم و سریال مانیتور رو دیدم (مثلا مانع در 10 cm هس در بین کار یهو یه عدد 2cm میده )

    مشکل 2:
    موتور هام وقتی مانع میزارم جلوش توقف نمیکنه ( برنامه ای که نوشتمم گذاشتم)
    واقعا گیر کردم تا ربات مسیر یابم کامل شودلطفا در صورت امکان جواب مشخص وکامل بدین.. اگه مشکل از برنانمم نیس از چی میتونه باشه؟؟
    با تشکر

    [/CPP][/FONT][/COLOR]

    int Trigerpin=13
    [FONT=Yekan]int Echopin=2[/FONT];
    unsigned long duration,cm;
    int EnA=3;
    int In1=4;
    int In2=5;
    //=============================== Motor 1


    int EnB=6;
    int In3=7;
    int In4=8;


    void setup() {
    // put your setup code here, to run once:
    pinMode(In1,OUTPUT);
    pinMode(In2,OUTPUT);
    pinMode(In3,OUTPUT);
    pinMode(In4,OUTPUT);
    pinMode(Echopin,INPUT);
    pinMode(Trigerpin,OUTPUT);
    Serial.begin(9600);
    }
    void loop() {
    // put your main code here, to run repeatedly:
    analogWrite(EnA,100);
    analogWrite(EnB,100);
    digitalWrite(In1,HIGH);
    digitalWrite(In2,LOW);
    digitalWrite(In3,HIGH);
    digitalWrite(In4,LOW);


    digitalWrite(Trigerpin,LOW);
    delayMicroseconds(2);
    digitalWrite(Trigerpin,HIGH);
    delayMicroseconds(10);
    digitalWrite(Trigerpin,LOW);
    duration=pulseIn(Echopin,HIGH);
    cm=Micro_Cm(duration);
    Serial.print(" Cm = ");
    Serial.println(cm);
    if(cm<6){
    analogWrite(EnA,0);
    analogWrite(EnB,0);
    }
    delay(500);
    }


    unsigned long Micro_Cm(unsigned long MicroS){
    return (MicroS/2)*0.0344;
    [COLOR=#333333][FONT=IRANSans-engilsh][COLOR=#222222][FONT=Yekan] }[/FONT][/COLOR][/FONT][/COLOR]


    #2
    پاسخ : UltraSonicWIthmotorDc

    درود . امکان بستن مدار رو ندارم اما یک پیشنهاد کد نویسی میکنم تست کنید . بیاید اندازه گیری رو داخل تابع مجزا انجام بدید و یا از کتابخونه استفاده کنید . بعد در لوپ اصلی مقدار رو چک کنید و کنترل موتور *. اون تاخیر ۵۰۰ و دو خط آخر رو دلیل استفاده شده رو متوجه نمیشم .
    وسط برنامه هم سریال پرینت رو حذف کنید .
    ببینید نتیجه چیه

    دیدگاه


      #3
      پاسخ : UltraSonicWIthmotorDc

      درود و ممنون از جوابتون
      2 خط اخر که واسه تبدیل duration به Cm هس.
      اون delay هم واسه این که میخواستم سریال مانیتور را ببینم گذاشتم
      از چه کتابخونه ای استفاده کنم؟

      دیدگاه


        #4
        پاسخ : UltraSonicWIthmotorDc

        نوشته اصلی توسط nightshade نمایش پست ها
        از چه کتابخونه ای استفاده کنم؟
        کتابخونه newping خیلی خوبه. ,ورژن آخرش 1.9.1 رو نصب کن

        دیدگاه


          #5
          پاسخ : UltraSonicWIthmotorDc

          کتابخونه ultrasonic مجزا هم داریم . کاری نمیکنه فقط همین دستورات پینگ و تریگر و طول پالس تبدیل به یک دستور میشه برای سادگی کار.
          یک مورد رو هم بررسی کنید ، ببینید این فاصله غیر عادی که وسط اندازه گیری ها یکباره ارسال میشه ، به استارت و استاپ موتور ربط داره ؟ نویز موتور روی التراسونیک منظورم هست .

          دیدگاه


            #6
            پاسخ : UltraSonicWIthmotorDc

            از کتابخونه هم استفاده کردم بازم نشد
            انگار اصلا وارد شرطم نمیشه نمیدونم چرا

            دیدگاه


              #7
              پاسخ : UltraSonicWIthmotorDc

              میتونی از سنسور IR استفاده کنی (فرستنده و گیرنده ) که وقتی چیزی بهش نزدیک شد سنسور گیرنده IR تشخیصش میده
              جاده ی موفقیت سر راست نیست
              پیچی وجود دارد به نام شکست
              دور برگردانی به نام سردر گمی
              سرعت گیر هایی بنام دوستان
              چراغ قرمز هایی بنام دشمنان
              چراغ احتیاط هایی بنام خانواده
              تایر های پنچری خواهید داشت به نام شغل
              اما اگر یدکی بنام عزم داشته باشید
              موتوری به نام استقامت
              و راننده ای بنام خدا
              به جایی خواهید رسید که موفقیت نام دارد . . .

              دیدگاه


                #8
                پاسخ : UltraSonicWIthmotorDc

                نوشته اصلی توسط mehdi.dehghani نمایش پست ها
                میتونی از سنسور IR استفاده کنی (فرستنده و گیرنده ) که وقتی چیزی بهش نزدیک شد سنسور گیرنده IR تشخیصش میده
                باید با الترا بسازم .. محدودیت دارم

                دیدگاه

                لطفا صبر کنید...
                X