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.
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.
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.
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!