Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
relat?rio.pdf Laboratório de Controle e Servomecanismo Prática 4: Familiarização do uso da placa Arduino. HENRIQUE CRAVEIRO D’ANTONIO (RA:791375) MURILLO JOSÉ SUDAHIA GODOY (RA:789974) ANDRÉ LUÍS CORELIANO (RA:745948) TURMA C 26/07/2023 1 Descrição do experimento A prática 4 serviu para aprender sobre o microcontrolador Arduino e suas especifici- dades. Também foi possı́vel aprender sobre o software Arduino IDE e como implemenar códigos no microcontrolador. É importante salientar que os arquivos feitos durante a aula foram enviados junto a esse relatório por meio de uma pasta .zip na plataforma ava. 2 Execução do experimento 2.1 LCD Keypad Shield 2.1.1 Código 1 O código 1 fornece o display acima no LCD. Em resumo, esse código inicializa o display LCD, imprime a mensagem ”LCD Ok!!!”na primeira linha e, em seguida, mostra o tempo decorrido em segundos na segunda linha, atualizando-o continuamente devido ao loop infinito da função loop(). 2.1.2 Código 2 1 Os códigos 2 e 3 fornecem o display acima no LCD. O código 2 é um exemplo básico de como utilizar uma biblioteca chamada ”LiquidCrystal”para controlar um dis- play LCD e um teclado matricial no Arduino. A biblioteca ”LiquidCrystal”é incluı́da no inı́cio do código. Um objeto lcd é criado usando a biblioteca ”LiquidCrystal”para contro- lar o display LCD. São definidas constantes para mapear os botões do teclado matricial 2 a valores inteiros. Uma variável keyValue é inicializada com 0. Na função setup(), é configurado o número de colunas e linhas do display LCD. Na função loop(), a leitura do teclado matricial é realizada pela função keyPadRead() (não fornecida) e o ”Menu 1”é exibido no LCD usando displayMenu1() (não fornecida). Após um atraso de 250 milisse- gundos, o loop se repete continuamente. O código 3 é uma parte de um programa que lê um teclado matricial conectado ao pino analógico 0 do Arduino, determina qual botão foi pressionado e exibe um menu simples no display LCD com a informação sobre o botão pressionado. 2.1.3 Sinal PWM a) 3 b) 4 c) Neste código, o duty cycle é inicializado com 50%. O programa lê o estado das teclas UP e DOWN e atualiza o valor do duty cycle em 5% cada vez que uma das teclas é pressionada. O valor do duty cycle é limitado entre 0% e 100%. O display LCD é atualizado com o novo valor do duty cycle sempre que ele é alterado. A função updateLCD() é responsável por atualizar o LCD com o valor atual do duty cycle. Ela 5 apaga o valor antigo, imprime o novo valor e, em seguida, exibe o sı́mbolo de porcentagem (%). O pino 9 é configurado como saı́da PWM, e o valor do duty cycle é atualizado usando a função analogWrite(), que ajusta a largura do pulso PWM proporcionalmente ao valor do duty cycle. 2.2 Porta Serial 1) 2) O código 4 lê o valor analógico presente no pino A3 do Arduino, converte- o em um valor digital e, em seguida, o imprime na porta serial para que você possa visualizar esse valor usando o Serial Monitor no Arduino IDE. Isso é útil para depuração e monitoramento de sensores ou outras entradas analógicas conectadas ao Arduino. 2.3 Base de Tempo 1) O código 6 utiliza o temporizador da biblioteca ”MsTimer2”para piscar o LED conectado ao pino 13 do Arduino em intervalos de 500 milissegundos, alternando o es- tado do LED entre ligado e desligado. Isso cria um efeito de piscar o LED a cada meio segundo. Foto do LED aceso: 6 2) O código utilizado foi: 7 Imagem do plotter: 2.4 Pós-Laboratório 1) O Arduino Mega possui uma resolução de 10 bits para suas portas analógicas. Quanto à possibilidade de alterar a resolução, em geral, a resolução analógica do Arduino é determinada pelo conversor analógico-digital (ADC) integrado no chip do Arduino. Essa resolução é fixa e não pode ser alterada diretamente. Entretanto, em alguns casos, é possı́vel usar técnicas de amplificação ou circuitos externos para aumentar a faixa de leitura analógica ou melhorar a precisão da medição, mas isso não afetará diretamente a resolução do ADC do Arduino. 2) O Arduino Mega, possui portas PWM com resolução de 16 bits. É importante notar que a resolução da porta PWM é determinada pelo hardware do Arduino e não pode ser alterada diretamente. No entanto, é possı́vel simular uma resolução maior ou realizar ajustes no ciclo de trabalho de forma mais precisa usando técnicas de modulação de largura de pulso de software (bit-banging), mas isso pode exigir mais processamento e pode não ser tão eficiente quanto usar o hardware PWM nativo. 3) No Arduino Mega a frequência padrão das portas PWM é de aproximadamente 490 Hz (ciclos por segundo). Quanto à possibilidade de alterar a frequência das portas PWM, em modelos Arduino padrão como o Mega, não é possı́vel fazer isso diretamente usando configurações de software. A frequência é definida pelo hardware do microcon- 8 trolador e do circuito PWM. 3 Avaliação dos resultados do experimento A prática ocorreu de maneira satisfatória, visto que a maioria dos códigos utilizados na implementação foram fornecidos na própria prática. 4 Análise crı́tica e discussão As dificuldades encontradas durante a execução dessa prática foram mı́nimas, já que a prática consistia em rodar códigos em arduı́no que controlavam botões, observar o comportamento do LCD Display ou de um Led. 5 Outras informações Nessa prática foi solicitado um pré-laboratório. As respostas do pré-laboratório são: 1)Arduino é uma plataforma de prototipagem eletrônica de código aberto que per- mite a criação de projetos interativos e dispositivos eletrônicos de forma acessı́vel e versátil. 2) O arduino é muito utilizado devido a sua acessibilidade, compatibilidade com hardware, aplicações variadas e prototipagem rápida. 3) Apesar de muito útil, as desvantagens do arduino estão na potência de processa- mento limitada, nas suas restrições de memória e de recursos e na falta de criptografia e segurança avançada. 4) Especificações técnicas do Microcontrolador: ATmega2560 (daı́ o nome ”MEGA 2560”), com arquitetura AVR de 8 bits: Velocidade do Clock: 16 MHz. Memória Flash: 256 KB para armazenamento do programa (bootloader ocupa uma parte desse espaço). SRAM: 8 KB de memória RAM para variáveis e dados em tempo de execução. EE- PROM: 4 KB de memória EEPROM para armazenamento não volátil de dados. Pinos de I/O: 54 pinos digitais, dos quais 15 podem ser usados como saı́das PWM (Pulse Width Modulation). Pinos de Entrada Analógica: 16 pinos analógicos para leitura de sensores analógicos. Tensão de Operação: 5V. Tensão de Alimentação: Pode ser alimentada via 9 USB (5V) ou com uma fonte externa de 7V a 12V DC. Corrente máxima por pino de I/O: 20 mA. Corrente máxima dos pinos 3.3V: 50 mA. Interfaces de Comunicação: UART, I2C e SPI para comunicação com outros dispositivos. Conexão USB: Possui um conector USB Tipo B para conexão com o computador e programação. Reset: Botão de reset para reinicialização do programa. Dimensões: Geralmente, a placa tem cerca de 101.52 mm x 53.3 mm. 5) Arduino IDE (Integrated Development Environment) é um software utilizado para programar e desenvolver projetos na plataforma Arduino. É uma ferramenta de código aberto desenvolvida para fornecer uma interface amigável para programação, compilação e carregamento de códigos em placas Arduino. 6) A configuração de pino pull-up (ou resistor pull-up) é uma funcionalidade impor- tante presente em muitas placas Arduino, que permite uma leitura mais confiável de sinais digitais em pinos configurados como entradas. A configuração de pino pull-up em um pino de entrada do Arduino ajuda a garantir leituras mais estáveis e confiáveis, evitando que os pinos fiquem flutuando e fornecendo um nı́vel lógico ”HIGH”padrão quando não há sinal externo aplicado ao pino. Isso é particularmente útil em casos em que botões ou chaves são usados como entradas, ajudando a evitar leituras indesejadas devido a ruı́dos elétricos ou outras interferências. 7) Um conversor analógico-digital (ADC) é um componente eletrônico responsável por converter uma tensão analógica em um valor digital equivalente. No Arduino MEGA, existem 16 pinos que podem ser utilizados como entradas analógicas para o ADC. Eles são identificados como A0, A1, A2, ..., A15. 8) O PWM (Pulse Width Modulation) ou Modulação por Largura de Pulso é uma técnica utilizada para controlar a potência média de um sinal digital em dispositivos eletrônicos. Essa técnica é amplamente utilizada em microcontroladores, incluindo o Arduino, para controle de motores, luminosidade de LEDs, controle de servos e outras aplicações onde é necessário controlar a intensidade ou posição de um dispositivo com base em um sinal digital. Os pinos que podem ser usados como geradores de PWM são os pinos digitais: 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 44, 45, 46, 47, 48 e 49. 9) A porta serial do Arduino é uma interface de comunicação que permite a trans- ferência de dados entre o Arduino e um computador ou outro dispositivo externo. É chamada de ”Serial”porque utiliza a comunicação serial assı́ncrona, onde os bits de dados 10 são enviados sequencialmente, um após o outro, em uma única linha de transmissão. No Arduino Mega os pinos da porta serial são o D0 (RX) e D1 (TX), além de D18 (RX1) e D19 (TX1) que oferecem uma segunda porta serial. Na maioria dos Arduinos, a porta USB está conectada à porta USB-B, também conhecida como USB tipo B, localizada na parte superior ou lateral da placa. 10) digitalRead(pin): Descrição: A função digitalRead() é usada para ler o valor di- gital de um pino especificado no Arduino. O valor retornado será HIGH (1) ou LOW (0), dependendo se o pino estiver recebendo uma tensão maior que 2.5V (HIGH) ou menor que 2.5V (LOW). digitalWrite(pin, value): Descrição: A função digitalWrite() é usada para escrever um valor digital em um pino especı́fico no Arduino. O valor pode ser HIGH (1) ou LOW (0), representando uma tensão de 5V (HIGH) ou 0V (LOW) no pino sele- cionado. analogRead(pin): Descrição: A função analogRead() é usada para ler um valor analógico de um pino especı́fico no Arduino. Ela retorna um valor inteiro entre 0 e 1023 (10 bits) que representa a tensão presente no pino analógico em uma escala de 0 a 5V. analogWrite(pin, value): Descrição: A função analogWrite() é usada para gerar um sinal PWM (Modulação por Largura de Pulso) em um pino especı́fico no Arduino. Isso per- mite controlar a intensidade de dispositivos como LEDs ou motores, variando o valor de 0 a 255. delay(ms): Descrição: A função delay() é usada para pausar a execução do pro- grama por um determinado perı́odo de tempo, medido em milissegundos (ms). millis(): Descrição: A função millis() retorna o tempo, em milissegundos, desde que o Arduino foi ligado ou resetado. É útil para criar temporizações ou controlar eventos baseados em tempo. dtostrf(value, width, decimalPlaces, buffer): Descrição: A função dtostrf() con- verte um valor float em uma sequência de caracteres e armazena no buffer especificado. É útil para formatar valores para exibição em displays ou comunicação serial. 11) Para realizar o concatenamento de strings no Arduino, é possı́vel utilizar as funções da biblioteca ”String”que já está incorporada na Arduino IDE. Essa biblioteca oferece várias funções úteis para manipulação de strings. A forma mais simples de con- catenar strings é usando o operador +. Esse operador permite concatenar objetos do tipo String com literais de string ou variáveis de caracteres (char arrays). 11 6 Referências Nessa prática não foram utilizadas referências bibliográficas. 12
Compartilhar