Sistem de Contorizare, Avertizare Si Alarmare Pentru Automobilele Mai Vechi

LUCRARE DE LICENȚĂ

Sistem de contorizare, avertizare și alarmare pentru

automobilele mai vechi

Cuprins

Capitolul I Introducere

Capitolul II Generalități

II.1. Unitatea de comandă ECU

II.2. Unitatea de comandă ABS

II.3. Uniteatea de comandă ESP

II.4. Unitatea de comandă AIRBAG

Capitolul III Prezentare echipamente

III.1 Placa de dezvoltare Arduino Mega 2560 R

III.2 Modul GSM Sim900 GSM/GPRS

III.3 Senzori de proximitate HC-SR04

III.4 Display I2C 20×4

III.5 Debitmetru

III.6 Senzorul REED

III.7 Pompița de sprit

III.8 Sursa de alimentare

Capitolul IV Parte practică

IV.1 Proiectare hardware si asamblare componente

IV.2 Proiectare software

IV.2.1 Program testare placă Arduino și display I2C

IV.2.2 Program citire senzor proximitate

IV.2.3 Program citire senzor REED

IV.2.4 Program citire debitmetru

IV.2.5 Program modul GSM pentru SMS-uri

IV.2.6 Validarea

IV.2.7 Verificarea și testarea sistemului

Capitolul V Mod de funcționare

V.1 Viteza de deplasare

V.2 Calculul consumului

V.3 Atenționare obstacole

V.4 Avertizare prin SMS la declanșarea alarmei

Capitolul VI Concluzii

Bibliografie

Anexe

Capitolul I

Introducere

Datorită progresului tehnologic avansat în industria automobilistică și lansarea unor echipamente performante pe piața din România, confruntând problemele care le întâmpin în fiecare zii la servici privind justificarea consumului de carburant consumat de tehnica din dotarea Armatei Române, am hotarât să construiesc un sistem de contorizare si calculare a carburantului în funcție de kilometrii parcurși pentru interesul meu propriu.

Deșii unele mașini din ziua de azi vin din fabrică cu aceste opțiuni gata implementate nu numai ca opțiune ci la pachetul de bază consider că este un moft necesar nu numai pentru mașinile de servici cum ar fii camionete, furgonete sau alte mașini, dar și pentru gama largă de proprietari privați care pentru interesul lor general deținând o mașina mai veche ar plătii ca această opțiune să fie instalată pe autovehicolul lor. Odată cu trecerea timpului piața de desfacere a autoturismelor a devenit din ce în ce mai aspră și mai grea determinând unii producători de autoturisme să își îmbunătățească vertiginos calitatea produselor atât pe linie de consum dar și pe linie de siguranță, asigurându-și astfel un avantaj major față de concurență.

Această idee pusă în practică realizez că ar avea mai multe aplicații și întrebuințări și în viața civilă dar până atunci, am hotărât să îmi diversific idea și să mai adaug un modul GSM și doi senzori de proximitate care vor fii utilizați pe mașina mea de serviciu construind astfel un sistem de contorizare, avertizare și alarmare prin care autovehicolul meu de servici, o „DACIA 1310 CL”din anul 1996, să devina o mașină inteligentă.

Cu ajutorul unor înbunătățiri deja efectuate pe automobil cum ar fii închiderea centralizată și un sistem de alarmă destul de performant, am putut folosi placa mea de dezvoltare pentru a conecta adițional pe lângă debitmetrul folosit și senzorul de poziție montat pe cablul de kilometraj pentru a calcula consumul de carburant, încă doi senzori de proximitate, unul în fața mașinii iar celălalt in spatele acesteia pentru a mă avertiza când mă aproprii prea mult de un obstacol. Atașarea modulului GSM pe placă va lucra concomitent cu alarma mașinii iar la declanșarea acesteia mă va înștiința prin intermediul unui SMS de starea alarmei care în cazul meu poate fii de doua tipuri:

– Alarmă activ întreruptă, care mă atenționează că autovehicolul a fost lovit sau se încearcă pătrunderea în interiorul acesteia;

– Alarmă activ continuă, care mă atenționează că una din portierele mașinii sau capota ori haionul acesteia au fost deschise, efectuându-se pătrunderea ei.

Întrucât elemente din proiectul meu pot fii montate pe mașină, dar nu pot face deplasarea cu mașina de servici în Oradea pentru prezentarea ei și a îmbunătățirilor, precum modulul GSM împreună cu placa de dezvoltare, senzorii de proximitate și senzorul de poziție montat pe cablul de kilometraj (voi explica în partea practică, cum anume se montează și importanța lui), voi executa lucrarea mea de licență pe o machetă care va imita funcțiile importante determinării consumului de carburant dar și funcționarea întregului sistem.

Capitolul II

Generalități

Un limbaj de programare[15] reprezintă o notație formală prin care se specifică anumite operații ce urmează a fi executate (de către un calculator). Există în prezent un număr impresionant de limbaje de programare definite și implementate. Dintre acestea, doar o mică parte s-au impus și se utilizează pe o scară largă pentru scrierea programelor actuale. Un produs software complex este dezvoltat parcurgând în mod tipic următorii cinci pași[15]:

analiza și specificarea cerințelor,

proiectarea și specificarea software,

implementarea,

validarea,

întreținerea.

În acest caz prima etapă o putem omite cu ușurință pentru că solicitările utilizatorului nu necesită o analiză printr-o serie de cerințe. Pornind de la cerințe, sistemul a fost proiectat printr-o serie de programe.

Principala componentă a proiectului este placa de dezvoltare Arduino Mega 2560 R3[2], care funcționează cu un soft special conceput în Java și este utilizată în proiectele ce folosesc echipamente hardware.

Arduino[14] a luat ființă în 2005 ca un proiect studențesc în Ivrea, Italia. La acea vreme studenții fondatori au utilizat un microcontroler Basic Stamp în valoare de 100$, considerat scump pentru bugetul unui student. Când cablajul a fost finalizat, cercetători au lucrat să îl facă mai ușor, mai ieftin și disponibil pentru oricine.

O placă Arduino este formată dintr-un microcontroler Atmel pe 8 biți și componente complementare ce facilitează programarea și încorporarea altor circuite. Un aspect important al acestei plăci este expunerea standard a conectorilor, permițând să fie conectată la o varietate de module cunoscute sub denumirea de scuturi. Unele dintre aceste module comunică cu placa Arduino în mod direct prin intermediul diverșilor pini, dar majoritatea se conectează printr-o magistrală serială I2C, ce permite utilizarea în paralel a modulelor.

Cei de la Arduino au utilizat seria de procesoare megaAVR, în special ATmega8, ATmega168, Atmega328, Atmega1280 și Atmega2560[22]. Majoritatea plăcilor conțin un regulator liniar de 5V și un oscilator cu cristale de 16MHz. La început toate plăcile Arduino erau programate cu ajutorul unei conexiuni seriale RS-232, dar modul în care era implementată varia în funcție de versiunea hardware. Acum ele sunt programate prin USB, utilizând un adaptor FTDI.

Platforma pentru Arduino este o aplicație scrisă în Java și este menită pentru a introduce în ale programării și pe cei care sunt începători în dezvoltarea de soft. Programele sunt scrise în C sau C++ și vin cu librării software care fac operațiile de intrare/ieșire comune mult mai ușoare. Utilizatorul trebuie doar să declare două funcții[21] pentru a face un program ciclic executabil :

setup() : o funcție ce rulează o dată la începutul programului și care inițializează setările

loop() 😮 funcție apelată repetitiv până când este întreruptă alimentarea plăcii.

Un astfel de program este și cel din exemple, care face un LED de pe placă să se stingă și să se aprindă:

#define LED_PIN 13

void setup () {

pinMode (LED_PIN, OUTPUT); // Enable pin 13 for digital output

}

void loop () {

digitalWrite (LED_PIN, HIGH); // Turn on the LED

delay (1000); // Wait one second (1000 milliseconds)

digitalWrite (LED_PIN, LOW); // Turn off the LED

delay (1000); // Wait one second

}

La baza plăcii de dezvoltare stă microcontroler-ul[16], care este un circuit integrat care înglobează în aceași capsulă un microprocesor, memorii și porturi de interfațare. Clasificarea microcontrolerelor se face în funcție de numărul de biți: 8, 16 sau 32 biti, pentru majoritatea aplicațiilor fiind suficientă utilizarea unui microcontroler pe 8 biți.

Facilitățiile microcontrolerelor[16]:

tensiunea de alimentare – este de 5V standard, dar pentru diverse aplicații s-au realizat și microcontrolere care pot funcționa și la alte nivele de tensiune;

oscilatorul – are rol de a furniza comanda de a executa o operație și stabilește frecvența de lucru a microcontrolerului, și poate fi: rezistore+condensator, oscilator cu cuarț sau oscilator cu cristale High-Speed;

timer – are rol în stabilirea duratei de execuție a unei instrucțiuni; pot fi pornite și oprite din program și depind de frecvența oscilatorului;

Watchdog – are rol în verificarea funcționării programului încărcat în microcontroler, cu alte cuvinte putem spune că Watchdog este un sistem de protecție pentru ca programul încărcat în microcontroler să nu rămână blocat;

intrare de reset – are rol în repornirea programului din microcontroler, de la adresa 0 din memoria de program;

sistem de întreruperi – are rol în realizarea unei întreruperi în funcționarea normală a programului, urmată de executarea unui set special de instrucțiuni aflat într-o altă parte a programului, după terminarea executării acestui set special de instrucțiuni microcontrolerul reluând programul de unde a rămas inițial;

brown-out detector – rol în resetarea microcontrolerului în cazul în care tensiunea de alimentare scade sub o valoare prestabilită;

CAN – este un sistem de conversie a unei mărimi analogice într-una numerică care poate fi procesată de către microcontroler;

comparator analogic – este un circuit care realizează comparația între două mărimi analogice;

porturi de comunicații – portul serial RS232, portul paralel, USB, ZigBee (interfață wireless specială foarte ușor de utilizat), CAN bus (interfață pentru comunicare între mai multe microcontrolere care nu necesită existența unui calculator cu rol de Master ).

Implementarea microcontrolerelor în industria auto

În fiecare an, producătorii de autoturisme la nivel mondial revin pe piață cu un nou sistem integrat pe autovehiculel lor. Microcontrolerele mici de sub capotă și din fiecare piesă electronică a mașinii adună și schimbă informații pentru a controla, a optimiza și monitoriza funcțiile care tocmai cu câțiva ani în urmă erau pur mecanice.

Progresele tehnologice avansate de implementare a sistemelor și a echipamentelor electronice în cadrul vehiculului sunt executate pentru a face vehiculul mai sigur și mai eficient. Microcontrolerele bazate pe memoria flash de la sistemele procesoare pană la FPGA sunt centrul de comandă pentru proiectarea sistemului integrat.

În 1968 la automobilul Volkswagen 1600[24] a folosit un microprocesor în sistemul de injecție a carburantului, eliminând astfel carburatorul, lansând primul sistem integrat din industria automobilistică. Din punct de vedere istoric procesoarele ieftine pe 8 și 16 biți au fost cele mai des folosite procesoare pentru construcția de computere de bord cunoscute sub numele de CB(computer de bord) sau ECU(electronical control unit)[26]. Un proiect electronic de succes pentru automobile depinde foarte mult de procesorul selectat. Procesoarele moderne programabile pentru motor și transmisie pe 32 de biți ce pot calcula în timp real algoritmi sunt cele mai folosite. Dar în alte organe de mașini cum ar fi modulele de siguranță, modulele pentru monitorizarea șasiului și pentru suspensie folosesc atât procesoare pe 16 biți cât și procesoare pe 32 de biți în funcție de complexitatea modulului, iar software-ul pentru microcontrolere fiind mai scump si mai complicat pentru fiecare producător de automobile în parte.

Utilizarea avansată a sistemelor implementate[24] și a echipamentelor electronice folosite la fabricarea noilor autovehicule pot ajuta la controlul caeficient. Microcontrolerele bazate pe memoria flash de la sistemele procesoare pană la FPGA sunt centrul de comandă pentru proiectarea sistemului integrat.

În 1968 la automobilul Volkswagen 1600[24] a folosit un microprocesor în sistemul de injecție a carburantului, eliminând astfel carburatorul, lansând primul sistem integrat din industria automobilistică. Din punct de vedere istoric procesoarele ieftine pe 8 și 16 biți au fost cele mai des folosite procesoare pentru construcția de computere de bord cunoscute sub numele de CB(computer de bord) sau ECU(electronical control unit)[26]. Un proiect electronic de succes pentru automobile depinde foarte mult de procesorul selectat. Procesoarele moderne programabile pentru motor și transmisie pe 32 de biți ce pot calcula în timp real algoritmi sunt cele mai folosite. Dar în alte organe de mașini cum ar fi modulele de siguranță, modulele pentru monitorizarea șasiului și pentru suspensie folosesc atât procesoare pe 16 biți cât și procesoare pe 32 de biți în funcție de complexitatea modulului, iar software-ul pentru microcontrolere fiind mai scump si mai complicat pentru fiecare producător de automobile în parte.

Utilizarea avansată a sistemelor implementate[24] și a echipamentelor electronice folosite la fabricarea noilor autovehicule pot ajuta la controlul cantității de poluare generată, dar și la creșterea capacității de a furniza sisteme de monitorizare și diagnosticare, fără a sacrifica caracteristici de siguranță sau securitate. Conținutul electronic în interiorul autovehicolului continuă să crească, unele sisteme devenind mult mai inteligente prin adăugarea microcontrolerelor de ultimă generație.

Conținutul electronic din interiorul autovehiculelor continuă să crească de la an la an, iar tot mai multe sisteme mecanice sunt automatizate și devin din ce în ce mai inteligente prin adăugarea microcontrolerelor bazate pe memoria flash. Un autovehicol tipic[24] de astăzi conține în medie cam 25-35 de microcontrolere iar la unele autovehicule de lux pot conține și până la 70 de microcontrolere. Acestea continuă să înlocuiască releele, întrerupătoarele și funcțiile mecanice tradiționale cu componente de mare fiabilitate care în timp teoretic elimină costurile dar și greutatea firelor de sârmă din cupru.

Microcontrolerele implementate comandă de asemenea motoarele ce pun în funcțiune scaunele cu memorare de poziție, geamurile electrice și oglinzile reglabile cu memorie, dar și alte sisteme auxiliare. Procesoarele destinate pentru asistența conducătorului sau a sistemului de navigație sau diagnosticare urmăresc permanent stilul de condus al șoferului memorând performanțele. Pentru a satisface noile reglementări impuse de guvern, producătorii de autovehicule și societatea inginerilor în automobilistică (SAE)[24] a dezvoltat J1850, un protocol specializat în rețelele-auto. Acest protocol permite accesul automobilului de la distanță dar și asistență telefonică, în caz de urgență posesorilor de autoturisme. Deși J1850 este acum un standard pentru automobilele din America, producătorii europeni sprijină CAN-ul(rețeaua controler-auto).

Circuitele electronice implementate[24] ar trebui să reziste la șocuri electrice ridicate, la interferențe magnetice (EMI), la temperaturi extreme emise de motor, apă dar și la șocuri putermice datorate drumurilor prost efectuate sau distruse ori ocazional unui impact mai puternic între automobile sau alte obstacole. ECU(unitățile de comtrol electric)[26] ar trebui testate și dezvoltate în toate tipurile de situații, dar cu un cost de producție redus. Deși timpul de testare crește odată cu complexitatea sistemului, microcontrolerul trebuie testat cu încredere, pentru a verifica fiecare stare și cale a acestuia verificându-i fiabilitatea.

Așadar automobilele din ziua de astăzi pot fi numite chiar și computere pe roți. Cu aceste procese tehnologice, sistemele implementate practic fac mașinile mai sigure, mai ușor de condus, mai economice și mai prietenoase cu mediul înconjurător. După cum am spus un pic mai sus o mașină obișnuită are între 25 și 35 de microcontrolere încorporate în numeroase echipamente elecronice care execută o anumită funcție predestinată, pentru a putea înțelege necesitatea acestora, ne este prezentată Fig.II.1. unde vedem întrebuințarea lor generală.

Fig.II.1.Schema bloc a unui calculator de bord

Automobilele din ziua de azi, fiecare în parte, au în componența lor cel puțin 7 sau 8 unițăți de comandă toate interconectate între ele, dar având la bază cel puțin o unitate centrală de comandă.

În principiu sunt cam patru unități de comandă importante cel mai des întâlnite în fabricarea de autoturisme, acestea sunt:

Unitatea de comandă ECU;

Unitatea de comandă ABS;

Unitatea de comandă ESP;

Unitatea de comandă AIRBAG.

II.1.Unitatea de comandă ECU

Calculatorul de bord sau ECU („Unitate de control electronic”)[26] este un modul pentru comenzi sau dirijări electronice, care este folosit în locurile unde ceva anume trebuie controlat comandat. Modulul de control electronic este folosit în sectorul auto în multe aplicații electronice, precum și pentru controlul electronic la dirijarea de mașini, instalații industriale și multe alte procedee tehnice. Aceste modulele fac parte din sistemele încorporate

Electronic control unit (ECU)[26] este un termen general folosit pentru orice sistem încorporat care controlează unu sau mai multe sisteme sau subsisteme electrice de la un motor de mașină. Exemple de ECU: ECM (electronic/engine control module), BCM sau EBCM (brake control module), PCM(powertrain control module), TCM (transmission control module), CCM (central control module), CTM (central timing module), GEM (general control module), SCM (suspension control module). Toate acestea luate ca un întreg sunt denumite ca și computer de mașină.

Dezvoltarea unui ECU[26] implică atât parte de hardware, cât și parte de software, necesare pentru a realiza funcțiile îndeplinite de un anumit modul. Design-ul este, în general, iterativ și îmbunătățiri sunt făcute atât la hardware cât și la software.

Siguranța mașinii[24] continuă să fie o problemă critică la toate nivelele din industria automobilă, și cum consumatorii își petrec tot mai mult timp pe drumuri ei caută continuu îmbunătățiri la sigurața mașinii. Există doua tipuri de sisteme de siguranță existente:

siguranță activă care caută să prevină accidentele în primul rând, mașina fiind dotată

cu un număr de sisteme menite să ajute șoferul la controlul mașinii înainte de întâmplarea unui accident;

siguranță pasivă care descrie sistemele de siguranță puse în mașină ca să protejeze

șoferul, pasagerii și alte persoane vulnerabile de pe drum după ce a avut loc accidentul.

Modulele electronice de control al motoarelor[26], au fost utilizate în primul rând pentru reglarea aprinderii acestora. Din anul 1987 aceste module electonice sunt folosite pentru reglarea aprinderii și la motoarele diesel. Aproximativ de la mijlocul anilor 90 sistemele de reglare mecanice la motoarele cu combustie internă, au fost aproape complet înlocuite de către modulele de control electronice. Modulele electronice lucrează după principiul „IPO”[26], (în engleză Input-Process-Output, „introducere-prelucrare-debitare”). Pentru înregistrarea valoriilor sunt disponibili senzorii care stabilesc o caracteristică fizică, cum ar fi viteza, presiunea, temperatura, etc. Această valoare este comparată sau calculată cu o valoare memorată în ECU. În cazul în care valoarea măsurată cu valoare prevăzută în ECU nu se potrivesc, modulul electronic reglementează valoarea prin proces fizic, astfel încât valorile reale măsurate să corespundă cu dimensiunile nominale programate în ECU.

În timp ce cu anii din urmă aprinderiile electronice erau construite din circuite electronice analogice, ECU-urile de azi sunt de obicei înzestrate cu un „sistem cu propria inteligență”care este alcătuit dintr-un computer separat, sub forma unui sistem încorporat.

Mărimea acestui computer variază în funcție de complexitatea sarcinilor sale. În mod semnificativ acesta variază de la un circuit integrat cu un microprocessor (cu memorie RAM și ROM) până la sisteme multifuncționale cu un sistem de producție grafică.

De obicei programarea este realizată prin utilizarea a memoriului ROM. Unele sisteme însă permit actualizarea programului din ECU, prin reprogramarea memoriei flash la atelierele de specialitate.

II.2.Unitatea de comandă ABS

Anti-lock break system (ABS)[24] este unul dintre cele mai importante echipamente ce țin de sistemul de siguranță activă. Este un sistem de pe mașini ce împiedică blocarea roțiilor în timpul fânării. Scopul acestuia este să-i permită conducătorului auto să mențină direcția mașinii și să scurteze distanța de frânare, premițându-i șoferului să frâneze cât de tare vrea fără să-i fie teamă că va intra în derapaj sau va pierde controlul volanului.

Pe suprafețe de beton, vreme udă sau uscată, majoritatea mașinilor echipate cu ABS sunt capabile să obțină o distanță de frânare mai bună decât cei care nu beneficează de aceste echipamente. Principalul beneficiu al ABS-ului pe aceste suprafețe este de a crește abilitatea șoferului de a menține controlul mașinii decât să intre în derapaj, deși pe suprafețe alunecoase cu zăpadă sau gheață pierderea contolului rămâne probabilă.

Sistemul ABS[24] este compus dintr-o unitate centrală, patru senzori de viteză, câte unul pe fiecare roată, și două sau mai multe valve hidraulice montate pe circuitul de frânare. Este un sistem complicat care îmbină mecanica, elecronica și echipamente de control, iar procedura de dezvoltare s-a schimbat mult față de vechile metode. Acest proces poate fi împărțit în cinci etape de bază:

prima etapă constă în definirea sistemului, unde inginerii de design specifică și

definesc cerințele pentru sistemul încorporat;

în a doua etapă, proiectare rapidă, inginerii dezvoltă strategia de control într-un

mediu simulat pe calculator sau stație de lucru, iar apoi se crează un prototip inițial al sistemului cu hardware în timp real;

în a treia etapă, faza de generare de cod, este generat codul de producție și manualul

optimizat pentru hardware-ul țintă;

pe parcursul celei de-a patra etape, inginerii vor testa hardware-ul țintă împotriva

unui mediu simulat; hardware-ul în timp real este folosit pentru a simula mediul real cu care are contact sistemul de control;

în cele din urmă hardware-ul țintă este implementat și integrat în sistem și se fac

testele finale pentru a se asigura că se îndeplinesc specificațiile.

Dintre cele cinci etape cel mai important rol îl are simularea pe calculator, pe parcursul căreia modelele de calculator sunt folosite pentru a recrea sau pentru a simula mediul de vehicule, și ECU este apoi conectat la mediul simulat.

Prototipul de control ABS[24] este construit pe baza unui sistem general de vehicul virtual, care constă în două părti conectate: simulare software pură și simulare hardware în buclă (HIL). În prima parte toate componentele sunt modelate prin soft, dezvoltat în platforma MATLAB/SIMULIK. În a doua parte platforma HIL este construită să includă un calculator server, componentele actuale ale automobilului, modulul ABS și actuatorul. Toate componentele sunt conectate împreună de un CAN (controller area network), inclusiv motorul, controlerul ABS, senzori și modelul automobilului, lucru evidențiat în figura fig. II.1.

Fig. II.1. Sistemul ABS

II.3.Unitatea de comandă ESP

În anul 1987, pionierii ESC-ului(Electronic Stability Control-ESC)[25], constructorii Mercedes-Benz, BMW și Toyota au introdus primul sistem de control al tracțiunii(Traction Control System-TCS). Controlul tracțiunii acționează frânarea individuală a roților și accelerația pentru a menține tracțiunea în timpul accelerației, dar spre deosebire de ESC nu îmbunătățește direcția.

În anul 1990, constructorul Mitsubishi a lansat autoturismul Diamante în Japonia. Era primul autoturism care integra controlul electronic activ al traiectoriei și controlul tracțiunii într-un singur sistem: TCL. Sistemul a fost dezvoltat pentru a ajuta șoferul să mențină traiectoria dorită în viraje: puterea motorului și frânarea sunt reglate automat pentru a asigura traiectoria adecvată în viraj și pentru a oferi un nivel suficient al tracțiunii în diverse condiții de carosabil.

Între 1987 și 1992 producătorul de autoturisme Mercedes și Robert Bosch GmbH[25] au dezvoltat în parteneriat sistemul numit ESP (Electronic Stability Programme)[25] – sistem de control al derapajului lateral, adică controlul electronic al stabilității. Mai apoi producătorul de autoturisme marca BMW, colaborând cu Robert Bosch GmbH și cu Continental Automotive Systems, a dezvoltat un sistem de reducere a cuplului motor pentru a preveni pierderea controlului și l-a aplicat întregii linii de autoturisme în anul 1992. În anul 1995, constructorii de automobile au introdus sistemele de control al stabilității. Mercedes-Benz, având drept furnizor Bosch, a fost primul constructor auto ce a introdus ESC-ul prin modelul S-Class W140. În același an, BMW, avându-i ca furnizori pe Bosch și ITT Automotive (ulterior Continental), și Volvo au început să ofere ESC-ul pentru o parte din modelele produse. În același timp Toyota a lansat propriul sistem VSC (Vehicle Stability Control) pe modelul Crown Majesta. Între timp, alți constructori au început cercetările pentru dezvoltarea propriilor sisteme.

În timpul testului „elanului” [25](evitarea bruscă unui obstacol) un jurnalist suedez a răsturnat autoturismul Mercedes A-Class (fără ESC) la viteza de 37 km/h. Drept urmare, prestigiosul constructor auto german a rechemat 130000 de mașini A-Class și le-a echipat cu ESC pentru a-și apăra reputația privind siguranța. În ziua de astăzi toți constructorii de autovehicule premium au implementat ESC-ul ca standard, iar numărul de modele echipate cu ESC continuă să crească.

Controlul electronic al stabilității (Electronic Stability Programme-ESP)[25] este unul din sistemele de siguranță activă pentru automobile. ESC este o tehnică computerizată de control și reglare a stabilității dinamice în mers a autovehiculelor, care asigură îmbunătățirea ei prin detectarea și minimizarea derapajelor și patinajelor. ESC-ul intervine atunci când detectează o pierdere a controlului asupra autovehiculului acționând sistemul de frânare astfel încât șoferul recapătă controlul asupra autovehiculului. Frânarea survenită este o acțiune automată, întreprinsă selectiv și independent pe oricare dintre roți (de ex., pe roata exterioară din față pentru contracararea supravirării sau pe roata interioară din spate pentru contracararea subvirării). Unele sisteme ESC reduc și puterea motorului până când șoferul recăpătă controlul asupra autovehiculului. Poate fi redusă accelerația mașinii prin oprirea alimentării cu carburant a motorului, șoferul sesizând că pedala de accelerație nu mai funcționează. ESC-ul nu îmbunătățește performanța în virare, ci previne pierderea controlului. Sistemul ESC se bazează pe mai mulți senzori care detectează diferențele de viteză de rotație între roțile față și spate precum și deplasarea șasiului în lateral față de traiectoria impusă de sistemul de direcție. Reacția ESP este foarte promptă, de ordinul milisecundelor. Organizația americană non-profit IIHS (Insurance Institute for Highway Safety) estimează că prin folosirea acestei tehnologii pe toate autoturismele o treime din numărul accidentelor fatale ar fi prevenite.

ESC-ul[25] funcționează pe orice suprafață, de la pavaj uscat până la lacuri înghețate. Reacționează și corectează derapajele mult mai rapid și mult mai eficient decât șoferul obișnuit, de cele mai multe ori chiar înainte ca șoferul să conștientizeze pierderea iminentă a controlului. Acest aspect a dus la îngrijorarea că ESC-ul va determina șoferii să devină prea încrezători în controlul lor asupra vehiculului și/sau în abilitățile de șofer. Din acest motiv, de obicei sistemele ESC informează șoferul atunci când intervin, pentru ca șoferul să știe că se apropie de limitele de manevrabilitate ale autovehiculului. Majoritatea ESC-urilor activează o lumină indicatoare de bord și/sau un ton de alertă. Unele sisteme ESC permit în mod intenționat ca traiectoria corectată a vehiculului să devieze foarte puțin de la traiectoria comandată de șofer, cu toate ca ESC-ul ar permite ca vehiculul să urmeze mai precis comanda șoferului. Funcționarea ESC se face simțită în virajele abordate brusc, în momentele în care traiectoria vehicululul are tendința de a scăpa de sub control, în special pe suprafețele cu aderență scăzută (zăpadă, asfalt ud, etc.).

Cei mai importanți senzori ai sistemului ESC sunt[25]:

senzor pentru unghiul de virare: determină intenția de virare a șoferului; (senzori magnetorezistivi),

senzor de viraj unghilar în jurul axei verticale: măsoară cât de mult virează autoturismul; datele de la senzorul pentru rotația mașinii sunt comparate cu datele de la senzorul pentru unghiul de virare și se determină mărimea de comandă pentru reglare,

senzor pentru accelerația laterală: este bazat tehnologic de obicei pe efectul Hall[8]; măsoară accelerația laterală a vehiculului,

senzor pentru măsurarea vitezii roților

Alți senzori pot fi[25]:

senzori pentru accelerația longitudinală; constructiv similari senzorilor pentru accelerația laterală, dar pot oferi și informații referitoare la tipul de asfalt de pe drum și pot oferi deasemenea informații referitoare la viteză și accelerație,

senzor de rotație: constructiv similar celui de viraj unghilar în jurul axei verticale, dar îmbunătățește precizia modelului de controler al vehiculului și corectează erorile care pot apărea de la estimările date de ceilalți senzori.

Partea centrală a ESC-ului este Unitatea Electronică de Control (ECU – Electronic Control Unit)[26], tehnologic un microprocesor electronic. ECU încorporează diferite tehnici de control. Adesea, același ECU este utilizat pentru mai multe sisteme în același timp (ABS, Controlul Tracțiunii, controlul climei, etc.). Semnalele de intrare sunt transmise prin intermediul circuitului de intrare către un controler digital. Starea în care se dorește poziționarea autovehiculului este determinată pe baza unghiului de virare, a gradientului său și a vitezei. Simultan, senzorul pentru unghiul de virare calculează starea actuală. Controlerul calculează forțele de frânare și accelerare necesare pentru fiecare roată individual și transmite comanda necesară valvelor modulatorului hidraulic. Printr-o interfață CAN unitatea electronică de control (ECU) este conectată cu alte sisteme (ABS, etc.) pentru a evita transmiterea de comenzi contradictorii.

II.4.Unitatea de comandă AIRBAG

Airbag-ul[27] în principul de funcționare este o pernă de aer. Aceasta este de fapt un dispozitiv de siguranță pentru autovehicule sub forma unui balon din material flexibil. Acesta este proiectat să se umfle rapid în cazul unei coliziuni, pentru a preveni lovirea pasagerilor de obiectele dure din interiorul autovehiculului. Pernele de aer au fost introduse la mijlocul anilor 1970 în SUA, pe când statisticile arătau că folosirea centurilor de siguranță se făcea rar de către șoferi. Acestea au fost introduse pe piață ca o alternativă a centurilor, cu un nivel de siguranță asemănător pentru coliziunile frontale.

Industria auto și comunitățile regulatoare și de cercetare și-au schimbat viziunea inițială a pernei de aer ca alternativă a centurii de siguranță și au desemnat-o ca fiind un sistem suplimentar de protecție.

Conceptual sistemul de pernă de aer este simplu. O unitate de control monitorizează anumiți senzori cum ar fi accelerometre, senzori de impact, senzori de viteză a roții, giroscoape, senzori de frână sau senzori de scaun. Când anumiți factori au fost atinși, unitatea de control activează combustia unui gaz care umflă rapid perna de aer. În momentul în care ocupantul autoturismului intră în contact cu perna, gazul scapă controlat prin mici găuri de ventilație. Pernele de aer frontale nu protejează ocupanții de ciocnirile laterale, din spate sau rostogoliri. De asemenea, deoarece pernele de aer se activează o singură dată, acestea nu oferă protecție în timpul coliziunilor multiple. La autoturismele care au senzori de rostogolire, în cazul în care se determină că accidentul este iminent, acestea activează automat pernele de aer frontale și laterale (tip cortină) pentru a proteja ocupanții de impactul cu interiorul, precum și de a nu fi aruncați în exterior.

Toate aceste îmbunătățiri aduse în industria automotivă sunt extrem de esențiale și importante atât pentru siguranța pasagerilor cât și pentru siguranța bunului material (automobilul în sine).

Deoarece aceste funcții sunt vitale automobilelor moderne consider că gradul lor de aplicabilitate în proiectul prezentat nu este posibil fiindcă ar implica un efort financiar enorm de mare dar și înlocuirea unor componente mecanice principale ale autoturismului cu unele automatizate este practic imposibilă datorată lipsei de fabricație a componentelor compatibile cu caroseria mașinii.

Așadar în proiect este utilizată o placă de dezvoltare Arduino Mega 2560 R3, care utilizează un procesor ATmega2560[22], iar ca și module compatibile cu această placă de dezvoltare se utilizează un modul GSM SIM900 GSM/GPRS[3], un display de 20×4 cu I2C[7] și doi senzori de proximitate HC-SR04[5], care vor crea un sistem încorporat relativ ieftin pentru automobilele mai vechi.

Capitolul III

Prezentare echipamente

În acest capitol aș vrea să vă prezint câteva informații de interes general despre componentele folosite pentru construirea sistemului. Pentru realizarea părții practice am folosit următoarele echipamente:

placa de dezvoltare Arduino MEGA 2560 R3,

modulul GSM IComsat SIM900 GSM/GPRS,

2 senzori de proximitate HC-SR04,

Display 20×4 I2C,

Debitmetru,

Pompița de sprițare la 12V,

Senzor REED,

Motoraș de 3,5V (pentru declanșarea senzorului REED),

Sursa de alimentare.

În continuare voi prezenta câteva detalii tehnice despre fiecare.

III.1 Placa de dezvoltare Arduino MEGA 2560 R3

Arduino MEGA 2560 R3[2] este o placă de dezvoltare bazată pe microcontroler-ul ATmega2560, un microcontroler pe 8 biți cu memorie programabilă de 16/32/64 KB.

Lungimea maximă și lățimea PCB MEGA 2560 sunt de 4 și, respectiv, 2.1 inch, cu conectorul USB și mufa de alimentare se extinde dincolo de fosta dimensiune. Șase găuri pentru șuruburi permit plăcii să fie atașată la o suprafață sau carcasă.

ATmega 2560[22] este proiectat pentru a fi compatibilă cu cele mai multe scuturi concepute pentru Arduino.

Fig. III.1.1 Arduino MEGA 2560 R3 spate

Fig. III.1.2 Arduino MEGA 2560 R3 față

Placa are[2] :

54 de pini digitali de intrare/ieșire, din care 15pot fi folosiți ca și ieși pentru alimentare,

16 intrări analogice,

4 porturi seriale harware,

un oscilator de 16MHz,

o mufă USB,

o mufă de alimentare,

un header ICSP,

un buton de resetare.

Fig. III.1.3 Arduino MEGA 2560 R3 componente

