178
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE ENGENHARIA DE COMPUTAÇÃO KIT MODULAR DE DESENVOLVIMENTO BASEADO EM MICROCONTROLADOR PIC Área de Sistemas Embarcados por Bruno Rodrigues Silva Paulo Roberto Oliveira Valim, M.Eng. Orientador São José (SC), junho de 2011

Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

Embed Size (px)

DESCRIPTION

O trabalho buscou relacionar em hardware os princípios de modularidade de software para resolução de um problema complexo, onde foram confeccionados cinco módulos distintos, sendo: um destinado à utilização de microcontrolador PIC18F4520, um para controle dos periféricos RTC e memória EEPROM via barramento I²C, um para o controle de dois motores de passo unipolares de forma direta e indireta, um para controle de display LCD e mais um para utilização de teclado matricial. Para construção do kit foram realizadas as etapas previstas no processo de criação e inovação de produtos eletrônicos, como: pesquisa de mercado, levantamento de requisitos, modelagem, virtualização, prototipação e finalização, além de programação em linguagem C de softwares para teste dos módulos. Para projetos de freelancer, interesse em adquirir as placas industriais e/ou duvidas sobre o trabalho, entre em contato comigo por email ([email protected])

Citation preview

Page 1: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR

CURSO DE ENGENHARIA DE COMPUTAÇÃO

KIT MODULAR DE DESENVOLVIMENTO BASEADO EM MICROCONTROLADOR PIC

Área de Sistemas Embarcados

por

Bruno Rodrigues Silva

Paulo Roberto Oliveira Valim, M.Eng.

Orientador

São José (SC), junho de 2011

Page 2: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR

CURSO DE ENGENHARIA DE COMPUTAÇÃO

KIT MODULAR DE DESENVOLVIMENTO BASEADO EM MICROCONTROLADOR PIC

Área de Sistemas Embarcados

por

Bruno Rodrigues Silva Relatório apresentado à Banca Examinadora do Trabalho de Conclusão do Curso de Engenharia de Computação para análise e aprovação. Orientador: Paulo Roberto Oliveira Valim, M.Eng.

São José (SC), junho de 2011

Page 3: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

SUMÁRIO

LISTA DE ABREVIATURAS ................................................................ vi

LISTA DE FIGURAS ............................................................................. ix

LISTA DE TABELAS ............................................................................ xii

LISTA DE EQUAÇÕES ....................................................................... xiii

RESUMO ............................................................................................... xiv

ABSTRACT ............................................................................................ xv

1 INTRODUÇÃO.................................................................................... 1 1.1 KITS DE DESENVOLVIMENTO BASEADOS EM PIC ............................. 1 1.2 PROBLEMATIZAÇÃO ................................................................................... 2 1.2.1 Formulação do problema ............................................................................... 2 1.2.2 Solução proposta ............................................................................................ 3 1.3 JUSTIFICATIVA ............................................................................................. 4 1.3.1 Importância .................................................................................................... 4 1.4 OBJETIVOS ..................................................................................................... 5 1.4.1 Objetivo Geral ................................................................................................ 5 1.4.2 Objetivos Específicos...................................................................................... 5 1.5 METODOLOGIA ............................................................................................. 5 1.6 ESTRUTURA DO TRABALHO ..................................................................... 7

2 FUNDAMENTAÇÃO TEÓRICA ...................................................... 8 2.1 MICROCONTROLADORES .......................................................................... 8 2.1.1 Exemplo de fabricantes de microcontroladores de 8 bits........................... 10 2.2 MICROCHIP TECHNOLOGY..................................................................... 11 2.2.1 Famílias e grupos de microcontroladores PIC de 8 bits ............................. 11 2.2.2 Exemplos de microcontroladores PIC de 8 bits .......................................... 14 2.2.3 Encapsulamento ........................................................................................... 18 2.3 MICROCONTROLADOR PIC18F4520 ....................................................... 22 2.3.1 Estrutura externa ......................................................................................... 22 2.3.2 Estrutura interna ......................................................................................... 22 2.3.3 Recursos de hardware .................................................................................. 24 2.4 BARRAMENTO I2C ...................................................................................... 41 2.4.1 Características do barramento I2C ............................................................. 42 2.4.2 Protocolo I2C ................................................................................................ 44 2.5 COMPONENTES PERIFÉRICOS ............................................................... 50 2.5.1 Motor de passo ............................................................................................. 51 2.5.2 Teclado matricial .......................................................................................... 59 2.5.3 Módulo LCD ................................................................................................. 62 2.6 CONSIDERAÇÕES ....................................................................................... 68

Page 4: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

iv

3 DESENVOLVIMENTO .................................................................... 69 3.1 METODOLOGIA PARA DEFINIÇÃO DO MODELO .............................. 69 3.2 VISÃO GERAL .............................................................................................. 71 3.3 REQUISITOS ................................................................................................. 72 3.3.1 Requisitos Gerais do Kit Modular de Desenvolvimento ............................ 72 3.3.2 Requisitos do Módulo Controlador ............................................................. 72 3.3.3 Requisitos do Módulo I2C ............................................................................ 73 3.3.4 Requisitos do Módulo Motor de Passo ........................................................ 74 3.3.5 Requisitos do Módulo Display LCD ............................................................ 75 3.3.6 Requisitos do Módulo Teclado Matricial .................................................... 76 3.4 ARQUITETURA DE HARDWARE ............................................................. 76 3.5 IMPLEMENTAÇÃO VIRTUAL ................................................................... 79 3.5.1 Seleção dos componentes virtuais ................................................................ 79 3.5.2 Validação da Implementação Virtual ......................................................... 85 3.6 IMPLEMENTAÇÃO FÍSICA ....................................................................... 95 3.6.1 Diferenças entre os circuitos virtuais e físicos dos módulos ....................... 95 3.6.2 Prototipação do kit ....................................................................................... 96 3.6.3 Modularidade dos protótipos .................................................................... 100 3.6.4 Validação dos protótipos ............................................................................ 100 3.7 CONFECÇÃO DAS PLACAS FINAIS DOS MÓDULOS DO KIT .......... 103 3.7.1 Mudanças dos protótipos para as placas finais ........................................ 103 3.8 CUSTOS DO PROJETO .............................................................................. 104 3.8.1 Custo dos componentes .............................................................................. 105 3.8.2 Custo das placas ......................................................................................... 108 3.9 CONSIDERAÇÕES ..................................................................................... 109

4 CONCLUSÃO .................................................................................. 110 4.1 OPORTUNIDADES DE TRABALHOS FUTUROS .................................. 112

REFERÊNCIAS BIBLIOGRÁFICAS ................................................ 113

APÊNDICE A ....................................................................................... 118

APÊNDICE B ....................................................................................... 119

APÊNDICE C ....................................................................................... 120

APÊNDICE D ....................................................................................... 121

APÊNDICE E ....................................................................................... 124

APÊNDICE F ....................................................................................... 126

APÊNDICE G ....................................................................................... 128

APÊNDICE H ....................................................................................... 130

APÊNDICE I ........................................................................................ 132

APÊNDICE J ........................................................................................ 133

Page 5: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

v

APÊNDICE K ....................................................................................... 134

APÊNDICE L ....................................................................................... 135

APÊNDICE M ...................................................................................... 136

APÊNDICE N ....................................................................................... 137

APÊNDICE O ....................................................................................... 138

APÊNDICE P ....................................................................................... 139

APÊNDICE Q ....................................................................................... 140

APÊNDICE R ....................................................................................... 141

APÊNDICE S........................................................................................ 142

Page 6: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

LISTA DE ABREVIATURAS

A/D Analógico/Digital ACK Acknowledge ANSI-C American National Standards Institute padrão C ASCII American Standard Code for Information Interchange BOR Bourn-out Reset BSR Bank Select Register C Carry flag CAN Controller Area Network CCP Capture/Compare/PWM CCPRx CCPx Register CCPxCON CCPx Control Register CFGS Flash Program/Data EEPROM or Configuration Select bit CISC Complex Instruction Set Computer CLRWDT Clear Watchdog Timer CMOS Complementary Metal-Oxide-Semiconductor COP8 8-bit Control-Oriented Processor CPU Central Processing Unit CTMU Charge Time Measurement Unit E/S Entrada/Saída ECCP Enhanced Capture/Compare/PWM EEADR EEPROM Address Register EECON EEPROM Control Register EEDATA EEPROM Data Register EEPGD Flash Program or Data EEPROM Memory Select bit EEPROM Electrically-Erasable Programmable Read-Only Memory EUA Estados Unidos da América EUSART Enhanced USART FSR File Select Register GND Ground GPR General Purpose Register I2C Inter-Intergrated Circuit ICSP In-Circuit Serial Programming INTCON Interrupt Control Register IPR Peripheral Interrupt Priority Register KMD Kit Modular de Desenvolvimento LCD Liquid Crystal Display MCT Módulo Controlador MCU Microcontrolador MDL Módulo Display LCD MIC Módulo I²C MIPS Milhões de Instruções Por Segundo MMP Módulo Motor de Passo MSSP Master Synchronous Serial Port MTM Módulo Teclado Matricial NACK Not Acknowledge NC No Connect

Page 7: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

vii

PC Program Counter PCI Placa de Circuito Impresso PDIP Plastic Dual In-Line Packages PIC Peripherical Interface Controller PIER Peripheral Interrupt Enable Register PIR Peripheral Interrupt Request Register POR Power-on Reset PPR Passos Por Rotação PPS Passos por segundo PR2 Period Register 2 PWM Pulse-Width Modulation QFN Quad Flat, No Lead Package R/W Read/Write RAM Random Access Memory RC Resistor Capacitor RCON Reset Control Register RD Read Control bit REF Requisitos funcionais RISC Reduced Instruction Set Computer RNF Requisitos não funcionais ROM Read Only Memory RTC Real Time Clock SCK Serial Clock SCL Serial Clock SDA Serial Data SDI Serial Data In SDO Serial Data Out SFR Special Function Registers SOIC Small Outline Plastic Packages SPI Serial Peripheral Interface SS Slave Select SSPBUF MSSP Buffer Register SSPCON1 MSSP Control Register 1 SSPCON2 MSSP Control Register 2 SSPSR MSSP Shift Register SSPSTAT MSSP Status Register SSOP Shrink Small Outline Packages T0CON Timer 0 Control Register T1CON Timer 1 Control Register T2CON Timer 2 Control Register T3CON Timer 3 Control Register TCC Trabalho de Conclusão de Curso TMR0 Timer 0 Register TMR0H Timer 0 Register High TMR0L Timer 0 Register Low TMR1 Timer 1 Register TMR2 Timer 2 Register TMR3 Timer 3 Register UFES Universidade Federal do Espírito Santo

Page 8: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

viii

UFLA Universidade Federal de Lavras UFRGS Universidade Federal do Rio Grande do Sul UFSC Universidade Federal de Santa Catarina ULA Unidade Lógica Aritmética UNIVALI Universidade do Vale do Itajaí USART Universal Synchronous Asynchronous Receiver Transmitter USB Universal Serial Bus UTFPR Universidade Tecnológica Federal do Paraná W Working Register WDT Watchdog Timer WERN Flash Program/Data EEPROM Write Enable bit

Page 9: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

LISTA DE FIGURAS

Figura 1. Microcontrolador .............................................................................................................. 8 Figura 2. Arquitetura do microcontrolador: (a) von-Newmann; (b) Harvard ..................................... 9 Figura 3. Gráfico ilustrado da organização dos PICs em tamanho da palavra de instrução. ............. 12 Figura 4. Diagrama simplificado dos pinos do PIC16F54............................................................... 14 Figura 5. Diagrama simplificado dos pinos do PIC16F628A. ......................................................... 15 Figura 6. Diagrama simplificado dos pinos do PIC16F1826. .......................................................... 15 Figura 7. Diagrama simplificado dos pinos do PIC18F1320. .......................................................... 16 Figura 8. Vista em perspectiva do encapsulamento QFN em um chip com 28 pinos. ...................... 18 Figura 9. Vista em perspectiva do encapsulamento SOIC em um chip com 28 pinos. ..................... 19 Figura 10. Vista em perspectiva do encapsulamento SSOP em um chip com 28 pinos. .................. 20 Figura 11. Vista em perspectiva do encapsulamento PDIP em um chip com 28 pinos. ................... 20 Figura 12. Vista superior do encapsulamento PDIP em um chip com 28 pinos. .............................. 21 Figura 13. (a) Vista lateral e (b) vista frontal do encapsulamento PDIP em um chip com 28 pinos. 21 Figura 14. Diagrama dos pinos do PIC18F4520 em encapsulamento PDIP de 40 pinos.................. 22 Figura 15. Estrutura interna do microcontrolador PIC18F4520. ..................................................... 23 Figura 16. Oscilador externo por (a) circuito RC, (b) cristal/ressonador. ........................................ 24 Figura 17. Circuito de reset externo (a) POR e (b) BOR. ............................................................... 26 Figura 18. Mapa da memória de dados do PIC18F4520. ................................................................ 27 Figura 19. Leitura do dado do endereço 0x33 da EEPROM e escrita em W (Working Register). .... 28 Figura 20. Escrita do valor 5 no endereço 0x33 da EEPROM. ....................................................... 29 Figura 21. Estrutura do mapa da memória de programa do PIC18F4520. ....................................... 30 Figura 22. Exemplo de leitura e escrita no PORTA. ....................................................................... 32 Figura 23. Modo PWM em saída única. ......................................................................................... 39 Figura 24. Modo PWM em meia ponte para controle de circuito de (a) meia ponte ou (b) ponte

completa. ............................................................................................................................... 39 Figura 25. Modo PWM em ponte completa para controle de circuito de ponte completa. ............... 39 Figura 26. Modo SPI de comunicação serial síncrona. ................................................................... 40 Figura 27. Modo I2C de comunicação serial síncrona. .................................................................... 40 Figura 28. Sincronização entre mestre-escravo no modo SPI. ........................................................ 41 Figura 29. Comunicação mestre-escravo no barramento I2C. ......................................................... 42 Figura 30. Aspectos físicos do barramento I2C (a) sem e (b) com resistores em série (RS). ............. 43 Figura 31. Gráfico da relação dos resistores de pull-up e de proteção no circuito I2C. .................... 44 Figura 32. Condições do protocolo I2C para transferência de dados. .............................................. 45 Figura 33. Condições de (a) Start e (b) Stop do protocolo I2C. ....................................................... 46 Figura 34. Identificação do componente com (a) 7 bits e (b) 10 bits de endereço. ......................... 47 Figura 35. Validação de um bit em nível lógico (a) alto e (b) baixo no protocolo I2C. .................... 48 Figura 36. Transferência completa no protocolo I2C. ..................................................................... 48 Figura 37. Sincronização do relógio entre dois mestres concorrentes. ............................................ 49 Figura 38. Arbitragem entre dois mestres concorrentes. ................................................................. 50 Figura 39. Gráfico relacionando entre torque e velocidade em PPS (Passos por segundo). ............. 52 Figura 40. Ilustração dos terminais dos enrolamentos de um motor unipolar. ................................. 52 Figura 41. Ilustração dos terminais dos enrolamentos de um motor bipolar. ................................... 53 Figura 42. Circuito para o controle de motor de passo unipolar. ..................................................... 54 Figura 43. Circuito para o controle de motor de passo bipolar. ....................................................... 54 Figura 44. Sinal digital controlando a corrente aplicada em uma bobina do motor de passo. .......... 57 Figura 45. Chave de acionamento momentâneo com identificação do bounce. ............................... 60

Page 10: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

x

Figura 46. Matriz m x n de interconexão de chaves momentâneas. ................................................. 61 Figura 47. Representação dos módulos LCD (a) gráficos e (b) alfanuméricos. ............................... 63 Figura 48. LCD Hitachi com drive HD44780................................................................................. 64 Figura 49. Conexões dos pinos do driver do LCD com um microcontrolador. ................................ 64 Figura 50. Visão geral do projeto. .................................................................................................. 71 Figura 51. Arquitetura do Kit Modular de Desenvolvimento. ......................................................... 77 Figura 52. Circuito de simulação do Módulo Controlador. ............................................................. 80 Figura 53. Circuito de simulação do Módulo I²C. .......................................................................... 81 Figura 54. Circuito de simulação do Módulo Motor de Passo......................................................... 83 Figura 55. Circuito de simulação do Módulo Display LCD. ........................................................... 84 Figura 56. Circuito de simulação do Módulo Teclado Matricial. .................................................... 85 Figura 57. Janela do Hyper Terminal na validação do Experimento B. ........................................... 86 Figura 58. Janela do ANALISADOR I2C do Experimento C. ........................................................ 88 Figura 59. Janela do ANALISADOR I2C do Experimento D. ........................................................ 89 Figura 60. Janela do RTC com a data gravada no Experimento D. ................................................. 89 Figura 61. Gráfico do acionamento do MOTOR 1 em sentido horário no Experimento E. .............. 90 Figura 62. Gráfico do acionamento do MOTOR 1 em sentido anti-horário no Experimento E. ....... 91 Figura 63. Chaveamento dos sinais PWM no Experimento F. ........................................................ 92 Figura 64. LCD com contagem de 0 até 100 no Experimento G. .................................................... 93 Figura 65. Identificação da chave pressionada no Experimento H. ................................................. 94 Figura 66. Imagem em 3D do protótipo do Módulo Controlador. ................................................... 97 Figura 67. Imagem em 3D do protótipo do Módulo I²C. ................................................................ 98 Figura 68. Imagem em 3D do protótipo do Módulo Motor de Passo. ............................................. 98 Figura 69. Imagem em 3D do protótipo do Módulo Display LCD. ................................................. 99 Figura 70. Imagem em 3D do protótipo do Módulo Teclado Matricial. .......................................... 99 Figura 71. Resultado da validação 9 com os protótipos físicos. .................................................... 102 Figura 72. Resultado da validação 10 com os protótipos físicos. .................................................. 103 Figura 73. Código fonte do Experimento A.................................................................................. 118 Figura 74. Código fonte do Experimento B. ................................................................................. 119 Figura 75. Código fonte do Experimento C. ................................................................................. 120 Figura 76. Código fonte do Experimento D.................................................................................. 121 Figura 77. Código fonte do Experimento E. ................................................................................. 124 Figura 78. Código fonte do Experimento F. ................................................................................. 126 Figura 79. Código fonte do Experimento G.................................................................................. 128 Figura 80. Código fonte do Experimento H.................................................................................. 130 Figura 81. Circuito esquemático do Módulo Controlador. ............................................................ 132 Figura 82. Circuito esquemático do Módulo I²C. ......................................................................... 133 Figura 83. Circuito esquemático do Módulo Motor de Passo. ...................................................... 134 Figura 84. Circuito esquemático do Módulo Display LCD. .......................................................... 135 Figura 85. Circuito esquemático do Módulo Teclado Matricial. ................................................... 136 Figura 86. Footprint da placa do Módulo Controlador. ................................................................ 137 Figura 87. Layer da placa do Módulo Controlador. ...................................................................... 137 Figura 88. Footprint da placa do Módulo I²C. .............................................................................. 138 Figura 89. Layer da placa do Módulo I²C..................................................................................... 138 Figura 90. Footprint da placa do Módulo Motor de Passo. ........................................................... 139 Figura 91. Layer da placa do Módulo Motor de Passo. ................................................................. 139 Figura 92. Footprint da placa do Módulo Display LCD. .............................................................. 140 Figura 93. Layer da placa do Módulo Display LCD. .................................................................... 140 Figura 94. Footprint da placa do Módulo Teclado Matricial. ....................................................... 141

Page 11: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

xi

Figura 95. Layer da placa do Módulo Teclado Matricial. ............................................................. 141 Figura 96. Footprint da placa do Módulo Controlador na versão final. ......................................... 142 Figura 97. Footprint da placa do Módulo I²C na versão final. ...................................................... 142 Figura 98. Footprint da placa do Módulo Motor de Passo na versão final. ................................... 143 Figura 99. Footprint da placa do Módulo Display LCD na versão final. ....................................... 143 Figura 100. Footprint da placa do Módulo Teclado Matricial na versão final. .............................. 144

Page 12: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

LISTA DE TABELAS

Tabela 1. Exemplos de kits de desenvolvimento baseados no PIC16F877A ..................................... 2 Tabela 2. Características dos grupos de microcontroladores PIC .................................................... 13 Tabela 3. Descrição das funcionalidades dos pinos compatíveis entre os microcontroladores PIC

exemplificados ....................................................................................................................... 17 Tabela 4. Definições do protocolo I2C ........................................................................................... 45 Tabela 5. Sequência de acionamento do motor de passo unipolar para passo completo .................. 55 Tabela 6. Sequência de acionamento do motor de passo unipolar para meio passo ......................... 56 Tabela 7. Proporção de ocupação do ciclo ativo de um sinal para 32 micro-passo por passo .......... 58 Tabela 8. Exemplo de varredura em uma matriz de ordem quatro, onde c23 foi pressionado. .......... 62 Tabela 9. Descrição das funções dos pinos do LCD ....................................................................... 65 Tabela 10. Instruções de comando mais comuns do LCD 2x16 ...................................................... 66 Tabela 11. Código de identificação do tipo de operação do LCD para inicialização ....................... 67 Tabela 12. Relação dos pinos do PIC18F4520 com os módulos do kit ........................................... 77 Tabela 13. Relação de as imagens da PCI com os módulos do kit .................................................. 96 Tabela 14. Validação dos experimentos realizados nas combinações dos módulos ....................... 100 Tabela 15. Mudanças dos protótipos para as placas finais dos módulos ........................................ 104 Tabela 16. Custo de compra dos componentes do protótipo do Módulo Controlador .................... 105 Tabela 17. Custo de compra dos componentes do protótipo do Módulo I²C ................................. 106 Tabela 18. Custo de compra dos componentes do protótipo do Módulo Motor de Passo .............. 106 Tabela 19. Custo de compra dos componentes do protótipo do Módulo Display LCD .................. 107 Tabela 20. Custo de compra dos componentes do protótipo do Módulo Teclado Matricial ........... 107 Tabela 21. Custo de compra dos materiais para produção dos protótipos ..................................... 108 Tabela 22. Descrição dos pinos do PIC18F4520 .......................................................................... 146 Tabela 23. Instruções de operações orientadas a byte ................................................................... 150 Tabela 24. Instruções de operações orientadas a bit ..................................................................... 151 Tabela 25. Instruções de operações literais .................................................................................. 151 Tabela 26. Instruções de operações de controle ............................................................................ 151

Page 13: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

LISTA DE EQUAÇÕES

Equação 1 ...................................................................................................................................... 37 Equação 2 ...................................................................................................................................... 37 Equação 3 ...................................................................................................................................... 57 Equação 4 ...................................................................................................................................... 57 Equação 5 ...................................................................................................................................... 57 Equação 6 ...................................................................................................................................... 58

Page 14: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

RESUMO

SILVA, Bruno Rodrigues. Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC. São José, 2011. 178 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de Computação) – Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, São José, 2011. A prototipação de sistemas embarcados microcontrolados, tanto profissionais quanto acadêmicos, normalmente, utilizam um kit de desenvolvimento voltado ao uso do microcontrolador de um fabricante específico. Isso faz com que o kit não possa ser reutilizado em outros projetos que visam à utilização dos mesmos recursos periféricos, contidos na placa de circuito impresso do kit, com microcontrolador de outro fabricante qualquer. Essa característica encontrada em kits tradicionais acarreta uma limitação da flexibilidade do uso do kit, além de um aumento no custo de um determinado projeto pela compra de outro kit com os mesmos recursos para o microcontrolador do fabricante desejado. Para evitar esses problemas, este trabalho procurou relacionar em hardware os princípios de modularidade para resolução de um problema complexo. Assim, o objetivo foi conceber um kit modular de desenvolvimento que possibilite ao usuário combinar os módulos de acordo com as suas necessidades, de modo que seus recursos sejam reutilizados em diferentes projetos, independentemente do microcontrolador. Para este kit foram confeccionados cinco módulos distintos, sendo: um módulo destinado a utilização de microcontrolador PIC de 8 bits, um para utilização de componentes periféricos compatíveis com o barramento I2C, um para o controle de motores de passo unipolares, um para a utilização de display LCD alfanumérico e mais um para utilização de teclado matricial de ordem 4. Neste trabalho foram realizadas as etapas correspondentes ao levantamento de informações, modelagem, virtualização e prototipação do kit modular de desenvolvimento, além de atividades práticas para os testes de validação de cada módulo. Palavras-chave: Kit. Desenvolvimento. Modular. Microcontrolador. PIC.

Page 15: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

ABSTRACT

The prototyping of embedded system, both professionals and academics, normally use a development kit directed to use microcontroller of a specific manufacturer. This makes the kit can not be reused in other projects that aim the utilization the same peripheral resources, contained in the printed circuit board of the kit, with microcontroller of any other manufacturer. These feature found in traditionals kits entails in a limitation of the flexibility of the use of the kit, beyond an increase in the cost of a project by buying another kit with the same resources for the microcontroller of the manufacturer desired. To avoid these problems, this work searched to relate, in hardware, the principles of modularity for solving of a complex problem. So, the objective was conceive a modulate development kit that allows the user combine the modules accordance with his needs, so that its resources be reused in different projects, independently of the microcontroller. For this development kit will be made five distinct modules, being one module for the use of 8-bit PIC microcontroller, one for the use of peripherals components compatible with the I2C bus, one for control of stepper motors, one for the use of LCD display and one for use of a matrix keyboard. At this work were realized the corresponding steps at the information survey, modeling, virtualization and prototyping of the modular development kit, beyond as practical activities for the validation tests for each module. Keywords: Kit. Development. Modulate. Microcontroller. PIC.

Page 16: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

1 INTRODUÇÃO

Normalmente, as instituições de ensino do Brasil, que oferecem cursos de nível técnico,

tecnólogo e engenharia, reservam, em suas disciplinas, horas/aula dedicadas ao ensino prático dos

assuntos abordados, de modo teórico, em sala de aula. Essa prática pedagógica é fundamental para a

absorção do conteúdo por parte do estudante (FRAGA, 2008).

O curso de Engenharia de Computação apresenta, em sua matriz curricular, disciplinas com

ementas que envolvem aplicações práticas em laboratórios, equipados com recursos que, na maioria

das vezes, vão além de computadores e internet. Sendo assim, algumas universidades como UFRGS

(Universidade Federal do Rio Grande do Sul), UFES (Universidade Federal do Espírito Santo) e

UNIVALI (Universidade do Vale do Itajaí), já abordam microcontroladores/microprocessadores no

conteúdo programático de algumas disciplinas, onde utilizam kits de desenvolvimento na

implementação das atividades práticas realizadas em laboratórios.

À medida que são avaliados por suas implementações práticas, os alunos demonstram

interesse em realizar suas atividades fora do horário de aula, podendo assim melhorar seus trabalhos

(FRAGA, 2008). Infelizmente, os laboratórios não podem ficar abertos a todo o momento para o

estudante, que por sua vez, em alguns casos, não dispõe do tempo em que os laboratórios estão

disponíveis. Para esses casos, supõe-se que o aluno deveria comprar um kit por conta própria, e

assim, praticar os conteúdos da matéria em horário extra disciplinar. Algumas empresas que

comercializam esses kits e materiais didáticos visam, em sua maioria, apresentar produtos com uma

gama de possibilidades de aplicações elevada. Assim, seus materiais podem abranger diversas

funcionalidades e, consequentemente, ampliar o leque de clientes em potencial.

1.1 KITS DE DESENVOLVIMENTO BASEADOS EM PIC

Os kits podem se diferenciar muito de um para o outro, dependendo do foco de sua

utilização e dos recursos contidos. Entre os kits de desenvolvimento baseados em microcontrolador

PIC (Peripherical Interface Controller), destacam-se os fabricantes: LabTools, Microgenios, Cerne-

Tec e AcePIC, os quais disponibilizam seus kits através de sites de comércio eletrônico para todo o

Brasil. Na Tabela 1, são apresentados alguns exemplos de kits de desenvolvimento que são

vendidos com o microcontrolador PIC16F877A, no qual apresentam recursos comuns entre eles,

tais como: display LCD (Liquid Crystal Display), display de 7 segmentos, teclas, leds e etc.

Page 17: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

2

Tabela 1. Exemplos de kits de desenvolvimento baseados no PIC16F877A

Fabricante Nome Preço à vista Ilustração

LabTools McLab 2 - 16F R$ 556,60

Microgenios Kit PICgenios PIC16F877A R$ 580,00

Cerne-Tec PICLAB16F877A R$ 399,90

AcePIC ACEPIC 40 v2.0 (PIC16F877A) R$ 275,90

Fonte: Adaptado de AcePIC (2010), Cerne-Tec (2010), LabTools (2010) e Microgenios (2010).

Todos os kits citados são confeccionados em uma única placa de circuito impresso, onde

possuem várias possibilidades de operação a serem trabalhadas com o microcontrolador. Porém,

essa abordagem de fabricação de kit, traz consigo desvantagens importantes quanto à prototipação

de projetos e, até mesmo, quanto a sua utilização didática.

1.2 PROBLEMATIZAÇÃO

1.2.1 Formulação do problema

Do ponto de vista de projeto, o prejuízo encontra-se na reutilização. Um kit que possui os

recursos necessários para uma prototipação, com exceção da abordagem do microcontrolador, não

serve para o projeto. Um determinado kit de desenvolvimento, construído em uma única placa de

circuito impresso, estará limitado a um determinado fabricante. Assim, o desenvolvedor necessitará

de artifícios técnicos para resolver esta questão, ou até mesmo comprar outro kit voltado ao uso do

microcontrolador do fabricante desejado.

Esse problema também é verdade quando o microcontrolador é compatível, mas não

apresenta um determinado recurso considerado fundamental para o desenvolvedor. Nesse caso, os

Page 18: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

3

fabricantes dos kits procuram amenizar este problema introduzindo um conector de expansão,

derivado das portas de entrada/saída do microcontrolador, no qual pode-se conectar uma outra placa

com a funcionalidade desejada.

Para ambas as situações possíveis de se encontrar em um determinado projeto, torna-se

evidente o aumento no custo de desenvolvimento.

Do ponto de vista didático, o valor agregado em kits “super completos”, com recursos que o

estudante desconhece ou não utilizará, torna o investimento inicial muito elevado para o aluno. Isso

pode acarretar em uma desmotivação na compra desse material didático e, até mesmo, na matéria

lecionada. Assim, geralmente, o único kit no qual o estudante pode testar suas aplicações na prática

é o do próprio laboratório. Nesses moldes, a disciplina tem de ser conduzida de tal forma que vários

alunos tenham que dividir tempos de utilização do kit, dificultando o estudante a realizar uma

determinada tarefa prática, acarretando em um possível mau aproveitamento de horas/aula prática

da disciplina, por parte do estudante.

1.2.2 Solução proposta

Para suprir as carências apresentadas em relação aos kits de desenvolvimento tradicionais,

este trabalho propôs como solução construir um kit de desenvolvimento modular, a qual foi baseada

em microcontrolador PIC. Com isso, busca-se oferecer um produto educacional de forma a facilitar

o acesso por parte dos interessados, possibilitando a inclusão gradual de funcionalidades ao kit.

Além disso, flexibilizar a reutilização de recursos de entrada e saída de dados, para prototipação de

sistemas embarcados, respeitando a conectividade entre os módulos.

O trabalho busca aplicar uma das principais metodologias de programação utilizada em

construção de software, a qual consiste em dividir um determinado problema em partes menores

para que facilite sua resolução. Em relação à esta abordagem, Boratti (2004, p. 95) cita que,

Em determinadas situações, a solução de problemas passa pela solução de problemas menores (subproblemas) os quais não se constituem em novos métodos. Nesses casos, pode-se fazer com que a implementação do método seja dividida em módulos, onde cada módulo resolverá um subproblema.

Esse conceito de software foi aplicado à solução proposta no desenvolvimento do hardware,

de modo que suas funcionalidades estejam em placas para serem combinadas e/ou utilizadas

separadamente. Um kit construído desta forma possibilita montar projetos de pequeno, médio e

grande porte, diferenciados apenas pelo número de módulos utilizados.

Page 19: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

4

Foram considerados módulos periféricos, os módulos construídos para atuarem

passivamente em um sistema embarcado, ou seja, eles receberão ação direta do usuário e/ou do

microcontrolador. Por sua vez, o módulo contendo o microcontrolador foi considerado módulo

principal. Em uma solução semelhante, Melo e Zapelini (2003, p. 8) utilizaram em um de seus

módulos principais o microcontrolador AT89S8252 (Atmel), onde concluíram em seu artigo que,

Ao permitir uma ampla variedade de experimentos didáticos, em diferentes níveis de complexidade, e a construção rápida de protótipos, o equipamento proposto neste artigo demonstra-se uma importante ferramenta de apoio ao processo ensino/aprendizagem em cursos de Engenharia, Técnicos ou de Tecnologia.

Com a solução proposta, esse trabalho pretende atingir resultados semelhantes aos de Melo e

Zapelini, porém o microcontrolador que foi aplicado ao módulo principal foi o PIC, da Microchip.

Diferente do 8051 (Intel) e o AVR (Atmel), o PIC não é abordado nas disciplinas do curso,

tornando a realização do trabalho uma oportunidade de aprendizado desse que é um dos

microcontroladores mais populares do mercado. Além disso, possui ampla documentação,

ferramentas de desenvolvimento disponíveis, abrangência de aplicações que podem ser

desenvolvidas.

1.3 JUSTIFICATIVA

A execução deste projeto também se justifica em nível de Trabalho de Conclusão de Curso

(TCC) para o Curso de Engenharia da Computação, uma vez que trata do desenvolvimento de um

sistema embarcado que faz uso de várias tecnologias, conceitos e teorias relevantes à essa área,

como: (i) construção de protótipo físico com componentes eletrônicos; (ii) programação em

linguagem C para microcontroladores PIC; (iii) construção de sistemas embarcados com diferentes

periféricos; e (iv) elaboração e simulação de circuitos eletrônicos em software.

1.3.1 Importância

Esse projeto de TCC não busca substituir os kits de desenvolvimentos comerciais, mas

desenvolver uma solução que possibilite montar um kit de acordo com as necessidades do

projetista, podendo ser, possivelmente, de custo mais acessível para alunos, professores e/ou

interessados que desejam utilizar kits de forma particular, em seus projetos.

Não fazem parte do escopo deste trabalho o projeto da fonte de alimentação, no qual foi

utilizada uma fonte criada em outros projetos, e a implementação de roteiros e/ou tutoriais de

experiências com o kit, apenas os programas que validem a funcionalidade dos módulos.

Page 20: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

5

Limitações podem ocorrer na implementação do módulo principal do kit, tornando-o restrito

a utilização do microcontrolador escolhido para o projeto. Porém, como mencionado anteriormente,

o projetista pode criar seu modulo principal específico apenas respeitando a conectividade com os

outros módulos do kit.

1.4 OBJETIVOS

1.4.1 Objetivo Geral

O objetivo geral deste trabalho é construir um kit modular de desenvolvimento baseado no

microcontrolador PIC de 8 bits para utilização em experimentos diversos relacionados à área de

sistemas embarcados, em cursos de nível técnico, tecnólogo e engenharia.

1.4.2 Objetivos Específicos

Os objetivos específicos deste trabalho são:

Definir os módulos periféricos que compõem o kit;

Escolher a forma de conexão entre os módulos do kit;

Desenvolver os módulos do kit;

Validar a funcionalidade dos módulos do kit; e

Documentar o trabalho.

1.5 METODOLOGIA

Foram considerados cinco etapas a fim de executar este trabalho, sendo elas: estudo, projeto,

desenvolvimento, validação e documentação. As etapas de estudo e de projeto foram efetuadas no

TCC (Trabalho de Conclusão de Curso) I, enquanto que as etapas de desenvolvimento, validação e

documentação foram efetuadas no TCC II.

Na etapa de estudo, foi realizado um levantamento bibliográfico com o objetivo de

identificar referências que permitam fundamentar os conceitos necessários ao desenvolvimento

deste trabalho. Este levantamento bibliográfico foi baseado em livros e artigos. As referências

foram obtidas através de compras realizadas pela internet em sites de livrarias e editoras, por

locação nas bibliotecas da UNIVALI e da UFSC (Universidade Federal de Santa Catarina) e em

Page 21: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

6

publicações disponibilizadas na internet em sites de fabricantes de microcontroladores e de revistas

eletrônicas.

Na etapa de projeto foi realizado um levantamento dos módulos que foram implementados

no trabalho, além do tipo de conexão utilizado entre eles. No levantamento dos módulos, foram

analisados quais os componentes principais que seriam utilizados em cada módulo. No

levantamento do tipo de conexão entre os módulos, foram analisados os requisitos de conexão de

cada módulo periférico com o módulo principal, a fim de determinar um tipo de conexão padrão

entre os módulos. A análise foi baseada na revisão bibliográfica realizada na etapa de estudo.

Na etapa de desenvolvimento foram implementados os módulos do kit em duas plataformas

distintas, plataforma virtual e física. Na implementação virtual, os circuitos necessários para

funcionamento virtual dos módulos foram desenvolvidos no software de simulação de circuitos

eletrônicos Proteus, abstraindo alguns componentes discretos no sistema, utilizando em seu lugar

componentes completos adequados para a aplicação pertencente a sua biblioteca. Na implementação

física, foram adicionados ao circuito dos módulos os componentes discretos abstraídos na

implementação virtual, onde foram montados os esquemas e o layout das placas de circuito

impresso de cada protótipo dos módulos no software de confecção de PCI (Placa de Circuito

Impresso) Eagle.

Na etapa de validação foram desenvolvidos alguns experimentos em linguagem C no

compilador MikroC PRO for PIC, para que fossem compilados e gravados no microcontrolador PIC

a fim de testar os circuitos desenvolvidos. Foram utilizados os mesmos softwares para validação

tanto dos circuitos virtuais quanto dos circuitos físicos, tendo como objetivo o mesmo

comportamento do sistema em ambas as plataforma.

A etapa de documentação foi realizada ao longo de todo trabalho, procurando-se registrar a

execução das etapas descritas anteriormente para elaboração do produto proposto neste TCC. As

informações levantadas para a fundamentação teórica estão registradas no Capítulo 2, enquanto que

as informações relativas ao desenvolvimento do projeto estão no Capítulo 3.

Page 22: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

7

1.6 ESTRUTURA DO TRABALHO

Este documento está estruturado em quatro capítulos. O Capítulo 1, Introdução, apresentou

uma visão geral do trabalho. No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão

bibliográfica sobre: Microcontroladores, os microcontroladores de 8 bits fabricados pela Microchip

Technology, assim como uma análise a respeito da compatibilidade entre os eles. Nesse capítulo,

também é feita uma descrição dos recursos do microcontrolador PIC18F4520, do Barramento I2C

(Inter-Intergrated Circuit) e dos Componentes periféricos, relevantes para o trabalho. O Capítulo 3

apresenta o desenvolvimento dos módulos que foram desenvolvidos, incluindo o a metodologia

usada para a elaboração da visão geral projeto, seus requisitos e a arquitetura de hardware utilizada

para o kit modular de desenvolvimento. O capítulo também discute os tipos de implementações dos

módulos e como eles foram desenvolvidos e validados. Concluindo, no Capítulo 4, são apresentadas

as conclusões, onde são avaliadas as metodologias empregadas, as dificuldades enfrentadas e os

resultados obtidos para alcançar as metas estipuladas no escopo deste trabalho.

Page 23: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

2 FUNDAMENTAÇÃO TEÓRICA

Neste capitulo é apresentada uma introdução aos microcontroladores e exemplo de

fabricantes, à empresa Microchip Technology e sua classificação sobre seus microcontroladores

fabricados, aos recursos do microcontrolador PIC18F4520 considerados relevantes no trabalho, ao

barramento I2C e aos periféricos selecionados para o kit.

2.1 MICROCONTROLADORES

Um microcontrolador (MCU) é um componente que possui microprocessador, memória e

periféricos no mesmo encapsulamento (ZANCO, 2007).

Os microcontroladores são chips que podem ser programados para realizarem tarefas

específicas. Os MCUs reagem às entradas de dados, de acordo com o programa gravado em

memória, gerando uma saída correspondente. Na Figura 1, estão representadas algumas unidades de

hardware presentes no microcontrolador, dispensando a utilização de outros componentes em um

circuito, tornando-o um elemento poderoso no controle de processos lógicos utilizados em muitos

equipamentos de uso diário como calculadoras, celulares, eletrodomésticos, brinquedos, etc.

Figura 1. Microcontrolador

Fonte: Verle (2008).

Page 24: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

9

A estrutura interna do microcontrolador pode variar de acordo com o modelo adotado pelo

fabricante. Grande parte dos microcontroladores apresentam uma arquitetura tradicional do tipo

von-Newmann, existindo apenas um barramento interno por onde passam as instruções e os dados,

enquanto que outros utilizam a arquitetura Harvard, composto por dois barramentos internos, sendo

um de dados e outro de instruções (SOUZA, 2008).

A Figura 2.a representa a arquitetura von-Newmann com apenas um barramento tanto para

dados (contido na memória de dados) quanto para instruções (contido na memória de programa). Já

na Figura 2.b o acesso à memória de dados e memória de programa são realizados por barramentos

separados fisicamente. Nos microcontroladores de 8 bits, os dados são armazenados na memória em

tamanhos de 1 byte (8 bits), dessa forma, na arquitetura von-Newmann, o barramento de dados e

instrução são normalmente de 8 bits (de acordo com o tamanho do dado armazenado na memória de

dados), enquanto que na arquitetura Harvard as instruções podem ser armazenadas em tamanhos

maiores, de 12, 14 e 16 bits, sendo acessadas pelo barramento de instruções de forma independente.

------------------------- (a) ---------------------------------------------------------- (b)

Figura 2. Arquitetura do microcontrolador: (a) von-Newmann; (b) Harvard

Fonte: Verle (2008).

Os microcontroladores de arquitetura Harvard utilizam tecnologia RISC (Reduced

Instruction Set Computer – Computador com Conjunto de Instruções Reduzido). Eles possuem

poucas instruções básicas, executadas tipicamente em apenas um ciclo de clock. Já os MCU de

arquitetura von-Newmann, tipicamente utilizam tecnologia CISC (Complex Instruction Set

Computer – Computador com Conjunto de Instruções Complexas) que usa uma grande quantidade

de instruções para operar (BRAGA, 2010).

Page 25: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

10

2.1.1 Exemplo de fabricantes de microcontroladores de 8 bits

A seguir, serão apresentados alguns fabricantes de microcontroladores de 8 bits entre muitos

existentes no mercado. Dentre as informações citadas de cada fabricante selecionado, recebem

destaque a arquitetura e algumas características adotadas para a linha de microcontroladores de 8

bits produzidas pelas mesmas.

National Semiconductor

A National Semiconductor fabrica os microcontroladores COP8 (8-bit Control-Oriented

Processor). Esses MCUs possuem uma arquitetura do tipo Harvard modificada, onde apesar da

memória de dados e a memória de programa ter seus barramentos separados, essa arquitetura

permite a transferência de dados da memória de programa para a memória de dados. O COP8

apresenta um número de instruções superior que os RISC puros, onde quase todas (77%) tem 1 byte

de tamanho, no entanto, contém também instruções multiprogramas (realizam mais de uma tarefa e

utilizam mais de um ciclo de clock), comum em arquiteturas CISC. O COP8 da família S possue até

5 portas de 8 bits de propósito geral para entrada e saída e memória ROM (Read Only Memory) que

pode chegar até a 32 kbytes encapsulado em pastilhas de 28, 40 e 44 pinos. Ele também conta com

periféricos internos como USART (Universal Synchronous Asynchronous Receiver Transmitter),

um par de comparadores analógicos e até 3 timers de 16 bits (NATIONAL SEMICONDUCTOR,

2001).

Freescale Semiconductor

A Freescale, cuja matriz fica em Austin, Texas – EUA (Estados Unidos da América),

autodenominada líder mundial na indústria de processadores integrados, foca tecnologias para

clientes dos setores automotivo, de produtos de consumo e de comunicações. Ela apresenta uma

ampla variedade de microcontroladores de 8 bits para as famílias HCS08, HC08, HC05 e HC11. A

arquitetura utilizada nos microcontroladores da Freescale é do tipo von-Newmann, onde os MCUs

das famílias HC05 e HC11 chegam a conter 210 instruções. Quanto aos periféricos, a família

HCS08 conta com módulos de conversor A/D (Analógico/Digital), Timer/PWM (Pulse-Width

Modulation), comunicação serial, além de memória de programa com capacidade de 4 kbytes à 60

kbytes e memória de dados entre 128 bytes à 4 kbytes e pode operar em frequência máxima de 40

MHz (FREESCALE SEMICONDUCTOR, 2007).

Page 26: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

11

Por ser fabricante do microcontrolador escolhido para realização do trabalho, a Microchip

Technology recebe uma atenção diferenciada. A empresa será abordada a seguir, separadamente das

que foram citadas até agora.

2.2 MICROCHIP TECHNOLOGY

A Microchip Technology, fabricante dos microcontroladores PIC, é uma empresa norte

americana de semicondutores, com sede em Chandler - Arizona - EUA. Tendo como foco principal

a venda de dispositivos semicondutores, a empresa disponibiliza, para os desenvolvedores,

softwares, documentação e bibliotecas gratuitamente, através do seu site.

Em 1990, a Microchip iniciou seus negócios no Brasil, em parceria com a Artimar

(representante e distribuidora de várias empresas americanas no setor de eletrônica). Hoje muitas

empresas divulgam e comercializam os produtos fabricados pela Microchip, porém a Artimar

mantém-se como sua representante exclusiva no país (SOUZA, 2008).

2.2.1 Famílias e grupos de microcontroladores PIC de 8 bits

As famílias de microcontroladores PIC de 8 bits, fabricados pela Microchip Technology,

utilizam arquitetura Harvard com tecnologia RISC, limitadas a 83 instruções de 16 bits para as de

maior performance. Os MCUs podem trabalhar com frequências de até 32MHz com oscilador

interno. Os PIC podem variar entre 6 pinos até 100 pinos contendo até 128 kbytes para memória de

programa e 4 kbytes para memória de dados. Pode-se encontrar PIC com controladores periféricos

para comunicação serial, PWM, conversor A/D e comparadores, além de outros especializados para

USB (Universal Serial Bus), LCD, CAN (Controller Area Network) e Ethernet (MICROCHIP

TECHNOLOGY, 2010).

Os microcontroladores PIC são divididos em quatro grupos de performance, arranjados de

acordo com o tamanho da instrução armazenada em memória de programa e módulos internos de

hardware: Baseline (instruções de 12 bits), Mid-Range (instruções de 14 bits), Enhanced Mid-

Range (instruções de 14 bits, com módulos de hardware avançados) e PIC18 (instruções de 16 bits).

Na Figura 3, é apresentado um gráfico das famílias de microcontroladores PIC associados aos

agrupamentos por tamanho da palavra de instrução no qual eles pertencem.

Page 27: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

12

Figura 3. Gráfico ilustrado da organização dos PICs em tamanho da palavra de instrução.

Fonte: Microchip Technology (2010).

Tendo em vista um ambiente de desenvolvimento mais flexível, a Microchip oferece

características de migração entre os microcontroladores. Em geral, os MCUs de 8 bits são

classificados em famílias de compatibilidade de pinos e de codificação, de modo que um PIC com

um determinado número de pinos seja compatível a outro pertencente da mesma família. Desta

forma, a empresa oferece maior adaptabilidade em projetos para reagir às mudanças de requisito,

característica importante para sistemas embarcados (MICROCHIP TECHNOLOGY, 2010).

Uma família de microcontroladores pode estar contida em diferentes grupos de performance.

Assim, um MCU utilizado em um determinado projeto pode ser substituído por outro mais

adequado, sem significativas mudanças no hardware e/ou software. No site do fabricante é

normalmente disponibilizado um documento de migração de um microcontrolador para outro

compatível com o mesmo, facilitando ainda mais a adaptação do código montado em um

determinado microcontrolador para um de outro grupo contendo o mesmo número de pinos. Na

Tabela 2, são apresentadas algumas características dos grupos dos PICs relacionando as famílias

pertencentes a cada um deles.

Page 28: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

13

Tabela 2. Características dos grupos de microcontroladores PIC

Palavra de instrução 12 bits 14 bits 16 bits

Grupo Baseline Mid-Range Enhanced Mid-Range PIC18

Pinos 6-40 8-64 8-64 18-100 Interrupções Não possui

tratamento de interrupções

Tratamento único de interrupção

Tratamento único de interrupção salvando contexto de hardware

Tratamento múltiplo de interrupção salvando contexto de hardware

Performance 5 MIPS* 5 MIPS* 8 MIPS* Até 16 MIPS* Nº de Instruções 33 35 49 83

Memória de Programa Até 3K bytes Até 14K bytes Até 28K bytes Até 128K bytes

Memória de Dados Até 134 bytes Até 368 bytes Até 1.5K bytes Até 4K bytes

Pilha (Stack) 2 níveis 8 níveis 16 níveis 32 níveis Módulos internos

Comparador 8 bits A/D Memória de

dados Oscilador

interno

Além da Baseline: SPI (Serial

Peripheral Interface)/I²C

UART PWMs LCD 10 bits A/D Amplificador

Operacional

Além do Mid-Range: Múltipla

comunicação de periféricos

Espaço de programação linear

PWMs com Time Base independentes

Além do Enhanced Mid-Range: Multiplicação 8x8

em hardware CAN CTMU (Charge

Time Measurement Unit)

USB Ethernet 12 bits A/D

Destaque Menor custo nos menores modelos

Ótimo custo benefício em performance

Custo efetivo com mais performance e memória

Alta performance, otimização em programas em C, periféricos avançados

Total de dispositivos 16 58 29 193

Famílias PIC10, PIC12, PIC16 PIC12, PIC16 PIC12F1XXX,

PIC16F1XXX PIC18

*MIPS: Milhões de Instruções Por Segundo

Fonte: Adaptado da Microchip Technology (2010).

A seguir serão apresentados alguns exemplos de microcontroladores PIC de 8 bits

compatíveis pertencentes a grupos diferentes.

Page 29: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

14

2.2.2 Exemplos de microcontroladores PIC de 8 bits

Foram selecionados, neste estudo, quatro microcontroladores pertencentes a grupos

diferentes: três da família PIC16 e um da família PIC18. Eles estão disponíveis em

encapsulamentos de 18 pinos.

PIC16F54

O PIC16F54 pertence ao grupo Baseline de microcontroladores PIC de 8 bits. Ele possui 33

instruções de 12 bits, 0.75 kbytes de memória de programa, 25 bytes de memória RAM (Random

Access Memory) e até 12 pinos de E/S (Entrada/Saída) digital. Quanto a periféricos, ele apresenta 1

temporizador de 8 bits. O MCU pode operar em 20 MHz de clock com velocidade de 5 MIPS

(MICROCHIP TECHNOLOGY, 2007). A Figura 4 apresenta o diagrama de pinos do PIC16F54.

Figura 4. Diagrama simplificado dos pinos do PIC16F54. Fonte: Microchip Technology (2007).

PIC16F628A

O PIC16F628A pertence ao grupo Mid-Range de microcontroladores PIC de 8 bits. Ele

possui 35 instruções de 14 bits, 3.5 kbytes de memória de programa, 224 bytes de memória RAM e

até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 2 temporizador de 8 bits, 1

temporizador de 16 bits, memória EEPROM (Electrically-Erasable Programmable Read-Only

Memory) de 128 bytes, comparador, CCP (Capture/Compare/PWM) e USART. O MCU pode

operar em 20 MHz de clock com velocidade de 5 MIPS (MICROCHIP TECHNOLOGY, 2009). A

Figura 5 apresenta o diagrama de pinos do PIC16F628A.

Page 30: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

15

Figura 5. Diagrama simplificado dos pinos do PIC16F628A.

Fonte: Microchip Technology (2009).

PIC16F1826

O PIC16F1826 pertence ao grupo Enhanced Mid-Range de microcontroladores PIC de 8

bits. Ele possui 49 instruções de 14 bits, 3.5 kbytes de memória de programa, 256 bytes de memória

RAM e até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 2 temporizador de 8 bits, 1

temporizador de 16 bits, memória EEPROM de 256 bytes, comparador, ECCP (Enhanced

Capture/Compare/PWM), USART, MSSP (Master Synchronous Serial Port), conversor A/D. O

MCU pode operar em 32 MHz de clock com velocidade de 8 MIPS (MICROCHIP

TECHNOLOGY, 2010). A Figura 6 apresenta o diagrama de pinos do PIC16F1826.

Figura 6. Diagrama simplificado dos pinos do PIC16F1826.

Fonte: Adaptado de Microchip Technology (2010).

Page 31: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

16

PIC18F1320

O PIC18F1320 pertence ao grupo e família PIC18 de microcontroladores PIC de 8 bits. Ele

possui 77 instruções de 16 bits, 8 kbytes de memória de programa, 256 bytes de memória RAM e

até 16 pinos de E/S digital. Quanto a periféricos, ele apresenta 1 temporizador de 8 bits, 3

temporizador de 16 bits, memória EEPROM de 256 bytes, ECCP, USART e conversor A/D. O

MCU pode operar em 40 MHz de clock com velocidade de 10 MIPS e pode realizar multiplicação

de 8 bits por 8 bits em hardware (MICROCHIP TECHNOLOGY, 2007). A Figura 7 apresenta o

diagrama de pinos do PIC18F1320.

Figura 7. Diagrama simplificado dos pinos do PIC18F1320.

Fonte: Microchip Technology (2007).

Abstraindo as funções dos pinos que não são comuns para todos, na Tabela 3 é apresentado

o número da ordem do pino (primeira coluna), a descrição da função do pino compatível entre os

microcontroladores citados (segunda coluna), o nome da função do pino compatível entre os

microcontroladores para a família PIC16 (terceira coluna) e o nome da função do pino compatível

entre os microcontroladores para a família PIC18 (quarta coluna). A descrição completa dos pinos

pode ser encontrada no data sheet individual do microcontrolador disponibilizado no site do

fabricante.

Page 32: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

17

Tabela 3. Descrição das funcionalidades dos pinos compatíveis entre os microcontroladores PIC exemplificados

Pino Descrição da função compatível Nome da função para família PIC16

Nome da função para família PIC18

1 E/S digital RA2 RA0 2 E/S digital RA3 RA1 3 Entrada de clock do temporizador 0 T0CKI T0CKI

4 Entrada do sinal de reset Entrada de tensão para modo programação

MCLR VPP

MCLR VPP

5 Aterramento do chip VSS VSS 6 E/S digital RB0 RA2 7 E/S digital RB1 RA3 8 E/S digital RB2 RB0 9 E/S digital RB3 RB1

10 E/S digital RB4 RB4 11 E/S digital RB5 RB5

12 E/S digital Entrada do clock de programação ICSPTM

RB6 ICSPCLK*

RB6 PGC

13 E/S digital Entrada do dados de programação ICSPTM

RB7 ICSPDAT*

RB6 PGD

14 Alimentação do chip VDD VDD 15 Saída para oscilador externo OSC2/CLKOUT OSC2/CLKO 16 Entrada para oscilador externo OSC1/CLKIN OSC1/CLKI 17 E/S digital RA0 RB2 18 E/S digital RA1 RB3

Fonte: Adaptado de Microchip Technology (2007), Microchip Technology (2009), Microchip Technology (2010) e Microchip Technology (2007).

Compatibilidade entre PICs

Observa-se que os microcontroladores PIC, com o mesmo número de pinos, pertencentes a

mesma família, são fortemente compatíveis. Um MCU compatível com outro familiar, porém de um

grupo mais avançado, mantém a funcionalidade primária do pino associando novas funcionalidades

relativas ao grupo de evolução. No caso do microcontrolador da família PIC18 e os da família

PIC16, em alguns casos, eles são fracamente compatíveis, onde o hardware pode ser mantido, mas a

codificação da arquitetura é alterada. Se levado em consideração esses aspectos, pode-se realizar a

troca de um microcontrolador em um projeto por outro mais adequado sem grandes mudanças no

hardware de um sistema computacional qualquer.

Em geral, a compatibilidade dos pinos entre os microcontrolador PIC é identificada nos

pinos de E/S digital, alimentação e aterramento do chip, além dos pinos para as funções de reset,

Page 33: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

18

oscilador externo e as relacionadas à gravação do microcontrolador. Por conter essa característica, o

PIC tornou-se a escolha de microcontrolador para o trabalho proposto.

Com exceção do PIC16F54, os microcontroladores citados podem ser encontrados em

encapsulamentos de 18, 20 e 28 pinos. A diferença básica entre os encapsulamentos de 18 e o de 20

pinos, está na presença de mais um pino para aterramento e mais um pino para alimentação do chip.

A diferença entre os encapsulamentos de 20 e 28 pinos, está na presença de pinos que não exercem

conexão chamados de NC (No Connect). Esses diferentes encapsulamentos possíveis para os

microcontroladores citados serão abordados a seguir.

2.2.3 Encapsulamento

Dentre os tipos de encapsulamentos disponibilizados pela Microchip, são brevemente

apresentados os tipos QFN (Quad Flat, No Lead Package), SOIC (Small Outline Plastic Packages),

SSOP (Shrink Small Outline Packages) e PDIP (Plastic Dual In-Line Packages). Esses são os tipos

de encapsulamento mais comuns entre os microcontroladores PIC de 8 bits.

QFN

O encapsulamento QFN pode ser encontrado em circuitos integrados com 16, 20, 24, 28, 40,

44, e 64 pinos. Possui um formato quadrangular com tamanho de largura e altura que podem variar

de 3mm até 9mm com a espessura mantendo-se em 0.9mm. Os pinos são situados na parte inferior

do chip, com largura entre 0.20mm e 0.38mm, altura entre 0.35mm e 0.55mm e espessura constante

em 0.20mm para tamanhos normais dos contatos (MICROCHIP TECHNOLOGY, 2010). Na Figura

8, pode-se visualizar um chip em encapsulamento QFN.

Figura 8. Vista em perspectiva do encapsulamento QFN em um chip com 28 pinos.

Fonte: Digi-Key (2010).

Page 34: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

19

SOIC

Os circuitos integrados em encapsulamentos SOIC podem ser encontrados com 8, 14, 16,

18, 20, 24 e 28 pinos. Com formato retangular, a largura do chip pode variar de 4.90mm até

17.90mm, sendo encontrado tanto com altura de 3.90mm e espessura 1.25mm, quanto com 7.50mm

de largura e 2.05mm de espessura. Os pinos são situados nas laterais do chip, sendo eles levemente

curvados para soldagem na superfície da placa. Para todos os tamanhos dos chips, a largura, altura e

espessura dos pinos têm tamanho mínimo de 0.31mm, 1.04mm e 0.17mm, respectivamente, e

máximo de 0.51mm, 1.40mm e 0.25mm, respectivamente. As dimensões do chip variam de acordo

com o número de pinos do circuito integrado (MICROCHIP TECHNOLOGY, 2010). Na Figura 9,

pode-se visualizar um chip em encapsulamento SOIC.

Figura 9. Vista em perspectiva do encapsulamento SOIC em um chip com 28 pinos.

Fonte: Digi-Key (2010).

SSOP

O encapsulamento SSOP está disponível em 20, 24 e 28 pinos. A estrutura do chip é

semelhante ao encapsulamento SOIC, porém o chip mantém a altura entre 5.00mm e 5.60mm e a

espessura entre 1.65mm e 1.85mm independente da quantidade dos pinos. A variação de pinos

altera apenas a largura, variando entre 6.90mm, tamanho mínimo para 20 pinos, até 10.50mm,

tamanho máximo para 28 pinos. Quanto aos pinos, a largura permanece entre 0.22mm e 0.38mm, a

altura é fixa em 1.25mm e a espessura fica em torno de 0.09mm e 0.25mm também independente da

quantidade no encapsulamento (MICROCHIP TECHNOLOGY, 2010). Na Figura 10, encontra-se

um chip em encapsulamento SSOP.

Page 35: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

20

Figura 10. Vista em perspectiva do encapsulamento SSOP em um chip com 28 pinos.

Fonte: Digi-Key (2010).

PDIP

O encapsulamento PDIP é comumente observado em circuitos integrados utilizados para

prototipação devido à facilidade de utilização em protótipos montados em placas protoboard.

Assim como os encapsulamentos SOIC e SSOP, também possui uma estrutura retangular, porém os

pinos são retilíneos e rígidos semelhantes a um “prego achatado”, tendo em vista o encaixe do chip

em superfícies perfuradas. Na Figura 11, pode-se observar um circuito integrado em

encapsulamento PDIP.

Figura 11. Vista em perspectiva do encapsulamento PDIP em um chip com 28 pinos.

Fonte: Digi-Key (2010).

São encontrados microcontroladores com 8, 14, 16, 18, 20, 24, 28, 40 e 64 pinos neste

encapsulamento. Independente do número de pinos, a haste perfurante dos pinos varia entre

0.34mm e 0.56mm de largura, 2.54mm e 5.8mm de altura e 0.20mm e 0.38mm de espessura,

excluindo a “cabeça” do pino. A distância de uma haste do pino à outra é de 2.54mm. O corpo do

Page 36: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

21

chip pode variar bastante na largura com o aumento do número de pinos, permanecendo entre

8.84mm (tamanho mínimo para 8 pinos) e 57.91mm (tamanho máximo para 64 pinos), na altura

varia em 6.10mm (tamanho mínimo até 20 pinos) e 17.53mm (tamanho máximo em 64 pinos) e na

espessura mantém-se entre 2.92mm e 4.95mm (MICROCHIP TECHNOLOGY, 2010). Na Figura

12, observam-se as dimensões 37.40mm, para largura, e 13.53mm, para altura, de um chip de

encapsulamento PDIP. A Figura 13 apresenta as dimensões 0.46mm, para largura, e 3.30mm, para

altura, da haste perfurante do pino e as medidas das espessuras do corpo, com 3.30mm, e do pino,

com 0.25mm, do circuito integrado.

Figura 12. Vista superior do encapsulamento PDIP em um chip com 28 pinos.

Fonte: Adaptado da Microchip Technology (2010).

(a) (b)

Figura 13. (a) Vista lateral e (b) vista frontal do encapsulamento PDIP em um chip com 28 pinos.

Fonte: Adaptado da Microchip Technology (2010).

Tendo em vista a utilização em laboratório do produto gerado deste trabalho, procurou-se

selecionar um microcontrolador pertencente ao grupo de maior performance dos microcontroladores

PIC de 8 bits. Além disso, o MCU da família PIC18 deve ser de manuseio simplificado,

possibilitando a troca de microcontrolador em um soquete correspondente ao seu encapsulamento.

Com essas premissas, o microcontrolador escolhido foi o PIC18F4520 em encapsulamento PDIP.

Alguns de seus recursos serão apresentados na seção seguinte.

Page 37: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

22

2.3 MICROCONTROLADOR PIC18F4520

O PIC18F4520 pertence ao grupo e família de microcontroladores de 8 bits PIC18, de maior

performance entre as famílias de 8 bits da Microchip. Ele possui um conjunto de 83 instruções

RISC de 16 bits. A seguir, o microcontrolador é apresentado de forma mais detalhada, inicialmente,

com as características da estrutura externa e interna do MCU em encapsulamento PDIP e após, são

apresentados seus recursos básicos e avançados considerados relevantes ao trabalho.

2.3.1 Estrutura externa

O microcontrolador PIC18F4520 em encapsulamento PDIP de 40 pinos é ilustrado na

Figura 14. Com exceção dos pinos dedicados a alimentação e aterramento do microcontrolador, são

atribuídas mais de uma função para os pinos do PIC18F4520 conforme apresentada na Tabela 22

contido no Anexo I (MICROCHIP TECHNOLOGY, 2008).

---

Figura 14. Diagrama dos pinos do PIC18F4520 em encapsulamento PDIP de 40 pinos. Fonte: Adaptado de Microchip Technology (2008).

2.3.2 Estrutura interna

Internamente, o PIC18F4520 assume a arquitetura Harvard, com a unidade central de

processamento (CPU – Central Processing Unit) acessando a memória de programa e memória de

dados em barramentos distintos. Acompanhando o barramento de dados, estão os conjuntos de

Page 38: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

23

portas A, B, C, D e E de comunicação digital externa, a memória de dados EEPROM, entre outros

elementos do MCU. Na Figura 15 é apresentada a estrutura interna do microcontrolador.

Figura 15. Estrutura interna do microcontrolador PIC18F4520.

Fonte: Adaptado de Microchip Technology (2008).

Page 39: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

24

2.3.3 Recursos de hardware

Entre os recursos básicos do MCU, estão os módulos presentes em alguns PIC do grupo de

menor performance: oscilador, watchdog timer, reset, memória de dados, memória de programa,

conjunto de instruções e portas de E/S. Eles são os elementos principais para o funcionamento do

microcontrolador e serão abordados de forma simplificada nos itens seguintes.

Oscilador

O clock é quem dá o ritmo de operação do microcontrolador. Um oscilador determina a

velocidade com que o clock do microcontrolador opera (BRAGA, 2010). Quanto maior a frequência

de oscilação, maior será o número de instruções executada em um determinado período. Não existe

uma fórmula para a escolha do oscilador ideal para o projeto, porém a escolha do tipo deve atender

primeiramente ao requisito de eficácia (funcionar corretamente conforme a especificação inicial) e,

em segundo, o requisito de custo (ZANCO, 2007).

O PIC18F4520 possui um módulo oscilador interno, que está calibrado para operar em 8

MHz, porém, com um circuito oscilador externo, a frequência de oscilação pode chegar á 40 MHz

com utilização de cristais osciladores. Nessa caso, existe o viés da utilização exclusiva das portas de

entrada e saída (RA6 e RA7) para conexão do oscilador (MICROCHIP TECHNOLOGY, 2008). A

Figura 16 apresenta dois circuitos osciladores externos, um formado por circuito RC (Resistor

Capacitor) e outro formado por um cristal oscilador ou ressonador, ligado ao microcontrolador. Os

valores para os capacitores são sugeridos pela Microchip no data sheet do componente.

(a) (b)

Figura 16. Oscilador externo por (a) circuito RC, (b) cristal/ressonador.

Fonte: Adaptado de Microchip Technology (2008).

Page 40: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

25

A frequência gerada pelo oscilador, dá origem ao ciclo de máquina do microcontrolador.

Nos microcontroladores PIC, esse ciclo é equivalente a um quarto da frequência de operação

(ZANCO, 2007). Souza (2008, p. 24) acrescenta que a divisão do ciclo de máquina forma quatro

fases (Q1, Q2, Q3 e Q4),

O program counter é incrementado automaticamente na fase Q1 do ciclo de máquina e a instrução seguinte é buscada da memória de programa e armazenada no registrador de instruções no ciclo Q4. Ela é decodificada e executada no próximo ciclo, no intervalo de Q1 até Q4. Essa característica de buscar a informação num ciclo de máquina e executá-la no próximo é conhecida como PIPELINE.

O pipeline torna o sistema muito mais rápido, permitindo que quase todas as instruções

sejam executadas em apenas um ciclo de máquina. A exceção fica por conta das instruções de

“salto” no registrador PC (program counter) que contém o endereço da próxima instrução a ser

buscada. A arquitetura Harvard dos PIC permite que esse recurso seja implementado facilmente,

devido à separação dos barramentos de instrução e de dados (ZANCO, 2007).

Watchdog Timer (WDT)

O WDT consiste em com contador de 16 bits que possui um oscilador próprio, independente

do oscilador principal, utilizado para monitorar a execução do software gravado no

microcontrolador, sendo inacessível ao programador tanto para escrita, quanto para leitura. Quando

o contador incrementa o valor máximo armazenado no registrador WDT (0xFF), retornando ao

valor mínimo (0x00), o MCU é imediatamente reinicializado, caso esteja operando em condições

normais, ou acordado, caso esteja em modo de espera ativado pela instrução SLEEP. Essa condição

é identificada como estouro do watchdog (SOUZA, 2008).

Zanco (2007, p. 112) afirma que “a principal função do WDT é proteger o sistema contra

possíveis travamentos, fazendo com que o sistema resete e volte a funcionar”. Normalmente, o

PIC18F4520 mantém o período de 4ms por incremento no contador WDT levando 1.02s para

estourar, porém, com postscale (escala de estouro por voltas realizada pelo contador) de 1 para 128,

pode chegar à 2.18 minutos. A única forma de evitar o estouro do watchdog é através das instruções

CLRWDT (Clear Watchdog Timer), no qual o registrador WDT é zerado, evitando que ele estoure

(MICROCHIP TECHNOLOGY, 2008).

Page 41: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

26

Reset

O reset é o mecanismo de inicializar ou reinicializar o funcionamento do microcontrolador.

Quando o reset é acionado, o MCU volta a executar as instruções a partir do endereço 0x00. Esse

desvio pode ocorrer em algumas situações durante a operação normal, tais como: quando o chip é

ligado (POR – Power-on Reset), quando há uma queda na tensão de alimentação do chip (BOR –

Bourn-out Reset), quando acionado o sinal de reset externo (o pino MCLR atinge o nível baixo de

tensão), quando o software força um desvio para o endereço 0x00 (pode ser realizado pela instrução

GOTO) e quando ocorre um estouro do watchdog timer (ZANCO, 2007).

O PIC18F4520 possui um módulo dedicado para essa funcionalidade, porém ela pode ser

implementada em um circuito externo acoplado ao pino MCLR, desabilitando esse recurso. Desta

forma, o pino pode ser usado para entrada e saída de dados digital (RE3). O POR mais básico pode

ser implementado ligando o pino MCLR, quando habilitado, diretamente na alimentação do chip

(SOUZA, 2008). Na Figura 17, são ilustrados dois circuitos externos, POR e BOR, associados ao

pino MCRL do microcontrolador.

(a) (b)

Figura 17. Circuito de reset externo (a) POR e (b) BOR. Fonte: Adaptado de Souza (2008) e Zanco (2007).

Memória de dados

O grupo PIC18 possui dois tipos de memória de dados, ambas capazes de armazenar um

dado de 8 bits: a memória de dados RAM, volátil (mantem os dados armazenados somente

enquanto estiver energizado), e a memória de dados EEPROM, não-volátil (mantém os dados

Page 42: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

27

mesmo depois do chip desligado). É na RAM que são armazenadas as variáveis e registradores de

finalidades especiais (SFR – Special Function Registers) utilizados no programa. Por outro lado, a

EEPROM é utilizada para armazenar dados ou configurações que precisam ser mantidos e/ou

recuperados após um desligamento do microcontrolador (SOUZA, 2008).

O PIC18F4520 possui uma memória RAM de 4096 bytes (apenas 1536 bytes são usados),

divididos em 16 bancos de 256 bytes, endereçáveis por 12 bits, sendo que os 4 bits mais

significativos identificam o banco que será acessado (BSR – Bank Select Register), enquanto que os

8 bits menos significativos identificam o endereço de memória do banco que será acessado

(MICROCHIP TECHNOLOGY, 2008). Na Figura 18, é apresentado o mapa da memória de dados

do PIC18F4520.

Figura 18. Mapa da memória de dados do PIC18F4520. Fonte: Adaptado de Microchip Technology (2008).

Page 43: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

28

Deve-se evitar o acesso aos primeiros 128 bytes da memória RAM, pois são neles que estão

contidos os registradores de manipulação da Unidade Lógica Aritmética (ULA) e de configuração

do microcontrolador, por exemplo, o program counter. Os 128 bytes subsequentes do banco 0 e os

256 bytes dos bancos 1 ao 5, são os registradores de propósito geral (GPR – General Purpose

Register) usados para armazenamento de dados de operações do programa. Utiliza-se os 6 primeiros

bancos de memória RAM para calcular a capacidade total de armazenamento do PIC18F4520,

sendo 1536 bytes. Os bancos 6 ao 14 e os primeiros 128 bytes do banco 15 não foram

implementados; sempre que forem lidas essas memórias, será atribuído valor 0 (zero) ao retorno e a

escrita nas mesmas é ignorada. Nos últimos 128 bytes do banco 15 da memória RAM estão

contidos os SFR que e são usados pela CPU e módulos periféricos para controle de operações do

dispositivo (MICROCHIP TECHNOLOGY, 2008).

A memória de dados EEPROM, além de ter menor velocidade de leitura/escrita do que a

memória RAM, necessita dos SFRs para operações de leitura e escrita: EEADR (EEPROM Address

Register), registrador que recebe o endereço da memória que será lida ou escrita; EEDATA

(EEPROM Data Register), registrador que recebe o dado que será lido ou escrito de um

determinado endereço; EECON1 (EEPROM Control Register), registrador de controle, dá início

aos ciclos de leitura e escrita; EECON2, registrador de controle que armazena, obrigatoriamente,

uma sequência de valores (0x55 e 0xAA) para dar início ao processo de gravação. (ZANCO, 2007).

É possível armazenar até 256 bytes na memória EEPROM interna do PIC18F4520.

Para ler um dado de determinado endereço da EEPROM, deve-se escrever o endereço no

registrador EEADR (entre 0x00 e 0xFF), limpar o bit EEPGD (Flash Program or Data EEPROM

Memory Select bit) do registrador EECON1 (bit 7), limpar o bit CFGS (Flash Program/Data

EEPROM or Configuration Select bit) do registrador EECON1 (bit 6) e habilitar o bit RD (Read

Control bit) do registrador EECON1 (bit 0) (MICROCHIP TECHNOLOGY, 2008). Na Figura 19,

é apresentado um exemplo de leitura de um dado da EEPROM.

MOVLW 0x33 ; registrador W recebe valor 0x33 MOVWF EEADR ; registrador EEADR recebe endereço que será lido BCF EECON1, EEPGD ; habilita acesso à memória de dados BCF EECON1, CFGS ; habilita acesso à EEPROM BSF EECON1, RD ; EEDATA recebe conteúdo do endereço MOVF EEDATA, W ; registrador W recebe valor de EEDATA

Figura 19. Leitura do dado do endereço 0x33 da EEPROM e escrita em W (Working Register). Fonte: Adaptado de Microchip Technology (2008).

Page 44: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

29

Para escrever um dado em um determinado endereço da EEPROM, deve-se escrever o

endereço, da EEPROM, que o dado será armazenado no registrador EEADR, escrever o valor do

dado no registrador EEDATA, limpar o bit EEPGD do registrador EECON1 (bit 7), limpar o bit

CFGS do registrador EECON1 (bit 6), habilitar o bit WERN (Flash Program/Data EEPROM Write

Enable bit) do registrador EECON1 (bit 2), desabilitar as interrupções (recomendação do

fabricante), realizar a sequência de gravação do registrador EECON2, habilitar as interrupções (se

for desabilitada) e limpar o bit WERN do registrador EECON1 (MICROCHIP TECHNOLOGY,

2008). Na Figura 20, é apresentado um exemplo de escrita de um dado na EEPROM.

MOVLW 0x33 MOVWF EEADR MOVLW 5 MOVWF EEDATA BCF EECON1, EEPGD BCF EECON1, CFGS BSF EECON1, WREN ; habilita escrita BCF INTCON, GIE ; desabilita interrupções MOVLW 0x55 ; MOVWF EECON2 ; Sequência de gravação do registrador ECON2 MOVLW 0xAA ; MOVWF EECON2 ; BSF EECON1, WR ; inicia gravação BSF INTCON, GIE ; habilita interrupções BCF EECON1, WREN ; desabilita escrita com a gravação completada

Figura 20. Escrita do valor 5 no endereço 0x33 da EEPROM. Fonte: Adaptado de Microchip Technology (2008).

Memória de programa

A memória de programa do PIC18F4520 é do tipo Flash, podendo ser gravados milhares de

vezes, sem a necessidade de apagar a gravação anterior. Os microcontroladores que possuem a

memória de programa desse tipo, são considerados a melhor opção para testes de programas e

implementação final de projetos (ZANCO, 2007). Souza (2008, p. 27) acrescenta que os MCUs

desse tipo “são muito mais fáceis de trabalhar para o desenvolvimento do sistema, mas, por outro

lado, são muito mais caros para uma fabricação em série”.

Page 45: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

30

O PIC18F4520 possui 32 kbytes de memória de programa Flash, podendo armazenar 16.384

palavras de instrução, de 16 bits cada. O registrador program counter é implementado em 21 bits,

podendo endereçar até 2 Mbytes de memória, porém o acesso à memória de programa não

implementada fisicamente retornará sempre valor 0 (zero). Ele ainda conta com uma pilha de 31

níveis ligada diretamente ao registrador PC, um vetor de reset contido no endereço 0x0000, um

vetor de interrupções de alta prioridade contido no endereço 0x0008 e um vetor de interrupções de

baixa prioridade no endereço 0x0018 (MICROCHIP TECHNOLOGY, 2008). Na Figura 21, é

apresentada a estrutura do mapa da memória de programa do PIC18F4520.

Figura 21. Estrutura do mapa da memória de programa do PIC18F4520. Fonte: Adaptado de Microchip Technology (2008).

Page 46: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

31

Conjunto de instruções

Algumas das instruções do PIC18F4520 já foram citadas anteriormente, porém sua

funcionalidade não foi descrita. Como definição, Zanco (2007, p. 53) afirma que,

As instruções são constituídas por um conjunto de bits, que ficam armazenados na memória de programa do microcontrolador. Esses bits são lidos na memória de programa, são decodificados para serem acionadas as variáveis de controle internas ao sistema, para que a operação correspondente à instrução seja executada.

O PIC18F4520 incorpora 75 instruções padrão do núcleo de instruções do grupo PIC18,

contando ainda com mais 8 instruções de extensão (otimização de códigos ou de utilização da pilha

de software) usadas para gravação da memória de programa. Ao todo, 83 instruções formam o seu

conjunto de instruções, onde a maioria delas ocupa o espaço de uma única palavra de 16 bits da

memória de programa, sendo que apenas quatro instruções necessitam de 32 bits. Em geral, todas as

instruções, que ocupam uma palavra da memória de programa, são executadas em um único ciclo

de máquina, exceto as instruções de teste condicional verdadeiro ou quando o program counter é

alterado devido ao resultado da instrução, no qual necessitam de dois ciclos de máquina para serem

executadas (MICROCHIP TECHNOLOGY, 2008).

As instruções de núcleo do PIC são agrupadas em quatro categorias: operações orientadas a

byte, operações orientadas a bit, operações literais e operações de controle (MICROCHIP

TECHNOLOGY, 2008). Na Tabela 23, Tabela 24, Tabela 25 e Tabela 26 do Anexo II são

apresentadas brevemente a descrição das instruções reconhecidas pelo montador assembler da

Microchip (MPASMTM).

Portas de E/S

É através das portas de E/S que se podem realizar interações homem-máquina e/ou máquina-

máquina, desenvolvendo uma comunicação entre o microcontrolador e outros dispositivos

associados. A resposta de um MCU às ações externas pode ser observada desde um simples acender

de um led até a escrita de uma frase em um display LCD. Por sua vez, essas ações podem ser

realizadas a partir de um botão aplicando uma mudança no nível lógico de uma porta, por exemplo.

As portas do PIC são bidirecionais, ou seja, podem ser configuradas tanto para entrada

quanto para saída de informação. Para que o microcontrolador possa identificar a direção dos dados,

deve-se configurar o registrador TRIS correspondente ao conjunto de pinos da porta do MCU.

Souza (2008, p. 42) destaca que “quando é colocado ‘1’ em um bit do TRIS, o pino relacionado a

Page 47: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

32

ele é configurado como entrada. Para configurar o pino como saída, você deve escrever ‘0’ no bit

relacionado”. Tanto a operação de leitura, quanto a de escrita, podem ser feitas em conjunto,

operando com todos os pinos da porta de uma só vez, ou individualmente, operando com um único

pino da porta de cada vez (bit a bit). Zanco (2007, p. 56) acrescenta que,

Quando escrevemos um valor em um PORT no qual nem todos os bits estejam configurados como saída, os níveis lógicos nos bits que estão configurados como entrada são desprezados, prevalecendo o respectivo nível lógico aplicado pelo hardware em cada pino configurado como entrada.

Porém, mesmo que o nível lógico do pino não seja alterado, a mudança de estado em uma

operação de escrita é identificada e armazenada em um registrador temporário da porta (LAT).

Assim, caso o TRIS correspondente à porta alterada seja posteriormente configurado como saída, a

porta assume imediatamente o nível lógico armazenado temporariamente (SOUZA, 2008). Na

Figura 22, é representado um código onde, inicialmente, é realizada a leitura de todos os bits da

porta A (PORTA) e, em seguida, é atribuído nível lógico “1” apenas para o bit 0 da mesma porta

(RA0).

MOVLW 0Fh MOVWF TRISA ; TRISA configura todas os bits de PORTA como entrada MOVF PORTA, 0 ; Working register recebe a leitura do PORTA NOP BCF TRISA, 0 ; TRISA muda configuração do bit RA0 para saída BSF PORTA, 0 ; passa para nível lógico "1" o bit RA0 do PORTA

Figura 22. Exemplo de leitura e escrita no PORTA.

Fonte: Adaptado de Microchip Technology (2008).

O PIC18F4520 possui um conjunto de cinco portas, onde a cada uma delas está associado

um registrador TRIS e um registrador temporário LAT. Somados, os pinos das portas do MCU

podem chegar a 36 pinos de E/S assim distribuídas: 8 para PORTA (RA0 até RA7), 8 para PORTB

(RB0 até RB7), 8 para PORTC (RC0 até RC7), 8 para PORTD (RD0 até RD7) e 4 para PORTE

(RE0 até RE3). Como os pinos das portas também podem ser configurados para realizar outras

funções, na leitura é atribuído o valor 0 (zero) para o bit do PORT, quando não estão trabalhando

como E/S digital (MICROCHIP TECHNOLOGY, 2008).

O PORTB possui um circuito de pull-up interno, no qual assume nível lógico “0”

automaticamente quando configurado como saída. Além disso, quatro de seus pinos (RB4 ao RB7)

tem recurso de interrupção de mudança de estado, mas para isso necessitam estar configurados

como entrada, onde a leitura atual é comparada com a última leitura realizada na porta. Esse

Page 48: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

33

mecanismo de memorização é dado pelo registrador temporário LATB, o qual armazena o valor da

última leitura feita no PORTB (MICROCHIP TECHNOLOGY, 2008).

Interrupções

Zanco (2007, p. 103) define que “uma interrupção é um evento de hardware que, quando

ocorre, provoca um desvio no programa, para que o evento seja tratado”. A ocorrência desse evento

interrompe o programa imediatamente, guardando o endereço da próxima instrução a ser executada.

Em seguida, o programa é desviado para um endereço fixo da memória de programa, onde está

armazenada a função de tratamento. Finalizada a rotina que trata a interrupção gerada, o programa

torna a executar a partir da instrução do endereço armazenado anteriormente (SOUZA, 2008).

Além das interrupções de mudança de estado dos bits do PORTB, existem outras fontes de

interrupções do PIC18F4520, tais como: interrupção por estouro do temporizador, interrupções

externas nos pinos INT e interrupções geradas por periféricos. Em sua maioria, são classificadas

como interrupções de alta ou baixa prioridade. As interrupções estão alocadas nos endereços

0x0008 (para interrupções de alta prioridade) ou 0x0018 (para interrupções de baixa prioridade).

Uma interrupção de alta prioridade pode interromper outra de baixa prioridade durante o processo

de execução da mesma. São usados dez registradores para controlar as operações de interrupção

(MICROCHIP TECHNOLOGY, 2008):

Reset Control Register (RCON): registrador que identifica a causa do último reset ou

despertar (saída do modo SLEEP) ocorrido no microcontrolador;

Interrupt Control Register (INTCON, INTCON2 e INTCON3): registradores que

habilitam ou desabilitam as interrupções globais;

Peripheral Interrupt Request Register (PIR1 e PIR2): registradores que identificam

interrupções ocasionadas por um periférico específico;

Peripheral Interrupt Enable Register (PIER1 e PIER2): registradores que habilitam ou

desabilitam interrupções ocasionadas por um periférico específico; e

Peripheral Interrupt Priority Register (IPR1 e IPR2): registradores que atribuem

prioridade alta ou baixa para as interrupções ocasionadas por um periférico específico.

Em geral, as interrupções possuem três bits que controlam suas operações: Flag bit, indica

qual evento de interrupção ocorreu; Enable bit, permite desviar a execução do programa para o

Page 49: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

34

endereço da interrupção quando habilitado; Priority bit, seleciona a interrupção como de alta ou

baixa prioridade (MICROCHIP TECHNOLOGY, 2008).

Os eventos de interrupção externa ou mudança de estado do PORTB possuem uma latência

de três à quatro ciclos de máquina, não importando se a instrução executada na interrupção é de um

ou dois ciclos de máquina. Não se deve usar a instrução MOVFF para modificar qualquer

registrador INTCON, enquanto qualquer interrupção estiver sendo tratada. Fazer isso pode causar

problemas de comportamento do microcontrolador (MICROCHIP TECHNOLOGY, 2008).

Módulo Temporizador 0 (Timer0)

O temporizador 0 do PIC18F4520 pode trabalhar tanto como um temporizador, quanto como

um contador. Sua configuração é dada a partir do registrador T0CON (Timer0 Control Register),

onde a seleção dos bits do registrador determina se operará com contagem em 8 bits ou 16 bits, se

contará os ciclos de máquina ou um pulso de sinal externo e se será associado a um fator prescale

ao temporizador 0. O T0CON utiliza três bits para determinar o fator prescale, no qual aplica um

retardo na contagem do temporizador, que pode chegar à estala de 1 para 256, ou seja, são

necessários 256 ciclos de máquina para incrementar o temporizador (ZANCO, 2007).

A contagem do temporizador 0 é dada pelo registrador TMR0 (Timer0 Register), parte alta

TMR0H (Timer0 Register High) e parte baixa TMR0L (Timer0 Register Low), mapeado na região

SFR da memória RAM. Assim que o temporizador 0 ultrapassa seu limite, ou seja, passa de 0xFF

para 0x00 (operando em 8 bits) ou 0xFFFF para 0x0000 (operando em 16 bits), uma interrupção é

gerada, caso esteja habilitada. Souza (2008, p. 136), acrescenta que a utilização do temporizador 0

“incrementado por pulsos externos pode ser utilizado para muitas outras funcionalidades além de

contagem de tempo, tais como: freqüencímetro, contadores, etc.”. Nesse tipo de operação, pode-se

determinar se o temporizador 0 será incrementado na borda de subida ou de descida do pulso

externo aplicado no pino T0CKI (MICROCHIP TECHNOLOGY, 2008).

Módulo Temporizador 1 (Timer1)

O temporizador 1 do PIC18F4520 pode ser usado como um contador assíncrono. Pode-se

adicionar um oscilador externo de cristal, nos pinos T1OSO/T13CKI e T1OSI, para utilizá-lo como

um relógio de tempo real (RTC – Real Time Clock) nas aplicações do microcontrolador. O circuito

oscilador externo aplicado nos pinos do temporizador 1 é semelhante ao da Figura 16.b apresentada

Page 50: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

35

na página 24, porém o fabricante determina que o cristal/ressonador aplicado seja de 32.768KHz,

enquanto que os capacitores C1 e C2 sejam de 27pF (MICROCHIP TECHNOLOGY, 2008).

O temporizador 1 também possui um registrador de controle próprio (T1CON) e suas outras

funções são semelhantes a do temporizador 0, porém são dedicados apenas 2 bits para o fator

prescale, atingindo, no máximo, 8 ciclos de máquina para 1 incremento. Ele também gera uma

interrupção quando é estourado, além disso, pode ser configurado para sincronizar com a subida de

pulso externo ou com o ciclo de máquina (MICROCHIP TECHNOLOGY, 2008).

Zanco (2007, p. 185) expõe que o temporizador 1 “pode ser resetado pelo módulo CCP se

este último estiver operando no modo comparador. Para utilizar esse recurso, o TMR1 deve estar

funcionando como temporizador ou contador síncrono”. O módulo CCP (Capture/Compare/PWM)

é abordado após o módulo temporizador 3.

Módulo Temporizador 2 (Timer2)

Assim como os anteriores, o temporizador 2 do PIC18F4520 é controlado por um

registrador próprio (T2CON), porém apresenta diferenças expressivas em relação aos dois

primeiros. Primeiramente, este temporizador possui apenas um registrador de 8 bits (TMR2) para

contagem de tempo, em segundos, funciona apenas como temporizador, ou seja, só pode ser

incrementado pelo ciclo de máquina. Mesmo assim, apresenta características vantajosas em relação

aos temporizadores 0 e 1 (ZANCO, 2007).

Além do prescale, o temporizador 2 possui um postscale que conta a quantidade de estouros

antes de gerar uma interrupção, ambos com seus fatores podendo ser configurado em até 1 para 16.

Desta forma, caso o temporizador seja configurado, por exemplo, com os fatores prescale de 1 para

8 e postscale de 1 para 4, ele será incrementado a cada 8 ciclos de máquina levando 4 estouros para

gerar uma interrupção (SOUZA, 2008).

O estouro do temporizador 2 é dado pelo registrador PR2 (Period Register 2) de 8 bits, no

qual é armazenado o número com o limite de incrementos do temporizador. Assim, sempre que o

temporizador 2 for incrementado, ele é comparado com o PR2. Caso sejam iguais, será identificado

o estouro e o registrador TMR2 tornará ao seu valor inicial (0x00) (MICROCHIP TECHNOLOGY,

2008).

Page 51: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

36

Módulo Temporizador 3 (Timer3)

O temporizador 3 do PIC18F4520, é semelhante ao temporizador 1. Eles até compartilham o

mesmo circuito oscilador. Tanto o temporizador 1, quanto o temporizador 3 podem ser usados em

conjunto com o módulo CCP (descrito em seguida), quando configurado para gerar um evento em

modo Compare, no qual pode reinicializar o temporizador determinado gerando uma interrupção. A

diferença entre os dois está no registrador controlador do temporizador 3 (T3CON), que possibilita

escolher qual dos temporizadores (1 ou 3) será associado em qual módulo CCP (MICROCHIP

TECHNOLOGY, 2008).

Módulo CCP

O PIC18F4520 possui dois módulos CCP (CCP1 e CCP2). Ambos os módulos possuem um

registrador de 16 bits, que pode operar em três modos diferentes: Capture, Compare e PWM. Os

temporizadores 1 e 3 estão disponíveis para os dois primeiros modos de operação (a associação de

um temporizador com o um módulo CCP, é feita pelo registrador T3CON), enquanto que o

temporizador 2 está para o último (MICROCHIP TECHNOLOGY, 2008). Souza (2008, p. 33)

lembra que “O módulo CCP também possui uma interrupção associada a ele para informar ao

programa uma das duas situações possíveis: Fim da captura (Capture) ou Fim da comparação

(Compare)”.

No modo Capture, o valor do temporizador (TMR1 ou TMR3) é copiado (capturado) para o

registrador CCPRx (CCPx Register). Esse evento pode ser configurado, a partir do registrador

CCPxCON (CCPx Control Register), para ocorrer: em cada borda de descida, em cada borda de

subida, em cada 4 bordas de subida ou em cada 16 bordas de subida. Para este modo de operação, o

pino correspondente ao módulo CCP deve estar configurado como entrada e o temporizador

trabalhando como contador síncrono (SOUZA, 2008).

No modo Compare, o valor do temporizador (TMR1 ou TMR3) é comparado com o do

registrador CCPRx constantemente. Quando for identificada uma igualdade entre os valores,

dependendo da configuração do registrador CCPxCON, um dos seguintes eventos ocorre no pino

CCPx: passa para nível lógico “1”, passa para nível lógico “0”, troca de nível lógico (de “1” para

“0” ou de “0” para “1”) ou permanece como está (porém é gerada uma interrupção do

temporizador). O CCPx e o temporizador, devem receber a mesma configuração que o modo

Compare (MICROCHIP TECHNOLOGY, 2008).

Page 52: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

37

Para Zanco (2007, p. 236), o modo PWM

é o modo de funcionamento mais poderoso do módulo CCP e pode ser utilizado em diversas aplicações, como, por exemplo, conversor digital/analógico, fonte chaveada, nobreaks, etc. O PWM, conhecido como Modulação por Largura de Pulso, é um sinal digital com frequência fixa, mas largura de pulso (ciclo ativo) variável.

A frequência fixa do sinal digital é dada pelo inverso do período do PWM. A saída PWM é

produzida por até 10 bits de precisão do registrador CCPx, tendo como base o temporizador 2.

Sabendo-se que TMR2 é formado por 8 bits, Souza (2008, p. 168) complementa, “os 2 bits faltantes

serão adquiridos através do clock interno da máquina” e referindo-se as fases Q1 até Q4, “a divisão

do clock por 4 gera esses tempos internos, que são utilizados para incrementar o TMR2 e também

para controlar o PWM. Esses quatro tempos geram os 2 bits faltantes”. Desta forma o período do

PWM é determinado pela Equação 1, onde: PR2 representa o valor de estouro do temporizador 2,

TOSC o valor do inverso da frequência do oscilador do microcontrolador e TMR2prescale o valor do

fator prescale aplicado ao temporizador 2.

푃푊푀 í = [(푃푅2) + 1] ∗ 4 ∗ 푇 ∗ 푇푀푅2 Equação 1

A largura de pulso ou Duty Cycle (DC) é o tempo em que o sinal permanece em nível lógico

“1”. Ela é especificada por 10 bits, sendo os 8 bits mais significativos dados pelo registrador

CCPRxL e os 2 bits menos significativos pelos bits 5 e 4 do registrador CCPxCON (MICROCHIP

TECHNOLOGY, 2008). Assim sendo, o Duty Cycle do PWM é determinado pela Equação 2, onde

CCPRxL:CCPxCON[5:4] representa o valor determinado pela especificação citada dos 10 bit, TOSC

o valor do inverso da frequência do oscilador do microcontrolador e TMR2prescale o valor do fator

prescale aplicado ao temporizador 2.

푃푊푀 = (퐶퐶푃푅푥퐿:퐶퐶푃푥퐶푂푁[5: 4]) ∗ 4 ∗ 푇 ∗ 푇푀푅2 Equação 2

A Microchip (2008, p. 145) recomenda os seguintes passos para operar o módulo CCP em

modo PWM:

1. Determine o período do PWM escrevendo o valor no registrador PR2;

2. Determine o Duty Cycle escrevendo o valor no registrador CCPRxL e nos bits 5 e 4 do

registrador CCPxCON;

Page 53: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

38

3. Configure o pino do CCPx como saída limpando o bit do TRIS apropriado;

4. Determine o fator prescale do temporizador 2, então habilite-o a partir do registrador

T2CON; e

5. Configure o módulo CCPx para operar em modo PWM.

No PIC18F4520, o módulo CCP1 é implementado como um CCP padrão, porém com o

modo PWM com reforço na saída com o módulo ECCP. Esse modo de operação do PWM é

normalmente utilizado para controle de motores elétricos. Ele é configurado pelo registrador

CCP1CON e pode trabalhar com até 4 canais de saída PWM (pinos P1A, P1B, P1C e P1D) de

diferentes maneiras (VERLE, 2008):

Saída única: o mesmo sinal PWM é aplicado nos canais de saída, com até um par de

canais com polaridade invertida. Nesse caso, um par deve ser P1A e P1C e o outro par

P1B e P1D, necessariamente. Na Figura 23 é ilustrado o controle interno do modo PWM

de saída única;

Meia ponte: um sinal PWM é aplicado no canal de saída P1A e outro sinal,

complementar ao primeiro, é aplicado no canal P1B de saída, simultaneamente. Deve-se

aplicar um atraso no canal de saída complementar para evitar curto-circuito. Na Figura

24 é ilustrado os circuitos de meia ponte e ponte completa controlados pelo PWM de

meia ponte;

Ponte completa em modo avançado: utiliza quatro canais de saída. A sequência de pulso

é aplicada no canal de saída P1D, enquanto que P1A permanece sempre em nível lógico

“1” e os canais P1B e P1C permanecem em nível lógico “0”. Na Figura 25 é ilustrado o

circuito modo PWM de ponte completa; e

Ponte completa em modo reverso: utiliza quatro canais de saída. A sequência de pulso é

aplicada no canal de saída P1B, enquanto que P1C permanece sempre em nível lógico

“1” e os canais P1A e P1D permanecem em nível lógico “0”.

Page 54: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

39

Figura 23. Modo PWM em saída única.

Fonte: Verle (2008).

(a) (b)

Figura 24. Modo PWM em meia ponte para controle de circuito de (a) meia ponte ou (b) ponte completa. Fonte: Verle (2008).

Figura 25. Modo PWM em ponte completa para controle de circuito de ponte completa. Fonte: Verle (2008).

Page 55: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

40

Módulo MSSP

O MSSP consiste em um módulo de interface serial usado para comunicação com outros

dispositivos periféricos ou microcontroladores. Sua característica principal é a comunicação

síncrona adequada para uso em sistemas de um mestre para um ou mais escravos. Ele pode operar

em modo SPI ou I2C. Em ambos os modos, o mestre é quem estabelece a comunicação e é quem

gera o clock para transmissão de dado, enquanto que o escravo só espera o pedido de transmissão de

dado do mestre. Existem três registradores associados ao módulo, sendo um registrador de status

(SSPSTAT – MSSP Status Register) e dois registradores de controle (SSPCON1 – MSSP Control

Register 1 – e SSPCON2 – MSSP Control Register 2) (MICROCHIP TECHNOLOGY, 2008). Nas

Figura 26 e Figura 27, estão representados os modos SPI e I2C de comunicação serial síncrona,

respectivamente.

Figura 26. Modo SPI de comunicação serial síncrona. Fonte: Verle (2008).

Figura 27. Modo I2C de comunicação serial síncrona.

Fonte: Verle (2008).

O modo SPI permite que 8 bits de dados sejam transmitidos e recebidos simultaneamente,

utilizando apenas 3 pinos: saída de dados ou linha transmissor SDO (Serial Data Out), entrada de

dados ou linha receptora SDI (Serial Data In) e clock serial ou linha de sincronização SCK (Serial

Clock). No caso do microcontrolador operar como escravo, utiliza-se um pino extra de seleção de

Page 56: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

41

escravo SS (Slave Select) (VERLE, 2008). Na Figura 28, é representado o modo SPI de operação

selecionando o escravo com quem será estabelecida a comunicação mestre-escravo.

Figura 28. Sincronização entre mestre-escravo no modo SPI. Fonte: Verle (2008).

O módulo MSSP utiliza quatro registradores para o modo SPI: SSPCON1 e SSPSTAT para

controle, SSPBUF (MSSP Buffer Register) utilizado para armazenar temporariamente o dado

recebido e SSPSR (MSSP Shift Register) utilizado para transmitir/receber/deslocar um dado para

dentro e fora do dispositivo (MICROCHIP TECHNOLOGY, 2008).

O modo I2C é comumente utilizado por dispositivos como memórias, sensores de

temperatura, relógios de tempo real, etc. A transferência de dados é semelhante ao modo SPI,

porém a linha de dados é bidirecional utilizando apenas dois pinos no barramento. Esses pinos

devem ser configurados como entrada ou saída através dos bits 3 e 4 do registrador TRISC

(VERLE, 2008). Este modo de operação do MSSP do PIC18F4520 é abordado mais

detalhadamente na seção seguinte deste capítulo, onde os pinos 18 e 23 do MCU podem ser

associados às linhas de clock e de dados do barramento, respectivamente.

2.4 BARRAMENTO I2C

O barramento I2C foi desenvolvido pela Philips Semiconductors, hoje como NXP

Semiconductors, para prover uma comunicação eficiente de circuitos integrados através de um

barramento simplificado. O I2C é adotado por muitas empresas de semicondutores, além da NXP,

tais como Texas Instruments, Atmel, Intel, entre outras. Por ser amplamente aceito pelo mercado, é

comum encontrar dispositivos eletrônicos que podem ser inseridos em um barramento I2C, tais

Page 57: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

42

como microcontrolador, microprocessador, relógio de tempo real, memória EEPROM, etc.

(PRADO, 2007).

Na Figura 29 é apresentado um exemplo do barramento I2C onde estão associados alguns

componentes no barramento. São usados dois fios para comunicação, um para os dados (SDA –

Serial Data) e outro para o clock de sincronização (SCL – Serial Clock). Os dispositivos conectados

no barramento são endereçáveis via software (através de um endereço único), onde é realizada a

comunicação mestre-escravo.

Figura 29. Comunicação mestre-escravo no barramento I2C.

Fonte: Verle (2008).

2.4.1 Características do barramento I2C

Algumas outras características e benefícios são apresentados pela NXP Semiconductors

(2007) em relação ao barramento:

Os mestres podem operar como mestre-transmissor ou mestre-receptor;

Dois ou mais mestres podem transmitir dados simultaneamente (multi-mestre), incluíndo

detecção de colisões e mecanismo de arbitragem para prevenir corrupção dos dados;

Os dados podem ser transmitidos em até 3.4 Mbits/s;

Picos de tensão no barramento de dados são detectados e filtrados pelo chip, garantindo

a integridade dos dados;

O número de dispositivos conectados é limitado apenas pela capacitância máxima do

barramento;

Page 58: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

43

Endereçamento integrado e o protocolo de transferência de dados permitem que o

sistema seja definido completamente por software;

Os circuitos integrados podem ser adicionados e removidos sem afetar o circuito no

barramento;

Redução no tempo de projeto devido à compatibilidade dos componentes;

A utilização de componentes compatíveis ao barramento proporciona ao sistema um

baixo consumo de corrente, além de imunidade a ruídos; e

Redução no custo de fabricação de placas de circuito impresso, devido à mínima

interconexão entre os componentes.

Considerando o aspecto físico, devem-se adicionar mais dois fios ao barramento, um com 5

volts para alimentação dos dispositivos (VDD) e outro com 0 volts para o aterramento (VSS ou GND

– Ground). Quando as linhas de dados e do relógio estiverem livres, eles devem permanecer em

nível lógico alto. Para isso, é utilizado um resistor de pull-up em ambas as linhas (ROBOT

ELECTRONICS, 2010). A NXP Semiconductors (2007) sugere que para proteger os dispositivos

de picos de tensão nas linhas, pode ser usado um resistor em série aos pinos de dados e de clock do

dispositivo. Na Figura 30 é apresentado o barramento I2C considerando-se os aspectos físicos

citados, onde na 30.a não é considerado o resistor em série (RS), enquanto que na 30.b ele está

presente.

(a) (b)

Figura 30. Aspectos físicos do barramento I2C (a) sem e (b) com resistores em série (RS). Fonte: Adaptado de NXP Semiconductors (2007).

A alimentação do dispositivo deve ser verificada no data sheet do componente, sendo que a

energização em 5 volts é dada para dispositivos de tecnologia CMOS (Complementary Metal-

Page 59: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

44

Oxide-Semiconductor), como microcontroladores, por exemplo. O valor correspondente aos

resistores é dado pelo gráfico apresentado na Figura 31, onde a reta representa a voltagem da linha

de alimentação dos dispositivos, enquanto que os eixos cartesianos correspondem ao valor dos

resistores RP de pull-up (eixo vertical) e de série RS (eixo horizontal).

Figura 31. Gráfico da relação dos resistores de pull-up e de proteção no circuito I2C.

Fonte: NXP Semiconductors (2007).

A comunicação entre os dispositivos conectados no barramento I2C é realizada por um

protocolo de comunicação serial síncrona chamado de protocolo I2C.

2.4.2 Protocolo I2C

O protocolo I2C foi desenvolvido para transferir informações entre os dispositivos

conectados no barramento I2C. Cada componente é reconhecido por um endereço único, em geral,

podendo operar como um transmissor ou receptor de informação, assumindo o papel de mestre ou

escravo. O mestre é quem inicia a transmissão dos dados gerando o sinal do clock, permitindo a

transferência da informação. Quando um componente assume o papel de mestre, todos os outros são

considerados escravos para o mesmo. Essas e outras definições do protocolo de comunicação estão

descritos na Tabela 4.

Page 60: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

45

Tabela 4. Definições do protocolo I2C

Termo Descrição Transmissor Dispositivo que envia dados para o barramento. Receptor Dispositivo que recebe dados do barramento. Mestre Dispositivo que gera sinais de clock e inicia/termina uma transferência. Escravo Dispositivo endereçado pelo mestre. Multi-mestre Mais de um mestre pode tentar controlar o barramento ao mesmo tempo.

Arbitragem Procedimento que assegura que a mensagem, em modo multi-mestre, não seja comprometida.

Sincronização Procedimento para sincronizar os sinais de clock de dois ou mais dispositivos

Fonte: Adaptado de NXP Semiconductors (2007).

A transmissão entre os dispositivos é realizada com base em algumas condições do

protocolo. Na Figura 32 está representada a ordem das condições presentes no protocolo I2C para

transferência de dados no barramento entre mestre e escravo. Inicialmente, o mestre sinaliza a

condição de início de transferência (Start) no barramento, seguida do endereço do escravo com

quem estará se comunicando e a informação da operação que será realizada (R/W – Read/Write),

sendo de leitura ou escrita. Após isso, o escravo confirma ao mestre o recebimento do chamado

(ACK – Acknowledge), dando início a transferência dos dados. A cada dado transmitido, o escravo

confirma seu recebimento. Terminado o envio dos dados, o mestre sinaliza a condição de parada

(Stop) finalizando a comunicação com o escravo.

Figura 32. Condições do protocolo I2C para transferência de dados.

Fonte: Adaptado de NXP Semiconductors (2007).

Start e Stop

As condições de Start e Stop são apresentadas na Figura 33. Ambas são dadas pela mudança

de estado da linha de dados (SDA) enquanto que a linha do clock (SCL) é mantida em nível lógico

alto. Para o Start, a linha de dados deve mudar de nível lógico alto para nível lógico baixo. Para o

Stop, a mudança da linha de dados é de nível lógico baixo para nível lógico alto. Em alguns casos,

pode ser necessário reiniciar a comunicação entre mestre e escravo. Para esses casos, o reinício é

realizado aplicando uma condição de Stop seguida de um Start.

Page 61: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

46

(a) (b)

Figura 33. Condições de (a) Start e (b) Stop do protocolo I2C. Fonte: Robot Electronics (2010).

Endereço e Dado

O endereço de identificação do escravo é exclusivo para cada componente. Ele é transmitido

pelo mestre através da barramento de dados de dados (SDA). Após a condição de Start ser

estabelecida com os escravos do barramento, eles comparam o endereço recebido com seu próprio

endereço. Caso o escravo solicitado pelo mestre não seja o receptor destinatário, os dados que serão

transmitidos pelo mestre serão ignorados. Apenas o escravo receptor correto irá considerar as

informações do mestre.

Podem ser usados dois tipos de endereçamento, um de 7 bits ou outro de 10 bits.

Considerando 7 bits, seria possível endereçar até 128 escravos em um barramento I2C. Isso não é

permitido devido às limitações de capacitância do barramento. Verle (2008) cita que é possível

incluir, no máximo, 112 circuitos integrados no mesmo barramento de transmissão.

A Figura 34 apresenta os dois tipos de endereçamento. Os dois tipos de endereçamento

utilizam a mesma quantidade de bits (7 bits) para o identificação do endereço no barramento,

porém, para identificar um dispositivo com 10 bits de endereço, o mestre envia como endereço a

sequência de bits “11110” com dois bits mais significativos do endereço do escravo. Após a

confirmação do escravo (existe a possibilidade de confirmação de mais de um escravo), o mestre

envia um dado contendo os outros 8 bits menos significativos de identificação do escravo.

O dado é formado por 8 bits (1 byte), onde os bits mais significativos de um dado é enviado

primeiro. O mestre pode enviar n dados para o escravo, sendo que sempre após o envio de um dado,

o escravo envia uma confirmação de recebimento (ACK).

Page 62: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

47

(a)

(b)

Figura 34. Identificação do componente com (a) 7 bits e (b) 10 bits de endereço.

Fonte: Adaptado de NXP Semiconductors (2007).

R/W e ACK

Tanto a informação da operação que será realizada (R/W), quanto a confirmação do escravo

(ACK), são identificadas por apenas 1 bit. Quando o R/W é identificado com o bit em nível lógico

baixo, o mestre realizará uma operação de escrita, quando for identificado com nível lógico alto,

será realizada uma operação de leitura. Quando o escravo aplica nível lógico baixo na linha de

dados (SDA), previamente mantida em nível lógico alto pelo mestre, o mestre identifica um

recebimento bem sucedido das informações transmitidas (ACK) e quando a modificação não for

realizada pelo escravo, o mestre identifica um NACK (Not Acknowledge). O NACK pode ser

originado por vários motivos, porém os motivos podem ser interpretados como uma falha na

comunicação entre o mestre e o escravo. Quando um NACK é identificado, deve-se reiniciar a

comunicação.

Validação de um bit

Os bits de endereço, dados, R/W e ACK (ou NACK) são validados pela barramento de

clock. A validação é dada pela estabilidade do barramento de dados (SDA) durante o pulso no

barramento de clock (SCL). A Figura 35 apresenta o mecanismo de validação do bit no protocolo

I2C, onde o nível lógico do barramento de dados permanece estável enquanto o barramento de clock

altera o nível lógico duas vezes, primeiro de baixo para alto seguido de alto para baixo.

Page 63: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

48

(a) (b)

Figura 35. Validação de um bit em nível lógico (a) alto e (b) baixo no protocolo I2C. Fonte: Robot Electronics (2010).

Na Figura 36 é apresentada uma transferência completa de comunicação realizada entre um

mestre e um escravo pelo protocolo I2C, onde é possível identificar a condição de Start, os 7 bits de

endereço, o bit de operação (endereço e operação formando 1 byte), mais o bit de confirmação do

escravo, além da transmissão de dois bytes de dados (seguidos do ACK) antes da finalização pela

condição de Stop.

Figura 36. Transferência completa no protocolo I2C.

Fonte: Adaptado de NXP Semiconductors (2007).

Pela possibilidade de haver mais de um mestre, o barramento I²C é considerado multi-

mestre. Assim como os escravos, os mestres também são endereçáveis, podendo ser escravos de

outros mestres. Desta forma, um mestre irá trabalhar como um mestre-transmissor, enquanto que

outro trabalhará como mestre-receptor. A comunicação entre eles é idêntica à comunicação mestre-

escravo, onde o mestre-transmissor é considerado o mestre do barramento e o mestre-receptor é o

Page 64: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

49

escravo. Quando ocorrer de dois ou mais mestres tentarem ocupar o barramento ao mesmo tempo,

ambos como mestre, são utilizados mecanismos de sincronização do relógio e arbitragem para

determinar quem irá assumir o controle do barramento (quando não houver concorrência não há

necessidade dos mesmos).

Sincronização do relógio

A sincronização do clock é realizada por uma conexão AND na interface do barramento de

clock (SCL) dos dispositivos mestres. A Figura 37 representa a sincronização do clock entre dois

mestres concorrentes. A transição de nível lógico alto para baixo do barramento SCL, iniciando a

contagem do período de nível baixo do clock de todos os mestres concorrentes. Os mestres

permanecem em estado de espera, após mudarem o nível de sua linha de clock, até que o último

mestre altere o nível de SCL para alto. Assim, a sincronização é dada pelo mestre que primeiro

finalizar a contagem do período de nível alto de sua linha de clock, passando o barramento SCL

para nível baixo.

Figura 37. Sincronização do relógio entre dois mestres concorrentes.

Fonte: Adaptado de NXP Semiconductors (2007).

Desta forma, os mestres estarão sincronizados, sendo que o nível baixo do SCL é mantido

pelo mestre com maior período de nível baixo de sua linha de clock, enquanto que o nível alto do

SCL é mantido pelo mestre com menor período de nível alto.

Arbitragem

O mecanismo de arbitragem é aplicado no barramento de dados (SDA), sendo realizado na

validação de cada bit, prevenindo a perda da informação transmitida no barramento. A Figura 38

apresenta o mecanismo de arbitragem aplicado em dois mestres concorrentes que iniciaram a

Page 65: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

50

comunicação. O mecanismo da preferência à transmissão dos bits em nível lógico baixo, onde se

um determinado mestre estiver transmitindo um bit em nível alto enquanto a linha SDA do

barramento estiver em nível baixo, ele perde o controle do barramento.

Figura 38. Arbitragem entre dois mestres concorrentes.

Fonte: Adaptado de NXP Semiconductors (2007).

Caso a perda do controle seja durante a transmissão dos bits de endereço, o mestre que

perdeu o controle do barramento deve assumir o papel de escravo (mestre-receptor), pois pode ser

que o mestre vencedor esteja tentando endereçá-lo. Assim que o barramento for liberado, o mestre

que perdeu o controle do barramento pode reiniciar a comunicação.

Como citado na Subseção 2.3.3 deste capítulo, o PIC18F4520 possui o recurso MSSP, no

qual possibilita a utilização do microcontrolador como um dispositivo mestre do barramento I2C.

Este trabalho visa abordar esse recurso no projeto de um módulo periférico voltado a aplicação do

barramento I²C, através da comunicação de dispositivos periféricos compatíveis com o mesmo.

Outros componentes periféricos serão abordados em outros módulos do kit proposto. Esses

componentes serão mais detalhados na seção seguinte.

2.5 COMPONENTES PERIFÉRICOS

Neste trabalho, considera-se como componentes periféricos os elementos passivos de um

sistema computacional, ou seja, os dispositivos que sofrem ação direta do usuário ou de um outro

dispositivo. O microcontrolador, por exemplo, é composto por uma unidade central de

processamento, memória e periféricos internamente no chip. Alguns dos recursos periféricos do

PIC18F4520 foram citados na Seção 2.3 deste capítulo.

Page 66: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

51

Neste momento serão tratados os periféricos externos ao microcontrolador, que por sua vez,

receberão ações do usuário ou do microcontrolador a fim de desempenhar uma determinada tarefa.

Dentre os periféricos selecionados para o estudo estão o motor de passo, teclado matricial e display

LCD, que são apresentados, respectivamente, nas Subseções 2.5.1 , 2.5.2 e 2.5.3 .

2.5.1 Motor de passo

Um motor de passo consiste em um dispositivo que converte pulsos elétricos em

movimentos mecânicos angulares. Esta conversão é dada por um rotor central que rotaciona a fim

de alinhar-se com o campo magnético produzido por uma ou mais bobinas do estator. Os motores

de passo são normalmente utilizados em equipamentos que requerem estabilidade e precisão como,

por exemplo, câmeras de vídeo, impressoras e robôs (BRITES e SANTOS, 2008).

A variação angular proveniente do movimento do rotor é denominada “passo”. A precisão

do motor é dada pelo número de passos em uma rotação completa (360º). Esse fator de precisão é

chamado de resolução e quanto maior a resolução mais preciso é o motor. Pode-se encontrar

motores de passo menos precisos com resolução de apenas 4 PPR (Passos Por Rotação), onde o

rotor gira 90º por passo, ou até motores mais precisos com resolução de 500 PPR, com 0.72º por

passo (PRESTES, LEÃO, et al., 2001).

Os motores de passo trabalham com três estados de operação: desligado (quando não há

energização do motor ou de nenhuma bobina do estator), parado (quando pelo menos uma bobina é

energizada mantendo o rotor em uma posição fixa) ou rodando (quando as bobinas são energizadas

de forma sequencial forçando o rotor a se movimentar aplicando um giro no mesmo) (MESSIAS,

2006).

A velocidade de rotação do rotor nos motores de passo está ligada à indutância das bobinas,

sendo que o tempo de saturação da corrente nas bobinas do estator varia de um motor para outro. A

corrente nas bobinas produz o campo magnético que atrai o rotor, sendo que quanto maior a

corrente maior é o torque de atração. Em altas velocidades, a bobina não é energizada

adequadamente para aplicar um torque no rotor, possibilitando a perda de passos do motor. Na

Figura 39 é apresentado um gráfico da relação entre torque e velocidade de um determinado motor

de passo. Observa-se duas curvas da relação torque e velocidade, uma curva considerando o motor

inicialmente em estado rodando e outra em estado inicial parado.

Page 67: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

52

Figura 39. Gráfico relacionando entre torque e velocidade em PPS (Passos por segundo). Fonte: Adaptado de Yedamale e Chattopadhyay (2002).

Normalmente, os motores de passo possuem 4 bobinas no estator. Para este estudo, foram

considerados dois tipos de classificação em relação ao acionamento das bobinas do estator, sendo

unipolar ou bipolar.

Na Figura 40, é apresentada uma ilustração dos terminais dos enrolamentos de um motor

unipolar. Observa-se que o motor unipolar possui um center-tape no enrolamento de suas bobinas,

sendo ele ligado na alimentação do motor. A corrente é aplicada em meio enrolamento aterrando

uma das extremidades, onde uma bobina do estator é polarizada atraindo o rotor.

Figura 40. Ilustração dos terminais dos enrolamentos de um motor unipolar.

Fonte: Adaptado de McComb (2007).

Page 68: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

53

Na Figura 41, é apresentada uma ilustração dos terminais dos enrolamentos de um motor

bipolar. No motor bipolar, o enrolamento não possui o center-tape, sendo a alimentação aplicada

em uma das extremidades aterrando a outra. Assim, a corrente é aplicada em todo enrolamento

polarizando duas bobinas do estator (CONDIT, 2004).

Figura 41. Ilustração dos terminais dos enrolamentos de um motor bipolar.

Fonte: Adaptado de McComb (2007).

Essa diferença entre o motor unipolar e o bipolar traz consigo diferenças nos seus circuitos

de acionamento e na relação entre energia consumida por torque para realizar o passo do rotor. O

circuito controlador de motor de passo unipolar é mais simples se comparado ao do bipolar

(CONDIT et al, 2004). McComb (2007, p.45) ainda acrescenta que os motores de passo unipolares

podem ser acionados como bipolares, aplicando-os em um circuito controlador correspondente

ignorando o center-tape.

Nas Figura 42 e Figura 43 são apresentados os circuitos para o controle da corrente em um

enrolamento do motor de passo unipolar e bipolar. Eles recebem o nome de ponte H devido ao

formato do circuito montado, podendo ser de meia ponte (Figura 42), quando a corrente passa em

apenas meio enrolamento para o acionamento unipolar, ou de ponte completa (Figura 43), quando a

corrente passa por todo enrolamento para o acionamento bipolar. Os elementos A, B, C e D são

transistores que funcionam como chaves, sendo que quando recebem um sinal digital em nível

lógico alto, fecham o circuito permitindo a passagem de corrente e quando em nível lógico baixo,

abrem o circuito. Um enrolamento deve ser controlado por dois sinais digitais do controlador. Como

existe um par de enrolamentos, mais dois (quatro no total) sinais digitais são necessários para

controlar todo o motor de passo.

Page 69: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

54

Figura 42. Circuito para o controle de motor de passo unipolar.

Fonte: Adaptado de Yedamale e Chattopadhyay (2002).

Figura 43. Circuito para o controle de motor de passo bipolar.

Fonte: Adaptado de Yedamale e Chattopadhyay (2002).

Ambos os circuitos podem controlar o sentido da rotação do motor de passo em horário ou

anti-horário. Para determinar o sentido de rotação dos passos do rotor, o controlador deve acionar as

bobinas em uma certa sequência. Primeiramente deve-se estabelecer o tipo de passo que será

realizado pelo rotor. Em geral, os passos podem ser realizados em passos completos ou em meio

passo. O passo completo ocorre quando os enrolamentos do estator são acionados um à um, ou seja,

apenas um enrolamento, ou meio no caso de ser unipolar, é acionado por vez. O meio passo ocorre

quando os enrolamentos do estator são acionados em sequências individuais seguidas de um par, ou

seja, são acionados um (ou meio) enrolamento, seguido de dois (ou dois meios) enrolamentos,

seguido de um (ou meio) enrolamento e assim por diante. O acionamento em passo completo é mais

rápido, enquanto que o meio passo é mais preciso (MESSIAS, 2006). Brites e Santos (2008, p. 12)

lembram que “Como todos os objetos que existem, o motor de passo também tem uma frequência

de ressonância. Caso as revoluções do mesmo se deêm nesta frequência, este pode começar a

oscilar, aquecer e perder passos”.

Page 70: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

55

Na Tabela 5 é apresentada a sequência de acionamento do motor de passo unipolar para

passo completo e, na Tabela 6, a sequência para meio passo. É considerado, nas tabelas 5 e 6, o

sentido horário de rotação do rotor e o número de passos necessário para completar uma volta. O

valor “1” atribuído às bobinas representa o acionamento das bobinas do estator, enquanto que o

valor “0” representa o não acionamento. A ilustração apresentada na última coluna de ambas as

tabelas, demonstra a posição das bobinas no estator, enquanto que a seta central, representa a

atração de um dos pólos do rotor pelo campo magnético produzido no acionamento da bobina em

destaque.

Tabela 5. Sequência de acionamento do motor de passo unipolar para passo completo

Passo Bobina 1 Bobina 2 Bobina 3 Bobina 4 Ilustração da posição do rotor

1 1 0 0 0

2 0 1 0 0

3 0 0 1 0

4 0 0 0 1

Fonte: Adaptado de Messias (2006).

A sequência de passos do acionamento bipolar do motor de passo em passo completo é

semelhante à sequência do motor unipolar, porém é acionada também a bobina oposta ao indicado

pela seta do rotor contendo polaridade invertida. O passo completo do motor unipolar consome

menos energia, pois apenas uma bobina (meio enrolamento) é energizada de cada vez, enquanto que

no bipolar são energizadas duas bobinas (um enrolamento) para movimentar o rotor. Essa diferença

no consumo é compensada pelo torque que o bipolar aplica no rotor, sendo até 30% (trinta

porcento) maior que a do unipolar (BRAGA, 2010).

Page 71: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

56

Tabela 6. Sequência de acionamento do motor de passo unipolar para meio passo

Passo Bobina 1 Bobina 2 Bobina 3 Bobina 4 Ilustração da posição do rotor

1 1 0 0 0

2 1 1 0 0

3 0 1 0 0

4 0 1 1 0

5 0 0 1 0

6 0 0 1 1

7 0 0 0 1

8 1 0 0 1

Fonte: Adaptado de Messias (2006).

O motor de passo ainda pode operar em micro-passo. Braga (2010, p. 1) ressalta que “Com a

técnica do micro-passo pode-se obter maior resolução e ao mesmo tempo aumentar a eficiência do

sistema, já que a corrente dos enrolamentos do motor é controlada de modo inteligente e não

simplesmente ligada e desligada”. Esse tipo de passo é baseado na modulação da largura de pulso

digital realizando a transferência gradual de corrente entre bobinas subsequentes (CONDIT, 2004).

Na Figura 44 é apresentado um exemplo de um sinal digital controlando a corrente aplicada em uma

bobina do motor de passo, sendo que ton representa o período em que o sinal está em nível lógico

alto, toff o período em nível lógico baixo e ton.mais toff o período completo.

Page 72: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

57

Figura 44. Sinal digital controlando a corrente aplicada em uma bobina do motor de passo.

Fonte: Adaptado de Yedamale & Chattopadhyay (2002).

Desta forma é possível controlar o motor para trabalhar em 1/4, 1/8, 1/16 ou 1/32 de passo

completo, aumentando ainda mais a precisão do motor. Seu funcionamento é parecido com o meio

passo, porém procura-se obter uma transição de corrente que se aproxime da forma de onda

senoidal, tornando os passos do motor mais suaves. Essa forma de onda é obtida calculando a

magnitude da corrente aplicada nas bobinas (YEDAMALE & CHATTOPADHYAY, 2002). A

Equação 3 e a Equação 4 representam a magnitude da corrente aplicada nas bobinas 1 e 2, sendo IB1

para uma bobina 1 e IB2 para o bobina 2, em um determinado ângulo θ do passo completo. A soma

do quadrado das magnitudes das correntes das bobinas 1 e 2 corresponde ao quadrado da magnitude

da corrente resultante (IR), sendo a corrente resultante presentada na Equação 5.

퐼 = 퐼 ∗ cos휃 Equação 3

퐼 = 퐼 ∗ sen휃 Equação 4

퐼 = 퐼 + 퐼 = 퐼 ∗ (cos휃) + (sen 휃) Equação 5

Na prática, mantém-se energizada a bobina 1 enquanto são aplicados pulsos na bobina 2,

mantendo uma corrente correspondente ao ângulo do passo desejado (YEDAMALE &

CHATTOPADHYAY, 2002). Assim, considerando um passo completo, a corrente resultante

depende da variação de corrente de apenas uma bobina para cada meio passo do motor. A Equação

6 demonstra a relação citada.

Page 73: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

58

퐼 = 퐼 ∗ 1 + (sen 휃) Equação 6

Usualmente utiliza-se uma tabela onde já estão calculados os ciclos ativos do sinal aplicado

nos enrolamentos, pois o tempo para calcular os senos e cossenos da corrente do enrolamento para

parar o rotor na posição fixa do micro-passo é impraticável. Assim, utiliza-se apenas uma tabela de

valores para ambos os enrolamentos, sendo preciso compensar 90º para os valores do cosseno

(CONDIT, 2004). Na Tabela 7 é apresentada uma relação da proporção de ocupação do ciclo ativo

em um sinal digital aplicado nas bobinas 1 e 2 para realização de até meio passo, sendo que o motor

de passo esteja trabalhando com 32 micro-passo por passo completo (16 por meio passo). Para

simplificar, é considerado o valor de 1A (um ampere) para a corrente de pico (IPico) nas bobinas.

Tabela 7. Proporção de ocupação do ciclo ativo de um sinal para 32 micro-passo por passo

Micro-passo Corrente na Bobina 1

Corrente na Bobina 2

Ciclo ativo do sinal digital na Bobina 1

Ciclo ativo do sinal digital na Bobina 2

1 1 sen휋

32 ∗ 1 100% 9.8%

2 1 sen휋

32 ∗ 2 100% 19.5%

3 1 sen휋

32 ∗ 3 100% 29.0%

4 1 sen휋

32 ∗ 4 100% 38.3%

5 1 sen휋

32 ∗ 5 100% 47.1%

6 1 sen휋

32 ∗ 6 100% 55.6%

7 1 sen휋

32 ∗ 7 100% 63.4%

8 1 sen휋

32 ∗ 8 100% 70.7%

9 1 sen휋

32 ∗ 9 100% 77.3%

10 1 sen휋

32 ∗ 10 100% 83.1%

11 1 sen휋

32 ∗ 11 100% 88.2%

12 1 sen휋

32 ∗ 12 100% 92.4%

Fonte: Adaptado de Yedamale e Chattopadhyay (2002).

Page 74: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

59

Tabela 7. Proporção de ocupação do ciclo ativo de um sinal para 32 micro-passo por passo (continuação)

Micro-passo Corrente na Bobina 1

Corrente na Bobina 2

Ciclo ativo do sinal digital na Bobina 1

Ciclo ativo do sinal digital na Bobina 2

13 1 sen휋

32 ∗ 13 100% 95.7%

14 1 sen휋

32 ∗ 14 100% 98.1%

15 1 sen휋

32 ∗ 15 100% 99.5%

16 1 sen휋

32 ∗ 16 100% 100%

Fonte: Adaptado de Yedamale e Chattopadhyay (2002).

O PWM do módulo CCP, citado anteriormente na Subseção 2.3.3 contido no PIC

PIC18F4520, pode ser usado em aplicações de motores de passo devido sua capacidade de

modulação da largura de pulso. Este módulo é muito útil para controle de motores unipolares e

bipolares, operando em passo completo, meio passo e micro-passo.

2.5.2 Teclado matricial

Muitos equipamentos embarcados, tais como máquina de fax, copiadoras, impressoras,

máquinas industriais e etc. utilizam teclados como interface de entrada para os usuários. O teclado

pode ser usado tanto para entrada de dados numéricos, quanto para seleção de modo de operação

para controlar um determinado dispositivo. Os teclados são formados por componentes que

possibilitam selecionar o estado de um circuito entre aberto ou fechado, como, por exemplo, relés

ou teclas.

Na Figura 45, pode-se observar um circuito formado por uma chave de contato momentâneo

mantendo o circuito normalmente aberto, permanecendo em nível lógico “1” proveniente de um

resistor de pull-up. Quando e enquanto for aplicada uma ação sobre a chave, fechando o circuito, o

nível lógico é alterado para “0”. No momento da ação aplicada, nesse tipo de chave, é identificado

alguns “saltos” do contato, denominada bounce, onde o circuito oscila entre aberto e fechado por

um curto período de tempo, tipicamente entre 5 e 30 milissegundos (LABROSSE, 1999).

Page 75: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

60

Figura 45. Chave de acionamento momentâneo com identificação do bounce.

Fonte: Adaptado de Labrosse (1999).

Alguns teclados podem apresentar um conjunto de chaves organizadas em uma matriz m x n

de interconexões. Esses teclados são chamados de teclados matriciais, normalmente usados em

aparelhos telefônicos. Esse tipo de organização das chaves economiza o número de pinos do

microcontrolador dedicados ao teclado, quando são necessárias mais de cinco chaves para entrada

de dados no sistema.

Na Figura 46 é apresentada uma matriz m x n de interconexão de chaves, onde as linhas são

controladas por pinos de saída da porta do microcontrolador, enquanto que as colunas são

controladas por pinos de entrada, sendo aplicado um resistor de pull-up para cada coluna da matriz.

Page 76: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

61

Figura 46. Matriz m x n de interconexão de chaves momentâneas.

Fonte: Adaptado de Labrosse (1999).

A chave pressionada é identificada aplicando nível lógico “0” em todas as m linhas da

matriz para cada uma das colunas. Se nenhuma chave for pressionada, identificado nível lógico “1”

para todas as linhas de todas as colunas. No caso de uma chave cij for pressionada, ela será

identificada pela leitura em nível lógico “0”, quando for realizada a varredura na linha i da coluna j

da matriz. Na Tabela 8 é apresentada uma varredura de uma matriz de ordem quatro, sendo que a

chave c23 foi pressionada. Na primeira coluna, é identificada a iteração do processo de varredura, na

segunda coluna, é apresentado o nível lógico dos pinos aplicado na linha (da linha 0 até a linha 3),

na terceira coluna é apresentado o nível lógico dos pinos de leitura da coluna (da coluna 0 até a

coluna 3), e na última coluna, é apresentada uma descrição em relação a varredura realizada.

Page 77: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

62

Tabela 8. Exemplo de varredura em uma matriz de ordem quatro, onde c23 foi pressionado.

Varredura Escrita nas Linhas Leitura das Colunas

Descrição 0 1 2 3 0 1 2 3

1 0 1 1 1 1 1 1 1 Chave c00 não pressionada 2 1 0 1 1 1 1 1 1 Chave c10 não pressionada 3 1 1 0 1 1 1 1 1 Chave c20 não pressionada 4 1 1 1 0 1 1 1 1 Chave c30 não pressionada 5 0 1 1 1 1 1 1 1 Chave c01 não pressionada 6 1 0 1 1 1 1 1 1 Chave c11 não pressionada 7 1 1 0 1 1 1 1 1 Chave c21 não pressionada 8 1 1 1 0 1 1 1 1 Chave c31 não pressionada 9 0 1 1 1 1 1 1 1 Chave c02 não pressionada 10 1 0 1 1 1 1 1 1 Chave c12 não pressionada 11 1 1 0 1 1 1 1 1 Chave c22 não pressionada 12 1 1 1 0 1 1 1 1 Chave c32 não pressionada 13 0 1 1 1 1 1 1 1 Chave c03 não pressionada 14 1 0 1 1 1 1 1 1 Chave c13 não pressionada 15 1 1 0 1 1 1 1 0 Chave c23 pressionada e identificada 16 1 1 1 0 1 1 1 1 Chave c33 não pressionada

.

Para filtrar o problema do bounce das chaves, podem-se realizar amostras do teclado em

intervalos tipicamente entre 20 e 100 milissegundos. Ainda pode-se utilizar um buffer, trabalhando

como uma fila, para armazenar temporariamente a identificação das teclas pressionadas, enquanto

que a aplicação não puder tratá-las. Além disso, pode-se atribuir funcionalidade de incremento ou

decremento automático em relação ao tempo em que a chave é pressionada (LABROSSE, 1999).

Além de possuir uma ampla quantidade de pinos para trabalharem como linhas e colunas de

um teclado matricial, alguns pinos do PIC18F4520 com funções de interrupção externa podem ser

ligados a chaves, gerando interrupção quando a chave for pressionada.

2.5.3 Módulo LCD

Os LCDs são tecnologias de display passivas, ou seja, eles não emitem luz própria, mas

refletem parte da luz manipulando-a para apresentar imagens ou símbolos. Desta forma, eles gastam

pouca energia. Eles são normalmente disponibilizados em módulos, nos quais estão presentes o

LCD, podendo ser gráfico ou alfanumérico, juntamente com o driver controlador, que faz a

interface do LCD com outros dispositivos eletrônicos (LABROSSE, 1999). Na Figura 47, estão

representados os módulos LCD gráfico e alfanumérico, onde a aplicação do usuário faz uso de um

Page 78: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

63

software driver de LCD que se comunica com driver do módulo. Para as situações onde a presença

da luz ambiente é escassa ou inexistente, Barbacena e Fleury (1996, p. 1) informam que “Os

módulos podem ser encontrados com LED backlight (com uma iluminação de fundo) para facilitar

as leituras durante a noite”.

(a)

(b)

Figura 47. Representação dos módulos LCD (a) gráficos e (b) alfanuméricos.

Fonte: Adaptado de Labrosse (1999).

No caso dos displays gráficos, todos são disponíveis com o driver controlador em módulos,

sendo eles extremamente flexíveis para as aplicações, podendo representar imagens e textos em

qualquer idioma ou formatação de fonte de letra. São organizados em colunas e linhas de pixels,

onde cada um é endereçado individualmente podendo ser ligado ou desligado. Seu tamanho é bem

variado, podendo ser encontrado em resoluções de 64x32 até 640x480 pixels (coluna x linha).

Normalmente, os displays alfanuméricos, ou orientado a caracteres, são também

disponibilizados com o driver controlador em módulos, sendo eles compostos por uma matriz de

blocos de 16 até 40 colunas e 1 até 4 linhas, com cada bloco da matriz formado por uma matriz de

pontos com 5 colunas e 8 até 11 linhas, onde são representados os caracteres ASCII (American

Standard Code for Information Interchange) além de um número limitado de outros símbolos.

Page 79: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

64

Para o estudo será considerado o módulo LCD representado na Figura 48, sendo do tipo

alfanumérico de 16 colunas e 2 linhas de bloco, com matriz de pontos de 5 colunas e 8 linhas, no

qual utiliza o padrão Hitachi equipado com o drive HD44780.

Figura 48. LCD Hitachi com drive HD44780.

Fonte: Verle (2008).

Na Figura 49, pode-se observar a comunicação do microcontrolador com o LCD, realizada

através dos pinos do driver. Esses pinos são utilizados para envio de instruções de controle e 8 (ou

4) bits para envio de dados pelo usuário, mediante um protocolo de comunicação (BARBACENA e

FLEURY, 1996).

Figura 49. Conexões dos pinos do driver do LCD com um microcontrolador. Fonte: Verle (2008).

Page 80: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

65

Na Tabela 9 é apresentada a identificação do pino (primeira coluna), o nome do pino

relacionado com a Figura 49 (segunda coluna) e a sua descrição (terceira coluna) de acordo com o

nível lógico aplicado (quando necessário). Na Figura 49, os pinos de nome A e K não recebem

numeração, porém na Tabela 9 eles são identificados pelos números 15 e 16, respectivamente. Isso

ocorre porque nem todos os LCDs possuem a função backlight. Em alguns casos, o nome do pino

pode ser diferente, porém sua função não é alterada.

Tabela 9. Descrição das funções dos pinos do LCD

Pino Nome Função 1 GND Aterramento do módulo 2 VCC Alimentação do módulo 3 VEE Tensão para ajuste de contraste (pode ser variado)

4 RS 0 = bits de dados são interpretados como comando de instrução 1 = bits de dados são interpretados como caracteres

5 R/W 0 = escreve dado (do controlador para o LCD) 1 = lê dado (do LCD para o controlador)

6 E 0 = acesso ao LCD desabilitado 1 = operação normal De 1 para 0 = bits de dados são transferidos para o LCD

7 D0 Bit de dado 0 (menos significativo) 8 D1 Bit de dado 1 9 D2 Bit de dado 2 10 D3 Bit de dado 3 11 D4 Bit de dado 4 12 D5 Bit de dado 5 13 D6 Bit de dado 6 14 D7 Bit de dado 7 (mais significativo) 15 A Anodo para o backlight 16 K Catodo para o backlight

Fonte: Adaptado de Barbacena e Fleury (1996).

Como apresentado na Tabela 9, o dado enviado ao LCD pode ser interpretado, dependendo

do nível lógico do pino RS, tanto como um caractere, quanto como um comando. Quando o LCD

utiliza 4 pinos para envio de dados, são considerados os pinos dos 4 bits mais significativos (D4 até

D7), como visto na Figura 49.

Matic (2003) informa que as operações de leitura e escrita do LCD são realizadas seguindo o

procedimento:

1. Pino R/W recebe nível lógico “0”;

Page 81: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

66

2. Pino RS recebe nível lógico “0”, para instrução, ou “1”, para caractere;

3. Escrever o código nos pinos de dado (para operação de escrita);

4. Pino E recebe nível lógico “1”;

5. Pino E recebe nível lógico “0”; e

6. Ler o dado dos pinos de dados (para operação de leitura).

Antes de enviar os dados para o LCD, o mesmo deve ser inicializado. A inicialização é dada

por escrever uma sequência de códigos no LCD, sempre que ele for alimentado. As instruções de

comando mais comuns são apresentada na Tabela 10. Operando em apenas 4 bits, os comandos

devem ser escrito primeiramente o nibble1 mais significativo e, em seguida, o menos significativo

referente ao código hexadecimal do comando.

Tabela 10. Instruções de comando mais comuns do LCD 2x16

Descrição Modo de operação Código Hexadecimal

Display Liga (sem cursor) 0C Desliga 0A / 08

Limpa display com cursor home 01

Controle do cursor

Liga 0E Desliga 0C Desloca para esquerda 10 Desloca para direita 14 Cursor home 02 Cursor piscante 0D Cursor com alternância 0F

Sentido de deslocamento do cursor ao entrar com caractere

Para esquerda 04 Para direita 06

Deslocamento da mensagem ao entrar com caractere

Para esquerda 07 Para direita 05

Deslocamento da mensagem Para esquerda 18 Sem entrada de caractere Para direita 1C

Endereço da primeira posição Primeira linha 80 Segunda linha C0

Fonte: Barbacena e Fleury (1996).

Ao ser energizado, deve-se esperar um período de 15 milissegundos para escrever os

comandos de inicialização do LCD. A sequência é iniciada pelo código identificador do tipo de 1 Conjunto de 4 bits.

Page 82: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

67

operação do LCD, seguido do código de limpar o display, seguido do código de sentido de

deslocamento do cursor ao entrar com caractere e finalizando com o código de ligar o display. O

código que identifica do LCD varia com o número de bits de dados, linhas de caracteres do display

e a matriz de pontos que forma o caractere. A Tabela 11 apresenta o código de identificação do

LCD de acordo com as variações citadas. A variação observada nos códigos hexadecimais é

decorrida da desconsideração dos dois bits menos significativos no dado.

Tabela 11. Código de identificação do tipo de operação do LCD para inicialização

Nº de bits de dados Linhas do display Matriz de caracteres (Coluna x linha) Código Hexadecimal

4 1 5x8 20-23

5x11 24-27

2 5x8 28-2B 5x11 2C-2F

8 1 5x8 30-33

5x11 34-37

2 5x8 38-3B 5x11 3C-3F

Fonte: Adaptado de Sica (2010).

Depois de inicializado, o LCD pode receber os dados (comandos e caracteres). A medida

que os caracteres são escritos, eles são armazenados na memória RAM. Ela pode armazenar até 80

bytes de caracteres. Além dessa, existe ainda outra memória RAM geradora de caracteres, onde

podem ser criados caracteres especiais para a aplicação do usuário. Contudo, o LCD contém os

caracteres da tabela ASCII em uma memória ROM, no qual é consultada para apresentar o caractere

no bloco do display.

Com as características apresentadas, o PIC18F4520 pode ser utilizado como o

microcontrolador, representado na Figura 49, para realizar a comunicação com o LCD configurando

seus pinos para tal. Seriam utilizados até 11 pinos de E/S digital para serem ligados aos pinos de

controle e de dados do LCD. Os pinos do backlight (quando presente), do controle de contraste e de

alimentação e aterramento do LCD não ficariam a cargo do microcontrolador, e sim, de um circuito

externo.

Page 83: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

68

2.6 CONSIDERAÇÕES

Neste capítulo foram apresentados conceitos fundamentais para a execução deste Trabalho

de Conclusão de Curso. Dentre eles, foram abordados as características gerais dos

Microcontroladores, os microcontroladores fabricados pela Microchip Technology e suas

classificações, alguns recursos do Microcontrolador PIC18F4520, o Barramento I2C para

comunicação serial síncrona entre dispositivos, além de alguns Componentes periféricos de entrada

e saída.

Para maiores informações e detalhes dos assuntos abordados, podem ser consultadas as

referências citadas no trabalho.

Page 84: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

3 DESENVOLVIMENTO

Esse capítulo apresenta a metodologia utilizada para o projeto e execução do kit de

desenvolvimento proposto pelo TCC. Em seguida, é apresentada a visão geral do kit modular de

desenvolvimento construído, os requisitos e definições dos módulos e a arquitetura de hardware

especificada para o kit. Após é apresentada a documentação das implementações e validações

virtuais e físicas dos módulos. Ao final é apresentado os custos envolvidos no desenvolvimento

deste trabalho.

3.1 METODOLOGIA PARA DEFINIÇÃO DO MODELO

Inicialmente, foi realizada uma pesquisa para obtenção de informações a respeito de kits

didáticos de desenvolvimento disponíveis no mercado, baseados em microcontroladores PIC de 8

bits, a fim de identificar os recursos de utilização do MCU presente nos mesmos. Foram

selecionados kits similares para a comparação, tendo como critério de similaridade o

microcontrolador abordado. Na Tabela 1, contida na Seção 1.1, é apresentado um quadro

comparativo de preços entre quatro kits selecionados de fabricantes diferentes, podendo ser

visualizado uma ilustração de cada um deles. Observou-se, em todos os kits pesquisados, a presença

de componentes eletrônicos capazes de realizar atividades práticas visando à utilização dos módulos

de hardware MSSP (especialmente o barramento I2C) e PWM presentes no microcontrolador

(PIC16F877A em todos os kits). Além disso, também estão disponíveis nos kits dispositivos de

interação com o usuário, como LCD, teclas e teclado (na maioria em formato de uma matriz).

Em seguida, os kits de desenvolvimento comerciais foram confrontados com os conteúdos

programáticos de duas disciplinas: Microprocessadores e Projetos Lógicos e Integração Software-

Hardware do curso de Engenharia de Computação da UNIVALI, onde visam à realização de uma

atividade final dos alunos, baseando-se em um projeto de implementação de sistemas digitais (o

conteúdo programático é obtido pelo estudante através da intranet pelo site da instituição).

Como resultado dessa análise, percebe-se que ambas as disciplinas têm o objetivo de

apresentar os recursos de hardware presentes em microcontroladores, onde o foco principal da

primeira disciplina está nos recursos básicos e da segunda nos recursos avançados.

Assuntos relacionados aos recursos de microcontroladores foram observados em ementas,

disponíveis na internet, semelhantes às das disciplinas citadas, de cursos de outras instituições de

Page 85: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

70

ensino, como por exemplo: Microprocessadores II do curso de Engenharia Elétrica da Universidade

Presbiteriana Mackenzie – SP – (UNIVERSIDADE PRESBITERIANA MACKENZIE, 2010),

Introdução aos Sistemas Embarcados e Microcontroladores do curso de pós-graduação em

Engenharia de Sistemas da UFLA – MG – (UNIVERSIDADE FEDERAL DE LAVRAS, 2010) e

Sistemas Microprocessados do curso Tecnologia em Automação Industrial da UTFPR – PR –

(UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ, 2010). Essas disciplinas, por sua

vez, também requerem o desenvolvimento de um projeto final pelos alunos como forma de

avaliação.

A análise realizada entre kits e disciplinas mostrou que embora algumas delas não

abordassem o mesmo microcontrolador dos kits (o PIC), a utilização dos principais recursos

encontrados nos kits está presente em suas ementas. Em alguns casos, quando o conteúdo

programático esteve disponível, observou-se a aplicação de componentes periféricos específicos,

como: memórias externas, motor de passo, display LCD e teclado matricial.

Para identificar os critérios para construção dos módulos, foi realizado um brainstorm

(técnica difundida entre os profissionais de tecnologia da informação para obtenção de requisitos de

um sistema) entre o autor e o professor da disciplina de Integração Software-Hardware do curso de

Engenharia de Computação da UNIVALI. Dentre os critérios identificados, os mais relevantes

foram:

1. Modularidade: os módulos devem proporcionar uma interface de comunicação bem

definida, possibilitando que sejam combinados pelo usuário da maneira que lhe for mais

conveniente para um determinado sistema;

2. Usabilidade: os módulos devem possibilitar que sejam combinados pelo usuário de

forma simples, sem necessidade de muitas configurações para realização de uma

determinada atividade; e

3. Reusabilidade: os módulos periféricos não devem estar restritos a utilização um

determinado microcontrolador contido em um módulo principal, possibilitando que

sejam controlados por outros módulos principais contendo microcontroladores e/ou

microprocessadores de diferentes fabricantes.

A partir destes critérios foi elaborada a visão geral do projeto, apresentado a seguir.

Page 86: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

71

3.2 VISÃO GERAL

O projeto segue o modelo ilustrado na Figura 50, sendo que os seus recursos estarão

presentes em módulos separados fisicamente. O kit é constituído de um módulo principal e módulos

periféricos. Neste trabalho são considerados quatro módulos periféricos identificados por Módulo

I2C, Módulo Motor de Passo, Módulo Display LCD e Módulo Teclado Matricial. O módulo

principal é identificado por Módulo Controlador, o qual conta com um microcontrolador

PIC18F4520, sendo responsável por controlar os componentes periféricos, contidos em seus

respectivos módulos, conectados ao mesmo.

Figura 50. Visão geral do projeto.

O Módulo I2C consiste em uma interface de comunicação via barramento I2C com outros

dispositivos compatíveis com o mesmo, como um RTC ou uma memória EEPROM externa, por

exemplo. O Módulo Motor de Passo consiste em uma interface de hardware capaz de realizar o

acionamento do motor de passo através de um controle digital. O Módulo Display LCD é

responsável por realizar a comunicação do LCD com o Módulo Controlador. O Módulo Teclado

Matricial é responsável por realizar a interface do usuário com os outros módulos do kit.

Foram levantados os requisitos funcionais (REF), ações e comportamento que agregam

valor ao sistema, e não funcionais (RNF), especificações e restrições impostas ao sistema, dos

módulos do kit. Eles são apresentados na seção seguinte.

Módulo Controlador

Módulo Teclado Matricial

Módulo Motor de Passo

Módulo Display LCD

Módulo I2C

Page 87: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

72

3.3 REQUISITOS

Nesta seção, inicialmente, são apresentados os requisitos funcionais e não funcionais do Kit

Modular de Desenvolvimento e, em seguida, dos módulos que compõem o kit. Eles estão

identificados e descritos nas subseções seguintes, sendo que eles descrevem a arquitetura de

hardware do kit como um todo e de cada um dos módulos.

3.3.1 Requisitos Gerais do Kit Modular de Desenvolvimento

Requisitos funcionais do Kit Modular de Desenvolvimento (REF.KMD):

REF.KMD1: Os módulos do kit devem apresentar uma interface de conexão

padronizada entre o módulo principal e os módulos periféricos;

REF. KMD2: O kit deve possibilitar que o usuário conecte de zero até quatro módulos

periféricos ao módulo principal; e

REF.KMD3: O kit deve permitir que o usuário conecte os módulos periféricos sem a

necessidade de configuração de hardware nem ordem de conexão.

Requisitos não funcionais do Kit Modular de Desenvolvimento (RNF.KMD):

RNF.KMD1: A identificação dos módulos do kit para o usuário deve ser realizada pelo

nome do módulo;

RNF.KMD2: Os pinos de conexão dos módulos do kit devem ser identificados para o

usuário; e

RNF.KMD3: Os módulos periféricos do kit não necessitam apresentar características hot

swapping, onde a combinação dos módulos deve ser realizada antes do kit ser

energizado.

3.3.2 Requisitos do Módulo Controlador

Requisitos funcionais do Módulo Controlador (REF.MCT):

REF.MCT1: O Módulo Controlador deve fornecer uma fonte de tensão regulada em 5

volts e repassar a tensão 12 volts da fonte externa para alimentação tanto dos

componentes contidos no mesmo quanto nos módulos periféricos.

Page 88: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

73

REF.MCT2: O Módulo Controlador deve conter o microcontrolador e permitir que o

mesmo seja alterado pelo usuário por um outro compatível com o mesmo;

REF.MCT3: O Módulo Controlador deve possuir um oscilador externo ligado

adequadamente ao microcontrolador;

REF.MCT4: O Módulo Controlador deve permitir que o microcontrolador seja

reiniciado pelo usuário através de uma chave (reset);

REF.MCT5: O Módulo Controlador deve permitir que o usuário gere interrupções

externas do microcontrolador com a ação de uma chave;

REF.MCT6: O Módulo Controlador deve apresentar um canal de comunicação serial

RS-232 ligado adequadamente ao microcontrolador; e

REF.MCT7: O Módulo Controlador deve permitir que o microcontrolador seja gravado

sem a necessidade de retira-lo do módulo.

Requisitos não funcionais do Módulo Controlador (RNF.MCT):

RNF.MCT1: O Módulo Controlador deve sinalizar a energização das linhas de

alimentação;

RNF.MCT2: O microcontrolador utilizado no Módulo Controlador deve ser um PIC em

encapsulamento PDIP de 40 pinos; e

RNF.MCT3: O Módulo Controlador deve identificar ao usuário as chaves contidas no

mesmo.

3.3.3 Requisitos do Módulo I2C

Requisitos funcionais do Módulo I2C (REF.MIC):

REF.MIC1: O Módulo I2C deve apresentar o barramento I2C com dispositivos

compatíveis ligados ao mesmo adequadamente;

REF.MIC2: O Módulo I2C deve apresentar, no mínimo, dois dispositivos escravos

compatíveis com o barramento I2C de diferentes funcionalidades;

Page 89: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

74

REF.MIC3: Os dispositivos escravos serão energizados através do Módulo Controlador,

portanto esses módulos não possuirão fontes próprias, ou qualquer outra forma de

energização independente do Módulo Controlador;

REF.MIC4: O Módulo I2C deve permitir que os dispositivos escravos sejam

substituídos, por outros iguais, pelo usuário; e

REF.MIC5: no caso dos dispositivos escravos necessitarem de recursos não fornecidos

pelo Módulo Controlador, eles devem estar presentes no próprio Módulo I2C.

Requisitos não funcionais do Módulo I2C (RNF.MIC) são listados a seguir:

RNF.MIC1: Os dispositivos escravos devem ser conectados ao Módulo I2C por um

soquete adequado ao seu encapsulamento;

RNF.MIC2: As linhas de relógio e de dados do barramento I²C devem corresponder aos

pinos de comunicação I²C do microcontrolador, provenientes da conexão com o Módulo

Controlador; e

RNF.MIC3: O Módulo I²C deve identificar ao usuário as linhas do barramento I²C

relacionando-as com a conexão do o Módulo Controlador.

3.3.4 Requisitos do Módulo Motor de Passo

Requisitos funcionais do Módulo Motor de Passo (REF.MMP):

REF.MMP1: O Módulo Motor de Passo deve permitir o controle do acionamento de

dois motores de passo unipolares;

REF.MMP2: O Módulo Motor de Passo deve permitir que a alimentação dos motores de

passo seja realizada pelas linhas de alimentação provenientes da conexão com o Módulo

Controlador;

REF.MMP3: O Módulo Motor de Passo deve permitir a regulagem de tensão adequada

para cada motor de forma independente;

REF.MMP4: O Módulo Motor de Passo deve apresentar um conector para cada motor

motores de passo, possibilitando que sejam inseridos e/ou substituídos pelo usuário;

Page 90: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

75

REF.MMP5: O Módulo Motor de Passo deve permitir que um dos motores seja

acionado por dois sinais PWM e o outro por sinais lógicos constantes;

REF.MMP6: O motor de passo acionado por sinais lógicos constantes deve ser

controlado por quatro pinos de E/S do microcontrolador provenientes da conexão com o

Módulo Controlador; e

REF.MMP7: O motor de passo do acionado por dois sinais PWM deve ser controlado

por dois pinos de E/S, além dos pinos de sinal PWM, do microcontrolador provenientes

da conexão com o Módulo Controlador.

Requisitos não funcionais do Módulo Motor de Passo (RNF.MMP):

RNF.MMP1: Os conectores de motor de passo devem conter, no mínimo, cinco

terminais para ligação dos center-tapes e das quatro bobinas dos dois enrolamentos;

RNF.MMP2: O Módulo Motor de Passo deve permitir que os circuitos integrados

utilizados para o controle de acionamento dos motores de passo possam ser substituídos,

por outros iguais, pelo usuário; e

RNF.MMP3: O Módulo Motor de Passo deve identificar ao usuário as conexões do

motor de passo com os pinos de conexão e o conector do Módulo Controlador que

controlam cada um dos motores.

3.3.5 Requisitos do Módulo Display LCD

Requisitos funcionais do Módulo Display LCD (REF.MDL):

REF.MDL1: O Módulo Display LCD deve permitir o controle do display LCD por um

barramento contendo quatro linhas de dados e três linhas de controle;

REF.MDL2: As quatro linhas de dados e três linhas de controle devem ser associadas a

seis pinos de E/S do microcontrolador proveniente da conexão com o Módulo

Controlador;

REF.MDL3: O Módulo Display LCD deve permitir que o usuário substitua o display

LCD por outro, de pinagem idêntica;

REF.MDL4: O Módulo Display LCD deve permitir a regulagem tanto do contraste

quanto do LED backlight do display LCD pelo usuário; e

Page 91: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

76

REF.MDL5: A alimentação do display LCD deve ser proveniente das linhas de

alimentação da conexão com o Módulo Controlador.

Requisitos não funcionais do Módulo Display LCD (RNF.MDL):

RNF.MDL1: O Módulo Display LCD deve identificar ao usuário quais os pinos de

conexão do Módulo Controlador correspondentes as linhas de controle e dados do

display LCD.

3.3.6 Requisitos do Módulo Teclado Matricial

Requisitos funcionais do Módulo Teclado Matricial (REF.MTM):

REF.MTM1: O Módulo Teclado Matricial deve apresentar uma matriz de interconexões

de chaves; e

REF.MTM2: As linhas e colunas da matriz devem ser associadas aos pinos de E/S do

microcontrolador do Módulo Controlador.

Requisitos não funcionais do Módulo Teclado Matricial (RNF.MTM):

RNF.MTM1: A matriz de interconexões de chaves do Módulo Teclado Matricial deve

ser de ordem 4, no máximo;

RNF.MTM2: Os resistores de pull-up das colunas da matriz devem ser ligados ao pinos

de alimentação proveniente do Módulo Controlador; e

RNF.MTM3: O Módulo Teclado Matricial deve identificar ao usuário quais os pinos de

conexão do Módulo Controlador correspondentes as linhas e colunas da matriz.

Na próxima seção, são apresentadas as definições da arquitetura de hardware elaboradas a

partir dos requisitos levantados para o desenvolvimento do projeto.

3.4 ARQUITETURA DE HARDWARE

A arquitetura de hardware é utilizada como base para o desenvolvimento dos módulos do

kit. Sua principal função é demonstrar as conexões dos módulos periféricos com o módulo

principal. A Figura 51 representa a arquitetura desenvolvida para atender aos requisitos levantados,

onde os módulos estão conectados através do Barramento KMD. Este barramento é uma extensão

Page 92: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

77

dos pinos do microcontrolador e da fonte de alimentação (12 volts, 5 volts e terra) contidos no

Módulo Controlador.

Figura 51. Arquitetura do Kit Modular de Desenvolvimento.

Devido a grande variedade de pinos do microcontrolador e a necessidade de eliminar as

configurações de hardware pelo usuário, optou-se por não utilizar o mesmo pino do MCU para mais

de uma função. Exceto 3 pinos, os demais não são utilizados por mais de um módulo no kit

projetado, minimizando problemas de mau funcionamento dos componentes periféricos. A Tabela

12 apresenta a relação dos pinos do PIC18F4520 com a sua função associada em cada módulo do

kit.

Tabela 12. Relação dos pinos do PIC18F4520 com os módulos do kit

PIC18F4520 Módulo Controlador

Módulo I²C

Módulo Motor de Passo

Módulo Display LCD

Módulo Teclado Matricial Pino Nome

1 RE3 Reset 2 RA0 Sinal digital 1 3 RA1 Sinal digital 2 4 RA2 Sinal digital 3 5 RA3 Sinal digital 4 6 RA4 Chave do PWM 1 7 RA5 Chave do PWM 2 8 RE0 Controle RW 9 RE1 Controle E

10 RE2 Controle RS 13 RA7 Osc. Ext. 14 RA6 Osc. Ext. 15 RC0 16 RC1 Sinal PWM 2 17 RC2 Sinal PWM 1 18 RC3 SCL

* A função ICSP corresponde à gravação In-Circuit do microcontrolador PIC

Barramento KMD

Módulo Controlador

Módulo Teclado Matricial

Módulo Motor de

Passo

Módulo Display LCD

Módulo I2C

Page 93: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

78

Tabela 12. Relação dos pinos do PIC18F4520 com os módulos do kit (continuação)

PIC18F4520 Módulo Controlador

Módulo I²C

Módulo Motor de Passo

Módulo Display LCD

Módulo Teclado Matricial Pino Nome

19 RD0 Coluna 1 20 RD1 Coluna 2 21 RD2 Coluna 3 22 RD3 Coluna 4 23 RC4 SDA 24 RC5 25 RC6 TX 26 RC7 RX 27 RD4 Linha 1 28 RD5 Linha 2 29 RD6 Linha 3 30 RD7 Linha 4 33 RB0 INT 0 34 RB1 INT 1 35 RB2 INT 2 36 RB3 Led I/O 37 RB4 D4 38 RB5 ICSP* D5 39 RB6 ICSP* D6 40 RB7 ICSP* D7

* A função ICSP corresponde à gravação In-Circuit do microcontrolador PIC

Como pode-se observar na Tabela 12, os únicos pinos que apresentam mais de uma função

no kit são os RB5, RB6 e RB7. Esses pinos correspondem à função de gravação In-Ciruit do

microcontrolador, possibilitando gravar o software no PIC sem a necessidade de retirá-lo do

circuito. Alguns pinos do microcontrolador não foram utilizados em nenhum dos módulos devido à

preferência em agrupar a funcionalidade em um conjunto de pinos pertencentes a uma mesma porta

de E/S do microcontrolador, facilitando a manipulação dos bits pelo programador.

É importante destacar que embora alguns pinos não tenham utilidade no kit proposto neste

trabalho, eles também pertencem ao Barramento KMD, totalizando 39 linhas no barramento.

As definições de hardware permitiram que os módulos pudessem ser construídos

virtualmente com um software de simulação, onde são apresentados a seguir.

Page 94: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

79

3.5 IMPLEMENTAÇÃO VIRTUAL

A implementação virtual consiste em selecionar os principais componentes dos módulos e

simular a comunicação do microcontrolador, contido no módulo principal, com os componentes

periféricos, contidos nos módulos periféricos. Seu principal objetivo é validar o funcionamento dos

componentes de acordo com os requisitos levantados e a arquitetura de hardware projetada.

3.5.1 Seleção dos componentes virtuais

A virtualização foi iniciada com a seleção dos componentes virtuais no software Proteus.

Este software foi escolhido devido à possibilidade de simular aplicações de microcontroladores com

uma fidelidade satisfatória aos componentes reais em relação ao projeto. Desta forma, não se

pretende determinar o circuito real dos módulos, mas sim, determinar os componentes básicos do

sistema para validação dos módulos quanto a sua funcionalidade.

Os componentes selecionados para os módulos são apresentados a seguir. Para que seja

realizada a simulação dos módulos periféricos, o microcontrolador e o reset, identificados na Figura

52, necessitam estar presentes. Isso não implica em um MCU e um reset em cada módulo

fisicamente, mas apenas para simulação dos módulos. Assim, mesmo que sejam necessários para a

simulação, não serão apresentados como componentes dos módulos periféricos.

Para o Módulo Controlador, na Figura 52, além do microcontrolador PIC18F4520

denominado de PIC, foram selecionados os seguintes componentes:

RESET: chave tipo botão, ligada ao pino RE3, para reiniciar o microcontrolador;

INT. EXT. 0, INT. EXT. 1 e INT. EXT. 2: chaves tipo botão, ligadas ao pino RB0, RB1

e RB2, respectivamente, para gerar interrupção externa;

LED I/O: led ligado ao pino RB3, para iterações com o usuário; e

RS-232: componente COMPIM com a interface do conector DB9, com os pinos RXD e

TXD ligado aos pinos RC7 e RC6 do PIC, respectivamente, para comunicação RS-232.

Page 95: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

80

Figura 52. Circuito de simulação do Módulo Controlador.

O componente COMPIM corresponde a um componente virtual o qual pode ser configurado

para simular uma conexão com uma porta serial (COM) de um computador. Desta forma, pode-se

abrir uma conexão UART via Hyper Terminal2 com as mesmas configurações do COMPIM,

fazendo com que o teclado do computador se comunique com o Proteus. Esse componente

apresenta uma ilustração do conector DB9, normalmente utilizado para comunicação RS-232, com

o pino de aterramento (pino 5 do DB9) já implementado internamente.

Para o Módulo I²C, na Figura 53, foram selecionados os seguintes componentes:

RTC: circuito integrado correspondente a um relógio de tempo real como um dispositivo

escravo I²C, com os seus pinos SCL e SDA ligados aos pinos RC3 e RC4 do PIC,

respectivamente;

2 Software que acompanha o sistema operacional Windows XP

Page 96: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

81

EEPROM: circuito integrado correspondente a uma memória EEPROM de 4 kbytes

como outro dispositivo escravo I²C, com os seus pinos SCL e SDA ligados aos pinos

RC3 e RC4 do PIC, respectivamente; e

ANALISADOR I2C: componente I2C DEBUGGER, com os pinos SCL e SDA ligados

aos pinos RC3 e RC4 do PIC, respectivamente.

Figura 53. Circuito de simulação do Módulo I²C.

O componente I2C DEBUGGER corresponde a um instrumento de depuração virtual para

comunicação I²C. Ele funciona como um sniffer3 que captura os bits transmitidos no barramento

I²C, formado pelas linhas dos pinos RC3 e RC4 do microcontrolador, para que sejam analisados.

Com ele é possível identificar quais os dados que estão sendo transmitidos e possíveis problemas na

comunicação do protocolo I²C entre os dispositivos envolvidos.

Para o Módulo Motor de Passo, na Figura 54, foram selecionados os seguintes componentes:

CI_NOT: circuito integrado de portas lógicas digitais tipo “not”, com os pinos:

o 1 de entrada da porta A ligado ao pino RA4 do PIC e o 2 de saída é ligado à uma das

entradas da porta B do CI_AND;

3 Ferramenta ou componente que captura os bits ou pacotes transmitidos em um determinado barramento de comunicação.

Page 97: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

82

o 3 de entrada da porta B ligado ao pino RA5 do PIC e o 4 de saída é ligado à uma das

entradas da porta D do CI_AND;

CI_AND: circuito integrado de portas lógicas digitais tipo “and”, com os pinos:

o 1 e 2 de entrada da porta A ligados aos pinos RC2 e RA4 do PIC e o 3 de saída é

ligado à linha PWM1_B3;

o 4 de entrada da porta B ligado ao pino RC2 do PIC, o 5 de entrada da porta B ligado

ao pino 2 de saída da porta A do CI_NOT e o 6 de saída é ligado à linha PWM1_B1;

o 9 de entrada da porta C ligados ao pino RC1 do PIC, o 10 de entrada da porta C

ligado ao RA5 do PIC e o 8 de saída é ligado à linha PWM2_B4; e

o 12 de entrada da porta D ligado ao pino RC1 do PIC, o 13 de entrada da porta D

ligado ao pino 4 de saída da porta B do CI_NOT e o 11 de saída é ligado à linha

PWM2_B2;

MOTOR 1 e MOTOR 2: motor de passo unipolar virtual com 6 linhas (2 center-tape e 4

bobinas) com as linhas de center-tape ligadas a fonte de 12 volts;

DRIVER: circuito integrado correspondente a uma driver de controle de periféricos, com

os pinos:

o 1B, 2B, 3B e 4B ligados aos pinos RA0, RA1, RA2 e RA3 do PIC, respectivamente;

o 5B ligado a linha PWM1_B1, correspondente a saída do CI_AND:B;

o 6B ligado a linha PWM2_B2, correspondente a saída do CI_AND:D;

o 7B ligado a linha PWM1_B3, correspondente a saída do CI_AND:A;

o 8B ligado a linha PWM2_B4, correspondente a saída do CI_AND:C;

o 1C, 2C, 3C e 4C ligados as linhas M1_B1, M1_B2, M1_B3 e M1_B4 do MOTOR 1,

respectivamente; e

o 5C, 6C, 7C e 8C ligados as linhas M2_B1, M2_B2, M2_B3 e M2_B4 do MOTOR 2,

respectivamente.

Page 98: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

83

Figura 54. Circuito de simulação do Módulo Motor de Passo.

As linhas M1_B1, M1_B2, M1_B3 e M1_B4 correspondem as linhas de energização das

bobinas 1, 2, 3 e 4 do motor de passo 1, respectivamente, denominado de MOTOR 1. As linhas

M2_B1, M2_B2, M2_B3 e M2_B4 correspondem as linhas de energização das bobinas 1, 2, 3 e 4

do motor de passo 2, respectivamente, denominado de MOTOR 2.

Para o Módulo Display LCD, na Figura 55, foi selecionado apenas um display LCD,

denominado de LCD, com os pinos VSS, D0, D1, D2 e D3 ligados ao terra, o pino VDD ligado à

fonte de 5 volts, os pinos RS, RW, E, D4, D5, D6 e D7 ligados aos pinos RE2, RE0, RE1, RB4,

RB5, RB6 e RB7 do PIC, respectivamente.

Os pinos do LED backlight não estão presentes no componente LCD, pois na biblioteca de

componentes contida no Proteus, não foi encontrado nenhum display LCD com pinos do LED

backlight.

Page 99: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

84

Figura 55. Circuito de simulação do Módulo Display LCD.

O pino de controle do contraste, VEE, permaneceu aberto, tendo em vista não ter efeitos na

simulação, independente da tensão aplicada.

Para o Módulo Teclado Matricial, na Figura 56, foram selecionadas chaves do tipo botão

para montar a matriz, sendo elas denominadas:

L1C1, L1C2, L1C3 e L1C4: com um terminal ligado ao pino RD0 e o outro ligado ao

pino RD4, RD5, RD6 e RD7 do microcontrolador, respectivamente;

L2C1, L2C2, L2C3 e L2C4: com um terminal ligado ao pino RD1 e o outro ligado ao

pino RD4, RD5, RD6 e RD7 do microcontrolador, respectivamente;

L3C1, L3C2, L3C3 e L3C4: com um terminal ligado ao pino RD2 e o outro ligado ao

pino RD4, RD5, RD6 e RD7 do microcontrolador, respectivamente;

L4C1, L4C2, L4C3 e L4C4: com um terminal ligado ao pino RD3 e o outro ligado ao

pino RD4, RD5, RD6 e RD7 do microcontrolador, respectivamente;

As colunas da matriz correspondente aos pinos RD4, RD5, RD6 e RD7 do microcontrolador

são ligadas a fonte de 5 volts pelos pinos através de resistores de pull-up. As linhas da matriz

correspondem aos pinos RD0, RD1, RD2 e RD3 do MCU.

Page 100: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

85

Figura 56. Circuito de simulação do Módulo Teclado Matricial.

3.5.2 Validação da Implementação Virtual

Para validar as implementações dos módulos virtualmente, foi necessário elaborar alguns

experimentos simples de programação do microcontrolador PIC. Para isso, foi utilizado o software

MikroC PRO for PIC, o qual possibilita desenvolver um software em linguagem C para

microcontroladores PIC, além de já dispor de bibliotecas e manuais das mesmas que facilitam o

desenvolvimento do software pelo programador. Ao compilar o código fonte, é gerado um arquivo

HEX4 que, nessa etapa do projeto, é utilizado na validação das ligações dos componentes

periféricos selecionados com o PIC18F4520.

4 Extensão do arquivo utilizado para gravação do código fonte no microcontrolador.

Page 101: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

86

Simulação do Módulo Controlador

Para simulação do Módulo Controlador foram desenvolvidas duas atividades distintas, sendo

uma para validação do funcionamento das chaves de interrupção externa, denominada de

Experimento A, e outra para validação da comunicação RS-232, denominada de Experimento B. Na

primeira atividade, estão envolvidos também, além das chaves INT. EXT. 0, INT. EXT. 1 e INT.

EXT. 2, o LED I/O.

O Experimento A consiste em: (i) ligar o LED I/O e (ii) habilitar as interrupções externas do

PIC. No tratamento da interrupção externa, o LED I/O deve ser ligado, caso esteja desligado, ou

desligado, caso esteja ligado. Ao compilar o código fonte, contido na Figura 73 de Apêndice A, e

gravar o arquivo HEX gerado no PIC18F4520 virtual, o sistema se comportou conforme esperado.

Toda a fez que o os botões INT. EXT. 0, INT. EXT. 1 ou INT. EXT. 2 foram pressionados, uma

interrupção foi gerada e tratada pela função “interrupt()”, responsável pelo tratamento das

interrupções, ligando/desligando o LED I/O (dependendo da sua situação anterior à interrupção).

O Experimento B consiste em: (i) enviar o conjunto de caracteres “alo mundo!”, seguido dos

caracteres de quebra de linha (0x13 e 0x10), para o cliente Hyper Terminal e (ii) enviar de volta

para o cliente Hiper Terminal todo caractere enviado para o PIC. Ao compilar o código fonte,

contido na Figura 74 do Apêndice B, e gravar o arquivo HEX gerado no PIC18F4520 virtual, o

sistema também se comportou conforme esperado. Ao iniciar a simulação, o MCU enviou os

caracteres iniciais “alo mundo!” mais a quebra de linha, seguindo para o estado de leitura

indefinidamente. Os caracteres “teste rs-232” foram digitados no Hyper Terminal e, para cada um

deles, o PIC realizou a leitura correta dos mesmos, enviando novamente para o Hyper Terminal o

caractere lido. A Figura 57 mostra uma imagem do cliente Hyper Terminal na validação do o

Experimento B.

Figura 57. Janela do Hyper Terminal na validação do Experimento B.

Page 102: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

87

Os resultados das simulações dos Experimentos A e B foram considerados bem sucedidos,

atendendo as expectativas do enunciado dos mesmos. Em ambos os experimentos, o botão RESET

foi testado e validado sua funcionalidade, sendo melhor visualizado na Figura 57, através da

repetição dos caracteres “alo mundo!” no Hyper Terminal, como indicado pela seta, sendo que esses

caracteres só devem aparecer no início do programa.

No Experimento B, foi utilizada a biblioteca UART do compilador MicroC PRO for PIC.

Algumas das funções da biblioteca, utilizadas nos experimentos, estão descritas no Anexo III desse

trabalho.

Simulação do Módulo I²C

Para simulação do Módulo I²C, foram desenvolvidas duas atividades distintas, sendo uma

para validação do funcionamento da comunicação I²C com a EEPROM, denominada de

Experimento C, e outra para validação da comunicação I²C com o RTC, denominada de

Experimento D.

O Experimento C consiste em: (i) iniciar a comunicação I²C, sendo o PIC como mestre do

barramento, (ii) escrever o valor 9 no endereço 0x00 da EEPROM, (iii) escrever os valores 8, 7, 6 e

5 nos endereços 0x01, 0x02, 0x03 e 0x04 da EEPROM, de uma só vez e (iv) ler o valor contido no

endereço 0x02 da EEPROM. Ao compilar o código fonte, contido na Figura 75 do Apêndice C, e

gravar o arquivo HEX gerado no PIC18F4520 virtual, o sistema atendeu as expectativas do

enunciados para o experimento.

Na Figura 58 é apresentada a janela de depuração do ANALISADOR I2C, onde estão

destacados os itens do experimento, demonstrando um resultado bem sucedido do algoritmo. Nela é

possível observar os sinais enviados pelo mestre, sublinhado em vermelho, enquanto o mesmo

ocupa o barramento e os sinais enviados pelo escravo, destacado em azul.

Page 103: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

88

Figura 58. Janela do ANALISADOR I2C do Experimento C.

O Experimento D consiste em: (i) iniciar a comunicação I²C, sendo o PIC como mestre do

barramento, (ii) atualizar todos os campos do RTC de uma só vez e (iii) atualizar cada campo do

RTC um por um. Ao compilar o código fonte, contido na Figura 76 do Apêndice D, e gravar o

arquivo HEX gerado no PIC18F4520 virtual, o sistema também se comportou conforme esperado.

Na Figura 59 é apresentada a janela de depuração do ANALISADOR I2C, onde estão destacados os

itens do Experimento D, demonstrando um resultado bem sucedido do algoritmo.

Page 104: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

89

Figura 59. Janela do ANALISADOR I2C do Experimento D.

Mesmo que sejam atualizados com os mesmos valores, existe uma diferença de

aproximadamente 1.56 milissegundos entre o primeiro sinal de Start e o último sinal de Stop da

atualização dos itens (ii) e (iii) desse experimento, mostrando que a atualização do item (iii) é

aproximadamente 250% mais lenta que a do item (ii). Em sistemas onde a velocidade de

comunicação mestre-escravo é crítica, deve-se dar prioridade, na comunicação serial síncrona I²C,

para atualizações de endereços consecutivos a partir de um único chamado do mestre.

O Proteus ainda permite que seja visualizada a data armazenada no RTC, ajudando o

desenvolvedor na depuração do código fonte e validar o Experimento D. A janela do RTC, após a

execução do algoritmo, é apresentada na Figura 60.

Figura 60. Janela do RTC com a data gravada no Experimento D.

Em ambos os experimentos C e D, foi utilizada a biblioteca I2C do compilador MicroC PRO

for PIC. Algumas das funções da biblioteca, utilizadas nos experimentos, estão descritas no Anexo

IV desse trabalho.

Page 105: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

90

Simulação do Módulo Motor de Passo

Para simulação do Módulo Motor de Passo, foram desenvolvidas duas atividades distintas,

sendo uma para validação do controle do MOTOR 1 por controle do acionamento direto das

bobinas através das portas digitais do PIC, denominado de Experimento E, e outra para validação

do controle do MOTOR 2 por chaveamento digital de sinais PWM aplicados nas bobinas,

denominado de Experimento F.

O Experimento E consiste em girar o MOTOR 1 em sentido horário ou anti-horário,

movendo-se em passos completos ou meio passo, sendo eles determinados por um valor qualquer

antes do início do giro do MOTOR 1. Ao compilar o código fonte, contido na Figura 77 do

Apêndice E, e gravar o arquivo HEX gerado no PIC18F4520 virtual, o motor de passo realizou o

giro de acordo com a lógica aplicada nos pinos de acionamento do MOTOR 1, cumprindo o

objetivo do enunciado para o Experimento D.

O algoritmo não prevê a alteração do sentido ou do divisor de passo durante a simulação,

pois não faz parte do escopo do experimento. Nesse caso, seria necessário um melhor tratamento de

mudanças no sentido e no passo do motor em relação às mudanças em tempo real.

É apresentado um gráfico dos acionamentos lógicos aplicados no MOTOR 1 em sentido

horário, na Figura 61, e anti-horário, na Figura 62, tanto em passo completo quanto em meio passo.

(a) Passo completo

(b) Meio passo

Figura 61. Gráfico do acionamento do MOTOR 1 em sentido horário no Experimento E.

Page 106: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

91

O gráfico foi gerado a partir de uma ferramenta gráfica do Proteus, chamada de Graph

Mode.

(a) Passo completo

(b) Meio passo

Figura 62. Gráfico do acionamento do MOTOR 1 em sentido anti-horário no Experimento E.

O Experimento F consiste em girar o MOTOR 2 em sentido horário em micro-passos, sendo

que para o experimento foi utilizado um divisor de 1/8 (um oitavo) de passo. Ao compilar o código

fonte, contido na Figura 78 do Apêndice F, e gravar o arquivo HEX gerado no PIC18F4520 virtual,

o motor de passo realizou o giro através do chaveamento dos sinais PWM aplicados aos

enrolamentos do MOTOR 2, como pode ser observado na Figura 63, cumprindo o objetivo do

enunciado para o Experimento F.

Page 107: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

92

(a)

(b)

Figura 63. Chaveamento dos sinais PWM no Experimento F.

A Figura 63 representa um osciloscópio virtual onde podem ser analisados os sinais digitais

aplicados nas bobinas. Em (a) o sinal PWM 1 é chaveado para a bobina 1 do MOTOR 2, tendo

70.7% do período PWM ocupado com o ciclo ativo e o sinal PWM 2 é chaveado para a bobina 4,

Page 108: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

93

tendo 100% do período PWM ocupado com o ciclo ativo. Em (b) o sinal PWM 1 é chaveado para a

bobina 3 do MOTOR 2, tendo 100% do período PWM ocupado com o ciclo ativo e o sinal PWM 2

é chaveado para a bobina 2, tendo 92.4% do período PWM ocupado com o ciclo ativo.

No Experimento F, foi utilizada a biblioteca PWM do compilador MicroC PRO for PIC.

Algumas das funções da biblioteca, utilizadas nesse experimento, estão descritas no Anexo V desse

trabalho.

Simulação do Módulo Display LCD

Para simulação do Módulo Display LCD, foi desenvolvida uma atividade no qual deve-se

apresentar uma contagem de 0 até 100, repetindo o processo continuamente ao retornar para o valor

0 depois do valor 100. Esse experimento foi denominado de Experimento G. Ao compilar o código

fonte, contido na Figura 79 do Apêndice G, e gravar o arquivo HEX gerado no PIC18F4520 virtual,

o LCD cumprindo o objetivo do enunciado para o Experimento G. Como Resultado da simulação, é

apresentada a Figura 64 com imagens do LCD em execução.

Figura 64. LCD com contagem de 0 até 100 no Experimento G.

No Experimento G, foi utilizada a biblioteca LCD do compilador MicroC PRO for PIC.

Algumas das funções da biblioteca, utilizadas nesse experimento, estão descritas no Anexo VI desse

trabalho.

Page 109: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

94

Simulação do Módulo Teclado Matricial

Para simulação do Módulo Teclado Matricial, foi desenvolvida uma atividade na qual deve-

se apresentar no display a identificação da tecla pressionada a partir de uma varredura no teclado

matricial. Esse experimento foi denominado de Experimento H. Ao compilar o código fonte,

contido na Figura 80 do Apêndice H, e gravar o arquivo HEX gerado no PIC18F4520 virtual, a

matriz de interconexão de chaves cumprindo o objetivo do enunciado para o Experimento H. Como

Resultado da simulação, é apresentada a Figura 64 com imagens do LCD após a ação de pressionar

uma das teclas da matriz.

Figura 65. Identificação da chave pressionada no Experimento H.

Utilizou-se o LCD devido a validação prévia do mesmo no Experimento G, facilitando a

validação do Experimento H. O valor apresentado na igualdade, “1,2” corresponde a coordenada da

chave pressionada na matriz, sendo ela identificada como linha 1 e coluna 2.

As atividades desenvolvidas para validar o funcionamento dos módulos do kit são utilizadas

para validar os protótipos físicos dos módulos. A etapa de implementação física é descrita na seção

seguinte.

Page 110: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

95

3.6 IMPLEMENTAÇÃO FÍSICA

A implementação física consiste em determinar os circuitos dos módulos e aplicar os testes

de validação utilizados na etapa de simulação. Nesta etapa do trabalho, não é determinada a placa

de circuito impresso de confecção final dos módulos, mas, para o desenvolvimento dos protótipos

físicos, são apresentadas as principais diferenças entre os circuitos de simulação e o de prototipação

dos módulos, além da confecção das PCI (Placa de Circuito Impresso) de validação física. Para o

desenvolvimento do circuito e do layout da placa de circuito impresso de cada módulo, foi utilizado

o software Eagle, na versão 5.11.

3.6.1 Diferenças entre os circuitos virtuais e físicos dos módulos

As principais diferenças entre os circuitos implementados virtualmente com os projetados

para a confecção dos protótipos são:

Módulo Controlador

o Elaboração do circuito da alimentação de 12 volts e 5 volts;

o Elaboração do circuito do oscilador externo conectado ao PIC;

o Elaboração do circuito do conector de gravação ICSP; e

o Substituição do componente COMPIM pelo circuito típico RS-232 contendo o

componente MAX232.

Módulo I2C

o Adição de capacitores de desacoplamento entre os pinos VCC e o GND do RTC e da

EEPROM.

Módulo Motor de Passo

o Elaboração dos circuitos reguladores de tensão independentes para o MOTOR 1 e

MOTOR 2; e

o Adição de capacitores de desacoplamento entre os pinos VCC e o GND do CI_AND

e CI_NOT.

Módulo Display LCD

o Elaboração do circuito regulador de tensão LED backlight;

Page 111: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

96

o Adição de um trimpot para o controle de contraste; e

o Adição do conector do display LCD.

Em todos os módulos

o Adição do conector do Barramento KMD.

No Módulo Teclado Matricial, foi mantido o mesmo circuito da simulação.

As figuras dos circuitos esquemáticos desenvolvidos para cada módulo estão contidos nos

Apêndice I (Módulo Controlador), Apêndice J (Módulo I²C), Apêndice K (Módulo Motor de

Passo), Apêndice L (Módulo Display LCD) e Apêndice M (Módulo Teclado Matricial).

3.6.2 Prototipação do kit

Para a prototipação dos módulos do kit, foi necessário desenvolver os layouts5 das placas de

circuito impresso (posicionando os componentes na placa e traçando as trilhas de conexão entre

eles), preparar a PCI e, por fim, soldar os componentes.

A Tabela 13 apresenta a relação das figuras presentes nos apêndices desse trabalho,

contendo o footprint6 (coluna 3) e o layer7 (coluna 4) das placas, com os módulos do kit (coluna 1).

Foi a partir dessas imagens que os protótipos foram confeccionados.

Tabela 13. Relação de as imagens da PCI com os módulos do kit

Módulo Apêndice Footprint Layer Controlador Apêndice N Figura 86 Figura 87

I²C Apêndice O Figura 88 Figura 89 Motor de Passo Apêndice P Figura 90 Figura 91 Display LCD Apêndice Q Figura 92 Figura 93

Teclado Matricial Apêndice R Figura 94 Figura 95

Para preparar as placas de circuito impresso com os layers criados foi adaptado o método

térmico de confecção de PCI (SOARES, 2008), cujos passos de desenvolvimento foram:

1. Imprimir o layer em transparência com uma impressora laser;

5 Representação gráfica da placa de circuito impresso. 6 Máscara do componente real na placa de circuito impresso. 7 Face com as trilhas de uma placa de circuito impresso.

Page 112: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

97

2. Limpar o cobre da placa com lã de aço;

3. Untar o cobre da placa com Thinner;

4. Posicionar a transparência sobre cobre da placa com a tinta da impressão voltada para o

cobre;

5. Aplicar um ferro de passar, em temperatura média, durante 3 à 5 minutos sobre a

transparência;

6. Colocar a placa de molho em água fria de 1 à 2 minutos; e

7. Retirar, cuidadosamente, a transparência da placa.

Com as trilhas sobre o cobre, a placa foi imersa em uma solução de percloreto de ferro

diluído em água para corrosão do cobre. Após a completa remoção do cobre exposto na solução, a

placa foi limpa com água e a tinta da impressão retirada com lã de aço.

Para a soldagem dos componentes, foram realizados furos na placa, considerando que os

componentes são dispostos no lado da placa que não contém cobre e a soldagem é aplicada na face

da placa com cobre. Depois de soldados os componentes, os módulos aproximaram-se muito das

imagens em 3D geradas a partir dos layouts desenvolvidos, apresentadas na Figura 66 (Módulo

Controlador), Figura 67 (Módulo I²C), Figura 68 (Módulo Motor de Passo), Figura 69 (Módulo

Display LCD) e Figura 70 (Módulo Teclado Matricial).

Figura 66. Imagem em 3D do protótipo do Módulo Controlador.

Page 113: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

98

Figura 67. Imagem em 3D do protótipo do Módulo I²C.

Figura 68. Imagem em 3D do protótipo do Módulo Motor de Passo.

Page 114: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

99

Figura 69. Imagem em 3D do protótipo do Módulo Display LCD.

Figura 70. Imagem em 3D do protótipo do Módulo Teclado Matricial.

As imagens foram geradas a partir do comando “run” no campo de inserção de comando do

Eagle em conjunto com o software POV-Ray, para geração de imagens em 3D referente ao layout

criado no Eagle.

Page 115: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

100

3.6.3 Modularidade dos protótipos

Como é possível observar nas imagens dos protótipos dos módulos apresentados na

Subseção anterior, dois módulos continham apenas um conector do Barramento KMD, enquanto

que os outros três possuem dois conectores (na base maior do retângulo da placa). Desta forma, os

módulos que contam com dois conectores KMD podem ser combinados livremente na montagem

do kit, enquanto que os com apenas um único conector devem ser utilizados nas extremidades da

combinação.

Assim, foi possível combinar os módulos periféricos conjuntamente com o módulo

principal, formando diferentes combinações, considerando-se que o Módulo Motor de Passo e o

Módulo Controlador sejam posicionados nas extremidades do kit.

3.6.4 Validação dos protótipos

Para uma adequada validação dos protótipos físicos, os mesmos arquivos HEX utilizados na

validação virtual dos módulos foram gravados fisicamente no PIC18F4520 do Módulo Controlador.

Além disso, para validar os aspectos de modularidade de cada protótipo, os mesmos foram

combinados em diferentes formas possíveis de utilização do kit para realização dos experimentos.

A Tabela 14 apresenta as combinações em que foram testados os módulos, sendo que a

primeira coluna identifica a validação realizada, a segunda coluna relaciona o arquivo HEX do

experimento realizado na validação virtual com a combinação dos módulos, representados pelas

colunas seguintes, tendo em vista que as colunas das posições 1 e 5 representam os módulo situados

nas extremidades da combinação no kit, enquanto que as colunas das posições 2, 3 e 4 representam

os módulos situados no meio.

Tabela 14. Validação dos experimentos realizados nas combinações dos módulos

Validação Experimento Combinação dos Módulos Posição 1 Posição 2 Posição 3 Posição 4 Posição 5

1 A Controlador I²C Teclado Matricial

Display LCD

Motor de Passo

2 B Controlador I²C Display LCD

Teclado Matricial

Motor de Passo

3 C Controlador Teclado Matricial I²C Display

LCD Motor de

Passo

4 D Controlador Teclado Matricial

Display LCD I²C Motor de

Passo

Page 116: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

101

Tabela 14. Validação dos experimentos realizados nas combinações dos módulos (continuação)

Validação Experimento Combinação dos Módulos Posição 1 Posição 2 Posição 3 Posição 4 Posição 5

5 E Controlador Display LCD

Teclado Matricial I²C Motor de

Passo

6 F Controlador Display LCD I²C Teclado

Matricial Motor de

Passo

7 G Controlador I²C Teclado Matricial

Display LCD

Motor de Passo

8 H Controlador I²C Display LCD

Teclado Matricial

Motor de Passo

9 C* Controlador Teclado Matricial I²C Display

LCD Motor de

Passo

10 D* Controlador Teclado Matricial

Display LCD I²C Motor de

Passo

* Recompilado o código fonte com funções para apresentar resultados no display LCD

Os procedimentos para validação foram realizados com todos os módulos conectados,

mesmo que desnecessariamente, a fim de verificar algum problema nas trilhas das placas. Sendo

assim, nenhum problema foi identificado. Com exceção das validações 9 e 10, os resultados das

aplicações gravadas no PIC foram idênticos às simuladas na validação virtual.

As validações 9 e 10 foram criadas para comprovar a veracidade dos resultados das

validações 3 e 4, correspondente aos dos experimentos C e D. Foram acrescentadas as funções

criadas para o display LCD, no experimento G, para apresentar no display as informações

armazenadas nos endereços da memória EEPROM, no Experimento C, e as informações

armazenadas no RTC, no Experimento D. Logo, o código teve de ser recompilado e gravado no

PIC.

Na Figura 71 é apresentado o resultado da validação 9, onde:

(a) São gravados os valores 8, 7, 6 e 5 nos endereços 0x01, 0x02, 0x03 e 0x04 da EEPROM;

(b) Apresentado o conteúdo do endereço 0x02, contendo o valor 7;

(c) Apresentado o conteúdo do endereço 0x03, contendo o valor 6;

(d) Apresentado o conteúdo do endereço 0x04, contendo o valor 5;

Page 117: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

102

(a) (b)

(c) (d)

Figura 71. Resultado da validação 9 com os protótipos físicos.

Na Figura 72 é apresentado o resultado da validação 10, onde:

(a) São gravados os valores no RTC:

o 1 para no endereço correspondente ao segundos (0x00);

o 2 para no endereço correspondente ao minutos (0x01);

o 3, em formato americano, para no endereço correspondente ao horas (0x02);

o 4 para no endereço correspondente ao dia da semana (0x03);

o 5 para no endereço correspondente ao dia do mês (0x04);

o 6 para no endereço correspondente ao mês (0x05);

o 7 para no endereço correspondente ao ano (0x06);

(b) Apresentado o conteúdo atual dos endereços formatado para o display LCD;

Page 118: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

103

(a) (b)

Figura 72. Resultado da validação 10 com os protótipos físicos.

Desta forma, considerou-se que os protótipos foram aprovados nos testes, dando início a

confecção das placas finais dos módulos do kit.

3.7 CONFECÇÃO DAS PLACAS FINAIS DOS MÓDULOS DO KIT

Nesta última etapa de implementação do Kit Modular de Desenvolvimento, são expostas

algumas mudanças dos módulos em relação à usabilidade das placas no desenvolvimento dos

experimentos. Além disso, é apresentado o orçamento dos custos de confecção dos protótipos

físicos e das placas finais dos módulos.

3.7.1 Mudanças dos protótipos para as placas finais

Durante a validação da implementação física, observou-se que algumas características

físicas das placas poderiam ser aprimoradas, para proporcionar maior usabilidade dos módulos. Para

não invalidar os processos das etapas anteriores do projeto, tanto os requisitos levantados quanto os

circuitos dos protótipos não foram afetados pelas alterações.

A Tabela 15 relaciona a mudança aplicada (coluna 1) com os módulos do kit (coluna 2),

além de uma justificativa de sua aplicação (coluna 3).

Page 119: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

104

Tabela 15. Mudanças dos protótipos para as placas finais dos módulos

Mudança Módulos afetados Justificativa Adicionado um conector do Barramento KMD

Controlador Motor de Passo

Possibilitar que o Módulo seja posicionado de forma aleatória no kit

Substituído um dos conectores do Barramento KMD

I²C Display LCD

Teclado Matricial

Possibilitar que os módulos sejam conectados sem necessidade de componentes externos

Adicionadas identificações dos pinos do Barramento KMD

Controlador I²C

Motor de Passo Display LCD

Teclado Matricial

Possibilitar que o usuário identifique os pinos do Barramento KMD na própria placa

Adicionadas identificações dos recursos da placa

Controlador I²C

Motor de Passo Display LCD

Teclado Matricial

Possibilitar que o usuário identifique os componentes de um determinado recurso do módulo na própria placa

Reposicionados os componentes no módulo

Controlador Motor de Passo

Agrupamento dos componentes na placa de acordo com sua funcionalidade

Adicionado componente de seleção do oscilador externo

Controlador

Possibilitar que o usuário escolha entre utilizar o oscilador externo ou o oscilador interno do MCU, liberando os pinos RA7 e RA6 para serem usados em um determinado projeto

Substituídos conectores dos motores de passo Motor de Passo

Possibilitar que o usuário conecte os motores de passo a partir de um conector padrão de fácil acesso

As figuras com o footprint das placas finais estão expostas no Apêndice S desse trabalho.

Após a execução das alterações finais, foram gerados os arquivos necessários para produção

das placas industrialmente. Esses arquivos são conhecidos como “Gerber” e podem ser gerados a

partir do software de confecção de PCI, Eagle, nesse caso.

3.8 CUSTOS DO PROJETO

Como forma de comparar o custo na aquisição de um kit de desenvolvimento comercial

apresentado na Tabela 1 da Seção 1.1 com o kit proposto e desenvolvido nesse trabalho, esta seção

apresenta os valores de compra dos componentes eletrônicos utilizados nos protótipos dos módulos

e a diferença entre os custos de confecção das placas dos protótipos físicos e das placas finais.

Page 120: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

105

3.8.1 Custo dos componentes

Foram realizados três pedidos no total, sendo a primeira em 30 de março de 2011, a segunda

em 08 de abril de 2011 e a terceira em 14 de abril de 2011, em duas empresas diferentes, Ichip

Tecnologia Ltda. – http://www.soldafria.com.br – e Infotronic Componentes Eletronicos –

http://www.infotronic-pe.com/loja/.

Os custos dos componentes do kit modular estão separados pelos módulos nas tabelas desta

seção, sendo possível identificar o componente eletrônico pertencente ao módulo, a quantidade de

componentes utilizado no módulo e o valor total de custo de compra dos componentes no módulo.

Tabela 16. Custo de compra dos componentes do protótipo do Módulo Controlador

Componente Valor Unitário Qtd. Valor Total Barra de Pinos 1x40 vias 20mm 180 graus R$ 0,72 1 R$ 0,72 Capacitor Disco Cerâmico 15pF x 50V R$ 0,09 3 R$ 0,27 Capacitor Eletrolítico 10uF x 25V R$ 0,10 1 R$ 0,10 Capacitor Eletrolítico 1uF x 50V R$ 0,15 4 R$ 0,60 Capacitor Eletrolítico 47uF x 25V R$ 0,15 1 R$ 0,15 Chave Tactil 4,5x4,5x3,8mm 4 Terminais R$ 0,39 4 R$ 1,56 Circuito Integrado LM7805 R$ 0,99 1 R$ 0,99 Circuito Integrado MAX232 (ICL232, HIN232) R$ 1,96 1 R$ 1,96 Conector DB9 Femea 90 Graus Solda Placa R$ 1,49 1 R$ 1,49 Cristal 16 MHz Meia caneca - HC49S R$ 0,75 1 R$ 0,75 Diodo 1N4007 R$ 0,15 2 R$ 0,30 Dissipador 180357 R$ 1,79 1 R$ 1,79 Jack J4 DC-005 P/ Placa 2,5mm x 5,5mm R$ 0,39 1 R$ 0,39 Led Azul Difuso 3mm R$ 0,66 1 R$ 0,66 Led Verde Difuso 3mm R$ 0,15 1 R$ 0,15 Led vermelho Difuso 3mm R$ 0,15 1 R$ 0,15 Microcontrolador PIC18F4520-I/P R$ 23,20 1 R$ 23,20 Resistor de 270R Carbono 5% 1/4W R$ 0,10 2 R$ 0,20 Resistor de 330R Carbono 5% 1/4W R$ 0,10 3 R$ 0,30 Resistor de 39K Carbono 5% 1/4W R$ 0,10 1 R$ 0,10 Resistor de 3K3 Carbono 5% 1/4W R$ 0,10 1 R$ 0,10 Resistor de 910R Carbono 5% 1/4W R$ 0,10 1 R$ 0,10 Soquete de Barra 1x40 MCI 90 Graus R$ 2,69 2 R$ 5,38 Soquete Torneado 16 Pinos R$ 0,88 1 R$ 0,88 Soquete Torneado 40 Pinos R$ 2,24 1 R$ 2,24

A Tabela 16 apresenta o custo de compra dos componentes eletrônicos protótipo físico do

Módulo Controlador, totalizando os gastos em R$ 44,53. Já para a placa final, os gastos com os

componentes foram R$ 46,55.

Page 121: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

106

Tabela 17. Custo de compra dos componentes do protótipo do Módulo I²C

Componente Valor Unitário Qtd. Valor Total Barra de Pinos 1x40 vias 20mm 180 graus R$ 0,72 1 R$ 0,72 Bateria 3V CR2032 R$ 0,59 1 R$ 0,59 Capacitor Disco Cerâmico 10nF x 50V (0,01uF/10K/10KpF/103) R$ 0,09 2 R$ 0,18

Circuito Integrado 24C04 (ATMLU934 04B/ATMLU938 04B) R$ 1,19 1 R$ 1,19

Circuito Integrado DS1302 (RTC) R$ 8,20 1 R$ 8,20 Cristal 32.768 Khz R$ 0,39 1 R$ 0,39 Resistor de 4K7 Carbono 5% 1/4W R$ 0,10 1 R$ 0,10 Resistor de 8K2 Carbono 5% 1/4W R$ 0,10 2 R$ 0,20 Soquete de Barra 1x40 MCI 90 Graus R$ 2,69 2 R$ 5,38 Soquete Torneado 8 Pinos R$ 0,59 2 R$ 1,18 Suporte P/ Bateria CR2032/CR2025 R$ 0,75 1 R$ 0,75

A Tabela 17 apresenta o custo de compra dos componentes eletrônicos protótipo físico do

Módulo I²C, totalizando os gastos em R$ 18,88. Já para a placa final, os gastos com os componentes

foram R$ 16,18.

Tabela 18. Custo de compra dos componentes do protótipo do Módulo Motor de Passo

Componente Valor Unitário Qtd. Valor Total Barra de Pinos 1x40 vias 20mm 180 graus R$ 0,72 1 R$ 0,72 Borne KF-301 3T R$ 0,75 4 R$ 3,00 Capacitor Disco Cerâmico 100nF x 50V (0,1uF/100K/100Kpf/104) R$ 0,10 2 R$ 0,20

Capacitor Disco Cerâmico 10nF x 50V (0,01uF/10K/10KpF/103) R$ 0,09 2 R$ 0,18

Capacitor Eletrolítico 1uF x 100V R$ 0,15 2 R$ 0,30 Circuito Integrado 74HC04 R$ 0,74 1 R$ 0,74 Circuito Integrado 74HC08 R$ 0,66 1 R$ 0,66 Circuito Integrado LM317T R$ 1,19 2 R$ 2,38 Circuito Integrado ULN2804 R$ 1,51 1 R$ 1,51 Dissipador 180357 R$ 1,79 2 R$ 3,58 Resistor de 1K Carbono 5% 1/4W R$ 0,10 1 R$ 0,10 Resistor de 240R Carbono 5% 1/4W R$ 0,10 2 R$ 0,20 Soquete de Barra 1x40 MCI 90 Graus R$ 2,69 1 R$ 2,69 Soquete Torneado 14 Pinos R$ 0,79 2 R$ 1,58 Soquete Torneado 18 Pinos R$ 1,49 1 R$ 1,49 Trimpot 3386F 5K R$ 1,12 2 R$ 2,24

A Tabela 18 apresenta o custo de compra dos componentes eletrônicos protótipo físico do

Módulo Motor de Passo, totalizando os gastos em R$ 21,57. Já para a placa final, os gastos com os

componentes foram R$ 19,10.

Page 122: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

107

Tabela 19. Custo de compra dos componentes do protótipo do Módulo Display LCD

Componente Valor Unitário Qtd. Valor Total Barra de Pinos 1x40 vias 11,2mm 180 graus R$ 0,69 1 R$ 0,69 Barra de Pinos 1x40 vias 20mm 180 graus R$ 0,72 1 R$ 0,72 Capacitor Disco Cerâmico 100nF x 50V (0,1uF/100K/100Kpf/104) R$ 0,10 1 R$ 0,10

Capacitor Eletrolítico 1uF x 100V R$ 0,15 1 R$ 0,15 Circuito Integrado LM317LZ R$ 0,39 1 R$ 0,39 Display LCD 16x2 Com Back Fundo Verde Letra Preta (80x36x13) R$ 15,99 1 R$ 15,99

Resistor de 240R Carbono 5% 1/4W R$ 0,10 1 R$ 0,10 Soquete de Barra 1x40 MCI 180 Graus R$ 0,78 1 R$ 0,78 Soquete de Barra 1x40 MCI 90 Graus R$ 2,69 2 R$ 5,38 Trimpot 3386F 5K R$ 1,12 2 R$ 2,24

A Tabela 19 apresenta o custo de compra dos componentes eletrônicos protótipo físico do

Módulo Display LCD, totalizando os gastos em R$ 26,54. Já para placa final, os gastos com os

componentes foram R$ 23,84.

Tabela 20. Custo de compra dos componentes do protótipo do Módulo Teclado Matricial

Componente Valor Unitário Qtd. Valor Total Barra de Pinos 1x40 vias 20mm 180 graus R$ 0,72 1 R$ 0,72 Chave Tactil 4,5x4,5x3,8mm 4 Terminais R$ 0,39 16 R$ 6,24 Resistor de 1K Carbono 5% 1/4W R$ 0,10 4 R$ 0,40 Soquete de Barra 1x40 MCI 90 Graus R$ 2,69 2 R$ 5,38

A Tabela 20 apresenta o custo de compra dos componentes eletrônicos protótipo físico do

Módulo Teclado Matricial, totalizando os gastos em R$ 12,74. Já para a placa final, os gastos com

os componentes foram R$ 10,04.

A diferença do custo total dos componentes entre o protótipo e a versão final dos módulos é

de R$ 8,55, sendo o valor total de compra dos componentes do protótipo de R$ 124,26 e da versão

final de R$ 115,71. Essa diferença deve-se as mudanças citadas na Tabela 15 da Subseção 3.7.1 .

Page 123: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

108

3.8.2 Custo das placas

Para produção dos protótipos, descrito na Subseção 3.6.2 , foi necessário comprar os

materiais de confecção de placa de circuito impresso dos protótipos físicos, sendo eles apresentados

na Tabela 21.

Tabela 21. Custo de compra dos materiais para produção dos protótipos

Material Valor Unitário Qtd. Valor Total Placa de Circuito Impresso de Fenolite Virgem Simples 10x15cm R$ 2,79 5 R$ 13,95

Kit para Confecção de PCI Suekit CK-15: - 1 cortador de placa simples; - 1 caneta para traçagem; - 1 perfurador de placa; - 1 percloreto de ferro; e - 1 manual de instruções.

R$ 27,99 1 R$ 27,99

Impressão a lazer em papel transparente R$ 1,50 5 R$ 7,50 Thinner 900ml R$ 7,20 1 R$ 7,20

Para as placas finais, não são atribuídos os custos apresentados na Tabela 21, pois as placas

confeccionadas industrialmente já são entregues completas, necessitando apenas a soldagem dos

componentes na placa. Desta forma, foi realizado um orçamento com a empresa DIGICART

Indústria e Comércio de Circuitos Impressos Ltda. onde o custo de confecção das placas finais

totalizou R$ 122,15. É importante lembrar que, para o primeiro pedido, é cobrado a o custo da

fotoplotagem8 de cada placa.

No total, o custo de produção dos protótipos foi de R$ 180,90, correspondente ao custo total

dos componentes mais o custo total das placas, enquanto que as placas finais totalizaram em R$

237,86 (sem o custo da fotoplotagem).

Ferramentas como ferro de solda, estanho, parafuso, porca, etc. não foram contabilizados

devido à disponibilidade desses materiais no laboratório da UNIVALI.

8 Termo dado ao processo de criação dos fotolitos a partir dos arquivos Gerber.

Page 124: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

109

3.9 CONSIDERAÇÕES

Nesse capítulo foi apresentada a documentação do desenvolvimento desse TCC, mostrando

a metodologia utilizada na definição da visão geral, os requisitos do kit como um todo e de seus

módulos individualmente e a arquitetura de hardware aplicada. Na sequência do capítulo são

descritas as implementações e validações dos módulos tanto vitualmente quanto fisicamente. Por

fim, o capítulo é encerrado com a apresentação dos custos do projeto.

Desta forma, o autor considera concluído o desenvolvimento do produto proposto no

trabalho.

Page 125: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

4 CONCLUSÃO

Esse trabalho apresentou e discutiu o projeto e a execução de um kit modular de

desenvolvimento baseado no microcontrolador PIC18F4520.

A revisão bibliográfica para fundamentar o desenvolvimento do projeto, apresentada no

Capítulo 2, mostrou-se ser vital importante para execução deste trabalho, onde algumas das

tecnologias envolvidas não eram de conhecimento do autor. Os softwares utilizados nas

implementações virtuais e físicas mostraram-se ser de fácil utilização e aprendizado, onde a

interface intuitiva do software permitiu o desenvolvimento do kit mesmo com o desconhecimento

prévio de sua utilização.

A metodologia utilizada para definição do produto desenvolvido nesse trabalho foi baseada

em técnicas de análise para inovação de produtos, onde são verificados os produtos concorrentes ao

do projeto, fabricados por outras empresas, e as necessidades de nicho de clientes em potencial.

Esta análise mostrou-se ser de grande importância no desenvolvimento do produto proposto.

A metodologia utilizada na criação do produto foi semelhante às utilizadas por empresas de

desenvolvimento de sistemas embarcados, aplicada logo após a metodologia citada anteriormente.

As etapas desta metodologia apresentam grandes dependências entre etapas subsequentes, onde a

prototipação só pode dar início com a finalização da validação virtual e a confecção final só foi

iniciada após a validação dos protótipos. Nas empresas, essas dependências são minimizadas com o

aumento do número de envolvidos no projeto, onde um determinado módulo poderia seguir para a

etapa seguinte sem necessidade de validar todos os módulos na etapa atual. Os benefícios da

modularidade das atividades no desenvolvimento do produto não foram significativos nesse

trabalho, devido ao número de envolvidos no mesmo serem restrito ao autor.

Os principais problemas encontrados no desenvolvimento desse trabalho ficam a cargo dos

componentes utilizados na criação dos protótipos. Foram encontradas poucas lojas na região de

Florianópolis para compra dos componentes eletrônicos e as encontradas apresentaram pouca

variedade.

Como solução, a compra foi realizada pela internet através de site de comércio eletrônico.

Mesmo assim, a variedade e disponibilidade dos componentes continuaram sendo um problema,

onde a solução foi comprar um número maior de componentes e de diferentes modelos para

Page 126: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

111

adaptação no projeto. Além disso, alguns componentes do projeto não estavam disponíveis no

estoque das empresas, fazendo com que fosse necessário realizar mais de uma compra pela internet

para obtenção de todos os componentes específicos que seriam utilizados no trabalho. Desta forma,

os custos da prototipação dos módulos foram maiores que o esperado.

Os softwares utilizados nesse trabalho satisfizeram as necessidades do autor na criação do

kit proposto, como exceção do POV-Ray, pois apresentou uma limitação quanto à criação da

imagem em 3D das placas de circuito impresso dos módulos, devido ao software possuir um

número limitado de imagens de componentes em seu banco de imagens.

Tendo em vista que os interessados em montar o kit modular necessitariam comprar apenas

os componentes eletrônicos, as placas de circuito impresso e as impressões em transparência dos

layers, contidas nos apêndices N, O, P, Q e R, o custo total para confecção de cada protótipo dos

módulos individualmente seria:

Módulo Controlador = R$ 48,82;

Módulo I²C = R$ 23,17;

Módulo Motor de Passo = R$ 25,86;

Módulo Display LCD = R$ 30,83; e

Módulo Teclado Matricial = R$ 17,03.

Considerando-se um custo inicial de R$35,19 (Kit para Confecção de PCI mais Thinner

900ml) e que os módulos poderiam ser confeccionados pelo próprio interessado de acordo com a

sua necessidade, os custos dos módulos mostraram que o kit modular é de maior acessibilidade que

os kits tradicionais pesquisados, cumprindo mais um dos objetivos deste trabalho.

O principal objetivo do trabalho foi cumprido com a validação dos protótipos físicos em

diferentes combinações dos módulos do kit, apresentado nas Subseções 3.6.3 e 3.6.4 . Assim, o

autor da como concluídas as metas estipuladas no escopo desse trabalho possibilitando que novos

trabalhos sejam realizados sobre esse tema.

Page 127: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

112

4.1 OPORTUNIDADES DE TRABALHOS FUTUROS

A partir dos resultados apresentados, algumas oportunidades de trabalhos futuros podem ser

consideradas sobre o tema:

Desenvolvimento de outros módulos principais baseados em microcontroladores PIC de

outras famílias;

Desenvolvimento de novos módulos principais baseados em microcontroladores de

outros fabricantes como Freescale e Atmel, por exemplo;

Desenvolvimento de novos módulos periféricos com utilização de outros componentes

periféricos como display de 7 segmentos, LCD gráfico e relés, por exemplo;

Desenvolvimento de novos módulos periféricos para aplicação de outros protocolos de

comunicação como SPI e USB, por exemplo;

Desenvolvimento de novas versões dos módulos desenvolvidos; e

Estudo de usabilidade do kit modular em ambiente de desenvolvimento.

Page 128: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

REFERÊNCIAS BIBLIOGRÁFICAS

ACEPIC. Kit de Desenvolvimento ACEPIC 40 v2.0 (PIC16F877A), 2010. Disponivel em: <http://acepiccamp.com.br/produtos_descricao.asp?lang=pt_BR&codigo_categoria=8&codigo_produto=1>. Acesso em: 15 ago. 2010.

BARBACENA, I. L.; FLEURY, C. A. Display LCD, outubro 1996. Disponivel em: <http://www2.eletronica.org/apostilas-e-ebooks/componentes/LCD_30324b.pdf>. Acesso em: 12 out. 2010.

BORATTI, I. C. Programação Orientada a Objetos (usando Delphi). 3ª. ed. Florianópolis: VisualBooks, 2004.

BRAGA, N. C. Conheça os microcontroladores PIC – parte 1 (MIC001), 2010. Disponivel em: <http://www.newtoncbraga.com.br/index.php/microcontroladores/103-microchip-pic/1243-mic001.html>. Acesso em: 15 set. 2010.

BRAGA, N. C. Controle de motor de passo com PIC (MEC0003), 2010. Disponivel em: <http://www.newtoncbraga.com.br/index.php/artigosmec/779-controle-de-motor-de-passo-com-pic-mec0003.html>. Acesso em: 6 out. 2010.

BRITES, F. ; SANTOS, V. P. D. A. Motor de Passo - PETele, Niterói, julho 2008. Disponivel em: <http://www.telecom.uff.br/pet/petws/downloads/tutoriais/stepmotor/stepmotor2k81119.pdf>. Acesso em: 12 out. 2010.

CERNE-TEC. Detalhes do Kit microcontrolador PIC16F877A, 2010. Disponivel em: <http://www.cerne-tec.com.br/detalheskitpic16f877a.htm>. Acesso em: 15 ago. 2010.

CONDIT, R. AN907. Stepping Motors Fundamentals, 2004. Disponivel em: <http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf>. Acesso em: 12 out. 2010.

DIAS, R. P. A. F. Protocolo de Comunicação I2C, 2008. Disponivel em: <http://www.eletronica.org/modules.php?name=News&file=print&sid=13>. Acesso em: 13 out. 2010.

DIGI-KEY. media.digikey.com - /photos/Microchip Tech Photos/, 2010. Disponivel em: <http://media.digikey.com/photos/Microchip Tech Photos/>. Acesso em: 20 set. 2010.

FRAGA, M. Ensino aliado à tecnologia. Cadernos Temáticos, Brasília, n. 19, p. 22-24, fev. 2008.

FREESCALE SEMICONDUCTOR. M68HC05 Family Understanding Small Microcontrollers, Austin, p. 66, janeiro 1998. Disponivel em: <http://www.freescale.com/files/microcontrollers/doc/ref_manual/M68HC05TB.pdf>. Acesso em: 8 set. 2010.

FREESCALE SEMICONDUCTOR. HCS08 Family Reference Manual, Austin, p. 16-18, abril 2007. Disponivel em: <http://www.freescale.com/files/microcontrollers/doc/ref_manual/HCS08RMV1.pdf>. Acesso em: 8 set. 2010.

Page 129: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

114

LABROSSE, J. J. Embedded Systems Building Blobks. San Francisco: CMP Books, 1999. cap. 3 e 5.

LABTOOLS. McLab 2 - 16F, 2010. Disponivel em: <http://www.labtools.com.br/index.asp?area=21&subarea=b&idioma=por&script=produtos&prod=192>. Acesso em: 15 ago. 2010.

MATIC, N. The PIC microcontrollers, for beginners too. [S.l.]: mikroElektronika, 2003. Disponivel em: <http://www.mikroe.com/pt/product/books/picbook/>. Acesso em: 10 set. 2010.

MCCOMB, M. Stepper Motors Part 1: Types of Stepper Motors, 2007. Disponivel em: <http://techtrain.microchip.com/webseminars/documents/StepMtrP1_091407.pdf>. Acesso em: 6 out. 2010.

MELO, F. É. N. D.; ZAPELINI, W. B. Um Equipamento Didático Constituído de Módulos de Microcontrolador e de PLD, Florianópolis, 2003. 9p.

MESSIAS, A. R. Controle de motor de passo através da porta paralela, 2006. Disponivel em: <http://www.rogercom.com/pparalela/IntroMotorPasso.htm>. Acesso em: 5 out. 2010.

MICROCHIP TECHNOLOGY. PIC18XXXX MCU Family Product Overview, Chandler, dezembro 2003. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/30327b.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. Data Sheet PIC16F5X, Chandler, p. 1-9, abril 2007. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/41213D.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. Data Sheet PIC18F1220/1320, Chandler, p. 1-9, fevereiro 2007. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/39605F.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. Data Sheet PIC18F2420/2520/4420/4520, Chandler, novembro 2008. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/39631E.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. Data Sheet PIC16F627A/628A/648A, Chandler, p. 1-12, outubro 2009. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. Data Sheet PIC16F/LF1826/27, Chandler, p. 1-15, junho 2010. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/41391C.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. 8-bit PIC® Microcontroller Solutions, Chandler, agosto 2010. Disponivel em: <http://ww1.microchip.com/downloads/en/DeviceDoc/39630g.pdf>. Acesso em: 15 set. 2010.

MICROCHIP TECHNOLOGY. Package Specification, Chandler, 2010. Disponivel em: <http://www.microchip.com/stellent/groups/techpub_sg/documents/packagingspec/en012702.pdf>. Acesso em: 15 set. 2010.

Page 130: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

115

MICROGENIOS. Kit PICgenios PIC16F877A - Kit de Desenvolvimento Profissional Família PIC16F, 2010. Disponivel em: <http://www.microgenios.com/detalhes.asp?id=137&produto=467>. Acesso em: 15 ago. 2010.

NATIONAL SEMICONDUCTOR. MICROCONTROLADOR COP8™, Guadalajara, p. 17-23, fevereiro 2001. Disponivel em: <www.national.com/appinfo/mcu/files/ManualDeUsuario.pdf>. Acesso em: 8 set. 2010.

NXP SEMICONDUCTORS. UM10204. I2C-bus specification and user manual, junho 2007. Disponivel em: <http://www.nxp.com/documents/user_manual/UM10204.pdf>. Acesso em: 13 out. 2010.

PRADO, S. Barramento I2C, 2007. Disponivel em: <http://www.embarcados.com.br/Artigos/Hardware-Embarcado/Barramento-I2C.html>. Acesso em: 13 out. 2010.

PRESTES, R. F. et al. Estudo do Motor de Passo e seu controle digital, 2001. Disponivel em: <http://recreio.gta.ufrj.br/grad/01_1/motor/>. Acesso em: 5 out. 2010.

ROBOT ELECTRONICS. Using the I2C Bus, 2010. Disponivel em: <http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html>. Acesso em: 14 out. 2010.

SICA, C. B. S. D. Programando displays de cristal líqüido a partir da porta paralela do PC, 2010. Disponivel em: <http://www.din.uem.br/sica/material/artigo-lcd.pdf>. Acesso em: 12 out. 2010.

SOARES, M. J. Faça placas de circuito impresso com acabamento semiprofissional. Saber Eletrônica, 2008. Disponivel em: <http://www.sabereletronica.com.br/secoes/leitura/728>. Acesso em: 17 Abr 2011.

SOUZA, J. D. Desbravando o PIC: ampliado e atualizado para PIC16F628A. 12ª. ed. São Paulo: Érica, 2008.

UNIVERSIDADE FEDERAL DE LAVRAS. UFLA - Programa de Pós-Graduação em Engenharia de Sistemas, 2010. Disponivel em: <http://www.prpg.ufla.br/ppg/esistemas/_adm/upload/file/Ementas/sistemas embarcados pos graduacao.pdf>. Acesso em: 20 ago. 2010.

UNIVERSIDADE PRESBITERIANA MACKENZIE. Portal Mackenzie: Microprocessadores I, 2010. Disponivel em: <http://www.mackenzie.br/5919.html>. Acesso em: 20 ago. 2010.

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. UTFPR — Site, 2010. Disponivel em: <http://pessoal.utfpr.edu.br/amauriassef/arquivos/2010_2 Pens AI32C - Sistemas Microprocessados_Amauri_D.pdf>. Acesso em: 20 ago. 2010.

VERLE, M. PIC microcontrollers. 1ª. ed. [S.l.]: mikroElektronika, 2008. Disponivel em: <http://www.mikroe.com/eng/products/view/11/book-pic-microcontrollers/>. Acesso em: 10 set. 2010.

Page 131: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

116

YEDAMALE, P.; CHATTOPADHYAY, S. AN822. Stepper Motor Microstepping with PIC18C452, março 2002. Disponivel em: <http://ww1.microchip.com/downloads/en/AppNotes/00822a.pdf>. Acesso em: 15 out. 2010.

ZANCO, W. D. S. Microcontrolador PIC16F628A/648A: uma abordagem prática e objetiva. 2ª. ed. São Paulo: Érica, 2007.

Page 132: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

APÊNDICES

Page 133: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

118

APÊNDICE A

/***************************************************************************** ------------------------------------------------------------------- | Validação das chaves de Interrupção Externa (INT0, INT1 e INT2) | ------------------------------------------------------------------- PIC18F4520 => Interrupções Externas PORTB.RB0 => INT0 PORTB.RB1 => INT1 PORTB.RB2 => INT2 PORTB.RB3 => LED I/O *****************************************************************************/ /* Função de tratamento de interrupções */ void interrupt() { if (INTCON.INT0IF) { // Limpa flag sinalizador de interrupção externa INT0 INTCON.INT0IF = 0; PORTB.RB3 = ~PORTB.RB3; } if (INTCON3.INT1IF) { // Limpa flag sinalizador de interrupção externa INT1 INTCON3.INT1IF = 0; PORTB.RB3 = ~PORTB.RB3; } if (INTCON3.INT2IF) { // Limpa flag sinalizador de interrupção externa INT2 INTCON3.INT2IF = 0; PORTB.RB3 = ~PORTB.RB3; } } void main() { ADCON1 = 0x0F; // Configura todos os pinos A/D como I/O TRISB.RB0 = 1; TRISB.RB1 = 1; TRISB.RB2 = 1; TRISB.RB3 = 0; PORTB.RB3 = 1; RCON.IPEN = 0; // interrupções sem prioridade INTCON.GIE = 1; // habilita interrupção globais INTCON.PEIE = 1; // habilita interrupção de periféricos INTCON2.RBPU = 1; // desabilita resistores de pull-up internos do PORTB INTCON.INT0IE = 1; // habilita interrupção externa INT0 INTCON3.INT1IE = 1; // habilita interrupção externa INT1 INTCON3.INT2IE = 1; // habilita interrupção externa INT2 INTCON.INT0IF = 0; // limpa ocorrência da interrupção externa INT0 INTCON3.INT1IF = 0; // limpa ocorrência da interrupção externa INT1 INTCON3.INT2IF = 0; // limpa ocorrência da interrupção externa INT2 INTCON2.INTEDG0 = 0; // aciona interrupção INT0 na borda de descida INTCON2.INTEDG1 = 1; // aciona interrupção INT1 na borda de subida INTCON2.INTEDG2 = 0; // aciona interrupção INT2 na borda de descida }

Figura 73. Código fonte do Experimento A.

Page 134: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

119

APÊNDICE B

/***************************************************************************** ----------------------- | Validação do RS-232 | ----------------------- PIC18F4520 => RS-232 PORTC.RC6 => T1IN PORTC.RC7 => R1OUT Obs.: Usar a biblioteca UART do MikroC PRO for PIC *****************************************************************************/ void main() { unsigned char uart_rd; UART1_Init(9600); // Inicializa UART em 9600 bps Delay_ms(100); UART1_Write_Text("alo mundo!"); // visualizar no Hyper Teninal UART1_Write(13); UART1_Write(10); // quebra de linha while (1) { if (UART1_Data_Ready()) { uart_rd = UART1_Read(); if (uart_rd == 13) { UART1_Write(10); } UART1_Write(uart_rd); } } }

Figura 74. Código fonte do Experimento B.

Page 135: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

120

APÊNDICE C

/***************************************************************************** ------------------------------- | Validação do I²C com EEPROM | ------------------------------- PIC18F4520 => Memoria Eeprom I²C PORTC.RC3 => SCL PORTC.RC4 => SDA Obs.: Utilizar biblioteca I2C do MikroC PRO for PIC *****************************************************************************/ #define I2C_EEPROM_ADDR_AND_WRITE 0xA2 // Endereço da EEPROM + W #define I2C_EEPROM_ADDR_AND_READ 0xA3 // Endereço da EEPROM + R #define FREQ_CLOCK_SCL 100000 // frequência de clock do I²C void i2c_eeprom_write(unsigned char endereco, unsigned char valor) { I2C1_Start(); // sinal de Start I2C1_Wr(I2C_EEPROM_ADDR_AND_WRITE); // envia endereço da EEPROM + W I2C1_Wr(endereco); // envia endereço interno EEPROM I2C1_Wr(valor); // envia valor a ser gravado I2C1_Stop(); // sinal de Stop } void i2c_eeprom_write_array(unsigned char endereco, unsigned char* valor, unsigned char n) { unsigned char i; I2C1_Start(); // sinal de Start I2C1_Wr(I2C_EEPROM_ADDR_AND_WRITE); // envia endereço da EEPROM + W I2C1_Wr(endereco); // envia endereço interno da EEPROM for (i = 0; i < n; i++) { I2C1_Wr(valor[i]); // envia valor a n vezes } I2C1_Stop(); // sinal de Stop } unsigned char i2c_eeprom_read(unsigned char endereco) { unsigned char valor = 0; I2C1_Start(); // sinal de Start I2C1_Wr(I2C_EEPROM_ADDR_AND_WRITE); // envia endereço da EEPROM + W I2C1_Wr(endereco); // envia endereço interno da EEPROM I2C1_Repeated_Start(); // repetir sinal de Start I2C1_Wr(I2C_EEPROM_ADDR_AND_READ); // envia endereço da EEPROM + R valor = I2C1_Rd(0); // recebe valor do endereço corrente I2C1_Stop(); // sinal de Stop return valor; } void main() { unsigned char array_valor[] = {8, 7, 6, 5}; unsigned char i; I2C1_Init(FREQ_CLOCK_SCL); i2c_eeprom_write(0x00, 9); Delay_ms(10); i2c_eeprom_write_array(0x01, array_valor, 4); Delay_ms(10); i = i2c_eeprom_read(0x02); }

Figura 75. Código fonte do Experimento C.

Page 136: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

121

APÊNDICE D

/***************************************************************************** ---------------------------- | Validação do I²C com RTC | ---------------------------- PIC18F4520 => Relógio de Tempo Real PORTC.RC3 => SCL PORTC.RC4 => SDA Obs.: Utilizar biblioteca I2C do MikroC PRO for PIC *****************************************************************************/ #define FREQ_CLOCK_SCL 100000 #define I2C_RTC_ADDR_AND_WRITE 0xD0 // Endereço do RTC + W #define I2C_RTC_ADDR_AND_READ 0xD1 // Endereço do RTC + R #define ADDR_SECONDS 0x00 // Endereço de segundos #define ADDR_MINUTES 0x01 // Endereço de minutos #define ADDR_HOURS 0x02 // Endereço de hora #define ADDR_DAY 0x03 // Endereço de dia da semana #define ADDR_DATE 0x04 // Endereço de dia do mes #define ADDR_MONTH 0x05 // Endereço de mes #define ADDR_YEAR 0x06 // Endereço de ano #define ADDR_CTRL 0x07 // Endereço de controle unsigned char i2c_char_to_rtc(unsigned char endereco, unsigned char valor) { if (endereco != ADDR_CTRL) { valor = ((valor/10) << 4) + (valor % 10); } return valor; } unsigned char i2c_rtc_to_char(unsigned char endereco, unsigned char valor) { if (endereco != ADDR_CTRL) { valor = 10*(valor >> 4) + (valor & 0x0F); } return valor; } unsigned char i2c_char_to_rtc_hora(unsigned char hora, unsigned char formato_hora) { unsigned meio_dia = 0; formato_hora = (formato_hora != 0) << 6; if (formato_hora) { if (hora == 0) { hora = 12; } else { if (hora >= 12) { meio_dia = 0b00100000; hora -= hora > 12 ? 12 : 0; } } } hora = i2c_char_to_rtc(ADDR_HOURS, hora); hora += formato_hora + meio_dia; return hora; }

Figura 76. Código fonte do Experimento D.

Page 137: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

122

unsigned char i2c_rtc_to_char_hora(unsigned char hora) { hora = hora & 0b00011111; return i2c_rtc_to_char(ADDR_HOURS, hora); } void i2c_rtc_set(unsigned char endereco, unsigned char valor) { I2C1_Start(); // sinal de Start I2C1_Wr(I2C_RTC_ADDR_AND_WRITE); // envia endereço do RTC + W I2C1_Wr(endereco); // envia endereço interno do RTC I2C1_Wr(valor); // envia valor a ser gravado I2C1_Stop(); // sinal de Stop } void i2c_rtc_set_all(unsigned char* tempo) { unsigned char i; I2C1_Start(); // sinal de Start I2C1_Wr(I2C_RTC_ADDR_AND_WRITE); // envia endereço do RTC + W I2C1_Wr(0x00); // envia endereço interno do RTC for (i = 0; i < 8; i++) { I2C1_Wr(tempo[i]); // envia valores a serem gravados } I2C1_Stop(); // sinal de Stop } unsigned char i2c_rtc_get(unsigned char endereco) { unsigned char valor; I2C1_Start(); // sinal de Start I2C1_Wr(I2C_RTC_ADDR_AND_WRITE); // envia endereço do RTC + W I2C1_Wr(endereco); // envia endereço interno do RTC I2C1_Repeated_Start(); // repetir sinal de Start I2C1_Wr(I2C_RTC_ADDR_AND_READ); // envia endereço RTC + R valor = I2C1_Rd(0); // leitura do valor no endereço corrente I2C1_Stop(); // sinal de Stop return valor; } void i2c_rtc_set_segundo(unsigned char valor) { valor = i2c_char_to_rtc(ADDR_SECONDS, valor); i2c_rtc_set(ADDR_SECONDS, valor); } void i2c_rtc_set_minuto(unsigned char valor) { valor = i2c_char_to_rtc(ADDR_MINUTES, valor); i2c_rtc_set(ADDR_MINUTES, valor); } void i2c_rtc_set_hora(unsigned char hora, unsigned char formato_hora) { hora = i2c_char_to_rtc_hora(hora, formato_hora); i2c_rtc_set(ADDR_HOURS, hora); } void i2c_rtc_set_semana(unsigned char valor) { valor = i2c_char_to_rtc(ADDR_DAY, valor); i2c_rtc_set(ADDR_DAY, valor); }

Figura 76. Código fonte do Experimento D. (continuação).

Page 138: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

123

void i2c_rtc_set_dia(unsigned char valor) { valor = i2c_char_to_rtc(ADDR_DATE, valor); i2c_rtc_set(ADDR_DATE, valor); } void i2c_rtc_set_mes(unsigned char valor) { valor = i2c_char_to_rtc(ADDR_MONTH, valor); i2c_rtc_set(ADDR_MONTH, valor); } void i2c_rtc_set_ano(unsigned char valor) { valor = i2c_char_to_rtc(ADDR_YEAR, valor); i2c_rtc_set(ADDR_YEAR, valor); } void main() { unsigned char tempo[] = {1, 2, 3, 4, 5, 6, 7, 0b00000011}; I2C1_Init(FREQ_CLOCK_SCL); i2c_rtc_set_all(tempo); i2c_rtc_set_segundo(1); i2c_rtc_set_minuto(2); i2c_rtc_set_hora(3, 1); i2c_rtc_set_semana(4); i2c_rtc_set_dia(5); i2c_rtc_set_mes(6); i2c_rtc_set_ano(7); }

Figura 76. Código fonte do Experimento D. (continuação).

Page 139: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

124

APÊNDICE E

/***************************************************************************** ----------------------------------------------- | Validação do acionamento digital do MOTOR 1 | ----------------------------------------------- PIC18F4520 => MOTOR 1 PORTA.RA0 => Acionamento digital Bobina 1 PORTA.RA1 => Acionamento digital Bobina 2 PORTA.RA2 => Acionamento digital Bobina 3 PORTA.RA3 => Acionamento digital Bobina 4 *****************************************************************************/ #define M1_B1 PORTA.RA0 #define M1_B2 PORTA.RA1 #define M1_B3 PORTA.RA2 #define M1_B4 PORTA.RA3 unsigned char posicao; // indice de passo unsigned char passo[] = { // passos em acionamento digital (b4, b3, b2, b1) 0b1001, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, }; void motor1_init(){ ADCON1 = 0x0F; // Configura todas as portas analógicas para digitais TRISA.RA0 = 0; TRISA.RA1 = 0; TRISA.RA2 = 0; TRISA.RA3 = 0; } void motor1_set_passo() { M1_B1 = (passo[posicao] & 0b00000001) == 0 ? 0 : 1; M1_B2 = (passo[posicao] & 0b00000010) == 0 ? 0 : 1; M1_B3 = (passo[posicao] & 0b00000100) == 0 ? 0 : 1; M1_B4 = (passo[posicao] & 0b00001000) == 0 ? 0 : 1; }

Figura 77. Código fonte do Experimento E.

Page 140: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

125

/* Seta a nova posicao do MOTOR 1 * - sentido = se 1 gira em sentido horário. * = se -1 gira em sentido anti-horário. * - divisor_de_passo = se 1 anda em passo completo. * = se 2 anda em meio passo. */ void motor1_set_nova_posicao(signed char sentido, signed char divisor) { switch (sentido * divisor) { case 1 : posicao = posicao < 7 ? posicao + 2 : 1; break; case 2 : posicao = posicao < 7 ? posicao + 1 : 0; break; case -1 : posicao = posicao > 1 ? posicao - 2 : 7; break; case -2 : posicao = posicao > 0 ? posicao - 1 : 7; break; } } void main() { signed char sentido, divisor_passo; motor1_init(); sentido = 1; // 1 ou -1 divisor_passo = 1; // 1 ou 2 posicao = divisor_passo == 1 ? 1 : 0; if (sentido == -1) { motor1_set_nova_posicao(sentido, divisor_passo); } while (1) { motor1_set_passo(); motor1_set_nova_posicao(sentido, divisor_passo); Delay_ms(200); } }

Figura 77. Código fonte do Experimento E. (continuação).

Page 141: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

126

APÊNDICE F

/***************************************************************************** -------------------------------------------- | Validação do controle do MOTOR 2 com PWM | -------------------------------------------- PIC18F4520 => MOTOR 2 PORTA.RA4 => CHAVE_B1_B3, Sinal de chaveamento do PWM1 entre as Bobinas 1 e 3 PORTA.RA5 => CHAVE_B2_B4, Sinal de chaveamento do PWM2 entre as Bobinas 2 e 4 PORTC.RC2 => Sinal PWM1 (CCP1) PORTC.RC1 => Sinal PWM2 (CCP2) Obs.: Utilizar biblioteca PWM do mikroC for PIC PRO FREQ_PWM => frequência de inicialização do sinal PWM PAUSA => delay aplicado entre as mudanças de sinal PWM (ms) *****************************************************************************/ #define CHAVE_B1_B3 PORTA.RA4 #define CHAVE_B2_B4 PORTA.RA5 #define FREQ_PWM 5000 #define PAUSA 200 const unsigned char duty_cicle[] = {255, 236, 180, 98, 0}; //8 const unsigned char upasso = 8; void motor2_set_chave(unsigned char b1_b3, unsigned char b2_b4) { CHAVE_B1_B3 = b1_b3; CHAVE_B2_B4 = b2_b4; } void motor2_start_pwm() { PWM1_Start(); PWM2_Start(); } void motor2_stop_pwm() { PWM1_Stop(); PWM2_Stop(); } void motor2_set_pwm(unsigned char pwm1_duty, unsigned char pwm2_duty) { motor2_stop_pwm(); PWM1_Set_Duty(pwm1_duty); PWM2_Set_Duty(pwm2_duty); motor2_start_pwm(); } void motor2_init() { ADCON1 = 0x0F; // Configura todas as portas analogicas para digitais TRISA.RA4 = 0; TRISA.RA5 = 0; motor2_set_chave(0, 1); PWM1_Init(FREQ_PWM); // Initialize PWM1 module at 5KHz PWM2_Init(FREQ_PWM); // Initialize PWM2 module at 5KHz motor2_start_pwm(); }

Figura 78. Código fonte do Experimento F.

Page 142: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

127

void main() { signed char enrolamento_a, enrolamento_b; a = 0; b = 0; motor2_init(); motor2_set_pwm(duty_cicle[enrolamento_a], duty_cicle[enrolamento_b]); Delay_ms(PAUSA); while (1) { // diminui Duty Cicle do PWM 1 na bobina 1 while (a < upasso/2) { motor2_set_pwm(duty_cicle[++a], duty_cicle[b]); Delay_ms(PAUSA); } motor2_set_chave(1, 1); // chaveia PWM 1 para bobina 3 // aumenta Duty Cicle do PWM 1 na bobina 3 do { motor2_set_pwm(duty_cicle[--a], duty_cicle[b]); Delay_ms(PAUSA); } while (a > 0); // diminui Duty Cicle do PWM 2 na bobina 4 while (b < upasso/2) { motor2_set_pwm(duty_cicle[a], duty_cicle[++b]); Delay_ms(PAUSA); } motor2_set_chave(1, 0); // chaveia PWM 2 para bobina 2 // aumenta Duty Cicle do PWM 2 na bobina 2 do { motor2_set_pwm(duty_cicle[a], duty_cicle[--b]); Delay_ms(PAUSA); } while (b > 0); // diminui Duty Cicle do PWM 1 na bobina 3 while (a < upasso/2) { motor2_set_pwm(duty_cicle[++a], duty_cicle[b]); Delay_ms(PAUSA); } motor2_set_chave(0, 0); // chaveia PWM 1 para bobina 1 // aumenta Duty Cicle do PWM 1 na bobina 1 do { motor2_set_pwm(duty_cicle[--a], duty_cicle[b]); Delay_ms(PAUSA); } while (a > 0); // diminui Duty Cicle do PWM 2 na bobina 2 while (b < upasso/2) { motor2_set_pwm(duty_cicle[a], duty_cicle[++b]); Delay_ms(PAUSA); } motor2_set_chave(0, 1); // chaveia PWM 2 para bobina 4 // aumenta Duty Cicle do PWM 2 na bobina 2 do { motor2_set_pwm(duty_cicle[a], duty_cicle[--b]); Delay_ms(PAUSA); } while (b > 0); } }

Figura 78. Código fonte do Experimento F. (continuação).

Page 143: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

128

APÊNDICE G

/****************************************************************************** ----------------------- | Configuração do LCD | ----------------------- PIC18F4520 => Display LCD PORTB.RB7 => D7 PORTB.RB6 => D6 PORTB.RB5 => D5 PORTB.RB4 => D4 PORTE.RE0 => R/W PORTE.RE1 => EN PORTE.RE2 => RS Obs.: Utilizar biblioteca LCD do mikroC PRO for PIC ******************************************************************************/ // LCD module connections sbit LCD_RS at RE2_bit; sbit LCD_EN at RE1_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISE2_bit; sbit LCD_EN_Direction at TRISE1_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connections void lcd_pic_config() { ADCON1 = 0x0F; TRISE.RE0 = 0; TRISE.RE1 = 0; TRISE.RE2 = 0; TRISB.RB4 = 0; TRISB.RB5 = 0; TRISB.RB6 = 0; TRISB.RB7 = 0; PORTE.RE0 = 0; // R/W aterrado } void lcd_start() { lcd_pic_config(); Lcd_Init(); Lcd_Cmd(0x28); //identifica LCD = 4 bits, 2 linha, 5x8 matriz de caracter Lcd_Cmd(0x0C); //liga LCD (sem cursor) Lcd_Cmd(0x01); //limpa LCD com cursor home Lcd_Cmd(0x06); //desloca cursor para direita ao entrar caracter }

Figura 79. Código fonte do Experimento G.

Page 144: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

129

void lcd_num(unsigned char num) { unsigned char valor[3]; valor[0] = num/100; valor[1] = (num/10) % 10; valor[2] = num % 10; if (valor[0] == 0) { Lcd_Chr_Cp(' '); } else { Lcd_Chr_Cp(valor[0] + 0x30); } if (valor[1] == 0 && valor[0] == 0) { Lcd_Chr_Cp(' '); } else { Lcd_Chr_Cp(valor[1] + 0x30); } Lcd_Chr_Cp(valor[2] + 0x30); } void lcd_cursor_pos(unsigned short int coluna, unsigned short int linha) { unsigned short int i; if (linha == 1) { Lcd_Cmd(0x80); } else { Lcd_Cmd(0xC0); } for (i = 1; i < coluna; i++) { Lcd_Cmd(0x14); } } void main(){ unsigned short int i = 0; lcd_start(); Lcd_Out(1, 1, "Contar ate 100"); Lcd_Out(2, 1, "i = "); while (1) { lcd_cursor_pos(5, 2); lcd_num(i); i = i < 100 ? i + 1 : 0; Delay_ms(50); } }

Figura 79. Código fonte do Experimento G. (continuação).

Page 145: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

130

APÊNDICE H

#include "lib/lcd.c" // funções LCD do Apêndice G /****************************************************************************** ----------------------------------------- | Configuração do Teclado Matricial 4x4 | ----------------------------------------- PIC18F4520 => Teclado Matricial 4x4 PORTD.RD0 => Linha 1 PORTD.RD1 => Linha 2 PORTD.RD2 => Linha 3 PORTD.RD3 => Linha 4 PORTD.RD4 => Coluna 1 PORTD.RD5 => Coluna 2 PORTD.RD6 => Coluna 3 PORTD.RD7 => Coluna 4 ******************************************************************************/ sbit LINHA_1 at RD0_bit; sbit LINHA_2 at RD1_bit; sbit LINHA_3 at RD2_bit; sbit LINHA_4 at RD3_bit; sbit COLUNA_1 at RD4_bit; sbit COLUNA_2 at RD5_bit; sbit COLUNA_3 at RD6_bit; sbit COLUNA_4 at RD7_bit; void teclado_init() { //Linhas como saidas e Colunas como entrada TRISD = 0b11110000; LINHA_1 = 1; LINHA_2 = 1; LINHA_3 = 1; LINHA_4 = 1; } void teclado_escreve_linha(unsigned char linha) { switch (linha) { case 1 : { LINHA_1 = 0; LINHA_2 = 1; LINHA_3 = 1; LINHA_4 = 1; break; } case 2 : { LINHA_1 = 1; LINHA_2 = 0; LINHA_3 = 1; LINHA_4 = 1; break; } case 3 : { LINHA_1 = 1; LINHA_2 = 1; LINHA_3 = 0; LINHA_4 = 1; break; } case 4 : { LINHA_1 = 1; LINHA_2 = 1; LINHA_3 = 1; LINHA_4 = 0; break; } } }

Figura 80. Código fonte do Experimento H.

Page 146: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

131

unsigned char teclado_le_coluna() { if (COLUNA_1 == 0) { return 1; } if (COLUNA_2 == 0) { return 2; } if (COLUNA_3 == 0) { return 3; } if (COLUNA_4 == 0) { return 4; } return 0; } /* Retorna Hexa do codigo da tecla do teclado - coordenada da LINHA = 4 bits mais significativos - coordenada da COLUNA = 4 bits menos significativos - 0x00 = nao apertou nenhuma tecla */ unsigned char teclado_varredura() { unsigned char t_linha, t_coluna, tecla; t_linha = 0; t_coluna = 0; tecla = 0x00; while (t_linha < 5 && t_coluna == 0) { t_linha++; teclado_escreve_linha(t_linha); t_coluna = teclado_le_coluna(); } if (t_coluna != 0) { tecla = (t_linha << 4) + t_coluna; } return tecla; } void main(){ unsigned char teclado; unsigned char linha, coluna; lcd_start(); teclado_init(); Lcd_Out(1, 1, "TECLADO MATRICIAL"); Lcd_Out(2, 1, "TECLA(L,C) = "); while (1) { teclado = teclado_varredura(); if (teclado > 0x00) { linha = (teclado & 0xF0) >> 4; coluna = (teclado & 0x0F); lcd_cursor_pos(14, 2); Lcd_Chr_Cp(linha + 0x30); Lcd_Chr_Cp(','); Lcd_Chr_Cp(coluna + 0x30); } Delay_ms(50); } }

Figura 80. Código fonte do Experimento H. (continuação).

Page 147: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

132

APÊNDICE I

Figura 81. Circuito esquemático do Módulo Controlador.

Page 148: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

133

APÊNDICE J

Figura 82. Circuito esquemático do Módulo I²C.

Page 149: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

134

APÊNDICE K

Figura 83. Circuito esquemático do Módulo Motor de Passo.

Page 150: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

135

APÊNDICE L

Figura 84. Circuito esquemático do Módulo Display LCD.

Page 151: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

136

APÊNDICE M

Figura 85. Circuito esquemático do Módulo Teclado Matricial.

Page 152: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

137

APÊNDICE N

A Figura 86 mostra o footprint da placa protótipo do Módulo Controlador, sendo que as

ligações entre as vias devem ser realizadas com jumpers.

Figura 86. Footprint da placa do Módulo Controlador.

A Figura 87 representa o layer do protótipo do Módulo Controlador em escala 1:1.

Figura 87. Layer da placa do Módulo Controlador.

Page 153: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

138

APÊNDICE O

A Figura 88 mostra o footprint da placa protótipo do Módulo I²C.

Figura 88. Footprint da placa do Módulo I²C.

A Figura 89 representa o layer do protótipo do Módulo I²C em escala 1:1.

Figura 89. Layer da placa do Módulo I²C.

Page 154: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

139

APÊNDICE P

A Figura 90 mostra o footprint da placa protótipo do Módulo Motor de Passo, sendo que as

ligações entre as vias devem ser realizadas com jumpers.

Figura 90. Footprint da placa do Módulo Motor de Passo.

A Figura 91 representa o layer do protótipo do Módulo Motor de Passo em escala 1:1.

Figura 91. Layer da placa do Módulo Motor de Passo.

Page 155: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

140

APÊNDICE Q

A Figura 92 mostra o footprint da placa protótipo do Módulo Display LCD, sendo que as

ligações entre as vias devem ser realizadas com jumpers.

Figura 92. Footprint da placa do Módulo Display LCD.

A Figura 93 representa o layer do protótipo do Módulo Display LCD em escala 1:1.

Figura 93. Layer da placa do Módulo Display LCD.

Page 156: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

141

APÊNDICE R

A Figura 94 mostra o footprint da placa protótipo do Módulo Teclado Matricial, sendo que

as ligações entre as vias devem ser realizadas com jumpers.

Figura 94. Footprint da placa do Módulo Teclado Matricial.

A Figura 95 representa o layer do protótipo do Módulo Teclado Matricial em escala 1:1.

Figura 95. Layer da placa do Módulo Teclado Matricial.

Page 157: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

142

APÊNDICE S

As figuras deste Apêndice apresentam o footprint das placas finais dos módulos do kit.

Figura 96. Footprint da placa do Módulo Controlador na versão final.

Figura 97. Footprint da placa do Módulo I²C na versão final.

Page 158: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

143

Figura 98. Footprint da placa do Módulo Motor de Passo na versão final.

Figura 99. Footprint da placa do Módulo Display LCD na versão final.

Page 159: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

144

Figura 100. Footprint da placa do Módulo Teclado Matricial na versão final.

Page 160: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

ANEXOS

Page 161: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

146

ANEXO I

O Anexo I apresenta Tabela 22 com a descrição dos pinos do PIC18F4520 contendo a

identificação do pino na ordem de distribuição, seu nome quanto as funções que ele exerce e uma

descrição das mesmas.

Tabela 22. Descrição dos pinos do PIC18F4520

Pinos Nome Descrição

1 MCLR

VPP RE3

Entrada do sinal de reset Entrada de tensão para modo programação Entrada digital

2 RA0 AN0

E/S digital Entrada analógica 0

3 RA1 AN1

E/S digital Entrada analógica 1

4

RA2 AN2 VREF- CVREF

E/S digital Entrada analógica 2 Entrada da voltagem A/D de referência negativa Saída da voltagem de referência

5 RA3 AN3 VREF+

E/S digital Entrada analógica 3 Entrada da voltagem A/D de referência positiva

6 RA4

T0CKI C1OUT

E/S digital Entrada do clock do temporizador 0 Saída do comparador C1

7

RA5 AN4

SS HLVDIN C2OUT

E/S digital Entrada analógica 4 Entrada SPI de seleção de escravo Entrada de detecção de voltagem alta/baixa Saída do comparador C2

8 RE0 RD

AN5

E/S digital Porta de leitura do controle de escravo paralelo Entrada analógica 5

9 RE1 WR AN6

E/S digital Porta de escrita do controle de escravo paralelo Entrada analógica 6

10 RE2 CS

AN7

E/S digital Porta seletora do controle de escravo paralelo Entrada analógica 7

11 VDD Alimentação do chip 12 VSS Aterramento do chip

Fonte: Adaptado de Microchip Technology (2008).

Page 162: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

147

Tabela 22. Descrição dos pinos do PIC18F4520(continuação)

Pinos Nome Descrição

13 OSC1 CLKI RA7

Entrada de oscilador externo Entrada do clock externo. Sempre associado ao OSC1 E/S digital

14

OSC2 CLKO

RA6

Saída de oscilador externo Saída do clock externo. No modo RC, CLKO mantém ¼ da frequência de OSC1 contendo o ciclo de instrução E/S digital

15 RC0

T1OSO T13CKI

E/S digital Saída do oscilador externo do temporizador 1 Entrada do clock externo do temporizador 1 ou 3

16

RC1 T1OSI CCP2

E/S digital Entrada do oscilador externo do temporizador 1 Entrada Captura 2/ Saída Compara 2/ Saída PWM 2 (alternativa para CCP2 quando CCP2MX desabilitado)

17 RC2

CCP1 P1A

E/S digital Entrada Captura 1/ Saída Compara 1/ Saída PWM 1 Saída CCP1 reforçada

18 RC3 SCK SCL

E/S digital E/S do clock de comunicação serial síncrona para SPI E/S do clock de comunicação serial síncrona para I2C

19 RD0 PSP0

E/S digital E/S de dados do escravo paralelo

20 RD1 PSP1

E/S digital E/S de dados do escravo paralelo

21 RD2 PSP2

E/S digital E/S de dados do escravo paralelo

22 RD3 PSP3

E/S digital E/S de dados do escravo paralelo

23 RC4 SDI SDA

E/S digital Entrada de dados SPI E/S de dados I2C

24 RC5 SDO

E/S digital Saída de dados SPI

25

RC6 TX

CK

E/S digital Saída do transmissor EUSART (Enhanced USART) assíncrono E/S do clock EUSART síncrono

26 RC7 RX DT

E/S digital Entrada do receptor EUSART assíncrono E/S de dados EUSART síncrono

27 RD4 PSP4

E/S digital E/S de dados do escravo paralelo

Fonte: Adaptado de Microchip Technology (2008).

Page 163: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

148

Tabela 22. Descrição dos pinos do PIC18F4520 (continuação)

Pinos Nome Descrição

28 RD5 PSP5 P1B

E/S digital E/S de dados do escravo paralelo Saída CCP1 reforçada

29 RD6 PSP6 P1C

E/S digital E/S de dados do escravo paralelo Saída CCP1 reforçada

30 RD7 PSP7 P1D

E/S digital E/S de dados do escravo paralelo Saída CCP1 reforçada

31 VSS Aterramento do chip 32 VDD Alimentação do chip

33

RB0 INT0 FLT0 AN12

E/S digital Entrada Interrupção externa 0 Entrada de Falha PWM para reforço em CCP1 Entrada analógica 12

34 RB1 INT1 AN10

E/S digital Entrada Interrupção externa 1 Entrada analógica 10

35 RB2 INT2 AN8

E/S digital Entrada Interrupção externa 2 Entrada analógica 8

36

RB3 AN9 CCP2

E/S digital Entrada analógica 9 Entrada Captura 2/ Saída Compara 2/ Saída PWM 2 (alternativa para CCP2 quando CCP2MX habilitado)

37 RB4 KBI0 AN11

E/S digital Interrupção de mudança de estado Entrada analógica 11

38

RB5 KBI1 PGM

E/S digital Interrupção de mudança de estado E/S de habilitação de programação ICSP (In-Circuit Serial Programming) em baixa voltagem

39 RB6 KBI2 PGC

E/S digital Interrupção de mudança de estado E/S do clock do depurador e de programação ICSP

40

RB7 KBI3 PGD

E/S digital Interrupção de mudança de estado E/S de dados do depurador in-Circuit e programação ICSP

Fonte: Adaptado de Microchip Technology (2008).

Page 164: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

149

ANEXO II

O Anexo II contém a Tabela 23, Tabela 24, Tabela 25 e Tabela 26 onde são apresentadas

brevemente a descrição das instruções reconhecidas pelo montador assembler da Microchip

(MPASMTM). Em cada tabela, está contido o mnemónico da instrução (primeira coluna), os

operandos (segunda coluna), números de ciclos gastos para executar a instrução (terceira coluna) e

uma descrição baseada nos operadores aritméticos, lógicos, bit a bit e relacionais da linguagem

ANSI-C (American National Standards Institute padrão C, quarta coluna). Para entendimento das

tabelas, é necessária a compreensão de alguns símbolos:

a : bit de acesso a memória RAM. Se a for ‘0’ (zero), acessa os primeiros 128 bytes

(registrador BSR é ignorado). Se a for ‘1’ (um) ou for omitido, acessa os registradores

GPR, do banco especificado em BSR;

f : registrador ou posição da memória de dados;

W : registrador Working Register para as operações da ULA;

d : destino de operação. Se d for ‘0’ (zero), resultado é armazenado em W. Se d for ‘1’

(um) ou for omitido, resultado é armazenado em f;

b : endereço de um bit dentro de um registrador;

C : bit Carry flag (bit indicador de “vai-um”);

k : valor numérico constante;

{ } : elementos entre chaves podem ser omitidos;

n : endereço relativo ou absoluto de uma instrução ou rótulo de uma sub-rotina;

s : bit de seleção do modo Fast Call/Return. Se s for ‘1’ (um), salva o contexto de

hardware do microcontrolador. Se s for ‘0’ (zero) ou for omitido, não salva o contexto

de hardware do microcontrolador; e

--- : a instrução não utiliza operandos.

Page 165: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

150

Tabela 23. Instruções de operações orientadas a byte

Mnemônico Operandos Ciclos Descrição ADDWF f{, d{, a}} 1 d = W + f ADDWFC f{, d{, a}} 1 d = W + f + C ANDWF f{, d{, a}} 1 d = W & f CLRF f{, a} 1 f = 0x000 COMF f{, d{, a}} 1 d = ~f

CPFSEQ f{, a} 1 (2 ou 3) f – W (comparação sem sinal). Não realiza a próxima instrução se f = W

CPFSGT f{, a} 1 (2 ou 3) f – W (comparação sem sinal). Não realiza a próxima instrução se f > W

CPFSLT f{, a} 1 (2 ou 3) f – W (comparação sem sinal). Não realiza a próxima instrução se f < W

DECF f{, d{, a}} 1 d = f – 1

DECFSZ f{, d{, a}} 1 (2 ou 3) d = f – 1. Não realiza a próxima instrução se resultado for 0

DCFSNZ f{, d{, a}} 1 (2 ou 3) d = f – 1. Não realiza a próxima instrução se resultado for diferente de 0

INCF f{, d{, a}} 1 d = f + 1

INCFSZ f{, d{, a}} 1 (2 ou 3) d = f + 1. Não realiza a próxima instrução se resultado for 0

INFSNZ f{, d{, a}} 1 (2 ou 3) d = f + 1. Não realiza a próxima instrução se resultado for diferente de 0

IORWF f{, d{, a}} 1 d = W | f MOVF f{, d{, a}} 1 d = f MOVFF forigem, fdestino 2 fdestino = forigem MOVWF f{, a} 1 f = W MULWF f{, a} 1 PRODH:PRODL = W * f NEGF f{, a} 1 d = ~f + 1 RLCF f{, d{, a}} 1 d = f << 1 rotação à esquerda passando por C RLNCF f{, d{, a}} 1 d = f << 1 rotação à esquerda sem passar por C RRCF f{, d{, a}} 1 d = f >> 1 rotação à direita passando por C RRNCF f{, d{, a}} 1 d = f >> 1 rotação à direita sem passar por C SETF f{, a} 1 f = 0xFF SUBFWB f{, d{, a}} 1 d = W – f – (~C) SUBWF f{, d{, a}} 1 d = f – W SUBWFB f{, d{, a}} 1 d = f – W – (~C) SWAPF f{, d{, a}} 1 fL = fH e fH = fL (troca parte alta com parte baixa de f) TSTFSZ f{, a} 1 (2 ou 3) Testa f. Não realiza se f = 0 XORWF f{, d{, a}} 1 d = W ^ f

Fonte: Adaptado de Microchip Technology (2008).

Page 166: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

151

Tabela 24. Instruções de operações orientadas a bit

Mnemônico Operandos Ciclos Descrição BCF f, b{, a} 1 f[b] = 0 BSF f, b{, a} 1 f[b] = 1 BTFSC f, b{, a} 1 (2 ou 3) Não realiza a próxima instrução se f[b] == 0 BTFSS f, b{, a} 1 (2 ou 3) Não realiza a próxima instrução se f[b] == 1 BTG f, b{, a} 1 f[b] = ~f[b]

Fonte: Adaptado de Microchip Technology (2008).

Tabela 25. Instruções de operações literais

Mnemônico Operandos Ciclos Descrição ADDLW k 1 W = W + k ANDLW k 1 W = W & k IORLW k 1 W = W | k LFSR f, k 2 FSR (File Select Register) = k (apontado por f) MOVLB k 1 BSR = k MOVLW k 1 W = k MULLW k 1 PRODH:PRODL = W * k SUBLW k 1 W = k – W XORLW k 1 W = W ^ k

Fonte: Adaptado de Microchip Technology (2008).

Tabela 26. Instruções de operações de controle

Mnemônico Operandos Ciclos Descrição

BC n 1 (2) Salta para o endereço relativo n se o bit Carry de STATUS for 1

BN n 1 (2) Salta para o endereço relativo n se o bit Negative de STATUS for 1

BNC n 1 (2) Salta para o endereço relativo n se o bit Carry de STATUS for 0

BNN n 1 (2) Salta para o endereço relativo n se o bit Negative de STATUS for 0

BNOV n 1 (2) Salta para o endereço relativo n se o bit Overflow de STATUS for 0

BNZ n 1 (2) Salta para o endereço relativo n se o bit Zero de STATUS for 0

BOV n 1 (2) Salta para o endereço relativo n se o bit Overflow de STATUS for 1

BRA n 2 Salta para o endereço relativo rotina n (incondicional)

Fonte: Adaptado de Microchip Technology (2008).

Page 167: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

152

Tabela 26. Instruções de operações de controle (continuação).

Mnemônico Operandos Ciclos Descrição

BZ n 1 (2) Salta para o endereço relativo n se o bit Zero de STATUS for 1

CALL n{, s} 2 Salta para a sub-rotina de rótulo n podendo salvar registradores W, STATUS e BSR

CLRWDT --- 1 WDT (Watchdog Timer) = 0x000 DAW --- 1 Converte valor de W para decimal GOTO n 2 Salta para o endereço absoluto n (incondicional) NOP --- 1 Não realiza operação por um ciclo de clock POP --- 1 Descarta valor do topo da pilha PUSH --- 1 Armazena o endereço da próxima instrução no topo da pilha

RCALL n 2 Armazena o endereço da próxima instrução no topo da pilha e salta para a sub-rotina de rótulo n

RESET --- 1 Reinicializa o microcontrolador

RETFIE {s} 2 Retorna de uma interrupção podendo recuperar o contexto de hardware (caso tenha sido salvado)

RETLW k 2 Retorna de uma sub-rotina e W = k RETURN {s} 2 Retorna de uma sub-rotina SLEEP ---- 1 Microcontrolador entra em modo de espera

Fonte: Adaptado de Microchip Technology (2008).

No data sheet do PIC18F4520, pode-se encontrar maiores detalhes do seu conjunto de

instruções.

Page 168: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

153

ANEXO III

O Anexo III corresponde a algumas das funções da biblioteca UART, do compilador

MicroC PRO for PIC, utilizada a validação do Módulo Controlador. Sua documentação pode ser

obtida através do Help contido no compilador, onde é descrita por “The UART hardware module is

available with a number of PIC compliant MCUs. The mikroC PRO for PIC UART Library

provides comfortable work with the Asynchronous (full duplex) mode.”.

ROTINAS DA BIBLIOTECA UART

As rotinas da biblioteca UART utilizadas, foram:

UART1_Init:

o Protótipo: void UART1_Init(const unsigned long baud_rate);

o Retorno: Nada;

o Descrição: Inicializa módulo de hardware UART com a taxa de transmissão

desejada. Consulte o data sheet do componente para as taxas de transmissão

permitidas para a frequência do oscilador especificada. Se especificado uma taxa de

transmissão não suportada, o compilador retornará um erro.

o Requisitos: O microcontrolador PIC necessita do módulo de hardware UART.

UART1_Init precisa ser chamada antes de usar outras funções da biblioteca;

o Parâmetros: baud_rate (taxa de transmissão desejada);

o Exemplo: Inicialização do módulo de hardware UART1 com taxa de transmissão de

2400 bps. UART1_Init(2400).

UART1_Data_Ready:

o Protótipo: char UART1_Data_Ready();

o Retorno: 1, se o dado está pronto para leitura, ou 0, se não tiver nenhum dado no

registrador do buffer de recepção;

o Descrição: Usado para testar se os dados no buffer de recepção estão preparados

para a leitura.

o Requisitos: Módulo de hardware UART1 necessita ser inicializado;

Page 169: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

154

o Exemplo: Se o dado estiver pronto, leia-o. if (UART1_Data_Ready() == 1) { /*

leitura do dado*/ };

UART1_Read:

o Protótipo: char UART1_Read();

o Retorno: Retorna o dado recebido;

o Descrição: Recebe o dado via UART. Deve-se usar primeiro a função

UART1_Data_Ready para testar se o dado está pronto para ser lido.

o Requisitos: Módulo de hardware UART1 necessita ser inicializado;

o Exemplo: receive = UART1_Read();

UART1_Write:

o Protótipo: void UART1_Write(char _data);

o Retorno: Nada;

o Descrição: Transmite um byte via módulo de hardware UART.

o Parâmetros: _data (sado a ser transmitido);

o Requisitos: Módulo de hardware UART1 necessita ser inicializado;

o Exemplo: unsigned char _data = 0x1E; UART1_Write(_data);

UART1_Write_Text:

o Protótipo: void UART1_Write_Text(char * UART_text);

o Retorno: Nada;

o Descrição: Transmite um texto via módulo de hardware UART. O texto necessita ter

valor 0 na terminação;

o Parâmetros: UART_text (texto a ser transmitido);

o Requisitos: Módulo de hardware UART1 necessita ser inicializado;

o Exemplo: unsigned char *output = “texto”; UART1_Write_Text(output);

Page 170: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

155

ANEXO IV

O Anexo IV corresponde a algumas das funções da biblioteca I2C, do compilador MicroC

PRO for PIC, utilizada a validação do Módulo I²C. Sua documentação pode ser obtida através do

Help contido no compilador, onde é descrita por “I²C full master MSSP module is available with a

number of PIC MCU models. mikroC PRO for PIC provides library which supports the master I²C

mode.”.

ROTINAS DA BIBLIOTECA I2C

As rotinas da biblioteca I2C utilizadas, foram:

I2C1_Init:

o Protótipo: void I2C1_Init(const unsigned long clock);

o Retorno: Nada;

o Descrição: Inicializa módulo de hardware I²C com clock desejado. Consulte o data

sheet do componente para os valores corretos correspondentes frequência do

oscilador. Necessita ser chamada antes de usar as outras funções da biblioteca. Não

necessita configurar as portas manualmente para usar o módulo, a biblioteca realiza

o tratamento na inicialização.

o Requisitos: O microcontrolador PIC necessita do módulo de hardware MSSP no

PORTB ou PORTC;

o Parâmetros: clock (frequência da linha de clock);

o Exemplo: Inicializa comunicação I²C com 100 kHz. I2C1_Init(100000);.

I2C1_Start:

o Protótipo: unsigned short I2C1_Start(void);

o Retorno: Se não houver erro, retorna 0;

o Descrição: Determina se o barramento I²C está livre e aplica sinal de Start.

o Requisitos: I²C necessita ser configurado antes de usar a função;

o Exemplo: I2C1_Start();

Page 171: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

156

I2C1_Repeated_Start:

o Protótipo: void I2C1_Repeated_Start(void);

o Retorno: Nada;

o Descrição: Repete o sinal de Start.

o Requisitos: I²C necessita ser configurado antes de usar a função;

o Exemplo: I2C1_Repeated_Start();

I2C1_Rd:

o Protótipo: unsigned short I2C1_Rd(unsigned short ack);

o Retorno: Retorna um byte do escravo;

o Descrição: Retorna um byte do escravo e envia um sinal NACK, se o parâmetro for

0, caso contrário envia um ACK.

o Parâmetros: ack (sinal de resposta ao escravo pelo recebimento do byte);

o Requisitos: I²C necessita ser configurado antes de usar a função. Deve-se enviar um

sinal de Start antes de usar essa função;

o Exemplo: unsigned short take; take = I2C1_Rd(0);

I2C1_Wr:

o Protótipo: unsigned short I2C1_Wr(unsigned short data_);

o Retorno: Retorna 0 se não houver erro;

o Descrição: Envia um byte de dado via barramento I²C;

o Parâmetros: data_ (byte a ser enviado para o escravo pelo barramento I²C);

o Requisitos: I²C necessita ser configurado antes de usar a função. Deve-se enviar um

sinal de Start antes de usar essa função;

o Exemplo: I2C1_Write(0xA3);

I2C1_Stop:

o Protótipo: void I2C1_Stop(void);

o Retorno: Nada;

Page 172: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

157

o Descrição: Envia um byte de dado via barramento I²C;

o Requisitos: I²C necessita ser configurado antes de usar a função;

o Exemplo: I2C1_Stop();

Page 173: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

158

ANEXO V

O Anexo V corresponde a algumas das funções da biblioteca PWM, do compilador MicroC

PRO for PIC, utilizada a validação do Módulo Motor de Passo. Sua documentação pode ser obtida

através do Help contido no compilador, onde é descrita por “CCP module is available with a

number of PIC MCUs. mikroC PRO for PIC provides library which simplifies using PWM HW

Module.”.

ROTINAS DA BIBLIOTECA PWM

As rotinas da biblioteca PWM utilizadas, foram:

PWM1_Init:

o Protótipo: void PWM1_Init(const long freq);

o Retorno: Nada;

o Descrição: Inicializa módulo de hardware PWM com ciclo ativo do período PWM

em 0, determinado pelo parâmetro freq correspondente a frequência do sinal PWM

desejado em Hz. Consulte o data sheet do componente para os valores corretos

correspondentes. Necessita ser chamada antes de usar as outras funções da

biblioteca.

o Requisitos: O microcontrolador PIC necessita do módulo de hardware CCP;

o Parâmetros: freq (frequência do sinal PWM em Hz);

o Exemplo: PWM1_Init(5000);

PWM1_Set_Duty:

o Protótipo: void PWM1_Set_Duty(unsigned short duty_ratio);

o Retorno: Nada;

o Descrição: Determina o ciclo ativo do sinal PWM. Pode variar de 0 até 255, onde 0

corresponde à 0% , 127 à 50%, e 255 à 100% de ciclo ativo. Outros valores do ciclo

ativo pode ser calculado a partir de (Percent*255)/100;

o Parâmetros: duty_ratio (ciclo ativo do sinal PWM);

Page 174: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

159

o Requisitos: Microcontrolador necessita do módulo de hardware CCP. A função

PWM1_Init necessita ser chamada antes de utilizar essa função;

o Exemplo: PWM1_Set_Duty(192);

PWM1_Start:

o Protótipo: void PWM1_Start(void);

o Retorno: Nada;

o Descrição: Inicia PWM.

o Requisitos: Microcontrolador necessita do módulo de hardware CCP. A função

PWM1_Init necessita ser chamada antes de utilizar essa função;

o Exemplo: PWM1_Start();

PWM1_Stop:

o Protótipo: void PWM1_Stop(void);

o Retorno: Nada;

o Descrição: Para PWM.

o Requisitos: Microcontrolador necessita do módulo de hardware CCP. A função

PWM1_Init necessita ser chamada antes de utilizar essa função. PWM1_Start deve

ser chamada antes dessa função, caso contrário não terá efeito;

o Exemplo: PWM1_Stop();

Page 175: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

160

ANEXO VI

O Anexo VI corresponde a algumas das funções da biblioteca LCD, do compilador MicroC

PRO for PIC, utilizada a validação do Módulo Display LCD. Sua documentação pode ser obtida

através do Help contido no compilador, onde é descrita por “The mikroC PRO for PIC provides a

library for communication with Lcds (with HD44780 compliant controllers) through the 4-bit

interface. An example of Lcd connections is given on the schematic at the bottom of this page.”.

ROTINAS DA BIBLIOTECA LCD

As rotinas da biblioteca LCD utilizadas, foram:

Lcd_Init:

o Protótipo: void Lcd_Init();

o Retorno: Nada;

o Descrição: Inicializa módulo LCD.

o Requisitos: Variáveis globais que devem ser definidas antes de utilizar a função:

LCD_D7: Pino do bit de dados 7 do LCD

LCD_D6: Pino do bit de dados 6 do LCD

LCD_D5: Pino do bit de dados 5 do LCD

LCD_D4: Pino do bit de dados 4 do LCD

LCD_RS: Pino de controle RS do LCD

LCD_EN: Pino de controle E do LCD

LCD_D7_Direction: Direção do pino do bit de dados 7 do LCD

LCD_D6_Direction: Direção do pino do bit de dados 6 do LCD

LCD_D5_Direction: Direção do pino do bit de dados 5 do LCD

LCD_D4_Direction: Direção do pino do bit de dados 4 do LCD

LCD_RS_Direction: Direção do pino de controle RS do LCD

LCD_EN_Direction: Direção do pino de controle E do LCD.

Page 176: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

161

o Parâmetros: Nenhum;

o Exemplo:

sbit LCD_RS at RB4_bit;

sbit LCD_EN at RB5_bit;

sbit LCD_D7 at RB3_bit;

sbit LCD_D6 at RB2_bit;

sbit LCD_D5 at RB1_bit;

sbit LCD_D4 at RB0_bit;

sbit LCD_RS_Direction at TRISB4_bit;

sbit LCD_EN_Direction at TRISB5_bit;

sbit LCD_D7_Direction at TRISB3_bit;

sbit LCD_D6_Direction at TRISB2_bit;

sbit LCD_D5_Direction at TRISB1_bit;

sbit LCD_D4_Direction at TRISB0_bit;

...

Lcd_Init();

Lcd_Out:

o Protótipo: void Lcd_Out(char row, char column, char *text);

o Retorno: Nada;

o Descrição: Imprimi texto no Lcd a partir de uma posição específica;

o Parâmetros:

row: linha da posição inicial

column: coluna da posição inicial

text: texto (literal ou variável) a ser impresso;

o Requisitos: o módulo LCD necessita ser inicializado;

o Exemplo:

// Impressão do texto "Hello!" no LCD iniciando na linha 1, coluna 3

Lcd_Out(1, 3, "Hello!");

Page 177: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

162

Lcd_Out_Cp:

o Protótipo: void Lcd_Out_Cp(char *text);

o Retorno: Nada;

o Descrição: Imprimi texto no Lcd a partir de uma posição atual do cursor;

o Parâmetros: text: texto (literal ou variável) a ser impresso;

o Requisitos: o módulo LCD necessita ser inicializado;

o Exemplo:

// Impressão do texto "Here!" no LCD iniciando na posição atual do cursor

Lcd_Out_Cp("Here!");

Lcd_Chr:

o Protótipo: void Lcd_Chr(char row, char column, char out_char);

o Retorno: Nada;

o Descrição: Imprimi caractere no Lcd em uma posição específica;

o Parâmetros:

row: linha da posição

column: coluna da posição

out_char: caractere (literal ou variável) a ser impresso;

o Requisitos: o módulo LCD necessita ser inicializado;

o Exemplo:

// Impressão do caractere "i" na linha 2, coluna 3

Lcd_Chr(2, 3, 'i');

Lcd_Chr_Cp:

o Protótipo: void Lcd_Chr_Cp(char out_char);

o Retorno: Nada;

o Descrição: Imprimi caractere no Lcd na posição atual do cursor;

o Parâmetros: out_char: caractere (literal ou variável) a ser impresso;

Page 178: Kit Modular de Desenvolvimento Baseado em Microcontrolador PIC

163

o Requisitos: o módulo LCD necessita ser inicializado;

o Exemplo:

// Impressão do caractere "e" na posição atual do cursor

Lcd_Chr_Cp('e');

Lcd_Cmd:

o Protótipo: void Lcd_Cmd(char out_char);

o Retorno: Nada;

o Descrição: Envia um comando ao Lcd;

o Parâmetros: out_char: comando a ser enviado (deve ser um comando válido);

o Requisitos: o módulo LCD necessita ser inicializado;

o Exemplo:

// limpa LCD com cursor em home

Lcd_Cmd(0x01);