Gravando o Bootloader - Tutorial Ilustrado

Tabela de conteúdo

Lista de Materiais

Qtde

Componente

Modelo

1

Microcontrolador

ATMega328P

1

Regulador de Tensão

LM7805

1

Diodo

1N4007

1

Capacitor Eletrolítico

220uF

2

Capacitor Disco Cerâmico

22pF

1

Cristal

16MHz

1

Led Difuso

Verde

1

Led Difuso

Vermelho

1

Resistor

470 ohms

1

Capacitor Disco Cerâmico

100nF

1

Resistor

10K ohms

1

Conector Jack

P4

N

Jumpers de Protoboard

--

1

Protoboard

--

1

Resistor

220 ohms

1

Rabicho

USB

1

Barra de Pinos

--

1

Fonte de Alimentação

9V ~ 800mA



Montagem dos Circuitos

Circuito da Fonte de Alimentação

O primeiro circuito que vamos montar é o do regulador da tensão. Este circuito é necessário para transformar a voltagem da fonte de 9V para 5V, casando a tensão necessária para ligar o ATMega.

Passo 1 - Primeiro vamos colocar o LM7805 na protoboard, na posição indicada na foto. Repare que o pino 1 do regulador de tensão está voltado para a parte de cima da foto.

Arquivo:DSC01115_640x480.jpg

Passo 2 - Agora conectamos o diodo 1N4007, sendo o catodo no pino 1 do regulador de tensão e o anodo na outra banda da protoboard, como na foto abaixo. Lembre-se que o catodo é o pino do lado que tem a faixa cinza no diodo.

Arquivo:DSC01116_640x480.jpg

Passo 3 - Com os cabinhos do conector jack P4 já devidamente soldados, conecte o positivo no anodo do diodo. Normalmente o positivo é pino central do conector. Vide a foto.

Arquivo:DSC01117_640x480.jpg

Passo 4 - Conecte o fio negativo do conector P4 na trilha correspondente. Algumas protoboards não tem marcação de negativo, mas o importante é ligar no furo mais a esquerda possível, na parte onde ficam as trilhas verticais de alimentação.

Arquivo:DSC01118_640x480.jpg

Passo 5 - Voltando ao LM7805, o pino do meio precisa ser ligado também na trilha do negativo, repare na foto que utilizo um jumper para conectar a trilha horizontal do pino 2 do regulador de tensão à trilha vertical de alimentação negativa.

Arquivo:DSC01119_640x480.jpg

Passo 6 - O terceiro pino do regulador de tensão é o de saída dos 5V. Por isso ligamos esse pino na trilha de alimentação positiva, conforme foto.

Arquivo:DSC01122_640x480.jpg

Poderíamos parar a montagem do circuito de alimentação nesse ponto, mas vamos adicionar alguns filtros para melhorar a estabilidade da nossa fonte. Principalmente se você fizer como eu, ou seja, comprar um ATMega virgem e for gravar o bootloader. Veja bem, o processo de gravação do bootloader é muito sensível a falhas, principalmente se a fonte de alimentação não for confiável. Experiência própria!

Passo 7 - Então vamos adicionar um capacitor eletrolítico de 220uF entre o pino 1 do LM7805 e a trilha do negativo. Cuidado com a polaridade, ligue o negativo do capacitor na trilha do negativo da protoboard e o positivo no pino 1 do regulador de tensão.

Arquivo:DSC01123_640x480.jpg

Passo 8 - Vamos adicionar um resistor de 470 ohms na saída do regulador de tensão (pino 3) e a outra perna, em uma trilha vizinha, onde vamos ligar um led indicativo de funcionamento da fonte.

Arquivo:DSC01124_640x480.jpg

Passo 9 - Chegou a hora de conectar o led que indica quando a fonte está ligada. Utilize o led verde, conectando o catodo na trilha de alimentação negativa e o anodo na perna livre do resistor de 470 ohms. Lembre-se que o catodo é o pino do lado chanfrado do led.

Arquivo:DSC01126_640x480.jpg

Passo 10 - Para finalizar a fonte, basta adicionar o capacitor de 100nF, de cerâmica, que não tem polaridade, bastando conectar em qualquer lugar entre o positivo e o negativo.

Arquivo:DSC01128_640x480.jpg

Com isso finalizamos a parte da montagem da fonte do Protuino. Vale a pena testar o funcionamento antes de continuar, principalmente verificando as tensões entre as trilhas do positivo e do negativo, que deve ser de 5V. Vide a aparência final na foto abaixo.

Arquivo:DSC01129_640x480.jpg

Circuito de Gravação do Bootloader

Nessa etapa vamos construir o circuito principal do Protuino, que também consiste no esquema básico de ligação do ATMega328. Esse circuito é o mínimo necessário para fazer a gravação do bootloader, que é o que transforma um simples microcontrolador ATMega em um Arduino!

Passo 1 - Primeiro vamos colocar o microcontrolador (uC) no centro da placa, conforme a foto. Não deixe de reparar no chanfro que marca a posição do pino 1 do uC. Este chanfro deve ficar voltado para a fonte de alimentação que montamos no tópico anterior.

Atenção! Como a protoboard que estou usando é pequena, a posição do ATMega nesse momento é muito importante! Se você estiver utilizando uma protoboard maior, não se preocupe com isso, mas no nosso caso, é preciso prestar atenção em qual circuito estamos montando! Para o de Gravação do Bootloader, é necessário casar o pino 1 do ATMega na trilha 11, conforme a foto abaixo, mas se você estiver montando o circuito de Upload de Programas, é importante casar o pino 1 do microcontrolador na trilha 9, ou seja, duas trilhas acima das fotos abaixo. Verifique os outros tópicos dos circuitos possíveis antes de começar a montar o circuito principal!

Arquivo:DSC01131_640x480.jpg

No esquema abaixo, podemos ver o mapa de pinos do Arduino, que será muito útil e importante daqui para frente.

Arquivo:Atmega168PinMap2.png

Passo 2 - Seguindo o manual, precisamos polarizar o ATMega, ou seja, conectar os pinos 7 e 8, conforme esquema acima, no positivo e negativo (respectivamente) da rede de alimentação. Primeiro vamos ligar o pino 7 ao positivo da rede.

Arquivo:DSC01132_640x480.jpg

Passo 3 - Agora basta conectar o pino 8 no negativo da rede de alimentação.

Arquivo:DSC01134_640x480.jpg

Passo 4 - Do outro lado do ATMega, precisamos conectar outro pino ao negativo. Como não vamos usar o lado direito das trilhas de alimentação, o jeito é fazer um jumper que ligue o pino 22 do uC ao pino central do regulador de tensão, que por sua vez, está conectado ao negativo da nossa rede de alimentação. Primeiro colocamos um jumper que vai do pino 22 do ATMega até a terceira trilha da banda direita da nossa protoboard.

Arquivo:DSC01135_640x480.jpg

Passo 5 - Como uma banda da protoboard não se comunica com a outra banda de componentes, precisamos adicionar outro jumper que faça essa conexão, conforme a foto abaixo.

Arquivo:DSC01137_640x480.jpg

Passo 6 - Agora conectamos outro jumper, mas dessa vez ligando o pino 21 do ATMega na parte de baixo da protoboard, que depois será ligado ao positivo. Vide a foto.

Arquivo:DSC01138_640x480.jpg

Passo 7 - Outro pino que precisa ser ligado ao positivo da rede é o pino 20, por isso usamos outro jumper e o ligamos de um lado no pino 20 do ATMega e a outra ponta, na mesma trilha do jumper do passo anterior.

Arquivo:DSC01140_640x480.jpg

Passo 8 - Então conectamos um jumper ao positivo da rede, ligando os dois pinos dos passos anteriores. Veja como na foto abaixo.

Arquivo:DSC01143_640x480.jpg

Passo 9 - Agora vamos colocar o resistor de 220 ohms acima do ATMega, ligando uma banda das trilhas de componentes com a outra.

Arquivo:DSC01146_640x480.jpg

Passo 10 - Na sequência ligamos o led vermelho, tendo seu catodo no negativo e o anodo na mesma trilha do resistor de 220 ohms.

Arquivo:DSC01147_640x480.jpg

Passo 11 - Para terminar o circuito do led vermelho, ligamos a outra ponta do resistor de 220 ohms no pino 19 do ATMega.

Atencão! Repare que esse fio da foto abaixo é diferente dos outros utilizados antes. Isso se dá pois precisamos desligar esse jumper na hora da gravação do bootloader. Isso é muito importante, pois sem desconectar esse fio, não é possível fazer a gravação do Arduino no ATMega.

Arquivo:DSC01148_640x480.jpg

Passo 12 - Precisamos conectar agora o cristal oscilador externo. Existem algumas opções para se fazer isso. A mais fácil e barata é com um cristal de quartzo, polarizado com dois capacitores. Primeiro conectamos o cristal nos pinos 9 e 10 do ATMega. Não se preocupe com polaridade, pois esse componente funciona do mesmo jeito quando a corrente passar por um sentido ou por outro, assim como uma lâmpada incandescente.

Arquivo:DSC01151_640x480.jpg

Passo 13 - Ligue o primeiro capacitor de cerâmica de 22pF, conectando uma perna no cristal e outra no terra (negativo da rede).

Arquivo:DSC01154_640x480.jpg

Passo 14 - Depois ligue o segundo capacitor de 22pF na outra perna do cristal e também no negativo da rede.

Arquivo:DSC01156_640x480.jpg

Passo 15 - Finalmente ligue o resistor de 10K ohms no pino 1 do ATMega e a outra perna no positivo da rede.

Arquivo:DSC01157_640x480.jpg

Não vamos instalar o botão de reset por uma questão de espaço, pois a nossa protoboard é pequena, mas caso você esteja usando uma com mais espaço, basta seguir o esquema da foto abaixo. Veja que quando o botão é pressionado, leva a tensão do pino 1 do ATMega a zero, resetando assim o microcontrolador.

Arquivo:circuito_reset.png

Assim terminamos a montagem do circuito básico do Protuino. Com essa montagem é possível testar um Arduino piscando o led vermelho no pino 19 (caso o programa Blink esteja gravado no microcontrolador); e também efetuar a gravação do bootloader.

Montagem dos Cabos

Cabo Paralelo do Bootloader

O cabo paralelo utiliza um conector DB25, antigamente utilizado em impressoras, para ligar a porta LPT do computador nos pinos do ATMega. Mais exatamente na porta de programação ISP do microcontrolador.

Por isso vamos usar um conector DB25 macho de um lado do cabo; e do outro apenas pinos de cobre, pois as conexões na protoboard serão distantes umas das outras.

Passo 1 - Descasque a ponta de um rabicho USB. Corte a ponta fora e tire a manga do cabo, conforme a foto.

Atenção! - Vamos utilizar um rabicho USB, pois temos exatamente 5 fios dentro do cabo, o que nos permite criar os 5 pinos do programador ISP, são eles: Terra (GND), Sincronia (SCK), 'Master Out Slave In' (MOSI) e 'Master In Slave Out' (MISO).

Arquivo:DSC01054 (Custom).JPG

Passo 2 - Corte pinos de uma barra de pinos para utilizarmos como jumpers para a protoboard.

Arquivo:DSC01055 (Custom).JPG

Passo 3 - Separe a parte de plástico e guarde o pino.

Arquivo:DSC01058 (Custom).JPG

Passo 4 - Soldamos então cada pino ao seu cabo. Eu utilizei o fio vermelho para o MISO, o branco para o MOSI, o verde para o SCK, o preto para o RST e o fio desencapado para o GND.

Arquivo:DSC01060 (Custom).JPG

Passo 5 - A montagem do cabo no conector DB25 deve ficar conforme a foto abaixo. Siga a tabela a seguir para montar corretamente este cabo.

Conector DB25

Componente

Cor do Fio

Pino ATMega

1

Resistor 470 ohms

Verde

19 (SCK)

2

Resistor 470 ohms

Branco

17 (MOSI)

11

Resistor 220 ohms

Vermelho

18 (MISO)

16

--

Preto

1 (RST)

18

--

Fio Sem Capa

(7) GND

Arquivo:DSC01062 (Custom).JPG

Aparência final do cabo pode ser vista na foto abaixo. Utilize fita isolante ou mangas termo ativadas para fazer o acabamento das pontas de conexão com a protoboard.

Arquivo:DSC01063 (Custom).JPG

Passo 5 - Vamos revisar a montagem do conector DB25. Soldamos primeiro os resistores de 470 ohms aos pinos 1 e 2. Depois o resistor de 220 ohms no pino 11. Nos pinos 16 e 18, soldamos diretamente os fios preto e sem capa, respectivamente. Finalmente soldamos os fios: verde no resistor do pino 1, branco no resistor do segundo pino, e por fim, o vermelho no resistor de 220 ohms no pino 11.

Arquivo:DSC01251 (Custom).JPG

Passo 6 - Monte o conector DB25 em sua caixa.

Arquivo:DSC01253 (Custom).JPG

Passo 7 - Antes de conectar o cabo paralelo na protoboard, vamos desligar nosso jumper temporário.

Atenção! - Não esqueça de desligar esse jumper, pois a gravação do bootloader não vai funcionar se essa conexão estiver ligada. Por tanto, tire esse cabo temporário agora! Não deixe para depois!

Arquivo:DSC01263 (Custom).JPG

Passo 8 - Vamos ao cabo! Primeiro conectamos o fio sem capa no negativo da rede de alimentação da nossa protoboard, ou seja, no terra (GND).

Arquivo:DSC01264 (Custom).JPG

Passo 9 - Agora conectamos o fio preto no pino 1 do ATMega, ou seja, no circuito de Reset (RST).

Arquivo:DSC01266 (Custom).JPG

Passo 10 - Vamos conectar o fio verde ao pino 19 do ATMega, ou seja, o responsável pela sincronia (SCK) da programação do bootloader.

Arquivo:DSC01270 (Custom).JPG

Passo 11 - Para terminar, conectamos os fios da comunicação em si, ou seja o MISO e o MOSI. Primeiro ligamos o fio vermelho ao pino 18 (MISO) do ATMega.

Arquivo:DSC01271 (Custom).JPG

Passo 12 - O último fio é o branco no pino 17 (MOSI) do ATMega.

Arquivo:DSC01272 (Custom).JPG

Passo 13 - Se você, como eu tirou o jumper dos pinos 20 e 21 do ATMega ao positivo da rede, é uma boa hora para conectá-lo novamente.

Arquivo:DSC01273 (Custom).JPG

Seguindo estes passos, vide o tópico sobre a Gravação do Bootloader.

Programação

Gravando o Bootloader

Se chegou nessa etapa, significa que você construiu os circuitos da fonte de alimentação e o principal, de gravação do bootloader. Além disso você também já deve ter construído o cabo paralelo de programação. Aproveite para conferir uma última vez as conexões do cabo de gravação do bootloader com a protoboard, pois qualquer detalhe esquecido aqui se tornará uma decepção muito em breve.

Passo 1 - Desligar o jumper temporário para não interferir no processo de gravação do bootloader.

Arquivo:DSC01263_(Custom).JPG

Passo 2 - Verifique as conexões do cabo paralelo e teste as resistências que foram adicionadas no conector DB25.

Arquivo:Conector paralelo.jpg

Passo 3 - Se você utiliza o Windows 2K/XP, clique no link a seguir para baixar a biblioteca e o instalador do GiveIO.

Clique aqui para fazer o download do GiveIo.zip.

Este programa obtém um acesso com mais privilégios para acessar a porta paralela. Baixe o arquivo compactado abaixo, descompacte em uma pasta, utilize o programa LOADDRV.EXE para instalar e iniciar o serviço que vai ativar esse driver. Na caixa de texto do programa, digite o caminho completo para o arquivo GIVEIO.SYS e clique em INSTALL. Depois é só clicar em START. Toda vez que reiniciar o computador, você precisará clicar em START novamente.

Passo 4 - Outro truque necessário no XP é adicionar um patch de chave no registro do Windows.

