Etilotest

Date de contact: Ebru Resul

Introducere

Am decis să realizez un etilotest pentru proiectul meu la PM, ce afișează pe un LCD cantitatea de alcool și dacă s-a trecut de un anumit prag, folosesec un buzzer pentru a avertiza utilzatorul să se oprească din consumat alcool.

Ideea mi se pare una amuzantă și interesantă, ce poate fi ușor testată. Poate fi folosită la diverse petreceri, atunci când dorești șă știi dacă e timpul să te oprești sau nu.

Descriere generală

Microcontroller-ul ATmega324 va primi date de la senzorul de alcool. Avem un buton ce îl ținem apăsat cât timp suflăm în senzorul de alcool pentru a putea măsura date relevante. Pe LCD se vor afișa mai întâi instrucțiunile de folosire, iar apoi va primi de la microcontroller cantitatea de alcool din aerul expirat. Dacă acesta a depășit un anumit prag, microcontroller-ul va activa buzzerul, pentru a anunța utilizatorul că s-a depășit un anumit prag.

Schema bloc a proiectului:

Hardware Design

Schema electrica

Software Design

1. Mediu de dezvoltare

Pentru acest proiecte am folosit:

  • Eagle 9.4.0: pentru schema electrică
  • Visual Studio Code: editor text
  • HID Boot Flash: bootloader

2. Biblioteci și cod

Am folosit bibliotecile de bază din C, bibliotecile pentru LCD din cadrul laboratorului și bibliotecile specifice pentru AVR.

#include "lcd.h"
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/interrupt.h>

* Nu am folosit funcția delay, întregul cod bazându-se pe timere și întreruperi. O dată la 100ms citesc ceea ce îmi trimite senzorul de gaz.

* La început, voi face 50 de citiri pentru a calibra senzorul și pentru a ști care este valoarea normală citită în aer. Pentru următoarele teste, pentru a avea o precizie bună, voi continua să citesc de 50 de ori datele primite de la sensor. Acest lucru înseamnă că utilizatorul trebuie să sufle în etilotest undeva la câteva secunde.

* Deoarece rezultatul întors nu reprezintă o valoare pe care să o înțelegem, am făcut conversia în g/l. Pe lcd afisez atât un mesaj pentru utilizator, cât și alcoolemia acestuia în g/l. Atunci când deja s-a ajuns la un nivel foarte mare de alcool în aerul expirat, buzzerul ne va avertiza că este periculos să mai continuăm să bem.

* Am împărțit rezultatele ce pot fi obținute în 4 nivele:

  • “Nu ai băut nimic” : 0.00 - 0.039 g/l
  • “Ai băut puțin” : 0.04 - 0.069 g/l
  • “Nu mai bea” : 0.07 - 0.109 g/l
  • “STOP” : > 0.110 g/l (aici începe buzzerul să sune)

* Pe viitor, doresc să implementez o aplicație pe telefon, unde ți se va afișă nivelul de alcool.

Rezultate obținute

  • În urma acestui proiect am obținut un etilotest funcțional.
  • Este primul proiect hardware pe care l-am terminat și pot spune că a fost interesant să mă ocup de întregul asamblul, atât de software, cât și de hardware.

Concluzii

  • A fost o experiență interesantă, din care am învățat destul de multe lucruri utile, precum lipitul pe placă a elementelor de bază, lucrul cu senzori și LCD.
  • Consider că era necesar să facem și un proiect hardware în acești 4 ani de licență.

Cod

Bibliografie/Resurse

pm/prj2019/abirlica/ebrursl.txt · Last modified: 2021/04/14 17:07 (external edit)
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