TTL / RS232 Driver

TTL / RS232 Driver

TTL / RS232 Driver

Level converter, som gør det muligt at få et ægte RS232 interface til f.eks. en 5V DC microcontroller…

ttl_rs232_driver01

Mange microcontrollere og andet elektronisk udstyr er i dag udstyret med en eller anden form for UART port, som gør kommunikation mellem enheder, eks. en PC og en microcontroller, nemmere. Udover at være nemt og ret udbredt, kræver det et minimalt antal af det begrænsede antal I/O-pins der er på microcontrollere…

Der er bare ét problem… RS232 portene brugte i gamle dage ±12VDC, hvilket ikke er noget en 5VDC microcontroller synes godt om. Derfor er det nødvendigt at have et eller andet mellemled, en converter, der kan ændre det 0-5VDC signal microcontrolleren kan arbejde med til ~±12VDC som computerens port arbejder med. Og det helst uden at have adgang til en 12VDC spænding i kredsløbet.

Det er her MAX232 kredsen har sin storhedstid. Den, sammen med alle de andre “kloner” af samme kreds, gør netop det, at med en 5VDC forsyning, konverterer den signalet fra microcontrolleren til et ±10VDC signal, som er nok til at computeren kan arbejde med det. Der skal bruges 4  stks. 1uF kondensatorer til kredsen, og så er man kørende. Der er 2 “kanaler” i sådan en kreds, således der er to indgange til RS232 og to udgange fra RS232.

Jeg har lavet en converter, hvor jeg kun bruger den ene “kanal”´, da jeg ikke havde behov for mere til mit projekt her og nu. Diagrammet er som følger:

 

rs232_ttl_schematics

 

Stykliste

Antal Beskrivelse
1 stk. HIN232 (MAX232 eller anden driver IC)
1 stk. 100nF kondensator
1 stk. 1μF/15V electrolyt kondensator
2 stk. LED, lysdiode
2 stk. 470Ω modstand
1 stk. D-SUB9 Hun stik, evt. med kabel
1 stk. 4 ledet kabel til interface til microcontroller.
1 stk. VeroBoard eller råprint der kan huse komponenterne

 

De 2 LEDs og modstande kan undværes, men jeg syntes det var meget rart at have en visuel indikation for, om der sker noget på porten. Det kan aldrig måle sig med et oscilloscope til fejlsøgning, men det kan da give en idé om der kommer noget eller ej. 🙂

Kredsløbet bliver spændingsforsynet gennem interface kablet til microcontrolleren.

Det er vigtigt at få kortsluttet de angivne pins i DB9 stikket jf. diagrammet, da computeren ellers ikke vil sende data ud. Hvis du vil vide mere om det og andre spændende ting omkring RS232, så søg på Google, og det vælter frem.

ttl_rs232_driver02

Fejlsøgning

Når man sætter en microcontroller til en PC gennem en converter, så er der i hvert fald 3 steder der kan opstå fejl:

  • I PC’en, terminalprogrammet, opsætning osv.
  • Level converteren
  • Firmwaren i microcontrolleren

Der findes mange måder at fejlsøge på, og bedst er det da med et oscilloscope, men en loopback-test kan nu godt bruges istedet, plus den kan vise om en kode fungerer som den skal. Denne form for test gør netop det, som navnet antyder, da man blot forbinder Rx med Tx eksempelvis på den ene side af converteren.  Hvis man ønsker at teste om porten i computeren virker (og terminalprogram m.m.), så forbindes pin 2 og 3 i D-SUB9 stikket. En hver karakter der indtastes i et terminalprogram, eks. HyperTerminal eller Putty, skal så komme frem på skærmen, uanset hvilken baudrate der er sat. Hvis det giver et positivt resultat, kan man udvide det til at omfatte converteren også ved at forbinde pin 11 og 12 (husk stadig at have 5VDC forsyning på pin 15/16). Hvis der kommer karakterer frem på skærmen, virker din level converter.

Samme fremgansgmåde kan benyttes fra microcontroller-enden også. Lav et stykke kode der sender et bestemt tegn via UART, eks. “O”. Lav derefter et stykke kode, der “lytter” på UART porten efter netop tegnet “O”, og som tænder en lysdiode.

Pseudokode:

UART_Tx_Byte(0x4F);
if(UART_Rx_Byte()==0x4F) {
	LED_On();
	}

Hvis dioden tænder, så virker din sende/modtage kode. Arbejd videre frem ved at omfatte convereten også, her er det så nu pin 13 og 14 der skal forbindes, og testen udføres igen.

Jeg vil snarest lægge en fil ud med kildekode til WinAVR, som kan sende og modtage via UART på en ATmega168 til inspiration og frit brug. Mangler bare lige de sidste tests og kommentarer… 🙂