Този урок ще ви помогне да разберете управлението на контролер за безчетков DC мотор, когато е свързан с Arduino и линеен задвижващ механизъм. Тази програма може да се използва за непрекъснато удължаване и прибиране на хода на задвижващия механизъм.
Преди да започнем, нека разгледаме компонентите, които ще използваме в този урок:
- Arduino Mega (може да се използва и Arduino Uno).
- LC-241.
- PA-14 с безчетков мотор.
- Захранване PS-13-12.
- Съединителни кабели.
Линейният задвижващ механизъм има 2 комплекта кабели, излизащи от него, единият комплект е за двигателя, а другият комплект е за крайните изключватели. Схемата на фигурата по-горе показва как да се свържат компонентите заедно.
КОД ЗА НАСТРОЙКА НА ПИН
int out_lim = 45; // пин на външния краен изключвател
int in_lim = 53; // вътрешен пин на крайния изключвател
int run_f = 25; // стартиране на пин на контролера
int run_r = 30; // обръщане на пина на контролера
Тази част от кода се грижи за инициализацията на пиновете, които ще се използват за получаване и изпращане на данни. В този случай са използвани само цифрови пинове, но могат да се използват и аналогови.
КОД ЗА НАСТРОЙКА НА КОНТУРА
невалидна настройка() {
Serial.begin(9600); // инициализира серийната комуникация със скорост 9600 бита в секунда
pinMode(out_lim, INPUT_PULLUP); // конфигурира пин 45 като входен пин
pinMode(in_lim, INPUT_PULLUP); // конфигурира пин 53 като входен пин
pinMode(run_f, OUTPUT); // конфигурира пин 25 като изходен пин
pinMode(run_r, OUTPUT); // конфигурира пин 30 като изходен пин
retract(); // прибира хода при стартиране
забавяне(500);
}
Цикълът „setup“ конфигурира кои пинове ще се използват за изход и кои за вход. Както може да се види в кода, пинове, свързани с крайни превключватели, ще се използват за четене на състоянията на крайните превключватели, а пинове, свързани с „RUN“ и „REV“ на LC-241, ще се използват за запис в него. Първоначално кодът изпълнява и функция за прибиране, за да се прибере напълно преди стартиране.
КОД ЗА ДЕФИНИЦИИ НА ФУНКЦИИ
void extend() // тази функция позволява на двигателя да работи
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, HIGH);
}
void retract() // тази функция обръща посоката на въртене на двигателя
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, LOW);
}
void run_stop() // тази функция деактивира двигателя
{
digitalWrite(run_f, HIGH);
digitalWrite(run_r, HIGH);
}
Тази част обяснява функциите, използвани за управление на мощността и посоката на въртене на двигателя. Ще активираме или деактивираме двигателя, като запишем „0“ или „1“ на пин „RUN“ и след това същите команди на пин „REV“, за да обърнем посоката на въртене на двигателя.
КОД НА ГЛАВНИЯ КОНТУР
Невалиден цикъл() {
int out_lim_state = digitalRead(out_lim); // чете крайните изключватели и запазва стойността им
int in_lim_state = digitalRead(in_lim);
Serial.print("стойност на външния краен изключвател"), Serial.println(out_lim_state); // 0 -> крайният изключвател е натиснат
Serial.print("стойност на вътрешния краен изключвател"), Serial.println(in_lim_state); // 1 -> крайният изключвател не е натиснат
ако (out_lim_state == 0 && in_lim_state == 1) // ако външният краен изключвател е натиснат, а вътрешният не е (изтеглен докрай)
{
retract(); // прибиране на хода
}
иначе ако (out_lim_state == 1 && in_lim_state == 0) // ако вътрешният краен изключвател е натиснат, а външният не е (изтеглен докрай)
{
extend(); // удължаване на хода
}
Цикълът „loop“ основно чете входовете от крайните изключватели, за да провери дали превключвателите са натиснати или не, и след това въз основа на това просто променя посоката на въртене на двигателя.
Повечето линейни задвижвания на пазара са инсталирани с четков DC двигател и следователно работният цикъл, наличен с този двигател, прави донякъде невъзможна непрекъснатата работа на устройството. В Progressive Automations, ние даваме на нашите клиенти свободата да изберат безчетков DC двигател за нашия модел PA-14, което им дава още повече възможности за техните проекти.