PDA

View Full Version : سوال: ارسال اطلاعات با پورت Com



as987498749874
شنبه 21 دی 1392, 20:15 عصر
سلام دوستان
من از الکترونیک و پورت هیچی نی فهمم
میخوام یه دستگاهی درست کنیم که نیاز داره در 0.1 ثانیه تعداد 150-200 عدد لامپ رو خاموش و روشن کنه
نرم افزار صفر و یک هر کدوم را باید از پورت Com به ای سی بده و بعد ای سی اگه عدد متناظر هر لامپ یک باشه اونو روشن و اگه صفر باشه اونو خاموش کنه
که ای سی به نوعی عمل یک کلید برای هر لامپ رو انجام میده
کل کار همینه
وظیفه من در این پروژه ساخت نرم افزار و ارسال صفر و یک به پورت سریال هست
حال نرم افزار ساخته شده و در یک تکست بصورت زیر صفر و یک متناظر هر لامپ نوشته میشه در هر ثانیه 10 بار خاموش و روشن بشه
البته بگم که خاموش و روشن شدن رندم هست و هیچ قانونی نداره
0010011110101000100010010....
(از راست بخوانید)
اولی خاموش
دومی لامپ روشن
سومی و چهارمی خاموش
پنجمی روشن
شش و هفت و هشت خاموش
.
.
.
حالا چطور میشه اطلاعات رو ارسال و ایا این صفر یک باید صفر و یک کاراکتر باشه یا صفر و یک باینری
هر کی هرچی مدونه بنویسه تا شاید مفید برای بقیه باشه

مرسی

meys34
یک شنبه 22 دی 1392, 19:52 عصر
نحوه ارسال رو اینجا خیلی خلاصه توضیح داده:


سلام دوست عزیز ممنون از توجه شما به این بحث

می دونم میشه با- ocx - Microsft comm Control این کار رو کرد و باید از یک میکرو کنترلر PIC یا AVR برای این کار استفاده کنم ولی من مثل شما تو این زمینه وارد نیستم نمی دونم باید چی کار کنم

ممنون :خجالت:


خوب ببینید اول باید یکی از پورت های سریال را با دستور
MSComm1.CommPort =x انتخاب کنید که x پورت مورد نظرتون است ( معمولا در کامپیوتر های معمولی یک یا دو پورت وجود داره )
حالا باید پورت مورد نظر را باز کنید
MSComm1.PortOpen = True
حالا باید تنضیمات پورت را انجام بدید که این تنضیمات براش خوبه:
MSComm1.Settings = "2400,n,8,1"
خوب تو این مرحله هم باید دستورات را ارسال کنید که برای ارسال دستورات از
MSComm1.Output = "T"
و برای دریافت اطلاعات از
MSComm1.Input
استفاده کنید
برای دستورات میکرو هم میتونید دستورات ارسال و دریافت اطلاعات سریال را انتخاب کنید و بگید اگر مثلا عدد ورودی 7 بود یک رله را فعال کنه که خیلی راحت هست.


ارسال اطلاعات هم دست خودتونه و البته به برنامه نویسی میکرو مربوط میشه...


منظورم اینکه که اگر کاراکتر بفرستید باید توی میکرو جدا جدا بشه و چراغ ها رو روشن خاموش کنه
و اگر به صورت باینری بفرستید هم مشکلی نداره و در هر صورت باید میکرو بفهمه که باید چیکار کنه


به طور کل باید یه هماهنگی بین شما و کسی که میکرو رو برنامه نویسی میکنه باشه...
ببینید منظورم به چیزی شبیه به اینه:







شما قبل از ارسال اطلاعات باید مطمئن شید که میکرو متصل شده...
این کار رو میگن HandShaking...
به این صورت که شما شروع میکنید به ارسال یه متن خاص (مثلا salam Micro)...
میکرو پس از دریافت به شما ارسال میکنه (مثلا salam VB)...
شما مطمئن میشید که همه چی درسته و تعداد کل چراغ ها رو ارسال میکنید(مثلا Light 200)...
این کار برای اینه که اگر میکرو کل اطلاعات رو دریافت نکرد دوباره درخواست بده...

و الی آخر
همه چیز قراردادیه بین شما و برنامه نویس میکرو...

mehran901
یک شنبه 22 دی 1392, 22:48 عصر
سلام دوستان
من از الکترونیک و پورت هیچی نی فهمم
میخوام یه دستگاهی درست کنیم که نیاز داره در 0.1 ثانیه تعداد 150-200 عدد لامپ رو خاموش و روشن کنه
نرم افزار صفر و یک هر کدوم را باید از پورت Com به ای سی بده و بعد ای سی اگه عدد متناظر هر لامپ یک باشه اونو روشن و اگه صفر باشه اونو خاموش کنه
که ای سی به نوعی عمل یک کلید برای هر لامپ رو انجام میده
کل کار همینه
وظیفه من در این پروژه ساخت نرم افزار و ارسال صفر و یک به پورت سریال هست
حال نرم افزار ساخته شده و در یک تکست بصورت زیر صفر و یک متناظر هر لامپ نوشته میشه در هر ثانیه 10 بار خاموش و روشن بشه
البته بگم که خاموش و روشن شدن رندم هست و هیچ قانونی نداره
0010011110101000100010010....
(از راست بخوانید)
اولی خاموش
دومی لامپ روشن
سومی و چهارمی خاموش
پنجمی روشن
شش و هفت و هشت خاموش
.
.
.
حالا چطور میشه اطلاعات رو ارسال و ایا این صفر یک باید صفر و یک کاراکتر باشه یا صفر و یک باینری
هر کی هرچی مدونه بنویسه تا شاید مفید برای بقیه باشه

