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