Den här handledningen hjälper dig att förstå kontrollerna för en borstlös DC-motorstyrenhet när den paras ihop med en Arduino och ett linjärt ställdon. Detta program kan användas för att kontinuerligt förlänga och dra tillbaka ett ställdons slaglängd.
Innan vi börjar, låt oss gå igenom komponenterna vi kommer att använda i den här handledningen:
- Arduino Mega (Arduino Uno kan också användas).
- LC-241.
- PA-14 med borstlös motor.
- PS-13-12 strömförsörjning.
- Jumperkablar.
Det linjära ställdonet har två uppsättningar kablar som kommer ut ur det, en uppsättning är för motorn och den andra uppsättningen är för gränslägesbrytarna. Schemat i figuren ovan visar hur man kopplar ihop komponenterna.
PIN-INSTÄLLNINGSKOD
int out_lim = 45; // yttre gränslägesbrytarens stift
int in_lim = 53; // inre gränslägesbrytarstift
int run_f = 25; // kör-pin på styrenheten
int run_r = 30; // omvänd pin på styrenheten
Denna del av koden tar hand om initieringen av pinnar som ska användas för att ta emot och skicka data. Alla digitala pinnar användes i detta fall, men analoga kan också användas.
INSTÄLLNING AV LOOPKOD
void setup() {
Serial.begin(9600); // initierar seriell kommunikation vid 9600 bitar per sekund
pinMode(out_lim, INPUT_PULLUP); // konfigurerar pin 45 som ingångspinne
pinMode(in_lim, INPUT_PULLUP); // konfigurerar pin 53 som ingångspinne
pinMode(run_f, OUTPUT); // konfigurerar pin 25 som utgångspinne
pinMode(run_r, OUTPUT); // konfigurerar pin 30 som utgångspinne
retract(); // drar tillbaka linjen vid uppstart
fördröjning(500);
}
"Setup"-loopen konfigurerar vilka stift som ska användas för utdata och vilka som ska användas för indata. Som framgår av koden kommer stift anslutna till gränsbrytare att användas för att läsa gränsbrytarens tillstånd och stift anslutna till "RUN" och "REV" på LC-241 kommer att användas för att skriva till den. Inledningsvis kör koden också en retraktionsfunktion för att dra tillbaka hela vägen in innan start.
FUNKTIONSDEFINITIONER KOD
void extend() // den här funktionen gör att motorn kan köras
{
digitalWrite(run_f, LÅG);
digitalWrite(run_r, HÖG);
}
void retract() // denna funktion reverserar motorns riktning
{
digitalWrite(run_f, LÅG);
digitalWrite(run_r, LÅG);
}
void run_stop() // den här funktionen inaktiverar motorn
{
digitalWrite(run_f, HÖG);
digitalWrite(run_r, HÖG);
}
Den här delen förklarar funktionerna som används för att styra motorns effekt och riktning. Vi aktiverar eller inaktiverar motorn genom att skriva "0 tum eller "1 tum till "RUN"-pinnen och sedan samma kommandon till "REV"-pinnen för att reversera motorns riktning.
HUVUDLOOPKOD
Void loop() {
int out_lim_state = digitalRead(out_lim); // läser gränslägesbrytarna och sparar dess värde
int in_lim_state = digitalRead(in_lim);
Serial.print("yttre gränslägesbrytarvärde "), Serial.println(out_lim_state); // 0 -> gränslägesbrytaren är nedtryckt
Serial.print("inre gränslägesbrytarens värde"), Serial.println(in_lim_state); // 1 -> gränslägesbrytaren är inte nedtryckt
om (out_lim_state == 0 && in_lim_state == 1) // om den yttre gränsbrytaren är nedtryckt och den inre inte är det (helt utdragen)
{
retract(); // dra tillbaka linjen
}
annars if (out_lim_state == 1 && in_lim_state == 0) // om den inre gränsbrytaren är nedtryckt och den yttre inte är det (indragen helt)
{
extend(); // förläng linjen
}
"Loop"-slingan läser i princip bara ingångarna från gränsbrytarna för att kontrollera om brytarna är nedtryckta eller inte och ändrar sedan motorns riktning baserat på det.
De flesta linjära ställdon på marknaden levereras med en borstlös likströmsmotor, vilket gör det omöjligt att köra enheten kontinuerligt på grund av den motorns arbetscykel. På Progressive Automations ger vi våra kunder friheten att välja en borstlös likströmsmotor för vår PA-14-modell, vilket ger dem ännu fler alternativ för sina projekt.