Motor stepper mengubah pulsa-pulsa listrik yang diberikan menjadi gerakan-gerakan diskrit rotor yang disebut langkah (steps). Nilai rating dari suatu motor stepper diberikan dalam langkah per putaran (steps per revolution). Motor stepper umumnya mempunyai kecepatan dan [torsi] yang rendah.
Motor stepper bekerja berdasarkan pulsa-pulsa yang diberikan pada lilitan fasanya dalam urut-urutan yang tepat. Selain itu, pulsa-pulsa itu harus juga menyediakan arus yang cukup besar pada lilitan fasa tersebut. Karena itu untuk pengoperasian motor stepper pertama-tama harus mendesain suatu sequencer logic untuk menentukan urutan pencatuan lilitan fasa motor dan kemudian menggunkan suatu penggerak (driver) untuk menyediakan arus yang dibutuhkan oleh lilitan fasa.
Elemen-elemen berikut menentukan karakteristik suatu motor stepper:
- Tegangan, motor stepper biasanya mempunyai tegangan nominal. Tegangan yang diberikan kadang-kadang melebihi tegangan nominal untuk mendapatkan torsi yang dibutuhkan, tetapi dapat menyebabkan panas berlebih dan mempersingkat usia motor.
- Hambatan, karakteristik lainnya adalah hambatan-per-lilitan. Hambatan ini akan menentukan arus yang ditarik oleh motor, dan juga mempengaruhi kurva torsi dan kecepatan kerja maksimum motor.
- Derajat per langkah (step angle), faktor ini menentukan berapa derajat poros akan berputar untuk setiap langkah penuh (full step). Operasi setengah langkah (half step) akan melipat-gandakan jumlah langkah-per-revolusi, dan mengurangi derajat-per-langkahnya. Derajat-per-langkah sering disebut sebagai resolusi motor.
Gambar Rangkaian dengan Proteus ISIS |
Pada tutorial ini akan membahas tutorial stepper motor dengan menggunakan Bascom AVR dan Proteus ISIS.
Berikut code bas-nya :
$regfile = "m16def.dat"
$crystal = 1000000
Config Kbd = Portb
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , Rs = Portc.0 , E = Portc.1
Config Portd = Output
Config Porta = Input
Dim A As Byte , B As Byte , Key As Byte , C As Byte , D As Byte , E As Byte
Cls
Cursor Off
B = 0
D = 1
Q:
Locate 1 , 1
Lcd "Direction:"
Locate 2 , 1
Lcd "Speed:"
Do
'************Read Keyboard
A = Getkbd()
If A > 15 Then
Goto Q
Else
Key = Lookup(a , Dta)
If Key <= 9 Then
B = B * 10
B = B + Key
'*************Direction
If D = 0 Then Lcd B
Waitms 270
Elseif Key = 10 Then
Locate 1 , 11
Lcd "Left"
C = 1
D = 0
B = 0
Elseif Key = 11 Then
Locate 1 , 11
Lcd "Right"
C = 2
D = 0
B = 0
'****************reset
Elseif Key = 13 Then
Cls
D = 1
B = 0
Portd.0 = 0
Portd.1 = 0
Waitms 50
Goto Q
'****************Enter key
Elseif Key = 14 Then
If D = 0 Then
Select Case C
Case 1 : Gosub R
Case 2 : Gosub T
End Select
End If
End If
End If
Wait 1
Loop
End
Dta:
Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15
R:
Do
Portd = &B00000001 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001001 : Waitms B
If Pina.0 = 1 Then
Locate 2 , 1
Lcd "Speed:"
B = 0
Lcd B ; " "
Return
End If
Loop
T:
Do
Portd = &B00001001 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000001 : Waitms B
If Pina.0 = 1 Then
Locate 2 , 1
Lcd "Speed:"
B = 0
Lcd B ; " "
Return
End If
Loop
$crystal = 1000000
Config Kbd = Portb
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , Rs = Portc.0 , E = Portc.1
Config Portd = Output
Config Porta = Input
Dim A As Byte , B As Byte , Key As Byte , C As Byte , D As Byte , E As Byte
Cls
Cursor Off
B = 0
D = 1
Q:
Locate 1 , 1
Lcd "Direction:"
Locate 2 , 1
Lcd "Speed:"
Do
'************Read Keyboard
A = Getkbd()
If A > 15 Then
Goto Q
Else
Key = Lookup(a , Dta)
If Key <= 9 Then
B = B * 10
B = B + Key
'*************Direction
If D = 0 Then Lcd B
Waitms 270
Elseif Key = 10 Then
Locate 1 , 11
Lcd "Left"
C = 1
D = 0
B = 0
Elseif Key = 11 Then
Locate 1 , 11
Lcd "Right"
C = 2
D = 0
B = 0
'****************reset
Elseif Key = 13 Then
Cls
D = 1
B = 0
Portd.0 = 0
Portd.1 = 0
Waitms 50
Goto Q
'****************Enter key
Elseif Key = 14 Then
If D = 0 Then
Select Case C
Case 1 : Gosub R
Case 2 : Gosub T
End Select
End If
End If
End If
Wait 1
Loop
End
Dta:
Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15
R:
Do
Portd = &B00000001 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001001 : Waitms B
If Pina.0 = 1 Then
Locate 2 , 1
Lcd "Speed:"
B = 0
Lcd B ; " "
Return
End If
Loop
T:
Do
Portd = &B00001001 : Waitms B
Portd = &B00001000 : Waitms B
Portd = &B00001100 : Waitms B
Portd = &B00000100 : Waitms B
Portd = &B00000110 : Waitms B
Portd = &B00000010 : Waitms B
Portd = &B00000011 : Waitms B
Portd = &B00000001 : Waitms B
If Pina.0 = 1 Then
Locate 2 , 1
Lcd "Speed:"
B = 0
Lcd B ; " "
Return
End If
Loop
Dan ini video tutorialnya :
BASCOM TEAM :
- Yoga Mustofa (41408120004)
- Andri Kamiludin (41408120030)
- Odih Harjum (41408120001)
- Andi Nurcahyadi (41408120036)
- Agus Dwiyanto (41408120003)
- Ronald Jackson Manuhutu (41408120057)
- M. Ady Nurs (41408120014)
- Jeffry Klau
- Agustinus Sigit