SISTEM DE DEPOZITARE AUTOMATIZAT ENUNȚUL TEMEI: Studiul si realizarea unui sistem de depozitare automatizat. CONȚINUTUL proiectului de… [303569]

[anonimizat]:

Studiul si realizarea unui sistem de depozitare automatizat.

CONȚINUTUL proiectului de diplomă/lucrării de disertație

Piese scrise

Piese desenate

Anexe

LOCUL DOCUMENTĂRII: Laborator Sisteme Digitale

CONDUCĂTOR ȘTIINȚIFIC: ………………………………………………

Data emiterii temei: 15.10.2019

Termen de predare: 08.07.2020

[anonimizat]: [anonimizat]: Deoarece acest proiect de diplomă/lucrare de disertație nu ar fi putut fi finalizat(ă) fără ajutorul membrilor departamentului MAȘINI ȘI ACȚIONĂRI ELECTRICE și a [anonimizat].

Data:07.07.2020 Semnătura

Declarație: [anonimizat]/[anonimizat], sub îndrumarea conducătorului științific și pe baza bibliografiei indicate de acesta.

Data:07.07.2020 Semnătura

STRUCTURA ORIENTATIVĂ A UNUI PROIECT DE DIPLOMĂ/LUCRARE DE DISERTAȚIE

Pagina de titlu

Foaia de capăt 3

Cuprins 5

Introducere 7

Motivația și importanța subiectului ales

Obiectivele cercetării

Analiza soluțiilor existente în literatura de specialitate consultată

Prezentarea strategiei de lucru

Prezentarea studiului teoretic (cu titlul adecvat)

Rezultate și interpretarea lor

Concluzii și autoevaluarea contribuțiilor originale

Anexe

Bibliografie

Capitolul 1. Introducere

Manipularea mărfurilor nu a fost întotdeauna ținta principală în concepțiile și strategiile de îmbunătațire al timpului în care ajunge un produs la un client. [anonimizat]. Depozitarea a [anonimizat]. Automatizarea acestui proces a luat viața la inceputul aniilor 1960. [anonimizat], [anonimizat] (societatea făcea doar transport și depozitare) sau când acuratețea era critică din cauza materialelor sensibile.

Sistemele AS/RS(din engleză ,, Automated Storage and Retrieval System”) au fost primele pe piața automatizării depozitelor. Acest sistem operează sub controlul unui calculator care ține evidența fiecărui produs depozitat. Manipularea este realizată prin specificarea tipului produsului dorit și cantitatea în care acesta trebuie livrat. Computerul determină locația acestuia și dă comanda unui SRM ( din engleză ,,storage and retrieval machine”) care prin intermediul unor mecanisme și/sau conveyoare marfa este manipulată și adusă la locul de expediere.[1]

Pentru gestiunea acestor depozite există o interfața. Aceasta interfața controlează tot sistemul și este ușor de folosit de către om. În general există un software care îndeplinește acest rol. Cel mai folosit este un WMS (Warehouse Management System) care acoperă și partea fizică (servere, dizpozitive de scanare sau imprimare). Această interfață are mai multe roluri precum:

[anonimizat] a codului, [anonimizat] alt tip de cod pentru procesarea produsului este stocart într-o bază de date.

Interfața asupra magaziei – Software-ul conferă o vizualizare eficientă a locației fiecărui produs în magazie direct din aplicație.

Comenzi – În interiorul softului se pot face comenzi în mod direct pe produs sau poate recepționa comenzi provenite din exterior ( un server web, aplicație mobilă , etc).

Livrarea – Softul dă comenzi sistemului pentru transportarea mărfurilor în conformitate cu regulile impuse.

Beneficile simțite în urma implementării acestui sistem automatizat au fost cu un impact major asupra reducerii masive de personal , reducerea spațiului de depozitare și o acuratețe mult mai mare asupra evidenței depozitului. Aceste avantaje masive definesc în mod implicit și importanța implementării acestui sistem. Un alt argument principal în favoarea optării pentru atuomatizarea depozitului este eliminarea erorilor umane.[2]

Datorita acestor beneficii tot mai multe întreprinderi încep să aleagă astfel de soluții tehnologice pentru a a nu fi lăsați în urmă de competiție. Într-adevar, implementarea unui astfel de sistem poate fii foarte costisitoare dar beneficiile își vor spune cuvântul pe termen lung și se vor dovedii a fii un instrument principal pentru dezvoltare si eficientizare.

După implementare clientul va observa din primele zile o crestere în capacitatea de stocare datorită rafturilor înalte și locului de transportare mic, se va observa și o creștere în calitatea administrării inventarului, acest lucru fiind procesat digital de către softul sitemului.

In funcție de cererea clientului beneficile pot fii personalizate și asta din cauz flexibilitații implementării acestui sistem. De exemplu dacă un client are nevoie de acuratețe sporită, de sortare, de rapiditate sau chiar de procesarea mărfurilor de greutate mare companiile care instalează sistemele pot fii foarte maleabile pentru necesitățile clientului.

În România primul depozit High-Bay a fost adus de către grupul Coca-Cola Hellenic, în 2009 , la fabrica de imbuteliere de la Ploiești . Acest sistem presupune preluarea paleților de la liniile de imbuteliere și transportarea acestora cu ajutorul benzilor transportoare. Pe de alta parte , Macromex a inaugurat , în 2014, la Campia Turzii Edenia Distribution Center cel mai mare depozit High-Bay de produse congelate din Europa. Sistemul lor constă în trei macarale automate care traversează tot depozitul în 30 de secunde și plasează produsele cu o precizie de 2mm. Pentru compania din industria fashion, Fashion Days implementarea depozitului automatizat a adus o creștere în capacitatea de procesare zilnică de 3 ori față de perioada dinainte să implementeze acest sistem dar a scăzut drastic și numărul angajaților și a a crescut viteza de procesare a comenzilor.

Tot în România , Farmexim, un importator și distribuitor important în industria farmaceutică a instalat un sistem semiautomatizat de depozitare compus din mai multe benzi transportoare și în plus acest sistem etichetează și sigilează automat cutiile destinate clienților.

Făcând un studiu de piață se poate observa un număr important de companii care prestează servicii de implementare a asftel de sisteme.

Kardex Remstar este o companie care aduce servicii de AR/RS pe plan internațional. Cu sediul în Elveția, Kardex se bucură de 1,650 de angajați în întreaga lume. Cu produse precum lifturi verticale, buffere verticale, carusele , sisteme orizontale și unități cu putere de ridicare sporită se poate lăuda ca fiind unul dintre liderii pe piață a acestui domeniu. Aceștia promit o creștere cu 99% în acuratețe, o creștere cu până la 400% a productivității și salvare de până la 90% a spațiului.

Un alt gigant din domeniul acesta este Jungheinrich AG , cu sediul în Hamburg, aceștia având aproximativ 16.000 de angajați din 39 țări. Pe lângă consiliere pentru procese aceștia oferă și utilaje adecvate scopului de depozitare. Pe lângă gama lor foarte variată de produse și servicii aceștia instalează și sisteme de depozitare automate pentru bunuri de dimensiuni mici. Sistemul de rafturi, software-ul, tehnica de transport conectată și dispozitivul de deservire a rafturilor sunt îmbinate într-un ansamblu perfect.

Jungheinrich WMS este softul lor de interfațare logistică și ei spun că e adaptabil, flexibil și se actualizează în permanență.[3]

O altă variantă pe piață este ULMA, cu o activitate mai mult în sfera de împachetare și ambalare. Această companie vine cu soluții de transport modern și complet automatizate.

Am fost captivat de această temă datorită complexitații și utilității acesteaia. Consider că este un domeniu cu perspectivă în viitor, un domeniu care va deveni o necessitate în cadrul pieței competitive și un domeniu în care se aplică multe cunostințe inginerești plecând de la proiectare, programare și ajungând chiar la montaj electric și mecanic, alegerea componentelor și chiar și analiza eficientizării costurilor.

Analizând riguros necesitățile și perspectiva către acest domeniu pot spune că se observa un viitor roditor în direcția implentării acestor tipuri de sisteme automatizate așa că in cadrul lucrării voi aborda diferitele tehnici și tehnologii folosite în construirea acestor sisteme și am să fac o analiză pe baza acestora.

Motivarea deciziei

Având în vedere specializarea, Instrumentație și Achizitii de Date, consider că tema aleasă e potrivită din diverse motive.

Unul din motivele principale a fost folosirea a cât mai multor practici și tehnologii învățate în acești ani de facultate. Atfel prin această lucrare am atins puncte precum folosirea microcontrollerului Arduino, punerea în funcțiune a motoarelor de curent continuu, citirea datelor de la senzori IR, programarea microcontrollerului, interfațare cu ajutorul LabVIEW, protocoale de comunicație și procesarea numerică a imaginilor ( citirea QR Code).

Un alt motiv principal este dorința personală de aprofundare în aceste detalii și să observ procesul de automatizare în mai multe sfere. Mă pasionează sfera automatizări și consider că e un domeniu de viitor și sunt încântat să-l descopar.

Analiza perosnală

După un șir de multe cercetări asupra domeniului am observat o tendință de șablonare a întregului proces în mai multe procedee mici, abordate diferit de la companie la companie.

După analiză am constatat urmatoarele procese standardizate:

Scanarea produsului : Deobicei produsul vine prestabilit cu un cod 2D pe cutia acestuia. Cele mai întâlnite coduri sunt QR Code, cod de bare sau chiar DMC( Data-Matrix Code). Scanarea se realizează cu ajutorul unei camere video care captează imaginea și cu un soft de procesare numerică a imaginilor se descifrează codul în text. Acest text contine codul de produs.

Stabilirea disponibilității in depozit : Cu ajutorul unui algoritm de numărare sau o bază de date se poate deduce câte locuri sunt disponibile pe rafturi. Acest lucru se poate verifica și cu ajutorul datelor primite de la senzori. O dată scanat produsul, este identificat și apoi se verifica numărul de locuri pe raftul prestabilit produsului respectiv, dacă este loc, se trece la procesul urmator, dacă nu, se afisează un mesaj de eroare. Deseori în cazul în care depozitul este plin se scoate automat un produs pentru a evita un blocaj.

Adăugarea produsului și locul acestuia în baza de date : Pentru evidența numărului de produse și disponibilitatea pe stoc, după procesul de scanare al produsului, acesta este introdus într-o bază de data, de cele mai multe ori de tip SQL. In cazul în care nu se dispune de o bază de date, aceste informații sunt luate strict de la senzorii puși pe fiecare poziție.

Comanda motoarelor pentru transportul produsului : Pentru controlul transportului produselor pe benzile transportoare este nevoie de motoare electrice. Se folosesc și motoare AC dar și DC. Comanda acestora vine de la controller, în general un PLC și este trecută prin relee sau convertoare pentru a adapta semnalul la intrările motoarelor.

Interfața software pentru utilizator : Este necesară vizualizarea și comanda sistemului pentru o bună utilizare a acestuia. Acest lucru este realizat prin transpunerea informaților pe un monitor. Acest lucru poate fii realizat cu ajutorul multor tehnologii software precum Phyton, Visual Basic, Processing , LabVIEW și multe altele. Utilizatorul acestui sistem trebuie cu ajutorul interfeței să poată vizualiza statusul sistemului și chiar să poată să dea comenzi acestuia.

Algoritmica software : După părerea mea, cea mai importantă și dificilă parte a unui sistem de acest tip. Necesită cunoștințe tehnice complexe, programare si eficiență. De cele mai multe ori această algoritmică este scrisă pe un PLC și programatorul trebuie să dezvolte un algoritm care să se potrivească perfect cu necesitățile sistemului.

Simple procedee puse cap la cap rezultă sistemul de automatizare, astfel am preferat să-mi pun amprenta în abordarea și alegerea acestor procedee.

Capitolul 2. Componente și tehnologii

2.1. Arduino

2.1.1. Introducere în Arduino

Figura 2.1 Placa de dezvoltare Arduino [4]

Arduino este un microcontroller “open-source” pe care se poate scrie, șterge sau rescrise instrucțiuni oricând, instant. Introdusă în 2005, platforma Arduino a fost destinată pasionaților, studenților și profesioniștilor ca o platformă ieftină pentru dezvoltarea anumitor dispozitive. Este capabil să funcționeze și ca un mini computer, la fel ca toate celelalte microcontrollere, achiziționând date de la input-uri și controlând output-urile pentru o varietate de produse electronice.

Este capabil de a trimite și a primi informații prin internet cu ajutorul unei varietăți de "shielduri". Arduino folosește pe partea de hardware plăcile de dezvoltare Arduino iar pentru implementarea codului, ca dezvoltator implicit și cea mai folosită metodă, Arduino IDE. Placa este construită cu microcontrollerul de 8 biți Atmel AVR, construite de Atmel sau chiar microcontrollerul pe 32 de biți Atmel ARM. Aceste microcontrollere pot fi programate cu ușurință folosind C sau C++ în cadrul Arduino IDE.

Spre deosebire de alte microcontrollere din India, Arduino a intrat pe piața electronicelor destul de recent fiind restricționate doar pe proiecte mici. Specialiștii încep gradual să accepte rolul și importanța plăcutei Arduino în diferite proiecte mai mari. Se pot încărca structuri de cod doar folosind un cablu USB conectat între Arduino și un computer. Mediul de dezvoltare Arduino IDE permite cu ușurința folosirea acestuia de orice persoană și dezvoltarea și implementarea de programe pentru Arduino scrise în C sau C++.

Având atât de multe opțiuni în alegerea unui tip de plăcuțe, trebuie făcută o analiză asupra nevoilor, necesităților și obiectivelor proiectului conceput. Fiecare tip de plăcuța vine cu un set special de specificații și capacități îndreptate spre anumite nevoi.[5]

2.1.2. Există nevoia de Arduino?

Care sunt mai exact beneficile acestei plăci? Ce o face diferită față de alte opțiuni? Prezint, în urmatoarele rânduri un număr de motive importante ca raspuns acestor întrebări.

1. Comunitate activă de utilizatori: Grupuri de persoane care folosesc același produs pentru proiecte similare au oportunitatea de a schimba sau cere păreri altor utilizatori în legătura cu problemele cu care aceștia se confruntă.

2. Creșterea prin Arduino: Din prisma faptului că Arduino este "open source" acesta creează oportunități cu un cost redus pentru entuziaști și chiar profesioniști să dezvolte aplicații și să construiască device-uri. Arduino este o unealtă perfectă pentru începători.

3. Hardware ieftin: Arduino, ca și compiler și mediu de lucru, vine gratis, doar componentele hardware necesită cumpărate și beneficiul major e că sunt foarte accesibile financiar.

4. Conectivitate ușoară: Pentru a pune în funcțiune o placă de dezvoltare Arduino tot ce trebuie făcut e fie conectată la o sursă , fie conectată cu USB la un calculator, acel cablu USB e folosit chiar și pentru încarcarea de cod pe procesor.

5. Mediu maleabil pe mai multe platforme: Arduino IDE poate rula pe un număr mare de platforme precum și cele mai utilizate: Microsoft, Linux și Mac OS X făcând astfel comunitatea de utilizatori Arduino și mai bogată.

2.1.3. Tipuri de plăci Arduino

Plăcile Arduino sunt disponibile cu multe tipuri de module incorporate implicit. Plăci precum Arduino BT care vine pre-instalată cu un modul Bluetooth, pentru comunicații wireless. Aceste module le putem găsii și separat și pot fi montate separat pe placa Arduino. Aceste module se numesc "Shield"-uri.

Câteva din cele mai folosite "Shield"-uri sunt :

Arduino Ethernet Shield: Permite conexiunea unei plăci Arduino la internet folosind librăria Ethernet.

Arduino Wireless Shield: Face disponibilă comunicarea wireless prin intermediul Zigbee.

Arduino Motor Driver Shield: Permite plăcii Arduino să gestioneze un driver pentru motoare, etc.

În următorul tabel sunt prezentate tipurile de plăci Arduino aferente fiecărui tip de microcontroller și a frecvenței de ceas :

Tabel 1.Tipuri de plăci de dezvoltare Arduino

2.1.4. Elementele plăcii de dezvoltare Arduino

Elementele constructive ale unei plăcuțe Arduino se pot împărții în două categorii:

Hardware

Software

2.1.4.1. Hardware

Placa de dezvoltare Arduino conține mai multe componente care împreună fac posibilă funcționarea acesteia. Aici sunt prezentate câteva componente principale :

Microcontroller: Acesta este inima plăcii de dezvoltare și funcționează ca un mini-computer . Citește și trimite informații sau comenzi către componentele periferice conectate la aceasta. Microcontrollerul folosit diferă de la placă la placă și poate veni chiar cu specificații proprii diferite.

Mufa USB: Această mufă este cea mai importanta mufă din placă. Este folositaă pentru a urca programe pe microcontroller folosind un cablu USB. Aceasta are și funcție de sursă de alimentare în cazul în care o sursă de alimentare exterioară este absentă.

Sursa exterioară de alimentare: Este posibilă conectarea unei surse exterioare de alimentare pentru placa de dezvoltare la o tensiune de 9-12V.

Buton de reset: Tot timpul prezent, butonul de reset este folosit pentru a reseta microcontrollerul.

Pini analogici: Pe orice placă găsim un numar diferit de la placă la placă de pini analogici care pot fi folosiți ca și intrări și/sau ieșiri. Sunt notați cu litera "A" înaintea unui număr corespunzător pinului.

Pini I/O digitali: Evident, la fel ca în cazul pinilor analogici, găsim un număr variat de la placa la placa de pini digitali, având rol de intrări și ieșiri digitale.

Pini de alimentare si masă (GND): Sunt pini aflați pe placa de dezvoltare care alimentează cu 3.3V sau 5V și pini de masă (GND).

Figura 2.2 Elementele plăcii de dezvoltare Arduino[6]

2.1.4.2. Software

Codul scris pentru Arduino este cunoscut ca schiță. Software-ul folosit în cele mai multe cazuri pentru a creea astfel de schițe pentru Arduino este cunoscut ca și Arduino IDE. Acest IDE conține urmatoarele părti:

Editor text: În aceasta porțiune se introduce codul folosind o versiune simplificată a limbajului de programare C++.

Zona de mesaj: Aici sunt afișate mesajele de eroare precum și informațile legate de salvarea sau exportul codului.

Bara de unelte: Această bara conține diferite butoane precum "Verify", "Upload", "New", "Open", "Save" si "Serial Monitor".

2.1.4.3. Alte caracteristici ale Arduino IDE

Fișierele unui proiect sau ale unei schițe sunt salvate cu extensia .ino

Sunt disponibile acțiuni precum decupare/copiere/lipire.

Cea mai mare parte a scheletului unui cod in Arduino va avea doua funcții.

2.1.5. Bazele programării in Arduino

Acum discutăm despre tehnicile de programare a unei schițe Arduino în Arduino IDE. Există două părți importante pe care orice schiță le va conține, acestea sunt:

void setup ()

void loop ()

2.1.5.1. void setup ()

Această funcție este prima care lucrează atunci când Arduino este pornit. Este executată doar o dată în toată funcționarea acestuia.

Această funcție conține inițializarea fiecărui pin pe care intenționăm să-l folosim în proiectul nostru pentru intrare sau ieșire. Aici avem un exemplu legat de cum ar trebuii să arate:

Figura 2.3 Inițialiarea pinilo în funcția setup()

Putem observa declararea funcției în primul rând apoi două rânduri de inițializări de pini cu funcția "pinMode()" care acceptă ca parametrii numărul pinului, în cazul nostru variabila "pin" și tipul acestuia, adică INPUT/OUTPUT.

În funcția setup() mai putem inițializa și Serial Monitorul. Acesta este folosit pentru a vizualiza informația care este transmisă prin comunicarea serială.

Figura2.4 Inițializarea comunicării seriale în funcția setup()

2.1.5.2. void loop()

Aceasta funcție este la fel de importantă ca și setup(). Aceasta conține părțile de cod care trebuie executate în mod continuu, spre deosebire de codul din funcția setup() care trebuie executat doar o dată.

Un exemplu pentru funcția loop() :

Figura 2.5 Exemplu pentru funcția loop()

Principalele funcții folosite în programarea codului din interiorul funcției loop() sunt funcțiile:

digitalWrite(): Această funcție este folosită pentru a controla dacă pe pinul digital dat se setează valoarea de 5V pinului sau 0V. Pinul dat trebuie să fie inițializat ca și OUTPUT. Funcția acceptă ca parametrii numărul pinului și valorile "HIGH" sau "LOW".

digitalRead(): Funcție folosită pentru citirea unei valori de tensiune primită pe pinul dat, pinul trebuie să fie inițializat ca și INPUT și va întoarce valoarea 0 în caz că nu există tensiune primită pe acel pin și valoarea 1 în cazul în care este. Acceptă ca parametru numărul pinului.

analogWrite(): Similară funcției digitalWrite(), această funcție poate să decidă , în mod analogic nivelul de tensiune care este trimis către pinul dat. Valoarea este cuprinsă între 0-254, 0 fiind 0V iar 254 5V.

analogRead(): Citește valoarea pinului anologic trimis prin parametru și retrunează o valoare între 0 și 254.

Dacă există nevoia de un delay în executarea programului de un interval specific de timp deseori se folosește funcția de dealy() care acceptă ca paremtrii milisecunde:

Figura 2.6 Funcția de delay()

În figura de mai sus avem un exemplu de un delay de 1000 milisecunde, adică o secundă.

Figura 2.7 Exemplu Blink

Aici avem cel mai de bază exemplu, în figura de mai sus, în care se aprinde și se stinge un LED la o secundă.

2.1.6. Aplicații

Aplicabilitatea plăcii Arduino se întinde pe o rază destul de mare. De la proiecte foarte mici precum luarea temperaturii, controlul unor LED-uri, citirea anumitor senzori și controlul motoarelor, proiecte bazate pe un set mic și simplu de instrucțiuni, la proiecte mult mai complexe precum brațe robotice, sisteme complexe de alarmă, sisteme de achiziții de date sau proiecte care neceistă algoritmi complexi și de amploare.

Arduino poate fi programat și de alte softuri precum LabVIEW, MATLAB care vin cu un plus de algoritmică și procesare video, aducând capacități în plus proiectelor și realizând o interfață între utilizator și produs.

2.1.7. Concluzii

In acest capitol am studiat principile de funcționare ale plăcii de dezvoltare Arduino , atât partea hardware cât și partea software. Am studiat construcția și tipurile de plăci și aplicațile în care aceasta poate fii folosită. Dezvoltarea de idei noi cu Arduino este fară un sfârșit

2.2. LabVIEW

