Como montar o Arduino na protoboard
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!
Eu gostaria de fazer alguns projetos no Arduino, porém quando estiver com o protótipo pronto gostaria de gravar o programa em um micro controlador ATMEGA, no entanto eu não possuo o Arduino UNO e sim o Arduino Mega. Alguém teria o circuito de como eu devo ligar o microcontrolador ao arduino para "subir" o programa ao ATMEGA virgem?
Bom dia Vitor. Você quer utilizar esse mesmo procedimento do tutorial, mas ao invés de um Arduino Uno, você quer usar um Mega ? Abraço.
Exatamente.
Pois para gravar o ATMEGA foi necessário retirar o Chip do Arduíno UNO e colocar o "novo" microcontrolador. Procedimento que não dá para ser feito com o Arduíno Mega. Abraços.
Estou com o mesmo problema. Então será preciso comprar um arduino UNO?
Boa noite Joris,
Não necessariamente. Você pode tentar adquirir um conversor USB/Serial. Eu tenho um e em breve vou montar um post mostrando a utilização dele para programar o Arduino na protoboard (se funcionar, é claro. rs).
Abraço !
Estou com planos de deixar minha aplicação sem a placa Arduino..
Trata-se de acionamento de um rele para acender uma lampada a qual é feita através de um sensor infravermelho. A questão é: posso manter essa aplicação sem a placa Arduino e sem estar usando a alimentação USB?? Obrigado
Boa noite,
Pode sim, esse tipo de circuito é utilizado justamente nessas situações. Uma outra opção é você utilizar um Arduino Mini.
Abraço.
Fiz o mesmo passo do projeto acima e não funcionou fora só na placa do uno
Bom dia Roberto,
Por favor dê uma revisada nas suas ligaçôes. Se funciona na placa, deve funcionar fora dela. Tente sem os capacitores, por exemplo.
Abraço !
Impressão minha ou os fios dos LED´s vermelho e amarelo estão conectados aos pinos errados na imagem da protoboard?
Boa noite Clóvis,
Não estavam errados não… estavam MUITO errados !!! rsrs
Nas duas imagens, inclusive. Desculpe a falha e muitissimo obrigado por avisar. Já fiz as alterações.
Abraço !
realizei a montagem do circuito mas o deley de 1000ms esta seno namendade de 10seg(10000ms). Oq pode esta errado?
Oi Ailton,
Que cristal vc está usando ?
Abraço!
16Mhz
usei um cristal de 16 Mhz… sera que nao precisaria do bootloader do Arduino uno, pois ja vi em alguns fóruns que esse atmega tem um oscilador interno, provavelmente quando seleciono o atmega328P ele ja carrega uma configuracao ou bootload que faz com que ele use o oscilado interno e nao o externo.
Cara eu to usando um crital de 24 MHZ da muita diferença? pois fiz o mesmo programa porem liga todos led's ao mesmo tempo e desliga todos ao mesmo tempo e fica repitindo isso , e os leds ficam bem locos as vez energizo e apenas 2, ou 3 leds ligam as vezes apenas 1, e eles nao ficam piscando como deveriam, apenas ficam ligados.
O que será que é? Fiz as ligações todas certas uso o cristal de 24MHZ sem os capacitores.
Oi Leonardo,
Utilize o cristal de 16 Mhz, se possível.
Abraço!
Leonardo, pelo que eu li do Atmega 328P-PU, o máximo que dá pra usar é um cristal de 20MHz.
Como faço para carregar o programa no ATMEGA sem coloca-lo no soquete do arduino?Já fiz o bootloader no meu ATMEGA, porém nao queria tirar o ATMEGA original da minha placa pois nao quero danifica-lo.
Boa tarde,
Você pode usar um módulo FTDI nos pinos RX e TX.
Abraço!
Cara.. na boa
Simplesmente não funciona aqui… fiz exatamente igual… já tentei varias vezes… com a propria alimentação da Placa arduino, com regulador LM7805, com banho de pipoca e reza brava… não rola… pior que estou com dois atmegas com bootloader e não funciona…Já tentei com ou sem capacitor, só alimentação… alguma dica??
Boa noite,
Acabei de refazer o circuito aqui e funcionou sem problemas.. Será que você não está esquecendo algum passo ?
Aliás, qual erro está apresentando ?
Abraço!
Olá, estou projetando um circuito apara minha moto.. A função dele é impedir que a moto ligue, até que XX passos sejam feitos, por exemplo ligar e desligar o farol 2 vezes. Um regulador de tensão 12>>5 ligado no pós-chave alimenta o arduíno.
Gostaria de saber se eu posso usar diretamente os 12V da bateria em umas da entradas do arduíno para medir HIGH ou LOW..
Estou falando arduíno, mas na verdade vou usar o ATMega fora da placa, como mostrado aqui. Obrigado (Vou comprar tudo aqui no site :D).
O ATMega não suporta mais do que a tensão máxima de alimentação nas portas digitais e analógicas. A solução é simples, basta usar pelo menos dois resistores associados como um divisor de tensão para que, quando acionado, a queda de tensão proporcionada na junção dos resistores (onde será conectado a porta do ATMega) alcance a tensão desejada (algo próximo de 5volts). Se não falha a memória, o ATMega tende como nível low uma tensão de até 1/3 da tensão de alimentação e como nível high acima de 2/3 da tensão de alimentação.
muito útil,para transferir projetos desenvolvidos.Poderia ensinar como formatar o microcontrolador?
Oi Alvimar,
Obrigado. O que você precisa fazer exatamente ?
Abraço!
Estou conectando o sensor ultrassônico no arduino. O trig e echo são ligados na porta 11 e 12. Só que já utilizei essas portas para conectar o cartao SD. Como faço a ligação utilizando a protoboard?
Oi Micaela,
Você pode usar o sensor ultrassônico em outras portas do Arduino.
Abraço!
Tenho um cabo que e para usar em equipamento serial RS232 e outro lado no Nobok USB ,como poderia usar para eu fazer para carregar programa no meu atmega no protboard
olá, posso usar capacitores de 20 pF no lugar do 22 pF?
Boa noite Lucas,
Pode sim.
Abraço!
Adilson