مرسی

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

as987498749874
دوشنبه 23 دی 1392, 08:57 صبح
جناب mehran901 (http://barnamenevis.org/member.php?269113-mehran901)
مرسی از ارائه نظرتون
فقط اگه امکان داره یکم بیشتر توضیح بدین(در مورد گزینه های بهتر!)
قسمتی که گفتین بخش الکترونیکش کاری نداره یعنی من که هیچی از الکترونیک سر در نمیارم میتونم درستش کنم
چون برای ساخت همین قسمتی که گفتم حدود 300-400 هزار تومان قراره ازم پول بگیرن بدون قطعات
میشه از الکترونیکش بیشتر بگین؟
بازهم ممنون

mehran901
دوشنبه 23 دی 1392, 23:26 عصر
300 400 هزار تومان ؟! هزینه قطعات این مدار که سرجمع 30 هزارتومن نمیشه ! البته حق داره ... پروژه کلا زیر 400 500 تعریف نمیشه

دقیقا بفرمایید مدار برای چه موردی استفاده میشه تا بهتر بتونم راهنماییتون کنم

اگه منظورتون مداری هست که فقط ی عدد دسیمال بگیره اونو به باینری تبدیل کنه و در نهایت متناسب با اون عدد باینری تعدادی led رو در وضعیت روشن و خاموش قرار بده چند مورد حائز اهمیته ... 1: پروتکل ارتباطی با کامپیوتر 2: تعداد بار هاتون که حالا اگه led هست تعدادش ؟ ..

درصورتی که از پروتکل rs232 یا rs485 استفاده میکنید ، از rx پورت کام اطلاعات رو به سادگی میتونید در میکروکنترلر دریافت کنید
میکروکنترلر :
میکروپروسسوری با امکانات افزوده از قبیل e2prom adc d/a io timer ... درواقع قطعه الکترونیکی ای هست که کپ کامپیوتر میتونید فکر کنید ک معادل هارد رم رام سی پی یو و تمام موارد اصلی ی کامپیوتر درش گنجونده شده و توسط زبان بیسیک یا سی و یا نصب سیستم عامل روش ، میتونید اونو کنترل کنید

پیشنهاد : تراشه میکروکنترلر atmega32 / atmega16 از سری خانواده avr برای کار شما مناسب هست ، شامل 40 پایه که 35 تا io دارین (صرف نظر از تغذیه میکرو و ولتاژ مرجع d/a و .. ) زبان پیشنهادی : از بیسیک و کامپایلر بسکام استفاده کنید، .. تعداد led هاتون خیلی مهمه . اینکه آیا هیچ قاعده ای تو کنترلش هست ؟ مثلا ال ای دی 20تم روشن باشه قطعا ال ای دی 90ام خاموش باشه ؟ ...
اگه تعداد ال ای دی ها زیاد هست و هیچ ترتیبی توش وجود نداره تراشه Atmega128 هم گزینه مناسبی هست ک البته با ی راه خلاقانه میشه از تعداد پایه های میکرو کاست و به هدف هم رسید ...

میتونید به طور مثال از چندتا تراشه mega8 به طور سریال و سنکرون شده استفاده کنید ، که هرکدوم از اونها به طور مثال 20 تا ای ای دی رو مدیریت کنند ...

ی کنترلر مرکزی که اعداد رو از کامپیوتر بگیره و اطلاعات رو مثلا در پک های 20 بایتی به 3 4 تا میکرو دیگه ارسال کنه هر میکرویی هم توسط ی سیستم ساده سوئیچینگ ترانزیستوری ال ای دی هایی رو مدیریت کنه ...

در رابطه با طراحی مدار باید حداثل اطلاعات برنامه نویسی سخت افزار و الکترونیکی رو داشته باشین

موفق باشید

as987498749874
سه شنبه 24 دی 1392, 17:55 عصر
مرسی
ترتیبی در قطع و وصل وجود نداره
لامپها هم 12 ولتی هستن
در عمل بهتره که کار قطع و وصل کلید توسط ای سی انجام بشه تا اینکه مستقیم خود ای سی کار کلید رو انجام بده
در مورد کلید الکترونیکی چیزی میدونین؟

خود طرف هم گفته از همین Atmaga ها استفاده کنیم اما من در یه جایی موندم
اینکه اطلاعات خودمو در چه غالبی به پورت کام بفرستم تا کار اون هم راحت بشه (یعنی با چه نوع داده ای string , Binary ,...)؟

mehran901
چهارشنبه 25 دی 1392, 12:51 عصر
مرسی
ترتیبی در قطع و وصل وجود نداره
لامپها هم 12 ولتی هستن
در عمل بهتره که کار قطع و وصل کلید توسط آی سی انجام بشه تا اینکه مستقیم خود آی سی کار کلید رو انجام بده
در مورد کلید الکترونیکی چیزی میدونین؟

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

اطلاعاتتون رو در قالب دسیمال بفرستین ( بنا به تعداد لامپ ها دیتا تایپش مشخص میشه ) ... یك عدد که گیرنده با تبدیلش به باینری بتونه روی پورت ها مدیریت کنه

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

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

وقتی بیس ترانزیستور با جریان به اشباع برسه ، مقاوت کلکتوربه امیتر کم و در نهایت ال ای دی شما روشن میشه...
البته در صورتی که ال ای دی یا لامپ شما جریان لحظه ای اولیهش متناسب با نوع ترانزیستور باشه