Բովանդակություն:

Անլար սերվոյի վերահսկում `6 քայլ
Անլար սերվոյի վերահսկում `6 քայլ

Video: Անլար սերվոյի վերահսկում `6 քայլ

Video: Անլար սերվոյի վերահսկում `6 քայլ
Video: #9 Ծրագրավորել ESP8266 Modbus TCP || FLProg || VTSCADA 2024, Հուլիսի
Anonim
Անլար սերվոյի վերահսկում
Անլար սերվոյի վերահսկում
Անլար սերվոյի վերահսկում
Անլար սերվոյի վերահսկում

Այս նախագիծը վերահսկում է սերվոյի անլար պտույտը պոտենցիոմետրի (կոճակի) միջոցով: Պտույտը սահմանափակված է 180 աստիճանով:

Քայլ 1: Բաղադրիչներ

Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ

Այս նախագիծը բաղկացած է

  • 2 Arduino UNO կառավարման վահանակ ՝ USB միակցիչի մալուխով
  • 2 nRF24L01-2.4GHz RF հաղորդիչ մոդուլներ (այս մոդուլների օգնության համար տե՛ս
  • 2 վարդակից ադապտերային տախտակներ (ուսապարկի չիպսեր) nRF24L01- ի համար
  • 1 ընտրովի Arduino համատեղելի 328 ProtoShield նախատիպի ընդլայնման տախտակ
  • 1 սերվո
  • 1 անալոգային պոտենցիոմետր
  • զոդման եւ զոդման
  • մետաղալար
  • ասեղ քթի տափակաբերան աքցան
  • մեկուսիչ փաթեթավորում, ես օգտագործեցի էլեկտրական ժապավեն

Քայլ 2: Սերվերի տախտակ

Սերվերային տախտակ
Սերվերային տախտակ

Սերվերի տախտակը բաղկացած է հաղորդիչ մոդուլից, վահանակի տախտակից (որը ուղղակիորեն միանում է Arduino տախտակին միայն մեկ ճանապարհով) և սերվոյից: Ես որոշեցի ներառել վահանի տախտակը `խուսափելու անշնորհք տախտակից և նախագծին և ընդհանուր առմամբ ավելի կոկիկ ավարտին հասցնելու համար:

Բաղադրիչների ցանկում ներառված կոդը և վեբ ռեսուրսը մանրամասն ներկայացնում են հաղորդիչ մոդուլի միացումները: Ես որոշեցի միացնել կապերը ժամանակավոր կապերի փոխարեն, ինչպես նախորդ նախագծերում: Քանի որ ես սկսնակ եմ, մեկուսացման յուրաքանչյուր միացում մեկուսացրել եմ էլեկտրական ժապավենով (դրանք գեղեցիկ չէին):

Վահանի տախտակի կապումներն ուղղակիորեն համապատասխանում են Arduino- ի կապումներին: Մինչև վահանի տախտակը ամրացնելը, ես գետնին և 5 վոլտ կապումներն մետաղալարով և զոդով միացրեցի տախտակի ռելսերին: Ես նաև միացրեցի բաղադրիչների 5 վոլտ և գրունտի լարերը վահանի տախտակի ռելսերին, այնուհետև վերջապես ամրացրեցի Arduino- ն վահանի տախտակին:

Սերվոն ամրացված է 3 վոլտ պինին հզորության, իսկ թվային կապ 2 կապի համար:

** Նշում. Միայն կառուցումն ավարտելուց հետո ես նկատեցի, որ իմ Arduino տախտակները նույնական չեն: Իմ սերվերային հաղորդիչը սնուցվում է վահանի տախտակի 5 վոլտ ռելսով, իսկ հաճախորդի հաղորդիչն աշխատում է 3 վոլտ պինով, չնայած ինձ համոզել են, որ հաղորդիչի վրա ադապտերային չիպի գործառույթը համապատասխան լարման ապահովումն է: Վստահ կարող եմ ասել միայն, որ տրամադրված ծածկագիրը, որը համընկնում է պատկերներում ցուցադրվող կազմաձևի հետ, տալիս է նկարագրված էֆեկտը:

Քայլ 3: Սերվերի կոդավորիչ. Պատճենեք և տեղադրեք

// ERԱՌԱՅԻՆ ԿՈԴ/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Չօգտագործված GND> GND VCC> 5V */// հաղորդիչ էլեկտրահաղորդիչ

#ներառում

// servo գրադարան

#ներառում

// հաղորդիչ գրադարան

#սահմանի Սերվոպին 2

// հայտարարագրման servo ելքային քորոց

ServoTimer2 ծառայություն;

// սերվոյի անվան հայտարարում

RH_NRF24 nrf24;

// հաղորդիչի անվան հայտարարում

int timeOUT = 0;

// փոփոխական servo- ի համար

int իմպուլսներ = 90;

// փոփոխական ՝ իմպուլսները պահելու համար

դատարկ կարգավորում ()

{serv.attach (Servopin); // servo իրեր

Serial.begin (9600); // հաղորդիչ նյութեր

եթե (! nrf24.init ())

Serial.println ("init ձախողվեց"); // սերիական մոնիտորի իրեր, եթե (! nrf24.setChannel (12)) // ալիքը սահմանել 125 Serial.println ("setChannel failed"); եթե (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ձախողվեց"); // սերիական մոնիտորի իրեր}

դատարկ շրջան ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // սերիայի մոնիտորի իրեր {Serial.print ("got request:"); իմպուլսներ = strtol ((const char*) buf, NULL, 10); // տվյալների տեսակը փոխելու նյութեր

int prin = քարտեզ (իմպուլսներ, 750, 2250, 0, 180); // տվյալների տիպի փոփոխման նյութեր

Serial.println (prin); serv.write (իմպուլսներ); // կատարում է սերվոյի տեղաշարժը}}

}

Քայլ 4: Հաճախորդների խորհուրդ

Հաճախորդների խորհուրդ
Հաճախորդների խորհուրդ

Հաճախորդի տախտակը բաղկացած է հաղորդիչ մոդուլից և պոտենցիոմետրից: Հաղորդիչ մոդուլը միացված է նույն կերպ **, ինչպես սերվերային տախտակը, բացառությամբ, որ առանց վահանի տախտակի, այն ուղղակիորեն միացված է Arduino տախտակի կապում:

Պոտենցիոմետրը վերցնում է 5 վ, գետնին և միացված է անալոգային 2 -ին:

** Նշում. Ինչպես նշվեց սերվերային տախտակի քայլում, իմ Arduino տախտակները նույնական չեն: Այս դեպքում հաղորդիչը միացված է 3.3V պիտակով տեղադրված քորոցին ՝ անմիջապես 5V պինին կից, բայց կրկին, կարծես, ամեն ինչ լավ է աշխատում:

Քայլ 5: Հաճախորդի ծածկագիր. Պատճենեք և տեղադրեք

// ՀԱIԱԽՈՐԴԻ ԿՈԴ/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Չօգտագործված GND> GND VCC> 5V */// հաղորդիչ հաղորդալարեր

#ներառում

// հաղորդիչ գրադարան

int potpin = A2; // պոտենցիոմետրի շեղում

int val;

char tempChar [5];

Լարային valString = ""; // տվյալների տիպի փոփոխման նյութեր

RH_NRF24 nrf24; // հաղորդիչ նյութեր

դատարկ կարգավորում ()

{Serial.begin (9600); եթե (! nrf24.init ()) Serial.println ("init ձախողվեց"); // Ինտից հետո կանխադրված են 2.402 ԳՀց (ալիք 2), 2 Մբիթ/ վ, 0 դԲմ եթե (! Nrf24.setChannel (12)) Serial.println ("setChannel ձախողվեց"); եթե (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ձախողվեց"); } // հաղորդիչ նյութեր

դատարկ շրջան () {

val = analogRead (potpin); // պոտենցիոմետր իրեր

val = քարտեզ (val, 0, 1023, 750, 2250);

valString = val; Լարային փող = (valString); str.toCharArray (tempChar, 5); // տվյալների տիպի փոփոխման նյութեր nrf24.send (tempChar, sizeof (tempChar));

}

Քայլ 6: Նշում կոդի մասին

Օրենսգիրքը պարունակում է անսարքությունների վերացման որոշ սահմանափակ գործառույթ ՝ Arduino ծրագրաշարի միջերեսում սերիական մոնիտորի հետադարձ կապի տեսքով: Սերիալային մոնիտորը SERVER ծածկագրից (ctrl + shift + M) դիտելիս պետք է կարողանաք տեսնել պոտենցիոմետրի վիճակը 1 -ից 180 -ի միջև ընկած թվի տեսքով:

Բացի այդ, ահա անլար և սերվոյի գրադարանը.

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Խորհուրդ ենք տալիս: