Deze handleiding helpt bij het begrijpen van de bediening van een borstelloze DC-motorcontroller in combinatie met een Arduino en een lineaire actuator. Dit programma kan worden gebruikt om de slaglengte van een actuator continu te verlengen en in te trekken.
Voordat we beginnen, lopen we de componenten door die we in deze handleiding zullen gebruiken:
- Arduino Mega (Arduino Uno kan ook worden gebruikt).
- LC-241.
- PA-14 met een borstelloze motor.
- PS-13-12-voeding.
- Jumperkabels.
De lineaire actuator heeft 2 sets draden, één set is voor de motor en de andere set is voor de eindschakelaars. Het schema in de bovenstaande afbeelding laat zien hoe je de componenten met elkaar verbindt.
PIN-SETUP-CODE
int out_lim = 45; // pin voor de buitenste eindschakelaar
int in_lim = 53; // pin voor de binnenste eindschakelaar
int run_f = 25; // startpin op de controller
int run_r = 30; // omkeerpin op de controller
Dit deel van de code verzorgt de initialisatie van de pinnen die worden gebruikt voor het ontvangen en verzenden van gegevens. In dit geval zijn alle digitale pinnen gebruikt, maar analoge kunnen ook worden gebruikt.
SETUP-LOOP-CODE
void setup() {
Serial.begin(9600); // initialiseert seriële communicatie met 9600 bits per seconde
pinMode(out_lim, INPUT_PULLUP); // configureert pin 45 als invoerpin
pinMode(in_lim, INPUT_PULLUP); // configureert pin 53 als invoerpin
pinMode(run_f, OUTPUT); // configureert pin 25 als uitvoerpin
pinMode(run_r, OUTPUT); // configureert pin 30 als uitvoerpin
retract(); // trekt de slaglengte bij het opstarten in
delay(500);
}
De “setup”-lus configureert welke pinnen voor uitvoer en welke voor invoer worden gebruikt. Zoals in de code te zien is, worden pinnen die zijn verbonden met de eindschakelaars gebruikt om de status van de eindschakelaars uit te lezen, en pinnen die zijn verbonden met “RUN” en “REV” op de LC-241 worden gebruikt om ernaar te schrijven. Aanvankelijk voert de code ook een retractiefunctie uit om eerst volledig in te trekken voordat gestart wordt.
FUNCTIEDEFINITIES-CODE
void extend() // deze functie laat de motor draaien
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, HIGH);
}
void retract() // deze functie keert de draairichting van de motor om
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, LOW);
}
void run_stop() // deze functie schakelt de motor uit
{
digitalWrite(run_f, HIGH);
digitalWrite(run_r, HIGH);
}
Dit deel legt de functies uit die worden gebruikt om het motorvermogen en de richting te regelen. We schakelen de motor in of uit door “0” of “1” naar de “RUN”-pin te schrijven en vervolgens dezelfde commando’s naar de “REV”-pin om de draairichting van de motor om te keren.
HOOFDLUS-CODE
Void loop() {
int out_lim_state = digitalRead(out_lim); // leest de eindschakelaars en slaat hun waarde op
int in_lim_state = digitalRead(in_lim);
Serial.print("waarde buitenste eindschakelaar "), Serial.println(out_lim_state); // 0 -> eindschakelaar is ingedrukt
Serial.print("waarde binnenste eindschakelaar "), Serial.println(in_lim_state); // 1 -> eindschakelaar is niet ingedrukt
if (out_lim_state == 0 && in_lim_state == 1) // als de buitenste eindschakelaar is ingedrukt en de binnenste niet (volledig uitgeschoven)
{
retract(); // trek de slaglengte in
}
else if (out_lim_state == 1 && in_lim_state == 0) // als de binnenste eindschakelaar is ingedrukt en de buitenste niet (volledig ingetrokken)
{
extend(); // verleng de slaglengte
}
De “loop”-lus leest in feite de ingangen van de eindschakelaars om te controleren of de schakelaars zijn ingedrukt en wijzigt op basis daarvan simpelweg de richting van de motor.
De meeste lineaire actuatoren op de markt worden geleverd met een borstelmotor (DC), waardoor de beschikbare inschakelduur het min of meer onmogelijk maakt om de unit continu te laten draaien. Bij Progressive Automations geven we onze klanten de vrijheid om te kiezen voor een borstelloze DC-motor voor ons PA-14-model, waardoor ze nog meer opties hebben voor hun projecten.