Escolar Documentos
Profissional Documentos
Cultura Documentos
10 de setembro de 2009
Sumrio
1 Introduo
2 Portas de Comunicao do Computador e suas caractersticas 2.1 2.2 2.3 Caractersticas Eltricas Porta Paralela . . . . . . . . . . . . . . . . . . . . . . Caractersticas Eltricas Porta Serial . . . . . . . . . . . . . . . . . . . . . . . Caractersticas Eltricas Porta USB . . . . . . . . . . . . . . . . . . . . . . . .
2 3 5 6
7 7
9 9 10
5 Porta Serial 5.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 5.1.3 Condicionamento de Sinal RS232/TTL . . . . . . . . . . . . . . . . . Circuito Microcontrolado (PIC) . . . . . . . . . . . . . . . . . . . . . Transmisso por Infravermelho (IR) . . . . . . . . . . . . . . . . . . .
11 11 11 12 14
5.1.4 5.2
15 17 17 18
19 19 20
22 22
24 24 24 25 26
C Microcontrolador PIC16F628A C.1 Congurao das Portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Congurao Interrupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Congurao Porta Serial Assncrona . . . . . . . . . . . . . . . . . . . . . .
28 37 38 39
41 41
D.1.1 Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.2 Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.3 Diodo e LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.4 Transistor Bipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.5 Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.6 Regulador de Tenso . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.7 Rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1.8 Conversor RS232/TTL . . . . . . . . . . . . . . . . . . . . . . . . . .
41 42 42 44 44 45 46 47
Lista de Figuras
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Porta Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Porta USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinagem Porta Paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinagem Porta Serial (DB9 Macho PC) . . . . . . . . . . . . . . . . . . . . . Conexo Porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sinais da porta serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinagem Porta USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 4 5 5 6 6
3.1
4.1 4.2
9 10
Conversor RS232/TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PIC porta serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Foto PIC porta serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuito de comunicao Infravermelho . . . . . . . . . . . . . . . . . . . . . Foto do Foto-diodo e mdulo receptor infravermelho . . . . . . . . . . . . . .
12 13 13 14 14
Circuito transmissor rdio frequncia PC . . . . . . . . . . . . . . . . . . . . . Circuito transmissor rdio frequncia PIC . . . . . . . . . . . . . . . . . . . . Circuito receptor de rdio frequncia acionando 2 motores . . . . . . . . . . . Foto dos mdulos receptor e transmissor de rdio frequncia . . . . . . . . . .
15 16 17 17 18
6.1
20
C.1 Pinagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Foto Pic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Diagrama Interno do PIC16F628 . . . . . . . . . . . . . . . . . . . . . . . . . C.4 PORTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.5 PORTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.6 memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.7 Bank 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.8 Bank 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.9 Opcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.10 Congurao PORTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.11 Congurao PORTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.12 Congurao interrupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.13 Congurao Transmisso Serial . . . . . . . . . . . . . . . . . . . . . . . .
30 30 31 32 33 34 35 36 37 38 38 39 39 40 40
D.1 Smbolo Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 Foto Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.3 Smbolo Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.4 Foto Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.5 Smbolo Diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.6 Foto Diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.7 Smbolo LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.8 Foto LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.9 Smbolo Transistor NPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.10 Foto Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.11 Smbolo Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.12 Foto Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41 41 42 42 43 43 43 43 44 44 44 45 45 46 46 47 47
D.13 Smbolo Regulador de Tenso . . . . . . . . . . . . . . . . . . . . . . . . . . D.14 Foto Regulador de Tenso . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.15 Smbolo Rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.16 Foto Rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.17 Conversor RS232/TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lista de Tabelas
2.1 2.2 2.3 2.4 Tipos de Operao da porta paralela . . . . . . . . . . . . . . . . . . . . . . . Pinos da porta paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de porta paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Congurao porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 5 6
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
28 28 29 29
C.2 Microcontroller Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Special Microcontroller Features . . . . . . . . . . . . . . . . . . . . . . . . . C.4 Peripheral Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
Resumo
Esse material tem como objetivo introduzir os conceitos bsicos do uso de portas de comunicao de um computador, a programao necessria para criao dos softwares e o hardware bsico para acesso e controle das portas . Os exemplos utilizados so vlidos para os sistemas operacionais Linux e Windows, mas podem ser convertidos para outros sistemas.
Captulo 1 Introduo
Este documento tem como objetivo fornecer uma introduo a programao para controle de dispositivos externos pelo computador, utilizando linguagem c nos sistemas operacionais Linux e Windows. So abordados mtodos de programao para controle atravs da porta paralela, serial e USB (emulando porta serial) bem como os circuitos bsicos de interface discretos e microcontrolados. Pr-requisitos: Conhecimento de uma linguagem de programao e noes bsicas de eletrnica.
O tamanho mximo do cabo de ligao de 8 metros, quanto menor o cabo menos interferncias e maior a velocidade.
1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13
STROBE AUTOFEED D0 ERROR D1 INIT D2 SELECT IN D3 GND D4 GND D5 GND D6 GND D7 GND AKNOWLEDGE GND BUSY GND PAPER END GND SELECT OUT
Os sinais eltricos da porta paralela depende do seu tipo e so mostrados na Tabela 2.3. 4
1 6 2 7 3 8 4 9 5
Para utilizar a porta serial necessrio fazer sua congurao antes do uso, os parametros de congurao so mostrados na tabela 2.4. 5
VCC
2
D
3
D+
4 GND
Vcc
Dispositivo
4N25 1K
1
Entrada
D?
RELAY Dispositivo
4.7K
2
BC547
3
4.2 Programao
Programas par linux e windows com a porta no modo SPP B.1 B.2.
10
11
12
10k
10k
10k
10k
10k
10k
10k
10k
R12
R10
R11
R13
R14
+5V
R7
R8
R9
S6
1 2
S6
1 2
S6
1 2
S5
1 +5V 2
S4 U2
V+ 2 1
1uF
C3
C2 1uF
MAX232
1 C1+
S3
2 1 2
CONN1 C1
1 4 1
C1 6 2
1uF
V
C4
1 1 U1 18 17 16 15 14 13 12 11 10 +5V 1 1 RA1 RA0 RA7/OSC1 RA6/OSC2 Vdd RB7 RB6 RB5 RB4
S2
2
C2+
1uF
6 2 7 3 8 4 9 5 2
C2 11
S1
2
2 Tx1 In 3 4 5
14
Tx1 Out
13
Rx1 In
Rx1 Out
12
Tx2 Out
Tx2 In
10 6 9 7 8 9
R1
330
1
LED1
2
Rx2 In
Rx2 Out
R2
330
1
LED2
2
R3
330
1
LED3
2
R4
330
1
LED4
2
R5
330
1
LED5
2
R6
330
1
LED6
2
13
14
CONN2
1 2
U2
Vcc 1 IN GND 1 1 OUT 3 +5V
C2
330uF
2
100uF
R1
7805
330R
C1
2 1 2
LED1
C?
CONN1
2 1 6 1
MAX232
1 C1+
U1
V+ 2 1
C?
2
ANT1
1
C1 6 2 1
2 7 2 3 8 4 9 5
C2+
3 3 2 2 1
C2 11
C?
Tx1 In 1
14
Tx1 Out
13
Rx1 In
Rx1 Out
12
U3
Tx2 Out
Tx2 In
10
Rx2 In
Rx2 Out
Transmissor serial PC
TITLE FILE: PAGE OF REVISION: DRAWN BY:
15
TX 315Mhz
+5V
ANT
C?
CONN2
1 2
U2
Vcc 1 IN GND OUT 3 +5V
10K
10K
R1
7805
280R
R5
R4
R3
10K
1000uF
2
100uF
R2
10K
10K
10K
10K
10K
R9
R8
R7
R6
CONN4
1 2 3 4 5 6 +5V
U3
TX 315Mhz
C2
C1
CONN3
1 1 2 2 3 4 +5V 5 6
LED1
U1 1 2 3 4 5 6 7 8 9 18 17 16 15 14 13 12 11 10 +5V RA2 RA3 RA4 MCLR/RA5 Vss RB0 RB1 RB2 RB3 RA1 RA0 RA7/OSC1 RA6/OSC2 Vdd RB7 RB6 RB5 RB4
C3
33pF
4MHz C4
33pF
C5 100nF
CONN1
1 2 3
ANT?
+5V 1 ANT VCC DATA GND 4 3 2 1 +5V
4 5 6
R10 10K
R11 10K
R12 10K
R13 10K
U4
16
U7
RX 315Mhz
Vcc DATA DATA GND GND GND +5V 1 1 IN GND 2 2 7805 1 OUT 3 1 2 3 4 5 6 7 8 ANT
U4
+5V
+5V
ANT1
C2
C1
C3
3 4 5 6 7 8 9
16 15
U6
1.5K
R1
5.2 Programao
5.2.1 Microcontrolador (PIC)
O microcontrolador PIC16F628A j possu uma USART interna, basta congurar a USART interna e a interrupo por recebimento de dados pela serial como no programa A.1. 17
330uF
B1 10,8V
2 1 2
+5V
100uF
100nF
+5V U1 1 2 18 17
L293
1 2 3 CHIP INHIBIT INPUT 1 OUTPUT 1 GND GND OUTPUT 2 INPUT 2 VC
U2
+5V VSS INPUT 4 OUTPUT 4 GND GND OUTPUT 3 INPUT 3 CHIP INHIBIT 2 16 15 14 13 12 11 10 9 +5V
C4
RA1 RA0
33pF
RA2 RA3
20MHz
4
M2
+5V 5
M1
14 13 12
C5
33pF
6 7 8
Vcc 11 10
CONN2
1
+5V
2 1
LED1
CONN1
FILE: PAGE OF
5.2.2 PC
Programas para Linux e Windows com porta no modo 9600 8N1 B.3 B.4.]
18
6.1 Hardware
Specications
8 Digital output 8 Digital input 8 Analog output No external power required Simple ASCII command 3 command to communicate PC with PIC
19
6.2 Programao
I use Delphi 6 on PC side to communicate with PIC18F4550 source code availible. Cdigo
20
Referncias
Minicurso Comunicao Serial - RS232, Edmur Canzian - CNZ Engenharia e Informtica Ltda (http://www.professores.aedb.br/arlei/AEDB/Arquivos/rs232.pdf) Linux I/O port programming mini-HOWTO- Riku Saikkonen - (http://tldp.org/HOWTO/IOPort-Programming.html) PIC16F627A/628A/648A Data Sheet, Microchip ,DS40044F
21
ERRORLEVEL -302
CBLOCK 0x70 ;variaveis para salvar contexto na interrupcao W_TEMP S_TEMP ENDC ;inico ORG 0X0000 GOTO INICIO ;interrupcao ORG 0X0004 ;salva contexto MOVWF W_TEMP SWAPF STATUS,W MOVWF S_TEMP ;le serial ; BTFSS PIR1,RCIF ;verifica se interuupcao da porta serial ; GOTO FIMS BANKSEL RCREG MOVFW RCREG MOVWF PORTB MOVFW PORTA MOVWF TXREG BCF PIR1,RCIF ;restaura contexto FIMS: SWAPF S_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE ;programa principal INICIO: ; configura portas MOVLW B00000111 MOVWF CMCON ;configura RA0,RA1,RA2,RA3 BANKSEL TRISA MOVLW B11111111 MOVWF TRISA MOVLW B00000010 MOVWF TRISB ;PORTB ,RB1 IN BANKSEL PORTB ; inicializa serial MOVLW B10010000 MOVWF RCSTA BANKSEL TXSTA MOVLW B00100100 MOVWF TXSTA MOVLW D25;25 = 9600-8N1 MOVWF SPBRG BANKSEL RCSTA ; habilita interrupcoes MOVLW B11000000;habilita GIE PEIE MOVWF INTCON BANKSEL PIE1 MOVLW B00100000;habilita RCIE
22
MOVWF PIE1 BANKSEL PIR1 CLRF PORTB ;loop infinito MAIN: GOTO MAIN END
23
void main() { unsigned char data; //pede permisso de acesso if (ioperm (BASEPORT, 3, 1)) { printf ("Erro ioperm\n"); exit (1); }; /*********************** Programa principal **************************/ //escreve dados data=0xA5; outb (data, BASEPORT); //l dados data = inb (BASEPORT+1);
/******************** Finalizao ******************************/ //libera permisso de acesso if (ioperm (BASEPORT, 3, 0)) { printf ("Erro ioperm\n"); exit (1); }; };
0x378
/* offset dos registros */ #define DATA 0 #define STATUS 1 #define CONTROLL 2 typedef short _stdcall (*INP32)(short PortAddress); typedef void _stdcall (*OUT32)(short PortAddress, short Data); int main(void) {
24
short value; short des; unsigned char data; HINSTANCE hLib; INP32 Inp32; OUT32 Out32; /******************** Inicializao da biblioteca ***********************/ //carrega bibiloteca if ((hLib = LoadLibrary("inpout32.dll")) == NULL) { printf("Unable to load inpout32.dll, did you copy it to the system folder?\n"); system("pause"); return 0; } //carrega funo de leitura if ((Inp32 = (INP32)GetProcAddress(hLib, "Inp32")) == NULL) { printf("Unable to establish handle to input function.\n"); system("pause"); return 0; }
//carrega funo de escrita if ((Out32 = (OUT32)GetProcAddress(hLib, "Out32")) == NULL) { printf("Unable to establish handle to output function.\n"); system("pause"); return 0; } /*********************** Programa principal **************************/ //escreve dados data=5; Out32(BASE_ADDRESS, data); //l dados data = Inp32(BASE_ADDRESS+1);
BAUDRATE B9600 MODEMDEVICE "/dev/ttyS0" _POSIX_SOURCE 1 /* POSIX compliant source */ FALSE 0 TRUE 1
volatile int STOP=FALSE; int main() { int fd,c; struct termios newtio; //configurao fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd <0) {perror(MODEMDEVICE); exit(-1); } // tcgetattr(fd,&oldtio); /* save current port settings */ bzero(&newtio, newtio.c_cflag newtio.c_iflag newtio.c_oflag sizeof(newtio)); = BAUDRATE |CS8 | CLOCAL | CREAD; = IGNPAR|ICRNL|IGNBRK; = 0;
/* set input mode (non-canonical, no echo,...) */ newtio.c_lflag = 0; newtio.c_cc[VTIME] newtio.c_cc[VMIN] = 0; = 5; /* inter-character timer unused */ /* blocking read until 5 chars received */
25
// l dado do teclado c=getchar(); //escreve na porta serial write (fd,&c,1); usleep(1000); //l porta serial c=0; read (fd,&c,1); usleep(1000); //imprime caracter recebido printf("%c",c); fflush(stdout); }
return 0; }
#define BAUDRATE 9600 #define MODEMDEVICE "com1" int main() { HANDLE hCom; char c; DWORD nbytes; // variables used with the com port BOOL bPortReady; DCB dcb; COMMTIMEOUTS CommTimeouts; //configurao hCom = CreateFile(MODEMDEVICE, GENERIC_READ | GENERIC_WRITE, 0, // exclusive access NULL, // no security OPEN_EXISTING, 0, // no overlapped I/O NULL); // null template bPortReady = SetupComm(hCom, 2, 128); // set buffer sizes bPortReady = GetCommState(hCom, &dcb); dcb.BaudRate = BAUDRATE; dcb.ByteSize = 8; dcb.Parity = NOPARITY; // dcb.Parity = EVENPARITY; dcb.StopBits = ONESTOPBIT; dcb.fAbortOnError = TRUE; // set XON/XOFF dcb.fOutX = FALSE; // XON/XOFF off for transmit dcb.fInX = FALSE; // XON/XOFF off for receive // set RTSCTS dcb.fOutxCtsFlow = FALSE; // turn off CTS flow control dcb.fRtsControl = RTS_CONTROL_DISABLE; // // set DSRDTR dcb.fOutxDsrFlow = FALSE; // turn off DSR flow control dcb.fDtrControl = DTR_CONTROL_DISABLE; // bPortReady = SetCommState(hCom, &dcb); // Communication timeouts are optional bPortReady = GetCommTimeouts (hCom, &CommTimeouts); CommTimeouts.ReadIntervalTimeout = MAXDWORD;
26
// l dado do teclado c=getchar(); //escreve na porta serial WriteFile(hCom, &c, 1, &nbytes,NULL); Sleep(1); //l porta serial c=0; ReadFile(hCom, &c, 1,&nbytes, NULL); Sleep(1); //imprime caracter recebido printf("%c",c); fflush(stdout); }
return 0; }
27
28
A pinagem do microcontrolador mostrada na Figura C.1, onde pode se perceber que cada pino tem mais de uma funo, a funo utilizada pode ser programada via software e pode ser mudada durante a execuo do programa.
29
Figura C.2: Foto Pic Na Figura C.3 mostrado os blocos lgicos internos do microcontrolador e seus perifricos.
30
Figura C.3: Diagrama Interno do PIC16F628 As funes dos pinos e os tipos de sinais so descritos nas Figuras C.4 e C.5.
31
32
Figura C.5: PORTB O mapa de memria mostrado na Figura C.6 e os dois bancos mais utilizados so mostrados nas Figuras C.7 e C.8;
33
34
35
36
37
Figura C.10: Congurao PORTA o PORTA e o PORTB tem funes multiplexadas em vrios pinos, se essas funes estiverem ativadas o pino do PORTx no pode ser utilizado como entrada e sada de dados digitais.
38
39
40
Apndice D Componentes
D.1.1 Resistor
Resistor utilizado principalmente para limitar a corrente em outros componentes. Seu valor calculado com a utilizao da Lei de Ohm I = V . R
Figura D.2: Foto Resistor Nos resitores comerciais seus valores so representados pelo cdigo de cores descrito na Tabela D.1. 41
D.1.2 Interruptor
Interruptores so chaves mecnicas so utilizados para mudana de estado (ligado ou desligado por exemplo), so dispositivos de entrada que permitem o usurio interagir com circuito. Normalmente so necessrios resistores de pull-up ou pull-down quando so utilizados junto com os microcontroladores, neste caso ainda necessrio a aplicao de uma tcnica de debouncig por software(anti-repique).
42
Figura D.6: Foto Diodo O LED (Light Emitting Diode) um diodo que quando polarizado diretamente emite luz, normalmente os LED de 5mm funcionam com uma corrente mxima de 50mA, sendo necessrio a utilizao de um resistor em srie para limitar a corrente.
43
D.1.5 Capacitor
O capacitor serve para armazenar cargas eltricas, no projeto ele usado para ltrar rudo nos sinais de alimentao. Analogamente ao uso de uma caixa de gua quando falta presso na gua que vem da rua, o capacitor fornece energia quando por algum motivo ela no vem direto da fonte e quando a alimentao da fonte est normal ele se carrega.
44
45
D.1.7 Rel
O rel um tipo de interruptor acionado eletricamente que permite o isolamento eltrico de dois circuitos. O rel formado por um eletrom (uma bobina enrolada sobre um ncleo de material ferromagntico) que quando acionado, atravs da atrao eletromagntica, fecha os contatos de um interruptor. Normalmente o interruptor de um rel tem duas posies, com isso existem dois tipos, os NF(normalmente fechado) e NA (normalmente aberto). Um rel pode ter vrios interruptores (conhecidos como contatos) de ambos os tipos, normalmente eles suportam correntes de ate dezenas de Ampres e centenas de Volts. A bobina do rel acionada por uma tenso contnua que especicada de acordo com o fabricante, bobinas de 5, 12 e 24 Volts so as mais comuns.
46
47