Introducere

Proiectual are ca scop testarea unui cablu UTP din punct de vedere al functionalitatii si al tipului.

Cablurile UTP adica cele pe care fiecare dintre noi le foloseste intre calculator si router, switch sau priza de retea sunt de trei tipuri si sunt formate din 8 fire colorate diferit.

In imaginea de sus este prezentata diagrama pinilor (pin-out diagram) pentru cele doua tipuri de cabluri UTP normal (straight-through cable) care se foloseste la conectarea calculatorului la router/switch si in dreapta diagrama pinilor pentru cablul cross-over, cablu ce se foloseste la conectarea directa a doua PC-uri sau doua switch-uri. Mai jos in imagine sunt prezentate cele doua standarde de culori EIA/TIA 568A si EIA/TIA 568B.

Pinii 4, 5, 7 si 8 (perechile albastru si brun/maro inchis) nu sunt folosite in ambele standarde si nu sunt necesare in realizarea unei conexiuni 100BASE-TX duplex.

Descriere generala

Cele mai utilizate testere de cabluri folosesc LED-uri pentru a evidentia corespondenta firelor. Am pornit de la aceasta idee si am adaugat un display LCD care afiseaza informatii pe durata testului (corespondenta dintre cabluri, daca aceasta exista), iar la final este afisat un mesaj in cazul in care configuratia este corecta si nu exista intreruperi pe cablu.

Principiul de functionare: De la un capat al cablului se trimite cate un semnal pe fiecare din cele 8 fire cere-l compun, iar la celalalt capat semnalele vor fi receptionate. Daca nu ajung toate la destinatie atunci se va afisa un mesaj pentru a indica o configuratie incorecta. Daca ajung toate semnalele atunci vom verifica ordinea acestora si vom afisa mesajul corespunzator tipului de cablu testat (Straight, Crossover, Rollover). In cazul in care nu sunt respectate aceste standarde se va afisa mesaj pentru a indica faptul ca avem un cablu mufat incorect. De asemenea corespondenta intre cabluri este evidentiata si prin intremediul LED-urilor (atat sender-ul cat si receiver-ul au cate un LED pentru fiecare fir). In momentul in care se trimite semnal pe un fir, se va aprinde LED-ul corespunzator acestuia, Daca semnalul ajunge pana la destinatie atunci va fi aprins LED-ul corespunzator firului pe care a venit semnalul.

Exemple teoretice de folosire:

1. LED-urile se aprind succesiv la acelasi interval de timp = Cablul este bun si mufele sunt corect sertizate.

2. LED-urile se aprind succesiv mai putin LED-ul 3 = Firul 3 intrerupt sau nu este bine sertizat.

3. LED-urile se aprind succesiv dar int-o ordine aleatoare = Ordinea corecta nu este respectata.

4. LED-urile se aprind succesiv dar LED-urile 3 si 5 se aprind ambele atat in pozitia 3 cat si in pozitia 5 , restul functioneaza normal = Firele 3 si 5 sunt in scurtcircuit.

Ultimul exemplu arata un scurt intre firele 3 si 5.LED-urile 3 si 5 se aprind simultan.In realitate ele vor lumina cu o intensitate mai mica,deoarece tensiunea primita pe fire este injumatatita.

Descriere Hardware

Proiectul utilizeaza placuta realizata in prima parte a proiectului, la care se adauga o extensie. Pe aceasta din urma avem un ecran LCD DEM16216SGH, 16 LED-uri 3mm (8 pentru sender, 8 pentru receiver) pentru a exemplifica trimiterea si receptia semnalelor,16 rezistente (am folosit rezistente SMD), doua mufe RJ-45. Portul D este utilizat pentru a controla LCD-ul, portul A pentru trimitera de semnale, iar portul C pentru receptia semnalelor.

Piese folosite

 1.
    2 mufe RJ-45
 2.
    16 LED-uri
 3.
    16 rezistente 1K (SMD)
 4.
    LCD DEM16216SGH

Rezultatul Final

Proiectul in etapa final indeplineste toate functionalitatile propuse. Observam in imaginea de jos placuta de test ce contine proiectul (tester de cablu UTP) si o matrice de leduri 8×8 pe care am implemetat jocul snake;

Starea initiala inainte de a insera cablul._ _ _ _ _ _ Cablu inserat.

Software Design

Detalii despre implementare:

  • Limbaj de programare: C
  • Compilator: WinAVR
  • IDE: AVR Studio 4

Programul va avea 2 module:

  • modulul de achizitie si interpretare a semnalelor
  • modulul de afisare pe lcd

Pentru comunicrea cu LCD-ul am folosit API-ul definit in laboratorul de PM:

/************************************************************************ 
 * DEFINE-uri pentru parametrizarea modulului LCD
 ************************************************************************/
#define LcdDATA_DDR		DDRD			// Portul pe care conectam firele de date la LCD-ul
#define LcdDATA_PORT		PORTD
#define LcdDATA_PIN		PIND
 
#define LcdCMD_DDR		DDRD	        // Portul pe care conectam firele de comenzi la LCD
#define LcdCMD_PORT		PORTD
#define LcdCMD_PIN		PIND
 
#define LcdD4			 PD4		// Pin-ul pentru firul de date D4 de pe LCD
#define LcdD5			 PD3		// Pin-ul pentru firul de date D5 de pe LCD
#define LcdD6			 PD2		// Pin-ul pentru firul de date D6 de pe LCD
#define LcdD7			 PD1		// Pin-ul pentru firul de date D7 de pe LCD
 
#define LcdRS			 PD7	        // Pinul pentru selectare operatie (LCD)
#define LcdRW			 PD6		// Pinul pentru Read/ Write (LCD)
#define LcdE			 PD5		// Pinul de Enable (LCD)
 
#define LCD_INSTR_4wire 		0x28 	// 4 fire date, font 5x8
#define LCD_INSTR_display 		0x0C 	// Display On, Cursor On, Blinking On ( 1 Display Cursor Blink )
#define LCD_INSTR_clearDisplay  	0x01 	// Clear Display
#define LCD_INSTR_returnHome		0x02 	// Return Cursor and LCD to Home Position
#define LCD_INSTR_nextLine 		0xC0 	// Return Cursor and LCD to Home Position
#define LCD_INSTR_gotoCGRAM		0x40	// go to Character Generator RAM
 
/*************
 * API LCD   *
 *************/
void LCD_init();                                        // Initializare modul LCD.Trebuie apelata inainte de a se face orice operatie cu LCD-ul
void LCD_writeInstruction(unsigned char _instruction);	// Trimite o instructiune catre lcd (vezi datasheet)
void LCD_writeData(unsigned char _data);		// Trimite date catre LCD pentru afisare
void LCD_write(unsigned char _byte);			// trimite un bute catre LCD la modul general (nu conteaza daca e instructiune sau date)
void LCD_waitNotBusy();					// Asteptam pana cand lcd-ul devine disponibil pt o noua comanda
void LCD_waitInstructions(unsigned char _instructions);	// Asteapta un numar de cicli de ceas.
void LCD_print(char* _msg);				// Afiseaza imformatia pe LCD (doar 1 linie, primele 16 caractere)
void LCD_print2(char* _msg1, char* _msg2);		// Afisare pe 2 lini pe LCD
void LCD_printDecimal2u(unsigned int _n);		// Afisare numar in baza 10 pe LCD
void LCD_printHexa(unsigned int _n);			// Afisare numar in baza 16 pe LCD

Download

Concluzii

Proiectul a fost de o dificultate redusa ,atat software cat si hardware,ceea ce mi-a piermis sa mai implementez un mic proiect pana la finalul etapei a treia.Am implmentat jocul “snake” pe o matrice de leduri 8×8.

O alta realizare interesanta a proiectului este folosirea rezistentelor SMD (mult mai mici si mai usor de lipit,aducand un plus laturii estetice).

Bibliografie

pm/prj2011/amocanu/atmega16-developer.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0