No último post, Gravando bootloader no ATMEGA328 usando Arduino, eu falei sobre como gravar o bootloader no ATMEGA328 utilizando a própria placa do Arduino como gravador, o que permite que você use o microcontrolador fora da placa Arduino. Agora nesta sequência vamos mostrar como montar um Arduino na protoboard usando o microcontrolador gravado.

Lembrando que você pode adquirir o ATMEGA328P-PU já com bootloader nesse anúncio aqui.

Projetos definitivos utilizando Arduino não precisam, na maioria das vezes, de atualização constante do programa contido no microcontrolador. Depois que você testar o circuito na protoboard e estiver tudo ok, você pode transferí-lo para uma placa de circuito impresso e, com alguns componentes adicionais, fazer com que ele funcione “sozinho”.

Assim você elimina, por exemplo, a necessidade do circuito regulador de tensão e também o chip de comunicação USB com o computador, composto pelo ATMEGA16U2.

Fique atento ao fato de que, utilizando o ATMEGA328 desta forma, a alimentação do CI deve ficar entre 1,8 e 5,5 volts. Estes são os valores limite informados pelo fabricante e que constam no datasheet do microcontrolador.

Gravando o programa no ATmega328

Testar o ATMEGA328 fora da placa é bem simples e podemos usar praticamente o mesmo circuito que montamos para gravar o bootloader do post anterior, com o acréscimo de um push button para fazer a função de botão de reset, e 2 capacitores cerâmicos de 22 pF para ligação ao cristal.

Assumindo que temos um Arduino UNO, vamos colocar o microcontrolador no soquete e carregar o seguinte programa :

// Programa : Sequencial de leds - Teste ATMEGA328  
// Autor : Arduino e Cia  
   
int pino_verde = 4; //Pino ligado ao led verde  
int pino_verm = 5; //Pino ligado ao led vermelho  
int pino_amar = 6; //Pino ligado ao led amarelo  
int tempo = 1000;  //Controla o tempo de ativacao dos leds  
   
void setup()  
{  
  //Define os pinos dos leds como saida  
  pinMode(pino_verde, OUTPUT);  
  pinMode(pino_verm, OUTPUT);  
  pinMode(pino_amar, OUTPUT);  
}  
   
void loop()  
{  
  digitalWrite(pino_verde, HIGH);  
  digitalWrite(pino_verm, LOW);  
  digitalWrite(pino_amar, LOW);  
  delay(tempo);  
  digitalWrite(pino_verde, LOW);  
  digitalWrite(pino_verm, HIGH);  
  digitalWrite(pino_amar, LOW);  
  delay(tempo);  
  digitalWrite(pino_verde, LOW);  
  digitalWrite(pino_verm, LOW);  
  digitalWrite(pino_amar, HIGH);  
  delay(tempo);  
  tempo = tempo-50;  
  if (tempo < 100)  
  {  
    tempo = 1000;  
  }  
}  

Esse programa aciona os 3 leds do circuito abaixo em sequência, e a variável TEMPO define o tempo que o led ficará ligado/desligado. A cada sequência a variável tem o valor diminuído, o que faz com que os leds acendam cada vez mais rápido. Quando a variável TEMPO atinge um valor menor do que 100 milisegundos, o processo é reiniciado.

montando Arduino na protoboard

Teste o programa na placa e veja se tudo está funcionando corretamente.

Montando Arduino na protoboard

Com o programa carregado e devidamente testado, vamos agora utilizar o ATMEGA fora do Arduino Uno.

Retire o microcontrolador, coloque-o na protoboard e monte o circuito abaixo, observando as conexões do ATMEGA328.

Pinagem ATMEGA328

Agora vamos ligar o led verde à porta D4 (Pino 6 do ATMEGA), o led vermelho à porta D5 (pino 11 do ATMEGA), e o  led amarelo ao D6 (pino 12 do ATMEGA). O resistor ligado ao pino 1 (Reset) com um push-button tem o valor de 10K.

O cristal oscilador de 16Mhz é o que vai dar o “passo” para o microcontrolador funcionar na frequencia correta. Ele está conectado nos pinos 9 e 10 do ATMega.

Arduino na protoboard - Sequencial

Alimente o circuito com pilhas/baterias ou outra fonte que forneça até 5.5 volts, e veja o seu ATMEGA328 funcionar sem uma placa Arduino.

Gostou? Confira outros posts e tutoriais com Arduino aqui mesmo no Arduino e Cia!

5/5 - (1 vote)