This shows you the differences between two versions of the page.
pm:prj2025:vstoica:stefan.lepinzean [2025/05/21 11:58] stefan.lepinzean [Download] |
pm:prj2025:vstoica:stefan.lepinzean [2025/05/27 23:26] (current) stefan.lepinzean [Rezultate Obţinute] |
||
---|---|---|---|
Line 72: | Line 72: | ||
* In caz ca au fost selectate setarile, aparatul intra in meniul de setari. Aici poate schimba cat de plin vrea sa fie paharul sau recalibra senzorii. | * In caz ca au fost selectate setarile, aparatul intra in meniul de setari. Aici poate schimba cat de plin vrea sa fie paharul sau recalibra senzorii. | ||
* Daca senzorul de greutate citeste o greutate destul de mare, aparatul intra in rutina de umplere a paharului. Pe ecran se afiseaza faptul ca un obiect a fost identificat in zona de umplere, apoi asteapta 3 secunde pentru ca utilizatorul sa aiba timp sa isi indeparteze mana. | * Daca senzorul de greutate citeste o greutate destul de mare, aparatul intra in rutina de umplere a paharului. Pe ecran se afiseaza faptul ca un obiect a fost identificat in zona de umplere, apoi asteapta 3 secunde pentru ca utilizatorul sa aiba timp sa isi indeparteze mana. | ||
- | * Dupa acest timp este pornita banda de senzori IR care aproximeaza inaltimea paharului. In caz ca inaltimea paharului nu poate fi masurata corect (fie nu a fost pus in zona corecta, fie senzorul este afectat de undele infrarosii din camera) un mesaj de eroare este transmis catre lcd, caz in care utilizatorul trebuie sa ridice paharul si sa mai incerce odata. | + | * Dupa acest timp este pornita banda de senzori IR care aproximeaza inaltimea paharului. In caz ca inaltimea paharului nu poate fi masurata corect (fie nu a fost pus in zona corecta, fie senzorul este afectat de undele infrarosii din camera) un mesaj de eroare este transmis catre lcd, caz in care utilizatorul trebuie sa ridice paharul si sa mai incerce odata. |
- | * Daca citirea este corecta se porneste senzorul ultrasonic pentru a aproxima distanta pana la fundul paharului, daca senzorul ultrasonic nu citeste corect distanta, paharul poate fi miscat putin pentru a incerca sa fie aliniat cu senzorul. Urmatoarea etapa este pornirea pompei de apa, paharul este umplut cu lichid pana cand senzorul ultrasonic ajunge sa citeasca o distanta egala cu distanta initiala a paharului gol minsu inaltimea aproximativa a paharului (citita de banda IR) inmultita cu factorul de umplere. | + | * Functia de citire a inaltimii functioneaza in modul urmator. Mai intai proneste banda de senzori IR apoi comuta multiplexorul pentru a citi pe rand fiecare senzor. odata ce toate valorile sunt inregistrate intr-un vector, se alega valoare de la senzorul numarul 5 (de jos in sus), acesta din testatile mele am observat sa transmita adesea cea mai amre valoare. Acest senzor este folosit ca referinta, daca valoarea transmisa de primii 4 senzori se afla sub nivelul de zgomot atunci citirea este considerata a fo eronata. In caz contrar se citesc toti senzorii peste 5 pana la primul senzor care intoarce o valoare mai mica decat jumatate din valoare transmisa de senzorul 5 (o valoare arbitrara obtinuta de mine tot dupa mai multe teste). |
+ | * Daca citirea este corecta se porneste senzorul ultrasonic pentru a aproxima distanta pana la fundul paharului, daca senzorul ultrasonic nu citeste corect distanta, paharul poate fi miscat putin pentru a incerca sa fie aliniat cu senzorul. | ||
+ | * Fiecare "citire" a senzorului ultrasonic este defapt un calup de 10 citiri consecutive (intrucat acuratetea senzorului este foarte proasta am decis sa calculez media a 10 citiri consecutive in incercarea disperata de a obtine o valoare stabilizata... rezultatul nu este perfect... in mare parte din cauza limitarii acestui senzor). Un semnal este transmis catre pinul de trigger dupa care este asteptat ca pinul echo sa intoarca inapoi durata de calatorie a undei ultrasonice. Aceasta durata esteinregistrata de catre timerul 1 si apoi calculata in distanta folosind frecventa ceasului impartita la viteza sunetului (Detalii amanuntite despre formula se gasesc in comentariile din cod). | ||
+ | * Urmatoarea etapa este pornirea pompei de apa, paharul este umplut cu lichid pana cand senzorul ultrasonic ajunge sa citeasca o distanta egala cu distanta initiala a paharului gol minsu inaltimea aproximativa a paharului (citita de banda IR) inmultita cu factorul de umplere. | ||
* Odata ce paharul este umplut, utilizatorul este rugat sa indeparteze paharul iar dupa o asteptare de 5 secunde banda IR si celula de greutate sunt recalibrate (deoarece acesti senzori sunt destul de sensibili am optat sa ii recalibrez dupa fiecare rutina de umplere), dupa care programul se intoarce inapoi in loopul principal. | * Odata ce paharul este umplut, utilizatorul este rugat sa indeparteze paharul iar dupa o asteptare de 5 secunde banda IR si celula de greutate sunt recalibrate (deoarece acesti senzori sunt destul de sensibili am optat sa ii recalibrez dupa fiecare rutina de umplere), dupa care programul se intoarce inapoi in loopul principal. | ||
+ | |||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | [[https://youtu.be/UZ_oGTI_lw4|Link YouTube]] |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
Line 110: | Line 112: | ||
{{:pm:prj2025:vstoica:cd:stefan.lepinzean:circuit_pompa.jpeg?500|}} | {{:pm:prj2025:vstoica:cd:stefan.lepinzean:circuit_pompa.jpeg?500|}} | ||
+ | |||
+ | In poza asta se poate vedea si carpitura de am facut-o ca sa tina celula de sarcina. Ea trebuie tinuta sub placa aceea rotunda de metal, pe care o sa stea paharul. Ca sa o fixez acolo m-am folosit de backplateul de la carcasa unui modul vechi de dvd player pentru masina. Am luat acea placa, care era prea mare sa incapa in aparatul meu asa ca am taiat-o cu bomfaierul. | ||
Dupa multe lipituri (si multe degete parlite) am inceput sa prind incredere in letcon si m-am apucat sa lipesc si resul senzorilor si sa ii conectez pe placuta de dezvoltare care face legatura cu Arduino (Tin sa atentionez ca poza de mai jos are impact puternic emotional daca aveti OCD, o sa ma pun mai tarziu sa aranjez toate firele sa arate uman). | Dupa multe lipituri (si multe degete parlite) am inceput sa prind incredere in letcon si m-am apucat sa lipesc si resul senzorilor si sa ii conectez pe placuta de dezvoltare care face legatura cu Arduino (Tin sa atentionez ca poza de mai jos are impact puternic emotional daca aveti OCD, o sa ma pun mai tarziu sa aranjez toate firele sa arate uman). | ||
Line 127: | Line 131: | ||
</note> | </note> | ||
+ | Pentru sursele bibliotecilor folosite, sunt trecute la rubrica Software. | ||
+ | ==== Dataheeturi componente ==== | ||
+ | * [[https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf|HC-SR04]] | ||
+ | * [[https://www.pololu.com/product/4256|QTR-MDX-16A]] (Aceasta piesa nu are un datasheet oficial, chiar am cautat, doar informatiile de se gasesc pe pagina aceasta web) | ||
+ | * [[https://www.handsontec.com/dataspecs/module/I2C_1602_LCD.pdf|LCD-1602 cu interfata I2C]] | ||
+ | * [[https://www.handsontec.com/dataspecs/module/I2C_1602_LCD.pdf|Arduino Uno R3]] (Copia de chinezarie de o am eu nu are datasheet, pinoutul este totusi la fel. Am verificat si singura diferenta fata de original este in cateva integrate care probabil sunt de calitate mai proasta...) | ||
+ | * [[https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf|ADC HX711]] | ||
+ | * La pompa n-am datasheet, fiind o mizerie reciclata care cine stie pentru ce a fost folosita... Stiu ca motorul dinauntru functioneaza la 12V cu un consum de 400mA. | ||
+ | * [[https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf|Alimentator 12V]] (Nici la asta n-am gasit datashett neam, presupunand ca eticheta de pe el nu minte, se gasesc pe pagina de pe optimus specificatii) |