terça-feira, 17 de setembro de 2013

Microcontroladores

Não pretendo fazer uma introdução formal aos microcontroladores, minha experiência com eles é limitada e essencialmente prática. Além disso, textos introdutórios de excelente qualidade sobre o assunto são facilmente encontrados na internet. Aqui serão discutidos alguns tópicos práticos relacionados a características da programação de microcontroladores que talvez os programadores acostumados a programar computadores não estejam habituados. O código usado como exemplo usa a biblioteca do Wixel que contém o CC2511F32 da Texas Instruments. Mas mesmo para quem usar outro microcontrolador, penso que serão de muita ajuda para os iniciantes porque os conceitos são basicamente os mesmo para qualquer microcontrolador.

Antes de tratar sobre a programação é importante conhecer alguns conceitos básicos usados na arquitetura dos microcontroladores então sugiro enfaticamente uma pesquisa introdutória sobre o assunto. Abaixo alguns links:

Loop infinito

A primeira coisa a saber sobre programação de microcontroladores é que o programa está sempre rodando dentro de um loop infinito. Quando o microcontrolador é ligado um código de inicialização é executado e em seguida o programa entra em um loop infinito que só termina quando a energia é cortada. Normalmente dentro do loop estão chamadas a funções que monitoram o estado de alguma porta, pino, timer ou qualquer periférico disponível e conforme o caso executam alguma ação ou retornam sem fazer nada,

É preciso lembrar que essas funções serão chamadas uma vez a cada iteração do loop, mas vão (ou deveriam) ocorrer milhares de iterações por segundo. O comportamento esperado é que na grande maioria das chamadas essas funções retornem sem nenhuma ação, então é uma boa estratégia iniciar a função identificando o mais cedo possível essa condição e retornar executando o mínimo de código possível.

Funções não bloqueantes

Quanto mais iterações por segundo o loop principal conseguir fazer, mais precisas serão as medidas feitas nos periféricos e mais imediatas serão as ações de resposta do microcontrolador. Por isso é importante evitar escrever código que mantenha o fluxo de processamento preso em uma instrução ou loop por muito tempo. Por exemplo, instruções que fazem o processamento "esperar" determinada quantidade de tempo ( do tipo delay(tempo) ), devem ser evitadas.

Para entender o problema de usar usar funções bloqueantes, vamos considerar uma aplicação bem simples que envolva alguns pinos. Suponha que o pino P1 deva ser monitorado e que o funcionamento normal do sistema exija este pino em nível alto. Sempre que o pino P1 ficar em nível baixo, um alarme conectado ao pino P2 tem que ser ligado e mantido assim até o pino P1 voltar ao nível alto. O programa para esta especificação poderia ser algo como:


#define mnPin    P1
#define pinAlarm P2
 
void main()
{
    // inicializacão
    setDigitalInput(mnPin, HIGH_IMPEDANCE);
    setDigitalOutput(pinAlarm, LOW);
 
    // loop principal
    while(1)
    {
        // monitoramento
        pinAlarm = !mnPin ;
    }
}
 
Apesar de simples e básico, o código acima é extremamente eficiente e preciso. No instante em que P1 estiver em nível baixo, o pino de alarme é ativado. Isso será verificado milhares de vezes por segundo, então a reação será praticamente imediata.

Entretanto, qualquer microcontrolador atual pode dar conta de muito mais código do que o programa acima, então vamos acrescentar mais uma funcionalidade à aplicação: um led de status. A função desse led é indicar que o microcontrolador está ligado e funcionando, para isso faremos ele piscar em ciclos de 1 segundo, ficando meio segundo apagado e meio segundo aceso. Assumindo que seja usado o pino P3 para ativar o led, poderia ser feita uma implementação como o programa abaixo:


#define mnPin     P1
#define pinAlarm  P2
#define pinStatus P3
 
#define on  1
#define off 0
 
void main()
{
    // inicializacão
    setDigitalInput(mnPin, HIGH_IMPEDANCE);
    setDigitalOutput(pinAlarm, LOW);
    setDigitalOutput(pinStatus, LOW);
 
    // loop principal
    while(1)
    {
        // monitoramento
        pinAlarm = !mnPin;
 
        // led de status
        pinStatus = on;
        delay(500);
        pinStatus = off;
        delay(500);
    }
}
 
A função delay() faz com que o processador espere a quantidade de milissegundos indicada no argumento. A cada iteração do loop principal, o programa agora verifica o pino monitorado, em seguida liga o led de status e espera meio segundo. A seguir o led de status é desligado e novamente há uma espera de meio segundo. Este código faz o que é pedido, mas agora cada iteração demora pelo menos um segundo para ser completada. Isso significa que se o pino P1 for para o nível baixo logo após ele ser verificado, pode demorar até um segundo para que o alarme seja ativado. Essa demora pode ser aceitável em algumas aplicações, mas também pode inviabilizar outras. Suponha que o alarme signifique uma sobrecarga elétrica no sistema e o mesmo sinal que ative o alarme também desligue o dispositivo sobrecarregado. Nesse caso, um segundo é tempo mais que suficiente para torrar o dispositivo que deveria estar sendo protegido.

Mas então como fazer para piscar o led de um modo não-bloqueante? Veja o código abaixo:


#define mnPin     P1
#define pinAlarm  P2
#define pinStatus P3
 
void blinkStatusLed()
{   static uint32 nextToggle = 0;
 
    if(getMs() >= nextToggle)
    {
        pinStatus = !pinStatus;
        nextToggle = getMs()+500;
    }
}
 
void main()
{
    // inicializacão
    setDigitalInput(mnPin, HIGH_IMPEDANCE);
    setDigitalOutput(pinAlarm, LOW);
    setDigitalOutput(pinStatus, LOW);
 
    // loop principal
    while(1)
    {
        // monitoramento
        pinAlarm = !mnPin;
 
        // led de status
        blinkStatusLed();
    }
}
 
A função getMs() faz parte da biblioteca do Wixel e retorna a quantidade de milissegundos decorridos desde que o microcontrolador foi ligado. Uma função com essa funcionalidade existe nas bibliotecas da maioria dos microcontroladores, talvez com outro nome. De qualquer forma, a função permite medir intervalos de tempo em milissegundos.

A nova implementação do programa acrescenta a função blinkStatusLed() que cuida de piscar o led de status. Veja que não há mais chamadas à função delay(). Em vez disso, a variável estática nextToggle armazena quando deverá ser feita a próxima mudança de estado do led somando o valor 500 ao valor retornado por getMs() cada vez que o led muda de estado.

A grande diferença entre esta implementação e a anterior, é que novamente o pino será monitorado milhares de vezes por segundo, já que não existe mais nenhuma espera no processamento. Apesar disso, o led irá piscar em ciclos de 1 segundo, conforme foi especificado.

Led de status piscante

Uma maneira simples de resolver a questão do tópico anterior seria fazer com que o led de status fique sempre aceso em vez de piscar. Isso tornaria o código muito mais simples. Na verdade, o led poderia ser ativado ainda na inicialização e não seria necessário nenhum código dentro do loop principal. Isso simplifica o programa, mas retira uma importante informação de debug. A função do led de status não é só indicar que o microcontrolador está ligado, mas ele também deve informar se a execução está seguindo seu fluxo normal ou se ficou presa em algum loop ou função. Se o led de status está configurado para piscar e em determinado momento ele passa a ficar sempre aceso ou sempre apagado, isso indica que o programa pode ter travado em algum ponto e não está mais seguindo o fluxo normal de processamento. Um led de status que fique sempre aceso não daria essa informação.

Medir tempo com operações bit-a-bit

Como citado, a maioria dos microcontroladores oferece em suas bibliotecas uma função que informa a quantidade de milissegundos decorridos desde a ativação. O valor retornado por essa função é sempre um inteiro positivo. Se analisarmos o comportamento dos bits que compõe esse valor em binário, vamos perceber que cada bit muda de estado em intervalos de tempo bem determinados. Apenas como referência, vamos chamar o bit menos significativo de bit 0, o segundo bit menos significativo de bit 1 e assim por diante.

Se em determinado momento o bit 0 desse valor for 1, no milissegundo seguinte ele será 0 e no próximo milissegundo ele será 1 novamente e assim por diante. Então ele muda de estado a cada milissegundo. Já o bit 1 só vai mudar de estado a cada dois milissegundos, o bit 2 muda de estado a cada 4 milissegundos, o bit 3 muda a cada oito milissegundos e assim por diante dobrando o intervalo a cada incremento de ordem do bit.

Então se precisarmos medir algum intervalo de tempo fixo (por exemplo para a mudança de estado de um led de status) e se esse intervalo for próximo de alguma potência de dois, é muito mais eficiente, rápido e econômico usar os bits do contador de milissegundos do que criar uma variável estática, somar uma valor a ela, comparar o valor da variável com o valor do contador e etc, como foi sugerido acima.

No exemplo anterior foi implementado um código para piscar o led de status a cada meio segundo usando uma variável estática. Meio segundo significa 500 milissegundos e 500 não é uma potência de dois, mas 512 é (2 elevado a 9) e também é um valor próximo o suficiente de 500 para ser aceitável como aproximação nesta aplicação. Veja abaixo uma nova implementação da aplicação do exemplo, agora usando o contador de milissegundos para piscar o led:


#define mnPin     P1
#define pinAlarm  P2
#define pinStatus P3
 
void main()
{
    // inicializacão
    setDigitalInput(mnPin, HIGH_IMPEDANCE);
    setDigitalOutput(pinAlarm, LOW);
    setDigitalOutput(pinStatus, LOW);
 
    // loop principal
    while(1)
    {
        // monitoramento
        pinAlarm = !mnPin;
 
        // led de status
        pinStatus = (getMs() >> 8) & 1;  // intervalos de 512 ms
    }
}
 
Operações bit-a-bit ocupam pouca memória e são extremamente rápidas, então este código é muito mais compacto e eficiente do que a versão anterior que usa a função blinkStatusLed(). Além disso, continua sendo não bloqueante.

Heart beat - Batida de coração

Podemos usar um bit do contador de milissegundos para medir um intervalo de tempo específico, como mostrado no tópico anterior, mas combinando vários bits do contador é possível produzir padrões bem interessantes simulando ritmos, por exemplo como o ritmo das batidas de um coração. O princípio é o mesmo da medição de intervalos, só que agora vamos usar mais de um bit para calcular o estado do led de status. Veja o código abaixo:

uint32 ms;
 
ms = getMs();
pinStatus = (ms >> 8) & (ms >> 6) & 1;

Agora, para que o pino de status fique em nivel alto, é preciso que o bit 9 e o bit 7 do contador estejam ambos com o valor 1. Veja que o bit 9 muda de estado a cada 512 milissegundos, então quando o esse bit estiver zerado o led ficará apagado não importa o estado do bit 7. Já o bit 7 muda de estado a cada 128 milissegundos, então no período em que o bit 9 assume o valor 1 (a cada 512 ms) o bit 7 muda de estado 4 vezes produzindo duas piscadas. Então o led vai dar duas piscadas, ficar meio segundo apagado e depois mais duas piscadas, etc. O efeito lembra bem uma batida de coração. Outros ritmos podem produzidos fazendo combinações diferentes de bits do contador de milissegundos.

sábado, 14 de setembro de 2013

Tutorial: Módulo de alimentação com o 7805

Reguladores de tensão são circuitos que na sua versão básica (e perfeitamente suficiente) são extremamente simples de projetar e montar. Existem chips que fazem quase todo o trabalho, só precisando de mais dois ou três componentes adicionais no circuito. Os dois chips mais populares para este serviço são o 7805 e o LM317. Os dois são baratos, fáceis de usar e fornecem corrente suficiente para alimentar todos os circuitos do robô. Se você não tem muita experiência com eletrônica, montar teus próprios reguladores de tensão é um ótimo exercício inicial e vai te dar a experiência necessária para encarar circuitos mais complexos.

Importante: O 7805 pode fornecer até 1A de corrente, o LM317 pode chegar a 1.5A. Isso é suficiente para alimentar todos os circuitos do robô, mas não é suficiente para alimentar os motores. Existem chips capazes de fornecer mais corrente, mas com um projeto adequado, os motores podem ser alimentados diretamente pelas baterias, sem necessidade de reguladores. Os reguladores citados acima são apenas para alimentar os circuitos.


O 7805

78xx é uma família de reguladores de voltagem lineares contidos em um circuito integrado. Normalmente é usado em em circuitos que requerem uma fonte regulada de energia que seja fácil de usar e barata. Nos circuitos integrados da família o xx é substituído por dois dígitos que indicam a voltagem de saída do regulador. Então o 7805 tem uma saída de 5 volts, o 7809 de 9 volts, o 7812 de 12 volts e assim por diante. Por ter uma saída fixa, ele não precisa de regulagens externas o que facilita muito seu uso. É um regulador antigo, o que significa que é bem confiável, está no mercado a muito tempo e tem sido amplamente usado em milhões de projetos. Tem todas as proteções internas possíveis, nos fóruns de eletrônica ele é tido como praticamente indestrutível. E é muito barato e fácil de achar. Com certeza esta é uma excelente escolha para o módulo de alimentação de um robô mais simples, especialmente se o aspirante a robot maker por trás do projeto não tiver muita experiência com eletrônica.

A desvantagem é que, pelo menos sua versão mais clássica, o LM7805 sempre foi muito ineficiente ao fazer a conversão da voltagem. Ao reduzir a voltagem, o excesso de energia é convertido em calor. Se o consumo de corrente ultrapassa algo como 500 mAh é necessário usar um dissipador de calor. A eficiência típica do LM7805 fica entre 40% e 50%, o que convenhamos, são valores horríveis. Quer dizer que metade da energia que entra nele é convertida em calor e a outra metade é entregue na saída estabilizada. Em um robô que usa bateria, esses valores são inaceitáveis. Ou seriam, se essa energia fosse muito significativa em relação ao consumo total. É preciso lembrar que o regulador de tensão está sendo projetado para alimentar os circuitos e não os motores.

De qualquer forma, 78xx não é apenas uma família de reguladores, agora já se tornou um padrão para reguladores de voltagem. Então é possível encontrar uma infinidade de reguladores "compatíveis" com 78xx. Isso significa que usam a mesma pinagem, apresentam o mesmo resultado, mas podem usar tecnologias completamente diferentes (mais modernas) e apresentar características bem diferentes do clássico LM7805. Por exemplo, o fabricante do QS7805 afirma que seu chip é capaz de converter uma entrada de 6,5v a 24v em uma saída regulada de 5v com uma eficiência que varia de 85% a 94%. Não esquenta ou esquenta muito pouco dispensando o dissipador de calor. A função, tamanho e espaçamento dos pinos do QS7805 é a mesma do LM7805, então é possível simplesmente retirar um LM7805 da placa e colocar um QS7805 no lugar e imediatamente ter um regulador muito mais eficiente e econômico.


Este chip na sua forma mais comum é encontrado no "package" TO-220, que é a embalagem com 3 pinos mostrada na foto abaixo:


LM7805-Pinout.jpg
Pinagem do 7805


O pino 1 deve ser conectado ao positivo da fonte de energia (a bateria). O pino central fica ligado ao terra (GND) e a saída com a voltagem regulada (5 volts) é obtida pelo pino 3. Teoricamente, dentro de condições muito ideais, o 7805 poderia até ser usado sozinho, sem nenhum outro componente, conforme mostrado no esquema abaixo. Mas nunca é uma boa ideia contar com condições ideais.



regulador1.jpg
Esquema de ligação do 7805


Capacitores

Capacitores podem ter vários usos na eletrônica, mas neste contexto eles servem como filtros de linha, absorvendo pequenos picos de energia e fornecendo energia quando a voltagem cai ligeiramente.

Quando o circuito é ligado, um capacitor que tenha seus terminais conectados aos polos da fonte de energia, vai absorver energia até ficar carregado com a voltagem fornecida, a partir daí ele não absorve mais, mas fica carregado. Se a voltagem cair ele começa a se descarregar liberando energia para o circuito até que o capacitor e o circuito se equilibrem na mesma voltagem. Um pico de voltagem na fonte de energia vai ser em boa parte absorvido pelo capacitor, porque ele vai tentar se carregar até o nível do pico, absorvendo parte dele. Depois que o pico passa e a voltagem volta ao normal o capacitor começa a liberar a energia absorvida durante o pico gradativamente até se equilibrar com a voltagem do circuito.

Devido a esse comportamento, capacitores costumam ser usados na entrada e na saída de energia para eliminar ou pelo menos diminuir flutuações de energia.

Existem vários tipos de capacitores. Para esta aplicação é comum o uso de capacitores eletrolíticos. Estes capacitores podem ser encontrados em uma variedade muito grande de valores, desde 1uF até 1MF. Também são baratos e facilmente encontrados em lojas de eletrônica.


Caps-3.jpg
Capacitores eletrolíticos.

Há dois valores que são relevantes a respeito de um capacitor: sua capacitância e sua voltagem máxima. A capacitância se refere à quantidade de energia que o capacitor consegue armazenar e é expressa em Farads (F). A voltagem máxima indica com até quantos volts ele pode ser carregado sem que algo de ruim aconteça. É recomendado usar capacitores com uma voltagem máxima que seja pelo menos o dobro da voltagem nominal do circuito para garantir que ele não frite com um pico de energia. Então se o circuito é alimentado por baterias de 12 volts, seria recomendado que os capacitores tenham uma voltagem nominal de pelo menos 24 volts. Não tem nenhum problema usar capacitores com uma voltagem máxima maior. A desvantagem é que eles serão maiores, mais caros e ocuparão mais espaço no circuito.

Voltando ao nosso circuito, acrescentar capacitores na entrada e na saída de energia vai tornar a saída do nosso regulador mais estável e oferecer alguma proteção contra picos de energia. Os valores mais comuns para esta aplicação são de 100uF na entrada e de 10uF na saída. Abaixo o esquema do regulador com os capacitores.


regulador2.jpg
Observações: Capacitores eletrolíticos são polarizados, isso significa que seus terminais precisam ser conectados nos polos certos. Inverter os polos de um capacitor eletrolítico faz com que ele perca o isolamento interno e fique definitivamente danificado. Todos eles tem uma faixa com um sinal de menos. Essa faixa indica o terminal que deve ser ligado ao terra (ou negativo).


Diodos

Diodo é o mais simples tipo de semicondutor. É um componente com dois terminais que tem a interessante característica de só deixar passar corrente em um sentido. Então ele é muito usado para proteger circuitos contra inversão de polaridade. Acrescentar um diodo à entrada de energia do circuito garante que ele só vai ser alimentado com a polaridade certa. Se alguém inverter os polos da bateria, o circuito simplesmente não funciona em vez de torrar os capacitores como poderia acontecer. O 7805 tem proteção interna contra inversão de polaridade, mas os capacitores eletrolíticos não têm e são muito sensíveis à inversão de polos.



diode.jpg

Abaixo o esquema já com o diodo de proteção.



regulador3a.jpg




Interruptor

Isto é meio que óbvio, mas não pode ser esquecido. É preciso ter uma chave geral que ligue/desligue a alimentação do robô e o melhor local para isso é no circuito de alimentação. Para ser efetivo, o interruptor deve estar conectado à entrada de energia, não faz muita diferença em qual polo. No circuito acima o interruptor pode ser conectado imediatamente antes ou depois do diodo, ou ser instalado no polo negativo da bateria (GND), como no esquema abaixo:


regulador4.jpg


Led de status

Uma indicação visual que mostre se o circuito está ligado ou desligado é extremamente importante e evita problemas futuros. Para esse fim é comum o uso de leds. Tecnicamente, leds são diodos, só deixam passar corrente em um sentido, mas eles têm essa característica de emitir luz quando tem corrente passando por eles. Leds são muito práticos, mas também são bastante sensíveis, existe um limite de corrente que eles podem suportar e que depende do tipo do led. Para este tipo de aplicação, o mais indicado é usar leds comuns de 3mm. Estes leds não consomem muita corrente então não interferem muito no consumo de energia.


leds.jpg
exemplo de leds comuns com 5mm (à esquerda) e 3mm (direita). 5

Para limitar a corrente que passa pelo led, é necessário usar um resistor. Resistores são componentes que, como o nome indica, apresentam resistência à passagem de corrente. Então a corrente é obrigada a diminuir sua intensidade sempre que passa por um resistor. Para leds comuns de 3mm alimentados com 5 volts, podem ser usados resistores de 220 a 470 ohms. Quanto maior o valor do resistor, menos corrente irá passar e o led vai acender com menos intensidade. Valores mais baixos fazem o led acender com mais intensidade, mas diminuem a vida útil do led.

O melhor lugar para posicionar o led é próximo à saída do circuito, como mostrado no esquema abaixo:


regulador5.jpg


Alimentação dos motores

Se estivéssemos fazendo apenas um regulador de tensão para 5 volts, já estaria pronto com o esquema acima. Mas o robô precisa de um pouco mais do que um regulador de tensão, ele precisa de um módulo de alimentação. Apesar de os motores não usarem a saída regulada de 5 volts, eles ainda precisam ser alimentados e já que estamos fazendo um circuito de alimentação, não custaria muito e facilitaria bastante se este circuito já tivesse também uma saída própria para os motores.

Se, como sugerido, a bateria fornece uma voltagem adequada para os motores, podemos simplesmente acrescentar um conector conectado ao positivo da bateria e ao terra do circuito. Se a conexão ao positivo for feita depois do diodo D1, então também os motores ficarão protegidos contra inversão de polaridade:



regulador6.jpg


Mas o nosso módulo de alimentação ainda tem um problema. Note que toda a energia consumida pelo robô, incluindo motores e circuitos, passa pelo diodo D1. Os diodos da família 1N400x só suportam no máximo 1 amper. Os circuitos do robô não consomem muita corrente, mas por segurança, vamos considerar que em conjunto consumam 500 mAh. Já os motores vão consumir pelo menos 500 mAh cada um, embora isso dependa muito do motor. Também são comuns motores de passo que consomem 1 amper/h cada.

De qualquer forma, o total de corrente que vai passar pelo diodo é maior que seu limite máximo de 1 amper e portanto ele não vai aguentar. Para esse problema existem 3 soluções:


  1. Usar um diodo com mais capacidade de corrente. Esta é a melhor opção. O diodo 1N5408 consegue suportar até 3A. Não é caro, só é mais difícil de achar do que os diodos da família 1N400x. Existem também opções acessíveis que suportam até 6A. Mais do que isso os diodos começam a ficar grandes e caros demais para este projeto.
  2. Pegar a saída para os motores antes do diodo D1. Nesse caso apenas a corrente que alimenta os circuitos é que passa pelo diodo, mas não a corrente que alimenta os motores. É uma solução simples, mas a proteção para os motores é perdida.
  3. Usar dois (ou três) diodos em paralelo. Ao passar por diodos em paralelo, a corrente se divide por eles. Por exemplo, se o robô está consumindo no total 1600 mAh, então dois diodos em paralelo só terão que suportar 800 mAh cada um, ficando dentro dos limites de operação deles.

Abaixo o esquema do módulo de alimentação usando dois diodos em paralelo. Importante lembrar que dependendo do consumo dos motores usados, dois diodos podem não ser suficientes, nesse caso é necessário acrescentar mais diodos ou usar diodos com maior capacidade de corrente.



regulador7.jpg

Ultracapacitores

No post anterior eu falei sobre baterias e aproveitando o assunto, resolvi falar um pouco desta tecnologia que muito em breve vai fazer parte do nosso dia-a-dia.

Capacitores

Capacitores em geral são formados por duas superfícies condutoras muito próximas, mas separadas por algum material isolante (dielétrico). Quando essas duas superfícies são conectadas aos polos de uma fonte de corrente contínua, elas são carregadas com cargas opostas. Estas cargas estão isoladas pelo dielétrico, mas muito próximas. Próximas o bastante para produzir um campo eletro-magnético com intensidade suficiente para criar uma força de atração entre as cargas dos dois lados. É essa atração entre as cargas opostas que permite que a energia seja mantida no capacitor, mesmo que ele seja retirado do circuito. Então ele realmente é capaz de armazenar energia. 

A ideia de usar capacitores para alimentar dispositivos elétricos não é nova, na verdade é bem antiga, o problema é que a quantidade de energia que um capacitor comum consegue armazenar é ridiculamente baixa, mesmo quando comparado a uma pilha AA comum. Claro que a tecnologia vem evoluindo e hoje temos capacitores mais eficientes e com muito maior capacidade que algumas décadas atrás. 

A capacidade de carga de um capacitor depende de muitos fatores, mas principalmente de duas variáveis: a área superficial das placas condutoras e a distância entre elas. Quanto maior a área da superfície das placas, mais carga é possível armazenar nelas. Quanto mais próximas estiverem as placas, mais intenso será o campo eletro-magnético e maior será a atração entre as cargas dos dois lados.

Uma solução que vem sendo empregada a muito tempo para aumentar a superfície das placas é usar finíssimas folhas de metal condutor enroladas em bobinas com um material dielétrico entre elas, isso permite aumentar bastante a superfície das placas sem aumentar muito o tamanho do capacitor. 




Também no material dielétrico houve muita evolução, sempre buscando materiais que permitam diminuir a distância entre as placas sem perder o isolamento elétrico.


Ultracapacitores

Ou megacapacitores ou supercapacitores, usam uma abordagem um tanto diferente das clássicas placas condutoras. Como citado, a capacidade de armazenamento depende da área da superfície do material condutor e da espessura do dielétrico entre os dois polos. Nos ultracapacitores não há exatamente placas e nem folhas metálicas, o que existe é uma nano-estrutura esponjosa de carbono ativado fazendo o papel de uma das placas (eletrodo). Justamente por ser uma estrutura porosa, a área da superfície resultante é enorme mesmo em uma porção diminuta do material. 

Para o que seria a segunda placa, no ultracapacitor 
é usado um líquido condutor chamado de eletrólito. O que ocorre é que a esponja de carbono é mergulhada no eletrólito que penetra pelos seus poros permeando toda a estrutura. Então toda a superfície da estrutura de carbono entra em contato com o líquido. Esse contato produz uma reação química que cria uma película isolante entre o carbono e o eletrólito, que acaba funcionando como dielétrico. 

Portanto além de o eletrodo ter uma área superficial imensa em relação ao volume que ocupa, a espessura do dielétrico é da ordem de algumas moléculas. O resultado é um capacitor com uma capacidade de carga que pode ser centenas de vezes maior que um capacitor comum do mesmo tamanho.


Ultracapacitores

Estes capacitores ainda são muito caros e mesmo tendo uma capacidade de carga muito maior que capacitores comuns, ainda não conseguem competir com baterias mais tradicionais em quantidade de carga armazenada, então o custo benefício não é tão favorável assim, mas isso está mudando. Conforme estes componentes se popularizarem, a produção tende a ficar mais barata. E quanto à capacidade de carga, eles ainda estão no início de sua evolução, muito pode ser pode ser melhorado em uma tecnologia tão recente.

Carga e descarga

Mas mesmo depois que os ultracapacitores baratearem e evoluírem, ainda assim as baterias químicas vão continuar tendo seu espaço em projetos de eletrônica. As características de carga e descarga são na prática opostas quando comparamos as duas tecnologias. 


Ao contrário das baterias químicas, um ultracapacitor tem uma resistência interna praticamente desprezível, então nada limita a corrente durante a carga e descarga. Isso significa que ele pode ser carregado em segundos, ou talvez em frações de segundo. Também quer dizer que o capacitor é capaz de entregar toda a energia armazenada nele de uma só vez em um pulso super-potente.

Essa característica torna os ultracapacitores apropriados para aplicações onde é necessário usar uma grande quantidade de energia em um intervalo de tempo muito curto. Por exemplo, estes capacitores já estão sendo usados para alimentar motores de partida de caminhões.

Na verdade o problema com os ultracapacitores é justamente conseguir que entreguem lentamente, um pouco por vez, a energia que armazenam como fazem as baterias químicas. Para conseguir isso é necessário acrescentar um circuito limitador de corrente, que como todo circuito, vai consumir alguma energia diminuindo a eficiência do capacitor.

Já as baterias químicas dependem de reações químicas para armazenar e fornecer energia. Então embora possam ter uma capacidade de armazenamento de energia muito grande, não podem ser carregadas rapidamente e nem fornecer energia em grande quantidade, mesmo por um período curto de tempo. Mas são perfeitas para alimentar dispositivos de baixo consumo por longos períodos de tempo.

Sistemas híbridos

Não demorou muito para que surgisse a ideia de combinar os ultracapacitores com baterias químicas para juntar as vantagens das duas tecnologias. Um sistema misto usando baterias e ultracapacitores é capaz de prover um fornecimento constante de baixa corrente por um longo período de tempo e eventualmente, quando for necessário, fornecer por um breve período uma descarga de alta potência. 

Sistemas de som automotivo já usam dispositivos com ultracapacitores para alimentar os subwoofers e evitar danos à bateria do carro. O consumo de energia em sistemas de som de alta potência varia de acordo com a música. Em momentos de uso intensivo dos subwoofers, o consumo pode atingir níveis que a bateria do carro não consegue suprir. Nesses momentos o ultracapacitor entra em cena complementando o suprimento de energia. Circuitos embutidos no dispositivo cuidam da carga e descarga dos capacitores e podem oferecer recursos como auto desligamento, voltímetros, leds de status e outros.

Essas belezinhas são caras, mas sua potência impressiona. Na foto abaixo um ultracapacitor de 50 Farads para sistemas de som automotivos. Se fosse carregado com 16 volts e descarregasse toda a energia armazenada em 1 segundo, a potência liberada seria de 6,4 kW/s. 


Ultracapacitor automotivo de 50 Farads




quarta-feira, 12 de junho de 2013

Baterias

A escolha das baterias depende essencialmente dos motores, eles é que vão exigir mais da bateria. Motores de passo de 12 volts são bastante comuns, então 12 volts é um bom palpite inicial para a escolha das baterias. Mas além da voltagem, uma questão importante é a corrente (em miliAmperes/hora - mAh) que a bateria consegue fornecer. Independente da voltagem, quanto mais torque tiver um motor de passo, maior vai ser o consumo de corrente. Motores com torque suficiente para carregar o peso deles próprios, das baterias, do chassis e tudo o mais que for colocado nele, provavelmente vão gastar pelo menos 400 mAh cada um, então seria uma boa ideia que a bateria tivesse uma capacidade de fornecimento de corrente de pelo menos 3000 mAh para que não esgote muito rapidamente. Baterias de 12 volts com essa capacidade podem ser relativamente grandes e pesadas, mas existe a opção de combinar baterias com menor voltagem para conseguir a voltagem necessária. Por exemplo, é possível ligar em série 10 pilhas AA recarregáveis e assim conseguir os 12 volts. Pilhas AA recarregáveis com até 3600 mAh de corrente são facilmente encontradas no mercado. Mas atualmente existem muitas outras opções.



Células

Todas as diferentes tecnologias de baterias recarregáveis usam células básicas de armazenamento que tem uma voltagem fixa. As baterias propriamente ditas, são sempre combinações destas células. Por exemplo, as baterias de chumbo ácido tem células capazes de fornecer nominalmente 2 volts. Então, qualquer bateria de chumbo ácido vai fornecer uma voltagem que é um múltiplo de 2, já que combinará internamente células de dois volts. Em algumas tecnologias é possível empacotar células isoladas na forma de pilhas AA ou AAA, o que pode facilitar o uso e instalação no robô.


Chumbo ácido

A opção mais barata são as baterias seladas de chumbo ácido. É uma tecnologia antiga, muito conhecida e confiável, são seguras, não exigem muito controle ou manutenção e têm uma boa vida útil: cerca de 4 anos se for bem cuidada. Na verdade a tecnologia é tão conhecida e relativamente simples (pelo menos em princípio), que é possível produzir uma de forma caseira como mostra este vídeo do Ponto Ciência.

Para quem está iniciando seus estudos em robótica, esta é uma boa opção, porque são baratas, fáceis de encontrar em lojas de eletrônica e similares e não exigem muito conhecimento técnico para sua operação e manutenção. A desvantagem é que são bem volumosas e pesadas. Suas células usam chumbo, então não podem mesmo ser leves. Além disso são bem agressivas ao meio ambiente quando descartadas de forma incorreta. Não bastasse o chumbo, elas também contém ácido sulfúrico. Por lei, estas baterias precisam ser entregues em algum ponto de venda no final de sua vida útil para que possam ser recicladas de forma adequada.


Bateria de chumbo-ácido
As primeiras configurações do Robit usavam uma bateria bem parecida com essa da foto acima. Ela pesa um pouco mais de meio quilo e isso é um peso imenso para os fracos motores reaproveitados de sucata que ele usa. Mesmo assim ele conseguia se mover, embora não tivesse força para vencer nenhum obstáculo que aparecesse na frente, qualquer desnível no solo já era suficiente para fazer os motores perderem passos:






Hidreto metálico de níquel - NiMh

Em um nível acima estão as baterias de hidreto metálico de níquel (NiMh). São as sucessoras das baterias de Niquel-cádmio (NiCd). Conseguem mais densidade de carga com menos volume e peso que suas antecessoras e de quebra ainda são ecologicamente corretas por não conterem metais pesados (como o cádmio e o chumbo) que agridem o meio ambiente.

Apesar de serem mais caras que as baterias de chumbo ácido, o preço delas é bastante acessível e também são facilmente encontradas no comércio em geral. A relação entre densidade energética e peso é muito mais favorável do que nas baterias de chumbo ácido. Para se ter uma ideia, para obter a mesma quantidade de energia armazenada em uma bateria NiMh que pesa um quilo, seria preciso uma bateria de chumbo-ácido que pesasse quase 3 quilos.

Uma outra vantagem deste tipo de bateria é que pode ser encontrada no formato de pilhas AA ou AAA. Isso permite muita flexibilidade na combinação de células. Por exemplo, as baterias da foto abaixo têm uma tensão nominal de 1,2 volts e fornecem 2300 mAh. Combinadas em série, forneceriam 4,8 volts e 2300 mAh, ou poderiam ser combinadas em série e paralelo para fornecer 2,4 volts e 4600 mAh, ou ainda todas em paralelo fornecendo 1,2 volts e 9200 mAh.



Baterias de hidreto metálico de níquel




Li-Po - Polímero de lítio

A opção top do momento são as baterias Li-Po (Polímero de Lítio), favoritas dos modelistas, são as que conseguem mais densidade de carga com menor peso e volume. Por exemplo, em relação às baterias NiMh, elas podem armazenar quase o dobro da carga por unidade de peso. Mas são bem mais caras que as outras opções e exigem acessórios e cuidados especiais. O carregador tem que ser próprio, especial para baterias Li-Po, não serve qualquer um e quase sempre têm um preço bem salgado, já que o carregador precisa de algum nível de inteligência para fazer a carga com segurança. Além disso é extremamente importante monitorar constantemente o nível de carga delas, mesmo quando não estão sendo usadas. Uma bateria Li-Po não pode ser completamente descarregada nunca, se a carga baixar além de um limite mínimo a bateria perde a capacidade de ser regarregada. E atenção: estas baterias são tão poderosas e potencialmente perigosas que devem ser tratadas como combustível, não como simples baterias. O uso descuidado destas baterias pode provocar incêndios e até explosões. Esta não é uma opção para iniciantes, alguma experiência é necessária para usar este tipo de bateria, além é claro, de verba para gastar.


Bateria LiPo


LiFe - Litio Ferro Fosfato


Esta é uma tecnologia um pouco mais antiga do que as baterias Li-Po, mas só nos últimos anos é que se tornou mais acessível para os usuários. Em quase todos os aspectos baterias LiFe são melhores do que as baterias Li-Po, menos no quesito peso. Elas são cerca de 30 a 40% mais pesadas do que baterias Li-Po com a mesma capacidade de energia. Mas as vantagens são muitas. Não explodem nem incendeiam, não sobrecarregam, não perdem carga por falta de uso, não são tóxicas, podem ser recarregadas cerca de 1000 vezes (contra 200 vezes nas Li-Po), não se danificam quando a carga é zerada e finalmente tem um preço mais acessível especialmente por conta dos acessórios que a Li-Po exige e que para a LiFe não são necessários, ou são bem mais baratos.

Considerando que a única desvantagem é o peso, se o robô não tiver que voar, esta é uma opção muito boa para a alimentação dele.


.
Célula de bateria LiFe



Pack que internamente combina várias células

.

Li-Ion - Íon Lítio

Esta é uma tecnologia bem parecida com a das baterias Li-Po, ambas usam o lítio como matéria prima, mas existem algumas diferenças importantes. Em relação ao peso, as Li-Po continuam imbatíveis, conseguem uma densidade de carga maior por unidade de peso. As Li-Po usam um polímero flexível em sua composição, isso permite que as células tenham formatos variados, já nas baterias Li-Ion as células são sempre cilíndricas e um tanto avantajadas. Embora pareçam pilhas AA, as baterias da foto abaixo são bem maiores. Pilhas AA medem 5cm de altura, estas medem 7cm. Também no preço, a diferença é grande, o custo das baterias Li-Ion é muito inferior ao das Li-Po e tem um desempenho bem parecido. No mais são bem parecidas, os mesmos cuidados de manuseio precisam ser tomados com ambas.



Baterias Li-Ion
Muito importante: Células de baterias Li-Ion têm uma vida útil curta e isso não depende do uso que é feito dela. A liga de lítio usada é ainda um tanto instável e começa a se deteriorar assim que sai da fábrica. A duração média é de dois anos, depois disso precisam ser trocadas não importa se foram usadas ou não, se resolver comprar este tipo de baterias, tenha certeza que não é de um estoque antigo.


Li-Ion com PCB

Talvez por conta de suas células avantajadas, tem sido produzidas pilhas de Li-Ion com uma pequena placa de circuitos em um dos polos da bateria. Isso dá alguma inteligência para a bateria.

É chamado de Protection Circuit Board - PCB, como ele fica em um dos polos, toda carga e descarga precisa passar por ele, o que lhe dá condições de interferir no processo de carga ou descarga. Isso faz uma enorme diferença na segurança do usuário da bateria. Quando a bateria está sendo carregada, esse circuito monitora o nível de carga e interrompe o carregamento quando a célula chega na sua carga máxima. Isso torna a bateria muito mais segura porque evita incêndios e explosões decorrentes de excesso de carga. Também permite que os carregadores sejam muito mais simples e baratos.


Célula Li-Ion com circuito de proteção interno


Tanto as baterias Li-Po quanto as Li-Ion não podem nunca ser completamente descarregadas, existe um limite mínimo de voltagem para cada célula, se a voltagem cair abaixo desse limite, a célula não pode mais ser recarregada. Durante o uso da bateria (descarga) esse circuito também fica monitorando o nível de carga para impedir que baixe além do valor mínimo, cortando o fornecimento de energia quando o limite é atingido. Além disso o PCB também é capaz de perceber um curto-circuito e cortar a energia imediatamente.

As baterias Li-Po também têm circuitos de proteção equivalentes, a diferença é que em geral existe um circuito para toda a bateria (que envolve várias células), ou um para cada série de células. Nas baterias Li-Ion esse circuito pode ser embutido em cada célula da bateria, proporcionando um nível de proteção muito maior e simplificando bastante a montagem de "packs" com várias células.


Packs de Li-Ion

Nos sites de compra chineses não é difícil encontrar "packs inteligentes" de várias células com um circuito embutido que facilita muito o uso da bateria. Inclusive estes circuitos podem conter reguladores de tensão e assim fornecer qualquer voltagem desejada, sem ficar limitado a múltiplos da voltagem das células. Estes packs vem com um carregador bem simples, já que todo o controle de carga é feito internamente, na verdade praticamente qualquer carregador que forneça a voltagem e amperagem apropriadas serve para carregar a bateria. Além disso contam com um interruptor que liga/desliga a bateria que pode perfeitamente ser a "chave geral" do robô. A bateria da foto abaixo consegue fornecer (nominalmente) 12 volts e 6800 mAh e pesa cerca de 200g.


Pack de bateria Li-Ion com circuito de carregamento interno.


Também é fácil de encontrar "cases" ou "boxes" para células Li-Ion. Estes cases são exatamente a mesma coisa que o pack acima, mas vêm vazios, sem as células. O usuário deve comprar as células à parte. A vantagem é que é fácil de substituir as células sempre que necessário, sem perder o "case".





Abaixo uma tabela comparando a quantidade de energia (em Watts/hora) que pode ser armazenada em uma bateria pesando 1 quilo:




Tipo Potência/Kg
LiPo 180-200 Wh (?)
Li-Ion 150 Wh
NiMh 60-100 Wh
Chumbo ácido 25 Wh


terça-feira, 4 de junho de 2013

Roteiro inicial

Vou tentar sugerir aqui um roteiro inicial de estudo para a criação/projeto de um robô próprio.


1) Portas

É uma boa ideia ter como recurso um computador controlando ou pelo menos se comunicando com o robô. Computadores se comunicam e/ou controlam outras coisas através de suas portas. LPT, COM, USB, miniDIN, PS e por aí vai, tem uma infinidade de siglas para designar todas as portas que um computador suportou ou suporta atualmente. Em teoria, qualquer porta poderia ser usada, já que todas têm alguma capacidade de comunicação, mas na prática, algumas são mais práticas do que outras. A LPT (vulga porta paralela) que era usada com as impressoras mais antigas seria um bom início por ser extremamente simples de usar e com recursos suficientes para controlar um robô bastante aceitável. Mas infelizmente é espécime em extinção, está cada vez mais difícil encontrar computadores que ainda tenham uma porta LPT, então investir em porta paralela talvez não seja uma boa opção.

A bola da vez atualmente é a porta USB. Altas taxas de transmissão e aumentando, capacidade de endereçamento, alimentação elétrica de pequenos dispositivos, plug-and-play, entre outras bem-feitorias, fizeram da porta USB a escolha preferida de quase todos os fabricantes de periféricos para computadores.

O domínio da porta USB em toda sua potencialidade não é tão simples e trivial, mas pode ser alcançado. Enquanto isso, existem (e são largamente usados na robótica) simuladores de porta COM para portas USB. Dessa forma, um programa "enxerga" a porta USB como se fosse uma porta COM e pode ler e enviar bytes pela porta usando comandos e bibliotecas para porta COM. Isso simplifica muito o uso da porta USB, embora com o custo de perder acesso a algumas de suas habilidades.

Então o primeiro desafio do neófito aspirante a robot maker é aprender a usar alguma porta do computador.


2) Motores

Para este contexto, robôs precisam ser capazes de algum tipo de movimento e para isso usam atuadores. Atuadores podem ser de diversos tipos, cores e sabores, mas o atuador que nos interessa no momento é o motor elétrico. Existem muitos tipos de motores, assim como existem muitos tipos de robôs. Mas para fazer um robô de pequeno-médio porte, capaz de se mover usando rodas ou esteiras, o mais indicado são dois tipos de motores: motores DC e motores de passo.

Os motores DC são muito populares porque são mais baratos, podem ser menores e consomem menos energia que os motores de passo. A grande maioria dos kits vendidos no mercado usa motores DC. Mas eles têm alguns problemas. O primeiro é que eles conseguem RPM's altos, mas têm pouco torque, então é necessário acoplar uma caixa de redução com engrenagens para diminuir a rotação e aumentar o torque. Não tem como fazer um controle de posição com motores DC, por isso todo robô que usa motores DC também precisa de encoders monitorando a quantidade de rotações das rodas. Finalmente o controle de velocidade não é muito simples, ou melhor, um bom controle de velocidade não é simples. A velocidade de um motor DC é diretamente proporcional à voltagem fornecida, quanto maior a voltagem, mais rápido ele gira. Então é possível controlar a velocidade apenas através de resistores ou um potenciômetro, mas essa técnica, apesar de simples, desperdiça muita energia nas resistências e aí o motor DC perde sua principal vantagem em relação ao motor de passo. A maneira indicada de controlar a velocidade de motores DC é através da técnica de PWM. Em vez de a alimentação ser contínua, o motor é alimentado em pulsos sendo ligado e desligado bem rapidamente muitas vezes por segundo. A cada pulso o motor fica ligado por um tempo e desligado em seguida. Controlando o tempo que ele fica ligado e desligado é possível controlar a velocidade do motor. Por exemplo se for usado um pulso onde o tempo ligado é igual ao tempo desligado, o motor vai girar na metade da velocidade que atingiria se ficasse com a alimentação continua e, mais importante, vai consumir a metade da energia . Essa técnica, em vez de desperdiçar energia com resistências, economiza energia já que o motor não fica ligado o tempo todo.

Já os motores de passo são maiores, mais pesados e mais gulosos do que motores DC com torque equivalente. Mas no quesito precisão são imbatíveis. É possível ter completo controle do giro do motor e sem precisar de sensores como encoders nas rodas. Na minha opinião, é a melhor escolha para um programador iniciar na robótica. Além da precisão no posicionamento, é essencialmente um dispositivo digital, pode ser facilmente conectado e controlado por um computador, sem ser necessário nenhum procedimento ou hardware muito complexo. Alguma informação extra sobre motores de passo pode ser encontrada aqui.

De início é extremamente importante saber a diferença entre motores de passo unipolares e bipolares, então aconselho aprender um pouco sobre o assunto antes de sair comprando motores de passo.


Dois motores de passo e um motor DC extraídos de uma impressora sucateada.


Motores de passo são facilmente encontrados em impressoras sucateadas. A maioria das impressoras têm internamente três motores, sendo dois de passo e um DC (corrente contínua). É fácil reconhecer o tipo do motor pela quantidade de fios que saem dele. Motores DC tem só dois fios. Motores com 4 fios, são motores de passo bipolares. Motores com 5 fios são unipolares. O prêmio é encontrar na impressora um motor com 6 fios. Este tanto pode ser usado como bipolar ou unipolar, dependendo de como os fios são conectados. Se conseguir motores em impressoras velhas, aí não tem muito o que escolher, mas se decidir comprar um motor de passo, a melhor opção é um motor com 6 fios. Qual a vantagem? No início de seus estudos, você pode ligar esse motor como unipolar e assim usar um circuito de controle muito mais simples, fácil e barato. Mais tarde, quando tiver um pouco mais de experiência e achar que a vida está fácil demais, você pode incrementar o robô e colocar um circuito de controle bipolar. Isso vai dar mais torque para os motores e vai exigir menos da bateria, mais força com menos energia é um bom up-grade. E sem ter que trocar de motor.

Outro motivo que torna o estudo de motores importante nesta fase inicial é que na prática, a escolha do motor influi em quase todo o projeto do robô. A bateria precisa ser dimensionada em função dos motores. O conjunto motores-bateria é o que mais influi no projeto do chassis do robô, afinal são os componentes maiores e mais pesados. E cada tipo de motor precisa de uma eletrônica diferente. As placas que controlam ou dão potencia aos motores precisam ser compatíveis com o tipo do motor. Além disso, também tem o software que vai gerar os sinais para controlar os motores, cada tipo de motor exige um algoritmo diferente.
Então motores são a escolha mais crítica no projeto de um robô, é uma boa ideia dedicar bastante atenção a esse assunto.


Voltagem

Sobre a voltagem dos motores, motores de 12 volts são bastante comuns, especialmente quando retirados de impressoras sucateadas. Mas existem motores de passo em diversas voltagens, desde 2,7 volts, até motores de 24 volts ou mais e isso não está diretamente relacionado com a capacidade de torque do motor. Um motor de 2,7 volts pode ter muito mais torque (e um consumo de corrente muito maior) que um motor de 12 volts. Então pelo critério do torque e do consumo, a voltagem de operação do motor não faz muita diferença. Mas a voltagem faz toda a diferença na escolha das baterias. Os motores no final terão que ser alimentados por baterias e também terão que carregar o peso da bateria. Baterias de 12 volts com uma capacidade de fornecimento de corrente aceitável (3000 mAh ou mais) podem ser grandes e pesadas, tanto que podem chegar a inviabilizar alguns motores menos potentes, forçando a escolher motores maiores, o que vai exigir mais da bateria. Mas atualmente existem opções de baterias leves e potentes.

Sobre isso tem mais um ponto a considerar. Motores de passo são ativados mais pela corrente do que pela voltagem. Na verdade não faz muita diferença quantos volts você fornece ao motor, desde que ele receba sua cota de corrente. A voltagem nominal de um motor de passo apenas indica a voltagem necessária para atingir a corrente que ele drena, considerando a resistência das bobinas internas.


3) Baterias

Como citado, a escolha das baterias depende essencialmente dos motores, eles é que vão exigir mais da bateria. Motores de passo de 12 volts são bastante comuns, então 12 volts é um bom palpite inicial para a escolha das baterias. Mas além da voltagem, uma questão importante é a corrente (em miliAmperes/hora - mAh) que a bateria consegue fornecer. Independente da voltagem, quanto mais torque tiver um motor de passo, maior vai ser o consumo de corrente. Motores com torque suficiente para carregar o peso deles próprios, das baterias, do chassis e tudo o mais que for colocado nele, provavelmente vão gastar pelo menos 500 mAh cada um, então seria uma boa ideia que a bateria tivesse uma capacidade de fornecimento de corrente de pelo menos 3000 mAh. Baterias de 12 volts com essa capacidade são relativamente grandes e pesadas, mas existe a opção de combinar baterias com menor voltagem para conseguir a voltagem necessária. Por exemplo, é possível ligar em série 10 pilhas AA recarregáveis e assim conseguir os 12 volts. Pilhas AA recarregáveis com até 3600 mAh de corrente são facilmente encontradas no mercado. Mas atualmente existem muitas outras opções.

Sobre os tipos de baterias mais comuns disponíveis no mercado, veja este post.

4) Circuito de alimentação

Esta é uma parte extremamente importante do robô. Conforme-se com o fato que o teu robô vai precisar de pelo menos duas voltagens diferentes e dependendo  do caso pode chegar a três. Os circuitos integrados geralmente funcionam com 5 volts, mas alguns (algumas versões do arduíno, por exemplo) funcionam com 3.3 volts. Já para os motores, depende do motor, tem motores de todas as voltagens, mas é bom contar com menos 9 volts e melhor ainda 12 volts. Uma boa opção de alimentação é usar baterias capazes de fornecer a voltagem dos motores e usar reguladores de tensão para reduzir a voltagem para os 5 ou 3.3 volts exigidos pelos circuitos.

Reguladores de tensão são circuitos que na sua versão básica (e perfeitamente suficiente) são extremamente simples de projetar e montar. Existem chips que fazem quase todo o trabalho, só precisando de  mais dois ou três componentes adicionais no circuito. Os dois chips mais populares para este trabalho são o LM7805 e o LM317. Os dois são baratos, fáceis de usar e fornecem corrente suficiente para alimentar todos os circuitos do robô. Se você não tem muita experiência com eletrônica, projetar e montar teus próprios reguladores de tensão é um ótimo exercício inicial e vai te dar a experiência necessária para encarar circuitos mais complexos.

Importante: O LM7805 pode fornecer até 1A de corrente, o LM317 pode chegar a 1.5A. Isso é mais que o suficiente para alimentar todos os circuitos do robô, mas não é suficiente para alimentar os motores. Existem chips capazes de fornecer mais corrente, mas com um projeto adequado, os motores podem ser alimentados diretamente pelas baterias, sem a necessidade de reguladores. Os reguladores citados acima são apenas para alimentar os circuitos.

Veja neste post um tutorial sobre o uso do 7805.


5) Comunicação USB / Wireless
6) Microcontroladores
7) Sensores
8) Navegação
9) Captura de imagens