Placa se alimentează prin conectarea la calculator prin intermediul unui cablu USB sau prin o sursă de alimentare externă (o baterie sau un adaptor AC-DC de la 6 la 12V).

Adaptorul AC-DC se conectează la placă prin intermediul jack-ului. Dacă este alimentată cu o tensiune mai mică de 7V atunci pinul de 5V dă o tensiune mai mică de 5V și placa nu funcționeză corespunzător, fiind instabilă. Dacă este folosită o tensiune mai mare de 12V regulatorul de tensiune se supraîncălzește și se distruge placa. Astfel tensinea recomandată este între 7V și 12V.

Bateria se conectează la placă prin intermediul pinilor Gnd si Vin de la conectorul de alimentare. Acesta conține următorii pini[2]:

VIN- intrarea de tensiune a plăcii Arduino când este alimentată de la o sursă externă de tensiune,

5V- acest pin scoate 5V continuu de la regulatorul de pe placă indiferent de modul de alimentare al plăcii, evitând să se facă direct prin acest pin deoarece acest lucru ar duce la deteriorarea plăcii,

3V3- curentul maxim este de 50mA,

GND- împământare,

IOREF- acest pin oferă tensiunea de referință cu care operează microcontrolerul.

ATmega2560[22] are o memorie flash de stocare a codului de 256 kB, o memorie SRAM de 8kB si o memorie EEPROM de 4kB (care poate fi scrisă sau citită cu librăriile EEPROM).

Fiecare din cei 54 de pini digitali de pe placa Arduino MEGA 2560 R3[2] pot fi folosiți atât ca intrări cât și ca și ieșiri folosind funcțiile pinMode(), digitalWrite(), digitalRead() și funcționează la 5V. Fiecare pin generează sau primește un maxim de 40mA și are o rezistență internă de tip pull-up de 20-50 kOhmi. În plus, unii pini au funcții specializate:

Serial: 0 (RX) și 1 (TX); Serial 1: 19 (RX) și 18 (TX); Serial 2: 17 (RX) și 16 (TX); Serial 3: 15 (RX) și 14 (TX). Folosiți pentru a primi (RX) și transmite (TX) date seriale TTL. Pinii 0 și 1 sunt de asemenea conectați la pinii corespunzători ATmega16U2 USB-TTL ai cipului serial;

Întreruperile externe: 2 (întrerupe 0), 3 (​​întrerupe 1), 18 (întrerup 5), 19 (întrerupe 4), 20 (întrerupe 3), și 21 (întrerupe 2). Acești pini pot fi configurați să declanșeze o întrerupere la o valoare scăzută, o fluctuație sau o schimbare a valorii folosind funcția attachInterrupt();

PWM:. 2-13 și 44-46 furnizează cu funcția analogWrite() 8-biți PWM de ieșire;

SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Acești pini sprijină comunicare SPI folosind biblioteca SPI;

LED 13: Există un LED inclus pe placă conectat la pinul digital 13. Atunci când pinul are valoare mare LED-ul este pornit, atunci când pinul are valoare mică LED-ul este oprit;

TWI: 20 (SDA) și 21 (SCL). Suport pentru comunicarea TWI folosind biblioteca Wire;

ARef. Tensiune de referință pentru intrări analogice. Folosit cu analogReference().

Reset: resetează microcontrolerul.

Toate acestea sunt prezentate și în schema electrică a plăcii de dezvoltare Arduino MEGA 2560 R3 din Anexa 1.

Ca și utilizări placa poate fii folosită într-o gamă largă de domenii, spre exemplu pentru conectarea la internet prin intermediul WiFi, realizarea unei telecomenzi, automatizarea unei camere, la comandarea senzorilor de lumină, chitară electrică, orgă de lumini, robotică, ș.a.m.d.

III.2 Modulul GSM IComsat SIM900

IComsat este un scut GSM/GPRS[3] pentru Arduino care se bazează pe modulul SIM900 Quad-Band GSM/GPRS. Acesta este controlat prin intermediul comenzilor AT (GSM 07.07, 07.05 și SIMCOM comenzi îmbunatațite AT), și este pe deplin compatibil cu Arduino Mega 2560 R3.

Caracteristici[3]:

– Quad-Band 850/900/1800/1900 MHZ

– GPRS multi-slot clasă 10/8

– GPRS stație mobilă clasă B

– Conforme la GSM fază 2/2+

– Clasă 4 (2W@850/900MHz)

– Clasă 1 (1W@1800/1900MHz)

– Serviciu de mesagerie scurtă

– Selecție liberă a portului serial

– Suport RTC cu super cap

Alimentarea pornit/oprit și funcția de reset sunt suportate de interfața Arduino.

Fig. III.2.1. Modul GSM față Fig.III.2.2. Modul GSM spate

Modulul GSM este folosit în numeroase aplicații de avertizare sau atenționare prin intermediul unui SMS. Mai poate fii folosit ca modul de comandă pentru plăcile de dezvoltare prin intermediul unui apel sau SMS, aceasta poate fi programată să execute sau să trimită comenzi dacă este programată corespunzător.

Modul de aplicabilitate al modulului GSM este practic nelimitat, rămânînd la alegerea programatorului sau utilizatorlui plăcii, iar un atuu important îl oferă și funcția de GPRS.

Specificații electrice[3]:

Tabel III.2.1. Specificații electrice

Modulul GSM conține[3]:

indicatori LED;

3 butoane de control: unul de pornire a modulului, unul pentru resetarea modulului și unul pentru resetarea plăcii de dezvoltare Arduino MEGA 2560 R3;

Interfață GPIO, permite setarea sau colectarea nivelului logic de pe un pin al microcontrolerului și are 16 pini din care doi sunt pentru alimentare la 3V (pinul 1 și pinul 16) și doi de GND( pinul 2 și pinul 15);

Interfață PWM și IIC ;

Com switch;

Debug port;

Interfață pentru Arduino;

RTC super-cap;

Interfața pentru difuzoare și microfon;

Multiplexor UART;

Interfața UART care permite comunicarea serială și are 8 pini,

toate acestea fiind prezentate în Fig. III.2.3.

Fig. III.2.3. Schema Modulului GSM

III.3 Senzorul de proximitate cu ultrasunete HC-SR04

Senzorul de proximitate HC-SR04[5] este un senzor ce folosește ultrasunetele pentru a determina distanța până la un obiect, asemanător cu liliecii și delfinii. Oferă o excelentă rază de detecție fără contact cu o precizie ridicată și citiri stabile, de la o distanță de 2 cm până la o distanță de aproximativ 450 cm. Acțiunea lui nu este afectată de lumina soarelui sau de materialele închise la culoare. Are un modul care conține atât emițătorul cât și receptorul cu ultrasunete. Caracteristicile de funcționare ale senzorului HC-SR04 sunt următoarele[5]:

tensiune de alimentare – 5V CC;

consum de curent – 15mA;

frecvență de lucru – 40Hz;

distanță maximă de detecție – 4,5m;

distanță minimă de detecție – 2cm;

impuls de intrare Trigger – minim 10µs, nivel logic TTL;

impuls Echo – impuls pozitiv de nivel logic TTL, cu o lățime proporțională cu distanța de măsurat;

dimensiuni reduse –45*20*15mm.

Conectarea pinilor senzorului pentru o funcționare corectă se face după cum urmează[5]:

• Vcc – sursă de tensiune stabilizată de 5V CC;

• Trig – ieșire digitală a microcontrolerului;

• Echo – intrare digitală a microcontrolerului;

• GND – se conectează la masă.

Fig.III.3.1. Senzorul de proximitate HC-SR04

Principiul de funcționare[5] al acestui senzor este foarte simplu. Senzorul va emite un impuls trigger pe o durată de timp de minim 10µs. După scurgerea celor 10µs impulsul trigger va fi oprit și se așteaptă întoarcerea impulsului ultrasonic. La întoarcerea acestuia se pornește un timer care va măsura durata acestui impuls. Cum viteza de răspândire a ultrasunetelor în aer este de 340m/s, pe baza înregistrărilor făcute de timer t, putem calcula distanța (s) dintre obstacol și emițător, și anume: s = 340*t/2.

Fig. III.3.2. Schema funcționării senzorulu

III.4. Display I2C 20×4

Display-ul[6] folosit în acest proiect este de tipul 20×4, adică 20 de caractere dispuse pe 4 rânduri. Display-ul este monocrom, acesta, în particular, afișează caractere negre pe fundal verde, dar mai exista și alte combinații de culori. Acest tip de display poate fi întâlnit în componența mai multor tipuri de echipamente, cum ar fi: copiatoare, imprimante, faxuri, diferite echipamente de rețea, echipamente industriale de testare sau măsurare, ș.a.m.d.

Există mai multe tipuri de display-uri de acest fel, doar ca diferă numarul de dispunere al caracterelor pe ecran, cele mai întîlnite fiind 16×2, 20×2 și 20×4 , dar mai există și altele mai puțin utilizate.

În fig. III.4.1 este prezentat un display LCD de 20×4, identic cu cel folosit de mine în proiect, având caracterele de culoare neagră afișate pe un fundal de culoare verde.

Fig.III.4.1. Display I2C 20×4

Caracteristicile de funcționare ale display-ului I2C sunt[6]:

tensiune de alimentare: 5V,

interfața: I2C,

adrese I2C: 0x20 la 0x27 (adresa standard 0x20),

ajustare contrast- se face cu ajutorul unui potențiometru,

dimensiune: 98x60x24 mm,

modulul poate fi ușor conectat la microcontroler.

Conectarea modului I2C[7] se face prin următorii pini la placa de dezvoltare Arduino Mega 2560 R3:

VCC – 5V

GND – GND

SDA- pinul digital 20

SCL- pinul digital 21.

Fig. III.4.2. Pini interfață I2C

Display-ul suportă doua tipuri de interfață:

interfața I2C cu rata de data de 100 kbps,

interfața serială TTL are o rată de transfer de: 2400, 4800, 9600 și 19200 bps (standard 9600 bps), 8 biți pe caracter, fără paritate, un bit de oprire și fără control de debit.

Comunicarea cu interfața se face în funcție de starea jumper-ului aflat pe modul. Dacă jumper-ul este present (standard din fabrică) folosește interfața serială, iar dacă jumper-ul este anulat atunci folosește interfața I2C.

III.5 Debitmetru

Debitmetrul[9] este realizat dintr-un corp de plastic, un rotor si un senzor Hall[8]. Când apa trece prin el, rotorul se invarte. Viteza lui diferă în funcție de debit. Senzorul Hall trimite impulsuri corespunzatoare vitezei.

Fig. III.5.1 Debitmetru

Dimensiunile senzorului Hall[8] sunt extrem de reduse, grosimea semiconductorului fiind în jur de 0.01 mm iar laturile de ordinul milimetrilor de aceea pot fi utilizați la debitmetre. Aceștia sunt senzori activi, care necesită alimentare cu energie electrică. Astfel, cei mai simpli senzori Hall au cel puțin 3 pini:

tensiune alimentare, UA (intrare)

masă

tensiune Hall, UH (ieșire)

Fig.III.5.2 Senzorul Hall

Tensiunea de ieșire Hall (UH) este direct proporțională cu intensitatea câmpului magnetic. Deoarece valoare tensiunii este foarte mică, toți senzorii de tip Hall au integrate amplificatoare electronice și circuite de reglare pentru a ridica tensiunea de ieșire a senzorului în jurul valorii de 5V.

Caracteristicile debitmetrului sunt urmatoarele[9]:

compact, ușor de instalat

performanță ridicată

senzor Hall calitativ

Voltaj min – 4.5V

Curent max – 15mA (5V)

Debit: 0.3-6L/min.

