Temos publicado nesta revista, sempre que possível, alguns circuitos utilizando microcontroladores. Em alguns casos, houve a necessidade da "interação" de um operador com o circuito, feita através de um teclado. Porém, existe uma maneira de interação que pode aumentar os recursos do próprio circuito. Estamos falando da comunicação de um microcontrolador com um PC. Neste artigo veremos como isso é possível.
Nota: este artigo é meramente histórico e foi publicado na revista Eletrônica Total 102 de 2004
MICROCONTROLADOR + PC
O leitor deve estar se perguntando: "Se um microcontrolador pode conter um programa para controlar um determinado processo, por que eu precisaria de um PC?".
A resposta para essa pergunta é bem simples: todo microcontrolador pode conter um programa, e este realmente pode controlar todo o processo, mas existem casos em que há a necessidade de uma interação maior com um usuário, ou mesmo com o contexto geral (automação) onde o processo está envolvido.
Porém o leitor poderia ainda afirmar: "Mas eu posso fazer essa interação através de um teclado e um display (LCD)". Sim, pode! No entanto, lembre-se que estamos tratando da inclusão do processo no contexto geral.
"Mas o que significa isso: inclusão do processo no contexto geral?!?"
Antes de prosseguirmos vamos tentar explicar o que é processo e o que é contexto. Chamaremos de processo um controle específico, seja no chão de fábrica, em residências ou prédios. O contexto é um conjunto de processos ligados em uma automação maior.
Por exemplo, digamos que um técnico ou engenheiro vá realizar a automação de uma casa. Estão envolvidos nessa automação os seguintes processos:
- Irrigação automática do jardim
- Controle da temperatura ambiente da casa
- Controle do aquecimento da água da casa e piscina
- Segurança com alarmes, cerca eletrificada, circuito fechado de TV e porteiro eletrônico - Telefones
- e outros.
Podemos dizer que o contexto principal é a "Automação da Residência" e os processos envolvidos foram os descritos acima. O leitor mais atento poderia também separar ainda mais os contextos em:
- Contexto de segurança, com os controles integrados do alarme, cerca eletrificada, circuito fechado de TV e porteiro eletrônico.
- Contexto de comodidades, com os controles da temperatura ambiente da casa, do aquecimento da água, telefones e porteiro eletrônico (este último pode ser envolvido dentro de vários conceitos).
Podemos ver, então, que o contexto geral integra vários processos da automação.
Agora pense se cada processo precisar de atualizações constantes corno:
- horários de rega
- horário para ligar desligar alarmes
- horário para ligar/desligar o aquecimento e/ou o controle de temperatura.
Todos esses equipamentos possuem muitas variáveis e de acordo com cada cliente e situação específica podem mudar. Um exemplo são os horários para ligar e desligar o aquecimento da água (caixas e outras). No inverno, o tempo necessário para aquecer a água é diferente do que no verão. Um outro exemplo está na rega do jardim que também muda de acordo com as estações do ano. Assim, o técnico deveria estar presente para alterar todas as variáveis, e de forma manual, utilizando os recursos de programação oferecidos por cada equipamento.
Agora, imagine se estes pudessem conectar-se a um PC e que através de um programa de gerência central cada processo pudesse ser reprogramado facilmente. E melhor ainda, que este PC pudesse ter tabelas com todas as variações e mudanças previstas para um ano!!! Um belíssimo trabalho diria seu cliente, extremamente satisfeito. E como sabemos que a "satisfação" de nossos clientes é a "base" de qualquer negócio, pode-se ver quão importante é aprender como realizar este tipo de interligação".
COMUNICAÇÃO RS-232
O padrão RS-232 é um dos mais difundidos no mundo da automação e controle. Hoje em dia, muitos equipamentos fazem uso do mesmo. O tipo de transmissão é serial, ou seja, transmitimos os bytes através de uma única via bit a bit e não "byte a byte" como na porta paralela, por exemplo.
Este método permite que utilizemos um único fio para a transmissão/ recepção ou dois fios, um para transmissão e outro para recepção, por exemplo. E devido aos níveis de tensão estabelecidos na norma e ao seu formato, a distância de transmissão (tamanho do cabo) pode chegar a 15 metros. Há notícias de técnicos que conseguiram comunicação com cabos com 30 metros de comprimento, porém cada caso é um caso e não podemos afirmar que isso poderia funcionar em qualquer situação e ambiente, sem um estudo prévio. Aconselhamos a todos usarem a distância segura de 15 metros.
Para trabalhar com a comunicação RS-232, precisamos conhecer um pouco sobre o que a norma determina a respeito das características "mecânicas" (formato dos conectores e distribuição dos pinos), "elétricas" (níveis de tensão presentes) e lógicas (como os dados são transmitidos e recebidos) da mesma.
CARACTERÍSTICAS MECÂNICAS
Na figura 1 o leitor pode ver como são os conectores para a RS-232 na maioria dos PCs, e na tabela 1 a distribuição dos pinos e suas funções. É muito importante dizer também que a norma separa equipamentos transmissores dos receptores (ou periféricos). Os transmissores geralmente são chamados de "Equipamentos de Dados" (DTE), e os periféricos de "Equipamentos de comunicação de dados" (DCE). Para os DTE temos os conectores no formato "macho" e para os equipamentos DCE os mesmos terão formato "fêmea". Um PC pode ser considerado DTE e um modero externo, por exemplo, DCE.
Obs: Existem muitas formas de conexão entre equipamentos DTE DCE, e a norma EIA RS-232C determina como as mesmas devem ser feitas. Não abordaremos este tema neste artigo, restringindo-nos à comunicação RS-232 entre um PC (DTE) e um microcontrolador (DCE) sem qualquer controle de fluxo (hardware ou software).
CARACTERÍSTICAS ELÉTRICAS
Os sinais elétricos na porta serial (RS-232) possuem níveis de tensão entre +15 VDC e -15 VDC.
Na figura 2, o leitor tem a representação de um sinal RS-232 na transmissão de um byte. Na RS-232 o "1" lógico tem nível de tensão entre -15 VDC à -3 VDC e o "0" lógico tem nível entre +3 VDC à +15 VDC. Se compararmos com a lógica TTL onde o “1” lógico tem nível de tensão +5 VDC e o "0" lógico tem nível de tensão dual a 0 VDC, podemos observar que é fácil confundirmos. Tenha atenção nisso.
CARACTERÍSTICAS LÓGICAS -VELOCIDADE, NÚMERO DE BITS, PARIDADE, START E STOP BITS
Toda comunicação assíncrona depende de alguns fatores, tais como: velocidade, número de bits, paridade e stop bits.
A velocidade de comunicação é medida em bps (bits por segundo). Ela também é fundamental para o sucesso na comunicação entre equipamentos. Ambos os equipamentos (transmissor e receptor) devem ser configurados para operar na mesma velocidade, sempre. Esta velocidade pode ser configurada de 300 bps a 115000 bps nos dias atuais, dependendo exclusivamente do equipamento.
O número de bits define quantos bits compõem o "byte" enviado. Nos dias de hoje, para a maioria dos equipamentos ele tem oito bits. Porém, é possível a comunicação de 5 a 8 bits.
A paridade é o modo mais antigo e simples de se verificar um erro durante a transmissão. Ela considera o número de bits em estado lógico igual a "1". Assim, a unidade transmissora "conta" o número de bits do byte transmitido em estado lógico "1" e envia um bit informando isso. Se o número de bits for par, o bit de paridade assume o estado lógico "1". Se ele for ímpar, seu estado lógico será "0".
Existem três formas de controle de paridade: par, ímpar e nenhuma. A diferença está em indicar se o número de bits no estado lógico "1" é sempre par, ímpar ou nenhum. Nesse caso, o bit de paridade assume estado lógico "1" de acordo com a opção selecionada. Se a escolha for nenhum, o bit de paridade é ignorado pelo equipamento receptor.
Obs: Apesar do bit de paridade poder informar um erro, não existe fator de correção. Neste caso seria necessário verificar a paridade via software e se detectado um erro, promover um novo envio do byte danificado.
O Stop bit é uma forma de informar o agente receptor sobre o final do byte. Ele pode assumir "1" ou "2" bits de parada.
O Start bit serve para informar sobre o início de uma transmissão.
Sendo assim, a configuração de uma porta RS-232 exige as seguintes informações:
- velocidade
- número de bits
- paridade
- número de stop bits.
A velocidade de comunicação, número de bits, paridade e número de stop bits deve ser a mesma nos equipamentos transmissor e receptor, caso contrário a comunicação não será estabelecida corretamente.
Obs: O leitor poderá encontrar mais informações sobre RS-232 e seus usos em outros artigos já publicados nesta Revista. É o caso do artigo "Usando o computador: a porta serial", que faz parte da série "Controle Remoto" do autor Newton C. Braga. Este artigo foi publicado na edição 099 de maio/junho de 2004.
A COMUNICAÇÃO SERIAL NOS MICROCONTROLADORES
A maioria dos microcontroladores disponíveis no mercado possui uma USART (UNIVERSAL SYNCHRO-NOUS ASYNCHRONOUS RECEIVER TRANSMITTER). Um exemplo é o microcontrolador PIC16F628A. Sua USART tem capacidade de comunicação RS-232 no modo assíncrono com velocidade de até 115000 bps (bits por segundo), dependendo exclusivamente do cristal utilizado no "clock" de operação do microcontrolador.
Externamente, esta USART se comunica com o mundo exterior através de dois pinos, o TX (RB2) e RX (RB1). Como o leitor pode ver, não existem outros pinos RS-232 (CTS, RTS, CD. etc.) e caso haja a necessidade de seu uso, os mesmos poderão ser implementados com os outros pinos de I O. presentes no microcontrolador. Um outro ponto importante sobre os pinos do PIC é que quando utilizamos a USART interna, os pinos RB1 e RB2 não podem mais ser usados como pinos de I/O comuns (digitais).
Na figura 3, o leitor tem o esquema elétrico para os testes com a comunicação serial RS-232 entre o microcontrolador PIC16F628A e um PC. No circuito, o leitor nota a presença de um segundo circuito integrado, o MAX232 (figura 4). Este componente permite adaptar os níveis de tensão da norma RS-232 para o padrão TTL, compatível com o microcontrolador PIC16F628A.
Devido à simplicidade do circuito sugerimos o uso de uma matriz de contatos para os testes, pois como dito o circuito é apenas para testes e estudos, não se tratando de um circuito aplicável.
O programa "PIC_RS232_F628. ASM" pode ser obtido gratuitamente no site da revista www.eletronica total.com.br na seção "downloads". Ele permite controlar a comunicação serial entre o microcontrolador e um PC. Para testar este programa será necessário o uso de um programa "terminal" qualquer no PC, como o "Hiper Terminal” presente no menu "Acessórios" do Windows. O "setup" de comunicação deste programa deve ser exatamente o mesmo estabelecido no programa do microcontrolador. Veja a figura 5. Utilize a porta COM que estiver livre em seu PC (não serve a porta empregada pelo MOUSE).
O LED D, pisca a cada 1 segundo apenas para indicar a operação dc circuito. A recepção é feita através de uma interrupção, assim nosso programa não precisa varrer constantemente a porta para receber um byte.
O circuito requer alimentação igual a 5 VDC. Após ligar o circuito e estando este conectado corretamente ao PC e o programa terminal aberto e corretamente configurado, o programa solicita que algo seja digitado e depois envia o dado recebido de volta. Parece bem simples, mas com este simples programa o leitor já poderá conhecer como configurar a USART do microcontrolador, além de como proceder para receber e transmitir um byte. Recomendamos o estudo deste programa para uma melhor compreensão do funcionamento do circuito. Todo o programa foi comentado para facilitar sua compreensão.
SUGESTÕES PARA ALTERAÇÕES
No início deste artigo discorremos sobe o controle e a comunicação de PC e um microcontrolador, visando inserir (automatizar) o processo de acordo com o contexto (interligando processos). Porém, nosso pequeno protótipo apenas transmite um caractere de "eco" do que foi recebido.
Na edição n°94 de setembro/ outubro de 2003, publicamos o artigo "Irrigador de Jardim Microcontrolado" do autor Márcio José Soares (este que vos escreve!). A ideia básica do projeto era o controle de três válvulas para irrigação de um jardim. Estas válvulas seriam abertas e fechadas através do controle de relés. Um quarto relé foi previsto no projeto para controle de uma sirene de aviso durante a rega (assim ninguém se molharia durante a rega).
Este circuito, além de permitir a configuração dos horários através de teclas, também permite que estes sejam configurados através da porta serial de um PC. Veja que isso pode ser feito através de um programa terminal ou mesmo através de um programa especificamente desenvolvido para tal.
Todo o circuito foi baseado no PIC16F870 e apesar deste ter um número maior de 1/Os e outros recursos diferentes do PIC16F628A, o uso de sua USART é exatamente o mesmo. Aliás, dentro da linha 16F da Microchip, o uso da USART é sempre o mesmo. Portanto, o leitor que aprender a dominar a USART da "pequena" 16F628A, poderá fazê-lo também com a ''grande" 16F877. Deve-se apenas tomar certos cuidados com a posição dos registradores nos bancos de memória e outros detalhes. Para isso é altamente recomendável a leitura dos "data books" de ambos os componentes.
Obs: Existem, conforme descrito, diferenças entre os diversos PICs da linha 16F e sendo assim, não estamos afirmando que um programa desenvolvido para um determinado tipo poderá funcionar em outro. Estamos apenas dizendo que a forma para configurar e utilizar as USARTs dos vários tipos da linha é sempre a mesma.
Assim, o programa desenvolvido para o Irrigador de Jardim, com PIC16F870, não rodará em um PIC16F628A e o programa desenvolvido para o PIC16F628 usado neste artigo, também não rodará no PIC16F870. Contudo, se o leitor observar as funções de transmissão e recepção, assim como o setup feito para ambas as USARTs, verá muita semelhança no uso dos registradores responsáveis pela configuração e uso da USART de cada microcontrolador.
O estudo do programa desenvolvido para o Irrigador, também poderá ajudar muito na compreensão de como utilizar um microcontrolador aliado a um PC para automatizar um determinado processo, incluindo este num "contexto" maior.
Os códigos-fontes citados neste artigo, para os microcontroladores PIC16F870 (projeto irrigador de jardim) e PIC16F628A (teste da USART) estão disponíveis gratuitamente no site da revista, www.eletronicatotal.com.br (site não existe mais) na seção "Downloads" das referidas edições.
CONCLUSÃO
O leitor aprendeu neste artigo conceitos importantes sobre a comunicação serial e sua real eficácia em qualquer tipo de automação, tanto industrial quanto residencial ou predial. Esperamos ter contribuído ainda mais para a formação da "biblioteca" de nossos leitores interessados no uso de microcontroladores. Até a próxima!