Denne vejledning vil hjælpe dig med at forstå styringen af en børsteløs DC-motorcontroller, når den parres med en Arduino og en lineær aktuator. Dette program kan bruges til kontinuerligt at forlænge og trække en aktuators slaglængde tilbage.
Før vi går i gang, lad os gennemgå de komponenter, vi vil bruge i denne vejledning:
- Arduino Mega (Arduino Uno kan også bruges).
- LC-241.
- PA-14 med børsteløs motor.
- PS-13-12 strømforsyning.
- Jumperledninger.
Den lineære aktuator har 2 sæt ledninger, der kommer ud af den, det ene sæt er til motoren og det andet sæt er til grænseafbryderne. Skematisk diagram i figuren ovenfor viser, hvordan komponenterne skal forbindes.
PIN-OPSÆTTELSESKODE
int out_lim = 45; // ydre grænsekontaktben
int in_lim = 53; // indre grænsekontaktben
int run_f = 25; // køre pin på controller
int run_r = 30; // omvendt pin på controller
Denne del af koden tager sig af initialiseringen af de pins, der skal bruges til at modtage og sende data. Alle digitale pins blev brugt i dette tilfælde, men analoge pins kan også bruges.
OPSÆTNING LOOPKODE
void opsætning() {
Serial.begin(9600); // initialiserer seriel kommunikation ved 9600 bits per sekund
pinMode(out_lim, INPUT_PULLUP); // konfigurerer pin 45 som input-pin
pinMode(in_lim, INPUT_PULLUP); // konfigurerer pin 53 som input-pin
pinMode(run_f, OUTPUT); // konfigurerer pin 25 som output-pin
pinMode(run_r, OUTPUT); // konfigurerer pin 30 som output-pin
retract(); // trækker stregen tilbage ved opstart
forsinkelse(500);
}
"Setup"-løkken konfigurerer, hvilke ben der skal bruges til output, og hvilke der skal bruges til input. Som det kan ses i koden, vil ben forbundet til grænsekontakter blive brugt til at læse grænsekontakttilstande, og ben forbundet til "RUN" og "REV" på LC-241 vil blive brugt til at skrive til den. I starten kører koden også en tilbagetrækningsfunktion for at trække helt ind før start.
FUNKTIONSDEFINITIONER KODE
void extend() // denne funktion gør det muligt for motoren at køre
{
digitalWrite(run_f, LAV);
digitalWrite(run_r, HØJ);
}
void retract() // denne funktion vender motorens retning
{
digitalWrite(run_f, LAV);
digitalWrite(run_r, LAV);
}
void run_stop() // denne funktion deaktiverer motoren
{
digitalWrite(run_f, HØJ);
digitalWrite(run_r, HØJ);
}
Denne del forklarer de funktioner, der bruges til at styre motorens effekt og retning. Vi aktiverer eller deaktiverer motoren ved at skrive "0 inch eller "1 inch til "RUN"-benet og derefter de samme kommandoer til "REV"-benet for at vende motorens retning.
HOVEDLOOPKODE
Ugyldig løkke() {
int out_lim_state = digitalRead(out_lim); // læser grænseafbryderne og gemmer deres værdi
int in_lim_state = digitalRead(in_lim);
Serial.print("ydre grænseafbryderværdi "), Serial.println(out_lim_state); // 0 -> grænseafbryderen er trykket ned
Serial.print("indre grænseafbryderværdi"), Serial.println(in_lim_state); // 1 -> grænseafbryderen er ikke trykket ind
hvis (out_lim_state == 0 && in_lim_state == 1) // hvis den ydre grænsekontakt er trykket ind, og den indre ikke er (helt udstrakt)
{
retract(); // træk stregen tilbage
}
ellers hvis (out_lim_state == 1 && in_lim_state == 0) // hvis den indre grænsekontakt er trykket ind, og den ydre ikke er (trukket helt tilbage)
{
extend(); // forlæng stregen
}
"Loop"-loopet læser dybest set bare inputtene fra grænsekontakter for at kontrollere, om kontakterne er trykket ned eller ej, og derefter ændrer den blot motorens retning baseret på det.
De fleste lineære aktuatorer på markedet leveres med en børstet DC-motor, og den tilgængelige arbejdscyklus med denne motor gør det derfor noget umuligt at køre enheden kontinuerligt. Hos Progressive Automations giver vi vores kunder friheden til at vælge en børsteløs DC-motor til vores PA-14-model, hvilket giver dem endnu flere muligheder til deres projekter.