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. Lembre-se também que na FILIPEFLOP você tem a opção de comprar o chip já com o bootloader gravado e com todos os componentes utilizados neste artigo.
Ok, legal, mas como eu uso o microcontrolador fora da placa Arduino ?
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, que são os valores limite fornecidos pelo fabricante e que constam no datasheet do microcontrolador.
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // 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.
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, sendo que 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) tem o valor de 10K :
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.
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?
ResponderExcluirBom 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.
ExcluirExatamente.
ExcluirPois 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?
ExcluirBoa noite Joris,
ExcluirNã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..
ResponderExcluirTrata-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,
ExcluirPode 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
ResponderExcluirBom dia Roberto,
ExcluirPor 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?
ResponderExcluirBoa noite Clóvis,
ExcluirNã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?
ResponderExcluirOi Ailton,
ExcluirQue cristal vc está usando ?
Abraço!
16Mhz
Excluirusei 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.
ExcluirCara 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.
ExcluirO que será que é? Fiz as ligações todas certas uso o cristal de 24MHZ sem os capacitores.
Oi Leonardo,
ExcluirUtilize 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.
ExcluirComo 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.
ResponderExcluirBoa tarde,
ExcluirVocê pode usar um módulo FTDI nos pinos RX e TX.
Abraço!
Cara.. na boa
ResponderExcluirSimplesmente 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,
ExcluirAcabei 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.
ResponderExcluirGostaria 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.
Excluirmuito útil,para transferir projetos desenvolvidos.Poderia ensinar como formatar o microcontrolador?
ResponderExcluirOi Alvimar,
ExcluirObrigado. 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?
ResponderExcluirOi Micaela,
ExcluirVocê 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
ResponderExcluir