Morisca Electrica De Maruntit Grane Automatizata

by teodorspopescu in Circuits > Arduino

406 Views, 0 Favorites, 0 Comments

Morisca Electrica De Maruntit Grane Automatizata

FQF2O9TL3RBBN2G.jpg

Supplies

2GlDD8W.png
SvOTniS.png
yiAovE3.png
SQYvjnS.png
mD38WeR.png
dgcwiCG.png
TJa3prh.png
N63sQCq.png
9HVKjEu.png
ARDUINO_MEGA.png
  • moara electrică
  •  placă Arduino MEGA
  • servomotor
  •  variator de tensiune alternativă
  • motor stepper
  • driver motor stepper
  • modul senzor infraroșu
  • modul senzor curent
  • releu
  • senzori întrerupător limitatori
  • tranzistor
  • rezistori
  • condensatori
  •  sursă alimentare placă Arduino
  • sursă alimentare 12V pentru motor stepper

Motivatia

 Avem un țarc cu găini la țară și un teren pe la câmpie în arendă de la care primim anual o cantitate de grâne. Așadar nu avem de ce să cumpărăm mâncare concentrată pentru păsări.

În cazul puilor mici, grânele nu sunt adecvate, nu le pot înghiți. Așa că folosim o mică morișcă electrică pentru a le mărunți pentru pui.

Însă morișca este doar un motor cu niște ciocane de fier la un capăt care macină grânele, are nevoie de alimentare de la o cuvă, printr-o trapă, a cărei deschidere este ajustată de către om, pentru a nu bloca motorul cu prea multe grâne și pentru a nu-l lăsa să funcționeze în gol. Este o instalație elementară care nu poate fi despărțită de controlul utilizatorului uman. Iar la țară omul este actuatorul fără de care nimic nu poate funcționa. În momentul în care un actuator om este ocupat cu o sarcină atât de elementară precum mișcat un mâner care modifică deschiderea unei trape, toate celelalte sarcini rămânând nerezolvate, avem de a face cu o mare risipă de potențial. Randament uluitor de mic. Iar frustrarea că omul trebuie să fie ocupat cu astfel de sarcină simplă este cu atât mai mare.

De aceea am hotărât că un sistem de control automat al funcționării moriștii ar fi o îmbunătățire binevenită a calității muncii și automat a traiului.  

Obiectivele

 În primul rând minimizarea controlului din partea utilizatorului om. Apoi maximizarea randamentului instalației.

Control din partea utilizatorului om, desfășurat și analizat:

  • ținut instalația în loc ferit de intemperii, daune, uzură: în grajd, utilizatorul trebuie să se asigure de asta direct, un control automat pentru asta nu este necesar
  • manipularea, mutarea instalației acolo unde este nevoie de dânsa: utilizatorul trebuie să se asigure de asta direct, un control automat nu este necesar
  • alimentarea acesteia cu energie de funcționare: utilizatorul trebuie să se asigure de asta direct, un control automat nu este necesar
  • aprovizionarea instalației cu materia primă de prelucrare: utilizatorul trebuie să se asigure de asta direct, un control automat nu este necesar, întrucât nu avem de a face cu mari cantități ce trebuie manevrate pe o lunga perioadă de timp
  • asigurarea funcționării optime: aici se poate minimiza intervenția utilizatorului, acest punct este cel care ocupă cel mai mult timp al utilizatorului om și este singurul punct pentru care un control automat se justifică

Randamentul va fi determinat de țelul existenței moriștii electrice: să mărunțească grâne, cu cât mai repede și mai mult, cu atât mai bine. Asta implică și păstrarea instalației în cea mai bună stare posibilă, pentru a-și perpetua existența. Adăugăm la criteriul de randament și uzura minimă a instalației.

Pentru a putea detalia criteriile de randament, voi descrie elementul principal al instalației.

Este o morișcă electrică formată dintr-un motor electric monofazat la 220 VAC asincron cu rotor în scurtcircuit de 4 kW.

La un capăt al axului sunt montate ciocane de metal care, prin învârtire, sparg și mărunțesc grânele care cad printr-o deschizătură (trapă) dintr-o cuvă de sus. Grânele mărunțite cad prin gaura de evacuare de jos, într-un eventual sac.

Ciocanele sunt încapsulate într-un spațiu închis din care să scape cât mai puține grâne sau bucăți de grâne cu putință. Unele astfel de spații au și o gaură prin care se pot adăuga știuleți de porumb direct la ciocane, cum se vede în poza de mai sus.

Cu cât cad mai multe grâne în zona de măcinare, cu atât crește volumul de materie care trebuie prelucrată, cu atât crește efortul depus de motor pentru mărunțire și cu atât crește curentul consumat de motor. O sarcină prea mare de lucru produce căldură în exces, care poate până la urmă să ardă motorul și să transforme instalația într-o adunătură de metale inutile.

La capătul celălalt, fără ciocane de mărunțire, se află o altă încapsulare pentru o elice de răcire cu aer a motorului. Este rudimentară și mai bine cu decât fără, dar nu ne putem baza pe ea pentru menținerea motorului la o temperatură optimă. Așadar, debitul de grâne care intră în zona de mărunțire trebuie atent controlat. De regulă, utilizatorul om urmărește sunetul scos de motor când funcționează. Când sunetul începe să devină mai gros și mai „obosit”, atunci este semnul că s-au introdus prea multe grâne în zona de mărunțire. Imediat trebuie ca trapa de la cuva cu grâne să fie închisă complet și apoi trebuie așteptat ca motorul sa revină la sunetul mai înalt, care se poate observa atunci când funcționează și în gol. De asemenea trebuie sperat că nu se va arde nimic între timp la motor.

Putem acum să definim criteriile de randament:

  • debit cât mai mare de prelucrare: cu cât instalația produce mai mult material prelucrat pe secundă, cu atât mai bine; asta înseamnă o deschidere cât mai mare a trapei pentru grâne pentru cât mai mult timp; utilizatorul om vrea ca instalația să petreacă cea mai mică perioadă de timp în funcționare, deoarece este zgomotoasă și produce mult praf
  • păstrarea instalației în cea mai bună condiție posibilă: să se evite arderea și/sau uzura motorului, așadar să se evite cantități prea mari de grâne intrând în zona de mărunțire, adică să se evite deschiderea trapei pentru grâne prea mult și pentru prea mult timp

Aceste două criterii de randament sunt în completă opoziție. Nu avem decât să le echilibrăm.

Dar și acest echilibru se bazează pe un criteriu preferat: perpetuarea existenței moriștii. Utilizatorul om nu vrea să-și piardă uneltele de lucru. Acesta este echivalent cu criteriul 2 de randament. Ceea ce ne duce spre concluzie: criteriul dominant de randament este starea cât mai bună a instalației.

Scurta Descriere a Proiectului

 Punctul de control ce se vrea a fi automatizat: asigurarea funcționării optime.

Criteriile de randament sunt, dominant, păstrarea instalației în cea mai bună condiție și, secund, prelucrarea unei cantități cât mai mari de grâne pe secundă.

Ambele criterii depind în principal de deschiderea trapei pentru alimentarea cu grâne. Acestea pot sa depindă, secundar, de turația motorului. O turație mare înseamnă mai multă mărunțire de grâne. Inversul se aplică, o turație mică scade cantitatea de grâne mărunțite pe secundă.

Au fost două abordări în proiectarea controlului automat al funcționării moriștii.

Mai întâi am căutat să controlez tensiunea motorului, care controlează mai departe turația motorului, și deschiderea trapei doar analizând turația. A fost alegerea naturală, mimând felul în care utilizatorul om analizează funcționarea instalației și o controlează corespunzător. S-a dovedit a fi deficitară.

A doua abordare a fost să controlez tensiunea motorului și deschiderea trapei în funcție de sarcina cu care se confruntă motorul la fiecare moment de timp, adică analizând curentul consumat de motor. Această abordare s-a dovedit a fi cea bună.

Am pus un modul senzor cu infraroșu la palele elicei de la aerisirea motorului, cu care să măsor turația motorului.

Am pus apoi un modul senzor de curent în serie cu motorul moriștii.

Acestea sunt cele două variabile de ieșire (output).

Sunt două variabile de comandă (input) în această instalație.

Prima este tensiunea cu care se alimentează motorul moriștii, care direct controlează turația, variată cu ajutorul unui variator de tensiune VAC cu triac.

Acest variator de tensiune nu poate fi comandat digital, așadar am lipit de butonul său rotitor un cap de servomotor, care poate fi comandat digital.

A doua variabilă de comandă este deschiderea trapei, alcătuită dintr-o fâșie de metal găurită (să o numim și bara trapă), alunecătoare în paralel cu o gaură superioară peste care se așează grânele. Intersecția acestor zone gaură fac canalul de curgere a grânelor. Dacă fâșia de metal alunecă suficient de mult într-o direcție și nu mai există intersecția de zone gaură, se taie accesul grânelor la zona de mărunțire.

Această fâșie de metal este controlată de un motor stepper.

Cu un ax filetat prins pe lung de axul motorului stepper, trecând printr-o piuliță lungă fixată de bara trapă, motorul stepper controlează poziția barei trapă, în funcție de cât de mult se învârte și în funcție de sensul învârtirii. Aceasta bară trapă are și doi senzori întrerupător limitatori pentru anunțarea când s-a atins deschidere maximă sau închidere maximă.

Valorile de comandă (intrare sau input) pentru variatorul de tensiune și pentru deschiderea trapei sunt în procente de la 0% la 100%, adică de la minim tensiune și minim deschidere trapă (putem spune trapă complet închisă) la maxim tensiune și maxim deschidere trapă.

Valorile de ieșire (de analiză sau output) sunt în rotații pe minut pentru turație și în amperi pentru curent.

Toate aceste elemente se leagă la o placă de control Arduino MEGA.

Datele de intrare și cele de ieșire sunt adunate de placă și transmise serial calculatorului, în Matlab, unde sunt apoi prelucrate și analizate.

În urma analizelor, se construiesc regulatoarele și se implementează în placa Arduino.

Interfata Cu Utilizatorul

3.png
1.png
2.png

 Am folosit suita Matlab de construire de aplicații pentru a face aplicația de adunare și vizualizare a datelor de funcționare.

Întregul proiect este construit în sistemul de operare Linux Mint, de aceea se vor evidenția câteva elemente de afișaj sau cod software care depind strict de acest sistem de operare.

 Utilizatorul om controlează instalația prin intermediul aplicației Matlab de adunare de date, având control asupra turației și deschiderii trapei.

Totul se începe de la fila „Init”.

Înainte de pornirea măsurării de date, utilizatorul om care lucrează cu sistemul de operare Linux trebuie să se asigure ca /var/lock (sau /run/lock) poate fi accesat de utilizatori non-root de sistem de operare. Aceasta operațiune este valabilă cel puțin în anul 2022.

Utilizatorul om trebuie apoi să introducă (să scrie la tastatură) portul software prin care se efectuează conexiunea serială cu placa Arduino. Portul software se găsește utilizând butoanele „Afisare porturi” și „Afisare status”. Rata BAUD se alege în funcție de cea setată în placa Arduino. Eu am folosit 19200. Apoi se apasă pe „Creare seriala” pentru crearea punctului de conectare cu placa Arduino folosind portul selectat mai devreme. Apoi pe „Deschidere seriala” pentru deschiderea comunicației seriale.

Primul lucru ce trebuie apăsat mai departe este „Calibrare trapa”. Acest buton trimite un semnal plăcii Arduino să plimbe bara trapă de la poziția complet închis până la poziția complet deschis pentru a înregistra în plăcuță zona de manevră pe care bara trapă o poate utiliza. Se așteaptă ca instalația să-și ducă la capăt sarcina.

Apoi se poate trece la următoarea filă „Run” din program unde se poate porni înregistrarea datelor și experimenta cu comenzile.

După o adunare satisfăcătoare de date, se oprește măsurarea (butonul sugestiv) și se trece la următoarea filă din program.

În fila „Close” se poate da un nume corespunzător sesiunii de înregistrare de date, iar aceste date se salvează într-un fișier .mat pentru prelucrări ulterioare. 

Culegere, Afisare Si Procesare Date

 Culegerea de date se ocupă cu măsurarea turației și curentului consumat.

Turația se măsoară analizând de câte ori trece o bucată de material opac lipită de o pală de elice de răcire printre coarnele modulului senzor cu infraroșu, într-o perioadă de timp. Se folosesc întreruperi în plăcuța Arduino.

Curentul măsurat se calculează folosind modulul senzor de curent și procesând datele primare de la el.

Interconectivitatea Componentelor

schema partea 1.png
schema partea 2.png

Fluxul Controlului in Aplicatie

adunare date part1
adunare date part2

 Placa Arduino adună datele pentru turație și pentru curent de la modulul senzor infraroșu și de la modulul senzor de curent.

Aceste date sunt afișate la interval variabil, ales de utilizatorul om, în secțiunile pentru grafice din programul Matlab de cules date și sunt afișate în timp real în ecranele cu ac.

Turația și deschiderea trapei sunt comandate de două glisoare din fereastra aplicației. Valorile comenzii se aplică dacă și întrerupătoarele de funcționare pentru comandarea turației și trapei sunt pornite.

Exista un releu (în serie cu motorul) care poate tăia complet curentul electric la alimentarea motorului dacă comanda pentru turație este 0%.

În fereastra aplicației, jos, se află câteva câmpuri care afișează informații sub formă scrisă.

Structura Software

 În programul Matlab de adunare și afișare a datelor, putem sa delimităm funcționarea software în:

  • stabilirea punctului de conectare serială cu placa Arduino
  • conectarea cu placa Arduino
  • transmiterea de valori de comandă către placa Arduino
  • recepționarea de valori de comandă folosite și valori de ieșire măsurate la momentul respectiv de către placa Arduino
  • afișarea datelor în timp real și/sau la înterval stabilit de utilizator în aplicația Matlab
  • afișarea finală a tuturor datelor măsurate în respectiva sesiune odată ce sesiunea de adunare de date s-a încheiat
  • salvarea datelor măsurate

În placa Arduino, codul pentru adunat datele poate fi împărțit în următoarele puncte de funcționare:

  • adunarea numărului de impulsuri-întrerupere măsurate de modulul senzor infraroșu, calcularea timpului în care s-au măsurat și apoi calcularea turației
  • așezarea trapei în poziție inițială 0%, de închidere completă, față de care se va raporta apoi restul mișcărilor
  • recepționarea serială a datelor din Matlab
  • convertirea comenzilor din Matlab în comenzi corespunzătoare pentru servomotor și motor stepper
  • aplicarea comenzilor asupra actuatorilor
  • asigurarea că interferența venind de la motor, tremurul și zdruncinăturile fine, nu influențează aplicarea comenzilor și citirea datelor de ieșire
  • asigurarea că deschiderea trapei se află mereu între limitele de maxim și minim
  • transmiterea către Matlab a datelor culese


Construirea

construire part1.jpg
construire part2.jpg
construire part3.jpg
construire part4.jpg
construire part5.jpg
construire part6.jpg
construire part7.jpg
construire part8.jpg
construire part9.jpg
construire part10.jpg
construire part11.jpg
construire part12.jpg
construire part13.jpg
construire part14.jpg
construire part15.jpg
construire part16.jpg
construire part17.jpg
construire part18.jpg
construire part19.jpg
construire part20.jpg
construire part21.jpg

 În primul rând am construit un suport pe care morișca să stea așezată, încât sub ea să poată încăpea un sac sau o găleată de colectare a materiei procesate, iar înălțimea buzei cuvei să fie acceptabilă pentru alimentare cu materie primă.

Am montat modulul senzor infraroșu la capătul cu elice al motorului și l-am acoperit cu o carcasă de aluminiu care sa oprească din razele soarelui ce pot influența acuratețea măsurătorii. Restul elementelor au fost montate și fixate pe lângă motor, pe acel suport care seamănă cu o masă, decupată pentru gura de evacuare a grânelor mărunțite.

S-a montat un suport mai mic pe care sa fie fixat motorul stepper, încât să poată mișca ușor bara trapă.

Testele Efectuate

teste preliminare part1.jpg
teste preliminare part2.jpg
teste preliminare part3.jpg
teste preliminare part4.jpg
masuratoare in gol 1.png
masuratoare serioasa 1.png
masuratoare serioasa 2.png

 După câteva teste, am descoperit care este numărul de „pași” pentru o cursă completă a barei trapă, corespunzător configurației motorului stepper. Acești pași au fost salvați în codul Arduino.

Prima abordare.

Am considerat ca intrare: tensiunea dată motorului prin intermediul variatorului de tensiune și deschiderea trapei.

Ieșirea: turația motorului.

Identificarea de sistem cu ajutorul suitei de identificare de la Matlab a fost anevoioasă, iar modelele rezultate, majoritatea instabile, s-au dovedit prea departe de realitate.

Motorul este destul de puternic și poate suporta creșterea sarcinii până la un punct, timp în care nu se face simțită o variație în turație. Pentru a putea comanda instalația în funcție de turație, trebuie să apară o scădere în turație atunci când intră mai multe grâne în zona de măcinare. Însă asta este deja un semn că începe înecarea motorului și suprasolicitarea lui. O funcționare oscilând de la acceptabil la critic nu este bună.

A doua abordare.

Am considerat o a doua ieșire pentru sistem: curentul consumat.

Identificarea a fost mult mai ușoară, cuplând datele de intrare pentru motor cu ieșirea turație, iar datele de intrare pentru deschiderea trapei cu ieșirea curent consumat.

Analiza Rezultatelor Testelor

identificare motor.png
identificare trapa.png
identificarea part1.png
tf7_motor.png
tf8_trapa.png
tf9_motor.png

 Am descoperit că variatorul de tensiune nu dă sinusoidei de tensiune o comportare de scădere sau creștere în modul. Ci mai degrabă are o comportare de tip power width modulation, aplicată sinusoidei de tensiune. De aceea motorul, când merge în gol, la putere foarte mică, tot ajunge la turația maximă și doar o sarcină de grâne adăugată poate scoate în evidență puterea care i s-a dat la variatorul de tensiune.

 În imaginile în care se compară datele măsurate pentru identificare și comportarea modelelor identificate, se observă că la puteri mici date motorului, modelul motorului are o cu totul altă valoare de ieșire. Aceasta este valoarea așteptată în cazul în care variatorul de tensiune ar micșora sinusoida tensiunii în modul. Dar cum asta nu este cazul aici, putem totuși să considerăm rezultatul modelului drept cel corect, cu condiția ca în zona de mărunțire să existe o sarcină suficient de mare de grâne la momentul respectiv.

Același lucru poate fi zis și despre modelul trapei de alimentare cu grâne. Se poate observa cum unele valori de ieșire ale modelului identificat sunt mai mici pe alocuri decât datele măsurate pentru identificare. Aceste ieșiri ale modelului sunt, din nou, cele așteptate dacă puterea motorului ar fi aproape maximă sau maximă. Însă, urmărind graficele, în acele momente în care ieșirea modelului trapei este mai mică decât datele măsurate, puterea dată motorului este mică.

 Pentru a putea folosi suita de identificare din Matlab, a trebuit ca datele adunate, la intervale de timp neregulate, să fie mai întâi interpolate la un interval fix.

Prin putere dată motorului mă refer la tensiunea comandată. O tensiune mică dată prin variator face ca motorul să consume mai mult curent pentru a compensa efortul.

Toate aceste rezultate se datorează cuplării intrare tensiune cu ieșire turație și cuplării intrare deschidere trapă cu curentul consumat, aceste cuplări fiind folosite apoi în identificare. Am considerat ca doar aceste cuplări să fie folosite în identificare deoarece influența intrării tensiune asupra ieșirii curent consumat și influența intrării deschidere trapă asupra ieșirii turație sunt prea mici, comparativ cu celelalte două cuplări menționate mai devreme.

