امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
سوال درباره step motor
نویسنده پیام
دراکولا آفلاین
تازه وارد

ارسال‌ها: 15
موضوع‌ها: 8
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 4
( 9 تشکر در 3 ارسال )
ارسال: #1
سوال درباره step motor
من یک step motor دارم که 4*4 و step 1.8 پنج سیمه هست با ترانزیستور

c945 راه اندازیش کردم و وصلش کردم به یه mega32 برنامه به این صورته که

شما درجه رو میدی و موتور همون مقدار میچرخه. مشکل اینجاست که مثلا

360 درجه رو که میزنم حدود 10 یا 15 درجه بیشتر میچرخه .

حالا میخواستم بدونم اگه مشکل از برنامه نباشه (که نیست) از جی میتونه باشه

ضمنا موتور موقع چرخش نوسان داره

من از حالتی استفاده میکنم که در هر لحظه از زمان فقط یکی از پایه ها 1

هست و بقیه صفرن . روش کار هم اینطوریه که یه متغیر بایتی در نظر میگیرم

و اونو مقدار اولیه میدم و بعد شیفتش میدم به چپ یا راست . ضمنا تاخیر

بین هر چرخش اول 50 میلی ثانیه بود که باز هم همین مشکل رو داشت
اینم برنامه خودتون ببینید :


کد php:
$regfile "m32def.dat"
$crystal 8000000
Config Lcdpin 
Pin Db4 Pb.0 Db5 Pb.1 Db6 Pb.2 Db7 _
 Pb.3 
Pb.5 Rs Pb.4
Config Porta 
Output
Dim I 
As Byte As Byte As Byte
Cls
Dim B 
As Word
Dim C 
As Word
Dim D 
As Word
Dim K 
As Byte
Dim X 
As Byte
Config Kbd 
Portd Debounce 100 Delay 70
Cls

Main0
:
Do
Getkbd()
Loop Until K 16
Do
Getkbd()
Loop Until K <> 16
If 15 Then
Goto Cal_isr
End 
If
If 
14 Then
1
Locate 2 
Lcd "Rotate right"
Goto Main0
End 
If
If 
13 Then
2
Locate 2 
Lcd "Rotate left"
Goto Main0
End 
If
10
K
Locate 1 
Lcd B
Goto Main0


Cal_isr
:
7.2
B Mod 7.2

'---------------------------------- baghi mande---------------------
Select Case D
Case 0
Goto Main

Case 1
If X = 1 Then
E = 128
Rotate E , Left
Porta = E
Waitms 100
Goto Main
End If
If X = 2 Then
E = 16
Rotate E , Right
Porta = E
Waitms 100
Goto Main
End If

Case 2
If X = 1 Then
E = 128
Rotate E , Left
Porta = E
Waitms 100
Rotate E , Left
Porta = E
Waitms 100
Goto Main
End If
If X = 2 Then
E = 16
Rotate E , Right
Porta = E
Waitms 100
Rotate E , Right
Porta = E
Waitms 100
Goto Main
End If

Case 3
If X = 1 Then
E = 128
Rotate E , Left
Porta = E
Waitms 100
Rotate E , Left
Porta = E
Waitms 100
Rotate E , Left
Porta = E
Waitms 100
End If
If X = 2 Then
E = 16
Rotate E , Right
Porta = E
Waitms 100
Rotate E , Right
Porta = E
Waitms 100
Rotate E , Right
Porta = E
Waitms 100
Goto Main
End If


Case 4
If X = 1 Then
E = 128
Rotate E , Left
Porta = E
Waitms 100
Rotate E , Left
Porta = E
Waitms 100
Rotate E , Left
Porta = E
Waitms 100
Rotate E , Left
Porta = E
Waitms 100
End If
If X = 2 Then
E = 16
Rotate E , Right
Porta = E
Waitms 100
Rotate E , Right
Porta = E
Waitms 100
Rotate E , Right
Porta = E
Waitms 100
Rotate E , Right
Porta = E
Waitms 100
Goto Main
End If