2.2.1. Instrumentație virtuală

Un instrument este un dispozitiv proiectat să colecteze informații dintr-un mediu sau de la o unitate și să o facă disponibilă utilizatorului. In general sunt preluate date și măsurări fizice precum temperatura sau distanța și sunt convertite în semnale electrice.

Creșterea rapidă a tehnologilor computerelor din ultimii 20 de ani a dezvoltat o revoluție în intrumentarea pentru teste, măsurari și automatizări. Un aspect important rezultat din această revoluție este conceptul de instrumentație virtuală, un concept ce oferă multe beneficii inginerilor și oamenilor de știință care au nevoie de un grad înalt de productivitate, acuratețe și performanță.

Un instrument virtual constă într-un computer echipat cu o aplicație software foarte potentă și o parte de hardware eficientă din punct de vedere financiar, precum plăcile de tip "plug-in" care împreună pot moștenii funcțiile unui instrument tradițional. Instrumentele virtuale reprezintă trecerea de la tradiționalele instrumente concentrate pe hardware către sisteme concentrate pe software care exploatează capacitațiile unui computer. Cu ajutorul acestui concept, inginerii și oamenii de știinta au posibilitatea de a construii sisteme de măsurare și automatizare adaptade la nevoile acestora în loc să fie limitați doar la funcția fixă pe care o deține un instrument tradițional.

Amprenta software este cea mai importantă componentă în cadrul unui instrument virtual. Cu aplicația potrivită se pot dezvolta cu eficiență ridicată aplicații proprii și adaptate la nevoile dezvoltatorului precum și interfețe care se potrivesc cu scopul aplicației și cu nevoile persoanelor care urmează să interacționeze cu aceasta. Există posibilitatea ca o aplicație cu scop de instrument virtual să aibe integrate capacități de decizie, foarte des intalnite, precum să se adapteze la semnalele care se schimbă sau să automatizeze un proces.

Aplicațile dezvoltate cu ajutorul instrumentaților virtuale sunt foarte diverse, de la aplicații simple precum monitorizarea temperaturii la aplicații complexe precum măsurări și control în timp real al procselor mari.

2.2.2. Introducere în LabVIEW

National Instruments au inventat și dezvoltat uma din cea mai bună platformă software de instrumentație virtuală, anume LabVIEW ( Laboratory Virtual Instrumentation Engineering Workbench) . Acesta este unu mediu de programare grafică puternic folosit pentru achiziții de semnal, analize de măsurare și prezentare de date oferind o flexibilitate a unui limbaj de programare fără complexitatea tradițională a acestor unelte. Din 1986, când National Instruments a introdus LabVIEW pentru Macintosh a atras repede inginerii care căutau un limbaj de programare producitv și puternic pentru aplicații de control și test. Astazi, LabVIEW este preferat de mii de ingineri.[7]

Acest soft este integral un instrument virtual deoarece furnizează un mediu de programare ușor de folosit proiectat specific pentru nevoile stricte ale inginerilor. LabVIEW oferă un bagaj mare de opțiuni de conectare la o varietate de dispozitive hardware și chiar și alte software-uri. Programarea grafică este bine pusă în evidență cu ajutorul LabVIEW, ajutându-i pe ingineri să creeze instrumente virtuale proiectând interfețe grafice pentru utilizatori, oferindu-le urmatoarele caracteristici:

Controlul unui hardware specific

Vizualizarea rezultatelor

Analiza informației achiziționate

Operarea instrumentului

Inginerul poate personaliza panoul frontal punând butoane, switch-uri, taststaturi și grafice pentru a simula controlul unui instrument tradițional. Desigur poate și reprezenta controlul și starea unui proces.

Pentru a concepe un program și a gestiona comportamentul acestuia se prevede conectarea blockurilor în diagrama block , un proces mult mai rapid decat limbajele convenționale de programare, astfel inginerul câștigând timp și eficiență.

Programele construite in LabVIEW sunt numite instrumente virtuale chiar din cauză că seamana si funcționează ca un instrument fizic, precum osciloscopul. Putem folosi o varietate de unelte pentru achiziție, analiză, proiectare și stocare de informație. În principiu în construcția unui program avem două elemente constructive necesare tot timpul. Panoul frontal (Front panel) și diagrama block (Block diagram). Panoul frontal este construit din controale și indicatori, controalele fiind elemente prin care se poate transmite o comandă precum un buton iar indicatoarele sunt elemente care transpun informația primită în diferite forme, precum LED, grafice.

Panoul frontal și diagrama block, puse în general una lânga alta arată astfel:

Fig. 2.8 Panoul frontal și diagrama block LabVIEW

2.2.3. Panoul frontal

Atunci când un instrument virtual este deschis, un panou frontal gol și fără titlu este deschis. Panoul frontal este elementul prin care utilizatorul interacționează cu sistemul. În cadrul panoului frontal se poate atât trimite informație cât și primii și afișat.

Deasupra spațiului de lucru avem prezentată o bară cu o serie de comenzi precum rularea și oprirea programului, fontul elementelor text cât și setări legate de poziția elementelor din panou. O bară asemănătoare o găsim și în diagrama block

Fig. Bara de comenzi panoul frontal LabVIEW

Panoul frontal este construit dintr-o combinație de controale și indicatoare. Controalele simulează intrările instrumentului și furnizează informație și comenzi iar indicatoarele simulează ieșirile instrumentului și afișează informația care diagrama block o achiziționează sau generază.

Un obiect așezat pe panoul frontal poate fii ajustat în mărime, formă, poziție, culoare și alte atribute. Controalele și indicatoarele pot fi clasificate în felul urmator:

Controale și indicatori numerici

Controale și indicatori booleani

După cum le spune și numele, cele numerice au rolul de a prezenta și controla elementele ce conțin numere prin diferite metode. Cele booleane au ca scop mai mult prezentarea unei decizii, comenzi prin diverse modalități precum apăsarea butonului, aprinderea LED-ului, etc.

Fig. 2.9 Exemple de controale și indicatori numerici

Fig. 2.10 Exemple de controale și indicatori numerici

2.2.4. Diagrama block

Fereastra diagramei block deține sursa codului grafic din interiorul unui program LabVIEW, aceasta corespunde cu liniile de cod găsite într-un limbaj mai convențional precum C sau Java adică este chiar codul care se excută. O diagrama block se construiește cu ajutorul blockurilor de tip: terminale, noduri și fire.

Ca și la panoul frontal deasupra diagramei dispunem de o bară de unelte, puțin diferită totuși de bara de la panoul frontal, fiind adăugate și controale legate de rularea codului:

Fig. 2.11 Bara de unelte a diagramei block

După ce panoul frontal este construit, inginerul poate adăuga cod folosind reprezentațiile funcțiilor pentru a controla obiectele de pe panoul frontal. Aceste obiecte de pe panoul frontal apar în diagrama block drept terminale. Obiectele din diagrama block includ și sub-VI-uri, funcții, constante, și structuri.

Terminalele sunt ieșirile și intrările prin care se face schimbul de informație între panoul frontal și diagrama block. Pentru a face din nou analogia cu limbajele convenționale de programare acestea reprezintă parametrii și constantele funcțiilor. O dată adăugat un indicator sau control pe panoul frontal LabVIEW generează automat un terminal pe diagrama block corespunzător acelui element. Există posibilitatea de a alege ca un element să fie reprezentat printr-o iconiță, alegând opțiunea "View as Icon" pentru a reduce spațiul ocupat.

Pentru a putea face distincția vizual între indicatoare și controale, se aplică grosimi diferite la borduri, mai groase pentru controale și mai subțiri pentru indicatoare, este foarte importantă diferența dintre ele pentru că sunt și funcțional diferite, controalele au funcția de input iar indicatoarele de output.

Nodurile reprezintă operatorii, funcțiile, subrutinele și declarațile limbajului de programare. Ca exemplu IF, AND, XOR, =0? sau altele reprezintă un tip de noduri. O structură reprezintă alt tip de noduri. Structurile pot executa cod în mod repetat sau condiționat, asemănător cu buclele sau cazurile limbajelor standard de programare. LabVIEW mai deține și noduri mai speciale precum Formula care vine cu sprijin matematic în rezolvarea instrucțiunilor și expresilor matematice.

Firele au rol de legatură între terminale și noduri. Acestea transferă date de la o sursă la unul sau mai mulți destinatari. Fiecare fir are o culoare prestabilită în funcție de tipul de informație pe care îl transportă. Principiul de funcționare al firelor explică de ce controalele și indicatoarele nu se pot schimba între ele. Sursa este tot timpul un control și destinația este un indicator.

Pentru ca o conexiune să fie reușită sursa și destinașia trebuie să accepte același tip de informație. De exemplu o informație text nu poate fi reprezentată de un indicator numeric.

Fig. 2.12 Exemple de terminale, noduri și fire în diagrama block

2.2.5. Achiziții de imagine și procesarea acestora

În LabVIEW achiziția și procesarea imaginilor se face cu ajutorul NI-IMAQ. Acesta este un driver software compatibil cu LabVIEW, dar nu numai, se poate folosi și in cadrul Visual Basic, Measurements Studio și chiar Microsoft Visual C++.

NI-IMAQ oferă control perficelor de achiziție de imagine precum camere web. Driverul este un API complet și robust pentru achiziții de imagini și poate performa fără instrucțiuni complexe .

2.2.6. Aplicații

Datorită avantajelor intrumentației virtuale și perfomanței LabVIEW, acesta este folosit în foarte multe domenii și subdomenii ca aplicații de monitorizare, control, interfațare precum sisteme SCADA, sisteme de automatizare, sisteme de control și comanda:

Control al produciție industriale

Monitorizare și control al echipamentelor din producție

Monitorizare și control de la distanță

Testări și validări al echipamentelor/produselor

Aplicații personalizate pentru inspecții, teste, control.

2.2.7. Concluzii

In acest subcapitol am studiat conceptul de instrument virtual și software-ul LabVIEW. Am prezentat principiile de funcționare, structura și beneficiile acestuia. Bazat pe acestea, am cugetat că este o alegere potrivităfolosirea acestuia într-un sistem de depozitare automatizat.

În cadrul proiectelor în care nu este nevoie de inteligență artificială ci doar de executarea unor instrucțiuni și pentru a crea o interfață folositoare pentru utilizator consider că LabVIEW este mai mult decât potrivit. Ușor de folosit , maleabil pe mai multe platforme acest software poate simula aspecte fizice precum butoane sau întrerupătoare, fapt care dă o notă de realism și ajută utilizatorul pentru a ințelege mult mai bine funcționalitatea acestuia.

2.3. Senzor IR (Infra-roșu)

Termenul de "senzor" este folosit mai des în țările vestice ale globului, pentru partea noastră este folosit termenul de "traductor".

Mai exact, senzorul este elementul sensibil însusi, pe când traductorul este acel element sensibil plus părțile de circuit aferente. Senzorii și traductoarele sunt folosite cu scopul de a măsura mărimi electrice și neelectrice. În general un traductor stabilește o corespondență între mărimile fizice și un semnal electric.

Pentru proximitate, o alegere bună este senzorul cu Infra Roșu cu emițător și receptor. Principiul de funcționare al acestora este transmiterea unui semnal infra-roșu din emițător, această undă se lovește de obiectul din calea acestuia și se întoarce la receptor. În cazul în care nu există obiect în calea acestuia unda de lumina nu se întoarce, astfel știm că nu există obiect în fața acestuia.

De luat în vedere este faptul că acestea funcționează cu lumina infra-roșie, aceasta lumina fiind prezentă în razele soarelui,așa că nu este deloc recomandat să se folosească acest tip de senzori în exterior sau la directa traiectorie a razelor solare, acestea derutând traductorul.[8]

2.4. Mașini de curent continuu

Mașinilie electrice sunt convertoare electromagnetice care asigură transformarea energiei electrice în energie mecanică sau invers. În cazul în care aceasta transformă energia electrică în mecanică ne referim la o mașină electrică în regim de motor, atunci când se întâmplă invers este considerată o mașină electrică în regim de generator. Mai există un caz în care se transformă din energie electrică tot în energie electrică iar în acel caz mașina se numește transformator.

Fig. 2.13 Mașina electrică

2.5. Cod 2D

Un cod 2D ( bi-dimensional) este o matrice construită din celule albe și negre aranjate în forme pătratice sau chiar dreptunghice. Informația încapsulată poate include text sau numere. Posedă o citire rapidă și o capacitate de stocare a informației mai mare decât codurile de bare generice.

Fig. 2.14 "test123" generat în QR Code

Printre cele mai cunoscute tipuri de coduri 2D este codul QR ( Quick Response). Acesta fiind foarte folosit în domenii de marketing sau bilete electronice însă în producție s-au dovedit a fi mai potrivite codurile DataMatrix, datorită dimensiunilor mai mici și nivelul de eroare la citire mai mic.[9]

Față de tradiționalele coduri de bare uni-dimensionale care conțin un număr limitat de informație, codurile bi-dimensionale conțin mult mai multă informație, mai specific până la 2335 caractere alfanumerice. Această capacitate crescută aduce un plus de versatilitate codurilor 2D față de codurile de bare standard.

Fig. 2.15 QR Code vs. cod de bare

Capitolul 3. Rezultatele studilor experimentale

3.1. Concept general

În acest capitol voi prezenta tactica abordată precum și abordarea mea tehnică asupra acestor procese folosind aptitudini și tehnologii invățate în cadrul celor 4 ani de facultate.

Am preluat fiecare proces în parte, am explicat modul personal de impelemtare al acestora și rezultatele experimentale în urma implementării lor.

Tactica abordării acestor procese este exemplificată în urmatoarea schemă logică:

Fig. 3.1 Schema logică a sistemului

3.2. Abordare personală

3.2.1. Citirea datelor de la senzori

Pentru obținirea datelor de la senzori, alegerea exemplificării mele a fost o construcție cu senzori IR digitali cu transmițator și receptor și placa de dezvoltare Arduino din motive economice și al complexității mai reduse.

Pentru citirea unui singur senzor digital se conectează pinul de 5V și GND la aceași pini de pe placa Arduino iar pinul de semnal se conectează la un pin digital al plăcii în felul următor:

Fig. 3.2 Conectarea senzorului IR la Arduino

Acești senzori trebuie montați foarte aproape de obiectul pe care trebuie să-l depisteze, mai exact într-o rază de maxim 20cm în fața senzorului deoarece raza de funcționare a acestui senzor este de 20cm. Această rază se poate regla cu ajutorul șurubelului aflat pe plăcuța acestuia dar maximul este de 20cm. Tensiunea pe care o acceptă este de 5V maxim cu curent continuu, așa că trebuie mare atenție cu asta, altfel se va arde și nu o să mai funcționeze.

După ce circuitul a fost făcut și placa a fost conectată la un computer, pentru citirea unui singur senzor, întâi se declară pinul digital la care este conectat senzorul:

Fig.3.3 Declararea unui senzor

Apoi, pentru citirea propriu zisă trebuie sa îi insușim unei variabile citirea senzorului, ca în exemplul urmator:

Fig. 3.4 Citirea unui senzor

