ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 10 از 10
  1. #1
    2012/09/16
    boushehr
    113
    15

    خروجی از متلب به پرت سریال و میکرو

    سلام دوستان .من این مشکلم رو قبلا توی یکی دیگه از انجمن های اینجا پرسیدم اما جوابی نشنیدم.اگه میشهشما کمکم کنید.
    پستی که من توی موضوع قبلی نهادم از این قرار بود.
    بچه ها من باید این رو تا آخر هفته تحویلش بدم.
    پروژه ی کارشناسی من پردازش تصویر با متلبه. به این ترتیب که من یه دوربین رو به مطلب وصل میکنم و یه جسم رو از جلوی دوربین عبور میدم. مطلب بایدتشخیص بده که دوربین از کدوم طرف میاد و الان کجای تصویر قرار داره.بعد با استفاده از پرت سریال به میکرو دستور بده و میکرو هم به موتورها(که من اینجا از استپ موتور استفاده میکنم ،البته موتورهای بهتری مثل سرووو موتور هم هستندد که من به خاطر هزینه اش و این که این رو در دسترس داشتم از این استفاده میکنم.) دستور بده که چپ و راست و پلا و پایین بشن. حالا من قسمت پردازش تصویرش رو انجام دادم و کاملا و دقیق هم واب گرفتم. با قسمت میکروش هم مشکلی ندارم(چون اصلا چیزی نداره)تنها مشکل من الان اینه که از مطلب به میکرو دستور بدم.
    برای این کار هم یه پرت سریال گرفتم و پایه های 2و3و5 اون رو وصل کردم. اما هر کاری میکنم نمیتونم خروجی بدم به میکرو.
    حتی یه برنامه ساده رو هم که مینویسم ارور میده.
    برای تست برنامه خروجی رو به یه led دادم و پایه پنجش رو هم به کاتد اون دادم. بعد این برنامه رو نوشتم
    function test1
    s = serial('COM1&#039
    fopen(s)
    fwrite(s,1)
    end
    اما led من روشن نمیشه. نمیدونم چرا.این اطلاعات رو هم مینویسه. بعدش اگه خواستم دوباره از اون پورت استفاده کنم میگه هیچ پرتی در دسترس نیست.باید یک بار متلب رو ببندم و دوباره باز کنم تا دوباره اجرا بشه.
    اینها رو هم مینویسه

    Serial Port Object : Serial-COM3

    Communication Settings
    Port: COM3
    BaudRate: 9600
    Terminator: 'LF'

    Communication State
    Status: closed
    RecordStatus: off

    Read/Write State
    TransferStatus: idle
    BytesAvailable: 0
    ValuesReceived: 0
    ValuesSent: 0

    خواهشا کمک کنید. با دستور fprintf هم تست کردم همینطور بود
  2. #2
    2012/10/04
    18
    0

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    به احتمال زیاد پورت RS232شما روی COM3 است نگاه کن ببین مربوط به کدوم COM است بعد برنامت رو مطابق با همون COM بنویس
    :job:
  3. #3
    2012/02/16
    332
    17

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    درود
    چند تا مشکل ممکنه وجود داشته باشه:
    1. پورت com مشکل داره. یا سوخته یا شماره com رو اشتباه میزنی. ار device manager شماره com رو ببین.
    2. می دونی که به میکرو باید از یه max232 استفاده کنی. چون روی پورت سریال ولتاژ +-10 ولت هست (نه 0 و 3. می تونی ار یه مبدل usb2serial با خروجی ttl استفاده کنی که دیگه نیازی به max نباشه.
    4. باود ریتت درست نیست. باید باود ریت میکرو با متلب یکی باشه. اگه باود ریتت بالا هست، کریستال میکرو رو یه چیزی بذار که به 115200 بخش پذیر باشه. مثل 7273800.

    برای تست پورت وقتی مثلا عدد 1 رو قرار میدی، چون دیتا سریال ارسال میشه ال ای دی رو باید به صورت پشمک زن ببینی. (البته به مشخصه ال ای دی هم دقت کن چون ممکنه ولتاژ معکوسش اون رو بسوزونه چون -10 ولت روش خواهد افتاد).
    بنابراین برای تست پورت می تونی این کار رو انجام بدی. پایه های tx و rx رو به هم وصل کن. بعد hyper terminal یا هر نرم افزار دیگه مثل proteus رو باز کن. حالا هرچی تایپ کنی باید بتونی روی صفحه ببینی. چون tx به rx وصله. و اگه tx و rx رو جدا کنی مباید چیزی که تایپ می کنی رو ببینی.

    اگه پورتت سالم باشه من فکر می کنم اشکال از استفاده نکردن از max 232 هست. نمیشه rs232 رو به میکرو مستقیم وصل کرد.
    مـن هیچ ندانم که مرا آن که سرشت
    از اهل بهشت کرد یا دوزخ زشت
    جامی و بتی و بربطی بر لب کشت
    اين هر سه مرا نقد و تو را نسیه بهشت
  4. #4
    2012/09/16
    boushehr
    113
    15

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    من هنوز به میکرو وصلش نکردم. اول میخوام ببینم اصلا مطلب چیزی میفرسته یا نه؟
    برای تست هم همونطور که گفتم از یه led استفاده کردم که پایه3 سریال رو به آند و پایه 5 رو به کاتد دادم(البته مقاومت 1کیلو رو برای نسوختن led سر راهش نهادم. بعد این برنامه رو اجرا میکنم .
    function test1
    s = serial('COM3&#039
    fopen(s)
    fwrite(s,1)
    end
    برنامه اجرا میشه و هیچ اروری نمیده.وقتی هم که تموم میشه این اطلاعات رو مینویسه
    Serial Port Object : Serial-COM3

    Communication Settings
    Port: COM3
    BaudRate: 9600
    Terminator: 'LF'

    Communication State
    Status: closed
    RecordStatus: off

    Read/Write State
    TransferStatus: idle
    BytesAvailable: 0
    ValuesReceived: 0
    ValuesSent: 0
    اما led روشن نمیشه(چشمک نمیزنه) همونطور که میبینید مشخصه values sent رو هم برابر صفر گزارش میکنه.
    max 232 هم خریدم اما برای تست روی led وصلش نکردم به پرت سریال.
    راستی برای ارسال اطلاعات هم از 1.5 متر سیم آیفونی استفاده کردم.این مشکلی ایجاد نمیکنه؟
  5. #5
    2012/09/16
    boushehr
    113
    15

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    مطمعنید که دیگه تنظیم دیگه ای نداره؟ لطفا کمک کنید
  6. #6
    2013/07/28
    36
    0

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    يه بخش كوچيكي از پروژه ارشد من اين بود كه مطلب با يك فرمان به ميكرو درخواست دريافت اطلاعات ميداد.
    بعد ميكرو عدد مورد نظر را به كامپيوتر ارسال ميكرد يعني به مطل ميداد.
    خب اين كار در هر كتابي مربوط به ميكرو هست. يك كتاب دقيقا مطلب رو درگير اينكار ميكنه اگه نتونستي كتاو گير بياري بگو تا واست برنامه خودمو بزارم
    اسم كتاب:
    آزمايشگاه ميكروكنترلر
    مولفين مهندس مجيد صلصال و مهندس امير ره افروز و ...
    صفحه 465
  7. #7
    2013/07/28
    36
    0

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    يه نكته اينكه بجاي ارسال خود عدد هميشه بايد اطلاعات را بصورت رشته ارسال و دريافت كني چونكه احتمال خطا خيلي كم ميشه
  8. #8
    2013/07/28
    36
    0

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    دستور (fprintf(d,'!1' كاراكتر !1 را بصورت رشته به پورت سريال ميفرسته و ميتونه براي ميكرو نشونه اي براي درخواست دريافت اطلاعات از طرف PC (از طرف مطلب ) به ميكرو باشه
    دستور (fget1(s رشته موجود در بافر پورت سريال را ميخونه كه همون داطلاعات ارسالي ا ميكرو به PC هست.
    اگه سوالي بود نقل قل كن به همين تا بهتر بتونم بفهمم و جواب بدم
  9. #9
    2009/10/10
    244
    4

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    نقل قول نوشته اصلی توسط hamedtahamtan
    سلام دوستان .من این مشکلم رو ...
    دوست عزیز استفاده از led برای تست ارتباط سریال زیاد اصولی نیست.با باود ریت 9600 هر بیت تقریبا 100 میکرو ثانیه رو به خودش اختصاص میده.برای ارسال یه کاراکتر با احتساب یک بیت شروع و پایان جمعا 10 بیت ارسال میشه که میشه یک میلی ثانیه.احتمال اینکه ارتباط درست باشه و شما تغییرات نور led تو یک میلی ثانیه رو نبینید زیاده.بهتره مدار رو کامل ببندید و تست کنید.در ضمن یک بار بیشتر port رو باز نکنید و بعد از پایان برنامه فقط پورت رو ببندید.دو بار استفاده متوالی دستور fopen منجر به خطا میشه
    افتادگی آموز اگر طالب فیضی هرگز نخورد آب زمینی که بلند است
  10. #10
    2010/09/07
    تهران
    316
    13

    پاسخ : خروجی از متلب به پرت سریال و میکرو

    سلام
    مشکل اصلی شما اینه که Status پورت Close هست. در واقع بعد از اینکه دستور fopen را اجرا میکنید پورت باید باز شود و تا وقتی پورت باز نشود، چیزی هم ارسال نمیشود:
    کد:
    >>      s1 = serial('COM1');
    >>      fopen(s1)
    >> s1
    
      Serial Port Object : Serial-COM1
    
      Communication Settings 
       Port:        COM1
       BaudRate:      9600
       Terminator:     'LF'
    
      Communication State 
       Status:       open
       RecordStatus:    off
    
      Read/Write State 
       TransferStatus:   idle
       BytesAvailable:   0
       ValuesReceived:   0
       ValuesSent:     0
     >>
    حالا چرا باز نمیشود؟ یکبار دستورات را یکی یکی اجرا کنید(آنها را از تابع خارج کنید) و ببینید مشکل کار کجاست؟
    وقتی Status باز شد، اکنون میتوان به پورت مقدار فرستاد:
    کد:
    >> fprintf(s1, '5');
    >> s1
    
      Serial Port Object : Serial-COM1
    
      Communication Settings 
       Port:        COM1
       BaudRate:      9600
       Terminator:     'LF'
    
      Communication State 
       Status:       open
       RecordStatus:    off
    
      Read/Write State 
       TransferStatus:   idle
       BytesAvailable:   0
       ValuesReceived:   0
       ValuesSent:     2
    و دقت کنید که جلوی عبارت ValueSent عدد 2 نوشته شده است که نشانگر این است که Matlab روی پورت نوشته است(قبلا مقدارش 0 بود چون چیزی نفرستاده بود). بنابراین نیازی به استفاده از LED نیست.


    در مورد LED نظر من با abolfazl_moradpour یکیه. شما به احتمال زیاد روشن شدن LED را نمیبینید. اگر اصرار دارید که با LED امتحان کنید، دستور fprintf را در یک حلقه بی نهایت قرار بدید و مثلا عدد 5 را ارسال کنید. LED باید حالت نیمه روشن داشته باشه که اونهم احتمالا در اتاقی تاریک قابل رویت هست با ارسال عدد 7 باید کمی روشن تر دیده بشه
    پورت سریال رو هم در آخر تابع ببندید تا نیازی نباشه Matlab را بسته و مجددا باز کنید، با اضافه کردن دستور زیر:
    کد:
    fclose(s1)
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. ارتباط سریال متلب با میکرو avr
    توسط pars73 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2016/03/29, 21:50
  2. ارتباط سریال در متلب
    توسط atefe.fallah در انجمن Matlab
    پاسخ: 10
    آخرين نوشته: 2015/03/25, 18:29
  3. پاسخ: 38
    آخرين نوشته: 2013/03/18, 20:17
  4. دستورات پورت سریال در متلب
    توسط rreyhanehh در انجمن آموزش نرم افزارهاي آناليز و شبيه ساز
    پاسخ: 0
    آخرين نوشته: 2012/08/13, 13:02
  5. خروجی سریال میکرو
    توسط imijoon در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2010/07/29, 12:32

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •