Vizitator AndreiAndrei Postat Aprilie 25, 2016 Partajează Postat Aprilie 25, 2016 (editat) Sunt incepator in domeniu. Vreau sa simulez un banc care sa-mi arate dezechilibru unui rotor cu ajutorul Arduino. Intentionezi sa fac asta cu 2 senzori: un accelerometru piezoelectric, care sa-mi arate cat de mare este dezechilibru (probabil amplituda) si un sensor de turatie , cred ca magnetic (sau optic daca este posibil) In functie de aceste valori vreau sa generez un graphic (pe PC su pe un display) care imi arata in ce turatie ce dezechilibru am. Daca nu se poate face cu arduino accept orice alt controller, dar sa pot intelege si eu cum se intampla lucrurile astea. sunt dispus sa platesc pentru proiectul respectiv 200 E. 0722628845 Multumesc Editat Aprilie 25, 2016 de AndreiAndrei Link spre comentariu
mars01 Postat Aprilie 27, 2016 Partajează Postat Aprilie 27, 2016 (editat) Andrei de ce nu incerci sa iti faci proiectul singur? Primul post si in care ceri realizarea unui proiect. Banuiesc ca este vorba de un proiect la facultate. De vreme ce ai intrat la o facultate de acest gen, poate ca ai putea sa si inveti cate ceva ... Proiectele de acest gen sunt cele care te ajuta sa intelegi ce ai invatat (teoretic) si mai apoi, dupa ce termini facultatea, sa ai un job in care sa fii bine remunerat. Ca sa nu spun ca nu este corect sa foloseti banii parintilor pentru ca nu vrei sa muncesti putin. Nu este atat de greu daca vei aloca putin timp. Si da, poti folosi Arduino pentru a achizitiona datele de la 2 senzori si sa le trimiti catre PC cu ajutorul unui convertor USB la serial. De citit: http://www.maintenancetechnology.com/2008/03/measuring-displacement-using-accelerometers/ http://elimelecsarduinoprojects.blogspot.ro/2013/06/measure-rpms-arduino.html http://www.egr.msu.edu/classes/ece480/capstone/spring11/group03/Application%20Note.pdf http://www.instructables.com/id/Arduino-Based-Optical-Tachometer/ Un exemplu cum plotezi datele pe PC: https://www.arduino.cc/en/Tutorial/Graph Gasesti pe Internet tot ce vrei, doar sa cauti ... Editat Aprilie 27, 2016 de mars01 Link spre comentariu
Vizitator AndreiAndrei Postat Aprilie 27, 2016 Partajează Postat Aprilie 27, 2016 Multumesc mult pentru incurajare!!! M-am si apucat de treaba. Link spre comentariu
Liviu M Postat Aprilie 27, 2016 Partajează Postat Aprilie 27, 2016 Poti, bineinteles, pune intrebari punctuale despre lucrurile care nu-ti merg cum trebuie. O sa descoperi ca la "gasit gandaci" in proiecte suntem mai saritori decat la facut proiecte "de-a gata". E suficient sa-ti demonstrezi implicarea. PS Daca postul anterior a fost o "ironie fina", ignora postul asta. Link spre comentariu
lutza2 Postat Aprilie 27, 2016 Partajează Postat Aprilie 27, 2016 Eu am luat in serios postul tau, dar imi prin urechile in processing. Am un singur senzor analogic care trimite pe serial. Obtin un grafic, dar nu stiu cum sa fac sa-l salvez intr-un fisier. Asta ar fi problema, salvarea graficului pentru o consultare, prelucrare ulterioara. Link spre comentariu
Liviu M Postat Aprilie 27, 2016 Partajează Postat Aprilie 27, 2016 Eu as zice sa-ti faci topicul propriu si sa fii putin mai explicit. Momentan eu am inteles ca arduino + senzorul functioneaza ok si trimit datele la pc, ce-ti lipseste fiind un program in calculator care sa salveze datele primite pentru prelucrari ulterioare. Daca e asa, nu e nici sectiunea potrivita. Link spre comentariu
mars01 Postat Aprilie 27, 2016 Partajează Postat Aprilie 27, 2016 Datele se pot salva in Processing destul de usor intr-un fisier: https://processing.org/discourse/beta/num_1257284091.html https://processing.org/examples/savefile1.html https://processing.org/examples/savefile2.html Link spre comentariu
mars01 Postat Aprilie 28, 2016 Partajează Postat Aprilie 28, 2016 (editat) Un link pentru o librarie Processing, cu ajutorul careia vei putea afisa datele primite de la Arduino, intr-un grafic. http://www.gicentre.net/utils/chart Practic tot ce ai de facut in Processing este sa salvezi datele primite (nivel vibratii motor, RPM motor) in cate un vector. Cei doi vectori ii vei plota cu functiile oferite de librarie, afisand de exemplu datele de vibratie pe axa Y si turatia pe axa X. Datele le salvezi pe masura ce vin intr-un fisier folosind solutiile de mai sus. Un grafic aiurea, modificand exemplul oferit. Editat Aprilie 28, 2016 de mars01 Link spre comentariu
Vizitator AndreiAndrei Postat Aprilie 28, 2016 Partajează Postat Aprilie 28, 2016 Am inceput studiul cu graficul celor 2 senzori si m-am proptit in viteza de citire a datelor cu arduino. Ca sa fiu mai inteles voi povesti cum trebuie sa functioneze bancul respectiv: se pune rotorul pe banc si se tureaza cu presiune mare de aer (9 bari.) testul dureaza in medie 1-3 secunde, in timpul asta rotorul ajunde la 240 000 turatii pe minut, adica 3000 turatii pe secunda. cand s-a terminat testul pe ecran trebuie sa apara graficul (x,y) cu ce dezechilibru (pe axa y) si in ce turatie (pe axa x) il are rotorul respectiv. La fel trebuie sa apara si unghiul de dezechilibru. Eu inteleg ca trebuie sa procedez in felul urmator: trebuie sa pot citi 3000 de turatii pe secunda plus sa gasesc si unghiul unde dezechilibru este maxim. O turatie are 360 grade, adica trebuie sa citesc fiecare grad al fiecarei turatii. De aici inteleg asa 3000(turatii pe secunda) x 360 (grade a fiecarei turatii) =1080000 de masuratori pe secunda. am gasit la arduino functia micros(cred ca e vorba de microsecunde) am incarcat pe un aduino uno urmatorul skech: unsigned long time;void setup(){ Serial.begin(9600);}void loop(){ Serial.print("Time: "); time = micros(); //prints time since program started Serial.println(time); si am primit in serial monitor urmatoarele rezultate (afisez o parte din ele) Time: 103044Time: 117604Time: 132164Time: 146724Time: 161284Time: 175844Time: 190404Time: 204964 de aici vad ca arduino face masuratorile aproximativ la 14560 microsecunde sau 14.56 milisecunde sau 0.01456 secunde , adica aproximativ de 68 de ori pe secunda, iar mie imi trebuie 1080000 de masuratori pe secunda . Aici m-am si blocat putin. Cine vede ca sunt pe un drum gresit va rog sa ma corecteze si sa ma invete cum se face. Multumesc tuturor !!! Link spre comentariu
Liviu M Postat Aprilie 28, 2016 Partajează Postat Aprilie 28, 2016 Comunicatia seriala (mai ales ca ai configurat-o la 9600 bauzi) e lenta, nu te baza pe ea pentru "benchmark". Din pacate tema nu pare prea usoara. Cel putin nu pentru mine. Ceva detalii (foi de catalog) pentru senzori ai? Link spre comentariu
mars01 Postat Aprilie 28, 2016 Partajează Postat Aprilie 28, 2016 (editat) Problema ta nu sta in comunicatia datelor catre PC. Pur si simplu salvezi datele intr-un buffer intr-o memorie RAM (poate fi si externa, SPI) si la final (dupa cele 3 secunde de achizitie de date) , cand ai toate datele necesare, le trimiti catre PC cu numai conteaza ce viteza. Important este ca datele vor ajunge la PC si pe urma se ploteaza graficul. Adevarata problema sta in senzorul de vibratii (accelerometru) ... nu cred ca o sa gasesti ceva accesibil care sa iti ofere un rezultat pe microsecunda adica o frecventa de esantionare mai mare de 1MHz. Cel mai probabil va trebui sa folosesti un algoritm de gasire a unui maxim printr-o "cautare" mai intai bruta, si care o faci din ce in ce mai rafinata. Vibratiile se vor manifesta cel mai probabil sub forma unui clopot Gauss cea ce inseamna ca vei putea detecta cam pe unde ai vibratii. Oricum ingineria se bazeaza pe "aproximativ" (adica suficient de precis) si nu pe 100% exact (ideal). Partea cu unghiul este mai dificila dar ai putea sa gasesti mai intai RPM-ul unde se manifesta vibratia iar apoi sa te folosesti de un timer pentru a declansa cate o masuratoare pentru unghiuri diferite (turatia se presupune ca este constanta pe timpul masurarii) [LE - nu trebuie sa faci cele 360 de masuratori intr-o singura rotatie ...] Si probabil va trebui sa te orientezi catre Arduino Due (controller ARM Cortex M3) sau un Maple si sa te folosesti de DMA. Probabil ca pentru citirea vitezei vei avea nevoie de un disc perforat cu 360 de orificii si trebuie gasit un senzor optic suficient de rapid. Cum spunea Liviu, cu datele oferite de tine in ultimul post, pare un proiect dificil (cel putin dpdv al senzorilor). Editat Aprilie 28, 2016 de mars01 Link spre comentariu
Vizitator AndreiAndrei Postat Aprilie 29, 2016 Partajează Postat Aprilie 29, 2016 (editat) Eu am acces la un asemenea banc de la care ne putem inspira. am gasit senzorul de vibratii exact care sta pe bancul respectiv, atasez caracteristicile in linkul de mai jos. http://i63.tinypic.com/4fu592.jpg Accelerometrul respectiv reactioneaza pana la 8khz, dar mie imi sunt suficienti si 3khz, pentru ca turatia maxima va fi de 3000/sec, adica dupa cum inteleg eu senzorul da un impuls in puctul de dezechilibru la fiecare turatie (asa cred eu). Turatia este in crestere pana la 3000/s De aceea ma gandesc ca trebuie sa fac cat mai multe masuratori in timpul fiecarei turatii ca sa pot prinde acest impuls si sa aflu si unghiul in care el a fost dat. senzorul magnetic de citire a turatiilor arata ca in schita de mai jos: http://tinypic.com/view.php?pic=f9qbz7&s=9#.VyL_OWdJnVI http://i67.tinypic.com/f9qbz7.jpg el a fost confectionat manual de baetii care au facut bancul. functioneaza in felul urmator: se magnitizeaza varful rotorului (aici se stabileste si punctul zero de unde incepe numaratoarea) si in timp ce el se roteste la 'gura' senzorului (fiind rotorul magnetizat) da impulsuri electrice in spirele care se vad in desen. Acest curent cred ca trebuie intii amplificat, filtrat si citit. pentru amplificare mi-a recomandat cineva sa folosesc MAX5354CUA+ dau si link catre el http://www.tme.eu/en/katalog/#id_category=112878&search=max5354&s_field=accuracy&s_order=DESC&page=1¤cy=EUR Pe rotor nu pot agata nimic, pentru ca lucrul respectiv ii va induce un dezechilibru, care imi va arata gresit unghiul. La baietii care au facut bancul respectiv graficul merge in timp real (poate ofera si asta vre-un indiciu) mai jos pun o poza care am facut-o la circuite , poate sugereaza cuiva vre-o idee. intrarile de jos sunt de la senzori si cea din dreapta pleaca la PC. controlerul mare este un Atmega 162 16PU. http://i67.tinypic.com/xfdmbd.png http://tinypic.com/view.php?pic=xfdmbd&s=9#.VyMGgWdJnVI Daca eu ceva nu inteleg corect va rog sa ma corectati ! Multumesc tuturor !!! Editat Aprilie 29, 2016 de AndreiAndrei Link spre comentariu
mars01 Postat Aprilie 29, 2016 Partajează Postat Aprilie 29, 2016 Ce sa zic. Daca graficul celorlalti este real time, adica ceva de genul: http://www.openprocessing.org/sketch/136774 (click in dreptunghiul care apare in centru si apoi tine apasata o tasta, spre exemplu "s", tasta are rol de sursa de informatie) atunci in mod clar ei nu trimiteau toate datele achizitionate de senzori catre PC. Cel putin un Atmega nu face fata la acel volum de date. Chiar si controlere mai potente se folosesc de DMA pentru a lasa procesorul sa mai faca si altceva. Faptul ca se folosesc de comunicatia UART arata ca volumul de date este totusi redus, sub 500KB/sec. Si arata ca in algoritmul de achizitie de date se fac unele simplificari. IC-ul MAX5354 este un convertor ADC (analog to digital) si nu este propriuzis un amplificator (desi contine totusi un buffer in el). Rolul lui este sa faca informatia de turatie procesabila digital. Probabil ca cu cat turatia este mai mare cu atat curentul generat in solenoid este mai mare si tensiunea masurata de ADC este astfel mai mare. Nu stiu cat de lineara este curba tensiune_solenoid/viteza ca sa ai o precizie buna. Ai control asupra presiunii aerului? Adica poti controla viteza de rotatie a rotorului? Sau odata ce incepi sa sufli .... sufli pana numai poate Link spre comentariu
Vizitator AndreiAndrei Postat Aprilie 29, 2016 Partajează Postat Aprilie 29, 2016 Aerul vine dintr-o butelie de 600L, care in cateva secunde ii scade presiunea si mai departe nu mai poate tura. (suflu pana nu mai poate:)) Graficul merge exact ca in aplicatia pe care mi-ati aratat-o. Referitor la solenoid eu credeam ca acolo curentul apare si dispare (sau isi schimba polaritatea) in functie de polii '+' si '-' care se rotesc in apropiere de sensor. Va arat pozitia in care citeste in desenul de mai jos. http://i66.tinypic.com/2eq98jb.jpg http://tinypic.com/view.php?pic=2eq98jb&s=9#.VyM71mdJnIU Si sta la o distanta 7-10 mm fata de sensor si tot citeste. Link spre comentariu
mars01 Postat Aprilie 29, 2016 Partajează Postat Aprilie 29, 2016 (editat) Bine, dar in acest caz numai vad sensul folosirii unui ADC ... LE: poate doar daca in software urmaresti o chestie calitativa, un fel de "comparator" digital - daca adc-ul intoarce o valoare peste o valoare prag atunci ai un eveniment (rotatie), eliminandu-se "zgomotul". Feeling-ul meu este ca de fapt nu este nevoie ca datele sa fie atat de precise, gen la turatia de 2501 RPM ai vibratia cutare sau cutare. Mai degraba o estimare din 50 in 50 de rotatii sau chiar mai grosier si pe urma eventual o interpolare, mediere. E foarte probabil ca o vibratie nu se manifesta atat de localizat ci este un fenomen cu o distributie asemanatoare cu un clopot Gauss, centrat la o anumita turatie. La aceasta ma refeream cand am amintit de simplificari. Ar trebui sa afli intre ce limite trebuie sa te inscrii, asa numitele "design inputs". Editat Aprilie 29, 2016 de mars01 Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum