PDA

View Full Version : کنترل موتور Dc با پورت کامپیوتر



mehdi_RM
شنبه 22 اردیبهشت 1386, 21:44 عصر
با سلام
من می خواستم یه ماشین اسباب بازی رو که دو تا موتور dc داره از طریق پورت موازی یا سریال کنترل کنم
با زبان اسمبلی
می خواستم بدونم از چه وسایل الکترونیکی از قبیل میکرو ، ترانزیستور ، مقاومت و ... باید استفاده کنم و چه نوعشون.
و در مورد بقیه کارهاشم اگه چیزی می دونید ممنون میشم راهنمائی کنید.
ممنون میشم راهنمائیم کنید!!!!!!!!!!

BOB
شنبه 22 اردیبهشت 1386, 22:31 عصر
جستجو کن :
http://barnamenevis.org/forum/search.php?searchid=410901
...

DAMAVAND
شنبه 22 اردیبهشت 1386, 22:46 عصر
با سلام
من می خواستم یه ماشین اسباب بازی رو که دو تا موتور dc داره از طریق پورت موازی یا سریال کنترل کنم
با زبان اسمبلی
می خواستم بدونم از چه وسایل الکترونیکی از قبیل میکرو ، ترانزیستور ، مقاومت و ... باید استفاده کنم و چه نوعشون.
و در مورد بقیه کارهاشم اگه چیزی می دونید ممنون میشم راهنمائی کنید.
ممنون میشم راهنمائیم کنید!!!!!!!!!!
////////////////////////////////////////////////////////////////////////////
سلام:لبخند:
اگه شما میخواهید از پورت سریال استفاده کنید باید برای کنترل کردن موتور از میکروکنترولر استفاده کنید.از هر میکروکنترولری میتونید استفاده کنید(AVR,8051,..pic)
برای کنترل با پورت موازی احتیاجی به میکرو نیست.
در استفاده از پورت موازی باید مراقب باشید چون خروجیهای این پورت در برابر اتصال کوتاه محافظت نشده است (برعکس پورت سریال)
و در صورت پیش امدن موردی در مدار نتنها پورت میسوزه بلکه
ممکنه (مادربورد هم...!!!) خیلی پیش اومده!!!!!!:متعجب:
پس به هیچ وجه نباید انرو به یه بار اون هم موتور به طور مستقیم وصل کرد.
برای این کار شما باید یه درایور مناسب برایه موتور بسازی که هم بتونه جریان و ولتاژ مورد نیاز رو تامین کنه (حداکثر جریان و ولتاژ خروجی پورت موازی ده میلی امپر و پنج ولت است)
و هم بتونه نویز های شدید حاصل از موتور رو خنثی کنه!
در زیر مدار یه درایور رو گذاشتم که میتونه موتور های خیلی قوی هم راه اندازی کنه!!!

DAMAVAND
شنبه 22 اردیبهشت 1386, 22:54 عصر
////////////////////////////////////////////////////////////////////////////

در زیر مدار یه درایور رو گذاشتم که میتونه موتور های خیلی قوی هم راه اندازی کنه!!!
//////////////////////////////////////////////////////////:

mehdi_RM
یک شنبه 23 اردیبهشت 1386, 09:01 صبح
یه مداری که با ترانزیستور و دیود باشه ندارید من می خوام با اینا این کارو انجام بدم!!!!

DAMAVAND
یک شنبه 23 اردیبهشت 1386, 11:30 صبح
یه مداری که با ترانزیستور و دیود باشه ندارید من می خوام با اینا این کارو انجام بدم!!!!
به عنوان کسی که تجربه زیادی در این زمینه دارم به شما توصیه میکنم که اگه به سلامت سیستم خود اهمیت میدهید هرگز بدون درایور موتور رو به پورت وصل نکنید!!!!!:متعجب:
اولا پورت قادر ب تامین جریان موتور نیست پس باید از ترانزیستور استفاده کنید ,
حتی اگه از ترانزیستور استفاده نکنید برای حذف جریان برگشتی موتور باید از دیود استفاده کنید .
راه دیگه ای در این زمینه وجود نداره :افسرده:

موفق باشید

mehdi_RM
یک شنبه 23 اردیبهشت 1386, 16:04 عصر
اسم درایور موتور و نوع ترانزیستور و مقاومت ها رو میگی؟؟؟

DAMAVAND
یک شنبه 23 اردیبهشت 1386, 18:00 عصر
اسم درایور موتور و نوع ترانزیستور و مقاومت ها رو میگی؟؟؟
تو شماتیک مدار که تمام مشخصات رو نوشتم!!!?????:متفکر:

mehdi_RM
دوشنبه 24 اردیبهشت 1386, 09:41 صبح
اندازه اون مقاومت چند هستش؟
من تو اون عکس درایور موتور ندیدم!!!!!!!!

DAMAVAND
دوشنبه 24 اردیبهشت 1386, 09:50 صبح
اندازه اون مقاومت چند هستش؟
من تو اون عکس درایور موتور ندیدم!!!!!!!!
///////////////////////////////
اگه دقت کنی یکی 100k
و دیگری 1m میباشد.!!!

mehdi_RM
دوشنبه 24 اردیبهشت 1386, 17:45 عصر
به جای این مدار نمیشه از آی سی بافر 74244 استفاده کنم و مقاومت؟!!!

از روش زیر هم میشه این کارو کرد؟؟؟؟


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

DAMAVAND
دوشنبه 24 اردیبهشت 1386, 19:39 عصر
چرا ولی فکر کنم موتورت خیلی ضعیف بگرده.
امتحان کن!

mehdi_RM
دوشنبه 24 اردیبهشت 1386, 21:41 عصر
از روش زیر هم میشه این کارو کرد؟؟؟؟


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

DAMAVAND
سه شنبه 25 اردیبهشت 1386, 11:05 صبح
از روش زیر هم میشه این کارو کرد؟؟؟؟


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

mehdi_RM
دوشنبه 31 اردیبهشت 1386, 17:02 عصر
من این برنامه رو برای روشن خاموش کردن سه تا led به پورت موازی نوشتم
و led ها رو به آی سی 74244 وصل کردم
ولی led خاموش روشن نمی شن
و تا آخر روشن می مونند از مقاومت هم استفاده نکردم ایراد کارم از کجاست؟





; multi-segment executable file template.

data segment
; add your data here!
pkey db "press any key...$"
ends

stack segment
dw 128 dup(0)
ends

code segment
main proc far
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax

; add your code here
mov cx,20
mov dx,00
mov ah,01H
int 17H

again:
mov dx,378H
mov al,00000000B
out dx,al
call delay
;
mov al,10000000B
out dx,al
call delay
;
mov al,01000000B
out dx,al
call delay
;
;
mov al,00100000B
out dx,al
call delay
;
;
mov al,11100000B
out dx,al
call delay
;
loop again

lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
main endp


;
delay proc near
push cx
mov bx,000fH
waite1:
mov cx,0fH
waite:loop waite
dec bx
jnz waite1
pop cx
ret
delay endp




ends

end main ; set entry point and stop the assembler.

xman_1365_x
پنج شنبه 04 شهریور 1389, 21:00 عصر
من این برنامه رو برای روشن خاموش کردن سه تا led به پورت موازی نوشتم
و led ها رو به آی سی 74244 وصل کردم
ولی led خاموش روشن نمی شن
و تا آخر روشن می مونند از مقاومت هم استفاده نکردم ایراد کارم از کجاست؟





; multi-segment executable file template.

data segment
; add your data here!
pkey db "press any key...$"
ends

stack segment
dw 128 dup(0)
ends

code segment
main proc far
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax

; add your code here
mov cx,20
mov dx,00
mov ah,01H
int 17H

again:
mov dx,378H
mov al,00000000B
out dx,al
call delay
;
mov al,10000000B
out dx,al
call delay
;
mov al,01000000B
out dx,al
call delay
;
;
mov al,00100000B
out dx,al
call delay
;
;
mov al,11100000B
out dx,al
call delay
;
loop again

lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
main endp


;
delay proc near
push cx
mov bx,000fH
waite1:
mov cx,0fH
waite:loop waite
dec bx
jnz waite1
pop cx
ret
delay endp




ends

end main ; set entry point and stop the assembler.





=======================================
سلام به همگي
اگرچه مدت زيادي از اين پست گذشته يكمي بيشتر از يكم
اما شايد براي آيندگان سوال باشه مي نويسم:لبخندساده:
من برد مدارو نمي دونم اشتباه انجام دادين يا نه چون نديدم
اما كدي كه نوشتين اشتباه داره تابع تاخيرتون كاملا اشتباه هست
اشتباهشو خودت دقت كني مي فهمي اما چون مهم نيست نمي گم چون درستش كنين بازم عملي نيست
چون شما مي دوني كه سي پي يو هاي قديمي حتي 8086 ميليون ها دستور در ثانيه و امروزي قادر به انجام ميلياردها دستور در يك ثانيه مي باشد پس چطور انتظار داري در اين تابع تاخيري به وجود بياد كه براي شما ملموس باشه؟ بجاي كم كردن از ثبات
شما زمان فعلي سيستم رو بخوان و زمان اجراي دلخواه مثلا 6 ثانيه بعد را بده
و راحت مقايسه كنيد و برگردين به تابع اصلي
اينطوري تاخيرو بساز
البته برنامه شما خوب نيست مي شد بهتر نوشت
=========================================

a1053r
دوشنبه 22 شهریور 1389, 14:25 عصر
سلام دوست عزیز در باره راه اندازی موتورهای DC از دریوار موتور L298N استفاده کن که دارای مزایای زیادی کافی تو گوگل سرچ کنی که به راحتی می تونی موتورت رو راست گرد یا چپ گرد و دور تند و کند و خیلی موارد دیگه تغییر بدی.