Tämä opas auttaa ymmärtämään harjattoman DC‑moottorin ohjaimen hallintaa, kun se yhdistetään Arduinoon ja lineaariseen toimilaitteeseen. Tätä ohjelmaa voidaan käyttää pidentämään ja lyhentämään toimilaitteen iskun pituutta jatkuvasti.
Ennen kuin aloitamme, käydään läpi tämän oppaan komponentit:
- Arduino Mega (myös Arduino Uno käy).
- LC‑241.
- PA‑14 harjattomalla moottorilla.
- PS‑13‑12 virtalähde.
- Hyppylangat.
Lineaarisesta toimilaitteesta tulee ulos kaksi johdinsarjaa: toinen on moottorille ja toinen rajakytkimille. Yllä olevan kuvan kytkentäkaavio näyttää, miten komponentit johdotetaan yhteen.
PINNIEN MÄÄRITYS ‑KOODI
int out_lim = 45; // ulomman rajakytkimen pinni
int in_lim = 53; // sisemmän rajakytkimen pinni
int run_f = 25; // ohjaimen RUN‑pinni
int run_r = 30; // ohjaimen REV‑pinni
Tämä koodin osa huolehtii sellaisten pinnien alustuksesta, joita käytetään datan vastaanottoon ja lähetykseen. Tässä tapauksessa käytettiin kaikkia digitaalisia pinnejä, mutta myös analogisia voidaan käyttää.
SETUP‑SILMUKAN KOODI
void setup() {
Serial.begin(9600); // alustaa sarjaviestinnän nopeudella 9600 bittiä sekunnissa
pinMode(out_lim, INPUT_PULLUP); // määrittää pinnin 45 tuloksi
pinMode(in_lim, INPUT_PULLUP); // määrittää pinnin 53 tuloksi
pinMode(run_f, OUTPUT); // määrittää pinnin 25 lähdöksi
pinMode(run_r, OUTPUT); // määrittää pinnin 30 lähdöksi
retract(); // vetää iskun pituuden sisään käynnistyksessä
delay(500);
}
”setup”‑silmukka määrittää, mitä pinnejä käytetään lähtöön ja mitä tuloon. Koodista nähdään, että rajakytkimiin kytkettyjä pinnejä käytetään rajakytkinten tilojen lukemiseen ja LC‑241:n ”RUN”‑ ja ”REV”‑pinneihin kytkettyjä pinnejä kirjoittamiseen. Aluksi koodi suorittaa myös palautusfunktion vetääkseen mekanismin kokonaan sisään ennen aloitusta.
FUNKTIOIDEN MÄÄRITELMÄT ‑KOODI
void extend() // tämä funktio käynnistää moottorin
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, HIGH);
}
void retract() // tämä funktio kääntää moottorin suunnan
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, LOW);
}
void run_stop() // tämä funktio poistaa moottorin käytöstä
{
digitalWrite(run_f, HIGH);
digitalWrite(run_r, HIGH);
}
Tässä osassa selitetään moottorin tehon ja suunnan hallintaan käytetyt funktiot. Otamme moottorin käyttöön tai poistamme sen käytöstä kirjoittamalla ”0” tai ”1” ”RUN”‑pinniin ja sitten samat komennot ”REV”‑pinniin moottorin suunnan vaihtamiseksi.
PÄÄSILMUKAN KOODI
Void loop() {
int out_lim_state = digitalRead(out_lim); // lukee rajakytkimet ja tallentaa niiden arvon
int in_lim_state = digitalRead(in_lim);
Serial.print("ulomman rajakytkimen arvo "), Serial.println(out_lim_state); // 0 -> rajakytkin on painettu
Serial.print("sisemmän rajakytkimen arvo "), Serial.println(in_lim_state); // 1 -> rajakytkintä ei ole painettu
if (out_lim_state == 0 && in_lim_state == 1) // jos ulompi rajakytkin on painettu eikä sisempi (täysin ulkona)
{
retract(); // vedä isku sisään
}
else if (out_lim_state == 1 && in_lim_state == 0) // jos sisempi rajakytkin on painettu eikä ulompi (täysin sisällä)
{
extend(); // pidennä iskua
}
”loop”‑silmukka lukee käytännössä vain rajakytkimiltä tulevat tulot tarkistaakseen, onko kytkimiä painettu, ja vaihtaa sen perusteella moottorin suuntaa.
Useimmissa markkinoilla olevissa lineaarisissa toimilaitteissa on harjallinen tasavirtamoottori, jolloin kyseisen moottorin käytettävissä oleva käyttösuhde tekee yksikön jatkuvasta ajosta jokseenkin mahdotonta. Progressive Automationsilla annamme asiakkaillemme mahdollisuuden valita PA‑14‑malliimme harjattoman DC‑moottorin, mikä antaa entistä enemmän vaihtoehtoja projekteihin.