PDA

View Full Version : سوال: چطور میشه یک لامپ رو توسط برنامه ویژوال روشن کرد ؟



danismoke
چهارشنبه 09 فروردین 1391, 23:20 عصر
سلام دوستان

می خواستم ببینم راهی هست که یک لامپ ال ای دی رو با پورت com یا usb با ویژوال بیسیک روشن خاموش کرد ؟

lبه عنوان مثال کدش اینطور باشه ?!!!




Private Sub Timer1_Timer()
if led.enable = true then
led.enable = false
else
led.enable = true
end sub


البته میدونم که به این سادگبی ها هم نیست !!

SlowCode
چهارشنبه 09 فروردین 1391, 23:27 عصر
خوب شما فقط یه LED دارین یا یه مدار(مثل روبات) ؟

MohammadGh2011
پنج شنبه 10 فروردین 1391, 00:25 صبح
سلام دوستان
می خواستم ببینم راهی هست که یک لامپ ال ای دی رو با پورت com یا usb با ویژوال بیسیک روشن خاموش کرد ؟
البته میدونم که به این سادگبی ها هم نیست !!
سلام عليکم
بله ميشه اين کار رو انجام داد البته همونطور که خودتون هم فرموديد به سختي.
اول شما بايد بتونيد مدار الکترونیکیش رو درست کنيد که سخت ترين کارش هم همينجاست.و شما نياز داريد به تعدادي مقاومت و يک رله و کابلUSB و... (متاسفانه بقيه ي وسايل مورد نياز رو يادم رفته).
به شما پيشنهاد ميکنم با يک الکترونيک کار حرفه اي مشورت و گفتگو کنيد.


موفق باشيد

رامین مرادی
پنج شنبه 10 فروردین 1391, 18:23 عصر
چرا اینهمه کار رو سخت می کنید با پورت کام می تونید اینکارو بکنید فقط کامپوننت ؟ اسمش یادم رفت همونی شکل یه تلفنه (mscommon)رو به برنامتون اضافه می کنید
دوستای من کنترل دور موتور رو با این روش نوشته بودن که یه کنترل اسکرول گذاشته بودن که وقتی حرکتش می دادی به نسبت حرکتش ،دور موتور هم تغییر میکرد حتی جهت چرحش اون هم عوض می کردن
فکر کنم با یو اس بی یه کم سخت باشه ولی با پورت کام تو سه خط مشکلت حل میشه

danismoke
شنبه 30 دی 1391, 06:08 صبح
خسته نباشید ، با کامپونت چطور دور موتور و کم و زیاد می کردن ؟ چه کد و چه رویدادی هست که ولتاژ کم و زیاد می کنه ؟

سپهر-111
شنبه 30 دی 1391, 09:55 صبح
خسته نباشید ، با کامپونت چطور دور موتور و کم و زیاد می کردن ؟ چه کد و چه رویدادی هست که ولتاژ کم و زیاد می کنه ؟

دوست من شما برای اینکه بتونی یک دستگاه رو از طریق کامپیوتر کنترل کنی نیاز به سخت افزار واسط داری(همین طوری نمیتونی مستقیم به کامپیوتر وصل کنی!) باید توی الکترونیک هم سر رشته داشته باشی .
بستگی به کاری داره که میخوای انجام بدی ، مثل اگه میخوای فقط یک موتور را کنترل کنی (البته اگر منظور شما استپر موتور میباشد) باید از یک میکرو کنترلر مثل Atmega 8 استفاده کنی(در اینجا از این تراشه برای ارتباط سخت افزاری و نرم افزاری با کامپیوتر استفاده میشه ) استفاده کنی و البته باید برنامه نویسی این نوع تراشه ها را هم باید یاد بگیری(راحترینش کامپایلر بسکام میباشد که زبانش هم بیسیک هست ) و در پایان بایداز یک مدار درایور قدرت و راه انداز استپر موتور ، از یک تراشه مثل ULN2003 استفاده کنی

mehran901
شنبه 30 دی 1391, 14:21 عصر
خب بحث بحث مورد علاقه منه که! جونم الکترونیک

