Опишу подробно, может кому-то пригодится.
Использовал 2 двигателя - SPM-20 (шаговый двигатель для позиционирования головки в дисководах 5'25 Mitsumi) и EM-483 (от принтера Epson Stylus C86).
Сам я паять толком не умею, поэтому по совету Эда подцепил двигатель заместо колёс, каждая обмотка - соотвесвенно вместо левого и правого двигателя.
SPM-20 рассчитан на 12 вольт, поэтому вращался довольно здраво. EP-483 рассчитан на 30 вольт, там уже похуже, но всё равно вертится.
Код программы :
- Код: Выделить всё
'$prog &HFF , &HBD , &HC9 , &H00 ' generated. Take care that the chip supports all fuse bytes.
$regfile = "m32def.dat" ' файл спецификации Меги32
$crystal = 7372800 ' указываем на какой частоте будем работать
$baud = 115200 ' указываем скорость на которой будет работать уарт
$include "Config ports.bas"
$include "Sound.bas"
Dim Speed As Byte : Speed = 255
Dim Address_rc5 As Byte , Command_rc5 As Byte
Dim Adc_temp As Word , Akb As Single
Dim Tm1 As Word : Tm1 = 10
Waitms 200
Print "Start MiniBot v2.0"
Do
If Knopka = 0 Then
Gosub Dlb1 : Waitms Tm1
Gosub Drb1 : Waitms Tm1
Gosub Dlf1 : Waitms Tm1
Gosub Drf1 : Waitms Tm1
Else
Gosub Drf1 : Waitms Tm1
Gosub Dlf1 : Waitms Tm1
Gosub Drb1 : Waitms Tm1
Gosub Dlb1 : Waitms Tm1
End If
Loop
$include "Gosubs.bas"
Dlf1:
Gosub Стоп : Waitms Tm1
Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = 0:
Return
Dlb1:
Gosub Стоп : Waitms Tm1
Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = 0:
Return
Drf1:
Gosub Стоп : Waitms Tm1
Drl = 0 : Drr = 1 : Pwm1b = 0 : Pwm1a = Speed:
Return
Drb1:
Gosub Стоп : Waitms Tm1
Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = Speed:
Return
Задержку меньше 10 мсек ставить не стоит, из-за того что напряжение низкое. Если будет меньше - двигатель будет пропускать шаги.
При нажатии на кнопку крутится в другую сторону.
Видео моторчика с дисковода:
Видео моторчика с принтера: