Escolar Documentos
Profissional Documentos
Cultura Documentos
Aces Shard
Aces Shard
Computador
Informática Industrial/Automação
SDM - Sistemas Digitais e Microprocessados
10 de setembro de 2009
Sumário
1 Introdução 1
4 Porta Paralela 9
4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Porta Serial 11
5.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1
5.1.4 Transmissão por Rádio Freqüência (RF) . . . . . . . . . . . . . . . . . 15
5.2 Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.2 PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2 Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
A.1 Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
B Códigos fontes PC 24
C Microcontrolador PIC16F628A 28
D Componentes 41
2
D.1.1 Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
D.1.2 Interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
D.1.5 Capacitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
D.1.7 Relé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3
Lista de Figuras
4
5.6 Circuito transmissor rádio frequência PC . . . . . . . . . . . . . . . . . . . . . 15
C.1 Pinagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
C.4 PORTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
C.5 PORTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
C.6 memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
C.7 Bank 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
C.8 Bank 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
C.9 Opcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5
D.1 Símbolo Resistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6
Lista de Tabelas
7
Resumo
Esse material tem como objetivo introduzir os conceitos básicos do uso de portas de comuni-
cação de um computador, a programação necessária para criação dos softwares e o hardware
básico para acesso e controle das portas . Os exemplos utilizados são válidos para os sistemas
operacionais Linux e Windows, mas podem ser convertidos para outros sistemas.
Capítulo 1
Introdução
Este documento tem como objetivo fornecer uma introdução a programação para controle de
dispositivos externos pelo computador, utilizando linguagem c nos sistemas operacionais Linux
e Windows. São abordados métodos de programação para controle através da porta paralela,
serial e USB (emulando porta serial) bem como os circuitos básicos de interface discretos e
microcontrolados.
1
Capítulo 2
2
Figura 2.3: Porta USB
A porta paralela é um conector fêmea de 25 pinos (DB25) que fica situada atrás do gabinete,
originalmente utilizada para o controle de impressoras, seus pinos receberam os nomes relativos
a essa atividade.
3
1 STROBE
14 AUTOFEED
2 D0
15 ERROR
3 D1
16 INIT
4 D2
17 SELECT IN
5 D3
18 GND
6 D4
19 GND
7 D5
20 GND
8 D6
21 GND
9 D7
22 GND
10 AKNOWLEDGE
23 GND
11 BUSY
24 GND
12 PAPER END
25 GND
13 SELECT OUT
Os sinais elétricos da porta paralela depende do seu tipo e são mostrados na Tabela 2.3.
4
Tabela 2.3: Tipos de porta paralela
Normal UM82C11-C IEEE 1284 level II
Data output (>2.4V) 2.6 mA 2 mA 14 mA
Data line sink (<0.4V) 24 mA 24 mA 14 mA
Control output (>2.4 V) 0.5 mA* 1.5 mA ?
Signal lines (short circuit) 1 mA ? ?
Control line sink (<0.4V) 7 mA 7 mA 14 mA
A porta serial é um conector macho de 9 pinos (DB9) ou de 25 pinos, situada atrás do gabinete,
originalmente utilizada para dispositivos de comunicação externos (MODEMs), seus pinos re-
ceberam nomes relativos sua utilização. Os sinais da porta serial seguem o padrão RS232, sendo
o nível lógico 0 representado por uma tensão de +3 a +15Volts e o nível lógico 1 representado
por uma tensão de -3 a -15Volts.
1 DCD
6
DSR
2
RX
7
RTS
3
TX
8
CTS
4
DTR
9
RI
5
SG
Para utilizar a porta serial é necessário fazer sua configuração antes do uso, os parame-
tros de configuração são mostrados na tabela 2.4.
5
Tabela 2.4: Configuração porta Serial
Descrição Padrão para uso de microcontroladores
Velocidade 2400,4800,9600,19200 bauds
Número de Bits de dados 7 ou 8 bits 8 bits
Paridade Par, Ímpar ou Nenhuma Nenhuma
Número de stop bits 1 ou 2 1 bit
Controle de fluxo Hardware, Software ou Nenhum Nenhum
A porta usb é um conector fêmea de 4 pinos, situada atrás ou na frente do gabinete Os sinais
elétricos da porta USB não podem ser utilizados diretamente, sempre necessitando de circuitos
externos para isso.
1
VCC
2
D−
3
D+
4 GND
6
Capítulo 3
7
Vcc
Dispositivo
4N25
6
1K
D?
1 5
Entrada
2 4
RELAY
Dispositivo
1
4.7K
2
BC547
3
8
Capítulo 4
Porta Paralela
4.1 Hardware
9
Figura 4.2: Foto Circuito Porta Paralela
4.2 Programação
Programas par linux e windows com a porta no modo SPP B.1 B.2.
10
Capítulo 5
Porta Serial
5.1 Hardware
Para utilização da porta serial normalmente é necessário um circuito USART para se comunicar
com a USART interna do PC, esse circuito pode ser substituído por um registrador de desloca-
mento e algumas portas lógicas ou por um microcontrolador que já possua um circuito USART
internamente ou consiga emular por software uma USART.
A maioria dos circuitos não trabalha com os padrões RS232 descritos na Seção 2.2, sendo
necessário a conversão desse padrão para o padrão do circuito a ser construído, um dos padrões
mais utilizados é o TTL, já existindo soluções prontas com os circuitos MAX232 ou HIN232.
11
Figura 5.1: Conversor RS232/TTL
Um circuito simples para interface serial como o da Figura5.2 pode ser montado com um micro-
controlador PIC16F628A e um conversor MAX232, nesse circuito o PORTA do PIC é utilizado
como entrada e o PORTB como saída, dois pinos do PORTB são utilizados para a comunicação
serial RB1(RX) e RB2(TX)
12
10k
10k
10k
10k
10k
10k
10k
10k
+5V
R12
R10
R11
R13
R14
R7
R8
R9
S6
1 2
S6
1 2
S6
1 2
S5
1 2
+5V S4
1uF C3 1 2
C2
MAX232 U2
1
1 2 S3
1uF C1+ V+ 1 2
1 2
2
3 C1−
CONN1 1uF C4 S2
C1
4 6 2 1 U1 1 2
1
C2+ V−
1 1 18
1uF 5 RA2 RA1 S1
6 C2−
2 17 1 2
RA3 RA0
2
R3 330 LED3
DB9 Femea 1 2
PIC16F628A
R4 330 LED4
1 2
R5 330 LED5
1 2
R6 330 LED6
1 2
13
5.1.3 Transmissão por Infravermelho (IR)
14
5.1.4 Transmissão por Rádio Freqüência (RF)
U2
CONN2 Vcc +5V
1 IN OUT 3
1
GND
2
1
1
C2
2 7805 330R
C1
R1
330uF 100uF
2
2
1
2
LED1
1
C?
MAX232 U1
CONN1 C?
ANT1
1 C1+ V+ 2 1 2
2
1 1
3 C1− Jumper Debug serial +5V ANT
6 4
1
CONN3
TX 315Mhz
C?
3 VCC
2 4 C2+ V− 6
2 1 DATA
7 3 2
5 C2− C?
2
2 1 GND
3
14 Tx1 Out Tx1 In 11
8 1
4 13 12 U3
Rx1 In Rx1 Out
9
7 Tx2 Out Tx2 In 10
5
8 Rx2 In Rx2 Out 9
Transmissor serial PC
TITLE
FILE: REVISION:
Luis Claudio Gamboa Lopes
PAGE OF DRAWN BY:
15
U2
CONN2 Vcc +5V
1 IN OUT 3
1
GND
10K
10K
10K
10K
2
1
1
C2
2 7805 280R
C1
R1
R5
R4
R3
R2
1000uF 100uF CONN3
2
2
1
1
2
3
LED1
4
+5V
5
6
10K
10K
10K
10K
U1
1 18
R9
R8
R7
R6
RA2 RA1
CONN4 C3 33pF
2 17
RA3 RA0
1 3 16
RA4 RA7/OSC1
U3
2 4 15 4MHz
MCLR/RA5 RA6/OSC2
3 +5V C4 33pF
5 14
Vss Vdd
4 6 13
+5V RB0 RB7 C5 CONN1
5 7 12
RB1 RB6
6 100nF
8 11 1
RB2 RB5
9 10 2
RB3 RB4
ANT? 4
+5V
1 5
R10
R11
R12
R13
ANT +5V
4 6
TX 315Mhz
10K
10K
10K
10K
VCC 3
DATA 2
GND 1
U4
TITLE
FILE: REVISION:
16
U7
RX 315Mhz
Vcc
U4
DATA
DATA
GND
GND
GND
ANT
+5V
+5V
+5V
1 IN OUT 3 ANT1
8
1
GND
C2
1
1
2 7805
330uF
B1
C1
+5V
2
100uF
10,8V
2
C3
100nF
L293 U2
+5V +5V
U1 1 16
C4 33pF CHIP INHIBIT VSS
1 18 2 15
RA2 RA1 INPUT 1 INPUT 4
2 17 3 14
RA3 RA0 OUTPUT 1 OUTPUT 4
20MHz
U6
3 16 4 13
RA4 RA7/OSC1 GND GND
M2
4 15 5 12
MCLR/RA5 RA6/OSC2 +5V GND GND M1
5 14 C5 33pF 6 11
Vss Vdd OUTPUT 2 OUTPUT 3
6 13 7 10
RB0 RB7 INPUT 2 INPUT 3
7 12 8 9 +5V
RB1 RB6 Vcc VC CHIP INHIBIT 2
8 11 CONN2
RB2 RB5
9 10 1
1.5K
RB3 RB4
LD293DNE (diodo interno/600mA)
2
R1
2
ROBO FUTEBOL V1.0
1 Jumper debug serial
TITLE
2
LED1
CONN1
FILE: REVISION: Luis Claudio Gamboa Lopes
5.2 Programação
17
5.2.2 PC
Programas para Linux e Windows com porta no modo 9600 8N1 B.3 B.4.]
18
Capítulo 6
This project is simple and small component count USB data acquisition or USB DAQ.
The main core of USB device is PIC18F4550 .The firmware for PIC modified from Microchip
CDC library.
6.1 Hardware
Specifications
• 8 Digital output
• 8 Digital input
• 8 Analog output
19
Figura 6.1: PIC porta USB
6.2 Programação
I use Delphi 6 on PC side to communicate with PIC18F4550 source code availible. Código
20
Referências
Minicurso Comunicação Serial - RS232, Edmur Canzian - CNZ Engenharia e Informática Ltda
(http://www.professores.aedb.br/arlei/AEDB/Arquivos/rs232.pdf)
21
Apêndice A
A.1 Serial
LIST P=16F628A
INCLUDE <p16f628A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF
ERRORLEVEL -302
;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 B’00000111’
MOVWF CMCON ;configura RA0,RA1,RA2,RA3
BANKSEL TRISA
MOVLW B’11111111’
MOVWF TRISA
MOVLW B’00000010’
MOVWF TRISB ;PORTB ,RB1 IN
BANKSEL PORTB
; inicializa serial
MOVLW B’10010000’
MOVWF RCSTA
BANKSEL TXSTA
MOVLW B’00100100’
MOVWF TXSTA
MOVLW D’25’;25 = 9600-8N1
MOVWF SPBRG
BANKSEL RCSTA
; habilita interrupcoes
MOVLW B’11000000’;habilita GIE PEIE
MOVWF INTCON
BANKSEL PIE1
MOVLW B’00100000’;habilita RCIE
22
MOVWF PIE1
BANKSEL PIR1
CLRF PORTB
;loop infinito
MAIN: GOTO MAIN
END
23
Apêndice B
Códigos fontes PC
void main()
{
//lê dados
data = inb (BASEPORT+1);
};
/* endereço da porta */
#define BASE_ADDRESS 0x378
int main(void) {
24
short value;
short des;
unsigned char data;
HINSTANCE hLib;
INP32 Inp32;
OUT32 Out32;
//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;
}
//escreve dados
data=5;
Out32(BASE_ADDRESS, data);
//lê dados
data = Inp32(BASE_ADDRESS+1);
FreeLibrary(hLib);
system("pause");
return 1;
}
int
main()
{
int fd,c;
struct termios newtio;
//configuração
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE |CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR|ICRNL|IGNBRK;
newtio.c_oflag = 0;
25
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
//programa
c=’0’;
while (1) { /* loop for input */
// lê dado do teclado
c=getchar();
return 0;
}
int main()
{
HANDLE hCom;
char c;
DWORD nbytes;
//configuração
hCom = CreateFile(MODEMDEVICE,
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security
OPEN_EXISTING,
0, // no overlapped I/O
NULL); // null template
// 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; //
CommTimeouts.ReadIntervalTimeout = MAXDWORD;
26
CommTimeouts.ReadTotalTimeoutConstant = 0;
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.WriteTotalTimeoutConstant = 0;
CommTimeouts.WriteTotalTimeoutMultiplier = 0;
c=’0’;
while (1) { /* loop for input */
// lê dado do teclado
c=getchar();
return 0;
27
Apêndice C
Microcontrolador PIC16F628A
28
Tabela C.3: Special Microcontroller Features
Internal and external oscillator options
Precision Internal 4 MHz oscillator factory calibrated to +/-1%
Low Power Internal 37 kHz oscillator
External Oscillator support for crystals and resonators.
Power saving Sleep mode
Programmable weak pull-ups on PORTB
Multiplexed Master Clear/Input-pin
Watchdog Timer with independent oscillator for reliable operation
Low voltage programming
In-Circuit Serial Programming (via two pins)
Programmable code protection
Brown-out Reset
Power-on Reset
Power-up Timer and Oscillator Start-up Timer
Wide operating voltage range. (2.0 - 5.5V)
Industrial and extended temperature range
High Endurance Flash/EEPROM Cell
100,000 write Flash endurance
1,000,000 write EEPROM endurance
100 year data retention
29
Figura C.1: Pinagem
30
Figura C.3: Diagrama Interno do PIC16F628
As funções dos pinos e os tipos de sinais são descritos nas Figuras C.4 e C.5.
31
Figura C.4: PORTA
32
Figura C.5: PORTB
O mapa de memória é mostrado na Figura C.6 e os dois bancos mais utilizados são
mostrados nas Figuras C.7 e C.8;
33
Figura C.6: memoria
34
Figura C.7: Bank 0
35
Figura C.8: Bank 1
36
Figura C.9: Opcodes
37
Figura C.10: Configuração PORTA
38
Figura C.12: Configuração interrupções
39
Figura C.14: Configuração Recepção Serial
40
Apêndice D
Componentes
D.1.1 Resistor
Resistor é utilizado principalmente para limitar a corrente em outros componentes. Seu valor é
calculado com a utilização da Lei de Ohm I = VR .
Nos resitores comerciais seus valores são representados pelo código de cores descrito
na Tabela D.1.
41
Tabela D.1: Código de Cores
Cores 1o anel 2o anel 3o anel 4o anel
1o digito 2o digito Multiplicador Tolerância
Prata - - 0,01 10%
Ouro - - 0,1 5%
Preto 0 0 1 -
Marrom 01 01 10 1%
Vermelho 02 02 100 2%
Laranja 03 03 1 000 3%
Amarelo 04 04 10 000 4%
Verde 05 05 100 000 -
Azul 06 06 1 000 000 -
Violeta 07 07 10 000 000 -
Cinza 08 08 - -
Branco 09 09 - -
D.1.2 Interruptor
Interruptores são chaves mecânicas são utilizados para mudança de estado (ligado ou desligado
por exemplo), são dispositivos de entrada que permitem o usuário interagir com circuito. Nor-
malmente são necessários resistores de pull-up ou pull-down quando são utilizados junto com
os microcontroladores, neste caso ainda é necessário a aplicação de uma técnica de debouncig
por software(anti-repique).
42
Figura D.5: Símbolo Diodo
O LED (Light Emitting Diode) é um diodo que quando polarizado diretamente emite
luz, normalmente os LED de 5mm funcionam com uma corrente máxima de 50mA, sendo
necessário a utilização de um resistor em série para limitar a corrente.
43
D.1.4 Transistor Bipolar
O transistor serve para amplificar sinais elétricos. Os transistores do tipo bipolar são amplifica-
dores de corrente, uma corrente (I) que entra na base (B) e sai no emissor(E) faz aparecer uma
corrente que entra no coletor (C) e sai no emissor (E) de valor β vezes maior. No nosso projeto
vamos utilizar o transistor como interruptor, ou seja, o transitor conduzindo no máximo ou não
conduzindo nada (regiões de saturação e corte). Existem dois tipos de transitor bipolar, os PNP
e os NPN, utilizaremos o NPN.
D.1.5 Capacitor
O capacitor serve para armazenar cargas elétricas, no projeto ele é usado para filtrar ruído nos
sinais de alimentação. Analogamente ao uso de uma caixa de água quando falta pressão na água
que vem da rua, o capacitor fornece energia quando por algum motivo ela não vem direto da
fonte e quando a alimentação da fonte está normal ele se carrega.
44
Figura D.12: Foto Capacitor
45
Figura D.14: Foto Regulador de Tensão
D.1.7 Relé
O relé é um tipo de interruptor acionado eletricamente que permite o isolamento elétrico de
dois circuitos. O relé é formado por um eletroímã (uma bobina enrolada sobre um núcleo de
material ferromagnético) que quando acionado, através da atração eletromagnética, fecha os
contatos de um interruptor. Normalmente o interruptor de um relé tem duas posições, com isso
existem dois tipos, os NF(normalmente fechado) e NA (normalmente aberto). Um relé pode ter
vários interruptores (conhecidos como contatos) de ambos os tipos, normalmente eles suportam
correntes de ate dezenas de Ampéres e centenas de Volts. A bobina do relé é acionada por uma
tensão contínua que é especificada de acordo com o fabricante, bobinas de 5, 12 e 24 Volts são
as mais comuns.
46
Figura D.16: Foto Relé
47