Case 5
If X = 1 Then
Porta = 1
Waitms 100
Porta = 2
Waitms 100
Porta = 4
Waitms 100
Porta = 8
Waitms 100
Porta = 1
Waitms 100
End If
If X = 2 Then
Porta = 1
Waitms 100
Porta = 8
Waitms 100
Porta = 4
Waitms 100
Porta = 2
Waitms 100
Porta = 1
Waitms 100
Goto Main
End If

Case 6
If X = 1 Then
Porta = 1
Waitms 100
Porta = 2
Waitms 100
Porta = 4
Waitms 100
Porta = 8
Waitms 100
Porta = 1
Waitms 100
Porta = 2
Waitms 100
End If
If X = 2 Then
Porta = 1
Waitms 1000
Porta = 8
Waitms 100
Porta = 4
Waitms 100
Porta = 2
Waitms 100
Porta = 1
Waitms 100
Porta = 8
Waitms 100
Goto Main
End If

Case 7
If X = 1 Then
Porta = 1
Waitms 100
Porta = 2
Waitms 100
Porta = 4
Waitms 100
Porta = 8
Waitms 100
Porta = 1
Waitms 100
Porta = 2
Waitms 100
Porta = 4
Waitms 100
End If
If X = 2 Then
Porta = 1
Waitms 100
Porta = 8
Waitms 100
Porta = 4
Waitms 100
Porta = 2
Waitms 100
Porta = 1
Waitms 100
Porta = 8
Waitms 100
Porta = 4
Waitms 100
Goto Main
End If
End Select
'
------------------------------ adad asli----------------------
Main:
Select Case X
Case 1
For 1 To C
128
For 1 To 4
Rotate E 
Left
Porta 
E
Waitms 100
Next I
Next A
Cls 
Locate 1 Lcd "stop_stop"
Do : Loop

Case 2
For 1 To C
16
For 1 To 4
Rotate E 
Right
Porta 
E
Waitms 100
Next I
Next A
Cls 
Locate 1 Lcd "stop_stop"
Do : Loop
End Select 
(آخرین ویرایش در این ارسال: ۱۲-آبان-۱۳۹۲, ۱۶:۱۲:۲۸، توسط babyy.)
۱۲-آبان-۱۳۹۲, ۱۶:۱۱:۰۶
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [فوری] کمک درباره نویز گرفتن میکرو avr عابد مقدسیان 8 3,322 ۱۱-بهمن-۱۳۹۷, ۲۲:۴۱:۰۶
آخرین ارسال: 1نفر
Question [سوال] یه سوال درباره ماژول esp8266 Index1 4 3,150 ۰۴-اردیبهشت-۱۳۹۷, ۲۳:۰۹:۲۶
آخرین ارسال: babyy
  درخواست راهنمایی درباره دماسنج و رطوبت سنج fedagh 2 3,195 ۰۳-دى-۱۳۹۵, ۰۱:۲۵:۰۷
آخرین ارسال: omid_phoenix
  سوال درباره نحوه تولید پالس مربعی sinohe 37 41,329 ۱۷-اسفند-۱۳۹۴, ۱۸:۳۶:۲۴
آخرین ارسال: sharin
  سوال درباره پروگرمر جمشاد alien 1 2,412 ۰۷-دى-۱۳۹۴, ۱۳:۰۰:۲۸
آخرین ارسال: sharin
Wink یک کتاب خیلی باحال و مفید درباره میکروکنترلرها lktra 0 2,320 ۰۵-دى-۱۳۹۴, ۰۱:۴۷:۳۴
آخرین ارسال: lktra
  سوال درباره ی avr با سی++ mahdieh_sh 2 2,693 ۱۸-مهر-۱۳۹۴, ۱۸:۲۳:۰۴
آخرین ارسال: vigraz
  کمک درباره تشریح رابط i2c .::saman::. 10 5,590 ۲۲-مرداد-۱۳۹۴, ۱۷:۳۸:۵۰
آخرین ارسال: sharin
  کمک درباره تبدیل برق 220 به ولت به 0 تا 5 ولت با روش تقسیم مقاومتی .::saman::. 8 5,987 ۰۵-مرداد-۱۳۹۴, ۰۷:۳۲:۲۲
آخرین ارسال: sharin
  راهنمایی درباره چوک آبی rezax22 1 1,940 ۲۷-دى-۱۳۹۳, ۰۰:۲۴:۲۰
آخرین ارسال: robojalal

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS