·
Engenharia Elétrica ·
Outros
Send your question to AI and receive an answer instantly
Preview text
MICROCONTROLADORES Renato de Brito Sanchez SUMÁRIO 1 MICROPROCESSADORES E MICROCONTROLADORES 3 2 CARACTERÍSTICAS DOS MICROCONTROLADORES 10 3 APLICAÇÃO DE MICROCONTROLADORES 20 4 CONFIGURAÇÃO E CODIFICAÇÃO 33 5 PROJETO COM MICROCONTROLADORES I 43 6 PROJETO COM MICROCONTROLADORES II 65 1 MICROPROCESSADORES E MICROCONTROLADORES Olá estudante Neste primeiro bloco da disciplina de Microcontroladores serão introduzidos os conceitos de microcontrolador e microprocessador apresentaremos suas definições funções principais características e a arquitetura física do microcontrolador Por fim será apresentada a definição de conjuntos básicos de instruções Vamos começar 11 Conceitos e Tecnologias Os microprocessadores e os microcontroladores estão presentes em diversos equipamentos Esses componentes possuem códigos especialmente programados para realizar diversas tarefas como a leitura de sensores a transmissão de dados e o controle de motores Cada equipamento possui uma aplicação específica dessa forma o microprocessador e o microcontrolador realizam funções diferentes para cada equipamento Ao desenvolver um equipamento é necessário conhecer as características e detalhes dos microcontroladores e microprocessadores utilizados Assim é possível escolher o componente adequado para cada função Lembrando que nem sempre um componente ideal para uma aplicação pode ser usado para outra aplicação O microcontrolador pode ser visto como um minicomputador possui um núcleo de processador memória voláteis e não voláteis e diversos periféricos de entrada e saída Os modelos mais populares de microcontroladores são o PIC da Microchip a Intel MCS da Intel e o Atmel AR da Atmel Entre eles o modelo mais popular é o Atmel pois é o microcontrolador utilizado nas placas Arduino Essas placas são muito utilizadas pelos estudantes por serem acessíveis fáceis de utilizar e possuírem um código aberto permitindo alterála de acordo com a necessidade do usuário Enquanto isso o microprocessador é um circuito integrado responsável por realizar cálculos e tomar decisões de acordo com a sua programação Podese disser que ele é o cérebro do equipamento O microprocessador reúne todas as funções de uma unidade central de computação CPU em um único circuito integrado Ele é programado para receber dados de diversas origens processálos de acordo com a sua programação e retornar os resultados de uma forma que possam ser utilizados Como o microprocessador é responsável pelo processamento de dados é de suma importância analisar as especificações de cada modelo e selecionar o microprocessador adequado ao desenvolver um equipamento afinal ere irá determinar a sua capacidade de processamento Essa é a maior diferença entre o microprocessador e o microcontrolador o microprocessador é responsável apenas por processar os dados recebidos já o microcontrolador interage com diversos componentes de acordo com os dados processados Ambos são necessários para o desenvolvimento de equipamentos 12 Arquiteturas e Características Físicas O microcontrolador é composto por um microprocessador memórias e periféricos interligados para trabalharem em conjunto seguindo a arquitetura abaixo Fonte Guimarães 2020 Disponível em httpsbitly3CmxArX Figura 11 Arquitetura de um microcontrolador A imagem demonstra a arquitetura de um microcontrolador PIC16F887 ilustrando bem uma arquitetura genérica de um microcontrolador Alimentação Os microcontroladores conseguem trabalhar em uma faixa de tensão de alguns volts Entretanto é comum alimentar os microcontroladores de 8 bits com 33V ou 5V Reset O microcontrolador possui um pino que serve para reiniciálo a partir de um sinal de tensão aplicado no pino Reiniciar então nada mais é do que fazer o programa interno do microcontrolador voltar ao início Este pino pode receber o nome de RESET ou de Master Clear MCLR CPU É o cérebro do microcontrolador Watchdog O Watchdog é responsável por monitorar o comportamento do microcontrolador Caso ocorra um erro durante o seu funcionamento o watchdog irá aplicar um reset no microcontrolador evitado que ele fique preso Memórias As principais memórias utilizadas pelo microcontrolador são memória de dados memória de programa e EEPROM As memórias de dados são as memórias RAM e registradores da CPU e responsáveis pelo armazenamento de dados E as EEPROM são responsáveis por armazenar qualquer tipo de dados necessário Oscilador O oscilador é responsável por gerar o clock do microcontrolador ele pode ser interno ou externo GPIO Os GPIO são os pinos de entrada e saída digital do microcontrolador Normalmente eles são divididos por letras Timers Os timers são responsáveis por criar contadores e temporizadores utilizados pelo microcontrolador Outros O microcontrolador pode possuir outros tipos de periféricos de acordo com o seu modelo como um conversor analógico digital e um gerador de sinal PWM 13 Conjuntos básicos de instruções A fim de facilitar a operação dos microcontroladores e dos microprocessadores foi desenvolvido um conjunto básico de instruções Essas instruções são códigos pré programados que funcionam como atalhos para a realização de funções especificas do componente Esses conjuntos de instruções são normalmente fornecidos pelos fabricantes do componente que listam todos os conjuntos de instruções presentes no componente Nos processadores essas instruções são divididas e RISC e CISC O conjunto de instruções CISC Complex Instruction Set Computer possui instruções mais complexas e especificas Já o conjunto de instruções RISC Reduced Instruction Set Computer é mais simplificada e com uso mais geral sendo o conjunto utilizado com mais frequência A linguagem de máquina é composta por declarações e instruções simples Todo programa é traduzido por uma linguagem de nível mais alto para a linguagem de máquina Uma instrução pode especificar Registradores especiais para aritmética endereçamento ou funções de controle Posições de memória específicas ou deslocamentos Modos de endereçamento específico Ao combinar essas instruções e controlar a ordem que elas são executadas é possível obter operações mais complexas Exemplo Transferência de dados de uma célula para outra Operações matemáticas de dois valores Armazenar o resultado obtido de operações matemática Desvio para outro endereço fora da sequência Teste de condição Mudar o endereço de acordo com o teste de condição Realizar operações lógicas como AND OR e XOR Interromper a execução de um programa Transferir bytes da porta de ES para a MP e viceversa Substituição do operando por seu valor absoluto Uma arquitetura tradicional possui códigos de operação especificando que operação será executada como transferir um dado de uma memória para um registrador Existem arquiteturas que possuem longas instruções como o VLIW que possuem inúmeros códigos onde uma série de operações ocorre com apenas uma instrução Conclusão Caro estudante nesse bloco você conheceu os conceitos de microcontroladores e microprocessadores Foram apresentadas suas definições aplicações e principais características além da estrutura física do microcontrolador e das funções de cada parte dela fornecendo a base para o entendimento dos componentes Por fim foi abordada a definição de conjuntos básicos de instruções fornecendo a base para o entendimento das futuras programações Bons estudos e até a próxima REFERÊNCIAS GUIMARÃES F Arquitetura de um microcontrolador Aula 3 MC Mundo Projetado 30 jan 2020 Disponível em httpsmundoprojetadocombrarquiteturadeum microcontrolador Acesso 05 jan 2022 REFERÊNCIAS COMPLEMENTARES KENSHIMA G Diferenças entre microcontrolador e microprocessador Filipeflop 29 jan 2021 Disponível em httpswwwfilipeflopcomblogdiferencasentre microcontroladoremicroprocessador Acesso 05 jan2022 CARDOSO M O Que É Um Microcontrolador Capitulo estudantil de robótica e automação 23 set 2020 Disponível em httpseduieeeorgbrufcgrasoquee ummicrocontrolador Acesso 05 jan2022 2 CARACTERÍSTICAS DOS MICROCONTROLADORES Olá estudante Neste bloco serão apresentaremos o funcionamento dos registradores e acesso à memória os conceitos de instruções lógicas e por fim a definição das portas IO do PIC e do Arduino Vamos lá 21 Registradores e acesso à memória Os registradores SFR Special Function Regiters são posições da memória que recebem nomes específicos e têm função bem definida guardar a configuração e o estado de funcionamento atual do microcontrolador Normalmente cada bit do registrador tem uma função específica Assim temos um registrador para definir se as portas são de entrada ou de saída ativar e desativar interrupções apresentar o estado da CPU etc Os principais registradores do PIC12F675 e seus respectivos endereços em hexadecimal são TMR0 01H armazena a contagem do timer Sempre que este contador chegar a zero e o INTCON estiver ativado a interrupção de timer 0 será ativada STATUS 03H mostra o estado interno da CPU GPIO 05H apresenta o estado dos pinos de entradasaída INTCON 0BH ativadesativa o conjunto de todas as interrupções e cada uma delas de forma independente CMCON 19H apresenta o estado das entradas e da saída do comparador interno ADCON 1FH apresenta o estado do conversor AD TRISIO 85H define se os pinos de entradasaída atuarão como entrada ou como saída individualmente ANSEL 9FH seleciona o estado de cada um dos pinos de entradasaída quanto à sua operação como pino analógico ou digital Já no Arduino os comandos para registradores são baseados na linguagem C Utilizaremos três tipos específicos de registradores PORTx registrador de dados usado para escrever no port ou pino em específico e x representa os ports disponíveis no microcontrolador que no caso do ATMega328p são os ports B C e D Fonte Madeira Link httpsbitly376HbHz Figura 21 Registrador PORTB Para definir um pino como alto devemos estabelecer seu respectivo bit do registrador PORT como 1 e para definilo como baixo estabelecêlo como 0 DDRx registrador de direção usado para ler a entrada de um port ou pino em específico No caso do ATMega328p x representa os ports B C e D Fonte Madeira Disponível em httpsbitly3ITFtHP Figura 22 Registrador DDRB Para definir um pino como saída devemos estabelecer seu respectivo bit do registrador DDR como 1 e para definilo como entrada estabelecêlo como 0 PINx endereço de entrada do pino usado para configurar um port inteiro ou o pino será entrada ou saída Fonte Madeira Disponível em httpsbitly3ITFtHP Figura 23 Registrador PINB 22 Instruções Lógicas Aritméticas e de Controle As principais instruções lógicas são OR AND XOR NOT A lógica OR segue o princípio de operação em que se pelo menos uma entrada for 1 a saída será 1 Dessa forma a única forma da saída ser 0 é quando todas as entradas forem 1 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 24 Tabela verdade e diagrama esquemático para a lógica OR A lógica AND segue o princípio de operação em que se pelo menos uma entrada for 0 a saída será 0 dessa forma a única forma da saída ser 1 é quando todas as entradas forem 1 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 25 Tabela verdade e diagrama esquemático para a lógica AND A lógica XOR segue o princípio de operação em que para que a saída seja 1 as entradas devem ser diferentes se elas forem iguais a saída será 0 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 26 Tabela verdade e diagrama esquemático para a lógica XOR A lógica NOT segue o princípio de operação em que a entrada é invertida dessa forma se a entrada for 1 a saída será 0 e se a entrada for 0 a saída será 1 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 27 Tabela verdade e diagrama esquemático para a lógica NOT 23 Funções Especiais e IO As portas IO são portas de entrada e saída de dados cujo valores alternam entre 0 e 1 Tanto no PIC quanto no Arduino essas portas devem ser definidas de acordo com a aplicação do microcontrolador PIC O PIC possui cinco grupos de portas disponíveis A B C D E e cada porta tem três registradores associados à configuração Registrador TRIS configura o sentido do fluxo de dados de uma determinada porta Registrador PORT escreve e lê o nível dos pinos associados a uma porta Registrador LAT armazena o valor do último comando de escrita O registrador TRIS tem 8 bits sendo cada elemento correspondente à configuração de um determinado pino de IO sendo 0 saída output 1 entrada input Sintaxe TRISx valor Sendo x nome da porta letra maiúscula valor valor de 8 bits 0 saída e 1 entrada Exemplo Fonte Bastos Disponível em httpsbitly3MJTNoH Figura 28 Exemplo do registrador TRISB sendo preenchido com o número 0b00000001 O status dos pinos das portas é armazenado no registrador PORT Ele possui um tamanho de 8 bits sendo responsável pelas operações de escrita e leitura dos pinos relacionados às portas Sendo 0 Vss e 1 Vcc Sintaxe PORTx valor Valor PORTx Sendo x nome da porta letra maiúscula valor valor de 8 bits 0 saída e 1 entrada Exemplo Suponha que todos os pinos da porta B estejam configurados como saída TRISB 00x0 então podemos selecionar os pinos na porta do PIC conforme abaixo PORTB 0b00100101 Fonte Bastos Disponível em httpsbitly3MJTNoH Figura 29 Exemplo da porta B sendo configurada com o número 0b00100101 Arduino As placas Arduino possuem dois tipos de portas analógica e digital As portas analógicas são capazes de receber ou enviar tensões entre 0 a 5V Já as portas digitais trabalham de forma binária ou seja elas podem receber ou enviar 0 ou 5V Todas as portas analógicas e digitais podem ser configuradas como input ou output utilizando o comando pinMod Sintaxe pinModePortaMode Onde Porta Número da porta analógica ou digital correspondente Mode Define se a porta é uma entrada ou saída INPUT entrada OUTPUT saída Exemplo 1 Defina a porta digital 3 como entrada pinMode3INPUT Exemplo 2 Defina a porta analógica 0 como saída pinModeA0OUTPUT Conclusão Caro estudante a partir desse bloco você conheceu o funcionamento de registradores e acesso à memória e os conceitos de instruções lógicas Por fim foram explicadas as portas IO e os comandos para configurálas tanto no PIC como no Arduino Bons estudos e até a próxima Bibliografia Consultada KENSHIMA G Uso de registradores na IDE Arduino Filipeflop 19 mar 2021 Disponível em httpswwwfilipeflopcomblogusoderegistradoresnaide arduino Acesso 05 jan 2022 MADEIRA D Arduino Entradas e saídas digitais Pinos digitais Vida de Silício 14 maio 2017 Disponível em httpsportalvidadesiliciocombrentradasesaidas analogicas PÉREZ A Práticas e código de exemplo para obter instruções lógicas Arduino Uno MIC183 Instituto NCB 2019 Disponível em httpswwwnewtoncbragacombrindexphpmicrocontroladores138 atmel16295praticasecodigodeexemploparaobterinstrucoeslogicasarduino unomic183html Acesso 05 jan 2022 PICORETI R Entrada e Saída Manipulando Registradores Vida do silício 14 mai 2017 Disponível em httpsportalvidadesiliciocombrentradaesaida manipulandoregistradores Acesso 05 jan 2022 SOUZA F Curso Arduino Operadores FBS Eletrônica 06 out 2014 Disponível em httpsfbseletronicawordpresscom20130526cursoarduinooperadores Acesso em 05 jan 2022 3 APLICAÇÃO DE MICROCONTROLADORES Olá estudante Neste bloco apresentaremos as famílias do PIC e do Arduino juntamente com as especificações e caraterísticas dos modelos disponíveis Em seguida será listado o conjunto set de instruções disponível para o PIC e para o Arduino Por fim serão explicados os ambientes de programação compilação e gravação do PIC e do Arduino Vamos lá 31 Famílias de microcontroladores Há uma grande variedade de microcontroladores disponíveis comercialmente Podemos classificar esses microcontroladores de acordo com a largura do seu barramento repertório de instruções arquitetura de memória e localização da memória Para uma mesma família de microcontroladores podemos ter variações nestes itens Quanto à quantidade de bits disponíveis nos registradores de operação lógicoaritméticas temos tipicamente microcontroladores de 4 8 16 e 32 bits Quanto maior a quantidade de bits maior é a precisão dos cálculos numéricos Microcontroladores de 32 bits são tipicamente usados nos dispositivos médicos de controle e de automação de escritório e secretariado Quanto ao repertório de instruções temos microcontroladores de arquitetura CISC Complex Instruction Set Computer e de arquitetura RISC Reduced Instruction Set Computer Na arquitetura CISC o uso do espaço de memória é otimizado por ter menos instruções por programa Na arquitetura RISC o tempo de execução é usualmente menor por padronizar as microinstruções propicia pipeline e reduzir a quantidade de ciclos de relógio por instrução Quanto à arquitetura de memória distinguemse a arquitetura von Neumann Princeton e a arquitetura Harvard A arquitetura Harvard é a clássica e a de Princeton evita hazards estruturais em pipeline Finalmente quanto à localização da memória há microcontroladores com as unidades de memória principal embutidas num mesmo chip e existem microcontroladores como o 8031 com memória principal externa Extem também diversos modelos de placas arduinos cada uma com as suas características e funcionalidades próprias Entre os modelos existentes destacamse Arduino Uno A placa mais básica disponível possui um bom número de portas digitais e analógicas além de ser compatível com diversos componentes e sensores Dessa forma o arduino uno é muito utilizado por iniciantes e estudantes para estudos e testes Processador ATMEGA328 Portas digitais 14 Portas de PWM 6 Portas Analógicas 6 Alimentação 5V Arduino Mega 2560 Essa placa é uma versão maior da placa Arduino Uno ambas possuem características de processamento semelhantes entretanto o Arduino Mega 2560 possui mais portas analógica e digitais Dessa forma ele é ideal para aplicações que utilizam diversos sensores Processador ATmega2560 Portas digitais 54 Portas de PWM 15 Portas Analógicas 15 Alimentação 5V Arduino Due Essa é a placa que possui maior capacidade de processamento Em questão de número de portas ela possui o mesmo número do que o arduino Mega 2560 entretanto a sua capacidade superior de processamento torna essa placa ideal para aplicações mais complexas A sua tensão de operação é de 33V e a grande maioria dos componentes e sensores desenvolvidos para trabalhar com as placas arduino possuem uma tensão de operação de 5V Dessa forma ao utilizar a placa Arduino Due é necessário prestar atenção na comunicação entre a placa e os componentes para evitar danos a placa Processador ARM Portas digitais 54 Portas de PWM 12 Portas Analógicas 12 Alimentação 33V Arduino Nano Essa placa é uma das menores placas arduino disponível o seu nível de processamento é semelhante ao do arduino uno entretanto ela é significativamente menor e possui menos portas digitais e analógicas Essa placa é ideal para aplicações pequenas e simples permitindo o desenvolvimento de projetos portáteis Processador ATmega32 Portas digitais 22 Portas de PWM 6 Portas Analógicas 8 Alimentação 5V 32 Set de instruções 321 Instruções no PIC No PIC 12F675 todas as suas operações lógicas e aritméticas estão relacionadas com o registrador W Essas operações podem ser realizadas entre os dados presentes no registrador W e outros registradores do PIC Diversos periféricos podem ser usados com este microcontrolador esses periféricos são gerenciados por registradores especiais chamados SDR Special Function Registers Os SFRs devem ser ajustados regularmente antes de serem usados principalmente entre longos ciclos Os SFRs são organizados em dois blocos de memória Banco de Memória 0 e Banco de Memória 1 dessa forma antes de utilizar os SFRs é necessário selecionar o bloco de memória correto utilizando o bit 5 do registrador STATUS Algumas funções e modos de operação do PIC12F675 não podem ser configurados pelo firmware dessa forma eles devem ser alterados durante a programação Para realizar essas modificações é necessário utilizar instruções específicas incluídas no programa fonte criadas especialmente para essa finalidade Detalhando as instruções temos ADDW F add file em work adiciona os conteúdos dos registradores W e F ANDWF and file e work executa a operação E and lógica entre os conteúdos dos registradores W e F CLRF clear file carrega o valor 0 no registrador F CLRW clear work carrega o valor 0 no registrador W COMF complement file complementa inverte bit a bit o conteúdo do registrador F DECF dec file decrementa subtrai um do conteúdo do registrador F DECFSZ dec file skip se zero decrementa subtrai um do conteúdo do registrador F e não executa pula a próxima instrução se o resultado do incremento for igual 0 INCF inc file incrementa soma um o conteúdo do registrador F INCFSZ inc file skip se zero incrementa soma um ao conteúdo do registrador F e não executa pula a próxima instrução se o resultado do incremento for igual 0 IORWF W or file executa a operação OU or lógica entre os conteúdos dos registradores W e F MOVF move file para W move o valor do registrador F para o registrador W MOVWF move W para F copia o conteúdo do registrador W para o registrador F NOP no operation nenhuma operação é executada apenas gasta um ciclo de máquina RLF rotate left file rotaciona à esquerda o conteúdo do registrador F RRF rotate rigth file rotaciona à direita o conteúdo do registrador F SUBWF sub f de W subtrai o conteúdo do registrador F do registrador W e armazena o resultado em W SWAPF troca file troca os 4 bits mais significativos com os 4 bits menos significativos de F XORWF WXORF executa a operação ou exclusivo xor lógica entre os conteúdos dos registradores W e F e armazena em W BCF bit clear file ajusta o bit b do registrador f para nível baixo 0 BSF bit set file ajusta o bit b do registrador f para nível alto 1 BTFSC bit teste file skip se clear testa o bit b do registrador f e não executa a próxima instrução se ele estiver em nível baixo 0 BTFSS bit teste file skip se set testa o bit b do registrador f e não executa a próxima instrução se ele estiver em nível baixo 1 ADDLW add literal a W o conteúdo do registrador W é somado a uma constante k de 8 bits e o resultado é guardado no registrador W ANDLW and literal e W executa a operação E and lógica entre o conteúdo do registrador W e uma constante k de 8 bits e armazena o resultado em W CALL chamada uma subrotina CLRWDT clear wdt carrega o valor 0 no temporizador do watchdog timer GOTO salto incondicional para outro local no programa IORLW or literal ou W executa a operação OU or lógica entre o conteúdo do registrador W e uma constante k de 8 bits e armazena o resultado em W MOVLW move literal para W carrega uma constante k de 8 bits no registrador W RETFIE retorno de uma rotina de interrupção RETLW retorno de uma subrotina com o carregamento de uma constante k de 8 bits literal no registrador W RETURN retorno de uma subrotina SLEEP coloca o processador no modo de baixo consumo SUBLW subtrai o literal de 8 bits do conteúdo do registrador W e armazena o resultado no registrador W XORLW executa a operação ou exclusivo xor lógica entre o conteúdo do registrador W e uma constante k de 8 bits literal 322 Instruções no Arduino A linguagem de programação do Arduino pode ser dividida em três partes principais estruturas valores variáveis e constantes e funções Funções Para controlar a placa Arduino e realizar computações Entradas e Saídas Digitais digitalRead digitalWrite pinMode Entradas e Saídas Analógicas analogRead analogReference analogWrite Apenas Zero Due e Família MKR analogReadResolution analogWriteResolution Entradas e Saídas Avançadas noTone pulseIn pulseInLong shiftIn shiftOut tone Funções Temporizadoras delay delayMicroseconds micros millis Funções Matemáticas abs constrain map max min pow sq sqrt Funções Trigonométricas cos sin tan Caracteres isAlpha isAlphaNumeric isAscii isControl isDigit isGraph isHexadecimalDigit isLowerCase isPrintable isPunct isSpace isUpperCase isWhitespace Números Aleatórios random randomSeed Bits e Bytes bit bitClear bitRead bitSet bitWrite highByte lowByte Interrupções Externas attachInterrupt detachInterrupt Interrupções interrupts noInterrupts Comunicação Serial Stream USB Keyboard Mouse Variáveis Tipos de dados e constantes da linguagem Arduino Constantes HIGH LOW INPUT OUTPUT INPUTPULLUP LEDBUILTIN true false Constantes de Ponto Flutuante Constantes Inteiras Conversão byte char float int long word Tipos de Dados bool boolean byte char double float int long short sizet string String unsigned char unsigned int unsigned long vetor void word Escopo de Variáveis e Qualificadores const escopo static volatile Utilitários PROGMEM sizeof Estruturas Os elementos da linguagem Arduino C Sketch loop setup Estruturas de Controle break continue dowhile else for goto if return switchcase while Outros Elementos da Sintaxe define define include include comentário em bloco comentário ponto e vírgula chaves Operadores Aritméticos resto multiplicação adição subtração divisão operador de atribuição Operadores de Comparação diferente de menor que menor que ou igual a igual a maior que maior que ou igual a Operadores Boleanos NÃO lógico E lógico OU lógico Operadores para Ponteiros referência desreferência Operadores Bitwise E deslocamento à esquerda deslocamento à direita OU EXCLUSIVO OU NÃO Operadores de Atribuição Composta compound remainder atribuição por e atribuição por multiplicação incremento atribuição por adição decremento atribuição por subtração atribuição por divisão atribuição por ou exclusivo atribuição por ou 33 Ambientes de Programação Compilação e Gravação Para programar compilar e gravar os códigos de PIC e Arduino é necessário utilizar o seu respectivo IDE Integrated Development Environment Para o PIC normalmente é utilizado o MPLAB IDE e para o Arduino o IDE Arduino 331 MPLAB IDE O MPLAB IDE é um software gratuito oferecido pela empresa Microchip Technology Ele gerencia projetos e ambientes de programação e foi desenvolvido especialmente para programação simulação e gravação de microcontroladores PIC O MPLAB IDE é capaz de trabalhar com diversos modelos de PIC ele possui ferramentas de linguagem que facilitam a sua programação As linguagens de programação que podem ser usadas nesse software são assembly C ou linguagem BASIC Os códigos escritos são compilados em linguagem hexadecimal em seguida o código executável que irá determinar o comportamento do PIC pode ser gravado no equipamento desejado Para facilitar a detecção de possíveis erros o MPLAB IDE possui debugger como o MPLAB SIM ou ferramentas externas como o Proteus e o Matlab permitindo simular a aplicação do PIC sem a necessidade de montar o sistema fisicamente Além disso através de equipamentos externos como o MPLAB ICD2 MPLAB ICE 200 e PICKIT 2 é possível realizar o debug no próprio PIC tendo acesso aos seus registradores e às suas memórias permitindo observar o seu comportamento durante o seu uso Para o desenvolvimento de códigos de programação o MPLAB conta com uma interface que permite a criação do código a detecção de erro e a programação direta do PIC através da porta serial ou usb utilizando equipamentos externos como o MPLAB ICD2 MPLAB ICE 200 e PICKIT2 Os modelos suportados pelo MPLAB IDE são 10 12 16 17 18 24 30 e 32 bit HCS e SEE Entre esses modelos os mais utilizados são os pics 16f84 16f628 16f877 18f452 e 18f4550 Entre esses modelos o Pic 16f84 é muito utilizado por estudantes pois seu número de pinos e funções são reduzidos permitindo projetos simples e didáticos Já o Pic16f628 é muito utilizado em projetos devido a sua versatilidade e flexibilidade 332 IDE Arduino O Arduino IDE é um software gratuito oferecido pela empresa Arduino em seu próprio site Esse software foi desenvolvido para facilitar na criação e gravação de códigos em todos os modelos de placas Arduino Ele foi projetado para ser usado pelos sistemas operacionais Widows e Linux e é de fácil instalação e manuseio O Arduino IDE é capaz de programar todas as placas Arduinos basta selecionar a placa utilizada e carregar o código além disso o software é capaz também de detectar problemas durante a programação e ainda apontar onde estes problemas estão ocorrendo facilitando a sua correção Além do Arduino IDE é possível programar as placas arduino através da plataforma online desenvolvida pela empresa Arduino Este método evita a necessidade de instalar o software no computador e pode ser utilizado por qualquer máquina entretanto é necessário estar conectado à internet O Arduino IDE possui um layout simples e intuitivo todas as suas fermentas são organizadas e de fácil acesso além de serem bem documentadas facilitando a criação de projetos Para obter o Arduino IDE basta acessar o site do Arduino e realizar o download para o sistema operacional correspondente em seguida o software deve ser instalado Ao fim da instalação o software poderá ser utilizado gratuitamente quantas vezes o usuário quiser mesmo offline Ao iniciar o software ele irá buscar automaticamente a versão mais recente disponível se houver esta versão poderá ser baixada e instalada automaticamente Conclusão Caro estudante a partir desse bloco você pôde conhecer as famílias do PIC e do Arduino incluindo suas principais características e diferenças Em seguida o Set de instruções do PIC do Arduino foi listado e explicado Por fim foram apresentados os ambientes de programação compilação e gravação MPLAB IDE e IDE Arduino Bons estudos e até a próxima BIBLIOGRAFIA CONSULTADA SHINTING W OLIVEIRA J R Microcontroladores 2019 Disponivel em httpswwwdcafeeunicampbrcoursesEA0752s2019notastopico10pdf Acesso 06 jan 2022 STRAUB M G Arduino IDE O Software para Gravação de Códigos no Arduino Usinainfo eletrônica e robótica 24 out 2019 Disponível em httpswwwusinainfocombrblogarduinoideosoftwareparagravacaode codigosnoarduino Acesso 06 jan 2022 THOMSEN A Qual Arduino Comprar Conheça os Tipos de Arduino Filipeflop 03 fev 2014 Disponível em httpswwwfilipeflopcomblogtiposdearduinoqual comprar Acesso 06 jan 2022 4 CONFIGURAÇÃO E CODIFICAÇÃO Olá estudante Neste bloco serão apresentados os funcionamentos de interrupções e temporizadores de entradas e saídas Digitais Analógicas PWM e de conversores AD e DA Vamos lá 41 Interrupções e Temporizadores Uma das características notáveis dos microcontroladores que os distinguem dos sistemas computacionais convencionais é a sua intimidade com o tempo para poder interagir com o mundo físico em instantes préestabelecidos Todos os microcontroladores têm ao menos um sistema de temporização embarcado no seu chip O principal componente de um sistema de temporização em inglês timer embarcado é um contador de corrida livre em inglês free running counter de forma totalmente independente da CPU Esse contador é incrementado ciclicamente de 0 até 2n1 por um sinal de relógio de forma que se consegue computar um intervalo de tempo t pela quantidade m de contagem e pelo período fixo T do sinal de relógio t M T Sendo a contagem máxima de um sistema de temporização dependente da quantidade de bits do seu contador é comum especificar um temporizador por esta quantidade O sinal de Overflow indica que o contador atingiu o valor máximo e o contador volta para 0 Esse sinal pode ser usado para contar a quantidade k de ciclos completos contados Fonte SHINTING OLIVEIRA 2019 Link httpsbitly3HTtZCK Figura 41 Componente básico timer Supondo que sejam i o valor inicial registrado inicialmente num contador de n bits e j o valor final de uma contagem podemos determinar com precisão a quantidade total dos pulsos contados através das seguintes relações Se o número de ciclos completos for 0 m j i pulsos Se o número de ciclos completos for maior que 0 2n 1 i j 1 2n i j pulsos além dos ciclos completos Somando com os pulsos dos k1 ciclos completos temos no total m k 12n 2n i j 2n k i j pulsos Em diversos timers a sua fonte do sinal de relógio é configurável Ela pode ser o mesmo sinal de relógio do microprocessador ou um derivado deste sinal A técnica de divisor de frequência é a mais utilizada para gerar sinais de frequências menores A fonte do sinal de relógio do contador pode ser também externa Neste caso a frequência de contagem pode ser até aperiódica Visando à redução do consumo de energia devese parar o contador do timer quando ele não é mais necessário Adicionalmente os temporizadores são projetados para gerarem interrupções ou ticks com base nos eventos especificados Exemplos destes eventos são estouro ou contagem atingir um valor prédefinido Isso torna viável por software medir o intervalo de tempo entre dois eventos ou controlar precisamente o tempo de duração do estado de um dispositivo Um temporizador que existe em todos os microcontroladores é o temporizador watchdog em inglês watchdog timer Este temporizador é responsável por disparar um reset ao sistema quando ocorre um estouro na sua contagem Isso garante que o sistema consiga sair de uma condição de falha ou de erro numa emergência Por isso quando esse temporizador estiver ativado precisaremos periodicamente zerar o seu contador para evitar resets emergenciais O mecanismo de interrupção implementado nos microcontroladores é uma solução eficiente para compatibilizar um microcontrolador com o mundo físico Ele provê uma forma eficiente tanto para capturar as variações inesperadas nos estados dos periféricos quanto para respondêlas desviando automaticamente do fluxo corrente de execução para uma rotina de serviço de interrupção prédefinida Interrupt Service Routine ISR Os sinais assíncronos em relação ao relógio do sistema oriundos dos periféricos e capazes de interromper o fluxo de execução corrente são chamados de requisições de interrupções em inglês interrupt request IRQ Podemos distinguir três formas de ativação de interrupção conforme as características desses sinais detectáveis pelos circuitos eletrônicos Gatilhos por nível quando a ativação é por nível lógico 0 ou 1 de um pulso com uma largura mínima em tempo Gatilho pela borda quando a ativação é pela borda de subida ou de descida de um pulso quadrado Gatilho pela aresta quando a ativação é por um pulso rápido de subida ou de descida Portas de entrada que suportam interrupções incluem nos seus circuitos registradores de controle que permitem customizar o tipo de gatilho ao qual os pinos são sensíveis O intervalo de tempo entre o instante em que ocorre uma interrupção e o instante em que se inicia a execução da rotina de serviço correspondente é conhecida por latência de interrupção 42 Entradas e Saídas Digitais Analógicas e PWM Para se comunicar com o mundo físico todos os microcontroladores são providos de uma série de pinos Portas são abstrações de uma série de registradores embutidos nos microcontroladores que permitem que um softwarefirmware controle modifique ou leia os estados dos pinos individualmente A correspondência entre os pinos e os bits das portas é biunívoca ou seja cada pino é controlado por um bit de uma porta Os pinos do microcontrolador podem trabalhar com sinais digitais analógicos e PWM Sinais digitais são aqueles que não variam continuamente no tempo mas sim em saltos entre valores bem definidos Sinais analógicos são aqueles que ao contrário dos sinais digitais variam continuamente dentro de uma faixa de valores Os circuitos e equipamentos elétricos ditos digitais trabalham com apenas dois valores de tensão definidos Um nível lógico alto Um nível lógico baixo Na prática não é necessário o pino receber exatamente um valor de tensão especifico para ser considerado alto ou baixo existe uma faixa de tensão em que se o valor estiver dentro dela o microcontrolador irá automaticamente entender o seu nível Além disso existe uma faixa entre os dois níveis em que o microcontrolador não é capaz de determinar se é alto ou baixo gerando valores aleatórios e é importante evitar essas faixas sempre que possível Ao configurar uma porta do micocontrolador como uma entrada digital ela irá adquirir uma característica chamada alta impedância Nesse modo qualquer variação de corrente mesmo que pequena pode alterar o seu estado permitindo ao microcontrolador determinar o nível lógico que a entrada se encontra Isso pode ser usado para monitorar botões foto acopladores ou outros tipos de sensores permitindo ao microcontrolador tomar decisões de acordo com os níveis lógicos das suas entradas digitais Ao configurar uma entrada digital mas não ligar nada nela o seu nível lógico pode ficar oscilando aleatoriamente Isso ocorre pois a porta pode captar ruídos elétricos do ambiente e devido à alta impedância da entrada esses ruídos podem ser o bastante para alterar o nível lógico da porta gerando um comportamento imprevisível e indesejado Para evitar esse problema é necessário utilizar uma resistência de pull down ou de pullup ligado nas entradas Essas resistências garantem um nível lógico constante quando não há nada ligado na entrada dessa forma o nível lógico apenas irá mudar quando for necessário Fonte Arduíno Portugal 2017 Link httpsbitly3sP31YB Figura 42 Resistência de pulldown e de pullup Ao configurar uma entrada digital como uma saída ela pode fornecer 0 ou 5 V dependendo do código carregado no microcontrolador A corrente máxima fornecida pelo micocontrolador pode variar dependendo do modelo mas normalmente é de 30mA Com esta corrente é possível ligar componentes simples como LEDs e alguns sensores Entretanto equipamentos mais exigentes como alguns modelos de motores necessitam de uma corrente maior Se eles forem ligados diretamente podem causar danos ao microcontrolador Assim como outros microcontroladores o Arduino possui um conversor AD capaz de converter os sinais analógicos gerados por sensores em sinais digitais O conversor do Arduino possui uma resolução de 10 bits aplicado em uma faixa de 0 a 5V Ou seja o conversor é capaz de dividir o valor de 5V em 1024 pedaços e determinar em qual posição um valor de tensão entre 0 a 5V se encontra O PWM Pulse Width Modulation é uma forma de gerar um sinal analógico utilizando uma saída digital Ao controlar o valor do duty cycle do sinal digital é possível variar o valor de tensão da saída permitindo controlar aspectos de alguns componentes como o brilho de um LED ou a velocidade de um motor O duty cycle é o tempo em que o sinal digital permanece em 5V No Arduino um duty cycle de 0 é equivalente a uma saída de tensão de 0V já um duty cycle de 100 é equivalente a uma saída de tensão de 5V Fonte 2017 Disponível em httpsbitly3tEJkC6 Figura 43 Exemplos de Duty Cycle O duty cycle é a razão do tempo em que o sinal permanece na tensão máxima 5V no Arduino sobre o tempo total de oscilação Fonte 2017 Disponível em httpsbitly3IOLyoN Figura 44 Variáveis que compõem o Duty Cycle Duty Cycle xxy100 xT100 Vmédio VmaxDuty Cycle 43 Conversores AD e DA Um conversor AD é capaz de converter um sinal analógico que é um sinal contínuo no tempo em um sinal amostrado que é um sinal discreto no tempo Os limites do sinal amostrado coletado dependem da resolução do conversor em bits um conversor de 8 bits é capaz de transformar o sinal analógico em valores entre 0 a 255 Um conversor AD pode converter sinais analógico entre 0 a 5V ou 0 a 33V entretanto normalmente o sinal analógico gerado por sensores ou outros componentes não gera essas variações Dessa forma os sinais analógicos devem ser condicionados através de circuitos passivos ou ativos para se encaixarem nessa faixa gerando a maior resolução possível Após condicionar o sinal ele passa por um circuito chamado Sample Hold Esse circuito mantém o sinal estável até que o conversor termine de convertêlo para um sinal digital Ao dimensionar um conversor AD é necessário verificar se as suas características atendem às necessidades do projeto As especificações mais importantes são Conversor interno ao processador ou externo Taxa de amostragem Número de bits de resolução Número de bits de precisão ou bits efetivos Relação sinalruído Linearidade Necessidade de se utilizar Sample Hold externo Necessidade de utilizar um filtro analógico de antialiasing Preço O conversor DA DAC aceita como entrada dados digitais e produz uma saída analógica que é relacionada com o código digital de entrada Um registrador é usado para armazenar a entrada do DAC e assegurar que sua saída fique estável até que o conversor seja alimentado por outra entrada digital Ele pode ser externo ou fazer parte do DAC Cada palavra digital número de bits em paralelo é convertida no tempo Filtros podem ser usados para suavizar ou restaurar o sinal analógico em sua saída Fonte Lima Disponível em httpsbitly3hNJ6TN Figura 45 Exemplo de uma conversão DA Resolução de um conversor DigitalAnalógico está associado ao número de bits do conversor É a menor quantidade modificação que pode ser convertida resolvida em sua saída analógica resultante de uma alteração na entrada digital Em geral para um conversor DA de N bits o número de níveis diferentes será de 2N e o número de degraus será de 2N 1 Fonte Lima Disponível em httpsbitly3hNJ6TN Figura 46 Resolução do conversor DA Conclusão Caro estudante neste bloco você conheceu o funcionamento de interrupções e temporizadores de entradas e saídas digitais analógicas PWM e dos conversores AD e DA Bons estudos e até a próxima Bibliografia Consultada SHINTING W OLIVEIRA J R Microcontroladores Faculdade de Engenharia Elétrica e de Computação UNICAMP 2019 Disponível em httpswwwdcafeeunicampbrcoursesEA0752s2019notastopico10pdf Acesso 06 jan 2022 LIMA M E Conversão Digital Analógico e Analógico Digital UFPE Centro de Informática Disponível em httpsbitly3HVxXuq Acesso 06 jan 2022 QUAL a diferença entre entradas Digitais Analógicas e PWM Arduino Portugal 10 maio 2017 Disponível em httpswwwarduinoportugalptgrandezasdigitaise analogicasepwm Acesso 06 jan 2022 5 PROJETO COM MICROCONTROLADORES I Olá estudante Neste bloco serão demonstrados quatro projetos utilizando a placa Arduino Apresentaremos as características dos equipamentos que serão utilizados um exemplo de como será o código dos projetos e os resultados esperados de uma simulação virtual dos projetos Vamos lá 51 Características e especificações de hardware Para os projetos com microcontroladores será utilizada a placa Arduino LED display módulos ADC ponte de Wheatstone potenciômetro resistor e botão e strain gauges células de carga Placa Arduino Uno A placa Arduino sugerida será o Arduino Uno suas especificações são Microcontrolador ATmega328P Tensão de operação 5V 14 portas digitais Seis portas analógicas Clock 16 MHz Tamanho 686 X 534 mm Esta placa foi selecionada devido a sua fácil acessibilidade e baixo custo Outras placas Arduino também podem ser usadas para os projetos entretanto devese tomar cuidado com a tensão de operação da placa alguns modelos como a placa Arduino Due possuem uma tensão de alimentação de 33V isso pode causar resultados diferentes do esperado Fonte Arduino Disponível em httpsbitly3Mzy3vp Figura 51 Arduino UNO Módulo ESP 8622 ESP12E Fonte Autor Figura 52 Esquematização do ESP12E Características Módulo ESP8266 ESP12E Rápida e fácil conexão Switch de Radiofrequência Compatível com sistemas microcontrolados Processadores de MAC e Baseband integrados Pode ser utilizado como STAAPSTAAP Engine integrada para criptografias WEP TKIP AES e WPA WiFi Direct P2P softAP Antena integrada Protocolo TCPIP integrado com suporte a IPv4 WiFi em frequência de 24GHz com suporte a WPA e WPA2 Conversor ADC integrado Excelente relação custo x benefício Especificações Modelo ESP12E Chip Principal ESP8266 Tensão de alimentação 33V Potência de saída 195dBm no modo 80211b Alcance 90 metros Taxa de dados 110 460800bps Suporte a redes 80211 bgn Consumo em Standby 10mW Processador 32bit CPU de baixa potência Comunicação Serial TXRX Comunicação TCP IP Modos de operação STAAPSTAAP Segurança WEP WPA TKIP AES Temperatura de trabalho 40 a 125ºC Dimensões C x L x E 24 x 16 x 3 mm Massa 1g CI 3g conjunto LED O termo LED vem do inglês Light Emitting Diode que significa Diodo Emissor de Luz O LED é um componente eletrônico semicondutor composto de cristal semicondutor de silício ou germânio No LED a emissão de luz acontece quando a corrente elétrica percorre o material de junção PN diodo semicondutor emitindo radiação infravermelha O LED é um componente bipolar possui dois terminais chamados de ânodo e catodo que determinam ou não a polarização do LED ou seja a forma que está polarizado determina a passagem ou não de corrente elétrica que está ocasionando a ocorrência de luz A polarização que permite a emissão de luz pelo LED é o terminal ânodo no positivo e o cátodo no negativo para identificar qual dos terminais é o ânodo e qual é o cátodo basta observar o tamanho dos terminais O maior terminal do LED é o ânodo e a menor é o catodo Potenciômetro Potenciômetro é um componente eletrônico que cria uma limitação para o fluxo de corrente elétrica que passa por ele podendo ser ajustada manualmente aumentada ou diminuída Os potenciômetros e o resistores tem essa finalidade de limitar o fluxo de corrente elétrica em um circuito a diferença é que o potenciômetro pode ter sua resistência ajustada e o resistor comum não pode pois ele possui um valor de resistência fixo O potenciômetro comumente possui três terminais e um eixo giratório para ajuste da sua resistência e normalmente são usados em controle de volumes de aparelhos de som controle de posicionamento em controles de vídeo games controle de brilho e contraste em telas LCD Célula de Carga O sensor de carga utilizado é um Strain Gauge um dos vários sensores existentes no mercado que podem ser usados para medir peso É possível utilizar vários sensores de carga simultaneamente para aumentar a capacidade Conforme vemos na tabela abaixo para um botijão de 13kg uma única célula de carga atende minimamente logo o custo poderá ser composto para os limites indicados na tabela totalizando quatro versões na montagem Tabela 51 Dados da Célula de Carga CONFIGURAÇÃO COM CÉLULAS DE 50kg COM g 98 10 ms² Quantidade Massa Suportada kg 1 50 2 100 3 150 4 200 Fonte Autor A célula de carga utilizada possui as seguintes especificações Dimensões mm 28 x 28 x 8 Capacidade kg 50 Margem de erro 02 Tensão de excitação V 5 10 Ponte de Wheatstone A ponte de Wheatstone é um circuito elétrico utilizado para medir uma determinada resistência desconhecida normalmente com valor próximo às outras resistências do circuito Abaixo temos o circuito que demonstra a ligação com quatro resistores formando a ponte Fonte Autor Figura 53 Circuito da Ponte de Wheatstone Equacionamento que converte as células de carga nos valores dos resistores calculando a tensão total do circuito da ponte Para trabalhar com a Célula de Carga é necessário um conversor AD AnalógicoDigital amplificador Conversor ADC e Amplificador HX711 HX711 é um módulo amplificador operacional de 24 bits que será utilizado para converter o sinal analógico em digital Fabricado pela Avia Semiconductors possui um conversor AD com precisão de 24 bits Este módulo foi idealizado para interfacear diretamente sensores em ponte para aplicações de medição de carga pois conta com um circuito multiplexador de entrada que seleciona entre dois canais diferenciais A e B sendo que cada canal diferencial pode ser conectado em até duas células de carga A com A e B com B cada qual ligado na saída de uma célula de carga em meia ponte conforme a figura abaixo extraída do datasheet do componente Fonte Autor Figura 54 Esquematização do HX711 Especificações o Tensão de operação 48 a 55V DC o Corrente de operação 16mA o Temperatura de operação 20 a 85C o Interface SPI o Dimensões 29 x 17 x 4mm sem os pinos O módulo HX711 para conversão analógica digital e amplificação do sinal obtido seguirá a pinagem fornecida pela folha de dados do seu fabricante conforme indicação pelo esquema abaixo Fonte Autor Figura 55 Esquema de conexão do módulo HX711 Conexão da Célula de Carga com o HX711 A célula de carga permite uma saída de 1mVkg por este motivo a conexão com o módulo HX711 é necessária pois o sinal obtido deverá ser amplificado Este módulo além do amplificador possui um conversor AD de 24 bits que representa uma resolução com 16777216 possíveis valores medidos É importante ressaltar que para 1 2 ou 4 células de carga há uma conexão diferente que deve ser observada considerando conforme esquemas abaixo o Conexão com uma célula de carga Fonte Autor Figura 56 Conexão do HX711 com uma célula de carga o Conexão com duas células de carga Fonte Autor Figura 57 Conexão do HX711 com 2 células de carga o Conexão com quatro células de carga Fonte Autor Figura 58 Conexão do HX711 com quatro células de carga Display de sete segmentos O display é formado pelo arranjo de LEDs diodos emissores de luz em um invólucro apropriado acessíveis individualmente que formam os segmentos cada LED é um segmento que podem ser controlados acesos ou apagados de modo a formar o caractere desejado Fonte Autor Figura 59 Disposição dos LED por segmento no display A partir disto é possível formar os caracteres decimais de 0 a 9 hexadecimais de A à F Como mostra a figura abaixo exemplificando os três displays a serem usados no Dispositivo de Medição Esta contextualização é importante para justificar o modo de visualização pois o display com três dígitos permite compor de 000 a 100 com uma etiqueta máscara indicando o sinal de assim como outras informações que forem pertinentes Tabela 52 Pinagem do display de três dígitos PINO FUNÇÃO 1 Segmento E 2 Segmento D 3 Ponto Decimal DP 4 Segmento C 5 Segmento G 6 Não utilizado 7 Segmento B 8 Dígito 3 9 Dígito 2 10 Segmento F 11 Segmento A 12 Dígito 1 Fonte Autor Fonte Autor Figura 510 Displays de 7 segmentos com três dígitos 52 Exemplos de programação Serão propostos quatro projetos utilizando a placa Arduino em cada projeto serão utilizadas diferentes partes da placa Os códigos desenvolvidos deverão ser criados e testados utilizando o software gratuito IDE Arduino Projeto 1 Leitura de entrada e acionamento de saída digital No primeiro projeto devese conectar um botão e um LED em duas portas digitais do Arduino Quando o botão for acionado o Arduino deve ligar o LED Este projeto tem como objetivo praticar o uso de portas digitais como input e output Segue o código que deve ser desenvolvido para o projeto int led2 Define a porta digital 2 como led int botao3 Define a porta digital 3 como botao int botaoacionado0 Cria a variável botaoacionado void setup pinModeled OUTPUT Define a porta led como um output pinModebotao INPUT Define a porta botao como um input void loop botaoacionadodigitalReadbotao Define a variável botaoacionado de acordo com o estado da porta botao if botaoacionadoHIGH Se a variável botãoacionado for HIGH execute digitalWriteled HIGH Define a porta led como HIGH Else Se a variável botãoacionado for LOW execute digitalWriteledLOW Define a porta led como LOW Projeto 2 Leitura de porta analógica com monitor serial No segundo projeto devese conectar um potenciômetro em uma porta analógica do Arduino o Arduino deve mostrar no monitor serial o valor coletado pela porta analógica Este projeto tem como objetivo praticar o uso de portas analógicas Segue o código que deve ser desenvolvido para o projeto int potA0 Define a porta analógica 0 como pot int S10 Cria a variável S1 void setup Serialbegin9600 Inicia a comunicação serial com um baudrate de 9600 void loop S1analogReadpot Lê a porta analógica pot SerialprintlnS1 Envia pela comunicação serial o valor de S1 Projeto 3 Leitura de entrada analógica com acionamento de saída No terceiro projeto devese conectar um potenciômetro em uma porta analógica e um LED na porta digital do Arduino o Arduino deve acender o LED quando o potenciômetro chega na metade do seu valor Este projeto tem como objetivo praticar o uso de portas analógicas em conjunto com as portas digitais Segue o código que deve ser desenvolvido para o projeto int led2 Define a porta digital 2 como led int potA0 Define a porta analógica 0 como pot int S10 Cria a variavel S1 void setup Serialbegin9600 Inicia a comunicação serial com um baudrate de 9600 pinModeledOUTPUT Define a porta led como um output void loop S1analogReadpot Lê a porta analógica pot SerialprintlnS1 Envia pela comunicação serial o valor de S1 ifS110242 Se o valor de S1 for maior do que a metade de 1024 onde 1024 é o maior valor possível para a porta analógica execute digitalWriteledHIGH Define a porta led como HIGH Else Se o valor for menor do que a metade do valor máximo possível digitalWriteledLOW Define a porta led como LOW Projeto 4 Calibração de célula de carga com ADC É importante que o dispositivo de célula de carga tenha um ajuste que permita a calibração neste caso o ideal é que seja realizado um ajuste em função do lote adquirido de células de carga e componentes eletrônicos portanto se faz necessária a previsão de uma calibração via software para que os valores lidos não tenham desvios ou seja durante os testes após a montagem deverão ser identificados os coeficientes e estes devem ser inseridos durante a gravação do microcontrolador Esta calibração permite que seja realizada uma interpretação correta entre a conversão do ADC e a leitura das células de carga sendo os coeficientes definidos por meio de uma expressão matemática que descreve o sistema linearizado Tal expressão é obtida pela equação da reta após os ensaios com o lote de amostragem que permitirá obter em laboratório os valores de massa versus o sinal obtido Não se pode equivocadamente confundir calibração com ajuste pois a calibração de processo irá ocorrer sempre que for corrigido por exemplo as taras de balanças enquanto neste caso a calibração representa o ajuste na programação para a leitura dos sinais pelo ADC Considerando que o elemento resistivo que compõe a célula de carga especificamente os strain gauges possuem uma elevada linearidade em sua resposta é possível considerar como uma equação da reta ou seja uma expressão linearizada para a resposta Todavia não se deve ter isso como verdade absoluta dado que é aplicável para a célula de carga utilizada neste projeto e que para outros modelos há a possibilidade de uma variação em equação minimamente de segundo grau Para a definição dos coeficientes lineares e angulares associados à linearização é imprescindível que sejam elaborados no processo de montagem e testes os procedimentos de testes em laboratório O gráfico de referência utilizado será o da reta portanto é possível definir os coeficientes e variáveis como o contaadc variável que irá receber os valores lidos pelo ADC o coeflin coeficiente linear o coefang coeficiente angular O coeficiente angular é obtido matematicamente por meio da divisão entre as variações da massa pela leitura do ADC neste caso pode ser representado por 𝒄𝒐𝒆𝒇𝒂𝒏𝒈 𝒎𝒇 𝒎𝒊 𝒄𝒐𝒏𝒕𝒂𝒂𝒅𝒄𝒇 𝒄𝒐𝒏𝒕𝒂𝒂𝒅𝒄𝒊 Em que mf massa final mi massa inicial contaadcf leitura do ADC para a massa final Para determinar o coeficiente linear consideramos que a variação do eixo das coordenadas e do eixo das abcissas tenha ao menos os valores iniciais ou finais definidos e conhecidos neste caso podemos adotar os valores iniciais antes de qualquer variação de carga portanto 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑥 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑦 𝑚𝑖 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑥 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑦 𝑚𝑖 𝑦 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑥 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑚𝑖 𝑐𝑜𝑒𝑓𝑙𝑖𝑛 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑚𝑖 Considerando o coeficiente linear coeflin e adotando lemassa para a leitura corrigida e contaadc para a leitura do ADC a equação resultante será 𝑙𝑒𝑚𝑎𝑠𝑠𝑎 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐 𝑐𝑜𝑒𝑓𝑙𝑖𝑛 Rotina para calibração com o HX711 include HX711h define DOUT 2 define CLK 3 HX711 peso instancia Balança HX711 float calibrationfactor 34730 fator de calibração para teste inicial void setup Serialbegin9600 pesobeginDOUT CLK inicializa a balança Serialprintln SerialprintlnCalibracao da Balança pesosetscale configura a escala da Balança zerapeso zera a Balança void zerapeso Serialprintln pesotare zera a Balança SerialprintlnZerando a Balança void loop pesosetscalecalibrationfactor ajusta fator de calibração SerialprintPeso imprime no monitor serial Serialprintpesogetunits 3 imprime peso da balança com 3 casas decimais Serialprint kg Serialprint Fator de Calibração imprime no monitor serial Serialprintlncalibrationfactor imprime fator de calibração delay500 if Serialavailable reconhece letra para ajuste do fator de calibração char temp Serialread if temp temp a a aumenta 10 calibrationfactor 10 else if temp temp z z diminui 10 calibrationfactor 10 else if temp s s aumenta 100 calibrationfactor 100 else if temp x x diminui 100 calibrationfactor 100 else if temp d d aumenta 1000 calibrationfactor 1000 else if temp c c diminui 1000 calibrationfactor 1000 else if temp f f aumenta 10000 calibrationfactor 10000 else if temp v v dimuni 10000 calibrationfactor 10000 else if temp t zerapeso t zera a Balança 53 Simulação em ambiente virtual Para simular os projetos propostos será utilizado o software online gratuito Tinkercad O Tinkercad é uma ferramenta online de design de modelos 3D em CAD e de simulação de circuitos elétricos analógicos e digitais desenvolvida pela Autodesk Projeto 1 Leitura de entrada e acionamento de saída digital Para simular este projeto devem ser usados os seguintes componentes 1 Arduino uno 2 Resistores de 1KΩ 1 Botão 1 LED O circuito deve ser montado da seguinte forma Fonte Autor Figura 511 Simulação do projeto um O código criado deve ser inserido no campo código na opção Texto Ao iniciar a simulação o LED deve ascender quando o botão é pressionado Projeto 2 Leitura de porta analógica com monitor serial Para simular este projeto devem ser usados os seguintes componentes 1 Arduino uno 1 Potenciômetro O circuito deve ser montado da seguinte forma Fonte Autor Figura 512 Simulação do projeto 2 O código criado deve ser inserido no campo código na opção Texto Ao iniciar a simulação no campo código na opção monitor serial o Arduino deve apresentar o valor lido pela porta analógica A0 Projeto 3 Leitura de entrada analógica com acionamento de saída Para simular este projeto devem ser usados os seguintes componentes 1 Arduino uno 1 Potenciômetro 1 LED 1 Resistor de 1KΩ O circuito deve ser montado da seguinte forma Fonte Autor Figura 513 Simulação do projeto 3 O código criado deve ser inserido no campo código na opção Texto Ao iniciar a simulação o LED deve apagar quando o potenciômetro passa do meio e se posiciona no lado direito Quando o potenciômetro fica no lado esquerdo a LED deve acender Se o monitor serial for acessado durante a simulação será possível ver o valor do potenciômetro Projeto 4 Calibração de célula de carga com ADC o Pinagem e esquema de conexão entre HX711 e o ESP826612E Fonte Autor Figura 514 Esquemático de conexão célula de carga HX711 ESP826612E o Pinagem e esquema de conexão entre o Display e o ESP826612E Fonte Autor Figura 515 Esquemático de conexão Display 7 segmentos com 3 dígitos ESP8266 12E Entre a conexão dos pinos 18 19 e 20 e os com os terminais que comandam cada dígito poderá ser inserido um resistor de 1kΩ para proteção contra tensão Conclusão Caro estudante neste bloco você visualizou as características dos componentes utilizados nos projetos Os conhecimentos de programação das portas digitais e analógicas foram colocados em prática através de três projetos Por fim esses projetos foram testados por um simulador online Bons estudos e até a próxima Bibliografia Consultada MATTEDE H O que é um LED Mundo da Elétrica Disponível em httpswwwmundodaeletricacombroqueeumled Acesso 06 jan 2022 POTENCIÔMETRO o que é para que serve tipos aplicações e como funciona Como fazer as coisas Disponível em httpwwwcomofazerascoisascombrpotenciometrooqueeparaqueservee comofuncionahtml Acesso 06 jan 2022 6 PROJETO COM MICROCONTROLADORES II Olá estudante Neste último bloco será proposto um projeto utilizando a placa Arduino onde um botão e um potenciômetro deverão controlar a rotação de um motor e apresentar os seus valores em um display LCD Vamos lá 61 Interface digital e analógica Iremos propor um projeto onde uma placa Arduino deve controlar a rotação de um motor Nesse projeto um botão irá controlar quando o motor será acionado e um potenciômetro deve controlar a velocidade de rotação do motor Além disso o Arduino deve se comunicar com um display LCD que deverá mostrar se o motor está ligado ou desligado e o valor do PWM utilizado no motor O projeto deverá ser testado utilizando o software online gratuito Tinkercad Para o projeto serão necessários os seguintes componentes 1 Arduino Uno 1 Motor 1 Botão 1 Potenciômetro 1 Resistor de 1KΩ 1 Resistor de 220Ω 1 Display LCD O projeto deverá ser montado da seguinte forma Fonte Autor Figura 61 Simulação do projeto de controle de motor Segue o código que deve ser desenvolvido para o projeto includeLiquidCrystalh Inclui a biblioteca utilizada pelo display LiquidCrystal lcd12 11 5 4 3 2 Define os pinos utilizados pelo display int botao7 Define a porta digital 7 como botao int potA0 Define a porta analógica 0 como pot int PWMPin 6 Define a porta digital 6 como PWMPin float PWM0 Cria a variável PWM int Ligado0 Cria a variável Ligado void setup lcdbegin16 2 Inicia o display pinModebotao INPUT Define a porta botao como um input Define o pino botão como input void loop ifdigitalReadbotaoHIGH Se o botão estiver sendo acionado execute PWM analogReadpot4 lê o pino de entrada analógica e converte o resultado em um valor que pode ser usado pelo PWM Ligado1 else Se o botão não estiver pressionado execute PWM 0 Ligado0 analogWritePWMPin PWM envia o valor do PWM pelo pino PWMpin lcdsetCursor00 Move o cursor do display para a posição 00 ifLigado1 Se o botão estiver acionado execute lcdprintLigado Escreve no display a palavra Ligado else Se o botão não estiver pressionado execute lcdprintDesligado Escreve no display a palavra Desligado lcdsetCursor01 Move o cursor do display para a posição 01 lcdprintPWM Escreve no display a palavra PWM lcdprintPWM255100 Escreve no display o valor do PWM convertido para porcentagem lcdprint Escreve no display a palavra Ao iniciar a simulação o motor deverá girar apenas enquanto o botão estiver pressionado A velocidade do motor deve também mudar de acordo com posição do potenciômetro Por fim o display deve mostrar quando o motor está ligado ou desligado e também a velocidade do PWM em porcentagem 62 IHM com Display e Teclado HM é a sigla para Interface Homem Máquina A interface homemmáquina é um software ou componente que é utilizado em ampla escala nas indústrias como forma de facilitar a automação industrial A IHM permite que o usuário as máquinas e as plantas de produção se comuniquem de uma forma muito eficiente Ela traduz uma imensa quantidade de dados bem complexos tornandoos mais descomplicados e fornecendo ao operador ou operadora a possibilidade de comandar as máquinas e controlar toda a produção remotamente Ela basicamente é uma tela de touch ou não que oferece diversas ferramentas como por exemplo Acompanhar o tempo das produções Monitorar processos Visualizar tendências tags e dados Monitorar entradas Traduzir dados Revisar processos Monitorar Saídas Dar diagnóstico de problemas Supervisionar KPIs Como a IHM é uma forma de facilitar a interação dos operadores com as máquinas ela precisa que alguns processos sejam feitos para funcionar No setor industrial a combinação mais vista é o uso da IHM juntamente com o CLP que é o Controlador Lógico Programável A IHM funciona de maneira semelhante ao computador de uso comum pois ela reúne programações e processos antes feitos manualmente e os exibe na tela Um exemplo disso são os caixas eletrônicos ou até mesmo um processo de impressão onde não é feita a programação que o computador utiliza para imprimir o seu arquivo e sim a interação com ícones préprogramados que fornecem o mesmo resultado Da mesma forma funciona a IHM Antigamente o controle dos sistemas e máquinas era feito manualmente através de painéis com botoeiras chaves ou sinalizadores LEDs Porém com a chegada do CLP e da IHM esse processo está mais automatizado Isso porque a IHM reúne todos os processos que o CLP realiza e envia para as máquinas exibindoos na tela Para conseguir simplificar a interface a IHM precisa anteriormente de uma programação comum assim como os computadores de uso comum que são configurados antes de começarem a realizar as suas funções No projeto proposto o IHM seria o botão o potenciômetro e o display Com o botão e o potenciômetro é possível controlar a rotação do motor sem a necessidade de reprogramálo e com o display é possível obter dados dos comportamentos do motor 63 Interfaces para chaveamento de carga e controle motores No caso dos motores a velocidade de giro RPM pode ser controlada variando sua tensão de alimentação Além disso o RPM é diretamente proporcional à tensão aplicada Portanto variandose a tensão média de alimentação do motor variase o RPM do mesmo Isso significa que Duty cycle de 0 tensão média igual a 0V logo o motor fica parado Duty cycle de 50 tensão média igual a 50 da tensão de alimentação do motor logo este girará com RPM igual a metade de sua rotação máxima Duty cycle de 100 tensão média igual a tensão de alimentação do motor logo este girará com RPM igual a sua rotação máxima A programação do Arduino já possui uma função nativa para gerar um sinal PWM em alguns dos pinos aqueles identificados com um símboloidentificação Isso torna muito mais fácil o desenvolvimento dos projetos que envolvem PWM permitindo fácil utilização do mesmo com pouquíssimo custo em termos computacionais uso de memória Flash RAM e processamento e escrita de códigosfonte mais limpos e curtos Tal função é chamada de analogWrite e recebe dois parâmetros conforme abaixo analogWritePINO VALORANALOGICO Onde PINO número do pino do Arduino no qual se deseja que o sinal PWM seja gerado Conforme dito anteriormente somente pinos com símboloidentificação podem gerar sinais PWM VALORANALOGICO valor de 0 a 255 proporcional ao Duty Cycle a ser gerado Ou seja para Duty Cycle de 100 devese utilizar valor 255 já para Duty Cycle 20 devese utilizar o valor 51 e assim por diante No projeto proposto o sinal de PWM gerado pelo arduino é controlado pela posição do potenciômetro Quando ele está no meio do seu percurso o PWM possui um sinal de 50 ou seja o motor gira na metade da velocidade Quando está no fim do percurso o PWM possui um sinal de 100 ou seja o motor gira na velocidade máxima O motor utilizado no projeto é um modelo pequeno que pode ser acionado pelo arduino É possível ligar motores maiores e mais potentes utilizando o mesmo processo entretanto pode ser necessário o uso de drivers de controle capazes de lidar com fontes de alimentação mais potentes do que o Arduino Nesse caso o arduino funciona apenas como um controlador Fonte Bertoleti 2019 Disponível em httpsbitly3MArWH8 Figura 62 Esquema de ligação de um motor com um arduino e um drive de controle Conclusão Caro estudante neste bloco foi desenvolvido um projeto em que um Arduino controla a rotação de um motor Desenvolvemos também uma IHM utilizando um botão potenciômetro e um display que auxiliam no controle do motor Por fim foi utilizado o conceito de PWM para controlar a velocidade de rotação de um motor Dessa forma chegamos ao final da disciplina de Microcontroladores confira as Bibliografias Consultadas e continue se aprimorando Bons estudos Bibliografia Consultada BERTOLETI P Controle de velocidade de motor DC com PWM no Arduino UNO Filipeflop 8 jan 2019 Disponível em httpswwwfilipeflopcomblogcontrole motordcpwmarduinouno Acesso 07 jan 2022 MATTEDE H IHM O que é e para que serve Mundo da Elétrica Displonível em httpswwwmundodaeletricacombrihmoqueeparaqueserve Acesso 07 jan 2022
Send your question to AI and receive an answer instantly
Preview text
MICROCONTROLADORES Renato de Brito Sanchez SUMÁRIO 1 MICROPROCESSADORES E MICROCONTROLADORES 3 2 CARACTERÍSTICAS DOS MICROCONTROLADORES 10 3 APLICAÇÃO DE MICROCONTROLADORES 20 4 CONFIGURAÇÃO E CODIFICAÇÃO 33 5 PROJETO COM MICROCONTROLADORES I 43 6 PROJETO COM MICROCONTROLADORES II 65 1 MICROPROCESSADORES E MICROCONTROLADORES Olá estudante Neste primeiro bloco da disciplina de Microcontroladores serão introduzidos os conceitos de microcontrolador e microprocessador apresentaremos suas definições funções principais características e a arquitetura física do microcontrolador Por fim será apresentada a definição de conjuntos básicos de instruções Vamos começar 11 Conceitos e Tecnologias Os microprocessadores e os microcontroladores estão presentes em diversos equipamentos Esses componentes possuem códigos especialmente programados para realizar diversas tarefas como a leitura de sensores a transmissão de dados e o controle de motores Cada equipamento possui uma aplicação específica dessa forma o microprocessador e o microcontrolador realizam funções diferentes para cada equipamento Ao desenvolver um equipamento é necessário conhecer as características e detalhes dos microcontroladores e microprocessadores utilizados Assim é possível escolher o componente adequado para cada função Lembrando que nem sempre um componente ideal para uma aplicação pode ser usado para outra aplicação O microcontrolador pode ser visto como um minicomputador possui um núcleo de processador memória voláteis e não voláteis e diversos periféricos de entrada e saída Os modelos mais populares de microcontroladores são o PIC da Microchip a Intel MCS da Intel e o Atmel AR da Atmel Entre eles o modelo mais popular é o Atmel pois é o microcontrolador utilizado nas placas Arduino Essas placas são muito utilizadas pelos estudantes por serem acessíveis fáceis de utilizar e possuírem um código aberto permitindo alterála de acordo com a necessidade do usuário Enquanto isso o microprocessador é um circuito integrado responsável por realizar cálculos e tomar decisões de acordo com a sua programação Podese disser que ele é o cérebro do equipamento O microprocessador reúne todas as funções de uma unidade central de computação CPU em um único circuito integrado Ele é programado para receber dados de diversas origens processálos de acordo com a sua programação e retornar os resultados de uma forma que possam ser utilizados Como o microprocessador é responsável pelo processamento de dados é de suma importância analisar as especificações de cada modelo e selecionar o microprocessador adequado ao desenvolver um equipamento afinal ere irá determinar a sua capacidade de processamento Essa é a maior diferença entre o microprocessador e o microcontrolador o microprocessador é responsável apenas por processar os dados recebidos já o microcontrolador interage com diversos componentes de acordo com os dados processados Ambos são necessários para o desenvolvimento de equipamentos 12 Arquiteturas e Características Físicas O microcontrolador é composto por um microprocessador memórias e periféricos interligados para trabalharem em conjunto seguindo a arquitetura abaixo Fonte Guimarães 2020 Disponível em httpsbitly3CmxArX Figura 11 Arquitetura de um microcontrolador A imagem demonstra a arquitetura de um microcontrolador PIC16F887 ilustrando bem uma arquitetura genérica de um microcontrolador Alimentação Os microcontroladores conseguem trabalhar em uma faixa de tensão de alguns volts Entretanto é comum alimentar os microcontroladores de 8 bits com 33V ou 5V Reset O microcontrolador possui um pino que serve para reiniciálo a partir de um sinal de tensão aplicado no pino Reiniciar então nada mais é do que fazer o programa interno do microcontrolador voltar ao início Este pino pode receber o nome de RESET ou de Master Clear MCLR CPU É o cérebro do microcontrolador Watchdog O Watchdog é responsável por monitorar o comportamento do microcontrolador Caso ocorra um erro durante o seu funcionamento o watchdog irá aplicar um reset no microcontrolador evitado que ele fique preso Memórias As principais memórias utilizadas pelo microcontrolador são memória de dados memória de programa e EEPROM As memórias de dados são as memórias RAM e registradores da CPU e responsáveis pelo armazenamento de dados E as EEPROM são responsáveis por armazenar qualquer tipo de dados necessário Oscilador O oscilador é responsável por gerar o clock do microcontrolador ele pode ser interno ou externo GPIO Os GPIO são os pinos de entrada e saída digital do microcontrolador Normalmente eles são divididos por letras Timers Os timers são responsáveis por criar contadores e temporizadores utilizados pelo microcontrolador Outros O microcontrolador pode possuir outros tipos de periféricos de acordo com o seu modelo como um conversor analógico digital e um gerador de sinal PWM 13 Conjuntos básicos de instruções A fim de facilitar a operação dos microcontroladores e dos microprocessadores foi desenvolvido um conjunto básico de instruções Essas instruções são códigos pré programados que funcionam como atalhos para a realização de funções especificas do componente Esses conjuntos de instruções são normalmente fornecidos pelos fabricantes do componente que listam todos os conjuntos de instruções presentes no componente Nos processadores essas instruções são divididas e RISC e CISC O conjunto de instruções CISC Complex Instruction Set Computer possui instruções mais complexas e especificas Já o conjunto de instruções RISC Reduced Instruction Set Computer é mais simplificada e com uso mais geral sendo o conjunto utilizado com mais frequência A linguagem de máquina é composta por declarações e instruções simples Todo programa é traduzido por uma linguagem de nível mais alto para a linguagem de máquina Uma instrução pode especificar Registradores especiais para aritmética endereçamento ou funções de controle Posições de memória específicas ou deslocamentos Modos de endereçamento específico Ao combinar essas instruções e controlar a ordem que elas são executadas é possível obter operações mais complexas Exemplo Transferência de dados de uma célula para outra Operações matemáticas de dois valores Armazenar o resultado obtido de operações matemática Desvio para outro endereço fora da sequência Teste de condição Mudar o endereço de acordo com o teste de condição Realizar operações lógicas como AND OR e XOR Interromper a execução de um programa Transferir bytes da porta de ES para a MP e viceversa Substituição do operando por seu valor absoluto Uma arquitetura tradicional possui códigos de operação especificando que operação será executada como transferir um dado de uma memória para um registrador Existem arquiteturas que possuem longas instruções como o VLIW que possuem inúmeros códigos onde uma série de operações ocorre com apenas uma instrução Conclusão Caro estudante nesse bloco você conheceu os conceitos de microcontroladores e microprocessadores Foram apresentadas suas definições aplicações e principais características além da estrutura física do microcontrolador e das funções de cada parte dela fornecendo a base para o entendimento dos componentes Por fim foi abordada a definição de conjuntos básicos de instruções fornecendo a base para o entendimento das futuras programações Bons estudos e até a próxima REFERÊNCIAS GUIMARÃES F Arquitetura de um microcontrolador Aula 3 MC Mundo Projetado 30 jan 2020 Disponível em httpsmundoprojetadocombrarquiteturadeum microcontrolador Acesso 05 jan 2022 REFERÊNCIAS COMPLEMENTARES KENSHIMA G Diferenças entre microcontrolador e microprocessador Filipeflop 29 jan 2021 Disponível em httpswwwfilipeflopcomblogdiferencasentre microcontroladoremicroprocessador Acesso 05 jan2022 CARDOSO M O Que É Um Microcontrolador Capitulo estudantil de robótica e automação 23 set 2020 Disponível em httpseduieeeorgbrufcgrasoquee ummicrocontrolador Acesso 05 jan2022 2 CARACTERÍSTICAS DOS MICROCONTROLADORES Olá estudante Neste bloco serão apresentaremos o funcionamento dos registradores e acesso à memória os conceitos de instruções lógicas e por fim a definição das portas IO do PIC e do Arduino Vamos lá 21 Registradores e acesso à memória Os registradores SFR Special Function Regiters são posições da memória que recebem nomes específicos e têm função bem definida guardar a configuração e o estado de funcionamento atual do microcontrolador Normalmente cada bit do registrador tem uma função específica Assim temos um registrador para definir se as portas são de entrada ou de saída ativar e desativar interrupções apresentar o estado da CPU etc Os principais registradores do PIC12F675 e seus respectivos endereços em hexadecimal são TMR0 01H armazena a contagem do timer Sempre que este contador chegar a zero e o INTCON estiver ativado a interrupção de timer 0 será ativada STATUS 03H mostra o estado interno da CPU GPIO 05H apresenta o estado dos pinos de entradasaída INTCON 0BH ativadesativa o conjunto de todas as interrupções e cada uma delas de forma independente CMCON 19H apresenta o estado das entradas e da saída do comparador interno ADCON 1FH apresenta o estado do conversor AD TRISIO 85H define se os pinos de entradasaída atuarão como entrada ou como saída individualmente ANSEL 9FH seleciona o estado de cada um dos pinos de entradasaída quanto à sua operação como pino analógico ou digital Já no Arduino os comandos para registradores são baseados na linguagem C Utilizaremos três tipos específicos de registradores PORTx registrador de dados usado para escrever no port ou pino em específico e x representa os ports disponíveis no microcontrolador que no caso do ATMega328p são os ports B C e D Fonte Madeira Link httpsbitly376HbHz Figura 21 Registrador PORTB Para definir um pino como alto devemos estabelecer seu respectivo bit do registrador PORT como 1 e para definilo como baixo estabelecêlo como 0 DDRx registrador de direção usado para ler a entrada de um port ou pino em específico No caso do ATMega328p x representa os ports B C e D Fonte Madeira Disponível em httpsbitly3ITFtHP Figura 22 Registrador DDRB Para definir um pino como saída devemos estabelecer seu respectivo bit do registrador DDR como 1 e para definilo como entrada estabelecêlo como 0 PINx endereço de entrada do pino usado para configurar um port inteiro ou o pino será entrada ou saída Fonte Madeira Disponível em httpsbitly3ITFtHP Figura 23 Registrador PINB 22 Instruções Lógicas Aritméticas e de Controle As principais instruções lógicas são OR AND XOR NOT A lógica OR segue o princípio de operação em que se pelo menos uma entrada for 1 a saída será 1 Dessa forma a única forma da saída ser 0 é quando todas as entradas forem 1 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 24 Tabela verdade e diagrama esquemático para a lógica OR A lógica AND segue o princípio de operação em que se pelo menos uma entrada for 0 a saída será 0 dessa forma a única forma da saída ser 1 é quando todas as entradas forem 1 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 25 Tabela verdade e diagrama esquemático para a lógica AND A lógica XOR segue o princípio de operação em que para que a saída seja 1 as entradas devem ser diferentes se elas forem iguais a saída será 0 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 26 Tabela verdade e diagrama esquemático para a lógica XOR A lógica NOT segue o princípio de operação em que a entrada é invertida dessa forma se a entrada for 1 a saída será 0 e se a entrada for 0 a saída será 1 Fonte Pérez 2019 Disponível em httpsbitly3hPSyWw Figura 27 Tabela verdade e diagrama esquemático para a lógica NOT 23 Funções Especiais e IO As portas IO são portas de entrada e saída de dados cujo valores alternam entre 0 e 1 Tanto no PIC quanto no Arduino essas portas devem ser definidas de acordo com a aplicação do microcontrolador PIC O PIC possui cinco grupos de portas disponíveis A B C D E e cada porta tem três registradores associados à configuração Registrador TRIS configura o sentido do fluxo de dados de uma determinada porta Registrador PORT escreve e lê o nível dos pinos associados a uma porta Registrador LAT armazena o valor do último comando de escrita O registrador TRIS tem 8 bits sendo cada elemento correspondente à configuração de um determinado pino de IO sendo 0 saída output 1 entrada input Sintaxe TRISx valor Sendo x nome da porta letra maiúscula valor valor de 8 bits 0 saída e 1 entrada Exemplo Fonte Bastos Disponível em httpsbitly3MJTNoH Figura 28 Exemplo do registrador TRISB sendo preenchido com o número 0b00000001 O status dos pinos das portas é armazenado no registrador PORT Ele possui um tamanho de 8 bits sendo responsável pelas operações de escrita e leitura dos pinos relacionados às portas Sendo 0 Vss e 1 Vcc Sintaxe PORTx valor Valor PORTx Sendo x nome da porta letra maiúscula valor valor de 8 bits 0 saída e 1 entrada Exemplo Suponha que todos os pinos da porta B estejam configurados como saída TRISB 00x0 então podemos selecionar os pinos na porta do PIC conforme abaixo PORTB 0b00100101 Fonte Bastos Disponível em httpsbitly3MJTNoH Figura 29 Exemplo da porta B sendo configurada com o número 0b00100101 Arduino As placas Arduino possuem dois tipos de portas analógica e digital As portas analógicas são capazes de receber ou enviar tensões entre 0 a 5V Já as portas digitais trabalham de forma binária ou seja elas podem receber ou enviar 0 ou 5V Todas as portas analógicas e digitais podem ser configuradas como input ou output utilizando o comando pinMod Sintaxe pinModePortaMode Onde Porta Número da porta analógica ou digital correspondente Mode Define se a porta é uma entrada ou saída INPUT entrada OUTPUT saída Exemplo 1 Defina a porta digital 3 como entrada pinMode3INPUT Exemplo 2 Defina a porta analógica 0 como saída pinModeA0OUTPUT Conclusão Caro estudante a partir desse bloco você conheceu o funcionamento de registradores e acesso à memória e os conceitos de instruções lógicas Por fim foram explicadas as portas IO e os comandos para configurálas tanto no PIC como no Arduino Bons estudos e até a próxima Bibliografia Consultada KENSHIMA G Uso de registradores na IDE Arduino Filipeflop 19 mar 2021 Disponível em httpswwwfilipeflopcomblogusoderegistradoresnaide arduino Acesso 05 jan 2022 MADEIRA D Arduino Entradas e saídas digitais Pinos digitais Vida de Silício 14 maio 2017 Disponível em httpsportalvidadesiliciocombrentradasesaidas analogicas PÉREZ A Práticas e código de exemplo para obter instruções lógicas Arduino Uno MIC183 Instituto NCB 2019 Disponível em httpswwwnewtoncbragacombrindexphpmicrocontroladores138 atmel16295praticasecodigodeexemploparaobterinstrucoeslogicasarduino unomic183html Acesso 05 jan 2022 PICORETI R Entrada e Saída Manipulando Registradores Vida do silício 14 mai 2017 Disponível em httpsportalvidadesiliciocombrentradaesaida manipulandoregistradores Acesso 05 jan 2022 SOUZA F Curso Arduino Operadores FBS Eletrônica 06 out 2014 Disponível em httpsfbseletronicawordpresscom20130526cursoarduinooperadores Acesso em 05 jan 2022 3 APLICAÇÃO DE MICROCONTROLADORES Olá estudante Neste bloco apresentaremos as famílias do PIC e do Arduino juntamente com as especificações e caraterísticas dos modelos disponíveis Em seguida será listado o conjunto set de instruções disponível para o PIC e para o Arduino Por fim serão explicados os ambientes de programação compilação e gravação do PIC e do Arduino Vamos lá 31 Famílias de microcontroladores Há uma grande variedade de microcontroladores disponíveis comercialmente Podemos classificar esses microcontroladores de acordo com a largura do seu barramento repertório de instruções arquitetura de memória e localização da memória Para uma mesma família de microcontroladores podemos ter variações nestes itens Quanto à quantidade de bits disponíveis nos registradores de operação lógicoaritméticas temos tipicamente microcontroladores de 4 8 16 e 32 bits Quanto maior a quantidade de bits maior é a precisão dos cálculos numéricos Microcontroladores de 32 bits são tipicamente usados nos dispositivos médicos de controle e de automação de escritório e secretariado Quanto ao repertório de instruções temos microcontroladores de arquitetura CISC Complex Instruction Set Computer e de arquitetura RISC Reduced Instruction Set Computer Na arquitetura CISC o uso do espaço de memória é otimizado por ter menos instruções por programa Na arquitetura RISC o tempo de execução é usualmente menor por padronizar as microinstruções propicia pipeline e reduzir a quantidade de ciclos de relógio por instrução Quanto à arquitetura de memória distinguemse a arquitetura von Neumann Princeton e a arquitetura Harvard A arquitetura Harvard é a clássica e a de Princeton evita hazards estruturais em pipeline Finalmente quanto à localização da memória há microcontroladores com as unidades de memória principal embutidas num mesmo chip e existem microcontroladores como o 8031 com memória principal externa Extem também diversos modelos de placas arduinos cada uma com as suas características e funcionalidades próprias Entre os modelos existentes destacamse Arduino Uno A placa mais básica disponível possui um bom número de portas digitais e analógicas além de ser compatível com diversos componentes e sensores Dessa forma o arduino uno é muito utilizado por iniciantes e estudantes para estudos e testes Processador ATMEGA328 Portas digitais 14 Portas de PWM 6 Portas Analógicas 6 Alimentação 5V Arduino Mega 2560 Essa placa é uma versão maior da placa Arduino Uno ambas possuem características de processamento semelhantes entretanto o Arduino Mega 2560 possui mais portas analógica e digitais Dessa forma ele é ideal para aplicações que utilizam diversos sensores Processador ATmega2560 Portas digitais 54 Portas de PWM 15 Portas Analógicas 15 Alimentação 5V Arduino Due Essa é a placa que possui maior capacidade de processamento Em questão de número de portas ela possui o mesmo número do que o arduino Mega 2560 entretanto a sua capacidade superior de processamento torna essa placa ideal para aplicações mais complexas A sua tensão de operação é de 33V e a grande maioria dos componentes e sensores desenvolvidos para trabalhar com as placas arduino possuem uma tensão de operação de 5V Dessa forma ao utilizar a placa Arduino Due é necessário prestar atenção na comunicação entre a placa e os componentes para evitar danos a placa Processador ARM Portas digitais 54 Portas de PWM 12 Portas Analógicas 12 Alimentação 33V Arduino Nano Essa placa é uma das menores placas arduino disponível o seu nível de processamento é semelhante ao do arduino uno entretanto ela é significativamente menor e possui menos portas digitais e analógicas Essa placa é ideal para aplicações pequenas e simples permitindo o desenvolvimento de projetos portáteis Processador ATmega32 Portas digitais 22 Portas de PWM 6 Portas Analógicas 8 Alimentação 5V 32 Set de instruções 321 Instruções no PIC No PIC 12F675 todas as suas operações lógicas e aritméticas estão relacionadas com o registrador W Essas operações podem ser realizadas entre os dados presentes no registrador W e outros registradores do PIC Diversos periféricos podem ser usados com este microcontrolador esses periféricos são gerenciados por registradores especiais chamados SDR Special Function Registers Os SFRs devem ser ajustados regularmente antes de serem usados principalmente entre longos ciclos Os SFRs são organizados em dois blocos de memória Banco de Memória 0 e Banco de Memória 1 dessa forma antes de utilizar os SFRs é necessário selecionar o bloco de memória correto utilizando o bit 5 do registrador STATUS Algumas funções e modos de operação do PIC12F675 não podem ser configurados pelo firmware dessa forma eles devem ser alterados durante a programação Para realizar essas modificações é necessário utilizar instruções específicas incluídas no programa fonte criadas especialmente para essa finalidade Detalhando as instruções temos ADDW F add file em work adiciona os conteúdos dos registradores W e F ANDWF and file e work executa a operação E and lógica entre os conteúdos dos registradores W e F CLRF clear file carrega o valor 0 no registrador F CLRW clear work carrega o valor 0 no registrador W COMF complement file complementa inverte bit a bit o conteúdo do registrador F DECF dec file decrementa subtrai um do conteúdo do registrador F DECFSZ dec file skip se zero decrementa subtrai um do conteúdo do registrador F e não executa pula a próxima instrução se o resultado do incremento for igual 0 INCF inc file incrementa soma um o conteúdo do registrador F INCFSZ inc file skip se zero incrementa soma um ao conteúdo do registrador F e não executa pula a próxima instrução se o resultado do incremento for igual 0 IORWF W or file executa a operação OU or lógica entre os conteúdos dos registradores W e F MOVF move file para W move o valor do registrador F para o registrador W MOVWF move W para F copia o conteúdo do registrador W para o registrador F NOP no operation nenhuma operação é executada apenas gasta um ciclo de máquina RLF rotate left file rotaciona à esquerda o conteúdo do registrador F RRF rotate rigth file rotaciona à direita o conteúdo do registrador F SUBWF sub f de W subtrai o conteúdo do registrador F do registrador W e armazena o resultado em W SWAPF troca file troca os 4 bits mais significativos com os 4 bits menos significativos de F XORWF WXORF executa a operação ou exclusivo xor lógica entre os conteúdos dos registradores W e F e armazena em W BCF bit clear file ajusta o bit b do registrador f para nível baixo 0 BSF bit set file ajusta o bit b do registrador f para nível alto 1 BTFSC bit teste file skip se clear testa o bit b do registrador f e não executa a próxima instrução se ele estiver em nível baixo 0 BTFSS bit teste file skip se set testa o bit b do registrador f e não executa a próxima instrução se ele estiver em nível baixo 1 ADDLW add literal a W o conteúdo do registrador W é somado a uma constante k de 8 bits e o resultado é guardado no registrador W ANDLW and literal e W executa a operação E and lógica entre o conteúdo do registrador W e uma constante k de 8 bits e armazena o resultado em W CALL chamada uma subrotina CLRWDT clear wdt carrega o valor 0 no temporizador do watchdog timer GOTO salto incondicional para outro local no programa IORLW or literal ou W executa a operação OU or lógica entre o conteúdo do registrador W e uma constante k de 8 bits e armazena o resultado em W MOVLW move literal para W carrega uma constante k de 8 bits no registrador W RETFIE retorno de uma rotina de interrupção RETLW retorno de uma subrotina com o carregamento de uma constante k de 8 bits literal no registrador W RETURN retorno de uma subrotina SLEEP coloca o processador no modo de baixo consumo SUBLW subtrai o literal de 8 bits do conteúdo do registrador W e armazena o resultado no registrador W XORLW executa a operação ou exclusivo xor lógica entre o conteúdo do registrador W e uma constante k de 8 bits literal 322 Instruções no Arduino A linguagem de programação do Arduino pode ser dividida em três partes principais estruturas valores variáveis e constantes e funções Funções Para controlar a placa Arduino e realizar computações Entradas e Saídas Digitais digitalRead digitalWrite pinMode Entradas e Saídas Analógicas analogRead analogReference analogWrite Apenas Zero Due e Família MKR analogReadResolution analogWriteResolution Entradas e Saídas Avançadas noTone pulseIn pulseInLong shiftIn shiftOut tone Funções Temporizadoras delay delayMicroseconds micros millis Funções Matemáticas abs constrain map max min pow sq sqrt Funções Trigonométricas cos sin tan Caracteres isAlpha isAlphaNumeric isAscii isControl isDigit isGraph isHexadecimalDigit isLowerCase isPrintable isPunct isSpace isUpperCase isWhitespace Números Aleatórios random randomSeed Bits e Bytes bit bitClear bitRead bitSet bitWrite highByte lowByte Interrupções Externas attachInterrupt detachInterrupt Interrupções interrupts noInterrupts Comunicação Serial Stream USB Keyboard Mouse Variáveis Tipos de dados e constantes da linguagem Arduino Constantes HIGH LOW INPUT OUTPUT INPUTPULLUP LEDBUILTIN true false Constantes de Ponto Flutuante Constantes Inteiras Conversão byte char float int long word Tipos de Dados bool boolean byte char double float int long short sizet string String unsigned char unsigned int unsigned long vetor void word Escopo de Variáveis e Qualificadores const escopo static volatile Utilitários PROGMEM sizeof Estruturas Os elementos da linguagem Arduino C Sketch loop setup Estruturas de Controle break continue dowhile else for goto if return switchcase while Outros Elementos da Sintaxe define define include include comentário em bloco comentário ponto e vírgula chaves Operadores Aritméticos resto multiplicação adição subtração divisão operador de atribuição Operadores de Comparação diferente de menor que menor que ou igual a igual a maior que maior que ou igual a Operadores Boleanos NÃO lógico E lógico OU lógico Operadores para Ponteiros referência desreferência Operadores Bitwise E deslocamento à esquerda deslocamento à direita OU EXCLUSIVO OU NÃO Operadores de Atribuição Composta compound remainder atribuição por e atribuição por multiplicação incremento atribuição por adição decremento atribuição por subtração atribuição por divisão atribuição por ou exclusivo atribuição por ou 33 Ambientes de Programação Compilação e Gravação Para programar compilar e gravar os códigos de PIC e Arduino é necessário utilizar o seu respectivo IDE Integrated Development Environment Para o PIC normalmente é utilizado o MPLAB IDE e para o Arduino o IDE Arduino 331 MPLAB IDE O MPLAB IDE é um software gratuito oferecido pela empresa Microchip Technology Ele gerencia projetos e ambientes de programação e foi desenvolvido especialmente para programação simulação e gravação de microcontroladores PIC O MPLAB IDE é capaz de trabalhar com diversos modelos de PIC ele possui ferramentas de linguagem que facilitam a sua programação As linguagens de programação que podem ser usadas nesse software são assembly C ou linguagem BASIC Os códigos escritos são compilados em linguagem hexadecimal em seguida o código executável que irá determinar o comportamento do PIC pode ser gravado no equipamento desejado Para facilitar a detecção de possíveis erros o MPLAB IDE possui debugger como o MPLAB SIM ou ferramentas externas como o Proteus e o Matlab permitindo simular a aplicação do PIC sem a necessidade de montar o sistema fisicamente Além disso através de equipamentos externos como o MPLAB ICD2 MPLAB ICE 200 e PICKIT 2 é possível realizar o debug no próprio PIC tendo acesso aos seus registradores e às suas memórias permitindo observar o seu comportamento durante o seu uso Para o desenvolvimento de códigos de programação o MPLAB conta com uma interface que permite a criação do código a detecção de erro e a programação direta do PIC através da porta serial ou usb utilizando equipamentos externos como o MPLAB ICD2 MPLAB ICE 200 e PICKIT2 Os modelos suportados pelo MPLAB IDE são 10 12 16 17 18 24 30 e 32 bit HCS e SEE Entre esses modelos os mais utilizados são os pics 16f84 16f628 16f877 18f452 e 18f4550 Entre esses modelos o Pic 16f84 é muito utilizado por estudantes pois seu número de pinos e funções são reduzidos permitindo projetos simples e didáticos Já o Pic16f628 é muito utilizado em projetos devido a sua versatilidade e flexibilidade 332 IDE Arduino O Arduino IDE é um software gratuito oferecido pela empresa Arduino em seu próprio site Esse software foi desenvolvido para facilitar na criação e gravação de códigos em todos os modelos de placas Arduino Ele foi projetado para ser usado pelos sistemas operacionais Widows e Linux e é de fácil instalação e manuseio O Arduino IDE é capaz de programar todas as placas Arduinos basta selecionar a placa utilizada e carregar o código além disso o software é capaz também de detectar problemas durante a programação e ainda apontar onde estes problemas estão ocorrendo facilitando a sua correção Além do Arduino IDE é possível programar as placas arduino através da plataforma online desenvolvida pela empresa Arduino Este método evita a necessidade de instalar o software no computador e pode ser utilizado por qualquer máquina entretanto é necessário estar conectado à internet O Arduino IDE possui um layout simples e intuitivo todas as suas fermentas são organizadas e de fácil acesso além de serem bem documentadas facilitando a criação de projetos Para obter o Arduino IDE basta acessar o site do Arduino e realizar o download para o sistema operacional correspondente em seguida o software deve ser instalado Ao fim da instalação o software poderá ser utilizado gratuitamente quantas vezes o usuário quiser mesmo offline Ao iniciar o software ele irá buscar automaticamente a versão mais recente disponível se houver esta versão poderá ser baixada e instalada automaticamente Conclusão Caro estudante a partir desse bloco você pôde conhecer as famílias do PIC e do Arduino incluindo suas principais características e diferenças Em seguida o Set de instruções do PIC do Arduino foi listado e explicado Por fim foram apresentados os ambientes de programação compilação e gravação MPLAB IDE e IDE Arduino Bons estudos e até a próxima BIBLIOGRAFIA CONSULTADA SHINTING W OLIVEIRA J R Microcontroladores 2019 Disponivel em httpswwwdcafeeunicampbrcoursesEA0752s2019notastopico10pdf Acesso 06 jan 2022 STRAUB M G Arduino IDE O Software para Gravação de Códigos no Arduino Usinainfo eletrônica e robótica 24 out 2019 Disponível em httpswwwusinainfocombrblogarduinoideosoftwareparagravacaode codigosnoarduino Acesso 06 jan 2022 THOMSEN A Qual Arduino Comprar Conheça os Tipos de Arduino Filipeflop 03 fev 2014 Disponível em httpswwwfilipeflopcomblogtiposdearduinoqual comprar Acesso 06 jan 2022 4 CONFIGURAÇÃO E CODIFICAÇÃO Olá estudante Neste bloco serão apresentados os funcionamentos de interrupções e temporizadores de entradas e saídas Digitais Analógicas PWM e de conversores AD e DA Vamos lá 41 Interrupções e Temporizadores Uma das características notáveis dos microcontroladores que os distinguem dos sistemas computacionais convencionais é a sua intimidade com o tempo para poder interagir com o mundo físico em instantes préestabelecidos Todos os microcontroladores têm ao menos um sistema de temporização embarcado no seu chip O principal componente de um sistema de temporização em inglês timer embarcado é um contador de corrida livre em inglês free running counter de forma totalmente independente da CPU Esse contador é incrementado ciclicamente de 0 até 2n1 por um sinal de relógio de forma que se consegue computar um intervalo de tempo t pela quantidade m de contagem e pelo período fixo T do sinal de relógio t M T Sendo a contagem máxima de um sistema de temporização dependente da quantidade de bits do seu contador é comum especificar um temporizador por esta quantidade O sinal de Overflow indica que o contador atingiu o valor máximo e o contador volta para 0 Esse sinal pode ser usado para contar a quantidade k de ciclos completos contados Fonte SHINTING OLIVEIRA 2019 Link httpsbitly3HTtZCK Figura 41 Componente básico timer Supondo que sejam i o valor inicial registrado inicialmente num contador de n bits e j o valor final de uma contagem podemos determinar com precisão a quantidade total dos pulsos contados através das seguintes relações Se o número de ciclos completos for 0 m j i pulsos Se o número de ciclos completos for maior que 0 2n 1 i j 1 2n i j pulsos além dos ciclos completos Somando com os pulsos dos k1 ciclos completos temos no total m k 12n 2n i j 2n k i j pulsos Em diversos timers a sua fonte do sinal de relógio é configurável Ela pode ser o mesmo sinal de relógio do microprocessador ou um derivado deste sinal A técnica de divisor de frequência é a mais utilizada para gerar sinais de frequências menores A fonte do sinal de relógio do contador pode ser também externa Neste caso a frequência de contagem pode ser até aperiódica Visando à redução do consumo de energia devese parar o contador do timer quando ele não é mais necessário Adicionalmente os temporizadores são projetados para gerarem interrupções ou ticks com base nos eventos especificados Exemplos destes eventos são estouro ou contagem atingir um valor prédefinido Isso torna viável por software medir o intervalo de tempo entre dois eventos ou controlar precisamente o tempo de duração do estado de um dispositivo Um temporizador que existe em todos os microcontroladores é o temporizador watchdog em inglês watchdog timer Este temporizador é responsável por disparar um reset ao sistema quando ocorre um estouro na sua contagem Isso garante que o sistema consiga sair de uma condição de falha ou de erro numa emergência Por isso quando esse temporizador estiver ativado precisaremos periodicamente zerar o seu contador para evitar resets emergenciais O mecanismo de interrupção implementado nos microcontroladores é uma solução eficiente para compatibilizar um microcontrolador com o mundo físico Ele provê uma forma eficiente tanto para capturar as variações inesperadas nos estados dos periféricos quanto para respondêlas desviando automaticamente do fluxo corrente de execução para uma rotina de serviço de interrupção prédefinida Interrupt Service Routine ISR Os sinais assíncronos em relação ao relógio do sistema oriundos dos periféricos e capazes de interromper o fluxo de execução corrente são chamados de requisições de interrupções em inglês interrupt request IRQ Podemos distinguir três formas de ativação de interrupção conforme as características desses sinais detectáveis pelos circuitos eletrônicos Gatilhos por nível quando a ativação é por nível lógico 0 ou 1 de um pulso com uma largura mínima em tempo Gatilho pela borda quando a ativação é pela borda de subida ou de descida de um pulso quadrado Gatilho pela aresta quando a ativação é por um pulso rápido de subida ou de descida Portas de entrada que suportam interrupções incluem nos seus circuitos registradores de controle que permitem customizar o tipo de gatilho ao qual os pinos são sensíveis O intervalo de tempo entre o instante em que ocorre uma interrupção e o instante em que se inicia a execução da rotina de serviço correspondente é conhecida por latência de interrupção 42 Entradas e Saídas Digitais Analógicas e PWM Para se comunicar com o mundo físico todos os microcontroladores são providos de uma série de pinos Portas são abstrações de uma série de registradores embutidos nos microcontroladores que permitem que um softwarefirmware controle modifique ou leia os estados dos pinos individualmente A correspondência entre os pinos e os bits das portas é biunívoca ou seja cada pino é controlado por um bit de uma porta Os pinos do microcontrolador podem trabalhar com sinais digitais analógicos e PWM Sinais digitais são aqueles que não variam continuamente no tempo mas sim em saltos entre valores bem definidos Sinais analógicos são aqueles que ao contrário dos sinais digitais variam continuamente dentro de uma faixa de valores Os circuitos e equipamentos elétricos ditos digitais trabalham com apenas dois valores de tensão definidos Um nível lógico alto Um nível lógico baixo Na prática não é necessário o pino receber exatamente um valor de tensão especifico para ser considerado alto ou baixo existe uma faixa de tensão em que se o valor estiver dentro dela o microcontrolador irá automaticamente entender o seu nível Além disso existe uma faixa entre os dois níveis em que o microcontrolador não é capaz de determinar se é alto ou baixo gerando valores aleatórios e é importante evitar essas faixas sempre que possível Ao configurar uma porta do micocontrolador como uma entrada digital ela irá adquirir uma característica chamada alta impedância Nesse modo qualquer variação de corrente mesmo que pequena pode alterar o seu estado permitindo ao microcontrolador determinar o nível lógico que a entrada se encontra Isso pode ser usado para monitorar botões foto acopladores ou outros tipos de sensores permitindo ao microcontrolador tomar decisões de acordo com os níveis lógicos das suas entradas digitais Ao configurar uma entrada digital mas não ligar nada nela o seu nível lógico pode ficar oscilando aleatoriamente Isso ocorre pois a porta pode captar ruídos elétricos do ambiente e devido à alta impedância da entrada esses ruídos podem ser o bastante para alterar o nível lógico da porta gerando um comportamento imprevisível e indesejado Para evitar esse problema é necessário utilizar uma resistência de pull down ou de pullup ligado nas entradas Essas resistências garantem um nível lógico constante quando não há nada ligado na entrada dessa forma o nível lógico apenas irá mudar quando for necessário Fonte Arduíno Portugal 2017 Link httpsbitly3sP31YB Figura 42 Resistência de pulldown e de pullup Ao configurar uma entrada digital como uma saída ela pode fornecer 0 ou 5 V dependendo do código carregado no microcontrolador A corrente máxima fornecida pelo micocontrolador pode variar dependendo do modelo mas normalmente é de 30mA Com esta corrente é possível ligar componentes simples como LEDs e alguns sensores Entretanto equipamentos mais exigentes como alguns modelos de motores necessitam de uma corrente maior Se eles forem ligados diretamente podem causar danos ao microcontrolador Assim como outros microcontroladores o Arduino possui um conversor AD capaz de converter os sinais analógicos gerados por sensores em sinais digitais O conversor do Arduino possui uma resolução de 10 bits aplicado em uma faixa de 0 a 5V Ou seja o conversor é capaz de dividir o valor de 5V em 1024 pedaços e determinar em qual posição um valor de tensão entre 0 a 5V se encontra O PWM Pulse Width Modulation é uma forma de gerar um sinal analógico utilizando uma saída digital Ao controlar o valor do duty cycle do sinal digital é possível variar o valor de tensão da saída permitindo controlar aspectos de alguns componentes como o brilho de um LED ou a velocidade de um motor O duty cycle é o tempo em que o sinal digital permanece em 5V No Arduino um duty cycle de 0 é equivalente a uma saída de tensão de 0V já um duty cycle de 100 é equivalente a uma saída de tensão de 5V Fonte 2017 Disponível em httpsbitly3tEJkC6 Figura 43 Exemplos de Duty Cycle O duty cycle é a razão do tempo em que o sinal permanece na tensão máxima 5V no Arduino sobre o tempo total de oscilação Fonte 2017 Disponível em httpsbitly3IOLyoN Figura 44 Variáveis que compõem o Duty Cycle Duty Cycle xxy100 xT100 Vmédio VmaxDuty Cycle 43 Conversores AD e DA Um conversor AD é capaz de converter um sinal analógico que é um sinal contínuo no tempo em um sinal amostrado que é um sinal discreto no tempo Os limites do sinal amostrado coletado dependem da resolução do conversor em bits um conversor de 8 bits é capaz de transformar o sinal analógico em valores entre 0 a 255 Um conversor AD pode converter sinais analógico entre 0 a 5V ou 0 a 33V entretanto normalmente o sinal analógico gerado por sensores ou outros componentes não gera essas variações Dessa forma os sinais analógicos devem ser condicionados através de circuitos passivos ou ativos para se encaixarem nessa faixa gerando a maior resolução possível Após condicionar o sinal ele passa por um circuito chamado Sample Hold Esse circuito mantém o sinal estável até que o conversor termine de convertêlo para um sinal digital Ao dimensionar um conversor AD é necessário verificar se as suas características atendem às necessidades do projeto As especificações mais importantes são Conversor interno ao processador ou externo Taxa de amostragem Número de bits de resolução Número de bits de precisão ou bits efetivos Relação sinalruído Linearidade Necessidade de se utilizar Sample Hold externo Necessidade de utilizar um filtro analógico de antialiasing Preço O conversor DA DAC aceita como entrada dados digitais e produz uma saída analógica que é relacionada com o código digital de entrada Um registrador é usado para armazenar a entrada do DAC e assegurar que sua saída fique estável até que o conversor seja alimentado por outra entrada digital Ele pode ser externo ou fazer parte do DAC Cada palavra digital número de bits em paralelo é convertida no tempo Filtros podem ser usados para suavizar ou restaurar o sinal analógico em sua saída Fonte Lima Disponível em httpsbitly3hNJ6TN Figura 45 Exemplo de uma conversão DA Resolução de um conversor DigitalAnalógico está associado ao número de bits do conversor É a menor quantidade modificação que pode ser convertida resolvida em sua saída analógica resultante de uma alteração na entrada digital Em geral para um conversor DA de N bits o número de níveis diferentes será de 2N e o número de degraus será de 2N 1 Fonte Lima Disponível em httpsbitly3hNJ6TN Figura 46 Resolução do conversor DA Conclusão Caro estudante neste bloco você conheceu o funcionamento de interrupções e temporizadores de entradas e saídas digitais analógicas PWM e dos conversores AD e DA Bons estudos e até a próxima Bibliografia Consultada SHINTING W OLIVEIRA J R Microcontroladores Faculdade de Engenharia Elétrica e de Computação UNICAMP 2019 Disponível em httpswwwdcafeeunicampbrcoursesEA0752s2019notastopico10pdf Acesso 06 jan 2022 LIMA M E Conversão Digital Analógico e Analógico Digital UFPE Centro de Informática Disponível em httpsbitly3HVxXuq Acesso 06 jan 2022 QUAL a diferença entre entradas Digitais Analógicas e PWM Arduino Portugal 10 maio 2017 Disponível em httpswwwarduinoportugalptgrandezasdigitaise analogicasepwm Acesso 06 jan 2022 5 PROJETO COM MICROCONTROLADORES I Olá estudante Neste bloco serão demonstrados quatro projetos utilizando a placa Arduino Apresentaremos as características dos equipamentos que serão utilizados um exemplo de como será o código dos projetos e os resultados esperados de uma simulação virtual dos projetos Vamos lá 51 Características e especificações de hardware Para os projetos com microcontroladores será utilizada a placa Arduino LED display módulos ADC ponte de Wheatstone potenciômetro resistor e botão e strain gauges células de carga Placa Arduino Uno A placa Arduino sugerida será o Arduino Uno suas especificações são Microcontrolador ATmega328P Tensão de operação 5V 14 portas digitais Seis portas analógicas Clock 16 MHz Tamanho 686 X 534 mm Esta placa foi selecionada devido a sua fácil acessibilidade e baixo custo Outras placas Arduino também podem ser usadas para os projetos entretanto devese tomar cuidado com a tensão de operação da placa alguns modelos como a placa Arduino Due possuem uma tensão de alimentação de 33V isso pode causar resultados diferentes do esperado Fonte Arduino Disponível em httpsbitly3Mzy3vp Figura 51 Arduino UNO Módulo ESP 8622 ESP12E Fonte Autor Figura 52 Esquematização do ESP12E Características Módulo ESP8266 ESP12E Rápida e fácil conexão Switch de Radiofrequência Compatível com sistemas microcontrolados Processadores de MAC e Baseband integrados Pode ser utilizado como STAAPSTAAP Engine integrada para criptografias WEP TKIP AES e WPA WiFi Direct P2P softAP Antena integrada Protocolo TCPIP integrado com suporte a IPv4 WiFi em frequência de 24GHz com suporte a WPA e WPA2 Conversor ADC integrado Excelente relação custo x benefício Especificações Modelo ESP12E Chip Principal ESP8266 Tensão de alimentação 33V Potência de saída 195dBm no modo 80211b Alcance 90 metros Taxa de dados 110 460800bps Suporte a redes 80211 bgn Consumo em Standby 10mW Processador 32bit CPU de baixa potência Comunicação Serial TXRX Comunicação TCP IP Modos de operação STAAPSTAAP Segurança WEP WPA TKIP AES Temperatura de trabalho 40 a 125ºC Dimensões C x L x E 24 x 16 x 3 mm Massa 1g CI 3g conjunto LED O termo LED vem do inglês Light Emitting Diode que significa Diodo Emissor de Luz O LED é um componente eletrônico semicondutor composto de cristal semicondutor de silício ou germânio No LED a emissão de luz acontece quando a corrente elétrica percorre o material de junção PN diodo semicondutor emitindo radiação infravermelha O LED é um componente bipolar possui dois terminais chamados de ânodo e catodo que determinam ou não a polarização do LED ou seja a forma que está polarizado determina a passagem ou não de corrente elétrica que está ocasionando a ocorrência de luz A polarização que permite a emissão de luz pelo LED é o terminal ânodo no positivo e o cátodo no negativo para identificar qual dos terminais é o ânodo e qual é o cátodo basta observar o tamanho dos terminais O maior terminal do LED é o ânodo e a menor é o catodo Potenciômetro Potenciômetro é um componente eletrônico que cria uma limitação para o fluxo de corrente elétrica que passa por ele podendo ser ajustada manualmente aumentada ou diminuída Os potenciômetros e o resistores tem essa finalidade de limitar o fluxo de corrente elétrica em um circuito a diferença é que o potenciômetro pode ter sua resistência ajustada e o resistor comum não pode pois ele possui um valor de resistência fixo O potenciômetro comumente possui três terminais e um eixo giratório para ajuste da sua resistência e normalmente são usados em controle de volumes de aparelhos de som controle de posicionamento em controles de vídeo games controle de brilho e contraste em telas LCD Célula de Carga O sensor de carga utilizado é um Strain Gauge um dos vários sensores existentes no mercado que podem ser usados para medir peso É possível utilizar vários sensores de carga simultaneamente para aumentar a capacidade Conforme vemos na tabela abaixo para um botijão de 13kg uma única célula de carga atende minimamente logo o custo poderá ser composto para os limites indicados na tabela totalizando quatro versões na montagem Tabela 51 Dados da Célula de Carga CONFIGURAÇÃO COM CÉLULAS DE 50kg COM g 98 10 ms² Quantidade Massa Suportada kg 1 50 2 100 3 150 4 200 Fonte Autor A célula de carga utilizada possui as seguintes especificações Dimensões mm 28 x 28 x 8 Capacidade kg 50 Margem de erro 02 Tensão de excitação V 5 10 Ponte de Wheatstone A ponte de Wheatstone é um circuito elétrico utilizado para medir uma determinada resistência desconhecida normalmente com valor próximo às outras resistências do circuito Abaixo temos o circuito que demonstra a ligação com quatro resistores formando a ponte Fonte Autor Figura 53 Circuito da Ponte de Wheatstone Equacionamento que converte as células de carga nos valores dos resistores calculando a tensão total do circuito da ponte Para trabalhar com a Célula de Carga é necessário um conversor AD AnalógicoDigital amplificador Conversor ADC e Amplificador HX711 HX711 é um módulo amplificador operacional de 24 bits que será utilizado para converter o sinal analógico em digital Fabricado pela Avia Semiconductors possui um conversor AD com precisão de 24 bits Este módulo foi idealizado para interfacear diretamente sensores em ponte para aplicações de medição de carga pois conta com um circuito multiplexador de entrada que seleciona entre dois canais diferenciais A e B sendo que cada canal diferencial pode ser conectado em até duas células de carga A com A e B com B cada qual ligado na saída de uma célula de carga em meia ponte conforme a figura abaixo extraída do datasheet do componente Fonte Autor Figura 54 Esquematização do HX711 Especificações o Tensão de operação 48 a 55V DC o Corrente de operação 16mA o Temperatura de operação 20 a 85C o Interface SPI o Dimensões 29 x 17 x 4mm sem os pinos O módulo HX711 para conversão analógica digital e amplificação do sinal obtido seguirá a pinagem fornecida pela folha de dados do seu fabricante conforme indicação pelo esquema abaixo Fonte Autor Figura 55 Esquema de conexão do módulo HX711 Conexão da Célula de Carga com o HX711 A célula de carga permite uma saída de 1mVkg por este motivo a conexão com o módulo HX711 é necessária pois o sinal obtido deverá ser amplificado Este módulo além do amplificador possui um conversor AD de 24 bits que representa uma resolução com 16777216 possíveis valores medidos É importante ressaltar que para 1 2 ou 4 células de carga há uma conexão diferente que deve ser observada considerando conforme esquemas abaixo o Conexão com uma célula de carga Fonte Autor Figura 56 Conexão do HX711 com uma célula de carga o Conexão com duas células de carga Fonte Autor Figura 57 Conexão do HX711 com 2 células de carga o Conexão com quatro células de carga Fonte Autor Figura 58 Conexão do HX711 com quatro células de carga Display de sete segmentos O display é formado pelo arranjo de LEDs diodos emissores de luz em um invólucro apropriado acessíveis individualmente que formam os segmentos cada LED é um segmento que podem ser controlados acesos ou apagados de modo a formar o caractere desejado Fonte Autor Figura 59 Disposição dos LED por segmento no display A partir disto é possível formar os caracteres decimais de 0 a 9 hexadecimais de A à F Como mostra a figura abaixo exemplificando os três displays a serem usados no Dispositivo de Medição Esta contextualização é importante para justificar o modo de visualização pois o display com três dígitos permite compor de 000 a 100 com uma etiqueta máscara indicando o sinal de assim como outras informações que forem pertinentes Tabela 52 Pinagem do display de três dígitos PINO FUNÇÃO 1 Segmento E 2 Segmento D 3 Ponto Decimal DP 4 Segmento C 5 Segmento G 6 Não utilizado 7 Segmento B 8 Dígito 3 9 Dígito 2 10 Segmento F 11 Segmento A 12 Dígito 1 Fonte Autor Fonte Autor Figura 510 Displays de 7 segmentos com três dígitos 52 Exemplos de programação Serão propostos quatro projetos utilizando a placa Arduino em cada projeto serão utilizadas diferentes partes da placa Os códigos desenvolvidos deverão ser criados e testados utilizando o software gratuito IDE Arduino Projeto 1 Leitura de entrada e acionamento de saída digital No primeiro projeto devese conectar um botão e um LED em duas portas digitais do Arduino Quando o botão for acionado o Arduino deve ligar o LED Este projeto tem como objetivo praticar o uso de portas digitais como input e output Segue o código que deve ser desenvolvido para o projeto int led2 Define a porta digital 2 como led int botao3 Define a porta digital 3 como botao int botaoacionado0 Cria a variável botaoacionado void setup pinModeled OUTPUT Define a porta led como um output pinModebotao INPUT Define a porta botao como um input void loop botaoacionadodigitalReadbotao Define a variável botaoacionado de acordo com o estado da porta botao if botaoacionadoHIGH Se a variável botãoacionado for HIGH execute digitalWriteled HIGH Define a porta led como HIGH Else Se a variável botãoacionado for LOW execute digitalWriteledLOW Define a porta led como LOW Projeto 2 Leitura de porta analógica com monitor serial No segundo projeto devese conectar um potenciômetro em uma porta analógica do Arduino o Arduino deve mostrar no monitor serial o valor coletado pela porta analógica Este projeto tem como objetivo praticar o uso de portas analógicas Segue o código que deve ser desenvolvido para o projeto int potA0 Define a porta analógica 0 como pot int S10 Cria a variável S1 void setup Serialbegin9600 Inicia a comunicação serial com um baudrate de 9600 void loop S1analogReadpot Lê a porta analógica pot SerialprintlnS1 Envia pela comunicação serial o valor de S1 Projeto 3 Leitura de entrada analógica com acionamento de saída No terceiro projeto devese conectar um potenciômetro em uma porta analógica e um LED na porta digital do Arduino o Arduino deve acender o LED quando o potenciômetro chega na metade do seu valor Este projeto tem como objetivo praticar o uso de portas analógicas em conjunto com as portas digitais Segue o código que deve ser desenvolvido para o projeto int led2 Define a porta digital 2 como led int potA0 Define a porta analógica 0 como pot int S10 Cria a variavel S1 void setup Serialbegin9600 Inicia a comunicação serial com um baudrate de 9600 pinModeledOUTPUT Define a porta led como um output void loop S1analogReadpot Lê a porta analógica pot SerialprintlnS1 Envia pela comunicação serial o valor de S1 ifS110242 Se o valor de S1 for maior do que a metade de 1024 onde 1024 é o maior valor possível para a porta analógica execute digitalWriteledHIGH Define a porta led como HIGH Else Se o valor for menor do que a metade do valor máximo possível digitalWriteledLOW Define a porta led como LOW Projeto 4 Calibração de célula de carga com ADC É importante que o dispositivo de célula de carga tenha um ajuste que permita a calibração neste caso o ideal é que seja realizado um ajuste em função do lote adquirido de células de carga e componentes eletrônicos portanto se faz necessária a previsão de uma calibração via software para que os valores lidos não tenham desvios ou seja durante os testes após a montagem deverão ser identificados os coeficientes e estes devem ser inseridos durante a gravação do microcontrolador Esta calibração permite que seja realizada uma interpretação correta entre a conversão do ADC e a leitura das células de carga sendo os coeficientes definidos por meio de uma expressão matemática que descreve o sistema linearizado Tal expressão é obtida pela equação da reta após os ensaios com o lote de amostragem que permitirá obter em laboratório os valores de massa versus o sinal obtido Não se pode equivocadamente confundir calibração com ajuste pois a calibração de processo irá ocorrer sempre que for corrigido por exemplo as taras de balanças enquanto neste caso a calibração representa o ajuste na programação para a leitura dos sinais pelo ADC Considerando que o elemento resistivo que compõe a célula de carga especificamente os strain gauges possuem uma elevada linearidade em sua resposta é possível considerar como uma equação da reta ou seja uma expressão linearizada para a resposta Todavia não se deve ter isso como verdade absoluta dado que é aplicável para a célula de carga utilizada neste projeto e que para outros modelos há a possibilidade de uma variação em equação minimamente de segundo grau Para a definição dos coeficientes lineares e angulares associados à linearização é imprescindível que sejam elaborados no processo de montagem e testes os procedimentos de testes em laboratório O gráfico de referência utilizado será o da reta portanto é possível definir os coeficientes e variáveis como o contaadc variável que irá receber os valores lidos pelo ADC o coeflin coeficiente linear o coefang coeficiente angular O coeficiente angular é obtido matematicamente por meio da divisão entre as variações da massa pela leitura do ADC neste caso pode ser representado por 𝒄𝒐𝒆𝒇𝒂𝒏𝒈 𝒎𝒇 𝒎𝒊 𝒄𝒐𝒏𝒕𝒂𝒂𝒅𝒄𝒇 𝒄𝒐𝒏𝒕𝒂𝒂𝒅𝒄𝒊 Em que mf massa final mi massa inicial contaadcf leitura do ADC para a massa final Para determinar o coeficiente linear consideramos que a variação do eixo das coordenadas e do eixo das abcissas tenha ao menos os valores iniciais ou finais definidos e conhecidos neste caso podemos adotar os valores iniciais antes de qualquer variação de carga portanto 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑥 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑦 𝑚𝑖 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑥 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑦 𝑚𝑖 𝑦 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑥 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑚𝑖 𝑐𝑜𝑒𝑓𝑙𝑖𝑛 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐𝑖 𝑚𝑖 Considerando o coeficiente linear coeflin e adotando lemassa para a leitura corrigida e contaadc para a leitura do ADC a equação resultante será 𝑙𝑒𝑚𝑎𝑠𝑠𝑎 𝑐𝑜𝑒𝑓𝑎𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑎𝑑𝑐 𝑐𝑜𝑒𝑓𝑙𝑖𝑛 Rotina para calibração com o HX711 include HX711h define DOUT 2 define CLK 3 HX711 peso instancia Balança HX711 float calibrationfactor 34730 fator de calibração para teste inicial void setup Serialbegin9600 pesobeginDOUT CLK inicializa a balança Serialprintln SerialprintlnCalibracao da Balança pesosetscale configura a escala da Balança zerapeso zera a Balança void zerapeso Serialprintln pesotare zera a Balança SerialprintlnZerando a Balança void loop pesosetscalecalibrationfactor ajusta fator de calibração SerialprintPeso imprime no monitor serial Serialprintpesogetunits 3 imprime peso da balança com 3 casas decimais Serialprint kg Serialprint Fator de Calibração imprime no monitor serial Serialprintlncalibrationfactor imprime fator de calibração delay500 if Serialavailable reconhece letra para ajuste do fator de calibração char temp Serialread if temp temp a a aumenta 10 calibrationfactor 10 else if temp temp z z diminui 10 calibrationfactor 10 else if temp s s aumenta 100 calibrationfactor 100 else if temp x x diminui 100 calibrationfactor 100 else if temp d d aumenta 1000 calibrationfactor 1000 else if temp c c diminui 1000 calibrationfactor 1000 else if temp f f aumenta 10000 calibrationfactor 10000 else if temp v v dimuni 10000 calibrationfactor 10000 else if temp t zerapeso t zera a Balança 53 Simulação em ambiente virtual Para simular os projetos propostos será utilizado o software online gratuito Tinkercad O Tinkercad é uma ferramenta online de design de modelos 3D em CAD e de simulação de circuitos elétricos analógicos e digitais desenvolvida pela Autodesk Projeto 1 Leitura de entrada e acionamento de saída digital Para simular este projeto devem ser usados os seguintes componentes 1 Arduino uno 2 Resistores de 1KΩ 1 Botão 1 LED O circuito deve ser montado da seguinte forma Fonte Autor Figura 511 Simulação do projeto um O código criado deve ser inserido no campo código na opção Texto Ao iniciar a simulação o LED deve ascender quando o botão é pressionado Projeto 2 Leitura de porta analógica com monitor serial Para simular este projeto devem ser usados os seguintes componentes 1 Arduino uno 1 Potenciômetro O circuito deve ser montado da seguinte forma Fonte Autor Figura 512 Simulação do projeto 2 O código criado deve ser inserido no campo código na opção Texto Ao iniciar a simulação no campo código na opção monitor serial o Arduino deve apresentar o valor lido pela porta analógica A0 Projeto 3 Leitura de entrada analógica com acionamento de saída Para simular este projeto devem ser usados os seguintes componentes 1 Arduino uno 1 Potenciômetro 1 LED 1 Resistor de 1KΩ O circuito deve ser montado da seguinte forma Fonte Autor Figura 513 Simulação do projeto 3 O código criado deve ser inserido no campo código na opção Texto Ao iniciar a simulação o LED deve apagar quando o potenciômetro passa do meio e se posiciona no lado direito Quando o potenciômetro fica no lado esquerdo a LED deve acender Se o monitor serial for acessado durante a simulação será possível ver o valor do potenciômetro Projeto 4 Calibração de célula de carga com ADC o Pinagem e esquema de conexão entre HX711 e o ESP826612E Fonte Autor Figura 514 Esquemático de conexão célula de carga HX711 ESP826612E o Pinagem e esquema de conexão entre o Display e o ESP826612E Fonte Autor Figura 515 Esquemático de conexão Display 7 segmentos com 3 dígitos ESP8266 12E Entre a conexão dos pinos 18 19 e 20 e os com os terminais que comandam cada dígito poderá ser inserido um resistor de 1kΩ para proteção contra tensão Conclusão Caro estudante neste bloco você visualizou as características dos componentes utilizados nos projetos Os conhecimentos de programação das portas digitais e analógicas foram colocados em prática através de três projetos Por fim esses projetos foram testados por um simulador online Bons estudos e até a próxima Bibliografia Consultada MATTEDE H O que é um LED Mundo da Elétrica Disponível em httpswwwmundodaeletricacombroqueeumled Acesso 06 jan 2022 POTENCIÔMETRO o que é para que serve tipos aplicações e como funciona Como fazer as coisas Disponível em httpwwwcomofazerascoisascombrpotenciometrooqueeparaqueservee comofuncionahtml Acesso 06 jan 2022 6 PROJETO COM MICROCONTROLADORES II Olá estudante Neste último bloco será proposto um projeto utilizando a placa Arduino onde um botão e um potenciômetro deverão controlar a rotação de um motor e apresentar os seus valores em um display LCD Vamos lá 61 Interface digital e analógica Iremos propor um projeto onde uma placa Arduino deve controlar a rotação de um motor Nesse projeto um botão irá controlar quando o motor será acionado e um potenciômetro deve controlar a velocidade de rotação do motor Além disso o Arduino deve se comunicar com um display LCD que deverá mostrar se o motor está ligado ou desligado e o valor do PWM utilizado no motor O projeto deverá ser testado utilizando o software online gratuito Tinkercad Para o projeto serão necessários os seguintes componentes 1 Arduino Uno 1 Motor 1 Botão 1 Potenciômetro 1 Resistor de 1KΩ 1 Resistor de 220Ω 1 Display LCD O projeto deverá ser montado da seguinte forma Fonte Autor Figura 61 Simulação do projeto de controle de motor Segue o código que deve ser desenvolvido para o projeto includeLiquidCrystalh Inclui a biblioteca utilizada pelo display LiquidCrystal lcd12 11 5 4 3 2 Define os pinos utilizados pelo display int botao7 Define a porta digital 7 como botao int potA0 Define a porta analógica 0 como pot int PWMPin 6 Define a porta digital 6 como PWMPin float PWM0 Cria a variável PWM int Ligado0 Cria a variável Ligado void setup lcdbegin16 2 Inicia o display pinModebotao INPUT Define a porta botao como um input Define o pino botão como input void loop ifdigitalReadbotaoHIGH Se o botão estiver sendo acionado execute PWM analogReadpot4 lê o pino de entrada analógica e converte o resultado em um valor que pode ser usado pelo PWM Ligado1 else Se o botão não estiver pressionado execute PWM 0 Ligado0 analogWritePWMPin PWM envia o valor do PWM pelo pino PWMpin lcdsetCursor00 Move o cursor do display para a posição 00 ifLigado1 Se o botão estiver acionado execute lcdprintLigado Escreve no display a palavra Ligado else Se o botão não estiver pressionado execute lcdprintDesligado Escreve no display a palavra Desligado lcdsetCursor01 Move o cursor do display para a posição 01 lcdprintPWM Escreve no display a palavra PWM lcdprintPWM255100 Escreve no display o valor do PWM convertido para porcentagem lcdprint Escreve no display a palavra Ao iniciar a simulação o motor deverá girar apenas enquanto o botão estiver pressionado A velocidade do motor deve também mudar de acordo com posição do potenciômetro Por fim o display deve mostrar quando o motor está ligado ou desligado e também a velocidade do PWM em porcentagem 62 IHM com Display e Teclado HM é a sigla para Interface Homem Máquina A interface homemmáquina é um software ou componente que é utilizado em ampla escala nas indústrias como forma de facilitar a automação industrial A IHM permite que o usuário as máquinas e as plantas de produção se comuniquem de uma forma muito eficiente Ela traduz uma imensa quantidade de dados bem complexos tornandoos mais descomplicados e fornecendo ao operador ou operadora a possibilidade de comandar as máquinas e controlar toda a produção remotamente Ela basicamente é uma tela de touch ou não que oferece diversas ferramentas como por exemplo Acompanhar o tempo das produções Monitorar processos Visualizar tendências tags e dados Monitorar entradas Traduzir dados Revisar processos Monitorar Saídas Dar diagnóstico de problemas Supervisionar KPIs Como a IHM é uma forma de facilitar a interação dos operadores com as máquinas ela precisa que alguns processos sejam feitos para funcionar No setor industrial a combinação mais vista é o uso da IHM juntamente com o CLP que é o Controlador Lógico Programável A IHM funciona de maneira semelhante ao computador de uso comum pois ela reúne programações e processos antes feitos manualmente e os exibe na tela Um exemplo disso são os caixas eletrônicos ou até mesmo um processo de impressão onde não é feita a programação que o computador utiliza para imprimir o seu arquivo e sim a interação com ícones préprogramados que fornecem o mesmo resultado Da mesma forma funciona a IHM Antigamente o controle dos sistemas e máquinas era feito manualmente através de painéis com botoeiras chaves ou sinalizadores LEDs Porém com a chegada do CLP e da IHM esse processo está mais automatizado Isso porque a IHM reúne todos os processos que o CLP realiza e envia para as máquinas exibindoos na tela Para conseguir simplificar a interface a IHM precisa anteriormente de uma programação comum assim como os computadores de uso comum que são configurados antes de começarem a realizar as suas funções No projeto proposto o IHM seria o botão o potenciômetro e o display Com o botão e o potenciômetro é possível controlar a rotação do motor sem a necessidade de reprogramálo e com o display é possível obter dados dos comportamentos do motor 63 Interfaces para chaveamento de carga e controle motores No caso dos motores a velocidade de giro RPM pode ser controlada variando sua tensão de alimentação Além disso o RPM é diretamente proporcional à tensão aplicada Portanto variandose a tensão média de alimentação do motor variase o RPM do mesmo Isso significa que Duty cycle de 0 tensão média igual a 0V logo o motor fica parado Duty cycle de 50 tensão média igual a 50 da tensão de alimentação do motor logo este girará com RPM igual a metade de sua rotação máxima Duty cycle de 100 tensão média igual a tensão de alimentação do motor logo este girará com RPM igual a sua rotação máxima A programação do Arduino já possui uma função nativa para gerar um sinal PWM em alguns dos pinos aqueles identificados com um símboloidentificação Isso torna muito mais fácil o desenvolvimento dos projetos que envolvem PWM permitindo fácil utilização do mesmo com pouquíssimo custo em termos computacionais uso de memória Flash RAM e processamento e escrita de códigosfonte mais limpos e curtos Tal função é chamada de analogWrite e recebe dois parâmetros conforme abaixo analogWritePINO VALORANALOGICO Onde PINO número do pino do Arduino no qual se deseja que o sinal PWM seja gerado Conforme dito anteriormente somente pinos com símboloidentificação podem gerar sinais PWM VALORANALOGICO valor de 0 a 255 proporcional ao Duty Cycle a ser gerado Ou seja para Duty Cycle de 100 devese utilizar valor 255 já para Duty Cycle 20 devese utilizar o valor 51 e assim por diante No projeto proposto o sinal de PWM gerado pelo arduino é controlado pela posição do potenciômetro Quando ele está no meio do seu percurso o PWM possui um sinal de 50 ou seja o motor gira na metade da velocidade Quando está no fim do percurso o PWM possui um sinal de 100 ou seja o motor gira na velocidade máxima O motor utilizado no projeto é um modelo pequeno que pode ser acionado pelo arduino É possível ligar motores maiores e mais potentes utilizando o mesmo processo entretanto pode ser necessário o uso de drivers de controle capazes de lidar com fontes de alimentação mais potentes do que o Arduino Nesse caso o arduino funciona apenas como um controlador Fonte Bertoleti 2019 Disponível em httpsbitly3MArWH8 Figura 62 Esquema de ligação de um motor com um arduino e um drive de controle Conclusão Caro estudante neste bloco foi desenvolvido um projeto em que um Arduino controla a rotação de um motor Desenvolvemos também uma IHM utilizando um botão potenciômetro e um display que auxiliam no controle do motor Por fim foi utilizado o conceito de PWM para controlar a velocidade de rotação de um motor Dessa forma chegamos ao final da disciplina de Microcontroladores confira as Bibliografias Consultadas e continue se aprimorando Bons estudos Bibliografia Consultada BERTOLETI P Controle de velocidade de motor DC com PWM no Arduino UNO Filipeflop 8 jan 2019 Disponível em httpswwwfilipeflopcomblogcontrole motordcpwmarduinouno Acesso 07 jan 2022 MATTEDE H IHM O que é e para que serve Mundo da Elétrica Displonível em httpswwwmundodaeletricacombrihmoqueeparaqueserve Acesso 07 jan 2022