Você pode até não saber, mas você está utilizando um microcontrolador neste exato momento, independente se você está vendo este artigo de um computador ou de um smartphone.

Nossa vida está rodeada por este componente, seja em computadores, TVs, impressoras, ar-condicionado ou até mesmo nos automóveis. Então, conhecer e saber utilizar um microcontrolador é uma habilidade que se torna cada vez mais mandatória na área profissional da elétrica e da eletrônica.

Neste artigo abordaremos tudo sobre este componente que é indispensável para nossa vida atualmente, o que é, para que serve, principais modelos e como utilizar um microcontrolador, mesmo que você não tenha um.

 

Flávio Babos

https://flaviobabos.com.br

 


Artigo selecionado para publicação na Revista INCB Eletrônica N° 15 - Março/Abril 2023

 

O que são microcontroladores e qual sua aplicação?

Os microcontroladores são componentes eletrônicos compactos que incorporam um processador, memória e periféricos de entrada e saída em um único chip. Esses componentes trabalham juntos para controlar sistemas ou processos em tempo real, tornando-os ideais para aplicações onde é necessário realizar tarefas específicas.

Este componente é amplamente utilizado em uma variedade de aplicações e dispositivos tecnológicos de internet das coisas, incluindo eletrodomésticos (máquinas de lavar, fornos elétricos, fogões elétricos, ar condicionado, chuveiros elétricos), sistemas de automação industrial, automóveis, dispositivos médicos, sistemas de controle de acesso, entre outros.

Eles são programáveis, o que significa que o usuário pode escrever um software personalizado para o dispositivo, permitindo a adaptação a diferentes aplicações.

 

 

Principais fabricantes de modelos de microcontroladores

Existem vários fabricantes de microcontroladores no mercado, sendo que cada um possui suas próprias características, recursos e vantagens. Alguns dos principais fabricantes de microcontroladores são:

  1. Microchip Technology: a Microchip é uma das principais empresas do setor de microcontroladores, oferecendo uma ampla variedade de dispositivos para diferentes aplicações, incluindo a família PIC, dsPIC e AVR.

  2. Texas Instruments: a Texas Instruments é outra empresa líder no setor de microcontroladores, oferecendo dispositivos para uma ampla variedade de aplicações, incluindo a família MSP430 e Tiva C.

  3. STMicroelectronics: a STMicroelectronics é uma empresa europeia que oferece uma ampla gama de microcontroladores para diferentes aplicações, incluindo a família STM32 e STM8, que são microcontroladores extremamente potentes e que estão dominando um espaço do mercado pela adoção dos desenvolvedores.

  4. Atmel: a Atmel é uma empresa que oferece uma ampla gama de microcontroladores, incluindo a família AVR e SAM. A atmel foi comprada pela Microchip em 2016 e a placa de desenvolvimento mais conhecida do mundo utiliza seus microcontroladores, o Arduino.

 

Esses são apenas alguns dos principais fabricantes de microcontroladores, e há muitos outros no mercado. A escolha do fabricante depende das necessidades e requisitos específicos de cada projeto ou aplicação.

 

O microcontrolador PIC16F628A

O PIC16F628A, é um poderoso microcontrolador de 8-bits, muito simples de se programar. Sendo o oferecido em vários tipos de encapsulamentos. As principais características desse componente são:

  • Oscilador Interno de 4MHz;

  • 128 bytes de EEPROM;

  • Canais de Capture/Compare e PWM;

  • USART;

  • Watchdog Timer com oscilador independente;

  • Tensão de operação de 2.0 a 5.5V;

  • 16 pinos Input e Output;

  • 3 Timers de 8 bits.

 

Um ponto negativo é o PIC16F628 não possui um conversor analógico-digital (ADC) integrado em sua arquitetura, a ausência de um ADC pode ser uma limitação para algumas aplicações que requerem a leitura de sinais analógicos.

Os pinos do PIC16F628A são encontrados em seu datasheet, onde são individualmente explicados. A seguir exibimos essa relação de pinos para melhor entendimento do componente:

 

Como vimos do pino RA0 ao RA7 podemos configurá-lo como entrada ou saída, o mesmo se aplica para os pinos de RB. Além de atuar de entrada e saída digital, alguns pinos possuem funções especiais como comunicação UART, entrada para oscilador externo por exemplo.

 

Criando um programa simples para um microcontrolador PIC16F628A

Nesta aplicação vamos utilizar um PIC16F628A e fazer um programa para comandá-lo e acender 3 LEDs e apagar a cada 1 segundo. Será explicado passo a passo para criar o projeto e simula-lo.

 

 

Instalando o MPLab X

O primeiro passo neste exemplo é instalar a IDE de programação da Microchip, onde você poderá facilmente fazer o download no site do fabricante. A instalação é simples e basicamente se resume em aceitar os termos e clicar em “next”, até concluir o processo.

 

 

Instalando o compilador XC8

O segundo e importante passo para conseguir utilizar os PICs da família 16F é a instalação do compilador XC8. O compilador também é disponibilizado para download pela microchip gratuitamente, e a instalação é simples como a instalação do MPLAB descrito no parágrafo anterior.

 

Criando o projeto com MPLab X

Após finalizada a instalação dos dois itens anteriores, teremos instalado o ambiente de desenvolvimento da Microchip. A primeira vista a página inicial da IDE é a exibida a seguir.

 

 

Na tela inicial temos alguns elementos importantes a serem explorados, como a barra de menus, o painel de ferramentas, a janela de outputs e a janela de arquivos. Nos próximos passos veremos como criar o projeto do programa proposto.

Em “File” na “barra de menus”, clicar em “new project”.

 

 

 

Se abrirá uma janela guia para criação do projeto, devemos selecionar “standalone project” e prosseguir clicando em “next”.

 


 

Em seguida devemos inserir e selecionar o “device”, no caso o microcontrolador que usaremos em nosso projeto, que é o PIC16F628A e clicar em “next”.

 

 

Na janela seguinte, não precisamos realizar nenhuma alteração e passar para a próxima:

 


 

Nesta etapa fica evidente a importância da instalação do compilador XC8, neste momento devemos selecionar qual compilador utilizaremos em nosso projeto, existem vários outros, mas instalamos e usaremos o XC8, feito isso podemos clicar em “next”.

 


 

A última fase da criação do projeto requer inserimos o nome do projeto no campo “Project Name” e também o caminho que o computador irá salvar o projeto em “Project Location”. Neste momento você pode selecionar o nome e o caminho que deseja e clicar em finalizar.



Assim que feito o último passo, alguns arquivos e pastas do projeto aparecerão na janela de arquivos, porém a pasta que contém o código principal por padrão vem vazia.

Neste caso temos que inserir o arquivo do código principal, para isso devemos clicar com o botão direito em cima de “Source File”, em seguida “New” e então “main.c”.

 

Neste momento abrirá uma janela para a criação deste arquivo. Geralmente é necessário inserir apenas o nome desejado e clicar em finalizar


 

Com isso, veremos a criação do arquivo “main.c” dentro da pasta “Source Files”. Clicando duas vezes o arquivo se abrirá e veremos uma configuração inicial assim como o da imagem.

 

 


 

 

Neste momento temos tudo o que é necessário para criar qualquer projeto para o PIC16F628A, e podemos aplicar este conhecimento para criar um projeto para qualquer microcontrolador da família PIC.

Podemos então seguir adiante com a elaboração do projeto proposto.

A primeira coisa a se fazer em qualquer projeto que utilize um PIC é declarar as diretivas pragma, que realizam a configuração básica do microcontrolador, antes de entrar no código.

 

Para encontrar essa configuração, na barra de menus, em “Window”, devemos acessar a opção “Target Memory Views” e selecionar “Configuration Bits”.

 

Essa janela que se abrirá, apresenta um menu selecionável com todas as configurações iniciais do microcontrolador utilizado. O desenvolvedor deve conhecer cada opção através do datasheet e adaptá-lo a cada projeto.

 


 

De acordo com as necessidades desse projeto proposto, utilizaremos as seguintes configurações exibidas na imagem a seguir.

 


 

Com isso , clicando em “Generate Source Code”, a IDE apresenta estas configurações na “Janela de Outputs”, permitindo serem copiadas e coladas diretamente no código.

 


 

Essa configuração deve ser a primeira parte de qualquer código que você criar, assim como exemplificado na imagem.

 


 

Tendo cumprido todas as etapas, seguimos com a elaboração do código para controlar os LEDs, neste momento utilizaremos as configurações de GPIO do microcontrolador.

Todo o código está comentado e explicado no seguinte trecho:

 

/*******************************************

* Arquivo: main.c

* Criado em 20 de Março de 2023

*******************************************

* LED_ Blinking

* Este projeto visa introduzir o funcionamento do PIC16F628A,

* utilizando as GPIOs para acionar 3 LEDs, um a cada segundo.

********************************************/

 

// CONFIG

#pragma config FOSC = INTOSCCLK // Bits da seleção do oscilador (INTOSCCLK: Pino RA6 funciona como output do clock,Pino RA7 funciona como I/O)

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT desabilitado)

#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT desabilitado)

#pragma config MCLRE = OFF // Configura o pino RA5/MCLR/VPP como I/O, MCLR está internamente ligado a VDD

#pragma config BOREN = OFF // Detector fr Brown-out (BOD Desabilitado)

#pragma config LVP = ON // Programação em baixa tensão Habilitado

#pragma config CPD = OFF // Proteção dos dados da memória EE (Desabilitado)

#pragma config CP = OFF // Proteção da memória Flash (Desabilitado)

 

#define _XTAL_FREQ 4000000 // Define a frequência de operação do cristal como 4 MHz

 

#include <xc.h>

 

void main(void) {

 

TRISB = 0x00; // Define todas as portas do PortB como saída

PORTB = 0x00; // Define todas as portas do PortB em nível baixo

 

while(1){

 

PORTBbits.RB0 = 1; //Define a o pino RB0 como nível alto

__delay_ms(1000); //Espera 1 segundo

PORTBbits.RB0 = 0; //Define a o pino RB0 como nível baixo

__delay_ms(1000); //Espera 1 segundo

 

PORTBbits.RB1 = 1; //Define a o pino RB1 como nível alto

__delay_ms(1000); //Espera 1 segundo

PORTBbits.RB1 = 0; //Define a o pino RB1 como nível baixo

__delay_ms(1000); //Espera 1 segundo

 

PORTBbits.RB2 = 1; //Define a o pino RB2 como nível alto

__delay_ms(1000); //Espera 1 segundo

PORTBbits.RB2 = 0; //Define a o pino RB2 como nível baixo

__delay_ms(1000); //Espera 1 segundo

}

 

return;

}


 

Finalizando o código, podemos compilar e verificar se todas as etapas foram realizadas com sucesso. Caso sim, a janela de outputs exibirá a mensagem em verde como mostra a imagem abaixo.

 

 

Assim, conseguimos gerar o arquivo para gravar nosso microcontrolador, finalizando a etapa de criação do código.

Vale notar que a “Janela de Outputs” também exibe o caminho onde foi salvo o arquivo .hex, para a gravação do PIC16F628A, esse caminho vai ser importante na hora de importar o código para simulá-lo.

 

Aplicação de um microcontrolador a partir de um software

 Para simular a aplicação utilizando o PIC16F628A, utilizaremos o software Proteus, nele é possível verificar a maioria das aplicações que o PIC pode realizar, antes mesmo da aplicação na vida real.

 Para isso então veremos passo a passo de como criar um esquemático para simular nossa aplicação:

 Primeiramente abra o Proteus e crie um novo esquemático.

 

 

Feito isso o software abrirá um plano onde se pode inserir os componentes, porém antes de inseri-los devemos adicioná-los à lista de componentes do projeto.

 

 

 

Neste caso usaremos os seguintes componentes:

  • 1 x PIC16F628A

  • 3 x LEDs

  • 3 x Resistores 330R

 

Quando pressionarmos o botão “P” indicado na figura anterior, o software abrirá uma nova janela com a biblioteca de componentes disponíveis. Nosso objetivo é encontrar os 3 componentes listados acima:

Para encontrar o microcontrolador, devemos inserir o modelo PIC16F628A no campo “Keyword” e clicar duas vezes sobre o resultado ou em “OK”.

 

 

Para encontrar o LED e o resistor seguimos a mesma lógica, optando por escolher modelos genéricos dos componentes.

Agora com os componentes na lista do projeto podemos elaborar o esquemático do projeto. Vale observar no código que utilizamos a porta GPIO RB0, RB1 e RB2, então estas devem ser utilizadas no esquemático também.

 

 

Antes de partir para a simulação, devemos configurar os valores das resistências para 330 Ohms, e também configurar algumas características do microcontrolador PIC, como frequência do cristal interno e carregar o código que fizemos no MPLab X.

Para acessar a janela de configuração, com o botão direito clicar sobre o microcontrolador e selecionar a opção “Edit Properties".

 


 

A janela que se abre a partir desse momento, possui todas as características que podem ser modificadas no microcontrolador. Para nós agora o que é importante é a frequência do oscilador interno e carregar o arquivo .hex do programa que elaboramos.


 

 

A frequência foi definida no código como 4MHz, porém esta pode ser alterada conforme o projeto do desenvolvedor, respeitando os limites do componente.

O arquivo do programa se encontra naquele caminho que foi gerado junto com a mensagem verde do BUILD quando compilamos o código no MPLab X. Devemos então selecionar este arquivo.

 

 

Neste momento está tudo pronto para iniciarmos a simulação, para executar esta ação basta selecionar o botão de play, no canto inferior esquerdo da tela e o programa iniciará a simulação.

 

Se tudo tiver ocorrido perfeitamente, teremos o seguinte resultado a seguir, a cada segundo o microcontrolador acende e apaga um dos leds.

 

E esse foi o nosso projeto elaborando desde a parte de criação do firmware até a simulação do funcionamento com o microcontrolador PIC16F628A

 

 

Considerações Finais

Os microcontroladores são componentes eletrônicos extremamente úteis em uma variedade de aplicações modernas. Eles permitem o controle de sistemas em tempo real e oferecem a possibilidade de personalização através da programação.

Ao selecionar um microcontrolador para um projeto ou aplicação, é importante considerar uma série de fatores, como o desempenho, a capacidade de memória, a quantidade e tipo de periféricos, a interface de comunicação e o consumo de energia. Além disso, é fundamental escolher um fabricante confiável que ofereça suporte e ferramentas de desenvolvimento adequadas.

Espero que com essa informação você seja capaz agora de elaborar e explorar seus projetos utilizando este e muitos outros microcontroladores, nos vemos em um próximo artigo!