خب دوست عزیز شما واسه کنترل روشنایی یک led توسط برنامه ویبی همون طوری که یکی از دوستان گفته بودن به راحتی می تویند با استفاده از کنترل تلفن ! mscommon استفاده کنی ، ولی خب بذار ی سری دیگه راه حل هم بهت پیشنهاد کنم که دسترسی بهتری داشته باشی
رفرنسی تحت عنوان inpout32.dll وجود داره که جدا کار رو واسه کار با پورت ها راحت کرده با استفاده از این رفرنس به راحتی روی پورت پار آلل ، یو اس پی و ... میتونی بنویسی و بخونی ، خب راحت ترین روش استفاده در مد پورت موازی هست که یک عدد باینری بهش تحویل میدی منعکس میکنه رو پورت سورسشم زیاده فقط کافیه تو گوگل به انگلیسی سرچ کنی ! درضمن آدرس پورت ها هم به همراه نمونه سورس هاش ضمیمه میشه اگه نبود بگو واست بذارم

تا اینجا 2 تا راه حل
راه حل دیگه :
با استفاده از پروتکل سریال RS232 RS485 ... برای ارتباط با پورت پارالل کار کنی دراصل RS232 میاد منطق ttl رو به cmos تغییر میده و با تغییر سطح منطقی ولتاژ بیت ارسال میکنه و یکی از شرایط استاندارش اینه که زمان گذر از یک سطح منطقی به سطح منطقی دیگه نباید از 4% زمان یک بیت تجاوز کنه ( واسه وقتی خواستی باهاش کار کنی و یک سخت افزار با تراشه هایی مثل avr يا arm براش استفاده کنی این اطلاعات برای تعیین سرعت انتقال بیت ها باود ریت کمکت میکنه تا سرعت مناسب واسه انتقال اطلاعات در نظر بگیری ) و rs485 واسه کالیبره در مسافت های طولانی استفاده میشه حالا به روش کار اینا کاری ندارم ولی اینو بایدبدونید که دروصورتی که از rs232 استفاده میکنید به راحتی انواع اطلاعات رو میتونید بین سخت افزار و کامپیوترتون منتقل کنید
تو نت سرچ کنین مطلب زیاده اینم یادم اومد بگم که نرخ سرعت انتقال علائم در آر اس 232 مازیمم 20kbps هست درصورتی که حجم زیادی اطلاعات رو در زمان کمتر بخواین انتقال بدین می تونید از پروتکل های جدیدتر مثل usart / uart در مدهای سنکرون و آسنکرون استفاده کنین تا 1.5mbps جواب میده

درمورد کم و زیاد کردن سرعت موتور شما 2 راه دارین ( راه دوم ابتکار خودمه )
راه اول همون طوری که دوستمون گفتن بیاین با استفاده از تراشه هایی مثل mega8 یک rs232 (از تراشه Max232 واسه تبدیل منطق ولتاژی استفاده باید بشه )به کام بزنید و در حالت سریال اطلاعات رو انتقال بدین ( با برنامه تحت ویندوز عدد رو پورت بنویسین ) ، اطلاعاتی که شامل یک بازه از اعداد مثلا از 0 تا 255 هست و در تراشه مقصد که اطلاعات رو میگیره و بنا به برنامه ای که مینویسید با استفاده از مدیریت پهنای باند Pulse Wide Modulation و بنا به نوع موتورتون یک درایور ساده ترانزیستوری در حالت سوئیچینگ استفاده کنین ( میتونید ترانزیستور ها رو در حالت امیتر مشترک به صورت دارلینگتور استفاده کنین تا با به توان رسیدن ضریب تقویت )HFE ( جریانشون موتور هایی با جریان های راه انداز مختلف رو درایو کنین ) در این حالت یکم دردسر دارین چون باید برنامه نویسی میکرو ها رو تا حدودی نه چندانزیاد بلد باشین

و اما روش دوم روش ابتکاری خودم :

ما میدونیم که اطلاعات خروجی از پورت کام یو اس پی و ... در سطح منطقی RS232 (بازه استاندارد کامپیوترش یادم نیس 12 +12- بود فک کنم ! )واسه تبدیل به سطح ولتاژ TTL از Max233 یا MAX 232 استفاده کنین حالا یک خروجی بافر شده بسازین ( واسه اینجوربافر های ساده ای از Op-AMpها در مد بافرینگ میتونید کمک بگیرین ) خروجی ما سطح ولتاژ نهایی 0 تا 5 ( 0 1 منطقی ) داره که توسط میکرو میتونه خونده بشه حالا شما بیاین با استفاده از Inpout32.dll مرتب پین خاصی از پورت مثلا موازیتون رو 1 , 0 کنین نتیجه خروجی یک موج مربعی هست با Ducty Cycle مشخص که توسط یك تایمر تو برنامه شما مشخص شده،

