Você está na página 1de 19

Unidade de Ensino Médio e Técnico - etec

ETEC TAKASHI MORITA


Curso: Automação Industrial data: 30/05/2023

Disciplina: MIC Professor: Ricardo

Nome do aluno (a): Rian Victor nº 21208 Série: 3°automação - tarde


Nome do aluno (a): Roy Cesar nº 21195 Série: 3° automação-tarde

Título: MICROCONTROLADORES
1. Sumário

2. ATMEGA328 E ATMEGA328P...........................................................................................3
2.1 DESCRIÇÃO.......................................................................................................................3
2.2 VERSÕES DE DIFERENTES ENCAPSULAMENTOS.................................................3
 TQFP...................................................................................................................................3
2.3 CARACTERÍSTICAS..........................................................................................................3
3. EEPROM................................................................................................................................4
3.1 IMPORTÂNCIA...................................................................................................................4
3.2 DESCRIÇÃO.......................................................................................................................4
3.3 QUANTIDADE DE MEMÓRIA..........................................................................................4
4. TUTORIAL DE COMO USAR EEPROM...........................................................................5
4.1 CÓDIGO E INFORMAÇÕES.............................................................................................5
4.2 EXEMPLO............................................................................................................................5
5. CÓDIGOS DE EXEMPLO DE COMANDOS.....................................................................7
5.1 EEPROM.WRITE................................................................................................................7
5.2 FERROM.READ..................................................................................................................8
5.3 EEPROM WRITE................................................................................................................9
5.4 EEPROM READ................................................................................................................10
5.5 CONSELHO.......................................................................................................................11
6. DATA SHEET ATMEGA328 ou ATMEGA328P..............................................................12
6.1 VISÃO SUPERIOR DO MLF 348P.................................................................................12
6.2 MODELO DO 328P..........................................................................................................12
6.3 PORTAS DO ATMEGA 328............................................................................................13
6.4 MODELO DO 328-PU......................................................................................................13
6.5 TAMANHO DA MEMÓRIA...............................................................................................13
6,6 DIAGRAMA DE BLOCO..................................................................................................13
7. PINOS...................................................................................................................................15
7.1 DESCRIÇÃO.....................................................................................................................15
7.2 IMPORTÂNCIA DO PINO 0 E 1.....................................................................................16
7.3 PINOS PWM......................................................................................................................17
8. MELHOR SITE PARA COMPRAR COMPONENTES DE ARDUINO..........................18
9. BIBLIOGRAFIA....................................................................................................................19
2. ATMEGA328 E ATMEGA328P
2.1 DESCRIÇÃO
São microcontroladores da família de 8 bits da Atmel AVR
ATmega328p é uma versão de baixo consumo de potência.

2.2 VERSÕES DE DIFERENTES ENCAPSULAMENTOS


 PDIP
 QFN/MLF
 TQFP

2.3 CARACTERÍSTICAS
 Arquitetura Harvard com 131 instruções.
 Oscilador interno de 8 MHz.
 Suporte a oscilador externo de até 20 MHz.
 Memória de programa flash de 32 kB.
 EEPROM de 1 kB.
 2 kB de SRAM interna.
 2 Contadores/Temporizadores de 8 bits e 1 de 16 bits.
 6 canais de PWM.
 6 canais de ADC de 10 bits.
 1 interface de comunicação UART.
 1 interface de comunicação I2C.
 2 interfaces de comunicação SPI.
 Diferentes modos de economia de energia.
3. EEPROM
3.1 IMPORTÂNCIA
A EEPROM está presente em todas as versões do Arduino, mas muitas vezes
a falta de conhecimento de sua existência é contornada com a instalação de
memórias EEPROM externas ou mesmo de um cartão de memória SD de
vários gibabytes para armazenar algumas poucas variáveis ou dados.

3.2 DESCRIÇÃO
Uma EEPROM (de Electrically-Erasable Programmable Read-Only Memory) é
um tipo de memória que pode armazenar valores que serão retidos mesmo
quando a energia é desligada e pode ser programada e apagada várias vezes,
eletricamente. Pode ser lida um número ilimitado de vezes, mas só pode ser
apagada e programada um número limitado de vezes, que varia normalmente
entre 100.000 e 1 milhão.

3.3 QUANTIDADE DE MEMÓRIA


Essa quantidade varia conforme o microcontrolador instalado na placa: 1024
bytes para o ATmega328, 512 bytes no ATmega168 e ATmega8, e 4 KB (4096
bytes) sobre o ATmega1280 e ATmega2560.
4. TUTORIAL DE COMO USAR EEPROM
4.1 CÓDIGO E INFORMAÇÕES
Vamos usar a biblioteca EEPROM para ler e escrever valores na memória
EEPROM, esta biblioteca já vem instalada na IDE e existem três exemplos de
uso na aba file/Exemples/EEPROM.

Para incluir biblioteca digite no sketch:

#include <EEPROM.h>

Uma vez que a biblioteca é incluída no programa, um objeto EEPROM está


disponível para o acesso a memória. A biblioteca fornece comandos para ler e
escrever dados na memória. A biblioteca EEPROM requer que você
especifique o endereço de memória que você deseja ler ou escrever. Isto
significa que você precisa se manter a par de onde cada valor é escrito de
forma que quando você for ler o valor, acesse a partir do endereço correto.

Para escrever um valor na memória digite no sketch:

EEPROM.write(address, value);

Address: Posição da memória que será escrito, é um inteiro entre 0 e 1023


(UNO);
Value: Valor a ser armazenado inteiro entre 0 e 255 (um único byte);

4.2 EXEMPLO
Devemos montar um potenciometro na entrada 0 do arduino conforme
mostrado na figura abaixo, em seguida devemos fazer o upload do código do
sketch mostrado mais abaixo para o arduino. Este exemplo simplesmente salva
periodicamente na EEPROM os valores lidos na entrada analógica para que
possam ser acessados posteriormente.          
5. CÓDIGOS DE EXEMPLO DE COMANDOS

5.1 EEPROM.WRITE
Aviso: Todas as palavras escritas depois dos sinais “//” são apenas
informações sobre extras e detalhes sobre o que os códigos vão fazer, portanto
não são necessárias para o funcionamento do programa 

Exemplo EEPROM Write: Armazena valores lidos na entrada analógica na


EEPROM. Estes valores permanecerão guardados mesmo que a placa seja
desligada e podem ser recuperados posteriormente pelo próximo sketch

#include <EEPROM.h> // incluir a biblioteca


int addr = 0;    // endereço de escrita na memória

void setup()
{
}

void loop()
{
  // é preciso dividir val por 4 porque o range da entrada analógica
  // vai de 0 a 1023 e cada byte da EEPROM só pode guardar
  // valores compreendidos entre 0 e 255.
  int val = analogRead(0) / 4;
 
  // escreve o valor de val na EEPROM no endereço selecionado em addr.
  // este valor permanecerá guardado mesmo
  // que placa seja desligada da fonte de alimentação
  EEPROM.write(addr, val);
 
  // avança para o próximo endereço indo até o byte 512 da  
  // EEPROM, quando então retorna para o byte 0.
  addr = addr + 1;
  if (addr == 512)
    addr = 0;
 
  delay(100);
}
Este sketch começa com a inclusão da biblioteca EEPROM e da declaração da
variável  addr que define o endereço da EPROM a ser gravado. Em seguida é
iniciado o loop principal com a realização da leitura do valor presente na
entrada analógica 0 divido por 4 que é salvo em val. O valor de val é escrito no
endereço da EEPROM indicado por addr. Em seguida o endereço é
incrementado em uma unidade e se for igual a 512 é zerado. O programa
aguarda por 100ms para então repetir indefinidamente o loop principal.
Para ler uma determinada posição de memória, use:
 
Value = EEPROM.read(address);
Address: Posição da memória que será lido, é um inteiro entre 0 e 1023
(UNO);
Value: Valor do endereço da EEPROM é um inteiro entre 0 e 255 (um único
byte).

5.2 FERROM.READ
EEPROM Read: Lê o valor de cada byte da EEPROM e imprime na tela do
computador.

#include <EEPROM.h>    // incluir a biblioteca

// inicia lendo apartir do primeiro byte (endereço 0) da EEPROM


int address = 0;    // endereço de escrita na memória
byte value;    // valor lido da EEPROM    

void setup()
{
  Serial.begin(9600);    // inicializa o canal de comunicação serial
}

void loop()
{
  // lê o byte no endereço atual da EEPROM
  value = EEPROM.read(address);
 
// envia o valor lido para o computador pela porta serial
  Serial.print(address);    
  Serial.print("\t");
  Serial.print(value, DEC);
  Serial.println();
 
  // avança para o próximo endereço da EEPROM
  address = address + 1;
 
  // quando atingir o endereço 512 retorna
  // para o endereço 0
  if (address == 512)
    address = 0;
    
  delay(500);
}

armazenar um valor maior que 255 na eeprom

Use os comandos para a conversão de valores de 16 ou de 32 bits em bytes.


loByte = highByte(val);
hiByte = lowByte(val);
 
Val: Qualquer tipo de variável
LoByte: Byte com a parte mais baixa de val
HiByte: Byte com a parte mais alta de val

5.3 EEPROM WRITE


EEPROM Write: Armazena valores lidos na entrada analógica em dois
endereços consecutivos da EEPROM. Estes valores permanecerão guardados
mesmo que a placa seja desligada e podem ser recuperados posteriormente
pelo próximo sketch

#include <EEPROM.h> // incluir a biblioteca


int addr = 0;    // endereço de escrita na memória

void setup()
{
}

void loop()
{
  // lê o valor na entrada analógica e guarda em val
  int val = analogRead(0);
 
  // divide val que é um inteiro de 16 bits em dois bytes
  byte hiByte = highByte(val);
  byte loByte = lowByte(val);

  // escreve o byte mais significativo de  val na EEPROM no endereço


selecionado em addr
  EEPROM.write(addr, hiByte);

 // escreve o byte menos significativo de  val na EEPROM no endereço


selecionado em addr+1.
  EEPROM.write(addr+1, loByte);
    
  // avança para o próximo endereço pulando de 2 em 2, pois estamos
armazenando
  // valores com dois bytes cada até alcançar o byte 512 da  
  // EEPROM, quando então retorna para o byte 0.
  addr = addr + 2;
  if (addr == 512)
    addr = 0;
 
  delay(100);
}

alteração para recuperar os valores salvos na eeprom


value  = word(x)
value  = word(h, l)
 
value - uma word
x -  uma variável de qualquer tipo
h -  a parte alta de uma word
l -  a parte baixa de uma word

5.4 EEPROM READ


EEPROM Read: Lê o valor de cada byte da EEPROM e imprime na tela do
computador o código deste exemplo é de domínio público

#include <EEPROM.h>    // incluir a biblioteca

// inicia lendo apartir do primeiro byte (endereço 0) da EEPROM


int address = 0;    // endereço de escrita na memória
byte value;    // valor lido da EEPROM    

void setup()
{
  Serial.begin(9600);    // inicializa o canal de comunicação serial
}

void loop()
{
  // lê o byte no endereço atual da EEPROM
  byte hiByte = EEPROM.read(address);
  byte lowByte = EEPROM.read(address +1);
  value  = word(hiByte, lowByte);

  // envia o valor lido para o computador pela porta serial


  Serial.print(address);    
  Serial.print("\t");
  Serial.print(value, DEC);
  Serial.println();
 
  // avança para o próximo endereço da EEPROM
  address = address + 2;
 
  // quando atingir o endereço 512 retorna
  // para o endereço 0
  if (address == 512)
    address = 0;
    
  delay(500);
}
5.5 CONSELHO

Sempre que utilizar faça um mapa das variáveis que estão sendo guardadas e
os seus respectivos endereços, para assegurar que nenhum endereço seja
usado por mais de uma variável, e que os valores de bytes múltiplos não
sobrescrevam outras informações.
É isso, a EEPROM é um recurso muito útil e fácil de usar no Arduino, porém
relativamente pouco utilizado.
6. DATA SHEET ATMEGA328 ou ATMEGA328P
6.1 VISÃO SUPERIOR DO MLF 348P

6.2 MODELO DO 328P


6.3 PORTAS DO ATMEGA 328

6.4 MODELO DO 328-PU

6.5 TAMANHO DA MEMÓRIA


Flash: 32Kbytes
EEPROM: 1K Bytes
RAM: 2Kbytes
Tamanho do vetor de interrupção: 2 palavras de instrução/vetor

6,6 DIAGRAMA DE BLOCO


O núcleo AVR combina um rico conjunto de instruções com 32 registradores de
uso geral. Todos 32 registradores são conectados diretamente à Unidade
Lógica Aritmética (ULA), permitindo duas registradores a serem acessados em
uma única instrução executada em um ciclo de clock.
7. PINOS
7.1 DESCRIÇÃO
1. Reset
2. ACIS1, ACIS0: Seleção do modo de interrupção do comparador
analógico (ACIS1 ou ACIS2)
3. ACIS1, ACIS0: Seleção do modo de interrupção do comparador
analógico (ACIS1 ou ACIS2)
4. Habilitar Captura de Entrada do Comparador Analógico (ACIC)
5. Ativação de Interrupção do Comparador Analógico (ACIE)
6. Saída do Comparador Analógico (ACO)
7. É a entrada de alimentação positiva de +5 V
8. É a terra da alimentação (GND)
9. Crystal
10. Crystal
11. Sinalizador de Interrupção do Comparador Analógico (ACI)
12. Pode assumir as seguintes configurações: entrada e saída (configurável)
geral (GP5), clock do timer 1 (T1CK), entrada1 do circuito externo de
oscilador de clock (OSC1) ou, ainda, entrada de sinal externo de clock
13. Pode assumir as seguintes configurações: entrada e saída (configurável)
geral (GP4), quarta entrada analógica (AN3), entrada2 do circuito
externo de oscilador de clock (OSC2) ou, ainda, saída de sinal externo
de clock
14. Pode assumir as seguintes configurações: entrada (configurável) geral
(GP3), master clear (baixo ativo) ou tensão de programação (VPP)
15. Pode assumir as seguintes configurações: entrada e saída (configurável)
geral (GP2), terceira entrada analógica (AN2), clock do timer 0,
interrupção externa (INT) ou, ainda, saída do comparador interno
(COUT)
16. Pode assumir as seguintes configurações: entrada e saída (configurável)
geral (GP1), segunda entrada analógica (AN1), entrada inversora do
comparador interno (CIN-), tensão de referência do comparador interno
(VREF) ou, ainda, clock da programação in-circuit (ICSPCLK)
17. Pode assumir as seguintes configurações: entrada e saída (configurável)
geral (GP0), primeira entrada analógica (AN0), entrada não inversora do
comparador interno (CIN+) ou, ainda, dados da programação in-circuit
(ICSPDAT)
18. Pode assumir as seguintes configurações: entrada (configurável) geral
(GP3), master clear (baixo ativo) ou tensão de programação (VPP)
19. Pode assumir as seguintes configurações: entrada e saída (configurável)
geral (GP4), quarta entrada analógica (AN3), entrada2 do circuito
externo de oscilador de clock (OSC2) ou, ainda, saída de sinal externo
de clock
20. É a entrada de alimentação positiva de +5 V
21. Not connected
22. É a terra da alimentação (GND)
23. Entrada e Saída. Quando não conectada a nada, o valor irá flutuar
baseado numa gama de fatores que depende da sua posição em
relação a outros pinos
24. Entrada e Saída. Quando não conectada a nada, o valor irá flutuar
baseado numa gama de fatores que depende da sua posição em
relação a outros pinos
25. Entrada e Saída. Quando não conectada a nada, o valor irá flutuar
baseado numa gama de fatores que depende da sua posição em
relação a outros pinos
26. Entrada e Saída. Quando não conectada a nada, o valor irá flutuar
baseado numa gama de fatores que depende da sua posição em
relação a outros pinos
27. Entrada e Saída. Quando não conectada a nada, o valor irá flutuar
baseado numa gama de fatores que depende da sua posição em
relação a outros pinos
28. Entrada e Saída. Quando não conectada a nada, o valor irá flutuar
baseado numa gama de fatores que depende da sua posição em
relação a outros pinos

7.2 IMPORTÂNCIA DO PINO 0 E 1


Podem ser utilizados para comunicação serial (comando Serial), já que
estabelecem a comunicação entre o Arduino e outro dispositivo. Portanto, é
recomendado que não utilize esses dois pinos, pois poderão haver erros.
7.3 PINOS PWM
São os pinos 3, 5, 6, 9, 10, 11
Tem a finalidade de fornecer diferentes níveis de tensão para:
 Variar o brilho de LEDs;
 Fornecer o controle da rotação de motores DC;
 Fornecer uma saída analógica variável; se a saída digital for filtrada, ela
fornecerá uma tensão analógica entre 0% e 100%;
 Gerar um sinal modulado, por exemplo, para acionar um LED
infravermelho de um controle remoto;
 Emissão de sinais de áudio;
 Efetuar o controle de servo motores e dentre outros componentes;
8. MELHOR SITE PARA COMPRAR COMPONENTES DE
ARDUINO
http://www.atmel.com/avr
9. BIBLIOGRAFIA
http://adaec.icmc.usp.br/wiki/atmega328
https://labdegaragem.com/profiles/blogs/tutorial-usando-a-eeprom-do-arduino-
para-armazenar-dados-de-forma
https://www.dfrobot.com.cn/image/data/DFR0109/Atmega328P.pdf
https://www2.ifmg.edu.br/ceadop3/apostilas/microcontroladores
https://blog.novaeletronica.com.br/piinagem-ci-atmega328-arduino/
https://www.arnabkumardas.com/arduino-tutorial/analog-comparator/
https://embarcados.com.br/arduino-entradas-analogicas/
https://embarcados.com.br/arduino-comunicacao-serial/#:~:text=A
%20comunica%C3%A7%C3%A3o%20serial%20(UART)%20na,do%20c
%C3%B3digo%20para%20a%20placa.
https://flaviobabos.com.br/pwm-arduino/#:~:text=O%20PWM
%20%C3%A9%20utilizado%20nas,entre%200%25%20e%20100%25%3B

Você também pode gostar