Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 4
1

Управление шаговым двигателем через пульт

02.06.2020, 16:42. Просмотров 218. Ответов 4

для проекта мне нужно сделать управление шагового двигателя с помощью пульта, я сделал всё по схеме, но скетч для управления шаговым двигателем не работает, я вроде всё правильно писал, но при загрузке скетча на плату, драйвер и шаговик не горят, все компоненты работающие!
Управление шаговым двигателем через пульт


Управление шаговым двигателем через пульт


вот код скетча
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#include <IRremote.h>
int RECV_PIN = 5;//The definition of the infrared receiver pin 5
int Pin0 = 8;//definition digital 8 pins as pin to control the IN1 (ULN24L01)
int Pin1 = 9;//definition digital 9 pins as pin to control the IN2 (ULN24L01)
int Pin2 = 10;//definition digital 10 pins as pin to control the IN3 (ULN24L01)
int Pin3 = 11;//definition digital 11 pins as pin to control the IN4 (ULN24L01)
 
int _step = 512; 
int _speed = 1; 
IRrecv irrecv(RECV_PIN);
decode_results results;
int dir;
void setup()
{
   pinMode(Pin0, OUTPUT);//Set digital 8 port mode, the OUTPUT for the output
   pinMode(Pin1, OUTPUT);//Set digital 9 port mode, the OUTPUT for the output
   pinMode(Pin2, OUTPUT);//Set digital 10 port mode, the OUTPUT for the output
   pinMode(Pin3, OUTPUT);//Set digital 11 port mode, the OUTPUT for the output
   irrecv.enableIRIn(); //Initialization infrared receiver
} 
 
void loop() 
{
  if (irrecv.decode(&results)) { 
    switch(results.value){
    case 0xF076C13B/*-*/:
                        dir = 1;
                        break;
    case 0xA3C8EDDB/*+*/:
                        dir = 0;
                        break;
    case 0xC101E57B/*0*/: 
                        Speed(15); //Stepper motor speed = 1 slow  (note:speed from 1 to 15)
                        Step(0);   //Stepper motor stop   
                        break;
    case 0x9716BE3F/*1*/:
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                          Step(512);//Stepper motor forward 512 steps ---- 360 angle  
                        }else{
                          Step(-512);//Stepper motor backward 512 steps ---- 360 angle
                        }                       
                        break;
    case 0x3D9AE3F7/*2*/: 
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                          Step(1024);//Stepper motor forward 1024 steps ---- 2*360 angle 
                        }else{
                          Step(-1024);//Stepper motor backward 1024 steps ---- 2*360 angle
                        }
                        break;
    case 0x6182021B/*3*/:
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                          Step(1536);//Stepper motor forward 1536 steps ---- 3*360 angle
                        }else{
                          Step(-1536);//Stepper motor backward 1536 steps ---- 3*360 angle 
                        }
                        break;
    case 0x8C22657B/*4*/:  
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                          Step(2048);//Stepper motor forward 2048 steps ---- 4*360 angle
                        }else{
                          Step(-2048);//Stepper motor backward 2048 steps ---- 4*360 angle
                        }
                        break;
    case 0x488F3CBB/*5*/: 
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                          Step(2560);//Stepper motor forward 2560 steps ---- 5*360 angle
                        }else{
                          Step(-2560);//Stepper motor backward 2560 steps ---- 5*360 angle
                        }
                        break;
    case 0x449E79F/*6*/: 
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                          Step(3072);//Stepper motor forward 3072 steps ---- 6*360 angle 
                        }else{
                          Step(-3072);//Stepper motor backward 3072 steps ---- 6*360 angle
                        }
                        break;
    case 0x32C6FDF7/*7*/:  
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){                      
                          Step(3584);//Stepper motor forward 3584 steps ---- 7*360 angle 
                        }else{
                          Step(-3584);//Stepper motor backward 3584 steps ---- 7*360 angle 
                        }
                        break;
    case 0x1BC0157B/*8*/: 
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir){
                        Step(4096);//Stepper motor forward 4096 steps ---- 8*360 angle
                        }else{
                        Step(-4096);//Stepper motor backward 4096 steps ---- 8*360 angle
                        }
                        break;
    case 0x3EC3FC1B/*9*/: 
                        Speed(15);//Stepper motor speed = 15 fast (note:speed from 1 to 15)
                        if(dir==0){
                        Step(4608);//Stepper motor forward 4608 steps ---- 9*360 angle  
                        }else{
                        Step(-4608);//Stepper motor backward 4608 steps ---- 9*360 angle 
                        }
                        break;
    default :
             Step(0);   //Stepper motor stop
             break;
    }        
    irrecv.resume(); // Receiving the next value
  }  
}
void Speed(int stepperspeed)//set Stepper speed 
{
    _speed = 15 - stepperspeed;
    if( _speed<1){
     _speed = 1;
    }
    if( _speed>15){
     _speed = 15;
    }
}
void Step(int _step)//Stepper motor rotation
{
  if(_step>=0){  // Stepper motor forward
    for(int i=0;i<_step;i++){   
      setStep(1, 0, 0, 1);
      delay(_speed); 
      setStep(1, 0, 0, 0);
      delay(_speed);
      setStep(1, 1, 0, 0);
      delay(_speed);
      setStep(0, 1, 0, 0);
      delay(_speed);
      setStep(0, 1, 1, 0);
      delay(_speed);
      setStep(0, 0, 1, 0);
      delay(_speed);
      setStep(0, 0, 1, 1);
      delay(_speed); 
      setStep(0, 0, 0, 1);
      delay(_speed);
    }
  }else{ // Stepper motor backward
     for(int i=_step;i<0;i++){  
      setStep(0, 0, 0, 1);
      delay(_speed);
      setStep(0, 0, 1, 1);
      delay(_speed);
      setStep(0, 0, 1, 0);
      delay(_speed);
      setStep(0, 1, 1, 0);
      delay(_speed);
      setStep(0, 1, 0, 0);
      delay(_speed);
      setStep(1, 1, 0, 0);
      delay(_speed);
      setStep(1, 0, 0, 0);
      delay(_speed);
      setStep(1, 0, 0, 1);
      delay(_speed);
    }
   }
}
void setStep(int a, int b, int c, int d)  
{  
    digitalWrite(Pin0, a);     
    digitalWrite(Pin1, b);     
    digitalWrite(Pin2, c);     
    digitalWrite(Pin3, d);     
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2020, 16:42
Ответы с готовыми решениями:

Управление шаговым двигателем
Всем привет! Прошу оказать посильные консультации. Подскажите, каким образом с помощью Ардуино, я...

Управление шаговым двигателем потенциометром
Плохо разбираюсь в электронике, прошу помощи со схемой подключения и скетчем. Суть проекта:...

Управление шаговым двигателем с драйвером а4988
Собрал схему на breadborde для управления шаговым двигателем на основе драйвера a4988, где то...

Управления шаговым двигателем 28BYJ-48 и драйвер ULN2003APG и кнопки остановки
Приветствую всех. Как решить задачу управления шаговым двигателем. Есть шаговый двигатель...

4
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 4
02.06.2020, 16:43  [ТС] 2
я проверил работает ли мой ИК приемник, работает и при нажатий на кнопки пульта выходят не те надписи что в коде case 0x3D9AE3F7 , а другие но это я тоже проверил вставил вместо них свой код , но все равно не работает
0
46 / 40 / 14
Регистрация: 10.11.2019
Сообщений: 53
02.06.2020, 20:07 3
А если попробовать запустить шаговый двигатель просто по включению платы,
без использования IR, т е максимально упростить программу ?
0
339 / 327 / 68
Регистрация: 18.03.2015
Сообщений: 1,153
03.06.2020, 09:07 4
длинная макетная плата не целая это две половинки. шина питания разорвана.
0
Модератор
8199 / 6070 / 810
Регистрация: 14.02.2011
Сообщений: 21,055
03.06.2020, 13:13 5
Цитата Сообщение от Сергей 190 Посмотреть сообщение
длинная макетная плата не целая это две половинки. шина питания разорвана.
не всегда
передо мной две платы у одной шина цельная у другой разорванная
у которой цельная синяя и красная полоса сплошняком у другой разорваны
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2020, 13:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Arduino. Управление двигателем от датчика давления
Привет . В просторах интернета нашел скетч - управление насосом от датчика давления на 1 реле...

Управление шаговым двигателем
Привет. В общем нужно управлять шаговым двигателем. Задавать скорость и направление. Использую...

Управление шаговым двигателем
Во-первых, спасибо за такой полезный и интересный ресурс. А теперь к проблеме. Имеется в наличии...

Управление шаговым двигателем
Доброго времени суток! Объясню ситуацию: у меня есть шаговый двигатель от 3.5 дюймового флопика, а...

Управление шаговым двигателем
Здравствуйте. Дело в следующем. Имеется МК Atmega 128, PORTA PORTC PORTF которого управляют тремя...

Управление шаговым двигателем на Attiny2313
нужен программный код на C и С++ Короче имеются две кнопки(влево и вправо).При нажатии на них...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.