حالا میریم سر تغییر ولتاژ : با استفاده از یک مدار الکترونیکی ساده میتونید ولتاژ تقویت شده معادل که از پلاریته خارجی تغذیه میشه بسازین (Op-Amp ها بهتون کمک می کنن! ) بیاین یک مدار انتگراتور بسازین که بیاد انتگرال موج مربعی پورت پرینتر روبگیره با انتگرال گیری از تابعی مثل y = f(x) در صورتی که مشتق y صفر باشه (دقیقا حالتی که موج مربعی ما داره ) میتونید تابعی از درجه یک که تابعی خطی هست داشته باشین یعنی چی : یعنی اینکه پورت پرینتر خروجیش بنا به تایع y = f(x) که از درجه صفره هست ( چون موج مربعی هست ) حالا انتگرال این تابع درجه صفر میشه تابعی از درجه 1 که خطی هست و این یعنی در مدت زمان های مختلف سطح ولتاژ ما داره تغییر میکنه

از این استفاده می کنیم وبا تغییر duty cycle موج مربعی توسط تایمری که تو برنامتون داره پورت رو صفر و یک میکنه ، میتونیم از خروجی انتگراتور ولتاژ هار مختلفی بگیریم که تقویت بشن با استفاده از منبع پلاریته خارجی و به راحتی دور موتور، نور لامپ و .. رو بدون سخت افزار و نیاز به برنامه نویسی اون ها کنترل میکنیم
راستی واسه ساخت مدار انتگراتور می تونید از Op-AMp در مد انتگرال گیر استفاده کنین یا یک فیلتر ساده RC پایین گذر (چون از pwm استفاده میشه ) طراحی کنین که خروجیش انتگرال موج ورودی هست ،

پس نتیجه گیری : با تغییر duty cycle موج توسط اون تایمر که مرتب پورت رو با نظم خاصی یک و صفر می کنه ( موج مربعی ما ایجاد میشه با فرکانس _ 1/t _ ) و مدار انتگراتور در ورودی خودش سطح ولتاژ TTL که توسط Max232 / 3 تبدیل شده ، داره ، و انتگرال موج مربعی ولتاژ متناظرش رو داخل خروجی انتگراتور ایجاد میکنه که با استفاده از op -amp و یک 2n3055 (ترانزیستور قدرت ) میتونید تغییرات ولتاژ رو روي یک منبع پلاریته خارجی شبیه سازی کنین و هرچيزی رو باهاش کنترل کنین

خیلی طولانی شد ... منم انگشتام خودش ریتم پیدا کرده دیگه
امیدوارم مطالبش بتونه کمی کمک کنه
درضمن سوال داشتی میتونید مطرح کنید


شاید به خاطر خستگی ناشی از کمبود خواب ! یك چیزی از این پروتکل های rs232 485 اینا رو از جا انداخته باشم اساتید اگه اشتباهی دیدن اطلاع بدن چون دیگه مغز بنده خواب رفته و نمی تونم دوباره این همه رو چک کنم :|

آخر سر یادم اومد اینم بگم یك تراشه ای هست اسمش یادم رفته smd هم بود (سایت یزد کیت داره توضیح هم داده )
درایور این آیسی میومد رو سیستم یک کام مجازی میساخت و با استفاده از mscomm بهش دستورمیفرستادی و نتیجه رو یو اس بی توسط خود تراشه دتکت میشد ... حالا بدون ایجور چیزی هم هست

موفق باشی

mehran901
شنبه 30 دی 1391, 14:35 عصر
یک نمونه برنامه ارتباط ویبی با rs232 و مدیریت پهنای پالس رو گفتم اضافه کنم :
برنامه ویبی :


option explitic
dim a$
private sub form_load()
with mscomm
.comport = 1
.setting = "9600,n,8,1"
9600 سرعت نرخ اطلاعاته بیت بر ثانیه که 8 بیت 8 بیت چون طرف کامپیوتره واسش میفرستیم و در حالت معکوس ارسال شده )n(
.portopen = ture
end with
end sub

private sub hscroll_change ()
a = hscroll.value
mscomm.output = chr$(a)
debug.print a
نشون دادن اطلاعات در immediate ویبی
textpwm = a
end sub



برنامه بسکام میکرو کنترلر

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
اینجا کریستال 9600 و فرکانس کلاک سی پی یو تراشه 8 مگا هرتز هست و خطای ارسال اطلاعات میشه 16/.%
config timer1 = pwm , pwm = 10 , compare A pwm = clear down ,prescale = 8
حال توضیح پارامتر ها شو ندارم ... مستلزم آشنایی کامل با رزولشن تایمر های میکروکنترلر ها و ایناست ...
DIm a as byte
dim b as word
do
main:
b = inkey()
if b = 0 then goto main
b = b * 4
pwm1a = b
loop
end
تراشه استفاده شده mega 8 با فرکانس کلاک 8 مگا هرتز واسه پیکربندی سریال ، و pwm هست


البته درصورتی که avr رو در سطح مقدماتی و خیلی خیلی جزئی یاد بگیری این 5 6 خط کد مسخره رو میفهمی توضیح هم خواستی اگه از نت جواب پیدا نشد بگو کمک کنم

سپهر-111
شنبه 30 دی 1391, 16:13 عصر
آخر سر یادم اومد اینم بگم ی تراشه ای هست اسمش یادم رفته smd هم بود (سایت یزد کیت داره توضیح هم داده )
درایور این آیسی میومد رو سیستم یک کام مجازی میساخت و با استفاده از mscomm بهش دستورمیفرستادی و نتیجه رو یو اس بی توسط خود تراشه دتکت میشد ... حالا بدون ایجور چیزی هم هست

موفق باشی

تراشه FTD232 میباشد(البته اکثر مادر بردهای امروزی دیگر پورت کام ندارند و از این تراشه برای ساخت یک پورت کام مجازی با سطح ولتاژ 0 تا پنچ ولت استفاده میشه)

سپهر-111
شنبه 30 دی 1391, 16:23 عصر
خب بحث بحث مورد علاقه منه که! جونم الکترونیک

سلام دوست عزیز
ایا شما با USB کارکردید؟(منظورم خود USB هستش با سرعت بالا) مثلا با کلاس های HID ویندوز
یا این که مقاله فارسی یا پروژه اموزشی در این باره سراغ دارید(البته تا اونجا که من اطلاع دارم فقط یک کتاب فارسی در این زمینه وجود داره . . . که اونم پرژوه هاش به زبان c هستش ، من میخوام به زبان ویژوال بیسیک باشه)

mehran901
شنبه 30 دی 1391, 20:03 عصر
تو کارم نیاز نشده تا حالا ، دوستان با سی با خود یو اس بی ارتباط برقرار کردن و فلش مموری ساخته بودن :قهقهه:
البته منم باید روش کار کنم واسه پروژه هام نیاز میشه از این به بعد ، بسکام ی کتاب خونه ارتباطی داره واسه یو اس پی ( البته باید از سایتش بگیری ) و رفرنسی که معرفی کردم جواب گو نیست ؟ inpout32.dll ? با اینبدون دردسر با usb میتونید ارتباط داشته باشین ، اطلاعات بخونید وبنویسید .... هنوز به HID مشغول نشدم و ی مقاله خوب ( ولی انگلیسی از اتمل ) در مورد avr-cdc ضمیمه کردم دراصل میاد پورت کام مجازی رو واسط میکنه و با usart میتونی با سرعت 1.5mbps انتقال اطلاعات با یو اس پی داشته باشی
http://www.atmel.com/dyn/resources/prod_...oc7619.pdf

http://www.recursion.jp/avrcdc/index.html

سپهر-111
شنبه 30 دی 1391, 23:22 عصر
ولی متاسفانه اکثر منابعی که وجود داره ، بیشتر به همون کام مجازی پرداخته ، من دنبال منبعی میگردم که با HID ویندوز کار کنه(فایل مربوط به اتمل هم کام مجازی هستش!)
االبته من با کامپاننت Mscomm32 کار میکنم که عالی جواب میده با Inpout 32 کار نکردم البته فکر هم نکنم که برای USB باشه اخه پرتکل ارتباطی یو اس بی فرق میکنه(منظورم کام مجازی نیست!)
ممنون از راهنمایی که کردید

mehran901
یک شنبه 01 بهمن 1391, 12:00 عصر
ولی متاسفانه اکثر منابعی که وجود داره ، بیشتر به همون کام مجازی پرداخته ، من دنبال منبعی میگردم که با HID ویندوز کار کنه(فایل مربوط به اتمل هم کام مجازی هستش!)
االبته من با کامپاننت Mscomm32 کار میکنم که عالی جواب میده با Inpout 32 کار نکردم البته فکر هم نکنم که برای USB باشه اخه پرتکل ارتباطی یو اس بی فرق میکنه(منظورم کام مجازی نیست!)
ممنون از راهنمایی که کردید

خواهش میشه ، در باره اون قسمت که قرمز کردم : با این رفرنسی که گفتم رو تموم پورت های سخت افزاری میتونین بنویسید و بخونید ! تو کتاب برنامه نویسی سیستمی بود فک کنم آدرس های ی سری پورت هایی که ساپورت میکرد ( چیزی از قلم نیوفتاده بود !) نوشته بود و مثالزده بود ، یو اس پی هم جزئ اون آدرس ها بود و تا 127 تا ارتباط همزمان میتونه ایجاد کنه با یو اس پی

سپهر-111
یک شنبه 01 بهمن 1391, 13:48 عصر
از طرف سخت افزار مشکلی نیست برای ارتباط ! همونطور که فرمودید (البته خودم اطلاع داشتم) شرکت اتمل تراشه های مخصوص این کار را داره(مثلا : AT90USB162 ) حالا بستگی به سلیقه شما داره که با کدوم زبان کار کنی . . .
من مشکلم طرف کامپیوتره ، من میخوام برنامه نویسی طرف کامپیوتر بدونم وگرنه طرف سخت افزارش یه بحث جدا هستش ، تو اون قسمتم مشکلی نیست با کمی سعی خطا و به کمک رفرنسها و پروژه های نمونه به راحتی حل میشه ، میمونه قسمت کامپیوتر : که اونم با زبان ویژوال بیسیک باشه راحتره (در این باره کتاب با زبان سی موجود هست - راهنمای اوصول کار با یو اس بی انتشارت علوم)

mehran901
یک شنبه 01 بهمن 1391, 22:26 عصر
لینک رو آپلود کردم واستون ، اگه بگین میشه به این پاسخ ها ضمیمه اضافه کرد یا نه ثواب کردین ... :|

http://uplod.ir/9v81lul548sd/doc7619.pdf.htm

درمورد at90usb خیلی چیز باحالیه ... ممنون واسه یاد آوری

سپهر-111
دوشنبه 02 بهمن 1391, 00:31 صبح
با سلام ممنون از زحمتی که کشیدی
بله میشه اضافه کرد تو همون جای که میخوای پست ارسال کنی(البته تو حالت پیشرفته) پایینترش نوشته مدیریت ضمیمه!
راستی این Document اتمل هم در مورد پورت کام هستش!(البته با سرعت بالا ، ولی بازم پورت کامه !!)البته هنوز مطالعه نکردم ولی ظاهرا طرف سخت افزارش یو اس بی هستش ولی طرف کامپیوتر پورت کام هستش . . .
البته مشکل فقط طرف کامپیوتره که منابع ویژوال بیسیکش کمه
اگه دوست داشتی خوشحال میشم در این باره با هم همکاری داشته باشیم و در باره کار با کلاسهای کار
HID تحقیق و کار شروع کنیم
98764

mehran901
دوشنبه 02 بهمن 1391, 01:11 صبح
آره ، چرا که نه

nimar1
جمعه 13 دی 1392, 10:24 صبح
به دلیل سرچ در گوگل به زمان جواب دهی توجهی نمیکنم و برای آنها که بعداز این به اینجا سر میزنند جوابی و نصیحتی دارم امیدوارم راه گشا باشد
1- برنامه نویسی برای پورت سریال
2- ساخت پورت سریال مخصوص
3- ساخت مدار مکس 232 برای پورت سریال
4- برنامه نویسی تراشه اتمگا
5- ساخت مدار اتمگا
6- ساخت مدار رله
7- اتصال مدارات و در نهایت اتصال پورت سریال مخصوص به مدار و کامپیوتر
8- اتصال چراغ یا هر وسیله برقی به مدار رله

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

siyn71
جمعه 13 دی 1392, 11:51 صبح
سلام و عرض ادب..
یه نمونه سورس برای خاموش و روشن کردن لامپ LED و حالت چشمک زدنش رو براتون ضمیمه کردم .. البته خودم هنو تست نکردما اما خوب شما ببینین چطوره امیدوارم جواب بده و فرجی توکار باشه..

توضیحات:
پايه مثبت LED به پايه 4 پورت سريال
پايه منفي LED به پايه 5 پورت سريال

http://daneshnameh.roshd.ir/mavara/img/daneshnameh_up/a/a4/belegung_db9.jpg

:لبخندساده:

m.4.r.m
جمعه 13 دی 1392, 16:22 عصر
دستت درد نکنه اما پست عتیقه شده .

hamedspartacus
جمعه 21 شهریور 1393, 14:34 عصر
سلام موضوع رو خیلی پیچیده کردین این ویدیو رو ببینید http://www.aparat.com/v/KI0J7
تو سایت آموزش کامل و شماتیک مدار رو گذاشته . این مدار برای کنترل لامپ . ربات و ...... است. یه میکرو Atmega16 لازم دارید به قیمت 6500 , و یه ماژول usb to TTL . تمام