Modelele rezultate în urma identificării sunt:

  • pentru motor am considerat două, iar oricare din ele poate fi folosit, deoarece rezultatele sunt asemănătoare pentru nevoile instalației

tf7 = (4,644 s + 0,5899) / (s^2 + 0,2835 s + 0,009265) 

și

tf9 = (0,7678) / (s^2 + 0,2656 s + 0,01213)

  • pentru trapă

tf8 = (0,02936 s + 0,002025) / (s^2 + 1,026 s + 0,01757)

Atingerea Obiectivelor

regulator PI continuu.png
regulator PI discret.png
simulink motor tf7 regulator.png
simulink motor tf7.png
simulink motor tf9 regulator.png
simulink motor tf9.png
simulink trapa tf8 modificat la mana.png
simulink trapa tf8 regulator modificat la mana.png
simulink trapa tf8 regulator.png
simulink trapa tf8.png
scope motor tf7.png
scope motor tf9.png
scope trapa comparatie reg.png
scope trapa modificat la mana.png
scope trapa.png
verificare1.png
verificare2.png
verificare3.png
testare finala 1
testare finala 2
testare finala 3

 Funcționarea la o tensiune mai mică față de cea pentru care i s-a făcut proiectarea, 220 AC, supraîncălzește motorul și îl pune în pericol. De aceea este mai bine ca tensiunea de alimentare să fie întotdeauna cea maximă, 220VAC. Reglarea se poate face în continuare doar prin deschiderea trapei, mai ales ca acesta este și elementul de control dominant.


 Regulatorul hotărât este PI, cu forma discretizată

u[k] = u[k-1] + q0*epsi[k] + q1*epsi[k-1]

unde q0 = Kp * (1 + Te/Ti) și q1 = -Kp


Pentru modelul motorului tf7 s-a găsit regulatorul cu

Kp = 0,047696 și Ti = 4,770554

Pentru modelul motorului tf9 s-a găsit regulatorul cu

Kp = 0,003017 și Ti = 4,873990

Acest regulator a fost păstrat în Arduino, corespunzător modelului tf9.

Pentru modelul trapei tf8 s-a găsit regulatorul cu

Kp = 9,699843 și Ti = 26,303945

Care a fost apoi modificat manual, pentru a-l face mai vioi, la valorile

Kp = 9,699843 și Ti = 11,3039


Te se calculează după fiecare ciclu în Arduino, având în vedere că variază mereu.


Regulatoarele s-au construit în primul rând pentru robustețe și nu pentru viteză.

Obiectivele s-au atins cu succes. Utilizatorul om nu mai este necesar pentru funcționarea optimă a instalației.

Regulatorul a fost ales cu ajutorul programului PID Tuner din suita Simulink din Matlab, cu încă o modificare „la mână”, după analiza rezultatelor regulatorului.

Instalația reglează debitul de grâne automat, încât să țină sau să se apropie de curentul referință.

Am impus instalației ca dacă deschiderea trapei este aproape maximă și nu există o creștere a curentului consumat, adică dacă nu există o sarcină de lucru, iar curentul rămâne la valoarea pe care ar avea-o și în funcționare în gol, atunci instalația să se oprească și trapa să se închidă complet, timp de 3 minute, timp în care utilizatorul om poate reîncărca sau opri alimentarea cu curent electric la instalație.

 În cele trei verificări (validări) pentru regulatoare și modele se observă că ieșirea nu rămâne într-o bandă staționară.

Aste se întâmplă din cauza aglomerațiilor de grâne de la buza trapei. Datorita geometriei și dimensiunilor grânelor, se îmbulzesc multe și cad multe dintr-o dată la o deschidere și cu doar câțiva milimetri a trapei și apoi crește brusc curentul consumat.

Ce Imbunatatiri Si Extensii Pot Fi Aduse Instalatiei

 Un afișaj care arată curentul și turația, un panou de comandă cu butoane pentru control manual.