5. Construirea unui comutator de putere inteligent XBee


În acest capitol, vom construi un comutator de putere inteligent comandat de la distanță. Acest comutator va fi o versiune do-it-yourself (DIY) a comutatoarelor de putere pe care le puteți găsi în multe magazine. Vom putea comuta un dispozitiv ON și OFF și vom măsura, de asemenea, consumul de curent al dispozitivului conectat. Deoarece interfața LINX din LabVIEW pentru Arduino suportă doar comunicarea pe bază-serială, pentru moment, vom folosi XBee pentru a comunica fără fir cu proiectul.

Vom conecta mai întâi componentele necesare la placa noastră Arduino: un modul releu, un senzor de curent și un XBee shield. Apoi, vom scrie un program LabVIEW pentru a controla modulul releului și pentru a măsura consumul de curent al dispozitivului conectat. În cele din urmă, vom vedea cum se activează comunicarea XBee între calculator și proiect.

Cerințe hardware și software

Să vedem mai întâi ce avem nevoie pentru acest proiect. Separat de placa obișnuită Arduino Uno, veți avea nevoie de module XBee, atât pentru Arduino, cât și pentru computer. Aici este placa Arduino cu un XBee shield montat pe ea, împreună cu un modul XBee:

Hardware and software requirements

Deoarece computerul nu vine cu XBee încorporat, veți avea nevoie și de un modul pe computer pentru a comunica cu proiectul Arduino prin XBee. Pentru a face acest lucru, folosim un modul USB XBee explorer de la SparkFun, împreună cu un modul XBee montat pe acesta:

Hardware and software requirements

Pentru a controla un dispozitiv electric de la distanță, veți avea nevoie, de asemenea, de un modul releu. Pentru acest modul, am folosit pur și simplu un modul releu de 5V de la Pololu:

Hardware and software requirements

Pentru senzorul de curent, am folosit o placă de la ITead Studios, bazată pe cipul ACS712. Desigur, puteți folosi orice placă bazată pe acest chip.

Pentru a conecta de fapt un dispozitiv electric (am folosit o lampă de birou de 30W pentru acest proiect) la proiect, veți avea nevoie de niște cabluri de alimentare. Veți avea nevoie de două: un ștecker de alimentare pe care îl veți utiliza pentru a conecta proiectul la rețeaua electrică și o priză de alimentare mamă pentru conectarea dispozitivului electric la proiect. De asemenea, veți avea nevoie de niște fire electrice pentru a realiza diferite conexiuni și unele terminale cu șurub pentru a conecta cablurile împreună. Iată cele două cabluri de alimentare pe care le-am folosit pentru acest proiect:

Hardware and software requirements

Rețineți că, deși puteți crea întregul proiect fără partea de putere, care se poate face mai târziu, principiile rămân exact aceleași.

Aceasta este lista tuturor componentelor de care aveți nevoie pentru acest proiect:

  • Arduino Uno (https://www.adafruit.com/products/50)

  • Modul Releu (http://www.pololu.com/product/2480 )

  • Senzor de curent ACS712 (http://imall.iteadstudio.com/im120710011.html)

  • XBee Arduino shield (https://www.sparkfun.com/products/12847)

  • Modul XBee x2 (https://www.sparkfun.com/products/11215)

  • Modul XBee explorer (https://www.sparkfun.com/products/11812)

  • Jumper wires (https://www.adafruit.com/products/1957)

  • Breadboard (https://www.adafruit.com/products/64)

Pe partea de software, va trebui să aveți instalat LabVIEW și pachetul LINX. Dacă nu ați făcut încă acest lucru, consultați Capitolul 2, Noțiuni de bază cu interfața LabVIEW pentru Arduino, pentru a urma pașii necesari.

Configurarea hardware

Să vedem acum cum se asamblează diferitele componente ale proiectului.

  1. Conectați modulul XBee pe XBee shield și apoi XBee shield pe placa Arduino. De asemenea, conectați sursa de alimentare a plăcii Arduino la placa de testare: conectați pinul 5V la șina de alimentare roșie de pe placa de testare și pinul GND al plăcii Arduino la șina de alimentare albastră.

  2. Apoi, vom avea grijă de modulul releu. Modulul releu are trei pini: VCC, GND și SIG. Mai întâi, conectați pinul VCC al releului la șina de alimentare roșie de pe placa de testare, pinul GND la șina de alimentare albastră și pinul SIG la pinul 7 Arduino.

  3. Pentru senzorul de curent, este destul de similar. Modulul senzorului de curent are și el trei pini: VCC, GND și OUT. Mai întâi, conectați pinul VCC al modulului senzorului de curent la șina roșie de alimentare a plăcii de testare, pinul GND la șina de alimentare albastră și pinul OUT la pinul analogic Arduino A0.

Acesta este aspectul proiectului fără cablul de alimentare:

Configuring the hardware

Sfat

Acum vom avea grijă de partea de putere a proiectului. Utilizarea directă a rețelei este periculoasă și trebuie să vă asigurați că aveți toate conexiunile electrice efectuate conform descrierii de mai jos, înainte de a conecta proiectul la rețea. Desigur, puteți sări peste această parte și reveniți la ea mai târziu. De asemenea, nu atingeți niciodată proiectul în timp ce acesta este în uz și conectat la rețea; deconectați întotdeauna priza de la priză înainte de a schimba ceva în proiect.

Aici sunt conexiunile electrice pe care trebuie să le faceți pentru această parte:

Configuring the hardware

Rețineți că, deoarece folosim tensiuni AC aici, nu trebuie să vă pese de polaritatea cablurilor. Am folosit o lampă de birou standard de 30W, dar puteți utiliza orice dispozitiv ales de dvs., atâta timp cât respectați valoarea maximă de curent/putere a modulului releu pe care îl alegeți. De asemenea, rețineți că senzorul de curent pe care îl folosim aici este evaluat la maxim 10A.

În final, asigurați-vă că ați conectat placa de explorare XBee la computer prin intermediul unui cablu USB.

Controlarea releului

Vom construi acum prima parte a programului nostru LabVIEW pentru a controla releul. Pur și simplu vrem doar un buton pornit/oprit pentru a controla releul de la distanță. Pentru moment, conectați placa dvs. Arduino direct la computer prin USB; vom folosi XBee mai târziu. De asemenea, asigurați-vă că întrerupătorul de pe XBee shield este setat la DLINE.

Ca de obicei, creați un nou VI gol, plasați o buclă While Loop și plasați un bloc Init din interfața LINX înainte de buclă și un bloc de capăt după While Loop. De asemenea, plasați o casetă error la sfârșit.

Controlling the relay

Apoi, plasați o funcție Digital Write lângă începutul buclei; vom folosi aceasta pentru a controla releul. De asemenea, legați pinii in/out de resurse LINX și error împreună.

Controlling the relay

După asta, vom crea intrările și ieșirile standard pentru a face programul să funcționeze. Începeți prin crearea unei intrări pentru portul serial pe blocul Init chiar înainte de buclă. Puteți crea această intrare făcând întotdeauna clic dreapta pe un spațiu gol al ferestrei și apoi mergând la Create | Control. Apoi, creați un control pentru intrarea pinului Arduino al blocului Digital Write și un control pentru intrarea acestui bloc (pentru a controla releul). În cele din urmă, nu uitați să conectați condiția finală (micul cerc roșu) al buclei While la firul error inferior din interiorul bucla.

Controlling the relay

Suntem gata să testăm acest program foarte simplu pentru a controla releul. Salvați programul și mergeți la Panoul frontal. Am organizat pur și simplu elementele ca de obicei: intrările pe partea stângă și comenzile și indicatorii pe partea dreaptă.

Controlling the relay

Setați corect Serial Port (ar trebui să apară în listă) și pinul releului corect (7) și sunteți gata să testați programul făcând clic pe săgeata mică din bara de instrumente. Rețineți că durează 1-2 secunde pentru ca placa să fie gata, lucru pe care îl puteți vedea atunci când ambele LED-uri seriale sunt activate pe placă. După aceasta, puteți folosi butonul verde. Ar trebui să auziți comutarea releului ON și OFF și să vedeți că dispozitivul conectat la proiect este pornit și oprit corespunzător.

Dacă nu funcționează în acest moment, există mai multe lucruri pe care le puteți verifica. Mai întâi, asigurați-vă că schița de interfață LINX este încă încărcată pe placa dvs. și repetați procedura de la Capitolul 2, Noțiuni de bază cu interfața LabVIEW pentru Arduino, dacă este necesar. De asemenea, asigurați-vă că releul este conectat corect la placa Arduino, așa cum am văzut în secțiunea anterioară.

Măsurarea curentului

Vom actualiza acum Programul LabVIEW prin introducerea tuturor funcțiilor necesare pentru măsurarea consumului de curent al proiectului. Vom păstra mai întâi lucrurile la un nivel de bază; vom citi doar datele de la intrarea analogică pe care este conectat senzorul de curent și tipărim aceste date în Panoul frontal.

Se începe prin introducerea unei funcții Analog Read (găsită și în caseta de funcții LINX) imediat după blocul Digital Write.

Measuring the current

După aceasta, trebuie să creați intrarea și ieșirea relevante pentru această funcție; trebuie să trimitem pinul ca intrare și să obținem citirea din placa Arduino ca ieșire. Ca de obicei, pentru a crea o intrare sau ieșire, faceți clic dreapta pe pin și utilizați meniul Create. De asemenea. dați nume relevante pentru intrare și ieșire pentru a ști ce corespund în Panoul frontal.

Measuring the current

Acum vă puteți întoarce la Panoul frontal și organizați elementele adăugând caseta Current Sensor Pin pe partea stângă și ieșirea Analog Read din partea dreaptă. Acum puteți testa programul făcând clic pe săgeata mică din bara de instrumente. Veți vedea că citirea pe care am adăugat-o afișează o valoare care se schimbă dacă releul este activat sau nu. Această valoare este direct ieșirea funcției Analog Read, deci este între 0 și 5 (deoarece Arduino funcționează între 0 și 5 volți):

Measuring the current

Dar, aceasta nu este foarte util încă. De exemplu, dacă curentul care trece prin releu este nul, vrem ca 0 să fie afișat în interiorul casetei. Pentru a face acest lucru, vom lua mai întâi o măsurătoare atunci când programul pornește și apoi scădem această valoare din citirea live furnizată de senzor.

Aceasta se face prin adăugarea unei alte casete Analog Read înaintea buclei While și apoi scăderea valorii de la această primă măsurare la măsurarea efectuată în interiorul buclei While.

Measuring the current

Acum puteți testa programul din nou. De data aceasta, valoarea citită de senzor trebuie să oscileze în jurul valorii de 0.

Measuring the current

Dar, acest lucru nu este încă perfect; avem pur și simplu o indicație despre curentul care trece prin comutatorul nostru, dar ceea ce ne-ar place să știm este cât de mult curent curge prin comutator. Prin urmare, vom calcula curentul efectiv care curge prin dispozitivul nostru, folosind o formulă dată de producător:

Curentul efectiv = măsurare analogică/185*1000000/1,414

Această formulă poate fi ușor de tradus în LabVIEW printr-un set de funcții matematice:

Measuring the current

În acest moment, puteți testa programul din nou. Dar, veți vedea că citirile fluctuează foarte mult. Acest lucru se datorează naturii analogice a senzorului pe care îl folosim pentru măsurarea curentului.

Prin urmare, trebuie să adăugăm o funcție suplimentară programului nostru; trebuie să efectuăm mai multe măsurători de la placa Arduino, să le mediem, apoi să folosim aceste valori pentru a calcula consumul de curent al dispozitivului. Acest lucru se poate face cu ușurință în LabVIEW folosind o combinație de două elemente: o buclă For Loop și a doua, funcția Mean.

Mai întâi, puneți funcția Analog Read în mijlocul programului din interiorul unei bucle For pe care o puteți găsi în același meniu cu While Loop. De asemenea, creați o constantă în fața micului N, pentru a indica câte iterații vrem să facem. Am folosit 100 în acest exemplu; aceasta oferă o bună mediere a citirilor provenite de la placă.

Apoi, căutați în meniul funcțiilor pentru Mean și căutați aceeași funcție Mean ca cea afișată în captura de ecran:

Measuring the current

Apoi, pur și simplu plasați această funcție după For Loop și conectați intrarea acestei funcții la ieșirea din For Loop și ieșirea funcției Mean (citirea mediată de la placa Arduino) către operatorul de scădere.

De asemenea, trebuie să faceți la fel pentru prima măsurătoare pe care o facem înainte de marea While Loop, așa cum se arată în următoarea imagine:

Measuring the current

Acum puteți testa proiectul din nou. De această dată, ar trebui să observați că am redus foarte mult fluctuațiile rezultate din citirea curentului. Dacă aceasta funcționează, felicitări! Tocmai ați construit un comutator electric inteligent pe care îl poți controla din LabVIEW!

Controlul proiectului prin XBee

În cele din urmă, vom vedea cum să folosim conectarea XBee la proiectul nostru pentru a-l controla de la distanță din LabVIEW. Din fericire, LINX face totul transparent pentru a controla proiectul prin XBee.

Sunt doar câteva lucruri pe care trebuie să le schimbăm. În primul rând, majoritatea dispozitivelor XBee pe care le puteți cumpăra sunt pregătite să funcționeze la o viteză serială de 9600 baud. Prin urmare, va trebui să schimbați aceasta în funcția Init din LINX (prima casetă pe care am pus-o în program, chiar înainte de While Loop). Faceți dublu clic pe această casetă, treceți la Diagrama bloc a acestui VI și apoi adăugați o constantă setată la 9600 în blocul INIT DEVICE pentru a suprascrie viteza serială implicită.

Controlling the project via XBee

Odată ce acest lucru este făcut, puteți merge înapoi la Panoul frontal al Main.vi. Aici trebuie să schimbați Serial Port pentru a utiliza placa XBee explorer, și nu portul serial de pe placa dvs. Arduino. Pur și simplu alegeți celălalt port serial și nu cel pe care l-ați folosit mai devreme.

Înainte de a putea funcționa, există un ultim pas pe care trebuie să-l realizați: setați comutatorul mic de pe XBee Arduino shield la UART, astfel încât shield-ul să poată trimite date direct pe portul serial al plăcii Arduino.

Acum puteți testa schița din nou. De această dată, veți vedea că LED-urile de pe placa de explorare XBee și de pe XBee shield clipesc; aceasta înseamnă că toată comunicarea se face acum prin XBee.

Controlling the project via XBee

Desigur, în acest moment, puteți să deconectați proiectul de la computer, instalați-l oriunde în casă, și pur și simplu alimentați-l folosind conectorul de alimentare DC de pe placa Arduino.