0@0
LibraryRoot
LibraryGroup-Дисплеи
0@0
1
0@-660
162
380
0@0
root
2
9cf32bc4-1faf-428a-af97-c4065c4c56c9
LibraryGroup-ШД
LibraryGroup-ESP
0@0
0
6
3
160@200
180@200 corner: 218.0d@220
160@200 corner: 238.0d@220
184@213.5d
5
390@190
410@190 corner: 450@230
390@190 corner: 470@230
416.5d@204.5d
390@210 corner: 410@230
7
580@290
600@290 corner: 658.0d@330
580@290 corner: 678.0d@330
604@314.5d
4000
580@300
600@300
554.0d@303.5d
580@290 corner: 600@310
580@310 corner: 600@330
580@300
580@320
9.0d
50.0d
NumSteps
En
600@320
15
580@250
600@250 corner: 655.0d@290
580@250 corner: 675.0d@290
604@274.5d
2000
580@260
600@260
554.0d@263.5d
580@250 corner: 600@270
580@270 corner: 600@290
580@280
47.0d
Accel01_
4
En
600@280
16
580@210
600@210 corner: 667.0d@250
580@210 corner: 687.0d@250
604@234.5d
580@220
600@220
554.0d@223.5d
580@210 corner: 600@230
580@230 corner: 600@250
580@220
580@240
59.0d
MaxSpeed_
600@240
8
580@330
600@330 corner: 632.0d@370
580@330 corner: 652.0d@370
604@353.5d
580@340
600@340
560.0d@343.5d
580@330 corner: 600@350
580@350 corner: 600@370
580@360
7.0d
24.0d
Start
600@360
470@220 corner: 470@360
Q
450@220
470@220
450@210 corner: 470@230
390@220
I
410@220
240@450
260@450 corner: 297.0d@490
240@450 corner: 317.0d@490
267.5d@464.5d
240@470 corner: 260@490
12
11
580@390
600@390 corner: 667.0d@430
580@390 corner: 687.0d@430
604@414.5d
580@400
600@400
572.0d@403.5d
580@390 corner: 600@410
580@410 corner: 600@430
580@420
600@420
580@430
600@430 corner: 655.0d@470
580@430 corner: 675.0d@470
604@454.5d
580@440
600@440
572.0d@443.5d
580@430 corner: 600@450
580@450 corner: 600@470
580@460
600@460
10
17
580@470
600@470 corner: 658.0d@510
580@470 corner: 678.0d@510
604@494.5d
580@480
600@480
572.0d@483.5d
580@470 corner: 600@490
580@490 corner: 600@510
580@500
600@500
9
18
580@510
600@510 corner: 632.0d@550
580@510 corner: 652.0d@550
604@533.5d
580@520
600@520
560.0d@523.5d
580@510 corner: 600@530
580@530 corner: 600@550
580@540
600@540
317.0d@420 corner: 317.0d@540
out
17.0d
297.0d@480
317.0d@480
спад
in
18505105-213e-4b3d-a37e-1c8a3bdd38f0
bfe4f840-4a0c-45b9-acd0-28b088512d3a
e7df6f0f-1d14-41cb-b9a9-c8c0fb9f0b33
5e12d1f8-9962-46ec-8410-f530947d7b7a
4be89791-5568-430d-b515-a1ff6857e93a
спад
if(in=1)
{
temp=1;
out=0;
}
if((in=0)&&(temp=1))
{
out=1;
temp=0;
}
79
in
=0;
boolean
out
=0;
boolean
temp
=0;
boolean
297.0d@470 corner: 317.0d@490
240@480
Ftrig
3c677a23-4f2c-4c67-bfc3-0bb98cf1e3ee
Ftrig
out=0;
if(!in && temp) {out=1;}
temp=in;
41
temp
=0;
boolean
37.0d
260@480
238.0d@210 corner: 238.0d@480
0.0d
224.0d@210
238.0d@210
30.0d
Ехать
sda
D2
digital
26
670@980
690@980 corner: 719.0d@1000
670@980 corner: 739.0d@1000
694@993.5d
28
470@800
490@800 corner: 646.0d@1020
470@800 corner: 666.0d@1020
530.0d@814.5d
Continuous01
470@830
490@830
ШагДвиг_mod
FindEndSwitch
3dd2a884-0b23-4cb1-a919-c8fcdd913331
При true постоянно шагаем для поиска концевика по CCW
dd7e7512-0e44-4b12-a3f1-2bfb7f9fd8e0
SpeedEndSwitch
0da09e76-9abd-4209-8994-3906b4e99e09
Скорость ШД для поиска концевика
e8002159-6d09-4b1f-97de-6f287b7a5e9f
ШагДвиг Установка
En
22502748-2126-49f6-a695-bae1e55d0464
3d062544-2c05-4514-9cbe-cbdff30ee30f
MaxSpeed
b4f1be77-2577-4f2d-8375-3e1ea4216d92
Максимальная скорость вращения ротора двигателя (шагов/секунду)
d146d221-19f1-4a4d-b6ca-5801a5a3af91
Acceleration
12308427-b97e-437d-bd1c-aee97865b6ec
Ускорение вращения (шагов/секунду^2)
e0c65a93-e82f-4d23-a7a7-679313d04991
c4e4c49d-0b43-4310-82ce-026db0767636
Установка параметров шагового двигателя
Step
Пин управления шагами контроллера
66f1483d-3159-450f-8e82-e654741e6c57
8bc42495-0960-4300-adb7-22efc1573ceb
Dir
Пин направления вращения контроллера
c31d485e-f907-4651-bd19-51f5b0a023b8
72abb887-5e2a-4587-aebd-f3908812b2a9
If (En) {
Stepper1.setMaxSpeed(MaxSpeed);
Stepper1.setAcceleration(Acceleration);
}
83
1 - режим "external driver" (A4988)
Stepper1
(1, Step, Dir);
AccelStepper
EnSteps
Speed
Acceleration
ШагДвиг
En
Скорость
Ускорение
Шагов
4b139470-65a1-49a3-8a95-6418d90824c2
Количество шагов, которые должен сделать двигатель
011babd7-655e-464f-b4be-4f06bf7e3d31
Готов
f75858a5-7f06-4bf0-9caa-3515dd3118a4
Двигатель закончил движение
d1e9f08d-ba11-403b-8751-573ef2a3a8cb
198f8292-fe38-4914-8ded-a59a71b45bbe
Управление шаговым двигателем через контроллер А4988
If (En) {
SetStepperMaxSpeed(Скорость);
SetStepperAcceleration(Ускорение);
StepperMove(Шагов);
}
Готов = Stepper.distanceToGo() == 0;
Stepper.run();
148
#include
<AccelStepper.h>
1 - режим "external driver" (A4988)
Stepper
(1, Step, Dir);
AccelStepper
curMaxSpeed
= 0;
int
curAcceleration
= 0;
int
if (curMaxSpeed != MaxSpeed) {
Stepper.setMaxSpeed(MaxSpeed);
curMaxSpeed = MaxSpeed;
}
87
void
SetStepperMaxSpeed
int
MaxSpeed
if (curAcceleration != Acceleration) {
Stepper.setAcceleration(Acceleration);
curAcceleration = Acceleration;
}
111
void
SetStepperAcceleration
int
Acceleration
Stepper.move(Distance);
23
void
StepperMove
int
Distance
Steps
CCW
1749a012-0c84-41fa-bf04-5a19d56a9907
По часовой стрелке
385bd673-ed11-4ff5-b385-63a75de09b57
Ready
Позиция
3e95bd51-7ae3-449f-9b9d-986ce8be7e53
Текущая позиция двигателя
0d87726d-d3cb-406f-b42d-bc70bcf6c19c
0681950a-4e83-4f02-b52f-192689d207f9
If (En) {
SetStepperMaxSpeed(Скорость);
SetStepperAcceleration(Ускорение);
StepperMove(Шагов);
}
Готов = !Stepper.run();
Позиция = Stepper.currentPosition();
157
Position
0eeb9b7f-900c-46d1-bb27-99aec13d1572
if (En) {
SetStepperMaxSpeed(Speed);
SetStepperAcceleration(Acceleration);
StepperMove(Steps*(CCW ? 1 : -1));
}
Ready = !Stepper.run();
Position = Stepper.currentPosition();
173
Stepper.move(Distance);
24
SetZeroPosition
60c5b2c1-55c8-41ea-a856-60fc36f95afe
Установка начальной позиции в 0. Использовать через RTrig
b8593427-7917-4c17-a926-7694d939e155
AbsSteps
25f628bb-19fc-47b3-a5c9-e3b95ca997d8
Если true то шагаем по абосютным координатам от нулевой позиции, иначе идем относительно последенй позиции
98054e13-9c74-4d04-bede-871f2478e134
8e86d344-9473-4f19-8548-4591a220e880
Управление шаговым двигателем через контроллер А4988 mod
Блог ШагДвиг для управления ШД через драйвер типа А4988 и пр.
модификация AlexCrane, 2019
Работает на библиотеке AccelStepper.h
Входы:
FindEndSwitch - При true постоянно шагаем для поиска концевика по CCW, имеет больший приоритет перед EnSteps
SpeedEndSwitch - Скорость ШД для поиска концевика
EnSteps - при true начинаем шагать
Speed - Максимальная скорость шаг/сек
Acceleration - Ускорение шаг/сек2
Steps - Количество шагов для выполнения
CCW - true крутить по часовой, иначе против
SetZeroPosition - Установка начальной позиции в 0. Использовать через RTrig
AbsSteps - Если true то шагаем по абосютным координатам от нулевой позиции, иначе идем относительно последенй позиции
Выходы:
Ready - true двигатель закончил движение
Position - Текущая позиция двигателя
769
if (FindEndSwitch) {Stepper.setSpeed(SpeedEndSwitch*(CCW ? -1 : 1)); Stepper.runSpeed()}
else{
if (EnSteps) {
SetStepperMaxSpeed(Speed);
SetStepperAcceleration(Acceleration);
if (AbsSteps) {StepperMoveA(Steps*(CCW ? -1 : 1));}
else {StepperMove(Steps*(CCW ? -1 : 1));}
}
Ready = !Stepper.run();
Position = Stepper.currentPosition();
if (SetZeroPosition) {Stepper.setCurrentPosition(0);}
}
389
Stepper.move(Distance);
void
StepperMove
long
Distance
Stepper.moveTo(AStep);
22
void
StepperMoveA
long
AStep
470@820 corner: 490@840
SpeedContinuous01
470@850
490@850
470@840 corner: 490@860
SetZeroPosition01
470@870
490@870
470@860 corner: 490@880
20
340@880
360@880 corner: 392.0d@900
340@880 corner: 412.0d@900
364@893.5d
340@890
360@890
340@880 corner: 360@900
392.0d@880 corner: 412.0d@900
412.0d@890
392.0d@890
412.0d@890 corner: 412.0d@890
EnSteps01
470@890
490@890
на переднем фронте начинаем шагать, использовать через RTrig
470@880 corner: 490@900
21
13
340@900
360@900 corner: 427.0d@920
340@900 corner: 447.0d@920
364@914.5d
340@910
360@910
340@900 corner: 360@920
427.0d@900 corner: 447.0d@920
447.0d@910
427.0d@910
447.0d@910 corner: 447.0d@910
MaxSpeed01
470@910
490@910
470@900 corner: 490@920
14
340@920
360@920 corner: 415.0d@940
340@920 corner: 435.0d@940
364@934.5d
340@930
360@930
340@920 corner: 360@940
415.0d@920 corner: 435.0d@940
435.0d@930
415.0d@930
435.0d@930 corner: 435.0d@930
Acceleration01
470@930
490@930
470@920 corner: 490@940
340@940
360@940 corner: 418.0d@960
340@940 corner: 438.0d@960
364@954.5d
340@950
360@950
340@940 corner: 360@960
418.0d@940 corner: 438.0d@960
438.0d@950
418.0d@950
438.0d@950 corner: 438.0d@950
Steps01
470@950
490@950
470@940 corner: 490@960
27
340@960
360@960 corner: 411.0d@980
340@960 corner: 431.0d@980
364@974.5d
340@970
360@970
340@960 corner: 360@980
411.0d@960 corner: 431.0d@980
431.0d@970
43.0d
CCW01_
411.0d@970
431.0d@970 corner: 431.0d@970
CCW01
470@970
490@970
Против часовой стрелки
470@960 corner: 490@980
AbsSteps01
470@990
490@990
470@980 corner: 490@1000
StopAccel01
470@1010
490@1010
ШагДвиг_mod_INT_v2
Continuous
SpeedContinuous
MaxSpeed
StopAccel
feb8597c-6c86-4cf8-a3f6-33b79fea3e86
Остановка с использованием текущей скорости и ускорения
e63ef32a-1278-4528-be56-9a9bd875735c
a3ce2693-d1c9-40a7-a191-f8250fdb2d78
ШагДвиг_mod (step/dir) INT
Блог ШагДвиг для управления ШД через драйвер типа А4988 и пр.
модификация AlexCrane, 2019
Работает на библиотеке AccelStepper.h и TimerOne.h
http://www.airspayce.com/mikem/arduino/AccelStepper/index.html
Входы:
Continuous - При true постоянно шагаем, имеет больший приоритет перед EnSteps
SpeedContinuous - Скорость ШД для "постоянно шагаем"
Эти два входа можно использовать для поиска концевика и просто чтобы покрутить двигателем, но без ускорений
SetZeroPosition - Установка начальной позиции в 0. Использовать через RTrig
EnSteps - при переднем фронте начинаем шагать. Использовать через RTrig
Speed - Максимальная скорость шаг/сек
Acceleration - Ускорение шаг/сек2
Steps - Количество шагов для выполнения (hint: можно и отрицательные)
CCW - true крутить против часовой, иначе по
AbsSteps - Если true то шагаем по абосютным координатам от нулевой позиции, иначе идем относительно последеней позиции
StopAccel - Остановка с использованием текущей скорости и ускорения
Выходы:
Ready - true двигатель закончил движение
Position - Текущая позиция двигателя
1063
period
100
50
Период прерывания, мкс, Менять Оторожно
41695f6c-ad2c-4843-8dc1-d29c1575da1b
761f7340-3f25-42dd-a366-852384a4cbf5
if (SetZeroPosition) {Stepper.setCurrentPosition(0);}
if (Continuous) {
if (curMaxSpeed != MaxSpeed) {
Stepper.setMaxSpeed(MaxSpeed);
curMaxSpeed = MaxSpeed;
}
if (curSpeed != SpeedContinuous) {
Stepper.setSpeed(SpeedContinuous*(CCW ? -1 : 1));
curSpeed = SpeedContinuous;
}}
else{
if (EnSteps) {
noInterrupts();
if (curMaxSpeed != MaxSpeed) {
Stepper.setMaxSpeed(MaxSpeed);
curMaxSpeed = MaxSpeed;
}
if (curAcceleration != Acceleration) {
Stepper.setAcceleration(Acceleration);
curAcceleration = Acceleration;
}
if (AbsSteps) {Stepper.moveTo(Steps*(CCW ? -1 : 1));}
else {Stepper.move(Steps*(CCW ? -1 : 1));}
interrupts();
}
if (StopAccel) {Stepper.stop;}
}
Position = Stepper.currentPosition();
703
Timer1.initialize( period ); // инициализация таймера 1,
Timer1.attachInterrupt ( timerInterrupt, period ); // задаем обработчик прерываний
Stepper.setMinPulseWidth(lengthPulse);
181
#include
<TimerOne.h>
#include
<AccelStepper.h>
Длительность испульса, вставлять больше 100 крайне не рекомендуется
#define
lengthPulse
10
1 - режим "external driver" (A4988)
Stepper
(1, Step, Dir);
AccelStepper
curSpeed
= 0;
int
curMaxSpeed
= 0;
int
curAcceleration
= 0;
int
if (Continuous) {Ready = Stepper.runSpeed();}
else Ready = !Stepper.run();
75
void
timerInterrupt
470@1000 corner: 490@1020
646.0d@980 corner: 666.0d@1000
Position01
646.0d@1010
666.0d@1010
646.0d@1000 corner: 666.0d@1020
666.0d@990
ШД1_ESP_v1.5
Ready01
32e813fa-ef52-43e0-a6f5-9de14ceb5510
ШД1_ESP_v1.5
Блок ШД1 для управления ШД через драйвер типа А4988 и пр.
модификация AlexCrane, 2019
Работает на библиотеке AccelStepper.h
http://www.airspayce.com/mikem/arduino/AccelStepper/index.html
Входы:
Continuous - При true постоянно шагаем, имеет больший приоритет перед EnSteps
SpeedContinuous - Скорость ШД для "постоянно шагаем"
Эти два входа можно использовать для поиска концевика и просто чтобы покрутить двигателем, но без ускорений
SetZeroPosition - Установка начальной позиции в 0. Использовать через RTrig
EnSteps - при переднем фронте начинаем шагать. Использовать через RTrig
Speed - Максимальная скорость шаг/сек
Acceleration - Ускорение шаг/сек2
Steps - Количество шагов для выполнения (hint: можно и отрицательные)
CCW - true крутить против часовой, иначе по
AbsSteps - Если true то шагаем по абсолютным координатам от нулевой позиции, иначе идем относительно последней позиции
StopAccel - Остановка с использованием текущей скорости и ускорения
Выходы:
Ready - true двигатель закончил движение
Position - Текущая позиция двигателя
1046
Step01
D5
Dir01
D6
if (curMaxSpeed01 != MaxSpeed01) {
Stepper01.setMaxSpeed(MaxSpeed01);
curMaxSpeed01 = MaxSpeed01;}
if (curAcceleration01 != Acceleration01) {
Stepper01.setAcceleration(Acceleration01);
curAcceleration01 = Acceleration01;}
if (curCCW01 != CCW01) {curCCW01 = CCW01;}
if (curSpeed01 != SpeedContinuous01) {
Stepper01.setSpeed(SpeedContinuous01*(curCCW01 ? -1 : 1));
curSpeed01 = SpeedContinuous01;}
if (SetZeroPosition01) {Stepper01.setCurrentPosition(0); curSpeed01=0; Ready01 = true;}
if (Continuous01) { curSpeed01=0;}
else{
if (EnSteps01) {
if (AbsSteps01) {Stepper01.moveTo(Steps01*(curCCW01 ? -1 : 1));}
else {Stepper01.move(Steps01*(curCCW01 ? -1 : 1));}
}
if (StopAccel01) {Stepper01.stop();}
}
Ready01 = true;
if (Continuous01 && !SetZeroPosition01) {Ready01 = false; Stepper01.runSpeed();}
if (EnSteps01) {EnSteps01temp = true;}
if (EnSteps01temp)
{Ready01 = !Stepper01.run();
EnSteps01temp = !Ready01;}
Position01 = Stepper01.currentPosition();
986
Stepper01.setMinPulseWidth(lengthPulse);
40
#include
<AccelStepper.h>
Длительность импульса, вставлять больше 100 крайне не рекомендуется
#define
lengthPulse
10
1 - режим "external driver" (A4988)
Stepper01
(1, Step01, Dir01);
AccelStepper
curSpeed01
= 0;
int
curMaxSpeed01
= 0;
int
curAcceleration01
= 0;
int
curCCW01
=false;
bool
EnSteps01temp
= false;
bool
156.0d
42.0d
646.0d@990
666.0d@990 corner: 666.0d@990
670@990
690@990
670@980 corner: 690@1000
21.0d
LED
mosi
SPI
D7
1000
19
120@590
140@590 corner: 225.0d@610
120@590 corner: 245.0d@610
144@604.5d
430@550
450@550 corner: 490@590
430@550 corner: 510@590
456.5d@564.5d
430@580
580@570
600@570 corner: 667.0d@610
580@570 corner: 687.0d@610
604@594.5d
580@580
600@580
554.0d@583.5d
580@570 corner: 600@590
580@590 corner: 600@610
580@580
580@600
600@600
580@610
600@610 corner: 655.0d@650
580@610 corner: 675.0d@650
604@634.5d
580@620
600@620
554.0d@623.5d
580@610 corner: 600@630
580@630 corner: 600@650
580@620
580@640
600@640
580@650
600@650 corner: 658.0d@690
580@650 corner: 678.0d@690
604@674.5d
300
580@660
600@660
560.0d@663.5d
580@650 corner: 600@670
580@670 corner: 600@690
580@660
580@680
600@680
580@730
600@730 corner: 632.0d@770
580@730 corner: 652.0d@770
604@753.5d
580@740
600@740
560.0d@743.5d
580@730 corner: 600@750
580@750 corner: 600@770
580@760
600@760
580@690
600@690 corner: 651.0d@730
580@690 corner: 671.0d@730
604@714.5d
580@700
600@700
556.0d@703.5d
580@690 corner: 600@710
580@710 corner: 600@730
580@720
600@720
510@580 corner: 510@760
Q
490@580
510@580
I
450@580
245.0d@580 corner: 245.0d@600
231.0d@600
245.0d@600
77.0d
Энкодер_влево
scl
D1
25
420@370
440@370 corner: 472.0d@390
420@370 corner: 492.0d@390
444@383.5d
420@380
440@380
400.0d@383.5d
420@370 corner: 440@390
472.0d@380
492.0d@380
472.0d@370 corner: 492.0d@390
1101.0d
9600
arduinoIDE
4096
210708533
ESP8266 NodeMcu v3
109802410
default