Как да управлявате задвижващ механизъм с клавиатура

Как да управлявате задвижващ механизъм с клавиатура

Josh Nigh
Josh Nigh
PA Engineer

Понякога проектите ни се нуждаят от допълнителна сигурност. Това може да се случи в най-различни приложения, като например механизми за заключване на врати, предотвратяване на опасно или неоторизирано използване на машини или още по-нишови реквизити за стаи за бягство. В тази статия ще ви запознаем с монтажа на задвижващ механизъм с клавиатура и ще разгледаме как можете да защитите с парола работата на вашия линеен задвижващ механизъм.

Ето какво ще използваме:

Окабеляване на вашия задвижващ механизъм

Първо ще започнем с окабеляването. За да можем да разгъваме и прибираме вашия задвижващ механизъм, ще трябва да използваме и двата канала на нашия 2-канален релеен модул. По този начин, когато Реле едно е активен, токът ще тече в едната посока и когато Реле две е активно, токът ще тече в обратна посока. Ако нито едното, нито и двете релета не са активни, към изпълнителния механизъм няма да тече ток. За да постигнем това, ще трябва да направим следните връзки.

Релета към задвижващия механизъм и захранването

  • +12V към NC1 (нормално затворена клема на реле едно) (бял проводник).
  • -12V към NO1 (нормално отворена клема на реле едно) (черен проводник).
  • NC1 към NC2 (син джъмперен проводник).
  • NO1 към NO2 (зелен джъмперен кабел).
  • COMMON1 към задвижващия механизъм (кафяв проводник на задвижващия механизъм).
  • COMMON2 към задвижващия механизъм (син проводник на задвижващия механизъм).

Arduino към клавиатурата и релейния модул

  • Свържете пинове 1-8 на клавиатурата към пинове 2-9 на Arduino (в този ред).
  • Свържете пин 10 на Arduino към IN1 на релейния модул.
  • Свържете пин 11 на Arduino към IN2 на релейния модул.
  • Arduino 5V към VCC на релеен модул.
  • Arduino GND към GND на релеен модул.
  • Анод на зумера (с по-дълъг кабел) към пин 12 (по избор).
  • Катод на зумера (по-къс проводник) към GND (по избор).
    Arduino to the Keypad and the Relay Module

     

    Кодиране на вашия проект

    След като направихме всички връзки, сме готови за кода. Целта на този код е да прочете входните данни от клавиатура, да потърси правилния 5-цифрен вход и съответно да задейства релетата ни. Има и код за допълнителен зумер, който да осигурява обратна връзка. Ако не желаете да използвате зумера, можете просто да не го свързвате и да оставите кода такъв, какъвто е. Ако трябва да използвате пина на зумера за нещо друго, изтрийте или коментирайте целия код, използван за функциите на зумера или „бипкането“.

    В кода по-долу ще намерите коментари на почти всеки ред (светлосив текст, който следва „//“). Тези коментари ще опишат какво се случва в скицата, както и модификациите, които можете да направите. Ще разгледаме и няколко важни раздела за по-задълбочено обяснение.

    Използвайте нашите Arduino микроконтролери за неограничени възможности за управление на вашия задвижващ механизъм!

    Код за настройка

    В нашия код за настройка ще дефинираме зумера и релейните пинове като изходи. Зумерът ще започне с ниско ниво, а релетата ще започнат с високо ниво. Това ще ги направи неактивни, когато за първи път включим Arduino. Ще изпълним и функцията „retract ()“ веднъж, за да може Arduino да знае правилното състояние на задвижващия механизъм.

     void setup() //runs once on startup
    {
    digitalWrite(buzzer, LOW);//deactivates buzzer
    digitalWrite(relay1,HIGH);//deactivates relay1
    digitalWrite(relay2,HIGH);//deactivates relay2
    for(int i=10;i<14;i++)
    { pinMode(i,OUTPUT);//sets pins 10 - 13 as outputs
    } Serial.begin(9600);//Starts the serial monitor at 9600 baud rate (for debugging only)
    retract();//retracts the actuator on startup if it is not already. comment this out if you do not want the actuator to retract on startup
    Serial.println("READY");//lets us know the serial monitor is running
    }
    

    Код на клавиатурата

    За тази скица използваме библиотеката Keypad.h. Тази библиотека съдържа функциите, които използваме за получаване на входни данни от нашата клавиатура. За да използваме тази библиотека, трябва да създадем двуизмерен масив, за да изобразим символите на нашата клавиатура. Това може да се постигне, като първо дефинираме броя на редовете и броя на колоните на клавиатурата. След това създаваме нашия масив с всеки символ на клавиатурата. Нашата клавиатура има четири реда, четири колони и осем изходни пина. Има по един пин за всеки ред и по един пин за всяка колона. Показваме това в нашия код, като правим „редови щифтове„масив“, който съдържа цифровите входове, свързани към пиновете на реда, и „colPins„масив“, който съдържа цифровите входове, свързани към пиновете на колоната. Когато натиснем клавиш, свързваме един от пиновете на реда с един от пиновете на колоната. Например, ако натиснем бутон 2, създаваме затворена верига между пин едно на ред и пин две на колона.

     char customKey; //characters input by pressing keypad
    const byte ROWS = 4; //four rows
    const byte COLS = 4; //four columns char keys[ROWS][COLS] = { //layout your "keymap" here {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}
    };
    byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad
    Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialize an instance of class NewKeypad 

    Код за достъп

    В този пример за сигурно управление на линейния задвижващ механизъм, нашият код за достъп е с дължина 5 цифри, така че дефинираме „Дължина_на_парола„“ като „6“. Това е така, защото се нуждаем от едно допълнително място за нулев символ. Ако искате да промените дължината на паролата, просто променете 6 на число, което е с едно по-голямо от желаната дължина на кода. След това променете стойността на „Код за достъп„“ към каквито и да е символи, които желаете (по подразбиране е зададено на „12345“).

    Символът, свързан с всеки натиснат клавиш, ще бъде запазен в „Iвход„масив“. След като този масив съдържа 5 символа, той ще сравни стойността на „Вход„и“Код за достъп„“, за да видим дали имаме правилния код за достъп. Ако стойностите са равни, нашият код ще каже на Arduino да разгъне или прибере задвижващия механизъм (в зависимост от текущото състояние на задвижващия механизъм). Ако кодът за достъп е неправилен, пинът на зумера ще се повиши три пъти бързо и след това ще се понижи. И в двата случая „изчистиВход()Функцията ” ще бъде извикана след това, за да изчисти входния масив и да освободи място за нов запис.

    Разширяване и изтегляне на код

    В този код имаме две много сходни функции „невалидно разширение()„и“невалидно оттегляне()„. Когато се извика, void extend() ще запише ниско ниво на Реле Едно, правейки го активно. Това ще затвори верига и ще приложи положително напрежение към изпълнителния механизъм. Релето ще остане активно за времето, зададено на „const int extendTime„. (по подразбиране зададено на 25 000 милисекунди). Функцията void retract() ще направи абсолютно същото, с изключение на това, че ще използва реле две за обръщане на напрежението вместо реле едно.

    void extend()//extend the actuator
    { longBeep(); Serial.println("EXTENDING..."); digitalWrite(relay2,HIGH);//makes sure relay2 is not active digitalWrite(relay1,LOW);//activates relay1 delay(extendTime); digitalWrite(relay1,HIGH);//deactivates relay1 Serial.println("DONE EXTENDING"); extended = true; //tells the arduino that the actuator is extended longBeep();
    } void retract()//extend the actuator
    { longBeep(); Serial.println("RETRACTING..."); digitalWrite(relay1,HIGH);//makes sure relay1 is not active digitalWrite(relay2,LOW);//activates relay2 delay(retractTime); digitalWrite(relay2,HIGH);//deactivates relay2 Serial.println("RETRACTING DONE"); extended = false; //tells the arduino that the actuator is retracted longBeep();
    }

    Финални щрихи

    След като сме направили всички връзки и сме качили кода си, би трябвало да имаме функционална система за управление на задвижващите механизми, защитена с парола. Ако имате проблеми при първоначалната настройка, опитайте да използвате инструмента за сериен монитор в Arduino IDE. Това може да бъде изключително полезно за определяне дали проблемите ви са причинени от код, окабеляване или дефектни компоненти.

    Този код може да бъде променен и освен промяната на паролата. Може да обмислите замяна на релейната платка с MegaMoto щит, за да имате контрол на скоростта, или използване на задвижващ механизъм с обратна връзка по ефекта на Хол за контрол на позицията.

    Надяваме се, че тази статия е била полезна! Ако имате въпроси относно това, или друг дистанционно управляван линеен задвижващ механизъм, или искате да споделите вашия проект с нас, не се колебайте да го направите. обадете ни се или ни пишете имейл.