Sunteți pe pagina 1din 49

Codarea Manchester

Cuprins

I. Introducere
1. Prezentarea temei de proiectare
2. Oportunitatea soluţiei de implementare alese

II. Consideraţii teoretice


1. Principii generale de codare/decodare
2. Coduri de linii
3. Codarea Manchester

III. Realizarea proiectului


1. Proiectarea hardware
2. Proiectarea software
3. Rezultate experimentale
4. Concluzii

IV. Calcule economic

Anexe
Programele

Bibliografie

2
I. Introducere:

1. Prezentarea temei de proiectare

Se cere: Să se proiecteze un codor şi un decodor Manchester care comunică prin


unde radio iar datele să fie trimise de la calculator.

Prin comunicaţii de date se înţelege transferul de informaţie între o sursă şi un


destinatar printr-un canal de comunicatii. Sursa (emitatorul) este cea care transmite
informaţiile, iar destinatarul (receptorul) este cel care primeşte informaţia.
Datele sunt trasmise de catre un calculator emitatorului si implicit receptorului.
Pentru a trasminte datele este nevoie de implementarea unui mediu de transmitere a
datelor dintre calculator si codor/decoder.
Datele sunt memorate de un microprocesor care sunt condate in cod Manchester
pentru a ajuta dupa, la trasmitere. Noile date sunt trimise prin intermediul unui
transmitator prin antena catre antena receptorului. Datele codate sunt trimise mai departe
in microprocesorul de semnal pentru a fi prelucrat si transformat in date initiale, de
inaintea codarii.
Microprocesorul se ocupa cu codarea/ decodarea datelor dar si cu transmiterea lor
si receptionrea lor cat mai corecta.
Datele sunt trasmise de la calculator in semnal binar avand 2 nivele de “0” si de
”1” logic. Datorita celor 2 niveluri de frecventa pentru transmiterea datelor este nevoie de
un limbaj pentru ca emitator si receptorul sa lucreze in comutatie.
Datele primite de la calculator nu pot fi trasmise direct datorita existentei altor
unde electromagnetice in mediu care pot perturba comunicarea. O simpla perturabatie
poate face ca receptorul sa inteleaga ca emitatorul a transmis. De aceea este nevoie de un
marker care sa atentioneze receptorul de transmisiunea unei secvente de date.
Pentru a face transmisiunea este nevoie de un limbaj de transmitere codat.
Codarea Manchester este una din cele mai cunoscute medii de transmisiune a datelor prin
unde radio pentru ca ofera posibilitatea sa transmita un impuls atat la nivelui “0” cat si la
nivelui “1”. Astfel se incearca evitarea erorilor la receptia.
La emitator codarea Manchester este realizata de un microprocesor care
pregateste semnalui pentru transmitere. La receptie datele sunt memorate de catre
microprocesoru de semnal si transformat in codul initial si afisat pe o succesiune de
leduri.

3
Existenta perturbatiilor in canalui de transmisiune poate afecata drastic datele
transmise. Se doreste gasirea unei solutii de implementare pentru evitarea acestor
perturbatii. Una dintre aceste solutii reprezinta transmiterea unui cod initial pentru a face
“atent” receptorul urmat de datele care se doresc a fi transmise.

2. Oportunitatea soluţiei de implementare alese

Implementarea alesa este prezentata pe scurt in urmatoarea schema:

Microprocesorul ales este PIC16F877A. Acesta are rolul de a transforma datele


care trebuiesc trimise in cod Manchester
Suportul pentru transmiterea informaţiei, adica linia de transmisie este aerul.
Informatiile sunt transmise prin unde electromagnetice. Pentru a putea realiza controlul
liniei de transmisie trebuie conceput un sistem care să poată să facă distincţia dintre
controlul informaţiei şi mesajul informaţional, chiar şi atunci când ambele tipuri de date
sunt trimise simultan pe aceeaşi linie. Mai mult, trebuie implementate proceduri explicite
de control care să fie agreate atât de către emitator cât şi de receptor. Deaceea am ales
microcontrolerul PIC16F877A. Acesta are rolul de a transforma datele care trebuiesc
trimise in cod Manchester si nu doar atat. Microprocesorul este programat pentru a
transmite datele in aer si de ajunge la receptor. Am creat diferite proceduri prin
programarea microprocesorului pentru a mentine o transmisiune cat mai corecta a datelor.
Cu ajutorul unui programator Pic Start Plus am introdus un bootloader in
microprocesorul PIC16F877. Bootloader este un programator care ma ajuta sa programez
cu usurinta direct de la un pc microprocesorul. Legatura dintre calculator si PIC16F877
este facut printr-o interfata seriala RS232 a calculatorului. Insa pentru a face legatura este
nevoie de Max232 care face conversia de la RS232 la TTL, semnal apoi ultilizat de
microprocesor. Convertorul Max232 face legatura dintre nivelul de la portul serial,
CMOS de 0…12V la nivelul TTL de 0…5V. Dupa ce s-a stabili legatura intre interfata
seriala de la pc RS232 - Max232 – Pic16F877 se poate trimite direct de la calculator
programul care este implementat in memoria microprocesorului care contine rutinele de

4
codare a datelor si de transmisie. Pentru a introduce un program in microprocesor se
foloseste un program de la Microchip, firma producatoare, numit Bootloader, care trimite
in cateva milisecunde, zeci de comenzi cu o viteza de 19200 de baud.
Bitii sunt codati ca semnale electrice. Cel mai simplu mod de a coda bitii ar fi
utilizarea a 0V (volti) pentru a reprezenta un "zero" logic si +5V pentru a reprezenta un
"unu" logic. Cu toate acestea pentru a izola mai bine semnalul electric de zgomot este
utilizata o metoda mai complexa si anume codarea Manchester. In aceasta codare "1" este
codat ca o tranzitie a semnalului electric de-la-mic-la-mare, iar "0" ca o tranzitie de-la-
mare-la-mic. Zgomotul electric poate avea multe cauze ca de exemplu EMI (interferenta
electromagnetica) si RFI (interferenta cu undele radio), iar acestea sunt generate de
dispozitivele elecrice din apropiere ca aerul conditionat sau computerele.
Microprocesorul PIC16F877 transforma semnalui primit in semnal Manchester, acesta
fiind mai sigur de transmis prin unde radio. Folosirea dateleor de timp cod Manchester
ajuta la transmiterea cat mai ferita de mediul perturbator.
Datele cand sunt primite in microprocesor sunt trasmise intr-o interfata de afisare
prin leduri care arata atat mesajul intial cat si mesajul codat.
Succesiunea de biti este trimisa catre transmitator urmand o serie de rutine
programate in microprocesor. Implementarea programului din microprocesor prevede si
transmiterea succesiunii de biti cu un marker pentru a fi indentificat de receptor. Apoi
receptorul primeste informatia si o trimite la PIC16F877 care verifica de fiecare data daca
datele sunt corecte. Daca datele sunt corecte, le decodifica si transmite tot printr-o
succesiune de leduri mesajul initial trimis de codor.
Atat codorul cat si decodorul pot fi programate de la calculator prin interfata
seriala facand astfel o solutie ieftina de programare care nu necesita programator, acestea
avand preturi neaccesibile publicului larg.

II. Consideraţii teoretice

1. Principii generale de codare/decodare

5
Într-o transmisiune de date, informaţia transmisă poate fi de origine analogică sau
numerică. Un semnal este considerat numeric (digital) dacă el este discretizat în timp şi în
amplitudine, ceea ce înseamnă că amplitudinea sa poate lua doar anumite valori, care
rămân constante pe intervale bine precizate de timp (respectiv pe intervalul corespunzător
duratei unui simbol). Pentru semnalele analogice, amplitudinea acestora variază de o
manieră continuă în timp.
O informaţie analogică poate fi convertită în numeric, de exemplu semnalele
video sau audio. De asemenea şi procesul invers este posibil, respectiv conversia din
numeric în analogic.
Transmiterea datelor în retelele locale se face fie în banda de baza (transmisiune
digitala, prin impulsuri de curent constant), fie prin modularea unui purtator
(transmisiune analogica). În cazul în care pe acelasi suport fizic se creeaza mai multe
canale de transmisiune, folosind purtatori de frecvente diferite, transmisiunea se mai
numeste în banda larga (broadband), prin analogie cu canalele de banda larga obtinute în
sistemele de transmisiuni telefonice folosind multiplexarea cu diviziune în frecventa.
Transmisiunea în banda larga ofera posibilitatea transmiterii simultane, pe acelasi
support fizic, si a altor semnale, reprezentând voce sau imagini.
Pentru a asigura transmisia informatiei de la emitator la receptor, aceasta trebuie
codificata pe un semnal purtator, in asa fel incat sa se asigure compatibilitatea cu canalul
de comunicatie si o cat mai buna imunitate la perturbatii.

1.1. Controlul accesului la mediul de transmisiune

În retelele în care suportul de transmisiune este folosit în comun de catre


sistemele conectate în retea este necesar un mecanism care sa permita distribuirea
capacitatii de transmisiune a acestui suport între sistemele interconectate, astfel ca:
- fiecarui sistem sa-i revina o parte din aceasta capacitate de transmisiune;
- fiecare sistem sa aiba acces la suportul de transmisiune într-un interval de timp
rezonabil;
- pierderile din capacitatea de transmisiune datorita acestui mecanism sa fie
minime.
Tehnicile de acces, foarte diferite, pot fi clasificate astfel:
În tehnicile de acces cu alocare statica capacitatea de transmisiune a suportului
este repartizata sistemelor din retea fie prin diviziune în frecventa (FDM –Frequency
Division Multiplexing), fie prin diviziune în timp (TDM –Time Division Multiplexing).
Aceste tehnici prezinta dezavantajul unei eficiente scazute în utilizarea capacitatii
de transmisiune si, în plus, al unui cost ridicat (FDM) sau al unei întârzieri mari în
transmiterea mesajelor (TDM).
În tehnicile de acces prin alocare dinamica suportul de comunicatie este alocat
doar utilizatorilor care au nevoie. Apare deci o dificultate legata de posibilitatea de
cunoastere a necesitatilor utilizatorilor.
În tehnicile cu acces aleatoriu fiecare sistem poate încerca sa transmita, deci sa
ocupe suportul de transmisiune, în orice moment, însa va transmite numai dupa ce a
“ascultat “ suportul si a constatat ca acesta este liber.

6
1.2. Canale de comunicatie

Semnalul de la ieşirea unui codor sursă este cel mai adesea o tensiune electrică
u(t) care ia numai două valori, U0 pentru „0“ logic şi U1 pentru „1“ logic, fiind constantă
pe intervale elementare de timp de Tb secunde (durata unui bit de informaţie). Un şir de
biţi este arătat ilustrativ în figură 1.2.

Fig. 1.2. Sir de biti transmisi serial

Dacă vrem să transmitem la distanţă un asemenea semnal, trebuie să utilizăm un


canal de comunicaţie. Putem clasifica în mai multe moduri canalele de comunicaţie, dar
cel mai firesc este să facem o primă deosebire între canalele cu fir şi canalele fără fir.
Canalele cu fir sunt realizate cu cabluri metalice şi cu cabluri optice.
Canalele fără fir utilizează în general undele radio emise în spaţiul liber cu
ajutorul unei antene, dar submarinele pot transmite şi recepţiona acustic informaţie pe
distanţe relativ scurte utilizând unde generate în apa mărilor şi a oceanelor.
În teoria modernă a prelucrării semnalelor, drept canale de comunicaţie pot fi
caracterizate şi mediile de memorare a datelor ca banda magnetică, discurile (inclusiv
dischetele) magnetice şi discurile optice (discurile compacte denumite abreviat CD).

a). Canale metalice

Există două tipuri de canale realizate cu ajutorul unor cabluri de cupru: perechi
torsadate şi cabluri coaxiale.
O pereche de fire torsadate este constituită din două sârme subţiri de cupru,
îmbrăcate într-un material izolator (plastic) şi răsucite prin procesul de fabricaţie în

7
scopul de a elimina diafonia (transmiterea prin inducţie electromagnetică a semnalului de
pe o pereche pe alta din acelaşi cablu).
Banda de frecvenţe a unei perechi de fire torsadate este de doar câteva sute de
kilohertzi (kHz), mai mult decât suficient însă pentru necesităţile primei aplicaţii, aceea
de a realiza cu ea linia de abonat. Linia de abonat conectează un abonat cu centrala
telefonică de care aparţine, iar principala ei aplicaţie, şi multă vreme singura, este de a
transmite semnale vocale. Un semnal vocal are un spectru de frecvenţe ce se întinde de la
câteva zeci de Hz la circa 20 kHz. Prin filtrare, acest semnal este limitat la banda 300-
3400 Hz, fără ca urechea să perceapă această reducere. Recent, capacitatea de informaţie
a liniei de abonat a fost exploatată intensiv, prin aplicarea unor tehnici cunoscute sub
denumirea generală de linie digitală de abonat (în engleză, DSL: Digital Subscriber
Line). Aceasta permite includerea unui abonat telefonic într-o reţea digitală cu integrarea
serviciilor (în engleză, ISDN: Integrated Services Digital Network) sau cone tarea directă
la Internet. Cablul coaxial are o construcţie asimetrică, fiind compus dintr-un fir metalic
central şi o cămaşă metalică cilindrică izolate între ele printr-o masă plastică. Are o
lărgime de bandă de câţiva megahertzi (MHz) şi este utilizat pentru televiziunea prin
cablu şi pentru interconectarea calculatoarelor personale în reţele locale.

b). Canale cu fibră optică

Fibra optică are o lărgime de bandă considerabil mai mare (de ordinul
gigahertzilor), iar prin tehnica multiplexării în lungimea de undă, capacitatea de
informaţie a unui canal optic devine impresionantă, ajungând să se măsoare în terabiţi pe
secundă. Numeroşi operatori de telecomunicaţii din ţara noastră, în frunte cu
Romtelecom, şi-au construit partea interurbană a reţelelor cu cable optice. Este prevăzut
ca, prin extinderea fibrei optice până la abonat acasă, serviciile oferite să se diversifice
spectaculos. Într-un sistem de comunicaţie cu fibră optică, informaţia se transmite variind
intensitatea sursei de lumină, ce poate fi o diodă fotoemisivă (LED) sau un laser, cu
semnalul de mesaj. Lumina se propagă prin fibră ca o undă şi este amplificată de-a lungul
căii de transmisie în echipamente numite repetoare pentru a compensa atenuarea
semnalului. La recepţie, intensitatea luminii este detectată de o fotodiodă, a cărei ieşire
este un semnal electric ce variază direct proporţional cu puterea luminii incidente.

c). Canale electromagnetice fără fir

Undele electromagnetice au un spectru foarte larg, ce se întinde de la circa 10 kHz


până dincolo de 100 GHz. Proprietăţile de propagare variază însă considerabil cu
lungimea de undă, ceea ce face ca spectrul radio să fie împărţit în numeroase subbenzi, cu
utilizări specifice. O posibilă clasificare este următoarea:
• Frecvenţe foarte joase (10 km – 100 km)
• Frecvenţe joase (1 km – 10 km)
• Frecvenţe medii (100 m – 1 km)
• Frecvenţe înalte (10 m – 100 m)
• Frecvenţe foarte înalte (1 m – 10 m)
• Frecvenţe ultraînalte (10 cm – 1 m)
• Frecvenţe superînalte (1 cm – 10 cm)

8
• Unde milimetrice (sub 1 cm).
În continuare, găsim lumina propriu-zisă (infraroşu, spectru vizibil, ultraviolet). În
sistemele de comunicaţie radio, energia electromagnetică este cuplată la mediul de
propagare printr-o antenă ce serveşte drept radiator.

d). Canale acustice subacvatice

Undele electromagnetice nu se propagă pe distanţe lungi sub apă decât la


frecvenţe extrem de joase, frecvenţe la care transmisia semnalelor este costisitoare. De
aceea, în ultimele decenii, a fost intens studiat canalul acustic subacvatic, foarte util
pentru a asigura comunicaţia submersibilelor (submarine, batiscafe).
După cum se vede, sortimentul de medii de propagare putând servi drept canale
de transmisiune nu este foarte diversificat: cablurile metalice, fibra optică şi undele radio.
Apa mărilor şi a oceanelor permite doar o aplicaţie particulară destul de limitată. Mai
mult decât atât, aceste medii fizice, pe lângă caracteristicile utile scopului, au şi
imperfecţiuni ce se traduc în mod natural în erori de transmisie. Sarcina proiectantului
este de a concepe sisteme de comunicaţie incluzând, în afara canalului de propagare
propriu-zis, şi alte blocuri funcţionale, astfel încât ansamblul să satisfacă cerinţele
practice.

Codorul şi decodorul canal au două funcţii ce se separă în mod natural: cea de a


pregăti şirul simbolurilor de transmis astfel încât semnalul aplicat la intrarea canalului să
fie compatibil cu caracteristicile acestuia, şi cea de a realiza un control al erorilor,
combătând astfel efectele zgomotului şi ale altor perturbaţii şi imperfecţiuni. Adaptarea
semnalului de emisie la caracteristicile mediului de propagare se reflectă în două metode:
prima, mai simplă şi mai puţin costisitoare, se numeşte translaţie de date sau codare de
linie şi nu este universal aplicabilă; cea de a doua se bazează pe teoria modulaţiei.

2. Coduri de linie

În interiorul unui echipament, pe distanţe în general mai mici de un metru,


semnalele digitale se transmit între diversele subansamble în formatul impus de circuitele
integrate utilizate. De exemplu, în cazul circuitelor integrate CMOS, tensiunea U0 este
practic 0 V, iar tensiunea U1 este practic egală cu tensiunea pozitivă de alimentare.
Presupunând că simbolurile 0 şi 1 sunt emise cu egală probabilitate, un astfel de semnal
are o tensiune medie de proximativ U1 / 2 ce fluctuează însă în funcţie de structura
datelor: pentru un lung şir de acelaşi simbol, fie el 0 sau 1, semnalul are aparenţa unei
tensiuni continue de 0 V, respectiv U1 V.

9
Echipamentele se conectează la canalele de transmisiune prin interfeţe cu separare
galvanică. Aceasta se poate realiza şi cu un condensator, dar de regulă se utilizează un
transformator zis separator, având raportul de transformare 1:1. Drept urmare,
componenta de current continuu (cc) şi chiar cea de joasă frecvenţă a semnalului de
emisie nu trec în canal, rezultând o distorsiune inacceptabilă. Iată de ce codurile de linie
trebuie să aibă o componentă de cc egală cu zero. Intervalele elementare de timp de
durată Tb , unde indicele b este
iniţiala de la bit, sunt date de un ceas electronic, numit generator de tact. Un generator de
tact este un circuit electronic ce include un cristal de cuarţ; pe baza efectului
piezoelectric, acesta oscilează pe o anumită frecvenţă mai mare de câteva zeci de kHz,
perioada de oscilaţie fiind foarte stabilă în timp.
Semnalul de tact, obţinut din semnalul generat de oscilatorul cu cuarţ prin
divizare de frecvenţă cu ajutorul unui numărător electronic, este periodic, cu o perioadă
egală cu Tb . Tranziţiile din semnalul de date – trecerea din 0 în 1 şi cea din 1 în 0 –
coincid cu unul din fronturile pulsurilor de tact, celălalt front marcând mijlocul bitului.
Dacă semnalul de date este realizat cu ajutorul unui semnal de tact, transmisiunea se
numeşte sincronă.
Transmisiunile digitale moderne sunt de regulă sincrone, făcându-se la viteze
ridicate. Unele transmisiuni digitale de joasă viteză, de exemplu cele telegrafice, sunt
asincrone, căci nu se bazează pe un semnal de tact, intervalele elementare de timp fiind
obţinute prin alte mijloace. Un prim exemplu de codare ce permite semnalului x(t) să
treacă prin transformatorul separator este codul bipolar, definit astfel:

Datele se pot codifica prin mai multe metode. Acestea se pot imparti in:
Pentru reprezentare internă avem: codul binar care contine numere naturale in
baza 2 si codul Gray numere tot in baza 2 dar numerele sunt in acea ordine care elimina
comutarea mai multor cifre odata. Un cod Gray de ordin n este un sir care contine toate
numerele de la 0 la 2n-1, astfel incat orice doua numere consecutive din sir sa difere in
reprezentarea lor binara prin exact un bit. Fiecare numar nou este format din cel anterior
prin modificarea celui mai putin semnificativ bit, astfel incat numarul sa nu mai fi fost
adaugat inainte la sir
Pentru transmisiune se pot intalni: codul morse care numai este utilzat in zilele
noastre, codurile CCITT nr2, nr3 ,BCD , BCD extins(EBCDIC) si Ascii.Codul CCITT

10
mai este numti si codul baudat si este utilizat pentru transmisiile telegrafice cu viteze mici
pe reţelele telegrafice comutate având 5 biţi/caracter (32-combinaţii). Codul BCD
permite obţinerea a 64 combinaţii de cod distincte pentru reprezentarea informaţiei
vehiculate pe canal şi a fost utilizat în sistemele de calcul de generaţia a 2-a. Codul
EBCDIC constituie o extindre a codului BCR neavând control al parităţii, oferind 256 de
combinaţii. Codul ASCII numit şi codul CCITT NR.5, ofera 128 combinatii prin
reprezentarea cu 7 biţi/caracter.
Pentru afişare avem codul binar, octal, hexazecimal si BCD (Binary Coded Decimal
= Zecimal Codat Binar)

2.1. Transmisia datelor in banda de bază

2.1.1. Transmisia asincronă si sincronă.

Transmisia unui semnal se poate realiza direct în banda sa de bază, dacă se


introduce pe canal semnalul nemodificat, cu spectrul său original, asa cum este obsinut de
la traductorul care preia informatia din mediul real si o transformă în semnal (senzori
pentru diferite mărimi fizice, microfoane pentru semnal audio, camere de luat vederi
pentru semnale video). Transmisia în banda de bază nu utilizează modularea pe
purtătoare a semnalului util, care ar rezulta în
modificarea spectrului de frecvente initial, prin translare.
Acest mod de transimisie a informatiei are avantajul simplitătii, deoarece
semnalele nu sunt prelucrate suplimentar, dar are si o serie de dezavantaje. Banda relativă
de frecventă este largă (banda relativă = banda semnalului raportată la frecventa medie) si
poate fi usor influentată de perturbatii cu diverse frecvente. Semnalele nu pot fi transmise
în banda de bază la distante
mari datorită imunitătii scăzute la perturbatii ce apar cu precădere în zona inferioară a
spectrului.
Sistemele de transmisie a datelor care nu folosesc procedee de
modulare/demodulare, utilizând direct forma de undă numerică (semnalul dreptunghiular)
asociat secventei de date, se numesc sisteme de transmisie a datelor în banda de bază,
deoarece banda de frecvente a semnalului nu este translată în jurul unei frecvente
superioare si conrine inclusiv componenta
continuă (frecventa zero).
Transmisia digitală în banda de bază înseamnă, în general, transmiterea directă pe
canal a semnalului dreptunghiular cu două nivele de tensiune sau curent corespunzătoare
valorilor logice de “0” si “1”. Deoarece transmisia datelor are loc în mod serial,
echipamentul receptor va primi doar două nivele de tensiune care se succed în timp, din
care acesta trebuie să discrimineze începutul si sfârsitul fiecărei celule de bit
(sincronizarea pe bit), dar si împachetarea globală a sirului de date în caractere si blocuri
de date (sincronizarea pe caracter si pe cadru).
Sincronizarea receptorului cu emitătorul poate fi realizată în două moduri, în
functie de relatia dintre ceasul transmitătorului si cel al receptorului.

11
În cazul transmisiei asincrone, cele două ceasuri sunt semnale independente.
Fiecare caracter este tratat independent si receptorul va trebui resincronizat la începutul
acestuia.
Receptorul reporneste practic ceasul de sondare a bitilor la începutul fiecărui
caracter, odată cu detectia unui front negativ de “START” pe linia de comunicaŃie, ca în
figura 2.1. Acest mod de transmisie se utilizează mai mult în situaŃiile când datele
transferate sunt generate la intervale
aleatoare de timp.

Fig. 2.1. Formatul caracterelor în cazul transmisiei asincrone.

În cazul transmisiei sincrone, ceasul receptorului este în strânsă relatie de fază cu


cel al transmitătorului. Pe linie se transmite un cadru în mod continuu, fără pauze între
caractere, fiind necesară doar păstrarea dependentei ceasurilor la începutul fecărui
caracter (fig. 2.2.). Practic se transmite efectiv ceasul pe altă linie distinctă de linia
datelor sau se utilizează un procedeu de înglobare a informatiei de ceas în semnalul de
date (folosind un anumit cod de linie) si
extragerea acesteia la receptor. Modul de transmisie sincronă se utilizează pentru blocuri
mari de date care sunt disponibile într-un flux sustinut continuu.

Fig. 2.2. Succesiunea caracterelor în cazul transmisiei sincrone.

2.1.2. Sincronizarea la transmisia asincronă.

Transmisia asincronă se foloseste în general în situatiile când data transferată este


generată la intervale aleatoare, linia fiind inactivă perioade lungi si nedeterminate de
timp.

12
Fiecare caracter este încadrat între un bit de ”START” si 1, ½ , sau 2 biti de
“STOP”. Bitii de “START” si cei de “STOP” au polaritate diferită, pentru asigurarea a
cel putin unei tranzitii 0→1→0 între două caractere succesive care sosesc fără întârziere
între ele. Prima tranzitie 1→0 după perioada de inactivitate a liniei este utilizată de
receptor pentru a determina momentele de timp în care se preiau esantioanele de bit.
Practic, se porneste receptia unui caracter pe frontal negativ al bitului de “START”.
Sincronizarea pe bit se realizează prin determinarea cât mai precisă a tranzitiei de
“START”. Ceasul receptorului trebuie să aibă perioada de cel putin 16 ori mai mică decât
durata de transmisie a unui bit, pentru a minimiza eroarea de detectie a începutului de
caracter, eroare ce apare datorită asincronismului între tranzitiile de pe linia de recepŃie
si tranzitiile tactului receptorului. Pentru exemplificarea acestei erori, în figura 2.3. s-a
considerat o perioadă a ceasului de numai 4 ori mai mică decât durata de transmisie a
unui bit.
Sincronizarea pe caracter, adică determinarea începutului si sfârsitului
caracterului, se realizează prin simpla numărare a bitilor veniti pe linie, cu verificarea
corectitudinii bitilor finali de “STOP” care trebuie sa aibă valoarea logică “1”. Acest
lucru este posibil deoarece numărul de biti pe caracter este stabilit la configurarea
transmitătorului si receptorului, reprezentând o
caracteristică a transmisiei.
Sincronizarea pe cadru (bloc de caractere) se realizează în mod distinct, în functie
de informatia transmisă, adică sir de coduri ASCII (text) sau date binare. Dacă mesajul
transmis este format din caractere ASCII, pentru delimitarea începutului si sfârsitului
fiecărui cadru se folosesc 2 caractere speciale, cu codurile aflate în afara setului tipăribil
de caractere ASCII:
o STX = 02H = ”Start of TeXt”;
o ETX = 03H = ”End of TeXt”.
Dacă informatia transmisă este binară pură, se mai defineste încă un caracter
special ASCII de control (DLE), cadrul fiind delimitat de secventa DLE, STX→DLE,
ETX:
o DLE = 10H = ”Data Link Escape”.
În situatia când un octet de date din cadrul binar transmis are chiar valoarea
numerică a codului DLE, acesta va fi dublat la emitător, urmând ca la receptie să se
elimine câte unul din doi octeti consecutivi cu valoarea DLE.

13
Fig. 2.3. Apariţia şi propagarea erorii de detecţie a începutului de caracter.

2.1.3. Coduri de linie la transmisia sincronă.

La transmisia în banda de bază, modul de asociere dintre semnalul dreptunghiular


digital transmis pe linie si fluxul binar de date conduce la diverse metode de codificare în
tensiune saucurent, numite coduri de linie sau coduri de transmisie:
a) Coduri de linie fără întoarcere la zero (NRZ).

Fig. 2.4. Semnalele codurilor de linie NRZ.

Se asociază valorilor logice “0” si “1” două niveluri distincte de tensiune sau de
current care vor fi transmise efectiv pe linie. Dacă unul din niveluri este zero, atunci
semnalul se numeste unipolar sau simplu curent. Dacă cele două niveluri asociate

14
valorilor logice sunt simetrice faŃă de zero (unul pozitiv, iar celălalt negativ), semnalul
se numeste bipolar sau dublu curent. Prin astfel de asocieri directe se obtin coduri de linie
fără întoarcere la zero (NRZ = “Non
Return to Zero”), care nu sunt altceva decât semnale obisnuite din circuitele electronice
digitale.
Denumirea rezidă în faptul că un astfel de semnal nu revine singur la nivelul zero
după sfârsitul fiecărei durate de bit. Bitii consecutivi care au aceeasi valoare logică vor
mentine constant nivelul de tensiune sau curent pe linia de transmisie (fig. 2.4.). Din acest
motiv, semnalul obtinut prin codificarea NRZ va prezenta întotdeauna o componentă
continuă dependentă de secventa datelor binare, care trebuie reconstituită la receptie
(dezavantaj).
Semnalul fără întoarcere la zero este cel mai simplu cod de linie si nu include nici
un fel de informatie suplimentară cu privire la momentele de sondare a bitilor (ceasul
transmisiei seriale). Este important de retinut că semnalul NRZ-bipolar poate fi obtinut
din cel NRZ-unipolar si invers, prin adăugarea unei valori continue de tensiune sau de
curent care deplasează forma de undă în sus sau în jos pe axa verticală.
b) Coduri de linie cu întoarcere la zero (RZ).
În acest caz se include o informatie suplimentară despre ceasul transmisiei, prin
întoarcerea la zero a tensiunii după o semiperioadă de ceas (la jumătatea duratei unui bit).
Codul de linie RZ-unipolar include pulsuri pozitive de ceas pentru biti de “1”, iar în cazul
bitilor de “0” aceste pulsuri lipsesc complet. La codul de linie RZ-bipolar, pentru
codificarea bitilor de “0” se inlclud în semnal pulsuri negative de ceas (fig. 2.5.).

Fig. 2.5. Înglobarea ceasului în semnalul de date la codurile de linie RZ.

Se poate observa că formele unipolară si bipolară ale codului cu întoarcere la zero


sunt complet distincte si nu diferă între ele doar printr-un decalaj pe axa verticală, ca la
codul NRZ. Deoarece sirurile lungi de biŃi similari sunt codificate prin pulsuri de ceas
cu aceeasi polaritate, si acest semnal va conŃine o componentă continuă dependentă de
secvenŃa datelor.
Semnalul RZ-bipolar are dezavantajul că necesită 2 praguri de decizie pentru
discriminarea a 3 nivele distincte de tensiune, dar recuperarea ceasului de bit la receptie

15
este aproape directă, deoarece atât sirurile lungi de “0” cât si cele de biti “1” au pulsuri de
ceas înglobate.

c) Codul de linie AMI (Alternate Mark Inversion).


Codul de linie AMI este oarecum similar codului RZ-unipolar, cu deosebirea că
pentru reprezentarea bitilor de “1” se utilizează acum pulsuri de ceas alternante, atât
pozitive cât si negative, eliminându-se astfel componenta continuă dependentă de
secventa datelor. Dacă pentru ultimul bit de “1” s-a folosit un puls de o anumită
polaritate, pentru următorul se va folosi un puls de ceas cu polaritate opusă. Pentru bitii
de “0” nu se includ pulsuri de ceas, semnalul rămânând la nivelul zero, ca si la codul RZ-
unipolar (figura 2.6.).
Deoarece sirurile lungi de “0” nu contin pulsuri de ceas înglobate, circuitele de
extragerea ceasului la recepŃie nu se pot sincroniza în cazul unor siruri lungi de biti zero.
Pentru eliminarea acestui neajuns, se utilizează frecvent în practică o serie de variante
AMI modificate prin adăugarea unor pulsuri alternante suplimentare care nu respectă
regula de codificare, în cazul sirurilor lungi de biti zero.

Fig. 2.6. Pulsurile alternante de ceas pe biti “1” logic la semnalul AMI.

d) Codul de linie bifazic standard (Manchester).


Pentru eliminarea componentei continue dependente de secventa datelor simultan
cu înglobarea tranzitiilor de ceas la toate valorile logice ale semnalului de date, s-au
conceput coduri de linie bifazice, adică cu codificarea bitilor prin tranzitii (alternarea
fazei), în loc de pulsuri. Codurile bifazice pot fi atât bipolare cât si unipolare, diferenta
dintre ele fiind decalajul fată de zero cu o valoare constantă.
În cazul codului de linie bifazic standard, numit si Manchester, la mijlocul duratei
de bit se transmite câte o tranzitie în semnalul de linie:
- pentru bit “1” de date tranzitie pozitivă (0 ↑1);
- pentru bit “0” de date tranzitie negativă (1 ↓0).
În cazul sirurilor de biti identici, este necesară o tranzitie suplimentară, care
asigură revenirea semnalului la nivelul corespunzător si posibilitatea unei noi tranzitii de
acelasi tip (fig. 2.7.). Se observă astfel că semnalul include o informatie suplimentară
despre tactul de sondare al bitilor de date, adică o tranzitie la mijlocul fiecărui bit
transmis, care poate fi utilizată pentru refacerea ceasului la receptie.

16
Fig. 2.7. Codificarea bitilor de date prin tranzitii de ceas la semnalul
Manchester.
Semnalul Manchester poate fi considerat modulatie digitală de fază a semnalului
de ceas (purtătoare rectangulară) cu semnalul de date, deoarece fiecare bit “1” schimbă
faza semnalului de ceas, pe când un bit “0” o lasă nemodificată.
e) Codurile bifazice Mark si Space.
Aceste coduri de linie se obtin tot prin codificarea bitilor de date cu tranzitii de
ceas, dar păstrând întotdeauna o tranzitie la începutul fiecărei perioade de bit. În cazul
codului bifazic Mark, are loc o tranzitie suplimentară numai la mijlocul bitului de “1”, iar
în cazul codului bifazic Space numai la mijlocul bitului de “0”.

Fig. 2.8. Includerea ceasului la codurile de linie bifazice Mark si Space.

Semnalul bifazic Mark sau Space poate fi considerat modulatie digitală de


frecventă a semnalului de ceas (purtătoare rectangulară) cu semnalul de date, deoarece
pentru o valoare logică se transmite pe linie o frecventă egală cu frecventa ceasului, iar
pentru cealaltă se transmite o frecventă de 2 ori mai mică.

2.2 Codarea informatiei

Codarea informaţiei cuprinde un grup de tehnici legate de modul de transmitere


fizică a biţilor informaţionali.

17
În tehnologia informaţiei trebuie să existe o corespondenţă între nivelele logice şi
caracteristicile fizice ale mediului de transmisie. Pe măsură ce cantitatea de informaţie
creşte şi rata de transfer, iar la nivelului receptorului pot să apară noi probleme în ceea ce
priveşte integritatea datelor. De-a lungl timpului s-au dezvoltat mai multe metode care să
rezolve
acestă problemă, unele mai adecvate decât altele.
Codarea liniară reprezintă metoda uzuală pe care o vom folosi şi noi pentru a
reprezenta informaţia digitală. Aceasta foloseşte un şablon format din biţi informaţionali
„0” şi „1” pentru a codifica diferite nivele de tensiune sau curent.
Soluţiile practice ce au fost analizate pentru a stabili alegerea modulelor
decomunicaţii pentru robotul mobil sunt următoarele:

• Codare unipolară
• Codare polară
• Codare bipolară

2.2.1 Codarea unipolară

Este caracterizată de prezenţa a două nivele de tensiune, dintre care una este 0V.
Datorită prezenţei unei stări logice caracterizate de nivelul de tendiune 0V, acest tip de
codare se mai numeşte şi întoarcere la zero sau în engleză return to zero (RTZ). Un
exemplu comun de codare unipolară este reprezentat de nivelele de tensiune care se
găsesc în cadrul calculatoarelor şi a circuitelor logice digitale. Dacă folosim componente
fabricate în tehnologie TTL, atunci aceste nivele de tensiune vor fi 0V pentru 0 logic şi
5V pentru 1 logic (fig 2.2.1.1)

Fig 2.2.1.1
Acest tip de codare funcţioneză foarte bine acolo unde datele sunt transmise la
distanţe mici şi nu este indicat pentru distanţe lungi. Pentru medii de transport ghidate
prezenţa capacităţilor parazite este critică.
Codarea unipolară mai are un neajuns, şi anume cel legat de sincronizarea dintre
transmiţător şi receptor. Ceasul receptorului urmăreşte permanent transmisia şi se
sincronizează în funcţie de schimbările de nivel de tensine care apar. Din acest motiv,
dacă pentru un interval de timp mai lung sau transmis numai biţi 1 sau numai biţi 0,
ceasul nu mai are cum să realizeze sincronizarea, putând astfel pot să apară defazaje.

18
Fig 2.2.1.2

2.2.2 Codarea polară

Este o codificare a datelor în jurul tensiunii de 0V. Un exemplu de codare este


reprezentat de interfaţa serială standard RS-232D. În acest caz semnalul nu se întoarce
niciodată la zero. El este fie o tensiune negativă fie o tensiune pozitivă. Acest 13 tip de
codificare este numită şi „non return to zero” şi este cea mai simplă modalitate de a
elimina influenţele zgomotelor magnetice.

Fig 2.2.2.1
Şi în cazul de faţă pericolul perturbator al zgomotului magnetic există, dar se
observă o îmbunătăţire substanţială faţă de cazul codării unipolare. Acest tip de
transmisie are şi avantajul că reduce la jumătate cantitatea de energie folosită pentru
transmiterea informaţiei în comparaţie cu codarea unipolară. Şi în cazul de faţă rămân
valabile problemele legate de sincronizarea transmisiei.

2.2.3 Codarea bipolară

Această codare prezintă trei nivele de tensiune. Zero logic este reprezentat de un
nivel de tensiune de 0V, iar 1 logic este reprezentat de nivele alternante de polaritate ale
tensiunii. Prin această alternare a polarităţii tensiunii se obţine şi o reducere mai bună a
zgomotului magnetic. Sincronizarea dintre ceasurile emiţătorului şi receptorului este şi ea
îmbunătăţită substanţial, cu excepţia cazului în care există un şir lung de biţi 0.

19
Fig 2.2.31. Secvenţă de biţi

3. Codarea Manchester

3.1 Codarea Manchester

Un alt cod de linie foarte cunoscut este codul Manchester. În această metodă de
semnalizare, ilustrată în figura 3.1, simbolul 1 este reprezentat printr-un puls pozitiv de
amplitudine A urmat de un puls negativ de amplitudine –A, ambele pulsuri având o lăţime
de o jumătate de bit. Pentru simbolul 0, polarităţile acestor două pulsuri sunt inversate.
Codul Manchester suprimă componenta de cc şi are componente de joasă frecvenţă
relative nesemnificative, indiferent de proprietăţile statistice ale semnalului. Această
proprietate deosebit de utilă în anumite aplicaţii este obţinută însă cu preţul dublării
benzii de frecvenţe necesare pentru transmisie, ca o consecinţă directă a înjumătăţirii
intervalului de timp elementar de la Tb la Tb / 2 dupa cum arata in figura 3.1.
In schema de codare Manchester, un bit unu este codificat printr-o tranzitie de la
nivel high la nivel low, iar un bit cu valoarea zero logic este codat ca o tranzitie de la low
la high. Tranzitiile semnificative au loc la mijlocul timpului de bit. Asta inseamna ca
pentru a transmite doi biti consecutivi cu aceeasi valoare, e nevoie ca semnalul sa aiba o
tranzitie suplimentara la inceputul timpului de bit.

Fig.3.1. Exemplu de codare Manchester.

Ideea care stă la baza codării Manchester este aceea de a determina o tranziţie
pentru semnalul emis, tranziţie care să apară la mijlocul perioadei de bit. Astfel, un „1”

20
este reprezentat printr-o tranziţe de la nivelul +V la nivelul –V, în timp ce unei tranziţii
de la nivelul –V la nivelul +V îi corespunde un „0”. Este evident că în acest fel se asigură
sincronizarea între emiţător şi receptor, chiar şi în cazul transmisiei unor secvenţe lungi
de „0” sau „1”. Mai mult decât atât, întrucât simbolurile binare sunt reprezentate prin
tranziţii şi nu prin nivele constante (stări) ca la codajul de tip NRZ, scade drastic
probabilitatea apariţiei unor erori cauzate de mediul de transmisie. Un zgomot care
afectează semnalul poate modifica nivelele transmise, dar este puţin probabil că el va
duce la inversarea tranziţiei sau la lipsa ei, conducând astfel la erori la recepţie.
Dezavantajul codării Manchester constă în faptul că, pentru a transmite cu un
anumit debit binar, este nevoie de o bandă de frecvenţe disponibilă dublă faţă de cea pe
care am utiliza-o în cazul altor tipuri de codare (de exemplu pentru a transmite cu un
debit de 10Mbps avem nevoie de o lăţime de bandă de 10MHz). Acest inconvenient face
codarea Manchester dificil de utilizat pentru debite ridicate.
La o privire mai atenta se observa ca semnalul codat Manchester este de fapt un
SAU EXCLUSIV intre negatul unui clock care defineste timpul de bit si o secventa de
date NRZ.(vezi figura 3.2)

Fig. 3.2. Logica de generare a unei secvenţe codate Manchester

Definim rata de codare drept raportul dintre lungimea mesajului şi lungimea


cuvântului de cod. Codul Manchester are rata 1:2. Definim disparitatea d(Ci) a unui
cuvânt de cod Ci drept diferenţa dintre numărul de 1 şi numărul de 0 din Ci . Codul
Manchester este un exemplu de cod de linie cu disparitate zero, căci cele două cuvinte de
cod sunt 01 şi 10. Un asemenea cod este echilibrat din punctul de vedere al curentului
continuu. În general, pentru a avea disparitate zero, trebuie ca lungimea cuvintelor de cod
să fie un număr par 2n, astfel încât un cuvânt de cod să aibă n de 1 şi n de 0. În acest caz,
 2n 
avem 
 
 vectori binari de disparitate zero din care să selectăm un număr de cuvinte de
n 
cod exprimabil ca o putere a lui 2, fie 2k , astfel încât cuvinte binare de k biţi să fie codate
în cuvinte de cod de 2n biţi. Pentru n = 2, din totalul de 22n = 24 = 16 cuvinte binare de 4
4
biţi, numai   = 6 dintre ele au disparitate 0 şi anume:
2
 
0011
0101
0110
1001
1010
1100.

21
Selectând patru dintre acestea, obţinem un cod de rată 2:4, echivalent ca rată de
codare cu codul Manchester. Într-adevăr, dacă selectăm cele patru cuvinte de cod
0101
0110
1001
1010,
obţinem perfectul echivalent al codului Manchester. Pentru a realiza o rată de codare mai
mare, putem adăuga la cele şase cuvinte de cod de disparitate zero încă două cuvinte de
disparitate +1 şi –1, pentru a ajunge la un set de 8, care este o putere de 2. În felul acesta,
presupunând că cele opt cuvinte binare de intrare au aceeaşi probabilitate, cuvintele de
cod de disparitate +1 şi –1 vor apărea la fel de frecvent, păstrându-se echilibrul de cc.
Se cunosc şi alte coduri de linie mai elaborate, dar studiul lor depăşeşte cadrul
acestui curs introductiv.
Codul Manchester presupune existenţa unei transmisii la mijlocul fiecărui bit.
Transmisia la mijlocul bitului serveşte atât pentru realizarea sincronizării între emiţător şi
receptor, cât şi ca mecanism informaţional: o tranziţie de la low la high reprezintă un 1
logic, iar o tranziţie de la high la low reprezintă un 0(fig 3.3)

Fig 3.3. Reprezentarea codului Manchester

Folosind acest tip de codare se elimină componentele perturbatoare şi există


mereu o tranziţie care să realizeze sincronizarea între ceasurile emiţătorului şi
receptorului. Mai are avantajul că nu necesită o bandă de transmisie mare în comparaţie
cu celelalte tipuri de codificări. Codificarea Manchester solicită două tipuri de frecvenţe:
o frecvenţă de bază şi două frecvenţe purtătoare de acelaşi tip. Celelalte tipuri de
codificări au nevoie de o bandă cupinsă între 0 Hz şi frecvenţa maximă de transfer.
Codul Manchester posedă şi posibilitatea de detecţie a erorilor în timpul
transmisie. Astfel, pentru fiecare periodă de timp alocată unui bit se aşteaptă sosirea unui
bit. Absenţa transmisiei va indica prezenţa unei erori.
Acest cod este cunosctu datorita gamei largi de utilizare. Codarea Manchester
prezinta un interes deosebit pentru ca este folosita de retelele Ethernet (IEEE 802.3) dar
si diferitelor tipuri de cabluri ca 10Base5, 10Base2, 10BaseT, 10 BaseFL.

• Codarea Manchester diferenţială


Acest tip de codare defineste bitul de zero ca o tranzitie low-high sau high- low la
inceputul timpului de bit (in functie de starea anterioara a liniei) iar bitul unu logic ca

22
absenta a unei tranzitii la inceputul timpului de bit. In cazul unor secvente de biti
succesivi cu valoarea unu logic, se adauga o tranzitie la mijlocul timpului de bit, in asa fel
incat sa existe cel putin o tranzitie pe fiecare timp de bit.
(fig 3.4)

Fig. 3.4 Exemplu de codare Manchester diferential


La baza codării Manchester diferenţiale stă prezenţa sau absenţa unei tranziţii la
începutul intervalului de tact. Astfel, un bit de „1” este reprezentat prin lipsa unei
tranziţii, în timp ce fiecare bit de „0” este semnificat prin prezenţa unei tranziţii.
Codarea Manchester diferential e folosita in retelele IEEE 802.5 (token ring), dar
este putin raspandita in prezent.

III. Realizarea proiectului

1. Proiectarea hardware

Microprocesorul PIC16F877A a fost ales din mai multe considerente:


- numarul iesirilor digitale sa fie mare; am folost 10 leduri si 2 butoane
- usurinta cu care se poate programa acest microprocesor direct de la calculator prin
interfata seriala in cazul meu
- este uzual pentru diferite aplicatii
- datorita existentei mai multor semnale de ceas
Existenta mai multor semnale de ceas ofera posibilitatea codarii
Manchester pentru acest tip de codare are nevoie de 2 clock-uri.
Calculul rezistetei R se tine seama in primul rand de curentul pe care il da
microprocesorul pe pinii de iesire. Pe fiecare pin de iesire al microprocesorul exista un
curent de 10mA si o tensiune de 2V. Astfel putem calcula valoare rezistei pentru un led.

23
Fig. 3.1.1.

In figura 3.1.1. avem un led si o rezistenta legate la microprocesor. R se


calculeaza asttfel:
Vcc −Uled
R=
If
5V − 2V
R=
10 mA
R = 300 Ohm , se alege R=330Ohm

Comunicarea Rs232 - microprocesor se face prin integratul MAX232.


Conexiunea dintre cele 2 circuite codor/decodor se face prin unde
electromagnetice la o frecventa de 433,9 Mhz.
Trasmitatorul ales este AM-RT5-433. Datele de intrare pot fi trimise intre 50Hz si
4kHz. Microprocesorul trimite date la o frecventa de 500Hz care pinul de intrare al
transmitatorului.
Receptorul se numeste AM-HRR6-433.

2. Proiectarea software

Pentru a programa microprocesorul PIC16F877A am ales sa utilizez programul


Bootloader de la Microchip. Acesta ma ajuta sa programez prin interfata seriala direct
fara sa folosesc un programator. Costul un programator este destul de ridicat de aceea am
evitat cumpararea lui folosind ca programator calculatorul.
Programatorul PicStartPlus este legat la calculator prin seriala RS232. Cu ajutoru
programului Mplab 6.4 am trimis in microprocesor fisierul HEX, bootloader special
pentru PIC16F877A.
Viteza utilizate pentru trasmiterii datelor a fost de 9600kbps. Am facut diferite
modificari al timpului de scriere dupa cum umeaza: Oscil=HS , Watchdog=OFF,
PowerUp=OFF, Brown OUT=OFF, LVP=ON. Bootloaderul asociat microprocesorului
este un fisier denumit astfel 61619 - bootldr-v26-16F876-77-16Mhz-19200bps.hex care
imi ofera posibilitate ca programul introdus de mine prin seriala sa fie transmis la o viteza
de 19200bps si merge foarte bine si la o frecventa de 8Mhz.
Cu COMTESTER am trimis prin Interfata seriala RS232 un caracter. Caracterul
este scris in memoria microprocesorului si dupa este codat in cod Manchester. Programul

24
prezinta diferite optiuni care faciliteaza utilizarea lui cat mai corecta. Viteza de
transmitere poate fi selectata din interiorul programului si tot odata poate realiza
transforamarea unui caracter din cod ascii in cod hexazecimal. Astfel este introdus in
program un carcater si programul trimite pe seriala mesajul codat binar.

Bootloaderul instalat in microprocesor cu ajutoru PicStartPlus ofera posibilitatea


transmiterii direct prin interfata seriala a linilor de comanda.
MikroPascal are posibilitatea creerii mai multor tipuri de fisiere prin butonul
BUILD aceasta putand fi folosite de diferite dispozitive. Unul din fisiere create este
fisierul HEX care reprezinta pasii pe care trebuie sa-i urmeze microprocesorul. Fisierul
HEX este transmis in microprocesor de la calculator prin RS232 cu ajutorul unui program
care scrie direct in memoria microprocesorului programul.

25
In Bootloaderul de la Microchip intalnim un program cu interfata grafica care
ajuta la scrierea in memoria microprocesorului ai linilor de comanda.
Programul prezinta o interfata usoare prin care se poate selecta programul care
trebuie introdus si alege viteza de scriere in memoria RAM al microprocesorului. La
apasarea butonului WRITE se doreste scrierea programului in memoria picului. Insa
programul anterior scris in memorie ruleaza continuu neavand posibilitatea introducerea
unui nou program. Astfel am implementat un buton care ajuta la resetarea
microprocesorului. Resetul dureaza 2 secunde, timp suficient ca PIC16F877A sa poate
rescrie noul program.
Dupa apasarea butonul Write, pentru a scrie programul respectiv este nevoie de
apasarea butonului de reset pentru a avea loc scria acestuia.
Limbajul de programare utilizat a fost MikroPascal care ma ajutat sa programez
mult mai usor microprocesorul. MikroPascal poate salva programul compilat in diferite
formate. Formatul cel care ma intereseaza este cel HEX, pentru ca este singurul care
poate fi scris in PIC16F877A
S-a pornit softul PICbootPLUS.exe in care s-a incarcat si sa trimis
manchester_tx.hex si manchester_rx.hex.

26
Am facut doua programe unul pentru transmitator si unul pentru receptor care
ulterior au fost introduse in memoria microprocesorului. Programele sunt atasate in anexa
proiectului.

Program Transmitere (TX)

27
Start

Iniţializare

Afişare iniţial

Codare:
Daca k=0 atunci
Codat.l=10
Daca k=1 atunci
Codat.l=01
PortB=Codat

Procedura transmitere
octeţi:
- 3 octeţi de 1
- octet început de mesaj
- octet de adresa
- octet cu valoarea care este
codata
- octet sfarşit de mesaj

Iniţializare USART

Repetă:
Dacă PORTD=0 atunci citeşte ce vine se
primeşte pe seriala şi afişează
Iniţial=caracter
Afişare LSB şi MSB codate Manchester

Stop

28
Programul manchester_tx a fost facut in MikroPascal. Conţine 3 proceduri una
de afisare, a doua de afisare a mesajului codat si a treia de transmitere. Procedura de
afisare a variabilei „intial” are drept scop afisarea pe cele 8 leduri de pe PORTB a
mesajului inainte de codare, asa cum este primit de pe seriala sau direct din memoria
microprocesorului. Microprocesorul a fost programat sa codeze carecterul „A” pe 8 biti
insa prin apasare unui comutator poate primi alt caracter direct de la calculator cu
COMTESTER care v-a inlocui caracterul initial. Carcaterul primit ultima oara va fi trimis
mai departe pentru codare si mai departe la transmitere.
Procedura de codare face codare manchester. Daca avem un bit de informatie de 1
va fi inlocuit de 01 iar daca bitul primit este 0 va fi inlocuit cu 10.
Procedura de transmitere are implementat un cod initial care sa fie sincronizat cu
receptorul. Codul de sincronizare contine o insiruire de octeti: 3 octeti care contin
numarul 1 in cod binar (00000001), un octet de inceput al mesajului (0Ah), doi octeti
unul de comanda si unul cu valoare si un octet de final (0Eh). Octetul de final arata cand
mesajul complet a fost transmis. Daca este trimis doar o parte din seria de octeti
receptorul stie ca nu trebuie sa ia in cosiderare si implicit nu trebuie sa codez inca
mesajul ca nu a fost trimis corect.
Functia USART face posibila schimbarea caracterului pentru codare. Daca nici un
caracter nou nu exista, este transmit direct din soft, caracterul A afisat pe 8 biti.
Programul principal imparte mesajul de codat in LSB si MSB pe 4 biti, urmand ca
dupa sa fie codat Manchester si trimis in trasmitator. Tot in programul exista o serie de
linii de comanda care aprind ledurile pentru afisarea mesajului transmis inainte si dupa
codare.

29
30
Start

Stop

31
3. Rezultate experimentale

4. Concluzii

IV. Calcule economic


4.1 Generalitati

Costul de productie este o categorie economica legata de existenta productiei de


marfuri, de procesul de formare a valorii si de preturi.
Calculul economic reprezinta un calcul amanuntit al costului de productie al
aparatului respectiv.
In sfera productiei materiale, costul de productie este forma banesca a unui
continut ce reprezinta consumul de mijloace materiale si forta de munca, necesare pentru
producerea si desfacerea bunurilor materiale. El include tot ceea ce inseamna cheltuiala
de productie suportata de intreprinzator pentru producerea si desfacerea bunului
respectiv.
Intre costul de productie si pretul de vanzare exista deosebiri atat cantitative cat si
calitative. Astfel pretul este mai mare decat costul de productie incluzand in plus si

32
profitul. Deosebirea calitativa este ca, in timp ce pretul asigura mijloacele necesare
productiei largite, costul de productie asigura doar recuperarea cheltuielilor de productie.
Potrivit legislatiei in vigoare, in tara noastra costul de productie este impartit in
urmatoarele grupe de cheltuieli:
- cheltuieli materiale(materii prime, energie, materiale si combustibili) Cmp
- cheltuieli directe cu munca vie(retributii directe platite muncitorilor, impozit pe
fondul de retributii directe Ifr, contributii pentru asigurari sociale Cas)
Cdmv = Rd + Ifr + Cas ;
- contributii la fondul de cercetari stiintifice;
- impozite(pe cladiri);
- fond pentru ajutor de somaj, alte cheltuieli ;
Elementele componente ale costului de productie se modifica de la o perioada de
timp la alta sub influenta factorilor externi si interni.
Marimea costului de productie exprima toate cheltuielile cu mijloacele de
productie si plata salariilor, cheltuieli ce se efectueaza pentru producerea si desfacerea
bunurilor de materiale.
Reducerea costului de productie inseamna micsorarea cheltuielilor pe unitatea de
produs si este o necesitate obiectiva impusa de cresterea rentabilitatii, sporirea profitului
si a productivitatii muncii.
Reducerea costului de productie atrage dupa sine cresterea calitatii produsului,
realizarea unor specializari suplimentare.
Diminuarea costului de productie se poate face pe mai multe cai:
- prin reducerea costului materialelor;
- prin utilizarea eficienta a capitalului fix;
- prin cresterea productivitatii muncii;
- prin reducerea cheltuielilor administrativ – gospodaresti;
La efectuarea calculului economic se poate tine cont si de o serie de costuri, cum
ar fi:
- costul fix se refera la cheltuieli independente de volumul productiei(chirii,
amortizarea masinilor, a cladirilor, etc);
- costul variabil se modifica odata cu modificarea volumului de productie;

33
- costul marginal exprima sporul de cheltuieli necesare pentru obtinerea unei
unitati suplimentare de produs;
- costul cercetarii stiintifice este dat de cheltuielile pentru cercetarea propriu-zisa
si pentru aplicarea in practica a rezultatelor activitatii de cercetare-proiectare in vederea
realizarii prototipului;
- costul tehnologic se caracterizeaza prin individualizarea cheltuielilor directe si a
unei parti insemnate din cheltuielile indirecte, in special cu intretinerea si folosirea
utilajelor;
Procesul de formare al costului de productie este dat de nivelul sectiei, de
cheltuielile directe la care se adauga cheltuielile cu intretinerea si functionarea
utilajelor(CIFU), cheltuieli generale ale sectiei cu munca vie(CMDV), care sunt necesare
in scopul asigurarii necesitatilor de iluminare si incalzire, etc.
Cd – reprezinta cheltuieli directe la care se adauga cheltuielile necesare pentru
materii si materiale si cheltuieli directe cu munca vie, din care se scade costul
materialelor refolosibile si recuperabile(C).
Cd = Cmp + Cadm – C, unde :
Cmp – cheltuieli directe cu materii prime si materiale;
Valoarea aparatului se calculeaza cu relatia urmatoare :
I = Pa + Cm + Pc + Ct unde:
I = investitia
Pa = pretul aparatului
Cm = cheltuieli de montaj(asamblare)
Ct = cheltuieli pentru transport

4.2 Determinarea pretului de cost

In pretul aparatului intra: pretul pentru circuite integrate, pentru componente


pasive, pentru cablajul imprimat, cheltuieli pentru carcasa, cheltuieli pentru probe, etc.
Pentru aceasta se utilizeaza urmatorul tabel :

Nr. crt. Nume produs Nr. bucati Pret produs/buc Total

34
1 PIC 16F877A 2 37 74
2 MAX232 2 7 14
3 Led 24 3 7,2
4 Buton 2 0.5 1
5 Comutator 2 0.5 1
6 Serial Port (RS232) 2 2 4
7 Cuartz 8MHz 2 2 4
8 Antena 433 2 28 56
9 Rezistor 1KΩ 24 0,2 4,8
10 Condensator 1μF 8 0,5 4
11 Condensator 33pF 4 0,3 1,2
12 AM-RT5-433 1 36 36
13 AM-HRR6-433 1 36 35
14 Soclu CI DIP40 2 1 2
15 Soclu CI DIP16 2 0,75 1,5
Placa de achizitie 1 5 5
25 Sacaz 25g 1 1
26 Solutie clorura ferica 300g 3 3
27 Solutie soda 100g 2 2
28 Burghiu 0,7mm 2 1 2
Total 258

Determinarea cheltuielor pentru realizarea montajului:


1. Manopera
Manopera se calculeaza ca fiind suma dintre manopera de executie si cea de proiectare:
M = ME +MP

M E = 6 % * valoarea componentelor = 6%*258 = 15,5RON

M P = 3 RON/h * 8h * 10zile = 240 RON

M = 15,5 + 240 = 255,5 RON

2. Contributia pentru ajutorul de somaj reprezinta 7 % din manopera:


CAS = 7 % * M = 7% * 255,5 = 17,8 RON

3. Contributia la asigurarile sociale de sanatate reprezinta 5,5%*5,2*0,85=11,5%


din manopera:
CASS = 11,5 % * M = 11,5% * 246,8 = 28 RON

35
Astfel se obtine pretul total Pt1:

Pt1=Mat+M+CAS+CASS=258+255,5+17,8+28=588RON
Cheltuieli indirecte :
Cheltuielile indirecte reprezinta 17% din Pt1:
Ci=17%*Pt1=17%588=100 RON
Profitul:
Profitul se calculeaza ca reprezentand 5% din Pt1 la care s-au adaugat cheltuielile
indirecte Ci :
Pr=5%*(Pt1+Ci)=5%*(100*591)=34RON

Pretul total 2, Pt2 se obtine astfel: pret total 1 + cheltuieli indirecte + profit:
Pt2=Pt1+Ci+Pr=588+100+34=722RON

Valoarea pe taxa adaugata, T.V.A. reprezinta 19% din pretul total 2:


T.V.A.=19%*Pt2=19%*726=138RON

Pretul total obtinut reprezinta pretul total 2 la care s-a adaugat T.V.A.-ul :
Pt=Pt2+T.V.A.=722+138=860RON

In final produsul finit va avea pretul de 860 RON.


Aceasta valoare scade daca se realizeaza mai multe unitati.

36
Anexe:
Transmiţător schema

37
Transmiţător cablaj(footprint):

38
Receptor schema:

39
Receptor cablaj(footprint):

40
41
Programele:

Transmiter

program manchester_tx;
var comanda,caracter,initial, codat,i,j,k,l,read_error : byte;

const RX_PIN = 7; //pinul 7 PORTC


TX_PIN = 6; //pinul 6 PORTC
BAUD_RATE = 9600; //rata de baud pentru port serial

procedure afisare_initial; //aprinde ledurile de la PORTB


begin
PORTB:=initial;
end;

procedure afisare_codat;
//afiseaza codarea Manchester a variabilei "initial" de tip byte
begin
for k:=0 to 3 do
begin
if initial.k=0 then
begin
l:=k*2;
codat.l:=0;
l:=l+1;
codat.l:=1;
end;
if initial.k=1 then
begin
l:=k*2;
codat.l:=1;
l:=l+1;
codat.l:=0;
end;
end;
PORTB:=codat; //aprinde ledurile
end;

procedure transmitere;
begin
//aici se transmite un mesaj
// formatul mesajului este 111A23E
// - trei octeti de 1 (pentru sincronizare)
// - A = $0A (inceput mesaj)
// -2 = comanda (adresa)

42
// -3 = valoarea
// -E = $0E (sfarsit de mesaj)
Man_send ($01);
Delay_ms(100); // receptorul are timp sa prelucreze
Man_send ($01);
Delay_ms(100);
Man_send ($01);
Delay_ms(100);
Man_send ($0A);
Delay_ms(100);
Man_send (comanda);
Delay_ms(100);
Man_send (initial);
Delay_ms(100);
//Man_send (comanda and initial);
Man_send($0E);
Delay_ms(100);
end;
begin
INTCON.GIE := 0; // dezactivează intreruperile
T1CON:=0; // dezactivează timerul
CCP1CON:=0; // dezactivează comparatorul
Man_Send_Config(PORTD,0);
// funcţie care pregateşte PIC+ul pentru a trimite semnal.
TRISB:=0; // se defineste portulB ca port de iesiri
TRISD.2:=1; // pinul 2 de la portD este intrare
TRISC.0:=0;
TRISC.1:=0;
TRISD.0:=0;
// test leduri
PORTB:=255; // se aprind toate ledurile
PORTC.0:=1;
PORTC.1:=1;
Delay_ms(5000);
PORTB:=0;
PORTC.0:=0;
PORTC.1:=0;
Delay_ms(1000);

// portul serial
Soft_Uart_init(PORTC, // initialozeaza modulul Soft_UART
RX_PIN,
TX_PIN,
BAUD_RATE,
FALSE);

43
caracter:=$41; // caracterul "A"
while TRUE do
begin
i := 1; // setează i la zero
while TRUE do
begin
//afisarea caracterului necodat
if PORTD.2=0 then
//comutator in pozitia 2- spre conector RS232 - citeste seriala
begin
caracter := Soft_Uart_Read(read_error);
// citeşte date receptate.
Soft_Uart_Write(caracter); // trimite datele inapoi prin UART.
end;
initial:=caracter;
afisare_initial;
PORTC.0:=1;
PORTC.1:=1;
delay_ms(3000);
//afisarea LSB a caracterului codat
initial:=caracter and $0F;
afisare_codat;
PORTC.0:=1;
PORTC.1:=0;
comanda:=$0C;
transmitere;
delay_ms(2000);
//afisarea MSB a caracterului codat
initial:=caracter and $F0;
initial:=initial shr 4;
afisare_codat;
PORTC.0:=0;
PORTC.1:=1;
comanda:=$0D;
transmitere;
delay_ms(2000);
Delay_ms(90); // 90 mili secunde întarziere
end;
end;
end.

Receiver:

44
program manchester_rx;
var control,comanda,initial,initial_LSB,initial_MSB, codat,i,j,k,l,m : byte;
var complete_LSB, complete_MSB:byte;
var ErrorCount, temp : byte;
error : byte;

procedure afisare_initial;
begin
PORTB:=initial;
PORTC.0:=1;
PORTC.1:=0;
end;

procedure afisare_codat;
begin
for k:=0 to 3 do
begin

if initial.k=0 then
begin
l:=k*2;
codat.l:=0;
l:=l+1;
codat.l:=1;
end;
if initial.k=1 then
begin
l:=k*2;
codat.l:=1;
l:=l+1;
codat.l:=0;
end;
end;
PORTB:=codat;
PORTC.0:=0;
PORTC.1:=1;
end;

begin
INTCON.GIE := 0; // disable interrupts
TRISB:=0;
TRISD.2:=1;
TRISC.0:=0;
TRISC.1:=0;
TRISD.1:=1;

45
ErrorCount := 0;
PORTB:=255;
Delay_ms(2000);
PORTB:=0;
Delay_ms(1000);
ErrorCount := 0;
ADCON1 := 0x0F; // toţi pinii ai PORTA,PORTB sunt digitali
Man_Receive_Config(PORTD, 1);
// configurează şi sincronizează ce se recepteză
while TRUE do // sfaşit buclă
begin
while TRUE do // wait for the start marker
begin
temp := Man_Receive(error);
if (temp = 0x0E) then
break;
if (error <> 0) then
break; // sfârşeste bucla pentru a nu infinită
end;
m:=0;
initial:=0;
initial_LSB:=0;
initial_MSB:=0;
complete_LSB:=0;
complete_MSB:=0;
repeat
begin
temp := Man_Receive(error); // asteapta biţii
if (error <> 0) then //daca avem eroare la receptie
begin
//daca avem eroare de receptie
PORTB:=255; //aprinde ledurile
delay_ms(300);
PORTB:=0;
Delay_ms(300);
PORTB:=$FF;
delay_ms(300);
PORTB:=0;
delay_ms(300);
ErrorCount:= ErrorCount + 1; // incrementează ErrorCount cu unu
if (ErrorCount > 20) then
begin
temp := Man_Synchro();
ErrorCount := 0; // reseteaza ErrorCount la zero
end;
end

46
else
begin
if TRUE then
//aici se memoreaza caracterul receptionat
// formatul mesajului este 111A23E
// - trei byte de 1 (pentru sincronizare)
// - A = $0A (inceput mesaj)
// -2 = comanda (adresa)
// -3 = valoarea
// -E = $0E (sfarsit de mesaj)
begin
if m=6 then
begin
//control:=temp;
if temp <> $0E then
begin
//in cazul in care mesajul nu se termina corect
//adica nu s-a receptionat caracterul $0E
PORTB:=$FF;
delay_ms(300);
PORTB:=0;
Delay_ms(300);
PORTB:=$FF;
delay_ms(300);
PORTB:=0;
delay_ms(300);
m:=0;
end
else
//daca se receptioneaza caracterul $0E - sfarsit mesaj
begin
if (complete_LSB and complete_MSB) then
begin
initial:=initial_MSB shl 4;
initial:=initial and $F0;
initial_LSB:=initial_LSB and $0F;
initial:=initial or initial_LSB;
delay_ms(2000);
afisare_initial;
delay_ms(1000);
PORTB:=0;
delay_ms(1000);
afisare_initial;
delay_ms(1000);
PORTB:=0;
m:=0;

47
end;
end;
end;
if m=5 then
begin
if comanda=$0C then
begin
initial_LSB:=temp; //LSB
complete_LSB:=1;
m:=6;
end;
if comanda=$0D then
begin
initial_MSB:=temp; //MSB
complete_MSB:=1;
m:=6;
end;
if (comanda<>$0C)and (comanda<>$0D) then m:=0;
end;
if m=4 then
begin
comanda:=temp; // comanda (adresa)
m:=5;
end;
if m=3 then
begin
if temp=$0A then m:=4; //inceput mesaj
if temp<>$0A then m:=0;
end;
if ((temp=$01) and (m<3)) then m:=m+1;
//se receptioneaza de 3 ori cifra 1
if ((temp<>$01) and (m<3)) then m:=0;
//daca nu se receptioneaza de 3 ori
//valoarea 1 consecutiv atunci se reia

end;
Delay_ms(25); // 25 ms delay
end;
end;
until (temp = 0x0F); // repeata pana cand semnalul este primit
end;

end.

48
Bibliografie:

http://comunicatii.referate.bubble.ro/
http://www.comm.pub.ro/curs/cic/curs_ro.htm
http://hermes.etc.upt.ro/teaching/cd/L4_cd.pdf
http://old.ace.tuiasi.ro/ro/academice/curricula/programe/ingineri/aut/Lab-2_08.pdf
http://tet.pub.ro/mat/an2/tic_curs/TIC_cap_4.pdf

49