Простой и не дорогой, регулятор скорости вращения, для униполярного шагового двигателя.
Принцип работы заключается в том, что плата Digispark считывает значение с потенциометра, и на основе полученного значения, выдает импульсы для шагового двигателя. Если крутить потенциометр по часовой стрелке, то скорость вращения шагового двигателя увеличивается. При вращении против часовой стрелки, скорость вращения шагового двигателя уменьшается, и в конце вовсе останавливается.
Основой проекта является плата Digispark, на базе микроконтроллера Attiny85, она дешевая, компактная и прошивается напрямую через USB, без использования программатора. Также понадобится униполярный шаговый двигатель 28BYJ-48 на 5 вольт, и драйвер на базе микросхемы ULN2003, который обычно идет в комплекте с шаговым двигателем, также понадобится потенциометр от 2 до 10 киллоом, и несколько соединительных проводов. Я еще использую безпаечную макетную плату, вы при желании можете сразу все спаять.
Загрузите этот скетч на плату.
//Начало скетча
void setup() {
// 0, 1, 2, 4 контакты к которым подключается шаговый двигатель
pinMode(0, OUTPUT); pinMode(1, OUTPUT);
pinMode(2, OUTPUT); pinMode(4, OUTPUT);
}
void loop() {
int sensorReading = analogRead(A3);//pin 3
int t1 = map(sensorReading, 0, 910, 1800, 32767);
if (sensorReading > 910)
{ digitalWrite(0, LOW); digitalWrite(1, LOW);
digitalWrite(2, LOW); digitalWrite(4, LOW);
}
if (sensorReading < 909) {
digitalWrite(4, HIGH); digitalWrite(1, LOW); delayMicroseconds(t1);
digitalWrite(2, HIGH); digitalWrite(0, LOW); delayMicroseconds(t1);
digitalWrite(1, HIGH); digitalWrite(4, LOW); delayMicroseconds(t1);
digitalWrite(0, HIGH); digitalWrite(2, LOW); delayMicroseconds(t1);
}
}
//Конец скетча
И соберите все, как показано на этой схеме.