





















































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
tutorias de arduino no proteus
Tipologia: Manuais, Projetos, Pesquisas
1 / 61
Esta página não é visível na pré-visualização
Não perca as partes importantes!
3 Manual de implementação e simulação de projetos utilizando^ Arduino UNO^ e Proteus/ISIS
INTRODUÇÃO
O Proteus é um software criado pela empresa Labcenter Eletronics, este proporciona ao usuário a possibilidade de montar circuitos eletrônicos, realizar simulações e ainda criar placas de circuito impresso. Um dos componentes do Proteus é o ambiente de desenvolvimento ISIS que tem como função principal auxiliar o desenvolvedor de sistemas embarcados na verificação da parte eletrônica referente aos circuitos dos mesmos, além de possibilitar a realização de simulações (como dito anteriormente) antes de elaborar o hardware de um determinado projeto, podendo proporcionar portanto uma redução no tempo de desenvolvimento e até mesmo do custo envolvido.
Além dos motivos citados anteriormente, para muitas pessoas não é possível desenvolver todas as ideias que surgem na cabeça por vários motivos, um deles pode ser a falta de acesso aos materiais e equipamentos para o criação de protótipos e realização de testes. Por outro lado, existem ferramentas criadas para justamente suprir esta carência, entre elas está o Proteus/ISIS , este conta com diversas ferramentas que estão presentes em laboratórios de eletrônica como osciloscópio, gerador de sinais, voltímetro, amperímetro, além de uma infinidade de componentes como resistores, capacitores, transistores, motores, microcontroladores e outros (muitos outros).
Este documento visa ao proporcionar o aprendizado básico para a manipulação deste software bem como uma maneira bastante didática e simples de como realizar pequenos projetos envolvendo a utilização do Arduino UNO para aqueles que desejam aprender um pouco sobre o assunto e no momento não possuem conhecimento algum sobre o mesmo_._ Obviamente existem limitações no que diz respeito à implementação de projetos utilizando o Proteus/ISIS (no decorrer dos projetos apresentados serão discutidas algumas limitações caso estas sejam importantes no momento), no entanto, ainda é possível realizar bastante coisa.
Num primeiro momento apresenta-se um pouco da interface do Proteus/ISIS e como fazer para selecionar componentes, instalar bibliotecas de componentes, definir propriedades de componentes entre outros.
Manipulação de leds 4
Posteriormente será mostrado como fazer para importar o código desenvolvido para dentro do Proteus/ISIS e simula-lo em um Arduino UNO virtual. Serão desenvolvidos também vários projetos básicos organizados para que exista uma certa progressão no conhecimento adquirido para criação dos mesmos, facilitando portanto, o aprendizado de maneira bastante simples. Neste documento encontram-se projetos envolvendo os leds como elementos principais. Esta escolha é justificada pelo fato de que estes são os componentes mais básicos para iniciar os estudos à cerca do desenvolvimento de códigos para microcontroladores em geral. Posteriormente serão adicionados novos projetos envolvendo outros elementos.
Meu nome é Daniel Madeira Bueno, sou engenheiro eletricista graduado pela Universidade Federal do Espírito Santo. Gosto bastante de questões que envolvem sistemas embarcados porém não sou profissional no assunto, portanto organizei este conteúdo da forma que geralmente eu consigo aprender melhor e resolvi compartilhar. Se possível peço que caso existam sugestões, pontos para corrigir ou qualquer outra coisa, entre em contato comigo, ficarei extremamente agradecido em poder aprimorar meu conhecimento e ajudar os outros da mesma forma.
Meu e-mail é daniel_m_bueno@hotmail.com
Manipulação de leds 6
Figura 3 – Placa virtual do Arduino UNO – SIMULINO UNO
Para adicionar a placa do Arduino UNO que será utilizada deve-se clicar no ícone relativo aos componentes contido na barra de ferramentas localizada originalmente no canto esquerdo da tela. Após este procedimento, clica-se no botão “ P ” para que seja aberta a lista de busca de componentes, estes podem ser localizados através do nome ou por categorias onde são agrupados. Utilizando a biblioteca citada, basta procurar por “Arduino (Blog Embarcado)” e escolher o “ SIMULINO UNO ”.
Figura 4 – Adicionando componentes no Proteus
2 1
1 3 1
4 1
7 Manual de implementação e simulação de projetos utilizando^ Arduino UNO^ e Proteus/ISIS
A IDE do Arduino será utilizada para criar os programas e consequentemente gerar um arquivo com a extensão HEX necessário para a simulação de circuitos com o microcontrolador presente na placa do Arduino UNO. Assim que a IDE for iniciada deve-se acessar o item “Preferências/ Preferences ” através do menu “Arquivo/ File ” localizado na barra de ferramentas e marcar a caixa onde está escrito “compilação/ compilation ”.
Figura 5 – Alteração na IDE do Arduino
Além desta alteração deve-se também acessar o item “Placa/ Board ” através do menu “Ferramentas/ Tools ” e selecionar a opção referente ao Arduino UNO. Neste ponto a IDE está configurada para que seja possível realizar as simulações, bastando simplesmente importar o arquivo com extensão hex gerado (este passo será explicado após o primeiro código ser desenvolvido).
9 Manual de implementação e simulação de projetos utilizando^ Arduino UNO^ e Proteus/ISIS
1 ACIONAMENTOS BÁSICOS DE LEDS
1.1.1 Objetivo
Assim como em outras linguagens de programação utilizadas para diversas finalidades, temos igualmente que propor um primeiro projeto básico análogo ao conhecido Hello World. Este consiste em realizar o acionamento de um led externo ligado à um dos pinos de I/O digitais existentes na placa do Arduino UNO ao invés de utilizar o led já embutido no pino 13 da mesma. Além de desenvolver de forma clara este simples projeto, espera-se proporcionar o aprendizado também das funções setup() , pinMode() , digitalWrite() bem como das diretivas #define e algumas instruções de como manipular os elementos no Proteus/ISIS e adicionar o arquivo .hex ao microcontrolador para realizar a simulação.
1.1.2 Hardware utilizado na simulação
Figura 6 – Hardware utilizado no item 1. Como ressaltado anteriormente, na realização deste projeto será utilizado o SIMULINO UNO , um ambiente de simulação do Arduino UNO no Proteus/ISIS. Este permite implementações de diversos tipos de projetos devido à simplicidade que traz através da sua fácil manipulação.
Além do elemento citado anteriormente, será utilizado também um led , que pode ser adicionado ao circuito através do mesmo procedimento descrito para o Arduino UNO na parte de conhecimentos básicos. Neste projeto optou-se por um led verde (o qual pode ser selecionado através do nome LED-GREEN no campo
Manipulação de leds 10
de pesquisa), cuja tensão de funcionamento é 2,2 volts e a corrente máxima que pode ser percorrida através dele são 10mA. Observe que estes e outros parâmetros podem ser alterados por meio da configuração das propriedades do elemento (estas podem ser acessadas com um duplo clique sobre o elemento), conforme a figura a seguir
Figura 7 - janela de propriedades do led
Por último, será utilizado um resistor (que pode ser localizado através do nome RES no campo de pesquisa) responsável por limitar a corrente que irá passar pelo led. De acordo com o datasheet , sabe-se que as saídas digitais do Arduino UNO disponibilizam em suas saídas, uma tensão de 5 volts e um valor de até 40mA de corrente. Sendo assim para assegurar as condições de funcionamento do led utilizado (de acordo com os quesitos definidos na sua janela de propriedades), deve-se escolher um determinado valor de resistência para o resistor em questão e registrá-lo nas propriedades do componente, assim como feito para o led. O cálculo do valor da resistência é dado da seguinte maneira:
𝑅 = 𝑉𝑎𝑟𝑑 𝐼𝑚^ −á^ 𝑥𝑉𝑙𝑒𝑑 = 105 −𝑥 102 ,^2 − 3 = 280Ω
Manipulação de leds 12
1.1.4 Desenvolvimento do código
No decorrer deste tópico serão explicados todos os passos utilizados para o desenvolvimento do projeto, isto é, o código será comentado de modo que todo conhecimento aplicado seja facilmente compreendido. As trechos demarcados em vermelho contém elementos que não foram citados anteriormente ou são partes de bastante relevância para o funcionamento do programa. O código inteiro está disponibilizado no apêndice A, localizado no final deste documento.
Primeiramente começamos o código utilizando a diretiva #define que por sua vez é um componente muito utilizado em C, este permite ao programador dar um nome à uma constante antes do programa ser compilado. Neste programa atribuímos o valor 10 à palavra LED pois conforme o esquemático mostrado, o led em questão foi ligado ao pino 10 (uma das funções deste é atuar como pino de I/O digital) do Arduino UNO , desta forma podemos realizar todo o desenvolvimento da programação nos referindo ao pino 10 através do nome LED. Uma vantagem do uso deste recurso é que caso queiramos trocar o led de pino, basta alterar o valor dado na diretiva #define sem necessidade de alterar o código.
#define LED 10
Um código para o Arduino UNO deve ter duas funções principais, são elas: a função setup() e a função loop() , caso contrário o código não conseguirá ser compilado. Nesta primeira etapa usaremos somente a função setup() , pois ela é utilizada somente uma vez e apenas no início do programa (para inicializar variáveis, modos de operação dos pinos, funções específicas de determinadas bibliotecas, etc...). A função loop() será apresentada no item 1.2.
void setup() { pinMode (LED, OUTPUT); digitalWrite(LED, HIGH); }
A função setup() neste momento possuirá duas sentenças necessárias para realização do objetivo deste primeiro item. A primeira delas é dada através da função pinMode( ) , utilizada para definir o modo de operação de um determinado pino, como entrada ou saída. O primeiro argumento da função corresponde ao pino que se quer determinar o modo de operação, neste caso será o pino 10 (cujo nome atribuído anteriormente é LED), enquanto o seguindo argumento diz respeito ao modo de operação do pino citado, para esta etapa, saída ( OUTPUT ).
13 Manual de implementação e simulação de projetos utilizando^ Arduino UNO^ e Proteus/ISIS
A segunda sentença presente na função setup() é dada pela função digitalWrite() , utilizada para determinar se uma tal saída deve permanecer em nível alto ou nível baixo até que outro elemento do programa altere o mesmo. O primeiro argumento desta função corresponde ao pino de saída digital que se deseja manipular (novamente o pino que queremos é o 10), ao passo que o segundo argumento está relacionado de fato ao nível desejado na saída. Como queremos acender um led devemos programar para que a saída disponibilize nível alto, proporcionando cerca 5 volts em seu terminal, fazendo com que o led seja acionado.
void loop() { }
A função loop() será discutida no item 1.2 como citado anteriormente.
1.1.5 Importando o arquivo .hex
Após realizar o desenvolvimento do código utilizando a IDE disponibilizada para o Arduino, deve-se clicar para realizar o upload.
Figura 10 – Barra de ferramentas da IDE do Arduino Obviamente ocorrerá um erro, em virtude de a placa do Arduino UNO não poder ser localizada pela IDE, porém mesmo assim o código será compilado e o arquivo. hex será gerado e estará armazenado no computador como arquivo temporário cujo endereço encontra-se no relatório gerado após a compilação.
Figura 11 – Endereço do arquivo.hex
Por último basta acessar as propriedades da placa virtual do Arduino UNO que foi adicionada no Proteus/ISIS e no campo colar o endereço citado (ou o endereço no qual foi colocado o arquivo. hex, caso este tenha sido retirado do seu local de origem) no campo Program File.
15 Manual de implementação e simulação de projetos utilizando^ Arduino UNO^ e Proteus/ISIS
1.2.1 Objetivo
Dando prosseguimento ao projeto realizado no item 1.1, esta aplicação consiste em realizar o acionamento do mesmo led externo ligado à um dos pinos digitais existentes na placa do Arduino UNO, porém o mesmo deve ser desligado depois de um tempo pré-estabelecido. Nesta etapa, espera-se encadear o aprendizado adquirido no item anterior com o conhecimento que será demonstrado nesta seção, o qual consiste no entendimento das funções loop() e delay().
1.2.2 Hardware utilizado na simulação
O hardware utilizado na simulação é o mesmo do item 1.1.
1.2.3 Diagrama esquemático das ligações
O diagrama esquemático das ligações é o mesmo do item 1.1.
1.2.4 Desenvolvimento do código
No decorrer deste tópico serão explicados todos os passos utilizados para o desenvolvimento do projeto, isto é, o código será comentado de modo que todo conhecimento aplicado seja facilmente compreendido. As trechos demarcados em vermelho contém elementos que não foram citados anteriormente ou são partes de bastante relevância para o funcionamento do programa. O código inteiro está disponibilizado no apêndice A, localizado no final deste documento.
Primeiramente começamos o código da mesma maneira do item anterior utilizando a diretiva #define para podermos nos referir ao pino 10 utilizando a palavra LED.
#define LED 10
Em seguida determina-se o modo de operação do pino 10 através da função pinMode() existente dentro da função setup().
Manipulação de leds 16
void setup(){ pinMode(LED, OUTPUT); }
A próxima etapa deste item é fazer com que o led funcione como uma espécie de pisca-pisca, sendo ligado e desligado automaticamente e permanecendo em ambos os estados com tempos pré-estabelecidos.
Conforme dito anteriormente, neste momento utilizaremos a função loop(). Tudo que está localizado dentro desta função é executado continuamente, linha por linha desde o início até o final, onde então o código volta a ser executado a partir do seu começo. Este ciclo se repete até o momento em que o Arduino UNO é desligado ou resetado.
Dentro da função loop() existem as funções digitalWrite() (já demonstrada no item anterior) e a função delay() , utilizada para que o Arduino UNO espere um determinado tempo para poder continuar a execução do código. O tempo em questão é passado como parâmetro da função e expresso em milissegundos (neste caso temos 1000 milissegundos ou 1 segundo). Sendo assim, com o auxílio desta função inicia-se o programa acionando o led , espera-se um segundo e em seguida desliga-se o led e novamente aguarda-se um segundo para então repetir todo o processo.
void loop() { digitalWrite(LED, HIGH); delay(1000); digitalWrite(LED, LOW); delay(1000); }
Manipulação de leds 18
1.3.4 Desenvolvimento do código
No decorrer deste tópico serão explicados todos os passos utilizados para o desenvolvimento do projeto, isto é, o código será comentado de modo que todo conhecimento aplicado seja facilmente compreendido. As trechos demarcados em vermelho contém elementos que não foram citados anteriormente ou são partes de bastante relevância para o funcionamento do programa. O código inteiro está disponibilizado no apêndice A, localizado no final deste documento.
Primeiramente utiliza-se a diretiva #define para associarmos os elementos aos seus respectivos pinos, ou seja, relaciona-se o led (LED) ao pino 10 o botão (BOT) ao pino 11.
#define LED 10 #define BOT 11
Em seguida é apresentada a primeira declaração de variável dentre os projetos já desenvolvidos, neste caso, foi declarada uma variável do tipo booleana, ou seja, que pode assumir os estados “0” e “1”. Como o próprio nome já diz, esta variável será utilizada para armazenar uma informação referente ao estado do botão. Conforme o diagrama esquemático, percebe-se que ao pressionar o botão, o nível lógico no pino ao qual está conectado o mesmo, estará em nível alto, enquanto o resto do tempo este permanecerá em nível baixo.
bool estadoBOT;
Da mesma forma que declaramos anteriormente o pino 10 como saída digital, desta vez programa-se o pino 11 como entrada digital através da função pinMode() já utilizada, porém desta vez o segundo argumento da função ( INPUT ) determina o modo de operação do terminal responsável por interagir com o botão.
void setup() {
pinMode(LED, OUTPUT); pinMode(BOT, INPUT);
}
Num primeiro momento é realizada a leitura do pino onde se encontra o botão através da função digitalRead() e esta informação é armazenada na variável estadoBOT. O ponto principal deste programa está na verificação do estado do botão, isto é, se houve aperto ou não. Esta parte é feita através do uso da
19 Manual de implementação e simulação de projetos utilizando^ Arduino UNO^ e Proteus/ISIS
função condicional if() cujo argumento é a sentença que se deseja testar, caso este seja verdadeiro, serão cumpridas as sentenças internas à função (neste caso, acender o led e aguardar dois segundos).No entanto caso a sentença seja falsa o led deve ser apagado.
void loop() { estadoBOT = digitalRead(BOT);
if (estadoBOT == 1) { digitalWrite (LED, HIGH); delay (2000); digitalWrite (LED,LOW); } }