Proiectarea si realizarea unui sistem automat de asisten ță [607631]
Anexa 8
MINISTERUL EDUCAȚIEI NAȚIONALE
UNIVERSITATEA PETROL – GAZE DIN PLOIEȘTI
FACULTATEA: INGINERIE MECANICĂ ȘI ELECTRICĂ
DEPARTAMENTUL: AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
PROGRAMUL DE STUDII: AUTOMATICĂ ȘI INFORMATICĂ
APLICATĂ
FORMA DE ÎNVĂȚĂMÂNT: IF
Vizat
Facultatea IME
(semnătura și ștampila) Aprobat,
Director de departament,
Prof.dr.ing. Cristian Pătrășcioiu
PROIECT DE DIPLOMĂ
TEMA: Proiectarea si realizarea unui sistem automat de asisten ță
tip „vehicle follower”
Conducător științific:
Prof.dr.ing Gabriel R ădulescu
Absolvent: [anonimizat]
2018
2
CUPRINS
Contents
Introducere ………………………….. ………………………….. ………………………….. …………………. 3
Capitolul I Studiul sistemelor de tip ,,Vehicle Follower” ………………………….. ……….. 5
1.1 Noțiuni teoretice asupra sistemelor de tip pilot automat ………………………….. . 6
1.2 Noțiuni teoretice ale sistemului ACC (Adaptive Cruise Control) ……………… 8
1.3 Abordări ale sistemelor ACC ………………………….. ………………………….. ……. 13
Capitolul II Proiectarea și implementarea sistemului tip ,,Vehicle Follower” ……. 17
2.1 Implementarea fizică a sistemului ………………………….. ………………………….. ………… 17
2.1.1 Structura mașinii ………………………….. ………………………….. …………………… 17
2.1.2 Senzori ultrasonici ………………………….. ………………………….. …………………. 19
2.1.3 Puntea H pentru controlul motoarelor ………………………….. …………………… 24
2.1.4 Senzor incremental ………………………….. ………………………….. ………………… 27
2.1.5 Microcontrollerul ………………………….. ………………………….. ………………….. 31
2.2 Implementarea software a sistemului ………………………….. ………………………….. ……. 32
2.2.1 Noțiuni teoretice ce stau la baza aplicației software ………………………….. .. 33
Capitolul III Rezultate experimentale ale sistemului implementat ……………………. 37
Cap IV Concluzii ………………………….. ………………………….. ………………………….. ………. 39
Cap V Bibliografie ………………………….. ………………………….. ………………………….. …….. 41
Anexe ………………………….. ………………………….. ………………………….. ………………………… 44
Designing and building an automated assistance system like vehicle follower ……. 52
3
Introducere
Principala preocupare a introducerii tehnologiei autonome este siguranța șoferului.
Conform unui sondaj, 90% din accidente se întâmplă din cauza unei greșeli a șoferului.
Industria producătoare de masini a crescut foar te mult in ultimii ani, astfel î ncat s -au
dezvoltat tot felul de sisteme inteligente c u scopul de a ajuta soferul să fie mai relaxat î n
trafic , iar confortul de a conduce să crească. Datorită acestei creș teri, traficul în zonele
urbane și pe autostră zi, atenț ia la condus , a crescut , ceea ce a dus la dez voltarea sistemului
de asistență tip ,,Vehicle Follower” .
Sistemul ACC (Adaptive Cruise Control sau Vehicle Follower ) este un sistem
automat de urmărire a traficului rutier ș i de ad aptare a vitezei de rulare a mașinii,
menținând o distanță de siguranță față de vehiculul din față . El reglează astfel viteza
mașinii în funcție de distanța dintre vehiculul din față ș i viteza acestuia. Combină
controlul vitezei de croazieră cu sistemul de evitare a coliziunilor. Acest a este folositor
în cazul ambut eiajelor și circulației pe autostrăzi deoarece șoferul nu mai este nevoit să
accelereze sau să frâneze atunci când vehiculul din față își schimbă viteza.
Datorită pasiunii mele pentru mașini am considerat drept provocare încercarea de a
realiza un sistem a utomat de control a distanței și de a -l implementa pe o mașinuță
electrică. Am observat că în ultimul timp oamenii în timpul condusului sunt tot mai
distraș i de anumiți factori precum: telefonul m obil, pietonii, alți participanți la trafic etc,
iar atenția la volan a devenit tot mai neglijabilă. Din păcate aceasta a crescut numărul
accidentelor și victimelor umane iar inginerii încearcă să diminueze acești factori prin
implementarea unor sisteme inteligente de asistență la volan. Pașii pe care i -am urmat î n
realizarea acestui proiect vor fi prezentați î n capitolele urmă toare.
Primul capitol este dedicat studiului sistemului tip pilot automat. Se pune accentul
pe ultimele tehnologii folosite în acest sistem. Tot aici este prezentată și o scurtă istorie a
nașterii sistemului de tip pilot automat iar apoi trecerea către sistemul inteligent „vehicle
follower” . Un lucru important de urmărit este tendința de dezvoltare a acestei tehno logii,
ea fiind exemplificată prin diferite abordări ale sistemului. Intenția cerc etătorilor este de
a elimina cât mai mult factorul uman decizional în conducerea de autovehicule.
4
În capitolul al doilea sunt descrise în detaliu atât componentele hardware, cât și cele
software folosite. Este necesar acest lucru pentru a înțelege modul de functionare a
acetora si încadrarea lor in tema prezentat ă.
Capitolul cu numărul trei aduce în atenție rezultatel e experimentale obținute în
urma realizării temei proiectului. Sunt prezentate diferite cazuri pentru a observa cum
reacționează sistemul în anumite situații. Astfel este realizată o analiză obiectivă a ratei
de succes a acestuia.
În finalul lucrării sunt prezentate concluziile la care am ajuns în urma studiului și
realizării temei propuse, precum și viitoarele direcții de cercetare și îmbună tățire a
proiectului. Sunt descrise în amănunt problemele apărute de -a lungul acestuia, avantajele
și dezavantajele implementării alese comparativ.
Lucrarea dispune de bibliografia folosită drept suport teoretic dar și practic pentru
realizarea sistemului tip ,,Vehicle Follower”. Sunt prezente atât lucrări de specialitate, cât
și articole sau implementări ale unor sisteme asemănătoare; acest ea din urm ă prezintă
avantajul faptului că librăria folosită pentru programarea mi crocontrolerului este una
open -source, care se dezvoltă și prin folosirea ei de către uti lizatori interesați de domeniu.
În anexe există codul -sursă explicat al aplicației software dezvoltată pentru acest
sistem si tabele cu valori din cadrul simularilor.
5
Capitolul I Studiul sistemelor de tip ,,Vehicle Follower”
Cruise Control, „CC” sau Pilot automat, e un sistem ce reușe ște să controleze
automat viteza unui autoturism. Ralph Teetor, inventator și inginer mecanic american,
este cel ce a reușit să îl realiz eze în anul 1948. Ideea a luat naștere undeva în anul 1940
când, în timpul unei călătorii cu o m așină condusă de avocatul său, acesta accelera și
încetinea în timp ce purtau o discuție. Tot acest schimb de viteză a ajuns să îl frustreze
destul de mult. Ast fel a ajuns să fie inspirat de tehnologia de construire a locomotivelor a
lui James Watt, gândind un sistem prin care automobil ul să mențină o viteză constantă . A
reușit să breveteze invenția mult mai târziu, undeva prin anul 1955. În 19 58 s-a reușit
realizarea unei ma șini ce folosea sistemul pentru prima dată cu denumirea de Auto -pilot,
totul prin apăsarea unui buton de pe bord. În 1960 Cruise Control devenise deja o
caracteristică standard pe toate Cadillacurile. A fost cunoscut inițial sub numele de
„Controlmatic”, „Touchomatic”, „Pressomatic” dar și „Speedostat”.
Ralph Teetor (1890 -1982) rămas orb la vârsta de 5 ani a reușit totuși să își urmeze
visurile, nefiind împiedicat de acest defect. Pe parcursul vieții lui nu a dorit să vorbească
despre asta ci , mai mult, fiind nevăză tor n-a fost considerat un handicap de el ci o metodă
de a-l ajut a în a se concentra mai bine. Fiind întrebat totuși la un moment dat unde ar fi
ajuns dacă n -ar fi fost orb, el a răspuns : „Probabil nu aș fi putut face atât de multe . Faptul
că nu văd mă ajută să mă concentrez mai bine”. [28]
Adaptive cruise control este un sistem automat ce are la bază reglarea distanței
dintre două vehicule păstrând o viteză constan tă cu cea a vehiculului din față. Acest
sistem este unul de asiste nță a ș oferului în sensul că nu elimină în tota litate factorul uman
în timp ce el este activat. Ca și în cazul sistemelor convenționale de pilot automat frânarea
și accelerarea în timp real sunt prioritare atunci când ACC este activat.
Figura 1.1 Descrierea funcționă rii sistemului automat de ACC (adaptive cruise control)
[1]
6
1.1 Noțiuni teoretice asupra sistemelor de tip pilot automat
Este imperios necesar ca înainte de studiul și realizarea proiectului să se încadreze
tema acestuia în domeniul automatizării, făcând apel la noțiuni teoretice din literatura de
specialitate.
„Sistemul este definit c a fiind un ansamblu de elemente ce interacționează între ele
și cu exteriorul, pe baza anumitor reguli, principii și legi, în vederea realizării unui sens
sau scop.
În cazul sistemelor fizice (reale), interacțiunea se realizează prin intermediul
fluxurilor de masă și energie, purtătoare de informație.” [ 11]
Tema pro iectul ui constă în realizarea unui astfel de sistem definit ca mai înainte. El
este format din ansamblul de senzori, motoare, modulul de procesare a informației
achiziționate; de asemenea, și de comandă a motoarelor procesând inf ormațiile primi te
de la sen zori.
„Sistemele automate sunt sisteme tehnice cu ajutorul cărora se r ealizează
supravegherea, comanda și conducerea proceselor și instalațiilor tehnologice, fără
intervenția di rectă a omului.” [ 11]
Sistemul de urmarire tip „vehicle follower” este încadrat foarte ușor în categoria
acestor sisteme automate, unul dintre scopurile lui principale fiind tocmai înlocuirea
intervenției directe a conducătorilor auto în cadrul procesului de accelerare și decelerare
a unui autovehicul.
Mărimea de intrare a sistemul ui este reprezentată de distanța față de mașina din față,
viteza cu care aceasta rulează și viteza vehiculului condus, reprezentată în figura 1. 2.
Mărimea de ieșire este rezultatul procesării informațiilor primite din exterior și are un
efect direct asupra vitezei vehiculului prin accelerare sau frânare. Rolul acestui sistem
este de fapt unul corectiv pentru un condus corect și econom din punct de vedere al
consumului de combustibil.
7
Figura 1. 2 Reprezentarea principiului sistemului Adaptive Cruise Control
[2]
De asemenea, el prezintă comportare în timp real deoarece „deciziile elaborate de
acesta sunt emise la momentul oportun, respectiv sun t aplicate procesului înainte ca datele
pe baza cărora au fost determinate aceste comenz i să-și piardă valabilitatea”.
„Timpul real (TR) reprezintă o noțiune utilizată pentru caracterizarea operațiilor
dintr -un sistem de conducere care se desfășoară în sincr onism cu evenimentele lumii
exterioare. În aceste condiții timpul reprezintă o resursă esențială și în același timp critică
pentru echipamentele numerice implicate în conducerea proceselor. Este o resursă
deoarece toate mărimile afe rente unui proces sunt d ependente de timp. Resursa timp este
critică pentru că trebuie să existe o strânsă corelație între timpul procesului și cel al
sistemului de conducere.” [ 12]
Aplicațiile de timp real se împart în două categorii și anume:
– aplicații de conducere;
– aplicaț ii tranzacționale.
Sistemul pilot automat face parte din prima categorie deoarece „se referă la
elaborarea și transmiterea de comenzi către proce s”[12], adică către motoarele de
acționare.
În figura 1 .3 se prezintă structura unei astfel de aplicații, foarte asemănătoare cu cea
a sistemul ui din lucrare, care permite realizarea următoarelor funcții:
– achiziții de date;
– procesarea datelor achiziționate;
8
– elaborarea comenzilor;
– procesarea comenzilor în vederea transmiterii către elementele de execuție;
– generarea de rapoarte.
Figura 1. 3: Structura unui sistem de conducere în timp real:
BDP -baza de date de proces; BGR -bloc generare rapoarte; ABDP -modul actualizare
BDP; MEC – modul elaborare comenzi; COP -consola operator; CTR – ceas de timp
real; SIA – subsistem intrări analogice; SEA – subsistem ieșiri analogice; TA –
traductoare analogice ;
EEA – Elemente de execuție analogice; EEN – Elemente de execuție numerice. [ 12]
1.2 Noțiuni teoretice ale sistemului ACC (Adaptive Cruise Control)
Din punct de vedere al nivelului de concentrare, condusul este o activitate foarte
solici tantă. Un șof er trebuie să menți nă un nivel ridicat de concentrare pentru perioade
lungi și să fie gata să reacționeze într -o fracțiune de secundă la situațiile imprevizibile.
În special șoferii trebuie să e valueze în mod constant distanța și viteza relativă față de
vehiculul din față. Aceștia trebuie să se adapteze condițiilor din trafic.
Aceste sarcini pot fi acum realizate de sistemul Adaptive Cruise Control (ACC),
care este o extensie a sitemului convențional de contr ol al vitezei (pilot automat). Ca un
9
sistem conve nțional de control al vitezei de croazieră, ACC menține vehiculul la o viteză
constantă stabilită, însă acesta reacționează dinamic în cazul în care se confruntă cu un
vehicul sau un obstacol din față mai lent sau mai rapid , el adaptând viteza la viteza
vehiculului întâlnit. Odată ce drumul este din nou liber, sistemul ACC accelerează înapoi
la viteza de croazieră setată anterior. În acest fel ACC integrează armonios un vehicul în
fluxul de trafic.
Figura 1.4 Reprez entarea vitezometrului si detecției schimbă rii benzii de mers a unui
autovehicul. [14]
Unele sisteme analizează traficul și iau în calcul situații excepționale, de exemplu
posibilitatea c a o mașină să apară pe banda de mers în fața vehiculului condus.
Sistemele de asistență a șoferului înco rporează funcții din ce în ce mai avansate de
siguranță. Deoarece aceste funcții trebuie să reacționeze rapid și fiabil în situații de
urgență cu o rată de alarmă falsă aproape de zero, este necesară o integritate r idicată a
percepției de mediu.
Un nivel ridicat de integritate al semnalului poate fi obținut prin fuziunea datelor,
unde informațiile mai multor senzori exteroceptivi sunt combinate pentru a obține un
model matematic mai bun al mediului în ceea ce privește precizia, integritatea obiectului,
identitatea obiectului etc.
Ca exemplu, se demonstrează puterea fuziunii senzorilor cu un sistem automat de
frânare de siguranță (AEB), a cărui percepție de mediu se bazează pe o cameră video și
un senzor radar. În special discutăm despre îmbunătățirea atrib utelor cinematice cum ar
fi distanța laterală a obiectului precum și încrederea sau probab ilitatea existenței
obiectului.
10
Sistemul de control al vitezei de croazieră este un si stem capabil să mențină viteza
unei mașini la un nivel dorit. El poate să preia și să controleze poziția pedalei de
accelerație dar totodată și sistemul de frânare.
„Sistemele de asistență pentru conducătorii auto (DAS driver assistance systems),
cum ar fi sistemul adaptiv de control al vitezei de croazieră (ACC) sau avertizarea de
părăsire a benzilor de circulație (LDW lane departure warning), trebuie să perceapă
mediul folosind senzori exteroceptivi. Dat fiind că DAS devine mai sofisticat și se
deplasează de la aplicații de confort cum ar fi ACC, la aplicațiile critice de siguranță cum
ar fi frânarea automată de urgență (AEB), cerințele privind percepția și eșecul de vin tot
mai stricte.
Fig 1.5 Schema bloc a e lementelor ce realizează activarea sistemlui ACC(adaptive
cruise control) sau a sistemului AEB ( Automatic Emergency Braking ) frânare
automată de urgență .
O exploatare eronată a manevrării automate de frânare de urgență, de exemplu
frânarea automată a unei mașini cu decelerația maximă la viteză maximă pe o autostradă
liberă, este considerată inacceptabilă pentru șofer. În plus față de disconfortul șoferului ,
o astfel de exploatare eronată a autovehiculului poate fi periculoasă și chiar letală pentru
ocupanții la trafic. Prin urmare, condițiile de calitate trebuie impuse astfel încât
implementările eronate sau falsele alarme să fie ținute la un minim absolut , o cerință
tipică fiind o alarmă falsă la un milion de kilometri rulați.” [27]
Simbolurile utilizate pentru reprezentarea comenzilor si avertismentelor
În majoritatea maș inilor, butoanele de control al v itezei sunt montate pe volan
(figura 1.6 ) sau au montată o manetă specială similară cu cea pentru ștergă toarele de
parbriz sau faruri ca în figura 1.7 .
11
Fig 1.6 Comenzi volan ACC [15] Fig 1.7 Manetă comenzi ACC [16]
Comenzile cele mai des utili zate sunt: ON, OFF, ce activează și dezactivează
sistemul, RESUME ș i SET/ COAST pentru setarea vitezei de rulare.
Pentru a activa sistemul trebuie să setă m o valoare maximă a vitezei de rulare. Odată
ce sistemul este activat (figura 1.9) șoferul nu mai este nevoit să apese pedala de frână
sau accelerația, decât în situațiile excepționale.
Fig 1.8 Fig1.9
Viteza ACC ON
setată [8]
[8]
Acestea sunt simbolurile indicatorului activ de control al vitezei de croazieră.
Figura 1.8 reliefează faptul că viteza a fost setată, iar maș ina indică faptul că sistemul
răspunde la traficul di n față fig 1.9.
Fig 1.10 Fig 1.11
Ajustare Radar
distanță activat
[8] [8]
Figura 1.10 reprezintă faptul că sistemul este activat, culoarea fiind verde. Culoarea
portocalie apare atunci când sistemul ajustează distanța dintre vehicule.
Simbolul din figura 1.11 este întâlnit la mașinile dotate cu radar, sistemul fiind activ
când acesta apare în bord.(figura 1.11)
12
Fig1.11 Fig1.12
Avertizare Avarie
Avarie ACC ACC
[8] [8]
Aceste simboluri atenționează conducătorul că sistemul este î n avarie iar el trebuie
să contacteze producătorul maș inii pentru a remedia problema.
Fig 1.14
Atenționare radar/camere murdare
[8]
Simbolul radarului ACC (figura 1.14) indică faptul că radarul sau camera sunt
blocate/murdare, fiind repez entate de săgeata îndreptată spre partea din față a vehiculului
Camerele radar sunt frecvent folosite pentru a detecta un alt vehicul din față și atâta
timp cât acestea sunt blocate, sistemul avansat de control al vitezei de croazieră nu poate
funcționa. D acă curățarea frontală a autovehiculului nu elimină simbolul, este posibil să
apară o defecțiune pe care dealer -ul va trebui să o abordeze. Daca sistemul avansat de
control al vitezei de croazier ă nu poate functiona, autovehiculul nu este afectat de aceast a
problem ă, el function ând corespunzator.
Avantajele sistemului
Această îmbunătățire este foarte utilă pentru călătoriile lungi, mersul pe autostradă
sau în ambuteiaje, deoarece mașina va menține viteza setată și distanța față de mașina din
față folosind sistemele inteligente. În ultimi ani, reducerea consumului de combustibil a
devenit un subiect de cercet are major din mai multe motive:
-din punct de vedere economic, sistemul duce la reducerea consumului de
energie. De exemp lu, parcurgând același traseu cu sistemul ACC activat, simulările
înregistrează o scădere semnificativă a consumului de carburant. Mai mult de atât, prin
reducerea consumului se reduc de asemenea și emisiile de CO2. Transportul auto
contribuie cu 23% la em isiile de CO2 de la nivel mondial, astfel încât reducerea
consumului este foarte importantă prentru producătorii de autoturisme și pentru guverne.
-din punct de vedere funcțional, consumul de energie redus este foarte benefic
doarece el aborde ază direct unul dintre dezavantajele majore ale vehiculelor ele ctrice
13
actuale, și anume autonomia limitată. Consumul redus se transformă direct într -o creșt ere
a intervalului dintre două încărcă ri sau indirect, într -un timp redus de încărcare.
1.3 A bord ări ale sistemelor ACC
O cercetare considerabilă a fost dedicată abordărilor constructive cum ar fi modele
mai eficiente ale motorului prin reducerea dimensiunilor și implicit prin reducerea
gabaritului. Acest lucru a dus la dezvoltarea sistemelor de asistență ecologică. Scopul
principal al unui astfel de sistem este de a furniza informații , prin intermediul interfeței
om-mași nă (HMI) , pentru șofer cu privire la modul de ajustare a stilului de condus. Pentru
realizarea unui astfel de cadru au fost propuse n umeroase strategii, de exemplu:
Sistemul de asis tență ecologică este formulat ca o problemă de optimizare online,
ce oferă rezultate favorabile în legătură cu accelerarea și frânarea pentru un autovehicul
autonom sau unul cu sistem ACC. Optimizare a se bazează pe reprez entarea consumului
de combustibil în funcție de viteza vehiculului. În plus, constrângerile cu privire la trafic,
de exemplu: ambuteiaje, limitări de viteză, obstacole, semafoare, etc. sunt luate în
considerare în timpul optimizării. Simulările pentru această abordare au demonstrat
reduceri semnificative ale consumului de combustibil. Cu toate acestea, abordarea se
concentrează în principal pe reducerea pură a consumului de combustibil. Acest sistem
realizează un model de predicție pen tru a descrie mediul care poate fi benefic în a
determina accelerația/deceleraț ia optimă. În plus, nu sunt utilizate informații despre
topologia drumului în condițiile în care s -au dovedit a avea un impact și mai mare. [29]
Alte abordări utilizează cunoștințe despre un anumit traseu și parametrii s ăi, cum ar
fi înclinația, viteza maximă și curbura pentru a obține o traiectorie de viteză optimă. O
abordare foarte comună este problema de optimizare bazată pe un model al vehiculului și
consumul său de e nergie/combustibil, care este apoi rezolvat prin intermediul programării
dinamice (DP). La nivel global , în strategia optimă de conducere pentru o anumită rută
este utilizată programarea dinamică pentru un vehicul convențional sau electric. În toate
cazuri le, o reducere în consumul de combustibil sau de energie ar putea fi atins în simulări
sau încercări. Cu toate acestea, o problemă majoră a programării dinamice este că
realizează o procesare intensivă a informațiilor. Din acest motiv nu este potrivit pent ru o
optimizare online care necesită capacitate în timp real. Prin urmare, majoritatea
abordărilor calculează pentru un anumit traseu în prealabil, și este afișat în timpul
14
condusului pe HMI. Aceste abordări nu iau în considerare informații despre traficul
înconjurător în problema de optimizare î n sine. De aceea este posibil ca propunerea de
viteză să nu reflecte acțiunea corespunzătoare cu privire la starea traficului. Acest lucru
este adesea realizat prin adăugarea de echipamente pentru măsurarea distanțe lor (de
exemplu senzor liniar, radar, camere video) și adăug area de avertismente la distanță pe
interfața HMI ce trebuiesc urmate de șofer .
Se propune o abordare diferită de Ozatay și Colab [30] în care este prezentat
conceptul bazat pe un cloud, abordând complexitatea computațională a programării
dinamice. În cercetările mai recente, reducerea consumului de energie este realizată prin
interferarea traficului cu un sistem avansat (ADAS). „ADAS s -a dovedit a crește siguranța
în multe scenarii de accidente. Î n sistemul ADAS este implementat controlul adaptiv de
croazieră (ACC) astfel încât multe vehicule sunt dotate cu echipamente tehnice pentru
aplicarea strategiilor de conducere eficiente din punct de vedere energetic, fără o
interacțiune directă cu conducăt orul auto”[31]. În plus, ACC oferă avantaje suplimentare
de siguranță datorate controlul ui distanței și, prin urmare, abordează traficul interferent
ușor. Necesitatea unei interfețe pentru controlul vitezei vehiculului a inspirat cercetătorii
să combine fu ncționalitatea ACC cu strategii diferite de control pentru îmbunătățirea
eficienței energetice și a siguranței deopotrivă.[29]
De exemplu, Khayyam, Nahavandi și Davis (2012) au dezvoltat un sistem de
inferențe bazat pe neuro -fuzzy. Acesta deține o strateg ie de anticipare a viitoarelor
denivelări rutiere pentru a realiza o strategie de conducere eficientă din punct de vedere
al consumului de combustibil. [32]
O altă abordare este Modelul de Control Predictiv (MPC) care este folosit pentru a
obține o secvenț ă de control optimă cu obiectivul principal de reducere a consumului de
combustibil, asigurând în același timp confortul în ceea ce privește siguranța sau
constrângerile deplasării.
15
Fig 1.15 Mod de funcț ionare Offline [17]
Fig 1.1 6 Mod de funcț ionare Online [17]
O abordare privind combinarea ACC și MPC a fost dată de Luo, Liu, Li, și Wang
(2010) cu scopul de a oferi confortul la volan, economia de combustibil, siguranța și
urmărirea mașinii. În această abordare , economia de combustibil este realizată prin
netezirea accelerației care a fost dovedită a fi foarte benefică în Mierlo et al. (2004).
Confortul rulării și criteriile de siguranță sunt ușor de abordat în MPC prin introducerea
constrângerilor, de exemp lu: viteză max imă și accelerație , precum și distanța între
vehicule.[33]
Pentru Li, Li, Rajamani și Wang , obiectivele economiei de combustibil, confortul
călătoriei și criteriile de siguranță sunt in troduse ca trei funcții de costur i diferite iar apoi
formulate ca o singură problemă de optimizare MPC. Această lucrare utilizează, de
asemenea, constrângeri pentru a limita în continuare accelerația și bruscă rile [34]. O
abordare suplimentară care privește eficiența consumului de combustibil pri n reducerea
la minimum a ace lerării, este sugerată în Zhang și Vahidi în cazul în care un model
stohastic (lanțul Markov) este folosit pentru a pr ezice viteza unui vehicul. [35]
16
Kamal, Imura, Hayakawa, Ohata și Aihara (2014) este prez intă abordarea care
utilizează MPC pentru a controla un vehicul în trafic intens, și îmbunătățirea fluxului de
trafic prin păstrarea distanței de siguranță dintre vehicule. Prin această modalitate se
reduce accelerația și frânarea și, prin urmare, combustibilul consumat.
ACC este prezentat în Turri de Kim, Guanetti, Johansson și Borrelli (2017) care
arată o bună reducere a consumului de combustibil și a unui calcul rapid în timp, evitând
frânarea inutilă, menți nând în același timp o distanță de siguranță și reducerea bruscă rilor,
în timp ce este acti vat sistemul. [36]
Studiile mai recente utilizează mod ele ale consumului de energie ca și cost pentru
a gestiona eficiența energetică în MPC , similară ca în DP sisteme de conducere ecologică.
Comparativ cu sistemele ecologice de conducere bazate pe DP, ce le mai multe cadre MPC
trebuie să utilizeze modele simplificate sau aproximative cu privire la consumul de
energie. Motivul este că MPC se bazează pe optimizarea online și, prin urmare, trebuie
rezolvată foarte rapid făcând o formulă simplă pentru problem e, crucială pentru
capacitatea de rezolvare în timp real. Optimizarea online permite să ia în considerare în
plus informații despre topologie, vreme și condițiile curente de trafic, prin includerea
datelor din hărți digitale și modele de predicție a trafic ului precedent în pro blema
optimizării, rezultând o conducere mai realistă. Cu flexibilitatea oferi tă de optimizarea
online, schema MPC este foarte benefică pentru o mare varietate de aplicații, de ex.
Fueloptimal (optimizarea consumului de combustibil), c ontrolul manevrelor de întâlnire
pentru vehicule, așa cum se sugerează în Sciarretta și Guzzella [38]. Cea mai mare
provocare în utilizarea MPC este de a găs i un compromis bun între complexitatea
problemei de optimizare (modelul de predicție al vehiculului precedent, modelul
consumului de energie și constrângerile) și performanța schemei de control fără a pierde
în timp real.
Primul pas în realizarea acestei teme este studiul situației actuale a sistemelor de tip
ACC din industria producătoare de autoturism e. Astfel am luat în considerare diferite
abordări ale acestui sistem inteligent, din literatura de specialitate.
17
Capitolul II Proiectarea ș i implementarea sistemului tip
,,Vehicle Follower”
Sistemul de t ip „Vehicle Follo wer” care stă la baza acestei lucrări este compus atât
dintr -o parte fizică (hardware), cât și din partea software (aplicația propriu – zisă). Partea
hardware este compusă dintr -o mașinuț ă propulsată electric. Mașinuța are patru roți,
senzori pentru măsurarea distanței față de obiectul din față și din spate , și un senzor pentru
măsurarea vitezei. Partea de procesare a informației este realizată de un microcontroller
cu ajutorul părții software. Aplicația este scrisă în programul Arduino Software (IDE) în
limbajul de programare C++. În su bcapitolele ce urmează vor fi descrise în amănunt
elementele componente ale sistemului, precum și funcționarea și interconectarea acestora.
2.1 Implementarea fizică a sistemului
Structura hardware a sistemului este reprezentată de:
• un cadru pentru suportul pieselor însoțit de patru roț i;
• patru motoare de curent continuu;
• doi senzori ultrasonici;
• un senzor de tip impuls pentru mă surarea vitezei ;
• o punte H pentru controlul motoarelor;
• un microcontroller.
2.1.1 Structura maș inii
Structura este compusă dintr -un șasiu format di ntr-o placă de plexiglass , de
lungime 260 mm, lăț ime 140.
Fig 2.1 Șasiul maș inii [18]
18
Această structură este însoțită de patru roți având
urmă toarele specificaț ii:
– Diametru l: 66 mm;
– Raza: 32 mm;
– Lățimea: 26 mm.
Roțile sunt acționate de motoare de curent continuu de 3 -12 V (tensiunea de
alimentare recomandată fiind de 6 -8 V), cuplu maxim de zvoltat la o alimentare de 3 V
fiind de 800 gf cm.
Pentru a face conversia energiei mecanice de la motor la roțile mașinii s -a folosit
un ang renaj format din roți dințate ca în figura următoare :
Fig 2.3 Reductor motor [19]
Fig 2.2 Roata [19]
19
Fig 2.4 Detalii tehnice reductor [19]
Angrenajul este mecanismul format d in roți dințate care transmite, prin intermediul
dinților aflați succesiv și continuu în contact (angrenare), mișcarea de rotație și momentul
de torsiune între cei doi arbori. Angrenajele au o largă utilizare în transmisiile mecanice
datorită avantajelor pe care le prezintă: raport de transmitere constant, siguranță în
exploatare, durabilitate ridicată, randament ridicat, gabarit redus, posibilitatea utilizării
pentru un domeniu larg de puteri, viteze și rapoarte de transmitere.
2.1.2 Senzori ultrasonici
Categoria de senzori cea mai des întâlnită la un robot mobil o constituie categoria
senzorilor ultrasonici. Întâlniți în lite ratura de specialitate și sub denumire a de sonar,
senzorii ultrasonici folosesc un principiu oarecum asemănător cu senzorii infraroșu, dar
în loc de a transmite fascicule luminoase , ei folosesc semnale acustice.
Un emițător transmite un semnal acustic în m ediu, urmând apoi ca reflecția acestuia
să fie recepționată de componenta detector a senzorului. Timpul în care semnalul este
receptat înapoi de senzor precum și atenuarea semnalului, reprezintă aspecte exploatate
de diferitele tipuri de senzori tip sonar . Sunetele transmise de senzori sunt de regulă în
spectrul de sunete ultrasonice, având o frecvență foarte înaltă pentru a nu putea fi detectate
de urechea umană . Sensibilitatea unui senzor ultrasonic nu este uniformă , aceasta diferă
de la un senzor la altul.
20
Fig 2.5 Princ ipiul de funcț ionare al senzorului ultrasonic
Metoda de măsurare a distanței utilizând undele ultrasonice se bazează pe metoda
puls-ecou, care determină distanța unui obiect prin măsurarea timpului de zbor (TOF),
așa cum este ilustrat în figura 2.6. TOF este intervalul de la transmisia unui impuls
ultrasonic până la primirea unui ecou reflectat de obiect. Distanța se calculează d e la
produsul TOF și de la viteza acustică.
Fig 2.6 Măsurarea distanț ei cu
metoda echo -pulsului [20]
Metoda de măsurare a vitezei cu ajutorul undelor ultrasonice se bazează pe metoda
impuls-Doppler. Atunci când obiectul se mișcă, datorită efectului Doppler introdus de
mișcarea obiectului, ecoul reflectat este modificat. Frecvența ecoului schimbat de efectul
Doppler este crescută sau scăzută proporțional cu viteza obiectului. Prin urmare, metoda
impuls-Doppler determină viteza obiectului prin măsurarea creșterii sau descreșterii
frecvenței, așa cum este ilustrat în figura 2 .6.
Fig 2.7 Mă surarea cu
metoda impuls –
Doppler [20]
21
Viteza sunetului în aer se schimbă odată cu temperatura și umiditatea. Prin urmare,
pentru a calcula cu exactitate distanța, va trebui să luăm în considerare temperatura
ambientală și umiditatea . Formula pentru viteza sunetului în aer cu temperatură și
umiditate este:
𝑐=331 .4+0.607 ∗𝑇+0.0124 ∗𝐻 (2.1)
c=viteza sunet ului î n m/s
331.4=viteza sunetului (î n m/s) la 0 𝐶𝑜 și 0% umiditate
T=temperatura in 𝐶𝑜
H=% umiditate(relativă )
În ecuația de mai sus este clar că temperatura are efectul cel mai mare asupra vitezei
sunetului. Umiditatea are și ea o influență, dar mult mai mică față de efectul temperaturii.
Pe partea frontală a aparatului de măsurat cu ultrasunete se găsesc doi cilindrii
metalici ( un em ițător ș i un receptor ). Emiță torul converteșt e un semnal electric în impuls
ultrasonic, iar traductorul de recepție convertește impulsul ultrasonic reflectat , într-un
semnal electric.
Fig 2.8
Senzor ultrasonic
HC SR04 [21]
Senzorul ultrasonic are patru in trări:Vcc, Trig, Echo și GND. Pi nul Vcc furnizează
puterea de a gener a impulsurile cu ultrasunete. Pi nul GND este conectat la masă. Pi nul
Trig este locul unde Arduino trimite semnalul pentru a porni impulsul ultrasonic, iar pinul
Echo este detectorul de frecvențe ultrasonice care trimite informații despre durata
călătoriei efectuate de către impulsul ultrasonic către Arduino.
22
Pentru a iniția o măsurare a distanței, trebuie s ă trimitem un semnal de 5V la pi nul
Trig pentru cel puț in 10 μs. Când modulul primește semnalul, acesta va emite semnale de
sunet ultrasonic la o frecvență de 40 -50 KHz de la traductorul de transmisie. Apoi așteaptă
și ascultă transductorul receptor pentru semnalul reflec tat. Dacă un obiect este în raza de
acțiune, impulsurile vor fi reflectate înapoi la senzor.
Când impulsul lovește traductorul de recepție, pinul Echo emite un semnal de înaltă
tensiune. Lungimea acestui semnal de înaltă tensiune este egală cu durata totală a
impulsurilor pentru a călători de la tr aductorul de transmisie și înapoi la traductorul de
recepție. Cu toa te acestea, dorim doar să măsură m distanța față de obiect și nu distanța
dintre calea pe care a primit impulsul sonor. Prin urmare, împărțim timpul în jumătate
pentru a obține variabila de timp. Deoarece deja cunoaștem viteza sunetului, putem
rezolva ecuația de distanță.
Erori de mă surare
La măsurătorile efectuate cu senzorii ultrasonici, la fel ca la orice tehnică de
măsurare, s -a ținut cont de erori.
Efectuarea măsurătorilor produce er ori care au aceeași mărime când procesul de
măsurare se efectuează în condiții identice, sau erori care au mărimi variabile, variația
acestora depinzând de anumite legi de variație. Erorile de măsurare se clasifică în:
• erori grosolane care provin din cit iri eronate sau din neatenție , și trebuie
eliminate;
• erori sistematice care apar din cauza unor caracteristici constructive ale
echipamentelor sau pot fi produse de factori externi (temperatură,
presiune, umiditate, zgomote etc);
• erori aleatorii care apar ca urmare a diversității proceselor și fenomenelor ,
precum și a interacțiunilor experimentului cu alte procese și fenomene ce
se desfa șoară simultan.
În procesul de analiză a datelor provenite din măsurătorile efectuate cu senzorii
ultrasonici se vor calcula eroarea absolută, eroarea relativă și se va determina eroarea
maximă admisibilă. Eroarea absolută este dată de relația [2.2]:
∆𝑥=|𝑥𝑚−𝑥𝑟| (2.2)
23
unde 𝑥𝑚 este valoarea obținută prin măsurare și 𝑥𝑟este valoarea reală.
Eroarea relativă este dată de relația:
𝜀=∆𝑥
𝑥𝑟∙100 (2.3)
unde ∆𝑥 este eroarea absolută și 𝑥𝑟 este valoarea reală.
Eroarea relativă este exprimată în procente. E roarea maximă admisibilă se
determină prin alegerea valorii maxime a erorii absolute.
∆𝑥𝑎𝑑𝑚 = ∆𝑥𝑚𝑎𝑥 (2.4)
Astfel pentru măsurătorile de distanță efectuate cu senzorii ultrasonici eroarea
absolută va avea fo rma
∆𝑑=|𝑑𝑚−𝑑𝑟| (2.5)
unde 𝑑𝑚 este valoarea distanței obținută prin măsurare și 𝑑𝑟 este valoarea reală a
distanței.
Eroarea relativă va fi:
𝜀=∆𝑑
𝑑𝑟∙100 (2.6)
unde ∆𝑑 este eroarea absolută și 𝑑𝑟 este valoarea reală a distanței. Eroarea maximă
admisibilă se va nota astfel:
∆𝑑𝑎𝑑𝑚 = ∆𝑑𝑚𝑎𝑥(2.6) (2.7)
In tabelul 1 din An exe e observa o e roare maxima de 0,66 cm.
În această lucrare s -a folosit senzorul ultra sonic(HC -SR04). Detectoarele de
ultrasunete folosesc senzori cu cristale piezoelectrice de cuarț care sunt excitate de către
energia unor vibrații ultrasonice. Vibrații le sunt simțite de detector și translatate din starea
lor de frecvență înaltă într -o stare de frecvență joasă. Calitatea sunetului este menținută
în timpul transmisiei astfel încât ultrasunetul este recepționat de receptor. Senzorii sunt
proiectați să rece pționeze și ultrasunetele aeropurtate.
Acest senzor poate măsur a distanțe între 2cm și 400cm, cu precizie care poate
ajunge la 3mm. Fiecare modul HC -SR04 include un transmițător ultrasonic, un receptor
și un circuit de comandă. Pentru funcționare, senzor ul are nevoie de 4 pini VCC (Power),
Trig (Trigger), Echo (Primire) și GND (Masă) .
24
Specifi cații:
• Tensiune de operare: DC 5V
• Curentul de funcț ionare: 15mA
• Unghi de funcț ionare: 15 °
• Distanț a: 2cm – 4m
2.1.3 Puntea H pentru controlul motoarelor
Pentru controlul motoarelor s -a folosit un driver dual L298N.
Caracteristici tehnice:
• Tensiune motoare: 5V – 35V;
• Tensiune circuite logice: 5V;
• Curent motoare: 2A (MAX);
• Frecvență maximă pwm: 40kHz.
• Dimensiuni: 43 x 43 x 27 mm.
Fig 2.9 Driver motorare L298N
[22]
Putem controla viteza motorului de CC prin variația tensiunii de intrare, și cea mai
utilizată metodă de a face acest lucru este prin utilizarea semnalului PWM (pulse wi dth
modulation – modul area lățimii impulsurilor).
Progresele tehnologice considerabile din domeniul dispozitivelor semiconductoare
de putere au condus la creșterea performanțelor convertoarelor statice de putere.
PWM este un generator de semnale dreptunghiulare cu frecvența fixă dar cu factorul
de umplere modificat dinamic astfel încât când acesta crește, puterea și tensiunea medie
furnizate de PWM cresc în mod liniar.
25
Deci, în funcție de mărimea motorului, putem conecta o ieșire PWM din Arduino
la baza tranzistorului sau la poarta unui MOSFET iar acesta controlează viteza motorului
prin controlul ieșirii PWM. Semnalul Arduino PWM de putere redusă închide și deschide
poarta MOSFET -ului, semnalul fiind condus de motorul de curent continuu .
Pe de altă parte, pentru controlul direcției de rotație trebuie doa r să inversăm direcția
fluxului curent prin motor , și cea mai obișnuită metodă de a face aces t lucru este folosirea
unei punț i H. Un circuit H -Bridge conține patru elemente de comutare, tr anzistoare sau
MOSFET -uri, cu motorul în centru care formează o confi gurație asemănătoare literei H.
Prin activarea a două comutatoare particulare în același timp, putem modifica
direcția fluxului curent, schimbând astfel direcția de rotație a motorului.
Fig 2.9 Modula ții PWM [22]
26
Deci, dacă combinăm aceste două metode,
PWM și H -Bridge, putem avea un control
complet asupra motorului DC. Există multe
drivere de curent continuu care au aceste
caracteristici, iar L298N este unul dintre ele.
L298N este un modul care permite
controlul vitezei și direcției a două motoare DC
în același timp. Modulul poate conduce
motoarele DC care au tensiuni cuprinse între 5 și
35V, cu un curent de vârf de până la 2A .
Modulul are un regulator de 5V la bord care este activat sau dezactivat folosind un
jumper. Dacă tensiunea de alimentare a motorului este de până la 12V putem activa
regulatorul 5V , iar pinul 5V poate fi folosit ca ieșire, de exemplu pentru alimentarea plă cii
noastre Arduino. Dar dacă tensiunea motorului este mai mare de 12V, trebuie să
deconectăm jumperul deoarece aceste tensiuni vor cauza deteriorarea regulatorului 5V de
la bord. În acest caz pinul 5V va fi folosit ca intrare pentru tensiunea de alimentar e a
modulului atfel încat acesta să funcț ioneze corect.
Putem observa aici că circuit ul integrat are o scădere de tensiune de aproximativ
2V. De exemplu, dacă folosim o sursă de alimentare de 12V, tensiunea la terminalele
motoarelor va fi de aproximativ 1 0V, ceea ce înseamnă că nu vom putea obține viteza
maxim ă din motorul nostru de 12V DC.
Următoarele sunt intrările de control logic. Elementele de Enable A și Enable B
sunt utilizate pentru activarea și controlul vitezei motorului. Dacă pe acest pin există un
jumper, motorul va fi activat și va funcționa la viteza maximă , iar dacă scoatem jumperul
putem conecta o intrare PWM la acest pin și astfel controla viteza motorului. Dacă
conectăm acest pin la GND, motorul va fi dezactivat.
Fig 2.10 Circuit electronic
Driver Motoare [22]
27
Fig 2.11 Reprezentare c ircuit electronic driver motoare [22]
Apoi, pinii de intrare 1 și 2 sunt utilizați pentru controlul direcției de rotație a
motorului A , iar pinii 3 și 4 pentru moto rul B. Folosind aceste știfturi de fapt controlă m
comutatoarele modulul ui H din interiorul driverului IC L298N. Dacă intrarea 1 este LOW
și intrarea 2 este HIGH, motorul se va deplasa înainte și invers; dacă intrarea 1 este HIGH
și intrarea 2 este LOW , motorul se va mișca înapoi. În cazul în care ambele in trări sunt
identice, fie LOW, fie HIGH , motorul se va opri. Același lucru este valabil și pentru
intrările 3 și 4 și motorul B.
2.1.4 Senzor incremental
Traductoarele incrementale pentru deplasări unghiulare sunt proiectate și construite
astfel încât să genereze un număr fix de impulsuri pentru fiecare unitate (cuanta) de rotație
unghiulară (increment unghiular) a discului codat. Procedeul de sesizare al incrementelor
poate fi magnetic sau optic. Procedeul optic este cel mai raspândit datorită relativei
simplități constructive și a unor facilități de prelucrare a semnalelor.
Circuitul electronic asociat discului trebuie să conțină un numărător care să ofere o
ieșire numerică într -un anume cod dependent de numărul de incremente generate de disc,
plecând de la o anumită poziție. Discul codat conține o rețea optică de zone active,
alternate cu interstiții de aceeași lățime. Zonele active se disting de interstiții fie prin
28
transparență (procedeu de măsurare de tip diascopic), fie prin puterea de reflecție
(procede u de măsurare episc opic).
Procedeul diascopic
În acest caz rețeaua optică este dispusă pe un disc de plastic și constă în zone
transparente alternate cu interstiții opace. Lumina generată de sursă este dirijată print r-un
sistem de lentile optice, paralel prin disc , spre reti culul palpator figura 2.12. Când discul
se rotește în raport cu capul de citire, intensitatea luminoasă ce acționează asupra
fotoelementelor variază periodic, iar variațiile de intensitate sunt transformate de
fotoelemente în semnale electrice.
Fig 2.12 Procedeul diascopic [23]
Principiu l de lucru al traductorului incremental de rotație
Măsurarea numeric incrementală cu TIRO (traductor incremental de rotatie)
folosește principiul divizării unității de unghi într -un număr finit de elemente, fiecare
element fiind reprezentat la ieșirea din traductor prin semnalele logice alternative "1" și
"0". S -a reprezentat în figura 2 .13 un tren de impulsuri de tensiune. Amp litudinea maximă
a unui impuls reprezintă nivelul logic "1" în timp ce nivelul logic "0" este reprezentat de
tensiunea zero. Acest tren de impulsuri poate fi asociat distanței 𝐿 = (𝑃1𝑃2) ce urmează
a se măsura. Prin însumarea impulsurilor de către un nu mărător electronic, se obține o
informație privind deplasarea L.
29
Fig. 2. 13 Măsurarea numeric incrementală [23]
Circuitele as ociate discului trebuie să conți nă un numărător care să ofere o ieșire
numerică în funcție de incremenț ii generați de disc. De asemenea, este necesar să indice
sensul de rotație care nu apare î n informația dată la numărător.
Cel mai raspând it mod este obținerea prin grila de scanare a patru semnale
sinusoidale decalate fiecare cu 90° . Cele patru fotoelemente sunt astfel asociate perechi,
în montaj diferențial, astfel încât se obține câte o sinusoidă , decalate între ele cu 90° . Se
generează și un semnal zero pentru reprod ucerea unei poziții de referință. Semnalele astfel
obținute sunt prelucrate, amplificate și adaptate pentru tipul de logică în care se lucrează.
Datorită robusteții, simplității constructive, costului scăzut, rezoluției ridicate (pâna
la 360.000 imp / rota ție), traductoarele incrementale rotative sunt cele mai utilizate și în
măsurarea indirectă a deplasării liniare.
Sursele luminoase pot fi din categoria diodelor electroluminiscente (LED) sau a
diodelor laser. Receptoarele fluxului luminos sunt fotodiode s au fototranzistoare.
Fig 2.14 Schema de principiu Senzor
Rotaț ional
Funcționarea sistemului
În cazul traductorului incremental d e rotație, o diodă fotoelectrică recepționează
fasciculul luminos emis de sursa de lumină printr -un disc incremental (un disc din plastic
cu zone transparente și opace uniform dist ribuite pe suprafața discului).
30
Diodele fotorezistive creează un impuls cu ajutorul blocului electronic (de exe mplu:
zona transparent ă=5V și zona opacă=0V ).
Anali za semnalului este realizată de un circuit de evaluare prin numărarea
impulsurilor. Numer otarea curentă este înregistrată și disponibilă la ieșirea encoderului.
Printr -un algoritm adecvat putem astfel măsura viteza ma șinii in func ție de num ărul
de fante și diametrul ro ții.
Fig 2.15 Schema constructivă a unui traduc tor numeric incremental rotativ [24]
Placa experimentală – permite ducerea la îndeplinire a tuturor experimentelor fără
a avea nevoie de un ciocan de lipit. Placa este alcătuită în interior din arcuri de contact
legate între ele prin mai multe șiruri. Componentele electronice și firele de conexiune pot
fi introduse de mai multe ori în contactele plăcii. Acest lucru permite realizarea de circuite
fără lipire sau șuruburi , și totoda tă efectuarea mai multor experimente prin înlocuirea
componentelor.
Fig 2.16 Traductorul incremental de rotație FC -03[25]
Specificații :
Tensiune de operare: DC 3.3V -5V
Curentul de funcț ionare: 15mA
Semnal de ieșire digital(0 și 1)
Dimensiune 3.2cm x 1.4cm
31
2.1.5 Microcontrollerul
Arduino UNO este o platformă de procesare open -source, bazată pe software și
hardware flexibil și simplu de folosit. Constă într -o platforma de mici dimensiuni (6.8 cm
/ 5.3 cm – în cea mai des întâlnită variantă ) construită în jurul unui procesor de semnal ,
și este capabilă de a prelua date din mediul înconjurător printr -o serie de senzori, și de a
efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoarelor
și altor tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris într -un
limbaj de programare care este foarte similar cu limbajul C++.
Specificații :
Microcontroler: ATmega328
Tensiune de lucru: 5V
Tensiune de intrare (recomandat ă): 7-
12V
Tensiune de intrare (limită ): 6-20V
Pini digitali: 14 (6 PWM output)
Pini analogici: 6
Curent per pin I/O: 40 mA
Curent 3.3V: 50 mA
Memorie Flash: 32 KB
(ATmega328) 0.5 KB pentru
bootloader
SRAM: 2 KB (ATmega328)
EEPROM: 1 KB (ATmega328)
Clock Speed: 16 MHz
Limbajul de programare: Arduino Software (IDE)
Fig 2.18 Microcontroler
Arduino Uno [26]
32
Fig 2.19 Schema -bloc a elementelor ce realizează mișcarea de rotaț ie
Circuitul de alimentare este format din :
– O mufă de alimentare de la acumulatorul de 9 V ce va furn iza tensiunea necesară
motoarelor de curent continuu conectata cu driverul pentru motoare
– O mufă de alimentare de la acumulatorul de 9 V cu placa de dezvoltare a Arduino ,
– Doi conectori ce realizează conexiunea cu senzorii ultrasonici ;
– Un conector ce realizează conexiunea cu senzorul rotaț ional ;
2.2 Implementarea software a sistemului
În urma punerii în practică a sistemului din punct de vedere hardware, acesta trebuie
și programat pentru a -și putea îndeplini funcțiile de monitorizare a traficului și de evitare
a accidentelor . Softul a fost programat cu limbajul de programare C++ in mediul Arduino
IDE. A cest mediu de programare rulează pe o varietate de platforme. Spați ul de lucru:
Windows, Linux, OS X, FreeBSD, NetBSD, OpenBSD; Mobil: Android, iOS, Maemo,
BlackBerry 10 . Aceasta se realizează pe baza analizei distanței față de obiectul din fața și
spatele maș inii. Prin această sintagmă se înțelege încercarea de imitare a cap aciță tii
umane de „observare” a distanțelor și de prevenire ș i evitare a accidentelor.
33
2.2.1 Noț iuni t eoretice ce stau la baza aplicaț iei software
Din punct de ve dere al complexității metodelor si operaț iilor im plicate există
următoarea ierarhie logică :
1. Măsurarea distanței din faț a vehiculului
2. Măsurarea distanț ei din spatele vehiculului
3. Procesarea informaț iilor
4. Aplicarea algoritmului
5. Transmiterea comenzii că tre motoare.
6. Măsurarea vitezei vehiculului
În modelarea matematică pentru sistemul de ACC există abordări teoretice care
exemplifică ordinea menționată anterior.
Se poate constata că urmărirea este realizată deja în cadrul sistemelor de pilot
automat adaptiv; se utilizează algoritmi foarte performanți de analiză în timp real a
distanțelor și a imaginilor pentru a nu confunda anumite obiecte cu mașini sau alte
vehicule. Astfel, distanța este analizată foarte rapid, iar efortul algoritmului constă în
menținerea mașinii aflată în mișcare la o distanță cât ma i apropiată de mași na din față.
Contro lul de croazieră adaptiv este similar cu sistemul de pilot automa t, prin faptul
că menține viteza prestabilită a vehiculului. Cu toate acestea, spre deosebire de acest
control convențional, noul s istem poate regla automat viteza pentru a menține o distanță
adecvată între vehicule în aceeași bandă. Acest lucru este realizat printr -un senzor
ultrasonic ce emite un semnal digital către mediul exterior, apoi înapoi , reacția către
procesor. Dacă vehiculul urmărit încetinește sau alt obiect este detectat că este oprit,
sistemul trimite un semnal la procesor iar acesta comandă motoarele s ă decelereze sau să
se opresască . Atunci când drumul este din nou liber, sistem ul va accelera din nou la viteza
setată.
Fig 2.20 Schema de principiu în acționarea motoarelor
34
Fig 2. 21 Schema SRA
Detecția obiectului și măsurarea distanței este realizată de către senzorul ultrasonic
ce transmite semnale digitale către intrările digitale 7 și 8 ale procesorului.
Scopul utilizării unui sistem de reglare pentru acest sistem, este aplicarea unui
algoritm de control pentru a elimina sau a reduce eroarea dintre valoarea de referință și
ieșirea procesului. În consecință, un sistem de reglare automat are rezultate satisfăcătoare
dacă acesta este:
• Stabil – mărimea de ieșire trebuie să conveargă la o valoare finită dacă semnalul
de intrare este de asemenea limitat.
• Precis – mărimea de măsurat trebuie să fie cât mai aproape de cea dor ită în
stare statică
• Rapid – trebuie să răspundă rapid la stimul.
Procesarea datelor are la bază un algoritm de tip PI cu parametri KP si KI
determinaț i experimental. (vezi Tabel 2 Anexe)
35
Fig 2.21 Schema logică a aplicației software
Astfel, distanța este achiziționată de senzorii ultrasonici prin declararea a două
variabile „distance1” și „distance2” de tip float, și printr -un algoritm de măsurare a
distanței cu senzori ultrasonici. Algoritmul se bazează pe mă surarea timpului parcurs de
unda de semna l.
Practic acesta este primul pas în abordarea acestei probleme. Pentru a realiza
măsurarea, algoritmul este localizat în interiorul unei bucle infinite: loop() { …}. Astfel
distanțele sunt măsurate la fiecare ciclu al buclei.
În continuare, pe ntru proce sarea m ai facilă a informaț iilor am int rodus un algoritm
PI iar rezul tatul acestuia este transferat într -un semnal PWM că tre motoarele de curent
continuu.
36
error1 = abs(distance1) – abs(10);
totalError1 += error1;
integrator1 += totalError1;
pid_speed1 = (Kp * error1) + (Ki * totalError);
pid_speed1 = constrain( pid_speed1,0, 255);
Astfel algorit mul transferă valorile algoritmului PI într -un semnal PWM cuprins
între [0,255] că tre motoarele de curent continuu.
Pentru a mă sura viteza am folosit un senzo r rotațional conectat la placa A rduino
prin pinul [2 ] .
if (millis() – timeold >= 500){ // Se actualizează în fiecare 1/2 secunde
noInterrupts(); //Nu procesați întreruperi în timpul calculelor
// Am deconectat întreruperea astfel încât s ă nu acționeze î n această parte a
programului.
rpm = (60 * 1000 / pulsesperturn )/ (millis() – timeold)* pulses; // Calculăm
rotațiile pe minut
viteza = rpm * 3.1416 * wheel_diameter * 60 / 1000000; // Calcularea vitezei în
[Km / h]
timeold = millis(); // Stocăm ora curen tă.
Serial.print(millis()/1000); Serial.print(" "); // Valoarea timpului, rpm și
impulsuri este trimisă la portul serial.
pulses = 0; // Inițializați impulsurile.
interrupts(); // Reporniți procesul de întrerupere // Reporniți întreruperea
Astfel apli cația reușește s ă gestioneze semnalele primite de la senzori si s ă aplice un
algoritm decizional în functie de sit uațiile întânlite.
37
Capitolul III Rezultate experimentale ale sistemului
implementat
Scopul cu care a fost gândit acest sistem de tip ACC este de a fi capabil să detecteze
un obiect la o distanță maximă de 100 cm și să aplice un algoritm PI în intervalul [1 5,
100] cm.
Mașina are proprietatea de a merge cu spatele astfel înc ât când o maș ină dă cu
spatele aceasta evită coliziun ea verific ând daca are vreun obstacol in spate la o di stanță
minim ă de 10 cm iar în cazul în care este liber masi na dă cu spatele pentru a evita
impactul. P entru rezolvarea probleme i am aplicat algoritmul precizat anterior. În figura
3.1 sunt precizate cazurile decizionale ale algoritmului.
Fig 3.1 Grafic intervale de decizie în cadrul algoritmului.
Această strategie a fost gândită în cazul unor cărucioare transportatoare autonome
într-o fabrică sau chiar a unor autovehicule reale cu scopul de a evita accidentele sau
impactul în cazul în care vehiculul din față își schimbă sensul de mers (cu spatele) și se
îndreaptă către vehiculul nostru.
Sistemul prezintă o abordare a problemei reale de „adaptive cruise control” și poate
fi dezvolt at îmbunătățind partea de măsurare a distanței, senzorii ultrasonici fiind înlocuiți
38
de camere care detectează forme programabile astfel încât programul să recunoască
diferite forme sau imagini (exemplu : camera poate sesiza faptul că o mașină
semnalizează sc himbarea benzii de circulație).
Prima problemă întâlnită a fost corelarea distanței m ăsurate cu viteza de rulare a
masinuț ei astfel încât , într-o prim ă abordare a problemei , mașina accelera cu o viteză
maximă și frâna brusc. Acest lu cru s -a modificat prin implementarea algoritmului PI și
acordarea parametrilor. Apoi au mai fost facute modificari cu privire la angrenajele
motoarelor deoarece acestea prezentau frecari interioare foarte mari.
Simularea softului a fost f ăcută cu ma șina s uspendat ă urmând ca apoi sa se a șeze
mașina pe o suprafa ța orizontal ă. Astfel parametrii acordati în primul cazul nu
corespundeau și în al doilea caz fiind necesare ajust ări ulterioare.
Acordarea parametr ilor regulatorului a fost făcută experimental prin încercă ri
multiple (incercari cu ma șina suspendata) . În prima etapă este modificat doar Kp (vezi
tabel 1 anexe ) iar apoi, în partea a doua, se ajustea ză Ki cu un Kp ales . Valoarea lui K i
a fost aleas ă foarte mic ă deoarece introduce un plus de comanda prea mare. Făcâ nd
compar ație cu un regulator de tip PID „classic”, se pare că timpul pentru a ajunge la starea
de echilibru este mai redus.
Astfel senzorul rotațional a fost folosit pentru a măsura viteza la anumite distanțe
și a fo st un punct de reper important î n acordarea optimă a parametrilor algoritmului PI.
În concluzie, scopul inițial a fost atins, ma șina reacționeaza în toate cazurile
prezentate insă datorită erorilor de măsurare a senzorilor ultrasonici și a perturba țiilor mai
apar devia ții de la traiectorie sau mai prezint ă comportare nejustificat ă.
39
Cap IV Concluzii
Scopul acestei lucrări a fost de studia și realiza un sistem de tip „vehicle follower”
care să fie capabil să detecteze un vehicul și să-l urmărească. Am pornit de la sisteme
foarte perf ormant e care folosesc tehnologie de ultimă oră pentru a încerca să recreez un
astfel de sistem. Provocarea a reprezentat realizarea acestuia cu resurse hardware și
software aflate la îndemâna oricui, fără investiții foarte mari. Astfel, cu ajutorul unui
calculator, câțiva s enzori, motoare DC și o machetă, am făcut primul pas în atingerea
scopului final.
Senzorii ultrasonici, deși destul de performanți pentru prețul și destinația lor, au
reprezentat o barie ră în atingerea performanțelor optime ale sistemului deoarece
acuratețea nu este cea mai bună. Este un punct bun de plecare, iar cu o ulterioară investiție
într-o cameră mai performantă care ar putea să detecteze imagini, forme și să măsoare
distanțe, sist emul ar putea fi adaptat pentru introducerea într -o arie de folosire mai largă,
de exemplu pentru mediul industrial implementat pe cărucioare transportatoare.
Senzorul rotaț ional pentru măsurarea vitezei a fost de ajutor în calibrarea
algoritmului PI însă ar fi nevoie totuși de un senzor p e fiecare roată pentru a compara
măsurătorile și a monitoriza situațiile în care unele roți derapeaz ă.
Roțile prezintă deformări , acestea provocând virarea mașinii când ea parcurge
distanțe mai lungi însă această eroare a fost corectată din co d, iar angrenajul lor are
frecă ri mecanice interioare mari ce împiedică rotirea liberă a roții astfel încât motoarele
au nevoie de un plus de putere pentru a le acționa.
Aplicația este menită să funcționeze în timp real, astfel sist emul reacți onează la
orice obstacol întâlnit . Astfel există un timp mort de câteva milisecunde timp în care
senzorul măsoară și procesorul prelucrează datele , însă această eroare este mult prea mic ă
încât devine insesizabilă iar algoritmul PI reușește să-și facă treaba cu o precizie destul
de bună.
Sistemul este total portabil , durata de funcționare a acestuia depinzând de
autonomia bateriei cu care este alimentat.
Dacă se dorește într -adevăr integrarea viitoare a sistemului în producție, programul
ar trebui să fie executat pe un microcontroler mai performa nt sau un PLC , motoarele sau
40
senzorii să aibe performanțe mai ridicate și calități tehnice specifice pentru mediul de
lucru.
La capit olul hardware s -ar adaug a astfel un di splay pentru a se putea obser va
parametrii precum viteză, rota ții/minut, distanța față de mașina din față, di stanța față de
mașina din spate.
Programul software realizat este unul de bază, destul de simplu , capabil să detecteze
într-un procent destul de bun modificările de distanță al e obiectelor detectate față de
referință. În cazul în care mașina din față dă cu spatele, progra mul este capabil să comande
mașina ca la rândul ei să dea cu spatele pentru a evita coliziunea. În același timp el
controlează și perimetrul pentru ca acesta să fie liber.
Sunt necesare îmbunătățiri hardware și software pentru a putea fi un sistem eficient
și din punct de vedere calitativ, nu numai din punct de vedere material. Acordarea
parametrilor algoritmului a fost realizata pur expeimental deoarece realiza rea unor
simulari a fost dificil de realizat iar perturba țiile au fost destul de mari ( deformarea
roților, eroarea de m ăsurare a senzorului, iner ția).
Adăugând mențiunea că sistemul este capabil totuși să detecteze obiectele și să le
urmărească, în timp r eal, se poate concluziona că a fost atins scopul acestui proiect. Au
fost folosite resurse la îndemână și nu au fost făcute investiții majore, respectând planul
inițial.
In concluzie, c onsider astfel că proiect ul prezintă un raport calitate -preț destul de
bun care poate fi îmbunătățit cu ușurință pe viitor cu cele propuse anterior.
41
Cap V Bibliografie
[1] https://www.scribd.com/document/352337323/adaptive -cruise -control –
report
[2] https://www.mathworks.com/help/mpc/examp les/design -an-adaptive –
cruise -control -system -using -model -predictive -control.html?ue
[3] https://www.iso.org/obp/ui/fr/#iso:std:iso:15622:ed -2:v1:en
[4] http://atestatesofericraiova.ro/pdf/1/STUDII_DE_CAZ_TEORIE.pdf
[5] https://www.sciencedirect.com/science/article/pii/S0386111214 600066
[6] https://www.sciencedirect.com/science/article/pii/S2405896317307681
[7] http://web.mit.edu/people/ jhow/papers/Richards_PhD.pdf
[8] http://dashboardsymbols.com/2010/09/radar -controlled -cruise -control –
indicator/
[9] http://ac.upg -ploiesti.ro/cursuri/tra/curs_tra.pdf
[10] https://www.researchgate.net/profile/J ohannes_Bach/publication/316456
082_A_Taxonomy_and_Systematic_Approach_for_Automotive_System_Architect
ures_From_Functional_Chains_to_Functional_Networks/links/5910878daca272ec
9a0c4d9c/A -Taxonomy -and-Systematic -Approach -for-Automotive -System –
Architectures -From-Functional -Chains -to-Functional -Networks.pdf
[11] Cîrtoaje V. (2012): Sisteme automate, Editura Universității Petrol – Gaze
din Ploiești
[12] Paraschiv N. (2008): Achiziția și prelucrarea datelor, Editura
Universității Petrol – Gaze din Ploiești
[13] Moise A., Bucur G (2015).: Automatizarea celulelor flexibile de
fabricație, Editura Universității Petrol – Gaze din Ploiești
[14] https://nacherikazpu.wordpress.com/2016/07/14/control -de-crucero –
adaptativo -luces -automaticas -y-asistencia -de-estacionamiento -del-volkswagen –
golf-7/
[15] https://www.richardsonchryslerjeepdodgeram.com/blog/2017/june/22/ho
w-to-use-adaptive -cruise -control -on-your-jeep.htm
[16] https://en.wikipedia.org/wiki/Cruise_control
[17] Andreas Weibmann, Daniel Gorges, Xiaohai Lin : Energy -optimal
adaptive cruise control combining model predictive control and dynamic
programming
[18] https://www.ali express.com/item/Free -shipping -Intelligent -barrow -load-
chassis -generator -st-4wd-single -tier-smart -car-
chassis/32210978051.html?spm=2114.search0204.0.0.4c6eee8f0X7soo
42
[19] https://www.aliexpress.com/item/DC -3V-6V-Dual -Axis -Gear -Motor –
TT-Reducer -Motor -and-Motor -Smart -Robot -Car-Chassis/32842110070.html
[20] http://acoustics.org/pressroom/httpdocs/155th/hirata.htm
[21] http://www.circuitbasics.co m/how -to-set-up-an-ultrasonic -range -finder –
on-an-arduino/
[22] https://howtomechatronics.com/tutorials/arduino/arduino -dc-motor –
control -tutoria l-l298n -pwm -h-bridge/
[23] http://www.scritub.com/tehnica -mecanica/Traductoare -incrementale –
pentr32331.php
[24] http:// mec.upt.ro/dolga/sensor.htm
[25] https://forum.arduino.cc/index.php?topic=342650.0
[26] https://uae.souq.com/ae -en/arduino -uno-r3-6186780/i/
[27] http://www.bkfc.net/altendor/Convergence_SAE_Altendorfer.pdf
[28] https://www.hemmi ngs.com/magazine/hcc/2009/07/Ralph -R–
Teetor/1846418.html
[29] Wu, C., Zhao, G., & Ou, B.(2011). A fuel economy optimization system
with applications in vehicles with human drivers and autonomus vehicles.
Transportation Research, Part D(Transport and Environmen t)
[30] Ozatay, E., Onori, S., Wollaeger, J., Ozguner, U., Rizzoni, G., Filev, D., .
. . , & Cairano, S. D. (2014). Cloud -based velocity profile optimization for
everyday driving: A dynamicprogramming – based solution. IEEE Transactions on
Intelligent Transport ation Systems
[31] Hummel, T., Kühn, D. M., Bende, J., & Lang, A. (2011). Advanced
driver assistance systems: An investigation of their potential safety benefits based
on an analysis of insurance claims in Germany, Tech. Rep. FS 03. Berlin: German
Insurance Ass ociation, Insurers’ Accident Research .
[32] Khayyam, H., Nahavandi, S., & Davis, S. (2012). Adaptive cruise
control look -ahead system for energy management of vehicles. Expert Systems
with Applications
[33] Luo, L., Liu, H., Li, P., & Wang, H. (2010). Model predict ive control for
adaptive
cruise control with multi -objectives: comfort, fuel -economy, safety and car –
following. Journal of Zhejiang University Science A.
[34] Luo, L., Liu, H., Li, P., & Wang, H. (2010). Model predictive control for
adaptive
43
cruise control with multi -objectives: comfort, fuel -economy, safety and car –
following.
Journal of Zhejiang University Science A,
[35] Zhang, C., & Vahidi, A. (2011). Predictive cruise control with
probabilistic constraints for eco driving. In Proceedings of the ASME 2011 Dynamic
Systems and Control Conference and Bath/ASME Symposium on Fluid Power and
Motion Control .
[36] Turri, V., Besselink, B., & Johansson, K. H. (2017). Cooperative look –
ahead control for fuel-efficient and safe heavy -duty vehicle platooning. IEEE
Transactions on C ontrol Systems Technology.
[37] Sciarretta, A., & Guzzella, L. (2005). Fuel -optimal control of rendezvous
maneuvers for passenger cars (Treibstoffoptimale Annäherung von
Straßenfahrzeugen). at -Automatisierungstechnik.
[38] Cristina Popa, Alexandru Popa ,Proiectarea automatizării proceselor –
Aplicații practice -,Editura Universitații Petrol -Gaze din Ploiești,2017
[39] Mihalache, S.F. – Elemente de ingineria reglării automate, Editura
MATRIX ROM, București, 2008
[40] Moise, A., Automate programabile. Proiectare. Aplicatii. Ed. Mat rixRom,
Bucuresti, 2004
44
Anexe
Tabel 1 erori:
Valoare
calculata
[cm] 5 10 15 20 25 30 35 40
Valoare
masurata
[cm] 5.37 10.31 15.56 20.07 24.84 29.89 35.05 39.4
Eroare
absoluta
[cm] 0.37 0.31 0.59 0.07 0.16 0.11 0.05 0.6
Eroarea
relativa
[%} 7.4 3.1 3.93 0.35 0.64 0.36 0.14 1.5
Valoare
calculata
[cm] 45 50 55 60 65 70 75 80
Valoare
masurata
[cm] 45 50.01 54.93 59.73 65.15 70.34 75.18 80.15
Eroare
absoluta
[cm] 0 0.01 0.08 0.27 0.15 0.66 0.18 0.15
Eroarea
relativa
[%} 0 0.02 0.14 0.45 0.23 0.94 0.24 0.18
Valoare
calculata
[cm] 85 90 95 100
Valoare
masurata
[cm] 84.71 89.51 94.7 99.07
Eroare
absoluta
[cm] 0.29 0.49 0.3 0.93
Eroarea
relativa
[%} 0.34 0.54 0.31 0.93
45
Tabel 2 acordare KP
KP Distanta
[cm] Viteza
[km/h]
6 15 13
6 18 0.2
6 19 0.64
6 20 0.89
6 21 1.04
6 22 1.19
6 23 1.29
6 24 1.34
6 25 1.44
6 26 1.54
6 27 1.59
6 28 1.64
6 29 1.69
6 31 1.73
6 32 1.79
6 35 1.89
7 15 0
7 17 0.24
7 18 0.69
7 19 0.89
7 20 1.095
7 21 1.24
7 22 1.34
7 23 1.43
7 27 1.54
7 25 1.59
7 26 1.64
7 27 1.9
7 28 1.692
7 29 1.791
7 30 1.791
KP Distanta
[cm] Viteza
[km/h]
15 0
2 25 0
2 25 0
2 30 0.64
2 35 0.98
2 40 1.24
2.5 15 0
2.5 20 0
2.5 25 0.48
2.5 30 0.75
2.5 35 1.2
2.5 40 1.4
3 15 0
3 20 0
3 23 0.29
3 25 0.6
3 28 0.9
3 30 1.19
3 35 1.4
3 40 1.5
4 19 0.2
4 22 0.76
4 25 1.04
4 27 1.24
4 30 1.44
4 32 1.54
4 35 1.6
4 38 1.7
5 15 0
5 19 0.2
5 21 0.84
5 23 1.14
5 25 1.29
5 27 1.44
5 30 1.64
5 33 1.64
5 35 1.74
5 40 1.89
46
KP Distanta
[cm] Viteza
[km/h]
11 15 0.44
11 17 0.69
11 18 0.945
11 19 1.145
11 20 1.344
11 21 1.493
11 22 1.642
11 23 1.692
11 24 1.791
12 15 0.498
12 18 0.84
12 19 1.29
12 20 1.44
12 21 1.54
12 22 1.692
12 23 1.791
13 15 0.76
13 18 1.095
13 19 1.34
13 20 1.492
13 21 1.642
13 22 1.791
KP Distanta
[cm] Viteza
[km/h]
8 15 0.29
8 17 0.59
8 18 0.76
8 19 1.095
8 20 1.294
8 21 1.393
8 22 1.193
8 23 1.543
8 24 1.64
8 25 1.692
8 26 1.742
8 27 1.791
9 15 0.199
9 17 0.69
9 18 0.99
9 19 1.24
9 20 1.34
9 21 1.49
9 22 1.54
9 23 1.64
9 24 1.69
9 25 1.79
10 15 0.34
10 17 0.69
10 18 0.995
10 19 1.344
10 20 1.493
10 21 1.592
10 22 1.642
10 23 1.692
10 24 1.791
47
Cod aplicatie :
#include "NewPing.h"
#include "DCMotorBot.h"
#include <math.h>
#define TRIGGER_PIN_1 7
#define ECHO_PIN_1 7
#define TRIGGER_PIN_2 8
#define ECHO_PIN_2 8
#define MAX_DISTANCE 400
NewPing sonar1(TRIGGER_PIN_1, ECHO_PIN_1, MAX_DISTANCE);
NewPing sonar2(TRIGGER_PIN_2, ECHO_PIN_2, MAX_DISTANCE);
float duration1; // valoare durata puls senzor1
float duration2; // valoare durata puls senzor1
float distance1; // distanta senzor fata
float distance2; // distanta senzor spate
float soundsp; // viteza su netului in m/s
float soundcm; // viteza sunetului in cm/ms
int iterations = 5;
//***********Rotational***********
const int interrupt0=0; / /intrerupere 0(pin 2)
const int faza_a=2; //pin 2
const int faza_b=3; //pin 3
int puls=0;
int marime=0;
byte byteRead;
int encoder_pin = 2; //Pin 2, donde se conecta el
encoder
unsigned int rpm = 0; // rotatii pe minut calculate.
float viteza = 0; //viteza [Km/h]
volatile byte pulses = 0; // Numărul de impulsuri citite de
Arduino într -o secundă
unsigned long timeold = 0; // timp
unsigned int pulsesperturn = 20; // numarul de fante al
discului.
const int wheel_diameter = 66; // diametrul rotii
masinii[mm]
static volatile unsigned long debounce = 0; // Timp de revenire.
//***********Motoare***********
// Motor A pins (enableA = activeaza motorare stanga, pinA1 = fata , pinA2 = spate)
int enableA = 6;
int pinA1 = 12;
int pinA2 = 11;
48
//Motor B pins (enabledB = activeaza motoare dreapta, pinB2 = fata , pinB2 = spate)
int enableB = 5;
int pinB1 = 10;
int pinB2 = 9;
int vmax = 255; // viteza maxima hard code
float totalError1 = 0;
float totalError2 = 0 ;
float Kp1 = 3;
float Ki1 = 0.1;
float Kp2 = 20;
float Ki2 = 1;
int pid_speed = 0;
int pid_speed1 = 0;
int pid_speed2 = 0;
float changeError1 = 0;
float changeError2 = 0;
void setup() {
//rotational
attachInterrupt (interrupt0, int_, FALLING);
pinMode(faza_a, INPUT_PULLUP);
pinMode(faza_b, INPUT_PULLUP);
//motoare
pinMode(enableA, OUTPUT);
pinMode(pinA1, OUTPUT);
pinMode(pinA2, OUTPUT);
pinMode(enableB, OUTPUT);
pinMode(pinB1, OUTPUT);
pinMode(pinB2, OUTPUT);
//ultrasonic
soundsp = 331.4 + (0.606 * 25) + (0.0124 * 50);
soundcm = soundsp / 10000;
//senzor rotational
pinMode(encoder_pin, INPUT); // Configurarea
pinului nr.2
attachInterrupt(0, counter, RISING); // Configurarea
întreruperii 0, unde este conectată.
pulses = 0;
rpm = 0;
49
timeold = 0;
Serial.print("Secunde ");
Serial.print("RPM ");
Serial.print("Pulsuri ");
Serial.println ("Viteza [Km/h]");
Serial.begin (115200);
}
void loop() {
int aux1,aux2;
float error1,error2,last_error1,pidTerm,integrator1,integrator2,last_error2;
duration2 = sonar2.ping_median(iterations);
distance2 = (duration2 / 2) * soundcm; // distanta spate
duration1 = sonar1.ping_median(iterations);
distance1 = (duration1 / 2) * soundcm; // distanta fata
Serial.print("distance1 -> ");Serial.print(distance1,DEC);
aux1=distance1;
aux2=distance2;
error1 = abs(distance1) – abs(15); // eroare pi mers fata
error2 = abs(10) -abs(distance1) ; // erroare pi mers sp atele
if (millis() – timeold >= 500){ // Se actualizează în
fiecare 1/2 secunde
noInterrupts(); // Nu procesați
întreruperi în timpul calculelor // Am deconecta t întreruperea astfel încât să nu acționeze
în această parte a programului.
rpm = (60 * 1000 / pulsesperturn )/ (millis() – timeold)* pulses; //
Calculăm rotațiile pe minut
viteza = rpm * 3.1416 * wheel_diameter * 60 / 1000000; //
Calcularea vitezei în [Km / h]
timeold = millis(); // Stocăm ora curentă.
Serial.print(millis()/1000); Serial.print(" "); // Valoarea
timpului, rpm și impulsuri este trimisă la portul s erial.
Serial.print("rpm -> ");Serial.print(rpm,DEC);
Serial.print(" pulsuri -> ");Serial.print(pulses,DEC);
Serial.print(" viteza -> ");Serial.println(viteza,3); // 3= nr de
zecimale
pulses = 0; // Inițializați impulsurile.
interrupts(); // Reporniți procesul de
întrerupere // Reporniți întreruperea
totalError1 += error1;
integrator1 += to talError1;
50
pid_speed1 = (Kp1 * error1) + (Ki1 * totalError1); //pid mers
cu fata
pid_speed1 = constrain( pid_speed1,0,255);
totalError2 += error2;
integrator2 += totalError2;
changeError2= error2 – last_error2;
pid_speed2 = (Kp2 * error2); // pid mers cu
spatele
pid_speed2 = constrain( pid_speed2,0,255);
if (distance1>15){ // intervalul (15,infinit]
analogWrite(enableA,pid_speed1);
digitalWrite(pinA1,HIGH);
digitalWrite(pinA2,LOW);
analogWrite(enableB,pid_speed1);
digitalWrite(pinB1,HIGH);
digitalWrite(pinB2,LOW);
}else if((di stance1>=10) and (distance1<=15)) { //
intervalul [10,15] STOP
digitalWrite(pinA1, HIGH);
digitalWrite(pinA2, HIGH);
digitalWrite(pinB1, HIGH);
digitalWrite(pinB2, HIGH);
}else
if ((distance1>0) and (distance2<10)){ // STOP
digitalWrite(pinA1, HIGH);
digitalWrite(pinA2, HIGH);
digitalWrite(pinB1, HIGH);
digitalWrite(pinB2, HIGH);
} else {
analogWrite(enableA,pid_speed2); // merge
cu spatele
digitalWrite(pinA1,LOW);
digitalWrite(pinA2,HIGH);
analogWrit e(enableB,pid_speed2);
digitalWrite(pinB1,LOW);
digitalWrite(pinB2,HIGH);
}
aux1=0;
aux2=0;
totalError1 = error1;
totalError2 = error2;
}
}
// senzor rotational function
51
void int_(){
if (digitalRead (faza_b) ==LOW){
puls++;
} else {
puls–;
}
}
// senzor rotational v2
void counter(){
if( digitalRead (encoder_pin) && (micros() -debounce > 500) && digitalRead
(encoder_pin) ) {
// Verificați din nou că codificatorul trimite un semnal bun și apoi
verificați dacă timpul este mai mare de 1000 microsecunde și verificați din nou că
semnalul este corect.
debounce = micros(); // memorati timpul pentru a verifica dacă nu
numărăm revenirea semnalului.
pulses++;
} // Adăugați un impuls bun care intră.
else ;
}
52
Designing and building an automated assistance system
like vehicle follower
Author: Mircea -Constantin Bîrlă
Scientific Coordinator: Gabriel Rădulescu
Petroleum – Gas University of Ploiești, Romania
ABSTRACT
The main preocupation of implementing a technology that has her own autonomy,
is drivers safety. 90% of accidents happen because of a mistake that the driver does.
That’s why, in the past years were developed a lot of smart systems that have the purpose
of helping the chauffer to be more relaxed in traffic and also to grow the comfort of
driving.
Starting from my own passion for cars, I ’ve been trying to figure out an automatic
system that watches the traffic(vehicle follower) and also adapts the speed of t he car to
the speed of the car in front of it, maintaining also a safety distance.
I studied this system(automatic pilot) based on the late techonology starting from
it beginings. ACC keeps the car at a fixed constant speed but also reacts dynamically if
faced with a car or an obstacle slower or faster, adapting his speed at theirs speed. Once
the road is cleared, ACC system accelerates to the cruise speed previously set.
In ad dition to studying the automatic pilot system, in this work I also presented the
hardware and software components wich I used. I started by implementing the program
on an electric car that I built with objects available to anyone, wich I proposed by doing
a small investement and succeeding it.
When we tal k about the hardware part we t alk about the electric car and her
components that were easily purchased. The electric car has a light structure c onsisting
of chassis, wheels and sensors. The sensors are useful for the calculation and
appreciation of the distance from the front car, informations that are transmitted to the
microcontroller that does the processing.
53
The software part is represented by the program in C++ language pro grammed in
Arduino IDE. It has the role of processing the received data from exteroceptive sensors
and transmitting signals to the engines of the car.
It is constantly measuring the distance from the front and back and, after detecting
an object, it follo ws it by maintaining a safety distance. If the car in front starts going
back, the software verifies whether it is free in the back and make the car going
backwards. If not, it stands still.
I also chose this system because of the many advantages that it is has: useful for
long drives, on the highway or in traffic jam, economically because of the low energy
consumption, reducing CO2 emissions. If we talk about electric cars the system grows
the time between two load s wich gives us a longer journey with fewe r interruptions.
As I already said, I did this project with objects that I easily purchased, but there
is room for improvements for the hardware and software parts.
Also we can develop the part that measures the distance by replacing the ultrasonic
sensors with better ones or with cameras that are able to detect programmable forms o r
images so they can be recognized (for example the camera can detect if a car signals
changing the lane).
If you want to improve the system, the program should be made on a bett er
microcontroller or a PLC so that the engines or the sensors would have a higher
performance and technical qualities specific for the work environment.You can also add
more t ypes of sensors for detecting the lane and the changes in light.
Basically the p urpose of this project was achieved, starting f rom good systems that
use latest technologies. The app lication is meant to work in real time so that the system
is able to react at any obstacle encountered. It is fully portable and its lifetime depends
on th e battery life.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Proiectarea si realizarea unui sistem automat de asisten ță [607631] (ID: 607631)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
