8 (905) 200-03-37 Владивосток
с 09:00 до 19:00
CHN - 1.14 руб. Сайт - 21.13 руб.

Синяя плата ULN2003, плата драйвера шагового двигателя + комплект четырехфазного пятипроводного двигателя 5 В для шагового двигателя

Цена: 126руб.    (¥5.95)
Артикул: 592404788346

Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.

Этот товар на Таобао Описание товара
Продавец:派悦电子科技
Рейтинг:
Всего отзывов:0
Положительных:0
Добавить в корзину
Другие товары этого продавца
¥591 247руб.
¥1453 064руб.
¥18381руб.
¥18381руб.

Список доставки:

ULN2003 Модуль x 1

5 В 4 фазы 5 Линия 28byj-48 Новый шаг в мотор 

Скачать здесь, чтобы скачать:https://pan.baidu.com/s/1gfjd1kRЗагрузите код на плату управления Arduino и посмотрите эффект.

  1.  /*
  2.  * Шаговый двигатель вращается вслед за потенциометром
  3.  * (или другие датчики) используют аналоговый порт 0 для ввода
  4.  * Используйте файл библиотеки Stepper.h, который поставляется с arduino IDE.
  5.  */
  6.  
  7. #include<Stepper.h>
  8. &nbsp;
  9. // Здесь задаем количество шагов за один оборот шагового двигателя
  10. #define STEPS&nbsp;100
  11. &nbsp;
  12. // прилагается для установки количества шагов и контактов шагового двигателя
  13. Stepper stepper(STEPS,&nbsp;8,&nbsp;9,&nbsp;10,&nbsp;11);
  14. &nbsp;
  15. //Определяем переменные для хранения исторических показаний
  16. int&nbsp;previous =&nbsp;0;
  17. &nbsp;
  18. void&nbsp;setup()
  19. {
  20. &nbsp;&nbsp;//Устанавливаем скорость двигателя в минуту на 90 шагов
  21. &nbsp;&nbsp;stepper.setSpeed(90);
  22. }
  23. &nbsp;
  24. void&nbsp;loop()
  25. {
  26. &nbsp;&nbsp;// Получаем показания датчика
  27. &nbsp;&nbsp;int&nbsp;val =&nbsp;analogRead(0);
  28. &nbsp;
  29. &nbsp;&nbsp;//Количество шагов движения равно текущему показанию минус историческое значение
  30. &nbsp;&nbsp;stepper.step(val - previous);
  31. &nbsp;
  32. &nbsp;&nbsp;//Сохраняем исторические показания
  33. &nbsp;&nbsp;previous = val;
  34. }

&nbsp;

&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;

&nbsp;

Реализация программы шагового двигателя

Когда микроконтроллер управляет вращением шагового двигателя, выводы микроконтроллера должны отправлять импульсы упорядоченным образом.Шаговый двигатель 28BYJ-48 имеет четыре фазы и требует четырех контактов для управления.Далее мы напишем элементы управления микроконтроллера 51 и STM32 соответственно.Код программы C для шагового двигателя 28BYJ-48.

&nbsp;

51 микроконтроллер:

При использовании микроконтроллера STC15F104E контакты управления шаговым двигателем — это P3.2, P3.3, P3.4 и P3.5.

&nbsp;

void StepperMotor (битовый флаг, uint16 раз, скорость uint8)

{

uint16 T = 600000 / (2048 * speed);

static uint8 step;

&nbsp;

P32 = P33 = P34 = P35 = 0;

&nbsp;

while(times--)

{

if(flag == 0)

{

//A->B->C->D->A

switch(step)

{

case 0:

P35 = 0;

P32 = 1;

break;

case 1:

P32 = 0;

P33 = 1;

break;

case 2:

P33 = 0;

P34 = 1;

break;

case 3:

P34 = 0;

P35 = 1;

break;

}

}

else

{

//A->D->C->B->A

switch(step)

{

case 0:

P33 = 0;

P32 = 1;

break;

case 1:

P32 = 0;

P35 = 1;

break;

case 2:

P35 = 0;

P34 = 1;

break;

case 3:

P34 = 0;

P33 = 1;

break;

}

}

step = ++step>=4 ? 0 : step;

delay_100us(T);

}

&nbsp;

P32 = P33 = P34 = P35 = 0;

}

&nbsp;

&nbsp;

Микроконтроллер STM32:

При использовании микроконтроллера STM32F103C8T6 контакты управления шаговым двигателем: PA0, PA1, PA2 и PA3.

&nbsp;

void StepperMotor (флаг uint8_t, раз uint16_t, скорость uint8_t)

{

uint16_t T = 600000 / (2048 * speed);

static uint8_t step;

&nbsp;

GPIO_ResetBits(GPIOA, GPIO_Pin_0 GPIO_Pin_1 GPIO_Pin_2 GPIO_Pin_3);

&nbsp;

while(times--)

{

if(flag == 0)

{

//A->B->C->D->A

switch(step)

{

case 0:

GPIO_ResetBits(GPIOA, GPIO_Pin_3);

GPIO_SetBits(GPIOA, GPIO_Pin_0);

break;

case 1:

GPIO_ResetBits(GPIOA, GPIO_Pin_0);

GPIO_SetBits(GPIOA, GPIO_Pin_1);

break;

case 2:

GPIO_ResetBits(GPIOA, GPIO_Pin_1);

GPIO_SetBits(GPIOA, GPIO_Pin_2);

break;

case 3:

GPIO_ResetBits(GPIOA, GPIO_Pin_2);

GPIO_SetBits(GPIOA, GPIO_Pin_3);

break;

}

}

else

{

//A->D->C->B->A

switch(step)

{

case 0:

GPIO_ResetBits(GPIOA, GPIO_Pin_1);

GPIO_SetBits(GPIOA, GPIO_Pin_0);

break;

case 1:

GPIO_ResetBits(GPIOA, GPIO_Pin_0);

GPIO_SetBits(GPIOA, GPIO_Pin_3);

break;

case 2:

GPIO_ResetBits(GPIOA, GPIO_Pin_3);

GPIO_SetBits(GPIOA, GPIO_Pin_2);

break;

case 3:

GPIO_ResetBits(GPIOA, GPIO_Pin_2);

GPIO_SetBits(GPIOA, GPIO_Pin_1);

break;

}

}

step = ++step>= 4 ? 0 : step;

&nbsp;

delay_100us(T);

}

&nbsp;

GPIO_ResetBits(GPIOA, GPIO_Pin_0 GPIO_Pin_1 GPIO_Pin_2 GPIO_Pin_3);

}