Eu folosesc acest debitmetru în proiectul meu pentru calcularea consumului de benzină la automobilele mai vechi, care nu au acest lucru din fabricație. El se montează pe conducta de alimentare a carburatorului cu benzină. Dacă se montează înaintea pompei de benzină, pe conducta principală, consumul de carburant nu poate fi contorizat deoarece pompa de benzină dispune de o supapă de retur, care preia excesul de carburant din aceasta și îl pompează înapoi în rezervor. Excesul de carburant din pompă e generat de camera de plutire a carburatorului, în care se află un plutitor cu cui pontou care acționează ca un robinet.

III.6 Senzorul REED

Senzorul REED[4] este alcătuit din două lamele feromagnetice, de obicei aurite, iar zona de contact electric este amestecată cu mercur. Lamelele sunt închise ermetic într-un tub de sticlă din care ies către exterior doua sârme pentru legături electrice. În prezența câmpului magnetic, liniile de câmp se concentreaza în zona lamelelor, care constituie o cale de rezistență magnetică mică. Între lamele apare o forță de atracție magnetică. Când forța este suficient de puternică pune în contact lamele și închide contactul electric.

Fig. III.6.1. Senzorul REED

Energia câmpului magnetic în volumul delimitat de suprafețele celor doua lamele aflate față-n față S, la distanța y este:

W = S·y·B2 /0

unde B este inducția câmpului magnetic, și 0 permeabilitatea magnetică a vidului sau aerului. Forța exercitată între lamele va fi:

F = dW/dy = S·B2 /0

,adică direct proporțională cu suprafața de contact S și cu pătratul câmpului magnetic dintre lamele (care depinde implicit de distanța dintre lamele, dacă distanța este mare).

Contactele REED nu au nevoie de întreținere și sunt foarte bine protejate contra murdăriei și prafului. Contactele placate cu rodiu asigură un timp de viață lung (106-107 acționări la 10 mA). Ele pot comuta curenți de 0,1-0,2 A la 100-200V. Contactele amestecate ("udate" cu mercur) pot comuta curenți de 1 A fără vibrații generatoare de zgomot electric. Contactele REED sunt disponibile cu contact normal deschis, contact normal închis și contacte de clasa C. Se fabrică și relee cu automenținere (latching).

Utilizarea contactelor REED în foarte multe aplicații este asigurată de simplitatea constructivă, prețul mic, siguranța în funcționare și consumul nul de putere. În sistemele de securitate pentru monitorizarea deschiderii ușilor și ferestrelor se atașeaza un magnet permanent de partea mobilă, iar de partea fixă se montează un contact REED pe post de senzor de proximitate. Contactele se închid când magnetul este suficient de aproape ( uși, geamuri închise) și se deschid la depărtarea magnetului (uși, geamuri deschise). Dorința de a sesiza aproape orice în autovehicule face să crească numarul aplicațiilor cu senzori REED din industria autovehiculelor. El mai are aplicații și la biciclete la kilometraje.

III.7 Pompița de sprițare

Este utilizată în domeniul automotive ca pompă pentru lichidul de parbriz, în special la mărcile Peugeot, Renault și Dacia. Are un debit de 1500ml/min ș se alimentează la o tensiune de 12V.

Fig.III.7.1. Pompița de sprițare

În proiectul meu o utilizez, împreună cu debitmetrul, la simularea fluxului de carburant de la pompa de benzină la carburator. Aceasta pompă simulează practic pompa de benzină mecanică, care asigură alimentarea carburatorului cu benzină.

III.8. Sursa de alimentare

Acesta este utilizată în proiect la punerea în funcțiune a pompiței de șprițare. Am ales sa folosesc un alimentator universal în comutație 1000mA, care are o gamă largă de întrebuințări în domeniul electronicii și are o selecție de tensiune de ieșire de 3-12V DC.

Caracteristicile tehnice sunt următoarele:

tensiune de intrare: 100-240V~ 50/60Hz (AC),

tensiune de ieșire: 3/4.5/5/6/7.5/9/12V (DC),

curent de ieșire: max. 1000mA,

dimensiuni: 75x73x32 mm.

Capitolul IV

Partea practică

IV.1 Proiectarea harware și asamblarea componentelor pe o machetă

Pentru a prezenta funcționalitatea sistemului meu am creat o schemă bloc a sistemului având la bază placa de dezvoltare Arduino iar ca periferice avem un display, un senzor REED, un debitmetru, un modul GSM și doi senzori de proximitate. De menționat este că, ca parte din sistem mai avem și două module auxiliare cum ar fi motorașul pentru pompare a lichidului dar și motorașul electric pentru angrenarea elicei. Aceste două module auxiliare sunt total independente de placa de dezvoltare și de periferice având o sursă de alimentare auxiliară.

Fig. IV.1.1 Schema bloc a sistemului

La construcția machetei s-a folosit în primul rând o bucată de pal laminat de 40/27/1,5 cm la care s-au adăugat patru picioare metalice reglabile marca Dedeman prinse în holșuruburi de 4/16 mm, rezultând astfel suprafața de contact a machetei.

Trecând de la execuția machetei la montarea componentelor a mai fost necesară confecționarea unei “elice”care va servi ca suport rotativ pentru magnetul senzorului REED. La realizarea acesteia s-a folosit o baghetă din lemn de cireș de 20/1/0.3 cm pe care la un capăt s-a montat magnetul senzorului iar la capătul opus pentru centrare și stabilizare s-a montat un șurub cu piuliță iar în centrul baghetei s-a atașat suportul de fixare a elicei de motoraș.

Fig. IV.1.2 Poza elicei cu magnet

După confecționarea acesteia s-a trecut la executarea unei găuri de 33 mm în diametru pe suprafața de contact a machetei pentru montarea unui motoraș electric de 3V care va fi prins de placă cu axul rotativ și elicea în partea inferioară a machetei cu ajutorul a două șuruburi M5.8/30 mm și 6 piulițe hexagonale M5, două din acestea servind la centrarea motorașului față de placă și la reglarea în înălțime. Am ales montarea motorașului și a elicei în partea inferioară a machetei pentru a reduce din dimensiunile acesteia dar și ca măsură de siguranță în cazul desprinderii elicei sau defectarea acesteia.

Acestea fiind montate s-a executat în suprafața de contact a machetei un canal special în care s-a montat senzorul REED cel care va înregistra mișcarea de rotație ce simulează deplasarea autovehicolului.

În poza IV.1.3 va fi prezentat motorașul electric cu gaura de 33 mm, șuruburile de fixare cu plăcuța de fixare a motorașului și senzorul REED.

Fig. IV.1.3 Poza senzorului REED și a motorașului montat

După montarea componentelor s-a efectuat un reglaj al elicei pe înălțime asigurând astfel un spațiu maxim tolerat de 3 mm față de senzor cum este prezentat in Fig. IV.1.4

Fig. IV.1.4 Poza cu distanța minimă necesară intre senzor și magnet

Acest spațiu maxim este important pentru declanșarea senzorului, altfel câmpul magnetic între senzor și magnet nu ar fi generat iar declanșarea nu s-ar efectua rezultând o eroare la citirea lui. După montarea senzorului și a motorașului care angrenează elicea s-a trecut la fixarea pe machetă a plăcii de dezvoltare cu modulul GSM, a display-ului, a debitmetrului, a pompei motoraș lichide, a senzorilor de proximitate și a magistralei IDE după cum este prezentată în figura IV.1.5.

Fig. IV.1.5 Așezarea în machetă a componentelor

Conexiunea dintre componente s-a efectuat cu ajutorul unor fire de 20 cm de diferite culori special concepute pentru plăcile de dezvoltare dar și cu ajutorul unei magistrale IDE.

Această magistrală a fost folosită și modificată pentru a avea mai multe surse de alimentare cu 5V și împământare dar și pentru a scurta numărul de fire folosite la conectarea senzorilor de proximitate și a debitmetrului de lichide.

Astfel a rezultat macheta mea care prin funcționarea tuturor componentelor va simula concomitent un consum de carburant determinat de kilometrii parcurși și viteza de deplasare dar și funcționarea senzorilor de parcare la întâlnirea unui obstacol. În teorie modulul GSM încorporat pe placa de dezvoltare va funcționa numai când autovehicolul este staționat iar alarma mașini este activă, funcționarea acesteia va fi executată simulând o declanșare a alarmei prin pinul 30 programat de pe placa de dezvoltare.

IV.2 Proiectarea software

În acest capitol voi explica funcționalitatea sistemului creat de mine în etapele principale dar și procesul de proiectare al arhitecturii unui sistem software complex. Aici avem de parcurs trei etape importante, iar acestea sunt[15]:

-determinarea funcțiilor și progrămelelor care influențează arhitectura;

-proiectarea arhitecturii;

-validarea;

Fig. IV.2.1.Etapele parcurse în proiectarea unei arhitecturi pentru un sistem software

Acum pentru a crea softul necesar sistemului meu a fost nevoie de a crea prima dată individual fiecare bucată din soft pentru a executa anumite comenzi sau calcule urmând ca mai apoi la sfarșit să asamblez în întregime softul final. Acest lucru a fost posibil cu ajutorul unui soft special[1] oferit de Arduino care permite scrierea softului cu ușurință având librării special destinate componentelor produse de ei.

În primă etapă am început scrierea codului pentru senzorul de proximitate acesta fiind relativ ușoară prin intermediul exemplelor din librăria proprie.

În primă etapă aveam nevoie de o schemă bloc a softului pentru a putea incepe cu proiectarea software așa că am decis să îmi creez una arătând astfel:

Fig. IV.2.2 Schema bloc a creeri softului.

În următoarele etape voi prezenta pe scurt cum am compus în programul de testare Arduino MEGA 2560 R3[2] softul necesar dezvoltarii sistemului meu.

IV.2.1. Program testare placă Arduino și display I2C

Cu ajutorul softului[21] și a librăriilor acestuia am introdus și definit librăriile necesare programului meu cum ar fi:

#include <Wire.h>

#include <LCD.h>

#include <LiquidCrystal_I2C.h>

Aceste prime trei lini reprezintă o directivă preprocesor care la rularea softului când acesta este compilat, să substituiască liniile respective cu conținutul unui fișier sau al entității la care se referă. Folosind un display LCD dotat cu o interfață seriala a mai fost nevoie în cod să definim și portul serial de care dispunem:

#define I2C_ADDR 0x27 // Am definit adresa I2C unde se află mC PCF8574A

#define BACKLIGHT_PIN 3

#define En_pin 2

#define Rw_pin 1

#define Rs_pin 0

#define D4_pin 4

#define D5_pin 5

#define D6_pin 6

#define D7_pin 7

Trecând de la etapa aceasta la următoarea am constatat că display-ul meu este dotat cu lumină de fundal care poate fi activată prin funcția:

Lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); // Aprinde lumina display-ului

lcd.setBacklight(HIGH); //HIGH=Aprinsă/LOW=Stinsă

lcd.home (); // Întoarcere acasa

Pentru a printa un mesaj pe display se folosește funcția “lcd.print(“mesajul dorit”)”, iar trecerea de la un rând la altul se face cu ajutorul funcției “lcd.setCursor ( 0-20 ,0-4)”. De asemenea pentru a afișa continuu mesajul dorit se folosește o funcție denumită void loop care odată afișat complet ciclul display-ului programat îl reia de la început menținându-l într-o buclă permanentă până ce va primi o comandă nouă (în cazul unui program mai complex). Ca exemplu avem un program relativ simplu care menține afișajul aprins și ne afișează mesajul dorit:

Fig. IV.2.3 Cod sursă pentru display[1]

void setup()

{

lcd.begin (20,4); // Tipul display-ului folosit de mine

lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);

lcd.setBacklight(HIGH);

lcd.home (); // Întoarcere acasa

lcd.print("ATENTIE");

lcd.setCursor ( 0, 1 ); // Trecere la a doua linie

lcd.print("TIMPUL TRECE");

lcd.setCursor ( 0, 2 ); // Trecere la a treia linie

lcd.print("LUCRA LA LICENTA");

lcd.setCursor ( 0, 3 ); // Trecere la a patra linie

lcd.print("03 IULIE 2014 ");

}

void loop()

Iar pe afișaj va arăta așa:

Fig. IV.2.4 Afișaj cu programul rulat

IV.2.2.Program citire senzor proximitate

Pentru crearea acestui program s-a trecut practic la dezvoltarea programului pentru LCD dar s-au mai adăugat două funcții pinMode, acestea configurează PIN-ul specificat să se comporte fie ca o intrare digitală, fie ca o ieșire digitală în funcție de necesitatea utilizatorului.

Ex:

int ledPin = 13; // ledul este conectat la poziția 13

void setup()

{

pinMode(ledPin, OUTPUT); //setează pinul digital ca pin de ieșire

}

void loop()

{

digitalWrite(ledPin, HIGH); //aprinde ledul

delay(1000); //așteaptă o secundă

digitalWrite(ledPin, LOW); //stinge ledul

delay(1000); //așteaptă o secundă

}

De aceea am definit pinul meu 39 ca fiind pin de intrare și să recepționeze pulsul ECHO de la senzorul de proximitate, iar pinul 38 să fie pin de ieșire și să transmită pulsul de declanșare TRIG al senzorului de proximitate. Valorile obținute s-au calculat cu o formulă matematică:

s = 340*t/2.

Unde : s – este distanța

340 – este viteza cu care se răspândesc ultrasunetele în aer și este măsurată în m/s

t – este timer-ul plăcii de dezvoltare

Cu ajutorul acestei formule s-a determinat distanța între obiectiv și senzor apoi a fost afișată pe display.

Ca și cod scris avem:

#define ECHOPIN 39 // Pin intrare puls ECHO

#define TRIGPIN 38 // Pin ieșire puls TRIG

……

……

..…

void loop()

{

digitalWrite(TRIGPIN, LOW); /*

delayMicroseconds(2); *

digitalWrite(TRIGPIN, HIGH); * începe numărătoarea

delayMicroseconds(10); *

digitalWrite(TRIGPIN, LOW); *

float distance = pulseIn(ECHOPIN, HIGH); */

distance= distance/58; //aici avem formula de calcul pentru sensor(setată de producător)

……

……

..…

Pentru a putea înțelege mai bine cele spuse anterior și implicit modul de funcționare al senzorului am încercat să ilustrez în Fig.IV.2.3 modul de funcționare al acestuia.

Fig. IV.2.5.Modul de funcționare a senzorului de proximitate

Imaginea ce ne va fi dispusă pe display va fi ușor de citit și interpretat:

Fog. IV.2.5.Afișaj program sensor proximitate

IV.2.3. Program citire senzor REED

Prin simplitatea softului și a gamei largi de utilizare a plăcii de dezvoltare am adaptat un senzor REED, luat de la un kilometraj de bicicletă, pe macheta mea și am programat pinul trei digital de pe placă. Pinul 3 al microconotrolerului este configurat pentru întreruperi. De aceea de fiecare dată când avem o rotație completă, senzorul Reed va genera o întrerupere către microcontroler. Prin software noi măsurăm timpul scurs între două asemenea întreruperi, obținând durata unei rotații complete a roții. Lungimea roții fiind constanta pi înmulțită cu diametrul, putem foarte ușor să calculăm viteza ca fiind: V = distanța /timp, unde distanța este egală cu pi*diametrul[10], iar diametrul roții este de 26 de inci. De aici rezultă și codul:

#define DISTANTA 3 // Pin de intrare definit pentru distanță

#include <Wire.h> // include librarii

#include <LCD.h>

int n = 1; //s-au definit variabilele globale

long int old_time; //s-au definit variabilele globale

long int elapsed_time; //s-au definit variabilele globale

long int milliss; //s-au definit variabilele globale

void loop()

{

lcd.setCursor(0, 0);

lcd.print("TIMPUL SCURS ESTE:");

lcd.setCursor(2, 1);

lcd.print(" ");

lcd.setCursor(5, 1);

lcd.print(elapsed_time);

lcd.print("ms"); //s-a prezentat până aici ce va afișa display-ul

void Intrerupere_Distanta(void) /*

{ *

if (millis() – old_time >=15) *

{ * Aici se calculează numărul de rotații

milliss = millis(); * înregistrate de senzor

elapsed_time = (milliss – old_time); *

old_time = milliss; *

} */

}

Pentru a putea determina viteza de deplasare a autovehicolului prima dată a fost necesară calcularea numărului de cicluri înregistrat de senzorul meu pentru a determina mai târziu viteza cu care se deplasează prin formula clasică[10] :

viteza = (PI * DIAMETRU * 25.4 / elapsed_time) * 3.6; mai exact:

V = 3.14 * 26 * 25.4 / timp [mm / ms] = [m/s] * 3.6 = [km/h]

de unde: 1 inch = 2.54 cm = 25.4 mm

1 m/s = 3.6 km/h

care provine din conversia matematică: 1 m / s = 0.001 km / (1/3600)H = 3600 / 1000 = 3.6 km/h

Fig. IV.2.6.Rularea și afișarea programului pe Arduino

IV.2.4. Program citire debitmetru

La citirea debitmetrului s-a declarat pinul digital 2 ca locația pinului pentru senzorul HALL ce face parte din componența debitmetrului urmând ca placa de dezvoltare prin intermediul pinului să măsoare declanșarea lui printr-o funcție numită void rpm în felul următor:

volatile int NbTopsFan; //masoara urcarea senzorului

int Calc;

int hallsensor = 2; //pin de intrare definit pentru senzorul HALL

void rpm () //functia de intrerupere apelata

{

NbTopsFan++; //aceasta funcție măsoara marginea de urcare și

coborâre a senzorului HALL

}

void setup()

{

pinMode(hallsensor, INPUT); //initializarea pinului 2 ca pin de intrare

Serial.begin(9600); //functie de setare unde portul serial este initializat

attachInterrupt(0, rpm, RISING); //atasarea intreruperii

}

void loop ()

{

NbTopsFan = 0; //Seteaza NbTops la 0 este pregatit pentru calculare

sei(); //cupleaza intreruperile

delay (1000); //asteapta o secunda

cli(); //decupleaza intreruperile

Calc = (NbTopsFan * 60 / 7.5); //(Pulsul de frecventa x 60) / 7.5Q, = debitul in L/ora

Serial.print (Calc, DEC); //printeaza numarul calculat pe monitorul serial

Serial.print (" L/hour\r\n"); //printeaza pe ecran

}

În următoarea figură voi prezenta fizic numărătoarea efectuată de placa de dezvoltare Arduino MEGA 2560 și debitmetru prin intermediu monitorului serial cu care este dotat software-ul Arduino. Momentan consumul de carburant nu poate fi efectuat deoarece valoarea afișată este produsă prin pomparea aerului prin conductele debitmetrului. Adevărata valoare a consumului de carburant va fi calculată abia după calibrarea senzorului și se va determina cu o formulă în funcție de viteza de deplasare și debitul de lichid care circulă prin debitmetru.

Fig. IV.2.7.Testarea debitmetrului cu ajutorul softului Arduino

IV.2.5. Program modul GSM pentru SMS-uri

Cea mai mare provocare din tot proiectul meu a fost aceea de a face modulul GSM să trimită și să recepționeze SMS-uri. Lipsa de documentație oferită de producător la achiziție dar și cea din spațiul virtual și numărul mare de librării destinate modulului GSM IComsat SIM900 au îngreunat semnificativ comunicarea cu placa de dezvoltare Arduino MEGA 2560.

La achiziția modulului pe portul UART multiplexor avem gata montată o punte de legătură între pinii D0 și TXD iar apoi încă una între pinii D1 și RXD, acestea lăsate la locul prestabilit vor bloca comunicarea între portul serial al plăcii de dezvoltare și portul UART al modulului GSM.

Eliminarea punților de legătură și adăugarea a două cabluri de 1×20 cm de la portul UART la portul serial al plăcii de dezvoltare va permite comunicarea serială a modulului GSM și funcționalitatea corectă a acestuia, reușind efectuarea transferului de date între modul și placă.

Deasemenea este de menționat că efectuarea conexiunilor între modul și placă prin portul UART și serial se face încrucișat de la pinul TXD al modulului la pinul RXD1 – 19 al plăcii și pinul RXD al modulului la pinul TXD1 – 18 al plăcii de dezvoltare reprezentat prin figura următoare.

Fig. IV.2.8. Schema de legătură între modul și placă

Pentru alcătuirea codului necesar SMS-ului s-a inițializat în primă fază un program tip exemplu din librăria destinată special modulului GSM în care s-a verificat compatibilitatea modulului GSM cu placa de dezvoltare Arduino MEGA 2560 arătând astfel:

#include <SoftwareSerial.h>

#include <GSM_Shield.h>

//*********************************************************************

char number[]="0040769xxxxxx"; //număr de destinație

char text[]="hello world"; //SMS to send

byte type_sms=SMS_UNREAD; //tipul SMS-ULUI

byte del_sms=0; //0: nu șterge sms – 1: șterge SMS

//*********************************************************************

GSM gsm;

Urmat de codul sursă pentru pornire modulului GSM, iar apoi va urma :

Serial.print("Send SMS to ");

Serial.println(number);

error=gsm.SendSMS(number,text);

if (error==0) //Check status

{

Serial.println("SMS ERROR \n");

}

else

{

Serial.println("SMS OK \n");

}

break;

Din acest cod sursă putem elabora softul pentru a putea utiliza modulul GSM pe post de telefon îndeplinind funcțiile principale ale unui telefon normal, cum ar fi: primire apel, executare apel, primire SMS și trimitere SMS, dar formarea sau apelarea numerelor care nu sunt gata stabilite și implementate în sistem nu este posibilă deoarece sistemul nu dispune de taste de intrare numerice.

Fig. IV.2.9.Reprezentarea grafică a funcției pentru SM

IV.2.6. Validarea

În această etapă noi trebuie să ne asigurăm că produsul obținut corespunde în întregime cerințelor inițiale în proiectarea sistemului. Mai mult, pentru a ne asigura de acest lucru, noi putem testa produsul aflat în această etapă pentru validare. Dacă considerăm că se mai pot face îmbunătățiri în această etapă pot fi făcute modificări neprevăzute în proiectul inițial.

În cazul proiectului de față, neexistând un client beneficiar al proiectului, eu am fost cel care s-a asigurat de îndeplinirea tuturor cerințelor. Au fost aduse și unele mici modificări de design sau funcționalitate cum ar fi adăugarea unui buton pentru simularea declanșării alarmei și două potențiometre destinate reglării turației care simulează mersul mașinii și consumul de carburant.

IV.2.7. Verificarea și testarea sistemului

Deși în schema initială nu a fost inclusă această etapă consider că este importantă și necesară la depistarea erorilor neprevăzute. Această etapă constă în testarea repetată a produsului obținut, în diferite condiții reale de funcționare a sistemului.

Pe lângă diferitele erori posibile, în această etapă mai au loc și operațiuni de optimizare a codului sursă. Optimizarea este foarte importantă atât pentru funcționarea corectă a produsului, cât mai ales pentru creșterea vitezei de execuție și pentru reducerea cât mai mult posibil a spațiului ocupat de către soft, sau reducerea memoriei folosite în timpul rulării.

În această etapa a proiectului, codul sursă folosit a suferit modificări substanțiale datorită erorilor de programare vaste ce periclitau finalizarea proiectului.

Probleme de programare majore s-au întâmpinat la construcția codului sursă destinat modulului GSM unde datorită librăriilor defectuoase obținute prin intermediul Internetului conexiunea modulului cu placa era practice inexistentă, iar pachetele de date nu puteau fi inițializate.

Odata rezolvată problema librăriilor, conexiunea modulului GSM cu placa de dezvoltare Arduino s-a efectuat fără probleme, inițierea apelurilor de tip voce fiind permisă din prima încercare.

O altă problemă întâlnită a fost la expedierea și recepționarea SMS-urilor unde codul sursă nu a recunoscut dar nici nu a semnalat vreo eroare în cod la introducerea prefixului destinat României, apelurile de tip voce erau premise iar cele de tip date se întorceau cu mesaj de eroare la expediere.

Ca exemplu real este :

+40769xxxxxx permite efectuarea apelurilor tip voce dar nu apelurilor de tip date;

0040769xxxxxx permite efectuarea apelurilor tip voce dar și apelurilor de tip date.

Fiind rezolvate aceste probleme din sistem consider că verificarea și testarea produsului este una din cele mai importante etape din procesul de proiectare architecturală al unui sistem, proces la care ar trebui să se aloce o mare parte din timpul acordat proiectării lui.

Capitolul V

Modul de funcționare

În acest capitol vom explica detaliat funcționarea întregului sistem de la pornirea lui și până la finalizrea tuturor funcțiilor. În anexa doi avem dispusă schema software a funcționării programului.

La pornirea sistemului pe display apar un set de funcții setup ce vor rula numai o singură dată, folosite pentru inițializarea perifericelor. Inițial apare pe display un mesaj de întâmpinare care conține următoarea frază: “Lucrare de licență CLAUDIU VIȘAN ” . După mesajul afișat, care va dura timp de câteva secunde, ecranul se va reseta și va rămâne cu lumina aprinsă până la pornirea modulului GSM.

b)

Fig.V.1.a) și b) Starea display-ului la inițializarea sistemului

După inițilizarea modului GSM programul meu va intra automat în modul de rulare-executare, scanând continuu schimbări în variabilele periodice dar și în panoul comenzilor. În timpul rulării programului se execută simultan urmatoarele funcții:

Viteza de deplasare,

Calculul consumului,

Atenționare obstacole,

Avertizare prin SMS la declanșarea alarmei.

V.1. Viteza de deplasare

Pentru determinarea vitezei de deplasare a fost necesară creerea unui cod de citire și numerotare a rotațiilor efectuate de sistemul de declanșare a senzorului REED. Acest senzor în realitate va fi montat în vecinătatea cablului de kilometraj. Acest cablu de kilometraj[17][18] este alcătuit dintr-o cămașă protectoare și un cablu oțelit. Pentru a realiza montarea senzorului vom secționa cămașa protectoare în două părți egale, urmând ca cele două secțiuni să fie prinse pe caroseria mașinii pe un suport improvizat, iar pe cablul de oțel va fi montată o elice care va transmite mișcarea de rotație prin dreptul senzorului REED, efectuând declanșarea acestuia. Această mișcare de rotație este transmisă prin cămașă de cablul de kilometraj care este angrenat la rândul lui de cutia de viteze a autovehicolului[19]. Pentru a înțelege mai exact rolul cablului de kilometraj voi explica pe scurt întrebuințarea lui.

Acest cablu face legătura între cutia de viteze a mașini și instrumentele de bord ale mașini. Cablul preia mișcarea de rotație de la cutia de viteze[20] (singura care poate transmite o mișcare de rotație în timpul deplasării autovehicolului) și o transmite la ceasul de bord al mașinii care ne indică viteza de deplasare și numărul de kilometri parcurși. Acest proces de funcționare este unul mecanic, deoarece toate mașinile mai vechi nu au în dotarea lor componente electronice ce pot determina viteza de deplasare și numărul de kilometri parcurși.

Fig.V.1.1.Reprezentarea grafică a senzorului pe caroserie

Cu ajutorul formulei de calcul V=d/t am reușit în program să determin viteza de deplasare a autovehicolului folosind funcția[10]: viteza = (PI * DIAMETRU * 25.4 / elapsed_time) * 3.6;

unde : pi=3,14

diametrul= 26 inci(determinat prin dimensiunea roții)

25,4 provine de la distanța parcursă într-o rotație completă măsurată în mm

elapsed_time este timpul între numărători la o rotație completă

3.6 provine din conversia matematică: 1 m / s = 0.001 km / (1/3600)H = 3600 / 1000 = 3.6 km/h

La finalul executării funcției vom avea deja afișat pe ecran numărul de kilometri pe oră cu care se deplasează autovehicolul după cum este reprezentat prin figura următoare.

Fig.V.1.2 Afișarea vitezei de deplasare pe display

V.2.Calculul consumului

Consumul de combustibil[17] pentru automobile poate fi calculat prin mai multe metode și formule. O metodă foarte simplă este efectuarea raportului dintre combustibilul consumat si kilometrii parcurși efectiv. Acest tip de calcul nu este sută la sută corect deoarece avem prea multe variabile influențate de vreme și de gradul de înclinație al automobilului. Așa că acest sistem pentru mașinile mai vechi ar fi necesar și esențial măsurării consumului de carburant.

Automobilele mai noi au această funcție gata implementată în softul calculatorului de bord, dar calculează total diferit față de sistemul proiectat de mine. Ele se folosesc de informația primită de la injectoarele mașinii care numară timpul de deschidere și închidere al acestora iar în funcție de acest interval de timp se poate calcula debitul conbustibilului trecut prin injectoare.

Calculatorul de bord are ca și constantă implementată și definită în soft nivelul maxim de carburant al rezervorului detectat cu ajutorul unui așa zis plutitor, care de fapt este un rezistor variabil(varistor). Plutitorul acționeaza ca un potentiometru calibrat care pe minim și pe maxim are o valoare stabilită și înregistrată ca variabilă în calculatorul de bord. Aceaasta împreună cu numărul de cicluri efectuate de injectoare poate determina prin simple calcule un consum de carburant instant, care la rândul lui poate deriva în consum mediu sau prezice un număr maxim de kilometri care mai pot fi pacurși cu carburantul din rezervor.

Calculul consumului de carburant prin sistemul creat este determinat cu ajutorul unui debitmetru ce conține un senzor HALL. Fără acesta măsurarea debitului nu s-ar putea efectua deoarece mașinile mai vechi cum este și a mea nu dispune de calculator de bord sau injecție electronică..

Introducerea debitmetrului pe conducta principală de carburant între pompa de benzină[18] și carburator (la mașinile vechi) vom putea monitoriza consumul carburantului deoarece nu avem furtun de retur al carburantului de la carburator spre rezervor.

Pentru a înțelege mai bine montarea debitmetrului pe această conductă trebuie menționat că pe pompa de benzină există o cameră de combustibil unde este stocată o cantitate mică de combustibil la o anumită presiune. Odată pus în funcțiune carburatorul va fi constant alimentat de către pompa de carburant până la punctul de umplere a camerei de combustibil din carburator, moment în care cuiul pontou ce acționează ca un robinet ce închide alimentația cu conbustibil. Presiunea acumulată în urma închideri alimentației va fi redirecționată din camera de combustibil al pompei printr-o supapă pe o conductă înapoi spre rezervor (de aici termenul de conductă de RETUR). Dacă montarea debitmetrului se face pe conducta principală ( de aici termenul de conductă de TUR) el va contoriza numai consumul de carburant ce o străbate pe când carburantul de pe retur nu va fi contorizat afectând semnificativ calcularea consumului pe întreg sistemul.

Debitmetrul o dată calibrat și introdus în program va monitoriza consumul carburantului ce străbate conducata de alimentare a carburatorului cu ajutorul formulei de calcul ce va determina consumul:

volumul_consumat = Nr_intreruperi_debitmetru * 0.188679;

unde: Nr_intreruperi_debitmetru este numărul de rotații efectuate de debitmetru

0.188679 a rezultat astfel:

La 500 ml de apă contorizați de mine am numărat 2650 de rotații a debitmetrului

De aici rezultă formula de calcul: x = 500 ml/2650 rot = 0.188679

Prin codul din programul meu vom avea determinat un număr de litri sau mililitri contorizați (în funcție de durata contorizării)

Vă voi prezenta acum codul pentru determinarea debitului:

// DEBITMETRU

void Intrerupere_Distanta(void) //această primă patre a fost explicată in capitolul

IV.2.4

{

if (millis() – old_time >=15)

{

milliss = millis();

elapsed_time = (milliss – old_time);

old_time = milliss;

volumul_consumat = Nr_intreruperi_debitmetru * 0.188679; //formula de calcul debit

lcd.setCursor(0,3);

lcd.print("V= ");

lcd.setCursor(3,3);

lcd.print(volumul_consumat);

lcd.setCursor(15,3);

lcd.print("mL");

Acum în partea de jos a ecranului va fi afișat un calcul al debitului măsurat în mL dacă rotița debitmetrului va fi angrenată de carburant (în cazul meu simularea este executată cu apă în loc de carburanți din motive de protecție și a lipsei de miros al apei).

Fig.V.2.1.Afișarea pe display a debitului măsurat

V.3. Atenționare obstacole

După cum am precizt și în capitotlul IV la descrierea software a sistemului adăugarea senzorilor de proximitate se face relativ ușor atât în program dar și pe automobil.

Pentru montarea senzorilor pe automobil se va trasa poziția lor pe spoilerul mașini cât mai pe centru si într-o poziție verticală (pentru o mai bună propagare a undelor). Cablajul este ușor de realizat deoarece senzorii dispun de o interfață preinstalată necesitând doar alimentarea cu curent de 5V și două fire adiționale: unul pentru pinul ECHO iar celălalt pentru pinul TRIG.

În program inițializarea senzorilor s-a realizat foarte ușor fără modificări majore doar definind un al doilea senzor după cum avem exemplul prezentat în codul următor:

#define ECHOPIN1 39 // Pinul care recepționează pulsul de ecou

#define TRIGPIN1 38 // Pinul care trimite pulsul declanșator

#define ECHOPIN2 37 // Pinul care recepționează pulsul de ecou

#define TRIGPIN2 36 // Pinul care trimite pulsul declanșator

// DISTANȚA CĂTRE OBSTACOL

// Start la măsurătoare senzor 1

digitalWrite(TRIGPIN1, LOW);

delayMicroseconds(2);

digitalWrite(TRIGPIN1, HIGH);

delayMicroseconds(10);

digitalWrite(TRIGPIN1, LOW);

// calculează distanța

float distanta1 = pulseIn(ECHOPIN1, HIGH);

distanta1 = distanta1/58;

// Start la măsurătoare senzor 2

digitalWrite(TRIGPIN2, LOW);

delayMicroseconds(2);

digitalWrite(TRIGPIN2, HIGH);

delayMicroseconds(10);

digitalWrite(TRIGPIN2, LOW);

// calculează distanța

distanta2 = pulseIn(ECHOPIN2, HIGH);

distanta2 = distanta2/58;

După cum se vede codul este identic doar mici părți din el au fost modificate cum ar fi:

au fost declarați patru pini diferiți doi servind ca pini ECHO și ceilalți doi ca pini TRIG,

se mai calculează pentru fiecare în parte distanța denumită cu distanța1 și distanța2

Iar pe afișajul display-ului pe șirurile doi și trei vor fi afișati cei doi senzori care ne vor arăta distanța până la obstacol. Aceasta se poate observa și în Fig. V.2.1.

V.4. Avertizare prin SMS la declanșarea alarmei.

Pentru ca această opțiune să funcționeze corespunzător vom avea nevoie de un impuls de declanșare, mai exact vom adăuga la firul + al sirenei încă un cablu care va fi conectat pe placa de dezvoltare la pinul 30. La declanșarea alarmei pe acest pin vom avea un curent indus de 5V (cu ajutorul unei punți stabilizatoare reglabile deoarece curentul care intră în sirenă este de 12V).

Dacă curentul indus va dura mai mult de o secundă este detectat de placa de dezvoltare, care la rândul ei va face apel la funcția destinată modulului GSM inițializând trimiterea SMS-ului. Tot în cadrul funcției s-a mai inclus o parte de cod destinat verificări expedierii SMS-ului care dacă va constata că SMS-ul a fost expediat încetează inițializarea trimiterii altui SMS și revine la setarea inițială așteptând ca alarma să fie din nou armată, caz în care își va relua atribuția, iar la o altă declanșare a alarmei va repeta funcția SMS-ului, repetând bucla atâta timp cât modulul GSM și placa de dezvoltare sunt alimentate la sursa de tensiune.

În partea următoare voi prezenta codul sursă destinat modulului GSM:

..

#define ALARMA 30 // Pinul de intrare pentru alarma

..

..

// GSM

//**************************************************************************

char numar[]="0040769xxxxxx"; //număr de telefon

char text[]="ALARMA LA MASINA MEA"; //de trimis SMS

byte type_sms = SMS_UNREAD; //tipul SMS-ului

byte del_sms = 0; //0: Nu șterge SMS – 1: șterge SMS

GSM gsm;

int eroare_sms;

//**************************************************************************

// ALARMA? Daca da, trimite sms o singură data oricat de mult ar suna alarma

if (digitalRead(ALARMA) == HIGH)

{

// avem alarmă, deci verifică daca nu am trimis deja sms-ul

if (alarma_activa == 0)

{

eroare_sms = gsm.SendSMS(numar,text);

if (eroare_sms != 0)

{

//înseamnă că sms-ul s-a trimis cu succes

alarma_activa = 1;

}

}

}

else

{

alarma_activa = 0;

}

Capitolul VI

Concluzii

Începutul acestui proiect a însemnat mult pentru mine, deși pe piața din Romania există deja anumite produse ce fac același lucru ca produsul meu dar la un preț extrem de ridicat iar aspectul, locul de montare și limitarea funcțiilor cu care sunt echipate acestea lasă de dorit de aceea consider că pentru mine proiectul meu este o reușită. El îmi permite montarea ecranului în incinta autovehicolului unde doresc eu dar tot în același timp pot perfecționa sau îmbunătăți proiectul cu ajutorul plăcii de dezvoltare, unde cu un set de cunoștințe mai amănunțite în programare aș putea până și să pornesc autovehicolul meu prin trimiterea unui SMS de pe telefonul mobil la modulul GSM montat pe placa de dezvoltare, la un preț substanțial redus față de echipamentele existente deja pe piața din Romania, a căror prețuri depășesc posibilitatea financiară a cetățeanului de zi cu zi.

Aveam aceste idee pe plan teoretic de mai bine de patru ani dezvoltând-o constant de la un simplu calcul al consumului de carburant la un sistem complex de avertizare ce mă atenționează în privința obstacolelor întâlnite în vecinătatea automobilului cât și prin SMS în timpul cât aceasta este staționată cu alarma activă. Realizarea sistemului nu a fost posibilă până în prezent din cauza costurilor ridicate a dispozitivelor și echipamentelor necesare realizării lui.

Tot mai multe firme producătoare de echipamente de contorizare au venit în ultimi ani pe piață cu produse inovatoare și la prețuri acesibile, acest lucru m-a determinat să încerc să îmi pun în practică ideea crezând că va fi un proiect simplu și ușor de realizat. Odată cu începerea căutări de componente necesare am întalnit și primele dificultăți ale proiectului, cum ar fi încă prețul ridicat la achiziționarea componentelor de pe teritoriul României, lucru care m-a determinat să îmi măresc spațiul de căutare reușin astfel să identific și să achiziționez la jumătate de preț sau chiar și la un sfert de preț întreaga gamă de componente necesare realizării proiectului meu tocmai din China.

După achizițiomarea componentelor trecând la proba practică am realizat că deși componentele mele nu sunt unele performante sau greu de folosit, încurcăturile mele datorate lipsei de experiență în domeniul programării a întârziat foarte mult punerea în funcțiune și testare lui, cu toate acestea am încercat să depășesc lipsa de experiență în domeniul programării și să mă folosesc cât mai mult de experiența mea în domeniul automotiv, pentru determinarea locurilor specifice de montare a componentelor.

Realizarea acestui sistem și testarea lui a fost produsă într-un interval scurt de timp, așadar funcționalitatea lui pe un autovehicol real încă nu a fost testată, acest lucru presupune un efort financiar considerabil de care nu dispun dar sper ca până la sfârșitl anului proiectul meu să fie gata montat și testat în condiții reale, ba chiar și îmbunătățit prin adăugarea unui modul de supraveghere video pe durata de deplasare a autovehicolului.

Chiar și așa dacă constat că aplicarea sistemului pe un autovehicol nu este viabilă sau rentabilă echipamentele achiziționate pot fi folosite în alte proiecte mult mai ample cu întrebuințări în diferite domenii cum ar fii cel de securitate sau la construirea unui sistem pentru case inteligente, aplicabilitatea lor fiind practic nelimitată.

Bibliografie

[1] http://www.arduino.cc/

[2] Arduino Mega 2560, http://arduino.cc/en/Main/arduinoBoardMega2560

[3]Datasheet Modul GSM SIM900 GSM/GPRS, ftp://imall.iteadstudio.com/IM120417009_IComSat/DS_IM120417009_IComSat.pdf

[4] Senzorul REED, http://users.utcluj.ro/~mbirlea/z/08z.htm

[5] Datasheet senzor de proximitate, http://www.elecfreaks.com/store/download/product/Sensor/HC-SR04/HC-SR04_Ultrasonic_Module_User_Guide.pdf

[6] Datasheet Display 20×4 I2C, http://www.banggood.com/IIC-Or-I2C-2004-204-20-X-4-Character-LCD-Display-Module-Blue-p-908616.html

[7] Datasheet display 20×4 I2C, https://www.iprototype.nl/products/components/led-lcd/lcd20x4-I2C-BL

[8] Senzorul Hall, http://www.e-automobile.ro/categorie-electronica/106-senzor-hall.html

[9] Datasheet debitmetru, http://www.aliexpress.com/item/Free-Shipping-1pc-Water-Coffee-Flow-Sensor-Switch-Meter-Flowmeter-Counter-0-3-6L-min-New/1330853345.html

[10] http://ro.scribd.com/doc/127137497/Constructia-Automobilului

[11] Abaitancei, D. si Bobescu, Ch-Motoare pentru Automobile. Editura Didactica si Pedagogica, Bucuresti,1980

[12] Stratulat, M. si Vlasie, V.–Alimentarea motoarelor cu aprindere prin scanteie. Vol I-II, Editura Tehnica,Bucuresti 1992

[13] http://ro.wikipedia.org/wiki/Motor_cu_ardere_intern%C4%83

[14] http://en.wikipedia.org/wiki/Arduino

[15] Horia Ciocȃrlie; Universul limbajelor de programare. Ed. A 2-a rev. – Timișoara: Orizonturi Universitare, 2013, ISBN 978-973-638-538-4.

[16] Molnar-Matei, F., Sisteme încorporate, notițe de curs, 2013

[17] Arama C.ș.a, Economia de combustibil la automobile. Editura Tehnica,București, 1974.

[18] Stratulat M. ș.a, Exploatarea rațională a automobilului. Editura Tehnica, București, 1986.

[19] Racotă R., Construcția motoarelor pentru automobile . Litografia Universității din Pitești, Pitești, 1995.

[20] Mondiru C., Boroiu A., Mondiru A., Construcția, Funcționarea și reglarea automobilelor, Îndrumar tehnologic practic, Universitatea Pitești, Pitești, 1997.

[21] Brian W. Evans, Arduino programming notebook, August 2007

[22] Datasheet microcontroler Atmega 640/1280/2560, http://elecfreaks.com/store/download/mega2560.pdf.

[23] Stanciu, I.R., Molnar-Matei, F., Sisteme de monitorizare și control în timp real, Editura Eurostampa, Timișoara 2013, 384 pg., ISBN 978-606-569-542-9

[24] Study on Automotive Embedded System Design of Engine, Brake and Security System, 2006

[25] http://ro.wikipedia.org/wiki/Control_de_stabilitate_electronic_%28autovehicule%29esc

[26] http://ro.wikipedia.org/wiki/Calculator_de_bord

[27] http://ro.wikipedia.org/wiki/Pern%C4%83_de_aer

Anexa 1

Anexa 2

Bibliografie

[1] http://www.arduino.cc/

[2] Arduino Mega 2560, http://arduino.cc/en/Main/arduinoBoardMega2560

[3]Datasheet Modul GSM SIM900 GSM/GPRS, ftp://imall.iteadstudio.com/IM120417009_IComSat/DS_IM120417009_IComSat.pdf

[4] Senzorul REED, http://users.utcluj.ro/~mbirlea/z/08z.htm

[5] Datasheet senzor de proximitate, http://www.elecfreaks.com/store/download/product/Sensor/HC-SR04/HC-SR04_Ultrasonic_Module_User_Guide.pdf

[6] Datasheet Display 20×4 I2C, http://www.banggood.com/IIC-Or-I2C-2004-204-20-X-4-Character-LCD-Display-Module-Blue-p-908616.html

[7] Datasheet display 20×4 I2C, https://www.iprototype.nl/products/components/led-lcd/lcd20x4-I2C-BL

[8] Senzorul Hall, http://www.e-automobile.ro/categorie-electronica/106-senzor-hall.html

[9] Datasheet debitmetru, http://www.aliexpress.com/item/Free-Shipping-1pc-Water-Coffee-Flow-Sensor-Switch-Meter-Flowmeter-Counter-0-3-6L-min-New/1330853345.html

[10] http://ro.scribd.com/doc/127137497/Constructia-Automobilului

[11] Abaitancei, D. si Bobescu, Ch-Motoare pentru Automobile. Editura Didactica si Pedagogica, Bucuresti,1980

[12] Stratulat, M. si Vlasie, V.–Alimentarea motoarelor cu aprindere prin scanteie. Vol I-II, Editura Tehnica,Bucuresti 1992

[13] http://ro.wikipedia.org/wiki/Motor_cu_ardere_intern%C4%83

[14] http://en.wikipedia.org/wiki/Arduino

[15] Horia Ciocȃrlie; Universul limbajelor de programare. Ed. A 2-a rev. – Timișoara: Orizonturi Universitare, 2013, ISBN 978-973-638-538-4.

[16] Molnar-Matei, F., Sisteme încorporate, notițe de curs, 2013

[17] Arama C.ș.a, Economia de combustibil la automobile. Editura Tehnica,București, 1974.

[18] Stratulat M. ș.a, Exploatarea rațională a automobilului. Editura Tehnica, București, 1986.

[19] Racotă R., Construcția motoarelor pentru automobile . Litografia Universității din Pitești, Pitești, 1995.

[20] Mondiru C., Boroiu A., Mondiru A., Construcția, Funcționarea și reglarea automobilelor, Îndrumar tehnologic practic, Universitatea Pitești, Pitești, 1997.

[21] Brian W. Evans, Arduino programming notebook, August 2007

[22] Datasheet microcontroler Atmega 640/1280/2560, http://elecfreaks.com/store/download/mega2560.pdf.

[23] Stanciu, I.R., Molnar-Matei, F., Sisteme de monitorizare și control în timp real, Editura Eurostampa, Timișoara 2013, 384 pg., ISBN 978-606-569-542-9

[24] Study on Automotive Embedded System Design of Engine, Brake and Security System, 2006

[25] http://ro.wikipedia.org/wiki/Control_de_stabilitate_electronic_%28autovehicule%29esc

[26] http://ro.wikipedia.org/wiki/Calculator_de_bord

[27] http://ro.wikipedia.org/wiki/Pern%C4%83_de_aer

Anexa 1

Anexa 2

Similar Posts