This is an old revision of the document!
PREZENTARE IDEE
Ideea a venit de la un interes personal petru levitația bazată pe ultrasunete. Astfel am decis că proiectul la PM este ocazia perfectă pentru satisfacerea acestei curiozități.
Din cauza puterii mici, levitatorul va fi limitat la biluțe de polistiren sau poate o mica picătură de apă (dar această parte rămâne sub semnul întrebării deoarece densitatea obiectului influențează foarte mult intensitatea undei necesară pentru a putea levita).
SCOP ȘI UTILIZARE
La o primă vedere proiectul nu are o utilitate practică și de aceea am decis să construiesc un obiect cu scop decorativ ce să înblobeze drept componentă principală levitatorul.
Deoarece perturbațiile din aer pot influența echilibrul levitatorului, acesta trebuie ținut într-un loc mai rar accesat, ceea ce m-a condus la ideea implementării unui ceas ornamental. Astfel levitatorul va reprezenta elemental de design modern și doresc utilizarea unui strip de led-uri adresabil pentru un joc de lumini asupra obiectului levitat.
Ceasul va fi implementat prin cod, iar ora va putea fi setată, și va fi afișat pe un ecran lcd 16×2.
SCHEMA BLOC
Mai jos este prezentată schema bloc a sistemului în care sunt prezentate modul în care diferitele componente vor interacționa.
SCHEMA ELECTRICĂ
TESTE HARDWARE
Intrucat emițătoarele de ultrasunete desprinse din senzorii de distanță erau mai greu de testat am realizat un montaj de test pentru levitator pentru a fi sigură de funcționalitatea acestora. Din acest test am realizat și următoarele observații:
Notiuni utilizate:
OBSEVATII:
1) Ceasul a fost implementat doar prin logica interna, fara a folosi modul RTC separat (din motive de timp, buget si disponibilitate), ceea ce inseamna ca ceasul trebuie setat la fiecare repornire.
2) Contorizarea secundelor se realizeaza prin atribuirea functiei loop() un timp de executie de aproximativ o secunda. Acest lucru s-a realizat prin functia millis()
3) Pentru a avea un timp de raspuns relativ nesesizabil de la butoane, am decis spargerea buclei loop() in 5 iteratii a cate 200ms. Din testarea manuala timpul de raspuns pare destul de rapid incat sa nu fie deranjant. (tinand cont si de scopul butoanelor - setarea orei si schimbarea culorilor)
for (int i = 0; i < 5; i++) { while ((now - last_time) < 200) // Delay 200ms now = millis(); last_time=now; // Prepare for next loop // logic here... }
Codul sursa poate fi gasit aici. (link Github)
In primul rand, proiectul este functional, dar mai am de lucru la partea de aspect pentru prezentare.
Realizand mai multe teste pentru levitator am observat urmatoarele:
Tinand cont ca aspectul principal al proiectului (si punctul meu central de interes) era levitatorul, nu pot spune ca am acordat la fel de multa atentie celorlalte doua componente, dar mentionez ca utilizarea led-urilor adresabile este amuzanta si iti permite realizarea unor jocuri de lumini interesante. Desi nu am implementat in proiect in mod special jocuri de lumini, perioada de testare/invatare a utilizarii acestor tipuri de led-uri a fost destul de captivanta.
Tot legat de acest aspect doresc sa mentionez o posibila problema mai greu de depistat pentru care am pierdut foarte mult timp. Alimentarea pentru led-uri a fost o baterie externa de 9V, intrucat specificatiile mentionau ca un led consuma ~50mA. Observatia realizata pe baza unei experiente neplacute este ca atunci cand bateria incepe sa se descarce sub un anume nivel ledurile se comporta ciudat. Intuitia mi-ar fi spus ca la descarcarea bateriei ar lumina mai putin intens. In realitate ledurile se aprindeau random doar cateva din cele care ar fi tb sa se aprinda. In contextul in care aveam un buton de control al culorilor comenzile erau luate din cand in cand, iar transmiterea lor era tot ciudata, se putea intampla ca unele leduri sa vada modificarea si altele nu.
Arhiva ce contine codul sursa:
chiper_ic_335cb_pm.zip
05/05/2023:
Achiziționare componente hardware
07/05/2023:
Finalizare etapa 1 - documentație
15/05/2023:
Testare emițătoare - realizare montaj de probă pentru levitator - it worked (^▽^)
21/05/2023:
Finalizare etapa 2 - hardware (schema + teste)