Stap 3: De Code schrijven
Wij willen bereiden een aantal goede signalen om te rijden de borstelloze motor.Deze BLDC heeft 36 stappen in elke volledige ronde. Het betekent dat wij ons 36 staten van het signaal voorbereiden moeten draaien de spindel een volledige ronde. 36 als volgt zijn verdeeld in 6 delen van een unieke reeks. Dus hebben we 6 verschillende signalen die 6 keer in een lus moeten worden herhaald.
Ervan uitgaande dat de 3 draden als A, B en C (geordend) als we een 3 bits waarde nodig te gebruiken. We hebben aangenomen de 0 negatief en 1 als positieve spanning.
De magische 6 stappen zijn als volgt:
110, 100, 101, 001, 011, 010
We zullen ze gebruiken in een lus.
Andere belangrijke ding om te vermelden is wachten of vertraging tussen elke stap. Door aanpassing van de vertragingstijd kunt u de snelheid van de motor. Als u ervoor een hoge vertraging kiest (Ex: 15 tot 20 milliseconden) de motor kan net schudden of start een cutoff zet. Als u een minimale vertraging (Ex: 0 tot en met 5 milliseconden) hoort u enkel een buzz en geen beweging heeft plaatsgevonden.
Dus ik wil een variabele gebruiken als vertraging en verandering het gooien het seriële monitorvenster in Arduino.
De code is als volgt:
/*
BLDC DRIVER ***
*/
int wachten = 10;
int p1 = 2;
int p2 = 3;
int p3 = 4;
char inChar;
VOID Setup {}
pinMode (p1, OUTPUT);
pinMode (p2, OUTPUT);
pinMode (p3, OUTPUT);
Serial.begin(9600);
}
de routine van de lus wordt uitgevoerd over en weer forever:
void loop {}
Als (Serial.available()) {}
inChar = (char)Serial.read();
Als (inChar == '-') {}
wachten-=1;
}
else {}
wachten += 1;
}
Serial.println(wait);
}
digitalWrite (p1, 1);
digitalWrite (p2, 1);
digitalWrite (p3, 0);
delay(wait);
digitalWrite (p1, 1);
digitalWrite (p2, 0);
digitalWrite (p3, 0);
delay(wait);
digitalWrite (p1, 1);
digitalWrite (p2, 0);
digitalWrite (p3, 1);
delay(wait);
digitalWrite (p1, 0);
digitalWrite (p2, 0);
digitalWrite (p3, 1);
delay(wait);
digitalWrite (p1, 0);
digitalWrite (p2, 1);
digitalWrite (p3, 1);
delay(wait);
digitalWrite (p1, 0);
digitalWrite (p2, 1);
digitalWrite (p3, 0);
delay(wait);
}
Enkele tips:
-Gebruik geen externe voeding meer dan 12v.
-Voor kleine BLDC motoren kunt u Arduino 5 + als Vs en geen behoefte aan externe macht, maar u kunt de motorsnelheid niet bereiken.
-Begin met wachten waarde van 10 vervolgens de seriële monitor openen en voer de min-knop om de waarde te verlagen. Lagere wachten waarde, snellere snelheid.