Desigur, într-o aplicație de mărimi mai mari, unde se citesc mult mai mulți senzori se construiesc funcții specifice care pot citii mai mulți senzori deodată și sunt apelate în interiorul algoritmul doar atunci când este nevoie.

Pentru o funcție care citește mai mulți senzori avem nevoie ca numărul pinilor să fie trimiși ca parametru și mai multe variabile sau un vector să însușească valorile citite, precum în funcția alăturată:

Fig. 3.5 Funcție pentru citirea mai multor senzori în același timp

3.2.2. Citirea QR Code-ului

După cum ziceam și mai sus, citirea codului se face prin diferite softuri, depinde de la companie la companie, astfel în acest proces, am ales să utilizez LabVIEW din două motive:

Complexitatea de realizare nu este foarte ridicată : Acest aspect este foarte important în decizia mea , consider că pentru mici procese care sunt foarte întâlnite în industrii o unealta software ar trebui să vină cu un grad de complexitate redus. Astfel se poate observa cu câteva blockuri și legături între ele se realizează foarte ușor acest proces.

Versatilitatea LabVIEW : National Instruments au dezvotat acest soft ca fiind unul foarte versatil, adaptabil și foarte capabil să realizeze multe mici instrucțiuni. Pe lângă citirea de QR code, pot să afisez date, pot să pun butoane și să controlez sistemul, totul din același software.

Astfel, am creeat un algoritm care primește acces la camera web, o transformă în alb-negru pentru eficiență și o trece printr-un block care face automat descifrarea și trimite mai departe stringul cu informația din cod. Se poate observa beneficiul softwareului LabVIEW prin ușurința prin care se creează un astfel de algoritm.

Mai jos sunt prezentate diagrama block și panoul frontal pentru acest proces:

Fig. 3.6 Diagarama block LabVIEW citire cod QR

Panoul frontal pentru acest proces este folosit mai mult pentru testare deoarece în interfața propriu-zisă a unei aplicații de automatizare de depozite nu se afișează toate detalile acestea, asftel, această diagramă block o să fie folosită ca un sub-vi . Camera si comanda fiind inputurile și mesajul descifrat fiind outputul.

Acest instrument virtual este folosit ca un sub-VI, fiind setate intrările și iesirile. Ca intrare trebuie dată camera și ca ieșire informația descifrată de tip string și un boolean care să confirme descifrarea codului.

Fig.3.7 Panoul frontal LabVIEW citire cod QR

3.2.3. Comunicare Arduino-Labview

Transferul de informație între partea de interfațare și cod se face în 3 cazuri:

Când un produs este scanat

Când există o comandă din LabVIEW către Arduino

În timp real de la Arduino la LabVIEW

Pentru a facilita această comunicare între cele două parți importante se utilizează comunicarea serială. Această comunicare se prezintă diferit la Arduino față de LabVIEW

Transferul de informație în timp real de la Arduino la LabVIEW este necesar pentru că transmite datele de la senzori constant și orice schimbare trebuie sesizată imediat, de aceea e cel mai important aspect al comunicării între cele două.

Perspectiva Arduino

Astfel, din cauză că este important acest aspect am abordat acest topic mai diferit. Știind că exista o posibilitate mare ca într-un sistem de genul să fie foarte mulți senzori și motoare și alte informații auxiliare, am decis că informația transmisă să fie împachetată într-un vector cu valori de 1 sau 0. Fiecare poziție fiind prestabilită cu o informație. De exemplu pozițiile de la 5 la 10 din acest vector să reprezinte 5 senzori , LabVIEW primește acest vector și pentru verificarea citirii senzorilor se citesc valorile din pozițile 5-10 ale vectorului, 1 însemnând că senzorul nu detectează nimic iar 0 că este un obiect în față.

Întâi trebuie să se declare un vector care să simbolizeze pachetul de date trimise, de exemplu pentru 10 elemente transmise, se va declara un vector astfel:

Fig. 3.8 Decararea vectorlui

După construirea pachetului se transmite informatia prin comunicare seriala, pentru ca acest lucru sa fie posibil, in functia de setup trebuie acessata comunicarea prin functia urmatoare:

Fig. 3.9 Initializarea comunicarii seriale

Functia aceasta deschide portul pentru comunicarea seriala si seteaza rata de transmisie a datelor, de cele mai multe ori la 9600 bps. O data deschis portul si avem acces la Serial Monitor, este usor sa trimitem si sa citim informatie. Pentru a timite in timp real informatie constant si sa putem si descifra acest pachet in cadrul LabVIEW se va trimite element cu element iar pentru a se face distinctia intre elemente si pachete se foloseste un element despartitor si un element ca si capat de linie.

Fig. 3.10 Transmiterea pachetului din Arduino IDE catre LabVIEW

Avand ca exemplu un pachet de 10 elemente cu o instructiune for trecem prin toate elementele pachetului, cu functia Serial.print(); trimitem elementul, exact dupa fiecare element se va trimite si un punct pentru delimitarea elementelor intre ele. Dupa ce toate elementele pachetului au fost afisate avem nevoie de un caracter special pentru a anunta terminarea pachetului, in cazul nostru "2". De specificat ca acest vector poate sa fie oricat de mare si sa transmita orice tip de informatie, chiar si siruri de caractere, aceasta abordare e strict subiectiva.

Pentru citirea datelor care sunt transmise de la LabVIEW inapoi catre Arduino, adica acele comenzi sau codul descifrat. In aceste cazuri, se poate creea un "cod" specific tocmai pentru a reduce dimensiunile informatiei transmise.

In Arduino IDE pentru citirea informatiei din comunicarea seriala se foloseste urmatoarea instructiune:

Fig. 3.11 Instructiune pentru citirea datelor primite prin serial

Prin intermediul functiei Serial.available() se verifica daca exista un raspuns, in cazul in care exista, atunci o variabila preia informatia primita si se poate prelucra in codul nostru Arduino si poate face parte din algoritmica.

Perspectiva LabVIEW

Pentru a accesa comunicarea seriala in cadrul LabVIEW se foloseste paleta "Serial", pentru a selecta paleta trebuie sa alegem din meniu "Data communication" >> "Protocols">> "Serial". Aceasta paleta are urmatoarele elemente:

Fig. Paleta Serial LabVIEW

In aceasta paleta cele mai folosite elemente sunt primle 4 adica blockul pentru configurarea conexiunii, blockul pentru scriere in comunicatia seriala , blockul pentru citirea din comunicatia seriala si blockul de inchidere a conexiunii.

Blockul VISA Configure Serial Port este folosit pentru configurarea portului pentru comunicarea seriala. In cazul nostru, avem setata pe Arduino rata de transmisie a datelor de 9600, astfel pentru a putea comunica trebuie setata la fel si in cadrul LabVIEW.

Acest block ne permite sa-i selectam parametrii pentru conexiune precum rata de transmisie, portul USB si chiar si daca avem nevoie de caractere de separare. In cazul nostru, dupa cum am explicat mai sus in perspectiva Arduino, avem ca si element de separare a pachetelor caracterul "2". Astfel, cunoscand aceste lucruri se face configurarea astfel:

Fig. 3.12 Configurarea portului serial in LabVIEW

Dupa ce s-a facut configurarea, putem accesa blockurile de citire sau scriere, toate acestea intr-o bucla, pentru a fii realizate in timp real.

Pentru blockul de citire, VISA Read se fac urmatoarele legaturi:

Fig. 3.13 Citirea seriala in LabVIEW

Ca intrari avem datele de la configurarea conexiunii plus numarul maxim de biti pe care-l asteapta, am setat un numar mai mare ca o marja de eroare. Ca iesiri, preda informatiile de conexiune mai departe si avem si stringul pe care-l citeste.

Pentru a scrie, mai exact pentru a trimite informatie inapoi catre Arduino, se foloseste urmatorul block:

Fig. 3.14 Scrierea seriala in LabVIEW

Mai exact, VISA Write, la fel ca si VISA Read, are ca parametrii datele de configuratie, si in plus, are ca intrare un control, un string in care se introduce textul care urmeaza sa fie transmis.

Pentru descifrarea pachetului primit, stringul primit este un table string, trebuie separat pe elemente cu ajutorul blockului Spreadsheet String to Array. Acest proces arata in felul urmator:

Fig. 3.15 Diagrama block pentru descifrarea pachetului

Ca si intrari pentru acest block sunt : stringul citit, tipul stringului, caracterul de separare al elementelor si tipul de vector pe care dorim sa-l avem la iesire. Dupa cum am specificat si se vede si in figura, caracterul de separare al elementelor este punctul ".".

Ca iesire avem vectorul de elemente care contine pozitia si valoarea. Pentru a prelua o valoare de pe o pozitie specifica cu ajutorul blockului Index Array la care ii se transmite ca intrari vectorul cu elementele pachetului si pozitia valorii pe care dorim sa o extragem. La iesire avem valoarea elementului si o putem afisa sau prelucra. Pentru o simpla afisare, daca transmitem un pachet cu doua elemente, de exemplu doi senzori cititi, pachetul ar contine x.x.2, x reprezentand valoarea citita de la senzori, 0 sau 1. Se poate afisa in felul urmator:

Fig 3.16. Panou frontal afisare elemente pachet

Astfel, pachetul poate sa fie cat de mare dorim, se poate extrage orice element specificand pozitia acestuia cu ajutorul blockului Index Array, dupa, aceste informatii pot fii transformate in alte tipuri de date precum boolean pentru a putea mai usor sa controlam anumite faze ale proceselor.

3.2.4. Strategia folosita in cadrul Arduino IDE

In cadrul sistemelor de genul acesta algoritmica difera gradual de la companie la companie, de la persoana la persoana, de la soft la soft. Eu am prezentat procesele iar modul de a le imbina se rezuma strict la abordarea si tactica personala, nu exista un sablon pentru acest capitol dar totusi sunt principii pe care se bazeaza.

Subprogramele, sau functile, sunt folosite in cadrul proiectelor mai mari. Toate procesele prezentate de mine sunt coagulate in functii si apelate atunci cand e nevoie de ele.

Pentru experimentul meu, am creeat functii pentru urmatoarele operatii:

citirea tuturor senzorilor si memorati in vector

citirea qr code

functii de pornire/oprire a conveyoarelor

functie de actionare a pusherelor

functii pentru determinarea locului predestinat in functie de codul QR

functie care verifica disponibilitatea pe linie

functie care muta produsul cu un loc mai in fata

operatiuni de comunicare seriala cu LabVIEW

3.2.5. Comanda catre motoare

Benzi transportoare

Pentru a putea face o exemplificare potrivita, voi prezenta cum se controleaza un motor de curent continuu cu ajutorul placii de dezvoltare Arduino.

Fig. 3.17 Motor de curent continuu

Intre Arduino si motor trebuie sa existe un driver pentru controlul semnalului care ajunge la motor. Un driver potrivit este L298N.

Fig. 3.18 Driver pentru motor cu curent continuu L298N

Driverul L298N contine doua punti H cu care se poate controla viteza si directia a doua motoare de curent continuu simultan. Acest modul poate controla motoare cu tensiune de la 5 pana la 25V si curent de maxim 2A.

Principalele avantaje ale acestui tip de driver in controlul unui motor de curent continuu sunt:

PWM : Posibilitatea de controla viteza cu ajutorul tehnicii PWM

Punte H : Controlul directiei cu ajutorul unei punti H

PWM ( Pulse Width Modulation) este o tehnica pentru a permita ajustarea valorii medii a tensiunii care merge la dispozitiv prin oprirea si pornrirea semnalului transmis la o rata anume. Valoarea medie depinde de "duty cycle" adica timpul in care exista semnal raportat la timpul in care nu este intr-o perioada.

Puntea H este un circuit simplu care permite controlul directiei unui motor de curent continuu. Un motor ruleaza in directii diferite in functie de cum sunt conectati pini de plus si minus. Dupa circuitul de mai jos, avem conectat motorul la o sursa si o masa doar ca intre acestea avem 4 tranzistoare cu functie de comutatie. Daca dorim ca plusul sa fie conectat la sursa si minusul la masa, actionam tranzistorii 1 si 4, astfel in caz contrar actionam tranzistorii 2 si 3.

Aceasta metoda este una foarte cunoscuta si folosita in cadrul acestui tip de control al motoarelor. Deseori este controlata de un microcontroller precum Arduino

Fig. 3.19 Puntea H [10]

Dupa cum se observa, acest driver vine cu o serie de pini pentru conectare, acesti pini sunt plasati in felul urmator:

Fig. 3.20 Modelul de pini al driverului L298N [11]

Pinii OUT1&OUT2 sunt pini de conectare la motorul A, iar pinii OUT3&OUT4 sunt pini de conectare la motorul B. Pinul VCC si GND sunt sursele de tensiune pentru motor si accepta tensiuni intre 3 si 35V. Pinii ENA si ENB sunt pinii folositi pentru controlul vitezei motoarelor iar pinii IN1&IN2 si IN3&IN4 sunt folositi pentru determinarea directiei motorului A, respectiv B.

Astfel, vom folosi o sursa exterioara de 12V pentru alimentarea motoarelor fiind nevoie de o putere putin mai mare :

Fig. 3.21 Sursa de alimentare pentru mtooare

Fig. 3.22 Conexiunea motoarelor cu ajutorul driverlui L298N

Dupa cum se poate observa, motoarele sunt conectate la OUT1&OUT2, respectiv OUT3&OUT4. Pentru controlul viteze am conectat ENA&ENB la un numar de pini analogici, la fel si pentru controlul directiei. Sursa de de 12V am conectat o la pinul VCC si GND, groundul fiind comun cu cel al Arduionului.

O data conexiunile facute, ramane sa stabilim partea de cod in ceea ce priveste pornirea si oprirea motoarelor. Avand in vedere ca nu este necesara schimbarea directiei de mers al motoarelor, noi simuland un conveyor pini de tip IN o sa ramana neschimbati.

Schema logica pentru pinii IN si EN e in felul urmator:

Tabel 2. Logica piniilor IN1, IN2 SI EN

Pentru ca pornirea si oprirea motoarelor sunt niste operatii care se foloseste de mai multe ori se creeaza o functie pentru pornire si o alta functie pentru oprire care accepta ca parametrii numarul pinilor de pe placa Arduino care sunt conectati la pinii de tip IN si EN de pe driver. Se stabileste directia, si se fac teste pentru a stabilii cat semnal se va da la motor pentru viteza dorita. Ca exemplu am ales sa ofer motorului cam jumatate din capacitate, astfel driverul creeaza un PWM cu un duty cycle de aproximativ 50%. Stiind de mai sus ca functia de scriere analogica din Arduino IDE percepe ca parametrii un numar intre 0 si125, am aproximat jumate cu 120 in felul urmator:

Fig. 3.23 Functie pentru pornirea motoarelor.

Pentru oprirea motorului ca parametrii avem nevoie doar de pinii de tip IN deoarcere daca niciunul nu primeste tensiune atunci motorul nu se misca. Astfel se creeaza o functie de genul:

Fig. 3.24 Functie pentru oprirea motoarelor.

Pentru a controla mai multe motoare, numarul pinilor la care sunt conectate trebuie declarati si apoi apelata functia cu acele variabile sau constante drept parametrii. Astfe, cu aceste conexiuni si cu aceste functii este foarte usor sa conrolam viteza a mai multor motoare conectate intr-un sistem automatizat de depozitare.

Sistem de pusher

Pentru ca avem nevoie si de manipularea produsul pentru impinginere de pe o banda pe alta folosim un sistem de pusher actionat de un servo motor care e controlat din Arduino

Fig. 3.25 Servo motor pentru sistemul de pusher

Pentru conectarea si controlul acestuia procedam astfel:

Fig. 3.26 Conexiunea servo-motorului la placa Arduino

Controlul servo motorului in cadrul Arduino se face cu ajutorul librariei Servo, astfel trebuie inclusa la inceputul programului:

Fig. 3.27 Includerea librarii Servo

Pentru ca Servo e o librarie care creeaza obiecte, trebuie sa cream un obiect in aplicatia noastra :

Fig. 3.28 Declarea obiectului myservo

Declararea pinului pe care este conectat Servo-motorul trebuie mentionata in functia de setup() a placii Arduino dupa cum urmeaza:

Fig. 3.29 Atasarea acestuia la pinii de la Arduino

Pentru ca este servomotor, comanda acestuia se face in grade de rotatie, astfel ca parametru se transmite unghiul dorit ca acesta sa se roteasca in medtoda "write" din obiectul servomotorului.

Fig. 3.30 Functia de comanda a servomotoarelor

3.2.6. Interfatarea folosind LabView

Utilizatorul are nevoie de o interfata pentru acest tip de sistem, o interfata grafica care sa i prezinte locurile din depozit si butoane pentru comanda. LabVIEW este un soft mai mult decat potrivit pentru acest tip de sarcina.

Dupa cum am prezentat deja, interfata reprezinta panoul frontal care poate fii usor personalizat cu controale si indicatoare si evident cu text. Exista framework-uri in acest scop, librarii care au deja personalizate controale si indicatoare pentru un aspect mai placut.

Eu personal am folosit JKI Design Pallete, o librarie gratis care vine cu un set de butoane , indicatoare cu un design placut.

Fig. 3.31 JKI Design Palette

Pentru aplicatia de genul acesta designul nu este prioritar asa ca ma rezum la proportii minimaliste. LED-uri pentru citirea senzorilor si butoane pentru comanda.

Fig. 3.32 Interfata minimalista aplicatie

3.3. Prezentarea rezultatelor

Pentru a prezenta rezultatele experimentate am construit in miniatura un sistem automatizat de depozitare. Acesta consta in cinci conveyouare, doua dintre ele reprezinta benzile de transport (intrare/iesire) iar celelalte trei sunt locurile disponibile din depozit.

In cadrul acestei constructii s-au folosit profile din aluminiu pentru schelet, mecanisme pentru motoare, obiecte marunte dezvoltate de o imprimanta 3D, musama pentru banda conveyourului. Toate impreuna cu componentele si tehnologiile pe care le-am enumerat in subcapitolul anterior au rezultat urmatorul produs:

Fig. 3.33 Sistemul automatizat de depozitare

Dupa cum se vede, am folosit cutii de carton imprimate cu un cod QR citit de o camera web si transportat de conveyoare si pushere.

Senzorii de proximitate au fost pusi deasupra, pentru a evita orice fel de blocaje,reglate astfel incat sa prinda doar produsul:

Fig. 3.34 Senzori IR plasai deasupra benzilor

Placa Arduino, sursa de 12V , driverele pentru motoare si un numar de butoane pentru control manual au fost plasate pe un plafon langa sistem:

Fig. 3.35 Placa Arduino si driverele in cadrul proiectului

Pentru motoare, pe langa drivere a fost nevoie si de un mecanism pentru a invartii rola din plastic a conveyourului.

Fig. 3.37 Motor cu mecanism

Capitolul 4. Concluzii

Concluzând, în această lucrare am studiat și am realizat un concept de automatizare în cadrul depozitelor. Astfel în capitolul întâi am făcut o introducere sumară a unui sistem de automatiza de depozitare, o scurtă istorie a acestora , beneficile acestui sistem, exemple din industria din România și am prezentat motivația personală asupra abordării acestei teme.

În al doilea capitol am făcut o prezentare a tehnologiilor și a componentelor pe care le folosesc în cadrul acestei lucrări, informații generale despre acestea și scurtă motivare a alegerii. Printre acestea se număra Arduino, LabVIEW, senzorii infra-roșu , QR Code cât și mașinile electrice.

Pentru cel de-al treilea capitol am venit cu o abordare mai tehnică și în amănunt asupra utilizării acelor tehnologii și componente în scopul construcției unui sistem de depozitare automatizat, prezentând astfel fiecare pas al proceselor. Procesele pe care le-am prezentat sunt : citirea datelor de la senzori, citirea codului QR, comunicarea dintre LabVIEW și Arduino, strategia folosită în cadrul Arduino, comanda către motoare și interfațarea folosind LabVIEW. După prezentarea proceselor am facut și o scurta prezentare a rezultatelor, conținând imagini cu construcția și modul de plasare al senzorilor, motoarelor, camerei cât și a benzilor.

Conform acestor rezultate se poate observa performanța și utilitatea soft-ului LabVIEW folosit pentru un astfel de sistem, se poate programa cu ușurinta, dispune de o interfață grafica plăcută și ușor de folosit și acceptă multe librării pentru diverse nevoi, precum citirea de cod QR și comunicarea cu alte dispozitive se poate realiza cu mare ușurință. Legat de Arduino, ca și micro-controller putem spune că își face treaba foarte bine pentru proiecte cu nivel de complexitate mic spre mediu. Pentru proiecte mai mari, există alte opțiuni precum PLC-uri pentru a gestiona algoritmica, citirea senzorilor și comanda către motoare. Arduino este limitat și din punct de vedere al numărului de intrări cât și pe parte de circuit.

Proiectul realizat de mine suportă imbunătățiri care se pot adăuga ulterior precum conectarea la o bază de date a companiei sau a unui website, se poate mării capacitatea și tehnica de manipulare a produselor folosind brațe robotice sau chiar mutarea aplicației pe o platformă online.

Bibliografie

[1] *** https://en.wikipedia.org/wiki/Automated_storage_and_retrieval_system preluat la data de 20.02.2020

[2] *** https://www.farmexim.ro/upload/Image/Pres%C4%83/Transporter%3A%20sistemele%20automatizate%2C%20cheia%20pentru%20%C3%AEmbun%C4%83t%C4%83%C5%A3irea%20performan%C5%A3elor%20supply%20chain-ului.pdf preluat la data de 22.02.2020

[3] *** https://www.jungheinrich.ro/sisteme-logistice/sisteme-de-depozitare-automate preluat la data de 21.02.2020

[4] *** https://www.distrelec.ro/ro/microcontroller-board-uno-arduino-a000066/p/11038919 preluat la data de 20.05.2020

[5] *** https://technobsafrajdiego.wordpress.com/arduino/ preluat la data de 22.05.2020

[6] Louis, Leo. (2018). WORKING PRINCIPLE OF ARDUINO AND USING IT AS A TOOL FOR STUDY AND RESEARCH.

[7] Cristian Foșalău, Introducere în instrumentația virtuală , Iași, Editura CERMI, 2010

[8] *** https://www.academia.edu/30646109/SENZORI_%C5%9EI_TRADUCTOARE_-_NOTE_DE_CURS preluat la data de 29.05.2020

[9] *** https://www.controldesign.com/assets/13WPpdf/130520-keyence-2d-code-implementation.pdf preluat la data de 19.04.2020

[10] *** https://www.build-electronic-circuits.com/h-bridge/ preluat la data de 10.04.2020

[11] *** https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/ preluat la 03.04.2020

Similar Posts