Sunteți pe pagina 1din 25

UNIVERSITATEA „POLITEHNICA” DIN BUCUREȘTI

FACULTATEA TRANSPORTURI

Departamentul Telecomenzi și Electronică în Transporturi

PROIECT
Sisteme de dirijare a
traficului feroviar

Îndrumător Student
Ș.l. Dr. Ing. Andrei Răzvan Andrei – Cristian SIMION
GHEORGHIU Grupa 8412

București
2018
1. Temă proiect: să se proiecteze un sistem automat de verificare a integrității trenului, care să
transmită informații de alertă atât la locomotivă, cât și la un dispecerat regional. Sunt obligatorii
următoarele:
a. În cazul în care se utilizează un microcontroler se va justifica alegerea în funcție de
parametrii care au importanță pentru proiect.
b. În cazul sub-sistemului de comunicații se va detalia soluția tehnică, inclusiv conectarea
și, dacă este cazul, programarea modulelor utilizate. De asemenea, se va defini conținutul
mesajului care se va transmite și se vor propune modalități de securizare a acestuia.
c. Stabilirea unei proceduri de acțiune în cazul alertelor.
d. Analiza posibilelor defecțiuni în funcționarea sistemului și propunerea de soluții pentru
detecția acestora și semnalizarea la un dispecer.
e. Justificarea soluțiilor alese: pentru fiecare se vor prezenta avantaje și dezavantaje.

Pe baza notațiilor:
- nn = numărul de litere din nume => SIMION = șase caractere;
- np = numărul de litere din prenume => Andrei = șase caractere.

Se consideră următorii parametri:


- min(nn, np) vagoane și maxim nn+np vagoane => șase, respectiv 12 vagoane;
- Viteza de circulație între stații este cuprinsă între min(nn, np)*10 km/h și
(nn+np)*10km/h => 60 km/h, respectiv 120 km/h;
- Lungimea mesajului de avertizare este min(nn, np) octeți => șase octeți;
- Tensiunea de alimentare pentru toate echipamentele noi introduse în sistem este de
nn*10 volți => 60 volți.

Dacă nn este par, alimentarea disponibilă este de curent continuu, dacă nn este impar,
alimentarea disponibilă este de curent alternativ.

2. Conținutul proiectului:
a. Prezentarea schemei bloc propuse, cu explicarea blocurilor componente și definirea
funcțiilor acestora.
b. Prezentarea schemei de amplasament a echipamentelor utilizate.
c. Descrierea soluției alese pentru realizarea fizică a fiecărui bloc din cele prezentate
anterior: schemă electrică, calcule pentru dimensionarea elementelor componente, prezentarea
datelor de intrare și ieșire necesare, elemente de fiabilitate.
d. Proiectarea interfețelor dintre blocurile funcționale – dacă este cazul.
e. Prezentarea programului software (limbaj de asamblare, C/μC, pseudocod, schemă
logică etc.) – dacă se utilizează microcontroler.
f. Prezentarea schemei complete rezultate pentru realizarea temei.
1. Proiectare sistem

a. ATmega1280

Fiind proiectantul acestui proiect, ținând cont de parametrii dați de către îndrumător și
ideea pe care mi-am propus să o implementez, trebuie să folosesc un microcontroler cu cel puțin
12 canale ADC (12 fiind numărul maxim de vagoane) pentru a putea citi starea fiecărui vagon
în parte, mai exact nivelul de tensiune la una din cele două stări (cuplat/decuplat).
Pe lângă cele 12 canale ADC pe care microcontroler-ul trebuie să le aibă, va trebui să țin
cont și de numărul de canale TXD/RXD, care trebuie să fie în număr de minim două de fiecare
pentru că voi folosi un modul GSM și un modul GPS.
Ținând cont de tot ce-mi va trebui pentru realizarea sistemului, am găsit microcontroler-
ul ATmega1280, care îmi oferă următoarele posibilități:
- Conectarea la 16 canale ADC, dintre care eu am nevoie de 12;
- Patru perechi TXD/RXD, dintre care eu am nevoie de două, putând pe parcurs să adaug
și alte două module, dacă este cazul.
b. Sub-sistem de comunicații

Circuitul care se amplasează pe vagon este format dintr-un convertor, un stabilizator de


tensiune, o fotodiodă, un fototranzistor și un LED de culoare verde pentru a semnaliza starea
circuitului (când LED-ul este aprins, totul este în regulă, altfel vagonul este decuplat).
Se face conexiunea către microcontroler cu ajutorul unui fir ce va fi amplasat între
fototranzistor și LED. Nivelul de tensiune în punctul respectiv este de aproximativ 2.23 volți
când circuitul este perfect funcțional, iar de aproximativ 4.5 volți când circuitul nu mai este
conectat la masă, atunci când vagonul este decuplat.
Convertorul are rolul de a “aduce” 12 volți pentru circuitul care se amplasează pe vagon,
cât și pe locomotivă, el având tensiunea de intrare de 60 volți.
Stabilizatorul de tensiune ajută la alimentarea fotoelementelor, ele având nevoie de 5
volți. Totodată, cu acest stabilizator, vom alimenta și circuitul amplasat pe locomotivă, circuitul
ce conține microcontroler-ul ATmega1280.
La microcontroler am conectat sistemul de avertizare, format dintr-un LED de culoare
roșie, o alarmă și un afișor LCD 16x2. În același timp, la microcontroler sunt conectate două
module: GPS, pentru transmiterea locației trenului către dispecerat și la bordul locomotivei,
respectiv GSM, pentru transmiterea stării trenului către dispecerat.

c. Proceduri de acțiune în cazul alertelor

În cazul în care totul este în regulă, se transmite câte un mesaj către dispecerat din 15 în
15 minute specificând faptul că trenul este complet: “COD STARE TREN: 978312” (cu
ajutorul modulului GSM), dar și locația la momentul respectiv (cu ajutorul modulului GPS),
LCD-ul păstrând coordonatele GPS-ului timp de trei secunde, apoi revenind la mesajul inițial,
iar la bordul locomotivei se afișează pe LCD următorul mesaj: “STARE TREN: COMPLET”.
În cazul în care un vagon se decuplează, se afișează pe LCD următorul mesaj: “STARE
TREN: VAG #XY DECUPLAT”, iar simultan va porni sistemul de alarmă format dintr-o
sonerie și LED-ul de avertizare de culoare roșie, totodată trimițându-se către dispecerat o alertă
cu mesajul: “COD STARE TREN: 9782XY”, unde XY reprezintă numărul vagonului, și
pornind același sistem de alarmă, format dintr-o sonerie și un LED de culoare roșie.

Exemplu: Dacă s-a decuplat vagonul 7, știm că după el se află și celelalte vagoane, până la
vagonul 12 inclusiv, iar mesajul afișat la bordul locomotivei este: “STARE TREN: VAG #7
DECUPLAT”, la dispecerat fiind afișat: “COD STARE TREN: 978207”. Se afișează numărul
vagonului unde s-a întrerupt conexiunea.

Logica abordată pentru mesajele 978312 și 9782XY

Ideea a pornit de la numărul de telefon al dispeceratului, el fiind de forma: 07DISPECER.


La ceea ce m-am gândit eu, a fost să formez un mesaj în litere care se scrie din cifre, mai exact
m-am gândit la tastatura numerică.
Litera D se află pe tasta 3, împreună cu litera E și litera F, și tot așa și cu celelalte litere.
În consecință, 07DISPECER este echivalent cu 0734773237.
Revenind la mesajele 978312, respectiv 9782XY, aici lucrurile stau un
pic diferit. S-a început cu aceeași idee, numai că din rezultate am adunat
numerele formate din două cifre ca să formeze un număr dintr-o cifră,
adică o cifră de la 0 la 9.

Pentru securitatea mesajului, se aplică din punct de vedere software un


filtru, care, în momentul în care se transmite mesajul către dispecerat,
mesajul să nu aibă mai mult de 6 caractere, aceste caractere să fie numai
cifre, iar în funcție de caz, caracterele să se potrivească.
Microcontroler-ul de la dispecerat știind că el trebuie să primească
978312 când trenul este în regulă, și 9782XY când un vagon s-a
decuplat. Indiferent de alte mesaje transmise către dispecerat, microcontroler-ul nu ia în
considerare mesajele respective.

Mesajul 978312 reprezintă: “STARE TREN: TOTUL ESTE ÎN REGULĂ”.


Luând pe rând cuvânt cu cuvânt, reiese:
- STARE = 78273, adunând cifrele = 27, adunând din nou = 9;
- TREN: = 87361, adunând cifrele = 25, adunând din nou = 7;
- TOTUL = 86885, adunând cifrele = 35, adunând din nou = 8;
- ESTE = 3783, adunând cifrele = 21, adunând din nou = 3;
- ÎN = 46, adunând cifrele = 10, adunând din nou = 1;
- REGULĂ = 734852, adunând cifrele = 29, adunând din nou = 11, adunând din nou = 2.

Mesajul 9782XY reprezintă: “ALERTĂ TREN! VAGON DECUPLAT XY”, unde X și Y


reprezintă, evident, numărul vagonului. În cazul în care este un vagon din intervalul 1 – 9, X
are valoarea 0, iar Y o să aibă numărul vagonului decuplat.
Luând pe rând cuvânt cu cuvânt, reiese:
- ALERTĂ = 253782, adunând cifrele = 27, adunând din nou = 9;
- TREN! = 87361, adunând cifrele = 25, adunând din nou = 7;
- VAGON = 82466, adunând cifrele = 26, adunând din nou = 8;
- DECUPLAT = 33287528, adunând cifrele = 38, adunând din nou = 11, adunând din
nou = 2;
- X = 0 sau 1, pentru că avem 12 vagoane;
- Y = 1 – 9.
Ținând cont de cerințele proiectului, trebuie să transmitem acest mesaj către dispecerat,
folosind modulul GSM. Lungimea mesajului fiind de 6 octeți.
Va trebui să transformăm mesajele noastre în biți, având în vedere că un octet este format
din opt biți.

Pentru mesajul 978312, obținem:


9 = 00001001; 7 = 00000111;
8 = 00001000; 3 = 00000011;
1 = 00000001; 2 = 00000010.
Pentru mesajul 9782XY:
0 = 00000000; 4 = 00000100;
5 = 00000101; 6 = 00000110.

Notă: Modulul GPS nu se va lua în considerare pentru acest proiect dacă din cauza
cerințelor proiectului putem transmite doar acest mesaj.

d. Posibile defecțiuni

Nefiind un sistem complex, singura defecțiune ar fi durata de viață a componentelor, cât


și o posibilă rupere a cablului dintre vagoane, sau dintre primul vagon și locomotivă, din diferite
cauze.

Componentele folosite, mai ales cele apropiate de exterior, sunt toate făcute să
funcționeze la temperaturi între -30° C și +60° C, în foile de catalog fiind valori mai mari de
atât, și mai mici, eu am specificat ceea ce s-ar putea produce în realitate. LCD-ul se află la
bordul locomotivei, și mă îndoiesc că vor fi sub -20° C în locomotivă, mai ales când trenul este
pus în funcțiune, pentru că altfel LCD-ul este oprit.

Dispeceratul este anunțat, în caz de defecțiune, numai în momentul în care un vagon este
decuplat în timpul mersului trenului.

e. Alegerea soluțiilor

Circuitul cu fotoelemente

Avantaje: durată mare de funcționare, cost mic, ușor de implementat.


Dezavantaje: trebuie păstrat într-un loc curat, unde praful își face cu greu apariția (pentru
această cauză, circuitul poate fi încapsulat într-o cutie de plastic transparentă).

Circuitul cu microcontroler

Avantaje: canale ADC suficiente pentru numărul de vagoane, canale TXD/RXD suficiente
pentru modulele necesare, îndeplinirea a mai multor funcții simultan (alarmă, aprindere LED
etc.).
Dezavantaje: există riscul de a afișa alte informații decât cele care s-au scris în codul software,
informații ce au legătură cu cele scrise, dar afișate eronat.
2. Conținutul proiectului

b. Schemă de amplasament pe tren

La bordul locomotivei

Amplasare pe vagon
Amplasare între vagoane, între primul vagon și locomotivă
c. Prezentare componente

Convertorul MAX5035

MAX5035CUSA+
Stabilizatorul de tensiune LM7805

Fotoelemente
LCD 16x2

Oscilator pentru microcontroler-ul ATmega1280

Notă: Acest oscilator este valabil și pentru microcontroler-ul ATmega8.


Alarmă

Notă: Modulele GSM și GPS folosite în proiect sunt generice. Așadar, nu pot oferi
informații amănunțite pentru aceste componente.
Pierderi de tensiune

Un alt parametru specificat în acest proiect este faptul că, pentru fiecare echipament nou
introdus, tensiunea de intrare este de 60 volți. Cei 60 volți vor “pleca” de la locomotivă, drept
urmare, tensiunea nu rămâne constantă.
Am considerat următoarele:
- Lungimea vagonului estimată la 30 metri;
- Cel puțin un metru în plus pentru fiecare conexiune (vagon-vagon, primul vagon-
locomotivă);
- Având 12 vagoane: 12*32 = 384 metri de cablu;
- Din cei 60 volți, va trebui să avem minim 12 volți la capătul cablului pentru a putea
funcționa în condiții optime convertorul și stabilizatorul;
- Tensiunea pe firul care face legătura între circuitul de pe vagoane și microcontroler,
nu trebuie să scadă mai mult de doi volți.

Notă: Puteam să folosesc un alt convertor MAX5035 ce-mi oferă tensiunea de ieșire 5
volți, dar nu este o tensiune constantă de 5 volți, există pierderi și stabilizatorul s-ar
putea să nu funcționeze.
Am ales convertorul MAX5035CUSA+, deoarece stabilizatorul LM7805 suportă
tensiunea de intrare de 12 volți, și îmi oferă tensiunea de ieșire de 5 volți mereu, fără să-
mi fac alte griji.
Notă: Din câte putem observa, se pierde foarte puțin din tensiune datorită curentului
mic ce trece prin fototranzistor (aproximativ 25 mA).
În acest sens, nivelul de tensiune setat în codul software, va rămâne la fel pentru toate
vagoanele.
e. Programul software

#include <avr/io.h>
#define F_CPU 8000000UL //Setare frecventa microcontroler
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>

#define D4 LCD_PORTB0
#define D5 LCD_PORTB1
#define D6 LCD_PORTB2
#define D7 LCD_PORTB3
#define RS LCD_PORTB4
#define EN LCD_PORTB5

#include "lcd.h"

void init_adc()
{
ADMUX = (1 << REFS0); //Selectarea tensiunii de referinta si a canalului de
intrare
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); //Starea
canalelor ADC
}

uint16_t read_adc(uint8_t ch)


{
//Canale ADC
ch = ch & 0b00001111;
ADMUX |= ch;

//Porneste conversia
ADCSRA |= (1 << ADSC);

//Asteapta pentru conversie completa


while(!(ADCSRA & (1 << ADIF)));

ADCSRA |= (1 << ADIF);

return(ADC);
}

void wait()
{
uint8_t i;
for(i = 0; i < 20; i++)
_delay_loop_2(0);
}

int main(void)
{
uint16_t adc;

DDRA = 0b00000001; //PORTA, PIN0 activ pentru LED avertizare


DDRB = 0b00111111; //PORTB, PIN0-5 activ pentru LCD
DDRC = 0b00000000;
DDRD = 0b00000000;
DDRE = 0b00000000;
DDRF = 0b00000001; //PORTF, PIN0 activ pentru alarma
DDRG = 0b00000000;
DDRH = 0b00000000;
DDRJ = 0b00000000;
DDRK = 0b00000000;
DDRL = 0b00000000;

init_lcd(); //Initializare LCD

while(1)
{
lcd_set_cursor(1, 1); //Se afiseaza pe linia 1
lcd_afisare("STARE TREN:"); //mesajul

int vagon = 0; //Initializare vagon

init_adc();
adc = read_adc(1); //Citeste ADC pe intrarea 1
wait(); //Asteapta
if(adc >= 512) //Setez nivelul de tensiune
vagon = 1; //Primul vagon

_delay_ms(500);

init_adc();
adc = read_adc(6); //Citeste ADC pe intrarea 6
wait(); //Asteapta
if(adc >= 512) //Setez nivelul de tensiune
vagon = 6; //Al 6-lea vagon

_delay_ms(500);

init_adc();
adc = read_adc(7); //Citeste ADC pe intrarea 7
wait(); //Asteapta
if(adc >= 512) //Setez nivelul de tensiune
vagon = 7; //Al 7-lea vagon

_delay_ms(500);

if(vagon > 0)
{
PORTF = 0b00000001; //Se porneste alarma
PORTA = 0b00000001; //Se aprinde LED-ul de avertizare
lcd_set_cursor(2, 1); //Se afiseaza pe linia 2
if (vagon == 1)
lcd_afisare("VAG #1 DECUPLAT"); //mesajul
else
if (vagon == 6)
lcd_afisare("VAG #6 DECUPLAT"); //mesajul
else
if (vagon == 7)
lcd_afisare("VAG #7 DECUPLAT"); //mesajul

_delay_ms(500);
}
else
{
PORTF = 0b00000000; //Alarma oprita
PORTA = 0b00000000; //LED avertizare oprit
lcd_set_cursor(2, 1); //Se afiseaza pe linia 2
lcd_afisare("____COMPLET____"); //mesajul
_delay_ms(500);
}
}
}
Notă: Acest cod reprezintă o simplă testare a circuitului proiectat. El este conceput
pentru a vedea ce se petrece în urma oricărui eveniment (cuplat/decuplat). Nu este făcut
pentru a transmite date către dispecerat, funcționează doar local (pe tren).

3. Bibliografie

http://christianferoviarul.blogspot.com/2008/09/tablourile-de-bord-la-locomotivele-din.html

http://www.scritub.com/tehnica-mecanica/Manual-de-exploatare-tren2120612.php

https://www.miculelectrician.ro/calculator-de-cabluri.php

https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-
microcontroller-ATmega8_L_datasheet.pdf

http://ww1.microchip.com/downloads/en/devicedoc/atmel-2549-8-bit-avr-microcontroller-
atmega640-1280-1281-2560-2561_datasheet.pdf

https://www.engineersgarage.com/sites/default/files/LCD%2016x2.pdf

http://extremeelectronics.co.in/avr-tutorials/using-adc-of-avr-microcontroller/

https://datasheets.maximintegrated.com/en/ds/MAX5035.pdf

https://ro.mouser.com/ProductDetail/Maxim-
Integrated/MAX5035CUSA+?qs=1THa7WoU59HoB4FgiDJ0aA%3D%3D

https://www.farnell.com/datasheets/73758.pdf

https://www.sparkfun.com/datasheets/Components/LM7805.pdf

http://www.ablab.in/buzzer-interfacing-with-avr-atmega32-microcontroller/

http://www.ablab.in/sim808-gsm-gprs-gps-modem-interfacing-with-avr-atmega32-
microcontroller/

http://www.farnell.com/datasheets/2171929.pdf

https://www.google.ro/imghp