This is an old revision of the document!


Cigarette Pack Counter

Introducere

Proiectul meu este un dispozitiv inteligent care determina automat cate tigari au mai ramas intr-un pachet de tigari, folosind un senzor de greutate de precizie.

Ideea a pornit de la o observatie simpla: de multe ori nu stii cate tigari mai ai in pachet fara sa-l deschizi sau sa numeri manual. Mi-am propus sa rezolv acest lucru intr-un mod elegant si non-invaziv, fara a modifica pachetul si fara sa fie nevoie de o camera sau de procesare de imagine complexa.

Sistemul foloseste un senzor de forta (load cell) conectat la un modul de amplificare ADC pe 24 de biti (HX711) pentru a masura greutatea pachetului cu precizie sub 0.1g. Deoarece fiecare tigara Marlboro Red cantareste aproximativ 0.95g, iar greutatea ambalajului gol este cunoscuta si calibrata la pornire, microcontrollerul ATmega328P calculeaza numarul de tigari prin simpla impartire a greutatii nete la greutatea unei singure tigari. Rezultatul este afisat in timp real pe un ecran OLED de 128×64 pixeli. Interactiunea cu utilizatorul se face printr-un singur buton: o apasare scurta actualizeaza afisajul, iar una lunga recalibra tara (greutatea ambalajului gol).

Proiectul este util pentru ca:

  • Demonstreaza practic utilizarea unui ADC extern de inalta precizie (24 biti) cu ATmega328P
  • Combina mai multe notiuni din laborator: GPIO, I2C, intreruperi si calibrare ADC
  • Reprezinta o solutie robusta si independenta de conditiile de iluminare, spre deosebire de o abordare bazata pe camera
  • Poate fi adaptat pentru orice tip de pachet sau produs cu greutate cunoscuta per unitate

Descriere generala

Sistemul este compus din urmatoarele module hardware si software, care interactioneaza dupa cum urmeaza:

  • ATmega328P Xplained Mini este unitatea centrala de procesare. Citeste datele de la senzorul de greutate, calculeaza numarul de tigari si trimite rezultatul catre display. Totodata, gestioneaza butonul de interactiune al utilizatorului.
  • Load cell (celula de sarcina) 100g este senzorul mecanic care se deformeaza proportional cu greutatea plasata pe el. Genereaza un semnal diferential de tensiune in intervalul mV, care este amplificat de modulul HX711.
  • Modulul HX711 este un amplificator si convertor analog-digital de 24 de biti, dedicat celulelor de sarcina. Comunica cu ATmega328P printr-un protocol two-wire (DOUT si PD_SCK), diferit de SPI sau I2C standard. Ofera o rezolutie de aproximativ 0.1g, mai mult decat suficienta pentru a distinge o singura tigara (~0.95g).
  • Display OLED SSD1306 128×64 afiseaza numarul curent de tigari din pachet, greutatea neta masurata si mesaje de stare (ex: “Calibrating…”, “Ready”). Comunicarea se face prin protocolul I2C pe pinii PC4 (SDA) si PC5 (SCL).
  • Butonul de interactiune este conectat pe pinul PD2 cu rezistenta de pull-up interna activata. O apasare scurta (< 1s) declanseaza o noua masurare si actualizeaza afisajul. O apasare lunga (> 2s) initiaza recalibrarea tarei: sistemul salveaza greutatea curenta ca greutate de referinta a ambalajului gol.
  • Alimentarea se face de la 5V prin cablul USB al placii Xplained Mini. Modulul HX711 si display-ul OLED sunt alimentate de la acelasi rail de 5V, cu condensatoare de decuplare pentru stabilitate.

Fluxul de functionare al sistemului este urmatorul: la pornire, utilizatorul plaseaza pachetul GOL pe platforma si apasa lung butonul pentru a calibra tara. Dupa calibrare, indiferent de cate tigari se afla in pachet, sistemul calculeaza automat numarul ramas la fiecare apasare scurta a butonului si il afiseaza pe OLED.

Modul Descriere Tehnica Protocol / Interfata
ATmega328P Xplained Mini Unitate centrala de procesare, 16MHz, 5V Master al intregului sistem
Load Cell 100g Senzor mecanic rezistiv (punte Wheatstone) Semnal analogic diferential (mV)
HX711 ADC 24-bit + amplificator pentru load cell Two-wire: DOUT (PC3), PD_SCK (PC2)
OLED SSD1306 128×64 Display grafic pentru afisarea rezultatelor I2C: SDA (PC4), SCL (PC5)
Buton Interactiune utilizator (masurare / calibrare) GPIO: PD2, pull-up intern

Hardware Design

Lista de componente

Componenta Cantitate Rol in proiect
ATmega328P Xplained Mini 1 Microcontrollerul principal
Load Cell 100g 1 Masurarea greutatii pachetului
Modul HX711 1 Amplificare si conversie ADC 24-bit
Display OLED SSD1306 128×64 I2C 1 Afisarea numarului de tigari
Buton push-button 6x6mm 1 Declansare masurare / calibrare tara
Rezistor 10kΩ 1 Pull-up buton (optional, se foloseste intern)
Condensator ceramic 100nF 4 Decuplare alimentare langa fiecare CI
Condensator electrolitic 10µF 1 Stabilizare rail 5V
Breadboard 1 Montaj circuit
Fire jumper tata-tata 10 Conexiuni pe breadboard
Fire jumper tata-mama 10 Conexiuni catre module
Cablu USB 1 Alimentare si programare
Platforma/suport pentru load cell 1 Suport mecanic pentru pachet (din lemn/acril)

Schema electrica

TODO - schema electrica realizata in KiCad

Calcul greutate → numar tigari

Marlboro Red Long (cu tigari scurte):

  • Greutate ambalaj gol: ~23g (calibrata la pornire)
  • Greutate per tigara: ~0.95g (constanta in cod)
  • Formula: nr_tigari = round( (greutate_totala - tara) / 0.95 )

Software Design

  • Mediu de dezvoltare: PlatformIO (Visual Studio Code) cu framework Arduino
  • Limbaj: C++ (Arduino)
  • Programare: USB direct prin EDBG integrat pe Xplained Mini (fara ISP extern)

Rezultate Obtinute

TODO - rezultate dupa realizarea montajului fizic

Concluzii

TODO

Download

TODO - link GitHub cu surse, schema KiCad, README

pm/prj2026/cezar.zlatea/teodor.pana.1778318218.txt.gz · Last modified: 2026/05/09 12:16 by teodor.pana
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0