Autor: José Guilherme Ribeiro da Silva

Resumo – Neste estudo de caso, foi feita a integração entre diferentes módulos da empresa EXSTO TECNOLOGIA com a intenção de controlar uma interface industrial através de um microcontrolador. Foi utilizado o kit XM118 que possui um PIC18F4550, programado através da IDE do MPLABX e compilador XC8, como elemento de controle. Uma esteira industrial, XC243, foi controlada pelo XM118 através de um expansor de I/O. O CI MCP23016 foi escolhido para compor a interface de comunicação entre os kits industrial e eletrônico.

I. INTRODUÇÃO

Assim como em indústrias onde é necessário o controle e monitoramento de máquinas, motores, equipamentos, sensores e atuadores diversos (pistões, leds, encoders entre outros), para controlar linhas de produção e processos, é demonstrado aqui uma aplicação simples para explicar o funcionamento dos dispositivos utilizados nos estudos de caso. Neste exemplo foi feita uma aplicação do tipo introdutória entre o módulo de controle, interface industrial e esteira. Este programa é capaz de fazer as lâmpadas serem acionadas em sequência.

II. DESENVOLVIMENTO

Para essa aplicação, foram utilizados os kits XM118, XM001 e XM243. Logo abaixo, segue a imagem ilustrativa dos kits em questão, respectivamente. Estes são kits de circuitos eletrônicos controlados por microcontrolador, expansor de I/O e esteira industrial, respectivamente. A linguagem C foi escolhida para programar o PIC18F4550. Por se tratar de uma das IDE’s mais utilizadas e completas, o MPLAX foi escolhido como a interface de programação. Para compilar o código desenvolvido, foi utilizado o XC8. Visando o entendimento mais fácil desta aplicação e demais, foi elaborado um código com o propósito de fazer as lâmpadas da esteira piscarem de forma sequencial.

xm118-microcontrolador-22

Fig. 1 XM118

Sem título-1

Fig. 2 Módulo XM001

XC243-esteira-22

Fig. 3 XC243

 

A. Diagrama de Entradas e Saídas
Para facilitar e padronizar o esquemático de entradas e saídas deste exercício, foi elaborado o esquema de ligações de entradas e saídas de acordo com as tabelas 1 e 2, respectivamente.

PIC18-tab 1 e 2

B. Descrição
O Firmware, de modo geral, é composto por algumas bibliotecas que controlam o tempo e a interrupção. Além de prover o ajuste do I2C e do módulo XM001. Para facilitar o entendimento por parte de terceiros, todo o código foi comentado. Nesta aplicação, foi utilizada uma chave de seleção de tempos. Toda vez que a chave é levada para o estado
alto, está muda o valor de frequência de acionamento das saídas. Portanto, o código é bem simples, acionando ou desligando as lâmpadas. Os periféricos utilizados do módulo XC243 são utilizados para exemplificar as possíveis cargas de tensões diferentes do circuito de controle. Este módulo é melhor citado em outras notas de aplicação. Um fluxograma foi elaborado para o programa central e de interrupção. As imagens desses fluxogramas podem ser acompanhadas na sequência.

PIC18-3

Fig. 4 Código de Interrupção

 

PIC18-4

Fig.5 Código Principal

III. FIRMWARE

Consta nos arquivos baixados, todo o Firmware para a aplicação citada anteriormente. Nesse momento, se torna interessante o entendimento do funcionamento deste Firmware.

A. Arquivos de Extensão C
Nestes arquivos está contida toda a lógica de programação e funcionamento da aplicação. Nele, foram configurados os temporizadores, interrupções, comunicação serial, variáveis, registros, entre outros. Em uma forma mais organizada de programação, os códigos de funções distintas foram separados em arquivos distintos. Podemos citar os arquivos: i2cmain.c, interrupcao.c, mcp23016.c, tempo.c e main.c (arquivo principal). Excluindo o arquivo principal, os demais são chamados de bibliotecas. Levam estes nomes por conterem configurações necessárias para o
funcionamento correto do arquivo principal.
O arquivo i2cmain.c foi desenvolvida com o intuito de configurar a comunicação serial no padrão i2c. Nessa biblioteca, diversas características podem ser configuradas. Entre elas, vale destacar três funções: ConfigI2C, GravarByteI2C e LerI2C. Estas funções são responsáveis por inicializar o I2C de maneira adequada para nossas aplicações, gravar um byte no nosso módulo XM001 em sua posição de memória e podemos efetuar uma leitura em uma posição específica de memória, respectivamente.
A biblioteca de interrupção é responsável pela leitura das entradas que sofreram alguma mudança e retorno dos valores que foram alterados ou o próprio tratamento dessa leitura. Vale destacar o tipo de interrupção de alta ou baixa prioridade. Como o temporizador necessita de alta precisão, este tem alta prioridade em comparação com qualquer interrupção. Assim, se uma interrupção de tempo for chamada junto com uma interrupção de mudança de estado, está é tratada após a interrupção de tempo.
É necessária uma configuração correta do módulo XM001 assim como a necessidade de uma função de leitura de suas entradas ou escrita em suas saídas. O arquivo mcp23016 foi criado com o intuito de facilitar a utilização destes parâmetros. Tornando fácil a implementação de qualquer um destes recursos.
Como já citado, o tempo é uma variável muito importante para essa aplicação e as demais desenvolvidas. A biblioteca tempo foi elaborada com o intuito de configurar os temporizadores utilizados e a possibilidade de ligar ou desligar estes temporizadores.
Sempre que alguma destas funções for necessária, basta fazer a utilização desta biblioteca.
Nosso arquivo principal precisa de todas as bibliotecas citadas, para funcionar corretamente. Nele, teremos contido apenas as lógicas principais e algumas funções básicas e necessárias para o desenvolvimento da aplicação. Todos os arquivos já citados estão comentados de forma clara e sucinta e se encontram no arquivo fornecido.

B. Arquivos de extensão H
Também conhecidos como arquivos Header, são usualmente utilizados para estabelecer a comunicação entre diferentes arquivos de extensão C. O arquivo principal precisa conseguir executar os demais arquivos para estabelecer a configuração e utilização de todos os recursos necessários nas aplicações. Logo, todas as bibliotecas precisam de um arquivo de extensão H para se conectar ao arquivo principal.
Além desta característica importante, os arquivos Header são usados para a declaração de variáveis globais e definições de constantes que serão utilizadas em todo o firmware.

A. Interface Industrial
Os microcontroladores funcionam com alimentação em 3.3V ou 5V, em sua maioria. O PIC, nosso microcontrolador, funciona com 5V. Logo, não é possível utilizá-lo para acionar cargas que possuem tensões de alimentação com um valor superior do que a sua
própria. Para que este tipo implementação pudesse ser feita, foi desenvolvido um módulo capaz de acionar e efetuar a leitura de atuadores, sensores e demais dispositivos
com tensão mais elevada do que a do microcontrolador. Este módulo depende, exclusivamente, de um CI que é responsável pela expansão das entradas e saídas de qualquer microcontrolador que possua o protocolo de comunicação que o CI utiliza. Seu nome é MCP23016 e ele foi escolhido por possuir algumas características importantes.
Outros detalhes sobre o seu modo de operação do módulo XM001 podem ser encontradas através dos documentos de referência que acompanham este estudo de casos.

B. MCP23016
Não se difere de nenhum microcontrolador. Basicamente, este CI é um microcontrolador com funções específicas e limitadas. Podemos trabalhar com ele através do controle de registro e alteração de bits em sua memória. Para isso, é preciso informar ao MCP23016 quem deve ser alterado e seu novo valor através de uma comunicação serial. O padrão utilizado para se estabelecer tal comunicação foi o I2C, por circunstâncias do próprio microcontrolador. Existe uma lista de alterações que podem ser feitas nesse microcontrolador, todas elas podem ser acompanhadas no DATASHEET do mesmo. É possível se escolher qual dos periféricos será uma entrada ou uma saída. Para o nosso caso, o módulo XM001 já vem com o Hardware pronto para usar o PORT0 como entrada e o PORT1 como saída. Bastando informar o MCP23016 desta configuração, o mesmo passa a trabalhar da maneira que lhe foi indicada. Este circuito integrado precisa de um clock para funcionar. Em seu manual de operações, consta o valor de resistor e capacitor para que ele possa operar com uma velocidade de clock igual a 1MHz (mega hertz).

PIC18-5

Fig. 6 Diagrama em Blocos do MCP

 

C. Interrupção

Seria interessante que pudesse ser feito um monitoramento nas entradas do módulo para saber se aconteceu uma mudança em alguma dessas entradas ou não. Porém, seria inviável ficar o tempo todo efetuando a leitura das entradas. Para facilitar o trabalho, o expansor conta com uma interrupção. Sempre que acontecer alguma mudança nas entradas, este pino, que permanece o tempo todo em nível lógico alto, passa para o nível lógico baixo. Um modo mais simples para identificar qual entrada alterou seu nível lógico, um dos registros do expansor guarda em sua memória quem fez o pedido de interrupção. Quando a interrupção acontecer, basta fazer a leitura deste registro específico.

D. Comunicação Serial

Existem alguns meio para se estabelecer a comunicação entre diferentes dispositivos. Porém, para uma comunicação que utiliza fios, existem duas formas de se comunicar. Usando algum protocolo de comunicação paralelo ou serial. A comunicação paralela consiste em enviar ou receber dados através de vários fios. Nessa comunicação a velocidade de transferência de dados é maior se comparado a comunicação serial. Ao mesmo tempo, este meio de comunicação é mais caro do que a comunicação serial. A comunicação serial se caracteriza por transferir dados usando apenas dois fios. Um Tx (transmissor) e um Rx (receptor). Apesar de sua transferência ser mais lenta do que na comunicação paralela, a comunicação serial é a mais utilizada. Avanços de tecnologia e elaboração de protocolos eficientes fizeram com que este tipo de comunicação se tornasse cada vez mais veloz.
O expansor utilizado possui um dos protocolos de comunicação mais usados, o I2C. Este protocolo possui suas próprias características para efetuar uma comunicação. E estão citadas abaixo. Este protocolo, como já citado, possui dois fios de comunicação. Estes são chamados de SDA, responsável pelo envio de dados, e o SCL, responsável pelo sincronismo entre os dispositivos. O SCL envia um clock para que a comunicação seja feita de forma correta. No padrão I2C, ambos os pinos de comunicação são mantidos em nível lógico alto enquanto não há nenhuma comunicação ocorrendo.
O I2C é um protocolo que torna possível a troca de comunicação entre diferentes periféricos. Sendo que em uma comunicação temos o mestre e o escravo. O mestre é aquele que faz a requisição ou gravação de uma informação e o escravo apenas obedece. Neste protocolo, diversos mestres e escravos podem ser conectados nos mesmos terminais de comunicação. Para se estabelecer uma comunicação, o mestre envia parâmetros para avisar que deseja se comunicar. Inicialmente, ele envia o endereço, em 7 bits, do escravo que deseja conversar seguido de um bit de controle. Este bit de controle informa se o mestre deseja efetuar uma leitura ou escrita nesse escravo. Se o escravo conseguir estabelecer comunicação, ele envia um bit de reconhecimento, conhecido como ACK.
Para escrever, o mestre precisa informar qual o endereço de memória que deseja alterar, em um byte, seguido da gravação, também em um byte. A cada byte enviado, um ACK deve ser recebido pelo mestre.
No processo de leitura, o mestre consegue ler apenas o primeiro espaço de memória. Se esse for o desejado, basta enviar o bit de controle como leitura e aguardar a resposta. Mas, se desejar ler uma posição específica de memória é exigido um pouco mais de trabalho. O mestre deve iniciar uma comunicação de escrita e enviar o endereço de memória que deseja gravar. Quando o escravo responder positivamente, o mestre deve enviar uma nova requisição de comunicação informando o desejo de efetuar uma leitura. Assim, o escravo devolve os dados de leitura desejados. Um ponto de extrema relevância para o protocolo I2C é a utilização de bits de Start e Stop. Esses bits informam quando o mestre deseja iniciar ou parar uma comunicação. Para iniciar a comunicação, o pino SDA é levado ao nível lógico baixo seguido do pino SCL. No processo de parada, o pino SDA é levado de volta ao nível alto seguido do pino SCL.
Infelizmente, nada é perfeito. Este protocolo seria ideal apenas em curtas distâncias. Em longas distâncias ele se torna inviável por perdas no sinal de sincronismo. Ao se utilizar longas distâncias existe uma queda de tensão no cabo, que pode acabar com o sincronismo da comunicação do I2C. Para um melhor entendimento do protocolo, observe as figuras de escrita e leitura de um mestre sobre um escravo.

PIC18-6

Fig. 7 Escrita I2C

PIC18-7

Fig. 8 Leitura I2C

 

VI. PONTO IMPORTANTE

Os módulos XM001 e XM118 foram desenvolvidos para trabalharem juntos. Quando o kit XM001 é encaixado no kit XM118, os terminais de comunicação serial (SDA e SCL) e o terminal de interrupção já estão interligados com os respectivos terminais do PIC18F4550 e MCP23016. Para mais detalhes da utilização do XM001 com o módulo XM118, consulte o material disponível pelo fabricante referente ao XM001.

VII. CONSIDERAÇÕES FINAIS

É muito comum a necessidade de controlar cargas com tensões diferentes de operação se comparadas aos circuitos de controle. Assim como a necessidade de aumento do número de entradas e saída dos controladores. Para esses casos, nada melhor do que a utilização de um expansor capaz de controlar diferentes cargas através de seu circuito independente. Os módulos XM118 e XM001 estão prontos para este tipo de aplicação e efetuam suas tarefas de forma eficiente e precisa.

VIII. REFERÊNCIAS
[1] Manual e apostila do kit XM118.
[2] Manual e apostila do kit XM001.
[3] Datasheet do CI MCP23016.
[4]Philips Semiconductors (24 de maio de 2003). I2C
Protocol [Online]. Disponível:
http://www.nxp.com/documents/application_note/AN10216.pdf

Escrito por exstotecnologia

A Exsto Tecnologia atua no mercado educacional, desenvolvendo kits didáticos para o ensino técnico e tecnológico, nas áreas de eletrônica, elétrica, automação, telecomunicações, energias renováveis e outros.

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.