Clique aqui para fazer o download do XP_stop_polling.rar.

Este patch desliga um polling de controle que pode interferir no desempenho da comunicação na hora da gravação do bootloader.

Utilize o link acima para fazer o download do arquivo compactado que contém um arquivo de registro. Basta clicar duas vezes nesse arquivo de registro (XP_stop_polling (1).reg), que o Windows instalará automaticamente a chave no registro.

Ou Então...

Abra o registro do Windows, através do comando REGEDIT.EXE e adicione manualmente a chave;

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport\Parameters] "DisableWarmPoll"=dword:00000001

Passo 5 - Ainda no Windows XP, utilize o link abaixo para fazer o download do LPTScope, que é um programa que verifica a porta paralela do computador.

Clique aqui para fazer o download do LPTScope.rar.

Este teste é importante para verificar a capacidade bidirecional da porta paralela. Na verdade o LPTScope é um programa utilizado por um hardware conectado na porta paralela e funciona como um osciloscópio. Mas existe uma ferramenta muito interessante nesse programa que nos auxilia a testar a porta LPT.

Faça o download do LPTScope através do link acima e descompacte-o em alguma pasta. Basta executar o arquivo LPTSCOPE.EXE para acessar o programa.

Acesse o menu Tools &gAcesse o menu Tools > Bidirectional Capabilities Testing. Aparecerá uma tela que pedirá que você conecte um resistor de 1k ohms entre o pino 9 e 25 da porta paralela.

Repare que tem um número 255 bem grande em vermelho no centro da tela do teste de bidirecionalidade. Quando você conectar o resistor, esso número tem que mudar para 127. Se isso não acontecer, significa que sua porta paralela não está configurada como bidirecional.

Caso não funcione, acesse o utilitário de configuração da BIOS do seu computador e configure a porta paralela para ECP+EPP. etc.

Passo 6 - No Linux, sua unica preocupação será em utilizar o comando SUDO ou similar para executar os programas a seguir, tanto o AVRDude como a própria IDE do Arduino.

Passo 7 - Com todos esses detalhes resolvidos, ainda precisamos testar a comunicação entre o PC e o Arduino.

Primeiro faça o download do seguinte pacote de arquivos:

Clique aqui para fazer o download do AVRDUDE.RAR.

Descompacte esse pacote em uma pasta. Nesta pasta você verá um programa chamado AVRDUDE.EXE. Vamos utilizar esse programa para testar a comunicação inicial com o ATMega.

Passo 8 - Conecte então o cabo paralelo no PC e inicie uma janela de comando "Iniciar>Executar...". Altere o diretório para o do AVRDude, do passo anterior. Execute então o comando a seguir:

AVRDUDE.EXE -c dapa -p m328p

Repare que utilizamos o programa AVRDude com as opções -c e -p que siginificam, respectivamente, tipo de programador e modelo do microcontrolador. No caso do Protuino, utilizamos um ATMega328P, cujo código é m328p. O tipo de programador é "dapa", um código para indicar que estamos utilizando um adaptador na porta paralela.

Se tudo der certo, uma tela semelhante a essa da imagem abaixo deve aparecer. Note na assinatura do ATMega. Qualquer informação diferente da tela abaixo significa que tem algum erro nas conexões ou na porta paralela, ou ainda no cabo!

Atenção! - Usuário do Linux, faça o download da versão correspondente do AVRDude para seu ambiente operacional e siga os mesmos passos do usuário do Windows.

Passo 9 - Se você ainda não fez o download da interface gráfica (IDE) do Arduino, é uma boa hora de fazê-lo! Siga o link abaixo para selecionar a versão correta para o seu computador:

http://arduino.cc/en/Main/Software

Passo 10 - Nesse ponto, com a assinatura verificada pelo AVRDude, não tem segredo, basta selecionar a Board > Arduino UNO (ou Duemilanove se utilizarmos essa versão pela compatibilidade com o FTDi).

Passo 11 - Selecione então Tools > Burn > Bootloader via Parallel Programming.

Pronto! A tela abaixo deve aparecer caso tudo tenha corrido bem!