اطلاعیه

Collapse
No announcement yet.

راه اندازی کارت های daq

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

    #16
    پاسخ : راه اندازی کارت های daq

    از شما خیلی ممنونم که پاسخ میدید. ولی من همه چی رو براساس همون جا تنظیم کردم برای اینکه دقیقتر عرض کنم. به دیواس منیجر رفتم که اونجا پورت کام 4 بود از طرفی بقیه مشخصات مثل باد ریت و زمان توقف و ... رو با دابل کلیک کردن روی همین پورت کام چهار درآوردم
    ولی بازم درست نشد شما خودتون از طریق متلب ارتباط برقرار کردید؟

    دیدگاه


      #17
      پاسخ : راه اندازی کارت های daq

      با متلب نه. ولی از gwbasic تا سی شارپ با همه شون کار کردم.
      دابل کلیک روی پورت، مشخصات سخت افزار طرف مقابل رو نمیده. بلکه پیش فرضهای ویندوز رو میده و لزوما با پیش فرض کارت شما یکسان نیست.
      عین همون دستور set که شما نوشتین، همه نرم افزار ها پیش از برقراری ارتباط، اقدام به تعریف مشخصات پورت میکنن و جدا از دیفالت ویندوز، پورت رو با مشخصات دلخواهشون باز میکنن.
      بنظرم باید تنظیمات پورت رو از توی اطلاعات همراه برد مثل فایل راهنما یا برنامه های نمونه همراهش بدست بیارین.
      کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

      دیدگاه


        #18
        پاسخ : راه اندازی کارت های daq

        حل شد . نرم افزار ران تایم باید نصب میشد. حالا چرا؟ منم نمیدونم!!
        البته منظورم از حل شدن اینه که فقط تونستم ال ای دی رو باش روشن کنم یعنی می تونم اطلاعات روی پورت بفرستم اما نمی تونم چیزی از روی پورت ها بخونم و همش این پیغام رو میده
        Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.

        اینم برنامه ای که نوشتم:
        clear all;clc
        s=serial('COM4'
        set(s);
        fopen(s);
        in=fscanf(s);
        disp(in);
        fclose(s);
        delete(s);

        ضمن اینکه زمانی که می خوام اطلاعاتی روی پورت بفرستم لازم نیست که توی دستور ست ، باد ریت و ترمیناتور و تایم اوت رو تنظیم کنم و همه جوره جواب میده با خودم گفتم پس باید موقع خوندن هم نیازی به ست کردن تنظیمات نباشه به همین خاطر اینجا هم کاری به تنظیماتش نداشتم
        ضمن اینکه اگه قبل از دستور اف اسکن اف از دستور اف پرینت اف استفاده کنم این بار توی خروجی همون چیزی رو می نویسه که توی اف پرینت اف نوشتم و اون کلمه رو اسکن می کنه
        خواهش می کنم کمکم کنید
        سپاسگزارم

        دیدگاه


          #19
          پاسخ : راه اندازی کارت های daq

          حل شد فقط نرم افزار ران تایم رو باید نصب می کردم
          اما هنوز مشکل خواندن اطلاعات از روی پورت ها وجود داره
          برنامه ای که برای خوندن پورت ها نوشتم به صورت زیره
          clear all;clc
          s=serial('COM4'
          set(s,'BaudRate',9600,'DataBits&#03 9;, 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'none','Terminator',13);
          fopen(s);
          % fprintf(s,'porta=input\n'
          % fprintf(s,'porta.1?\n'
          fprintf(s,'adc5v'
          bytatport = s.BytesAvailable-1;
          while(1)
          if(s.ValuesReceived==bytatport)
          break;
          end
          in=fscanf(s);
          disp(in);
          end

          fclose(s);
          delete(s);
          ولی همیشه یه پیغام میده که میگه:
          Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
          آخه چرا همچین پیغامی میده؟
          کسی می دونه باید چیکار کنم؟
          خواهش می کنم کمکم کنید
          سپاسگزارم

          دیدگاه


            #20
            پاسخ : راه اندازی کارت های daq

            خطای تایم اوت مربوط به اتمام زمان انتظار برای رسیدن دیتا هست.

            متاسفانه نه با متلب آشنایی دارم و نه با برد شما. ولی با فرض سالم بودن برد، حتما اشکالی توی ارسال فرمان خوندن ADC هست که دیتاش بر نمیگرده.
            اگه تو متلب امکان استفاده از BREAKPOINT هست، برنامه رو استپ استپ اجرا کنین تا ببینین پیغام خطا بعد از اجرای کدوم خط میاد؟
            احتمالا به دستور WHILE نمیرسه.
            کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

            دیدگاه


              #21
              پاسخ : راه اندازی کارت های daq

              سلام نو رسیده عزیز
              من از شما واقعا تشکر می کنم که به سوالات من پاسخ میدید
              این قضیه هم حل شد ولی مشکلشو درست نفهمیدم!!!
              من استپ موتور و موتور دی سی و ... رو روشن کردم و همچنین پورت آنالوگ رو هم با متلب خوندم ولی حالا یک مشکل خیلی خیلی بزرگ دارم که اتفاقا شاید ربطی هم نداشته باشه به اینکه من از چه نرم افزاری استفاده می کنم و اون اینکه:
              چطور میشه یک سیگنال آنالوگ رو از متلب به پورت ها ارسال کرد و دور موتور رو با اون بالا پایین کرد؟
              همونطور که شمام میدونید من با صفر و یک کردن پایه ها موتور ها رو روشن خاموش کردم البته می تونم با ایجاد تاخیر سرعتشون رو کم یا زیاد کنم اما می خوام بدونم راه مستقیمی برای اینکه من یک سیگنال آنالوگ رو به پورت ها بفرستم وجود داره یا نه؟ من می خوام خروجی یک پی آی دی رو به موتور اعمال کنم
              یک دنیااااااااااااااا ممنوووووووووووووووووون

              دیدگاه


                #22
                پاسخ : راه اندازی کارت های daq

                برد شما خروجی آنالوگ نداره. ولی با استفاده از pwm و قرار دادن یه فیلتر RC و یا LC توی خروجی میتونین مقدار آنالوگ متغیر بدست بیارین.
                روش کار اینطوریه که اول باید PWM رو راه اندازی کنین و از وجود و قابلیت کنترل سیگنال مطمئن بشین. بعد تابع تبدیلتون رو مینویسین و نتیجه رو طوری اسکیل میکنین که یه مقداری بین 0 تا 255 بشه (چون PWM ها معمولا 8 بیتی هستن).
                بعد این مقدار رو میذارین تو PWM. البته فراموش نشه، برای کنترل PID باید حتما فیدبک هم داشته باشین.
                کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                دیدگاه


                  #23
                  پاسخ : راه اندازی کارت های daq


                  سلام استاد
                  خیلی لطف کردید پاسخ دادید من پاسخ شما رو چندین بار مرور کردم سوالات زیادی برام بوجود اومد این سوال رو من از چندین نفر پرسیدم ولی چیزی نمی دونستن
                  1. منظورتون از "تابع تبدیلتون رو می نویسین" چیه؟
                  2. منظورتون از نتیجه چیه؟
                  3.منظورتون از اینکه پی دبلیوام ها هشت بیتی هستن چیه؟
                  4. میشه لطف کنین بیشتر توضیح بدین
                  سپاسگزارم

                  دیدگاه


                    #24
                    پاسخ : راه اندازی کارت های daq

                    خواهش میکنم.

                    1 - منظور از تابع تبدیل همون فرمول PID که مجموع سه جمله تناسبی و مشتقی و انتگرالی هست. که شما اونو تو متلب پیاده سازی میکنین.
                    2 - منظور از نتیجه هم مقدار محاسبه شده همون تابع بالا هست که باید بصورت فرمان، به موتور اعمال بشه.
                    3 - منظور از 8 بیتی بودن PWMآ‌ ها اینه که دیوتی سایکل موج مربعی تولید شده رو میشه توی 256 قسمت، از صفر تا 255 تغییر داد. با استفاده از اون فیلتری که گفتم شما خروجی آنالوگ با 255 پله و رنج 0 تا 5 ولت خواهید داشت.

                    نوشته اصلی توسط shamze
                    من دانشجوی دکتری برق هستم.
                    ببخشین، ولی من یه خورده مشکوک شدم. :surprised: البته به سیستم آموزشی :smile:.
                    کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                    دیدگاه


                      #25
                      پاسخ : راه اندازی کارت های daq

                      سلام استاد
                      ببینید استاد فکر کنم سوالامو خوب نپرسیدم
                      من میدونم پی آی دی چیه. البته من قصد اعمال پی آی دی به این سیستم رو ندارم بلکه می خوام کنترل کننده هایی که خودم طراحی و اثبات کردم مثل تلفیق مدلغزشی گام به عقب و بهینه هست و کنترل تطبیقی و فازی و ... رو پیاده سازی کنم و نتیجه رو به عینه ببینم. البته هدف اصلی من این نیست که روی یک موتور کنترل پیچیده پیاده سازی کنم بلکه من قصد پیاده سازی یک کنترل جدید بر روی یک ربات که نمی تونم بگم از چه نوعی هست رو دارم.بگذریم.
                      اینارو نگفتم که بشما اطمینان بدم که من دانشجوی دکتری هستم چون اصلا این مهم نیست که من دانشجوی دکتری هستم و شما شاید نباشی. بلکه بخاطر اینه که شما که الان استاد من هستید و من با همه دبدبه و کبکبه هیچی از کارهای عملی نمیدونم بهم اعتماد کنید و باز هم به سوالاتم جواب بدید.و البته یک دانشجوی دکتری هم هیچ وظیفه ای تو این زمینه نداره بلکه وظیفه امثال ما تولید علمه نه کار عملی. اینها رو به خاطر علاقه خودم انجام میدم. و امیدوارم شما مثل قبل صبور باشید و به من کمک کنید
                      در مورد سوالات
                      ببینید من فرض براینکه یک سیگنال (مثلا سینوسی) دارم و می خوام این سیگنال آنالوگ رو به موتور از طریق متلب اعمال کنم. فرض کنیم می خوایم از روشی که شما فرمودید، یعنی پی دبلیو ام ،این سیگنال رو اعمال کنیم. سوال اینه که دقیقا چطور باید از اون دویست و پنجاه و شش قسمت که فرمودید به عنوان دیوتی سایکل باید استفاده کرد به سیستم اعمال کنم؟
                      یعنی باید سیگنال رو دویست و پنجاه و شش قسمت کنم و اصلا گیریم که این سیگنال رو تقسیم کردیم خب بعد چطور این ها رو به عنوان دیوتی سایکل تعریف کنم؟
                      اگه میشه یکم دقیقتر توی این قسمت توضیح بفرمایید
                      شما همچنین فرمودید که از یک فیلتر آرسی و یا ال سی استفاده بشه. من متوجه نشدم که چرا باید از این فیلتر برای آنالوگ کردن استفاده کرد؟
                      یک سوال مهم اینکه فرض کنیم من سیگنال خروجی رو اسکیل کردم و مثلا اورشوتش که بعنوان مثال دو هستش رو بعنوان دویست وپنجاه و شش قرار دادم و شروع سیگنال رو که صفر هستش رو صفر در نظر گرفتم اونوقت خب این اعداد بین صفر تا دویست و پنجاه و شش رو باید بعنوان دیوتی سایکل به پی دبلیو ام بدم؟ اگه اینطوره پس نقش فرکانس پی دبلیو ام چیه؟ برای افزایش یا کاهش سرعت دور از تغییر دیوتی سایکل استفاده می کنن؟پس از فرکانسش برای چی استفاده میشه؟

                      سپاسگزارم استاد

                      دیدگاه


                        #26
                        پاسخ : راه اندازی کارت های daq

                        دوست عزیز، به من نگین استاد، من لیسانسمو هم بزور گرفتم.
                        اینکه گفتم مشکوک شدم، شوخی بود. :biggrin: . یعنی اصلا مدرک یا سواد دیگران به من ربطی نداره. ولی یه توقع دارم و اونم اینه که وقتی کسی سئوال میپرسه، خودش همه راها رو رفته باشه و سعیشو کرده باشه. فارغ از مدرکش. بگذریم.

                        اینکه من روش pwmآ‌ رو پیشنهاد کردم بخاطر این بود که توی مشخصات کارت شما خوندم که قابلیت pwm داره و یعنی دستورات pwm رو هم میپذیره و حتما نحوه استفاده ازش توی مثالهاش هست. بنا براین با افزودن یه فیلتر، ازش میشه به عنوان خروجی آنالوگ هم استفاده کرد.
                        همون سینوس مثال خوبیه. ما اصلا به نوع تابع تبدیل و کنترولر کاری نداریم و فقط به خروجی فکر میکنیم. فرض کنین شما یه سینوسی دارین و میخواین اونو از طریق pwm به کارتتون اعمال کنین.
                        مقدار تابع سینوس توی حالت عادی بین 1- تا 1 متغیره. حال اگه ما اونو در 128 ضرب کنیم، با حفظ همون شکل سینوسی، مقدارش بین 128- تا 128 تغییر میکنه. چون ما مقدار منفی برای دیوتی سایکل نداریم، مقدار حاصل رو با 128 جمع میکنیم تا سینوسمون کلا بیاد بالای منحنی. یعنی 128 + (128Sin(t
                        حالا شما فرض کنین مثلا تو هر 0.01 ثانیه، ما مقدار عبارت فوق رو محاسبه کنیم و به کارت بدیم. با فرض اینکه توی خروجی فیلتر رو هم گذاشتیم، اونجا ما یه موج سینوسی با دامنه 0 تا 5 ولت و پریود حدودی 0.63 ثانیه ( فرکانس حدودی 1.5 هرتز) خواهیم داشت.

                        توی اینکار تقریبا از فرکانس pwmآ‌ استفاده ای نمیشه و مقدار اون فقط تو انتخاب مقادیر قطعات فیلتر موثره.
                        البته سرعت پاسخ پله سیستم، رفرش ریت خروجی، فرکانس pwm و مقادیر قطعات فیلتر همه به هم وابسته هستن و درستش اینه که توی طراحی، از آخر بیایم به اول. یعنی بگیم یه همچین پاسخ پله ای میخوایم. بعدش متناسب با اون لوپ تایم رو در نظر بگیریم و بعدش فرکانس رو. البته فرکانس اگه بیشتر باشه بهتره. چون تو خروجی فیلتر ریپل کمتری خواهیم داشت. ولی از یه حدی نباید کمتر باشه که شکل موج خروجی رو بهم بریزه.

                        فکرکنم نکته مهمی که هنوز مغفول مونده فیدبک هست. فرض میکنیم شما یه موتور رو با درایورش به برد وصل کردین. حالا برای کنترل سرعتش باید فیدبک از سرعت و برای کنترل پوزیشن باید فیدبکش رو داشته باشین. واسه اون چکار میکنین؟
                        کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                        دیدگاه


                          #27
                          پاسخ : راه اندازی کارت های daq

                          مچکرم. خیلی توضیح خوبی بود اما من هنوز یک سوال دارم
                          و اون اینکه در مورد همون مثالی که فرمودید فرض کنید 128sin(t)+128 رو می خوام در لحظه پی دوم می خوام محاسبه کنم در این صورت مقدارش برابر با 256 خواهد شد. خب حالا سوال اینه که این عدد دویست و پنجاه و شش رو چطور میشه به پورت فرستاد؟ منظورم اینه که من قبلا توی برنامه برای اینکه مثلا پورت یک رو با دیوتی سایکل 50 درصد و فرکانس 1000 روشن کنم از دستور (1000,50)pwm1 استفاده می کردم. خب حالا اون عدد 256 رو باید برابر با دیوتی سایکل صد در صد قرار بدم؟ و مثلا عدد 128 رو برابر با 50 درصد قرار بدم؟
                          ضمن اینکه اگه اینطور باشه چه نیازی به مدارات آر سی و یا ال سی هستش؟
                          در مورد سوال شما. خب من سعی کردم گام به گام پیش بیام. البته برای محاسبه دور و موقعیت کافیه که از دو تا سنسور استفاده کرد. منتها این راه حل ممکنه به صرفه نباشه که در این صورت می تونیم از یک تخمین گر استفاده کنیم. تخمین گر ها از یک سنسور استفاده می کنن ولی دو تا متغیر رو به صورت اندازه گیری شده به شما تحویل می دن. یعنی مثلا توی همین مثال موتور من هم نیاز به دور سنج دارم و هم نیاز به موقعیت. خب می تونم از یک دور سنج استفاده کنم و با استفاده از تخمینگر موقعیت رو هم تخمین بزنم در این صورت دیگه نیازی به موقعیت سنج نیست. البته ناگفته نماند که تخمینگر ها یکم خطا دارند ولی قابل قبوله.
                          کلا توی سیستم های بزرگ به جای استفاده از ده تا سنسور بعنوان مثال دو تا سنسور قرار میدن و بقیه رو تخمین می زنن
                          سپاسگزارم استاد

                          دیدگاه


                            #28
                            پاسخ : راه اندازی کارت های daq

                            اگه برد شما بصورت درصد فرمان میگیره، خب اون رابطه اصلاح میشه بصورت 50sin(t)+50.

                            اگه توی خروجی فیلتر نذاریم دیگه ولتاژ سینوسی نمیبینیم. مثلا با دیوتی سایکل 50 درصد، با فیلتر، توی خروجی ما 2.5 ولت DC داریم. ولی بدون فیلتر ما همون موج مربعی 50 درصد رو داریم. اگه مثلا یه درایوی دارین که با PWMآ‌ کار میکنه دیگه احتیاج به فیلتر نیست.

                            این روش تخمینگرها خوبه. ولی برای کنترل های دقیق کارایی نداره. مثلا شما وقتی بخواین سرعت موتور رو کنترل کنین میشه با یه هال افکت سوئیچ سرعت رو بشمرین. ولی با همون سنسور و الگوریتم تخمین نمیشه پوزیشن رو تو یه زاویه ثابت نگه داشت. کلا برای اطلاع از موقعیت حدودی زاویه شفت، اونم در حین حرکت میشه ازش استفاده کرد. ولی برای کنترلش نه.

                            تازه این به شرطیه که برای دور سنجی از سوئیچی که توی یه موقعیت خاصه استفاده کنین و نه از تاکو. با تاکو که اصلا نمیشه تخمین زد. تازه با همون هال افکت هم توی دور های پائین به مشکل میخورین و کارائیش محدود به یه رنج خاصی میشه.
                            کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                            دیدگاه


                              #29
                              پاسخ : راه اندازی کارت های daq

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

                              دیدگاه


                                #30
                                پاسخ : راه اندازی کارت های daq

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

                                دیدگاه

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