sábado, 29 de setembro de 2012

Arduino Uno (ou Duemilanove) Aplicada ao Controle de Estação de Recarga Doméstica (SAE-J1772, CA, Nível 2) - Parte 2

Aqui começaremos a PARTE 2 deste artigo! Se preferir voltar a PARTE 1, eis o linque de ligação:

O Arduino Uno (ou Duemilanove) Aplicado a uma EVSE (SAE-J1772 CA Nível 2) - Parte 1


Se desejar contextualizar melhor com o básico Equipamento de Abastecimento de Veículo Elétrico, veja estas postagens anteriores:

EVSE - Electric Vehicle Supply Equipment (Equipto de Abastec. de Veículo Elétr.) - Nível 1 e 2



Open-EVSE:

O termo Open-EVSE (em inglês, Open-Electric Vehicle Supply Equipment), em geral, refere-se a uma placa de extensão (shield) para plataforma Arduino específica. Porém, pode também referir-se a um conjunto de diferentes shields de Arduino em separado, como, por exemplo:

  • Uma shield de Fonte de Alimentação Avançada (que além de prover a tensão CC de 12V para alimentação geral do controle, ainda faz a função de Monitoramento da(s) Presença(s) da(s) Tensão(ões) de Fase da Rede CA após o Relé Principal (Monitor de Relé Principal Atracado) e;
  • Uma segunda shield que faz a função de interface para o restante das funções do controle, tais como:

    ☻Interrupção da Corrente de Carregamento por Falha de Terra (conhecido em inglês pelo acrônimo GFCI);

    ☻Processamento da função Piloto (incluindo aqui a Conversão CC/CC para obter saídas de tensão de alimentação CC simétricas, de +12V e de -12V, isoladas);

    ☻Acionamento da(s) “bobinas” do(s) Relé(s) Principal(is);

    ☻Interação entre a máquina e o operador humano, com o emprego de um LCD Multicolorido (RGB), que apresenta 2 linhas x 16 caracteres e com um teclado de 5 cinco teclas. A mudança da cor do fundo do LCD é usada para produzir sinalização luminosa de estado e alertas, pertinentes ao estado da operação da EVSE, quanto ao protocolo SAE J1772, dispensando o emprego de um LED RGB extra.

Apesar deste ser um projeto bastante simples, ele é de grande importância estratégica no contexto das políticas de Veículos Elétricos pois, a Open-VSE ajuda, bastante, a promover a popularização dos carregadores domésticos para VEs, para carregamento de veículos compatíveis com o conector e protocolo tipo SAE-J1772 (ou seja, praticamente TODOS os VEs atuais).

Não obstante a relativamente grande oferta de suporte documental ao projeto de Open-EVSEs, deve-se ficar atento e ter cuidados com alguns erros e omissões que atualmente aparecem nas documentações apresentadas, como por exemplo, diagramas de ligação de blocos que se referem a Open-EVSE versão 2 (com fonte avançada, ou seja, com detecção de relé principal atracado) que, no entanto, não mostra os dois sinais digitais de monitoramento de atraque do relé principal sendo enviado da Shield da Fonte Avançada para a placa controladora Arduino.

Assim, estaremos propondo aqui, um projeto (até onde eu sei) renovado e, ao que me parece, inédito em publicação, até aqui , no qual comporemos uma “nova shield” para a plataforma Arduino, dedicada a aplicação de EVSE, para ser uma Shield Única, ou seja, uma shield que englobe a função de fonte avançada, juntamente com todas as demais funções de interface para o restante das funções do controle e de interface humana (que descritas pouco acima), em uma placa única, que é plugada plugada diretamente a placa controladora Arduino.

Assim, mesmo o diagrama de blocos da EVSE apresentado na nossa postagem anterior, apesar de não estar errado, passa a se torna inconveniente na sua forma e precisa ser refeito, conforme a nova versão mostrada abaixo:


No entanto, antes de nos aprofundarmos em detalhes sobre a Shield Open-EVSE que está sendo proposta, vejamos, apenas, alguns comentários, pertinentes a diferenciação entre o Arduino 2009 e o Arduino UNO e outros detalhes sobre comunicação e programação deles.

O Arduino UNO é a última versão do Arduino que é Padrão atual da plataforma Arduino. Este veio cerca de um ano depois do Duemilanove (2009) e, devido a essa defasagem de tempo, apesar de ambas usarem absolutamente o mesmo microcontrolador principal, o Atmega 328, o Arduino UNO se diferencia do Arduino 2009, apenas por um pequeno detalhe de hardware: na parte de comunicação ele usa um microcontrolador em separado, o ATmega8U2, ao invés do FTDI, presente no Arduino 2009. O FTDI de comunicação do Duemilanove não é programável.

FTDI é um acrônimo para Future Technology Devices International, que é uma empresa escocesa criadora de dispositivos semicondutores, especializada em tecnologia USB. Ela desenvolve, manufatura e da suporte a dispositivos e seus programas e drivers relacionados a conversão de RS-232 ou TTL para sinais USB, permitindo que hardwares seriais antigos sejam compatíveis com computadores mais recentes. Como desenvolvedora de circuitos integrados para aplicações específicas, a principal fonte de serviço da companhia é o FTDI Chip, um circuito integrado que é um dispositivo comum encontrado em microcontroladores, tais como na plataforma Arduino 2009.

Já, o microcontrolador RISC ATmega8U2 pode ser reprogramado a partir do terminal de 6 furos logo acima do chip principal Atmega 328 da UNO (destaque em vermelho na figura ao lado). Isso dá mais poder e flexibilidade à projetos avançados, pois possibilita o Arduino UNO trabalhar com qualquer dispositivo USB, como teclados e mouses, em aplicações usando os USB HID API complexos. Isso tornou, consequentemente, a operação de gravação de programas no UNO mais rápida do que era, antes, no Duemilanove.. Isso é uma vantagem interessante pois, quando estamos fazendo sucessivos testes e modificações em no programa (esboço), esperar os LEDs verdinhos (TX-RX) do Arduino pararem de piscar, parece durar uma eternidade.

No caso da última revisão da placa Uno, o microcontrolador dedicado da comunicação USB passou a ser o Atmega16U2, ao invés do 8U2 encontrado no Uno original (ou o FTDI encontrado em gerações anteriores). Isso permite taxas de transferência ainda mais rápidas e mais memória. Não há drivers necessários para Linux ou Mac (inf para o Windows é necessário e incluído no IDE Arduino), e a capacidade de ter o Uno mostrar-se como um teclado, mouse, joystick, etc

A placa Uno R3 Uno também adiciona os pinos SDA e SCL  próximos ao AREF (compare foto anterior, que é uma placa Uno anterior ao R3, com a foto Uno R3 que virá seguir). Além disso, há dois pinos de novas colocadas perto do pino de RESET. Um deles é o que permite que os IOREF escudos para se adaptar à voltagem fornecida a partir da placa. O outro é um não conectado, e é reservada para efeitos futuros. O R3 Uno trabalha com todos os escudos existentes, mas pode se adaptar a novos escudos que usar esses pinos adicionais.

Arduino é uma plataforma open-source de computação física baseada em uma simples placa I / O e um ambiente de desenvolvimento que implementa o processamento / linguagem fiação. Arduino pode ser usado para desenvolver independentes objetos interativos ou pode ser conectado ao software em seu computador (por exemplo, Flash, Processing, MaxMSP). O IDE de código aberto pode ser baixado gratuitamente (atualmente para Mac OS X, Windows e Linux).

O Arduino Uno R3 requer a pasta de drivers Arduino 1,0 para instalar corretamente em alguns computadores. Testes confirmaram que a Uno R3 pode ser programada em versões mais antigas do IDE Arduino. No entanto, a primeira vez usando o R3 em um novo computador, você precisará ter Arduino 1.0 instalado na máquina.

Todavia, nada disso implica em nenhuma outra diferença que mereça maior preocupação. O Arduino Duemilanove não tem diferenças de software com o Arduino UNO e, assim, é 100% compatível para qualquer situação que o UNO possa enfrentar. Então, na prática, eles são exatamente iguais, exceto pelo detalhe da comunicação via USB: o Uno usa um chip de comunicação serial USB mais novo, que pode ser programado para funcionar como USB HID (Human Interface Devices).

Universal Serial Bus (USB) é uma arquitetura de comunicações que proporciona um subsistema computadorizado a capacidade de interligar uma série de dispositivos utilizando um cabo de 4 vias simples. O USB é, na verdade, um laço de comunicação serial a dois fios que funciona em ambos velocidades, 1,5 ou 12 Mbits/s (MB).

Protocolos USB pode configurar dispositivos na inicialização ou quando eles estão conectados em tempo de execução. Estes dispositivos são divididos em classes de dispositivos diversos. Cada classe de dispositivo define o comportamento comum e protocolos para dispositivos que servem funções similares. Alguns exemplos principais de classes de dispositivos USB são a seguintes:

  • Exibição (ex.: Monitor);
  • Comunicação (ex.: Modem);
  • Áudio (ex.: Alto-falantes);
  • Armazenamento de Massa (ex.: Pen drive);
  • Interface Humana (ex.: Luva de dados).

Então, com as placas Arduino mais novas, não apenas a UNO e a atual Uno R3, como também a recém-lançada Arduino Leonardo, graças ao ATmega8U2 (Atmega16U2, no caso da Uno R3 e Atmega 32U4 no caso do Leonardo), podemos usar uma ATmega8 para ler sinais de controle e fornecer conectividade USB, com a pilha V-USB, enumerando cada dispositivo como um dispositivo HID.

Isso provê algumas características muito interessantes, principalmente a capacidade da placa controladora Arduino poder agir, por exemplo, como um teclado ou mouse USB. Este recurso não é exclusivo do Leonardo pois, o Arduino Uno também pode servir como um teclado USB HID, a partir de apenas uma atualização de firmware.

No entanto, eu não vislumbro ocasião para emular um teclado ou um Joystick USB e, como a diferença entre UNO e Duemilanove, na praticamente é apenas isso, então para mim “é tudo a mesma coisa”. Talvez uma boa razão para adquirir o UNO seja, simplesmente, o fato de que ele é a atual referência para plataforma Arduinos padão. Mas atente para o fato de que, sendo o seu chip de comunicação serial USB programável, isso pode significar, hoje e, ainda por um certo tempo, um preço ligeiramente maior para a UNO frente a 2009. Todavia, o mercado é algo imprevisível: minha últimas aquisição (5 peças) foi do UNO, a R$ 54,90 cada, porém, cada peça forçosamente acompanhada do cabo USB.

Placa atual Uno R3

Depois que a placa Arduino estiver instalada e funcionando dentro de uma EVSE que se tornar operante, muito provavelmente, o seu porte USB, nunca mais será usado. Algumas pessoas pura e simplesmente tem preconceito da 2009, por seu nome estar associado a uma época que já ficou no passado, outros, pelo simples fato de que o cristal de 16MHz mudou de lugar de uma placa para outra, acreditam erroneamente, que a Duemilanove é mais precisa em aplicações de tempo crítico pois, pensam que a Uno, diferente do Duemilanove, tem um ressonador capacitivo instável: isso tudo bobagem!

O Bootloader:

Porém, outro ponto importante é a redução no tamanho do Bootloader, que no caso do Uno ocupa apenas 0,5 KB, contra 2 KB do Duemilanove, o que implica em mais espaço disponível na memória para a programação do usuário.

O Arduino é “Open” (Hardware e software) e pode ser fabricado em qualquer lugar. Os criadores do Arduino são italianos e fabricam o modelo na Itália assim o Arduino Uno Italiano muitas vezes é chamado de original. Mas não ha diferença estrutural entre os que são fabricados em outro local. A diferença é fabrica mesmo.

Você pode, também, trocar o chip microcontrolador Atmega da placa por outro, tanto no Arduino Duemilanove, quanto no Uno, ambos aceitam o Atmega8, Atmega168 ou Atemga328. Entretanto é preciso não se esquecer que é necessário fazer, antes de tudo, o carregamento do bootloader do Arduino para chip novo, para que tudo funcione perfeitamente.

O bootloader nada mais é do que um pequeno pedaço de software que vem pré-gravado para os chips que vêm nas placas Arduino. Todavia, ele é muito importante, permitindo, por exemplo, que se faça o carregamento de esboços de programas para a placa Arduino, sem a necessidade do auxílio de hardware externo de gravação.

Reiniciar uma placa Arduino refere-se, justamente, ao comando que causa executar o programa do bootloader (se houver um bootloader previamente carregado). O bootloader rodando, produz pulsos no pino da saída digital 13 (pode-se conectar um LED a ela para ter certeza de que o bootloader esteja instalado). O bootloader então aguarda alguns segundos para que comandos ou dados possam chegar a partir do computador.

Normalmente, estes dados enviados são os códigos de um esboço, que o bootloader então escreverá para a memória flash no chip ATmega8. Alguns segundos depois, o bootloader lança, automaticamente, esse programa recém-carregado. No entanto, se os dados não chegam a partir do computador, o bootloader lançará qualquer último programa do usuário que tenha sido previamente enviados para o chip. Se o chip ainda é "virgem" e o bootloader é o único programa na memória, ele inicia novamente, de modo recorrente.

A utilização de um carregador de inicialização (bootloader) permite evitar a necessidade da utilização de hardware de programadores de externo adicional. No entanto, gravar o bootloader num chip novo requer um programador externo.

Se você quiser usar o toda a área de programa da memória (flash) do chip ou se você deseja evitar o tempo de atraso devido ao processamento do bootloader, então você precisa gravar seus esboços (programa do usuário) usando sempre um programador externo.

Para gravar o bootloader, você precisa ter disponível um AVR-ISP (programador in-system) ou construir um Programador por Porta Paralela ou DAPA (Direct AVR Parallel Access). Certifique-se de conectá-lo no caminho certo. A placa deve ser alimentada por uma fonte de alimentação externa ou via porta USB.

Do mesmo modo, para fazer o carregamento do firmware para uma Open-EVSE poderá requerer um ISP, se não houver o bootloader previamente carregado no microcontrolador. Há muitos programadores compatíveis AVR disponíveis. Os ISPs são projetados para atualizações de campo de produtos existentes, usando a arquitetura Atmel AVR e com base em hardware e software STK500 .

O Mature AVR ISP, da própria Atmel, é uma opção. O Kit USBtinyISP de Adafruit é uma outra boa escolha, é barato e aberto. Algumas ferramentas, como o Avrdude, o Arduino IDE e o AVR Studio, suportam todos os dispositivos AVR ISP. A “ajuda online ” do AVR Studio, por exemplo, contém as informações mais atuais e uma lista completa de dispositivos suportados.


Já o programador paralelo requer apenas 3 resistores e os conectores. A programação serial (SPI) do AVR envolve apenas pulsar adequadamente três sinais lógicos (RESET, SCK e MOSI) e ler em momentos adequadas um quarto sinal (MISO). Um trabalho perfeito para a porta paralela de um PC, controlada por um software adequado. O programador paralelo consiste simplesmente em conectar alguns pinos da porta paralela aos pinos do microcontrolador, com resistores em série no caso dos sinais MISO, MOSI e SCK:


Neste caso, a alimentação do microcontrolador precisará ser feita com uma fonte externa.

Atente para não confundir, como muitos costumam fazer, os acrônimos de ISP (In-System Programming), originário na cultura AVR, que é o mesmo que ICSP (In-Circuit Serial Programming) na cultura PIC, com SPI (Serial Peripheral Interface).

ISP e ICSP, referem aos dispositivos de programação, enquanto que, SPI refere-se ao protocolo serial. A Interface Periférica Serial (SPI) é composto por três fios: um para o sinal Serial Clock (SCK), ou seja, clock serial, outro para o sinal Mestre In - Slave Out (MISO), ou seja, dados que vão do escravo para o mestre, e, Master Out - Slave In (MOSI), ou seja, dados que vão do mestre para o escravo. Ao programar o AVR, o programador In-System (ISP) sempre opera como o Mestre, e o sistema alvo sempre operar como Escravo.

Um programador In-System (Master) fornece os pulsos de relógio para a comunicação na linha SCK. Cada pulso na Linha SCK transfere um bit do Programador (mestre) para o destino (escravo) na linha MOSI. Ao mesmo tempo, cada pulso na Linha SCK transfere um pouco do alvo (Slave) ao programador (Master) na linha MISO.

Obviamente, para assegurar a comunicação correta sobre as três linhas de SPI, é necessário ligar o programador no para a terra no ponto (GND).

Para entrar e permanecer no Modo de Programação Serial, a linha de reset do microcontrolador AVR tem que ser mantida ativo (baixo). Essa mesma linha (/RES), também é comumente utilizada para seleção de escravo, linha de seleção, selecionando um escravo dentre vários, sendo trazida nível baixo para ser ativo.

Além disso, para realizar um Erase Chip, o Reset tem que ser pulsado até terminar o ciclo Erase Chip. Para facilitar a tarefa de programação, é preferível deixar o programador assumir o controle da linha de reset do microcontrolador alvo para automatizar esse processo usando uma quarta linha de controle quarta (Reset).

Para permitir a programação de microcontroladores alvo operando sob qualquer tensão dentro da faixa permitida (2,7 - 6,0 V), o programador pode extrair energia do sistema alvo (VCC). Isto elimina a necessidade de uma fonte de alimentação separada para o programador. Em alternativa, o sistema alvo pode ser alimentado a partir do programador, no momento da programação, eliminando a necessidade de ligar o sistema alvo através do seu conector de alimentação regular durante a programação.

Instalado o ISP, em seguida, basta lançar ou o comando "Bootloader Burn" (para AVR-ISP) ou "Burn Bootloader Parallel", a partir do menu Ferramentas do ambiente (IDE) Arduino. Gravar o bootloader pode levar 15 segundos ou mais.

Pode ocorrer alguma dificuldade em se fazer funcionar adequadamente o carregador paralelo em um PC com Windows XP, uma vez que o Windows XP faz polling da porta paralela (Windows periódica e imprevisivelmente escreve para a porta paralela, fazendo pesquisa para novos dispositivos, o que acarreta a interrupção do processo de gravação de bootloader. A chave do Registro pode desativar parcialmente esse comportamento. Você precisará deste patch de registro:

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

As versões mais novas do bootloader comunica-se com o computador a 19200 baud; versões mais antigas usam 9600 baud. A fim de conseguir carregar programas para a placa, esta taxa deve coincidir com o parâmetro serial.download_rate em seu arquivo preferences.txt (que assume por default 19200).

Um bootloader pré-compilado (arquivo . hex) vem com o ambiente Arduino, que comunica a 19200 baud (mas veja a nota para placas mais antigas acima). Ambos os comandos "Burn Bootloader" no ambiente Arduino usam uma ferramenta open-source, Uisp. Há quatro etapas (cada uma chamada separada para Uisp):

  • desbloquear a seção de bootloader do chip;
  • definir os fusíveis no chip;
  • fazer o upload do código do bootloader para o chip e;
  • bloquear a seção de bootloader seção do chip.

Estes são controlados por um conjunto de preferências no arquivo de preferências Arduino:

  • bootloader.programmer (valor padrão: STK500) é o que deefine o protocolo usado pelo bootloader;
  • bootloader.unlock_bits (valor padrão: 0xFF) é o valor a ser escrito para o byte bloqueio ATmega8 para desbloquear a seção bootloader;
  • bootloader.high_fuses (valor padrão para um ATmega8 em uma placa Arduino: 0xca) é o valor a ser escrito para o byte mais alto dos fusíveis do ATmega8;
  • bootloader.low_fuses (valor padrão para um ATmega8 em uma placa Arduino: 0xDF) é o valor a ser escrito para o byte mais baixo dos fusíveis dos ATmega8;
  • bootloader.path (valor padrão: bootloader) é o nome do caminho (relativo ao diretório do aplicativo Arduino) contendo o arquivo bootloader pré-compilado;
  • bootloader.file (valor padrão: ATmegaBOOT.hex) é o nome do arquivo que contém o código do bootloader pré-compilado (em bootloader.path);
  • bootloader.lock_bits (valor padrão: 0xCF) é o valor a ser escrito para o byte bloqueio ATmega8 para bloquear a seção bootloader (para que ele não seja acidentalmente substituído (sobrescrito) quando você carregar um esboço.

Saber destes detalhes é muito bom, porém,

Programação:

A interface do hospedeiro é simples, podendo ser escrita em várias linguagens. A mais popular é a Processing, mas outras que podem comunicar-se com a conexão serial são: Max/MSP, Pure Data, SuperCollider, ActionScript e Java. Em 2010 foi realizado um documentário sobre a plataforma chamado “Arduino: The Documentary”. Confira em Português: http://vimeo.com/31389230

O Arduino Duemilanove pode ser programado com o software Arduino. O ATmega328 no Arduino Duemilanove vem pré-gravado com um bootloader que permite enviar novos programas sem o uso de um programador de hardware externo. Ele se comunica utilizando o protocolo original STK500.

O protocolo STK500 publicado juntamente com a versão 4.11 do AVRStudio é totalmente incompatível com as versões inicial e anteriores, àquela do protocolo. A partir dali, o protocolo STK500 passou a ser, além de baseado em protocolos anteriores feitos para ferramentas AVR e outros, e totalmente compatível com eles, não havendo sobreposição ou redefinição de comando algum.

Todos os comandos (os dois comandos e respostas) são caracteres ASCII padrão entre 0x00 – 0x7F. Os dados podem ser qualquer entidade com valor entre 0x00 – 0xFF.

O STK500 não precisa de mais estruturas de dados de dependentes de dispositivos no hardware programador. Toda a lógica dependente do dispositivo, passou a estar no software do programador em execução no PC. A partir dali, o AVRStudio (para Windows) e avrdude (para sistemas operacionais múltiplos, incluindo Linux) passou a suportar esta versão 2 do protocolo STK500.

A interface de hardware físico ao PC é USB. Dessa forma, podemos construir um programador rápido e moderno, que pode ser usado no Linux, BSD, Windows e MacOS X.

A definição de todos os comandos, respostas, parâmetros e outros valores definidos podem ser encontrados no ficheiro "command.h". Os códigos de dispositivo pode ser encontrado no arquivo "devices.h". Esses arquivos estão localizados na seção de software no site da Atmel,

Também poder-se-á programar o ATmega328 através do ICSP (In-Circuit Serial Programming) header;

Reset automático (Software):

Algumas versões anteriores do Arduino requerem um reset físico (pressionando o botão de reset na placa) antes de carregar um esboço. O Arduino Duemilanove é projetado de modo a permitir que isto seja feito através do software que esteja correndo no computador a que está ligado. Uma das linhas de controle de hardware (DTR) do FT232RL está ligada ao reset do ATmega328 por via de um capacitor de 100 nF.

Quando é feito o reset a esta linha (ativo baixo), o sinal cai por tempo suficiente para efetuar o reset ao chip. O software Arduino usa esta característica para permitir carregar o programa simplesmente pressionando o botão “upload” no ambiente Arduino. Isto significa que o “bootloader” pode ter um “timeout” mais curto, já que a ativação do DTR (sinal baixo) pode ser bem coordenada com o início do “upload”.

Esta configuração tem outras implicações. Quando o Duemilanove está ligado a um computador com o Mac OS X ou Linux, ele faz o reset cada vez que a ligação é feita por software (via USB). No próximo meio segundo aproximadamente, o bootloader estará correndo no Duemilanove. Considerando-se que é programado para ignorar dados espúrios (i.e. qualquer coisa a não ser um “upload” de um novo código), ele interceptará os primeiros bytes dos dados que são enviados para a placa depois que a ligação é aberta.

Se um esboço que se encontra sendo executado na placa recebe uma configuração ou outros dados ao inicializar, dever-se-á assegurar que o software esteja em comunicação e espere um segundo depois de aberta a ligação antes de enviar estes dados.

USB:

Conectores Universal Serial Bus (USB) são destinadas a conexão de dispositivos periféricos externos com um computador tais como o mouse, o teclado, um disco rígido portátil, câmara digital, telefone VoIP (Skype) ou da impressora.

Teoricamente, é possível se conectar a um controlador host USB de cerca de 127 dispositivos. A velocidade máxima de transferência é 12 Mbit / s para o padrão USB 1.1 e 480 Mbit / s para USB 2.0 de alta velocidade. Fisicamente, os conectores de padrões USB 1.1 e 2.0 de alta velocidade são idênticos. Distinções são cobertos em velocidade de transferência e um conjunto de funções de controlador de host USB de um computador, e dispositivos USB.

USB fornece uma fonte de energia para dispositivos, portanto, eles podem trabalhar a partir da interface sem uma fonte adicional (a interface USB provê alimentação necessária, não mais do que 500 mA em 5V). Existem três tipos básicos de conectores USB: USB A, USB B e mini USB.


Proteção contra sobrecorrente USB:

O Arduino Duemilanove tem um fusível que protege a porta USB do seu computador contra sobrecarga. Apesar da maioria dos computadores possuírem proteção interna própria, o fusível proporciona uma proteção extra. Se mais de 500 mA forem demandados a partir da porta USB, o fusível irá automaticamente interromper a ligação até que a sobrecarga seja eliminada.

Características físicas:

O comprimento e largura máximos do Duemilanove são 2,7” (68,50 mm) e 2,1” (53,34 mm) respectivamente, com o conector USB e o jaque de alimentação indo um pouco além destas dimensões. Três furos de fixação permitem a montagem da placa numa superfície ou caixa. Note que a distância entre os pinos de entrada e saídas digitais nº 7 e nº 8 é de 160 mil (milésimos de polegada), não é sequer múltiplo do espaçamento de 100 mil dos outros pinos.

O Primeiro Projeto com o Arduino: Colocação de um LED para piscar!

Existem dois blocos distintos de instruções entre chavetas (box 2).

A função setup() é chamada quando o código (esboço) é executado. Use-a para:

  • Iniciar variáveis;
  • O modo como os pinos deverão funcionar: entrada (INPUT) ou saída (OUTPUT);
  • Bibliotecas;
  • Cabeçalhos

Mas, atenção! Tudo o que estiver no setup() será executado apenas uma vez imediatamente após o esboço ter sido carregado para o microcontrolador (ou ser após o microcontrolador ser alimentado).

Caso o Botão de RESET, que se encontra na placa do Arduino, seja pressionado, ou houver uma falha na alimentação, o código será reiniciado e nessa condição especial o setup() será executado novamente.


A função loop() tem um pressuposto fundamental que é repetir infinitamente o que está escrito. Bem... mas qual a finalidade disso?

Ao repetir a mesma função, o microcontrolador nunca para de funcionar. Imagine como seria se ao digitar uma letra no editor de texto parasse de funcionar, e fosse preciso abri-lo nova-mente para escrever as outras letras da palavra? Ou, se após um carro passar num semáforo de trânsito, as luzes não brilhassem mais?

Basicamente, o loop() será o seu escravo e o setup() dirá como o escravo se comportará.

Usa-se: // (duas barras invertidas) para fazer comentários na linha de código. O objetivo é deixar o mais claro possível para que terceiros possam entender o programa.

Tudo que é deixado como comentário será descartado no momento da gravação no microcontrolador.

Na próxima postagem, trataremos menos de Arduíno e mais de questões diretamente ligadas ao projeto da EVSE.

Nenhum comentário:

Postar um comentário

Licença Creative Commons
Este trabalho de André Luis Lenz, foi licenciado com uma Licença Creative Commons - Atribuição - NãoComercial - CompartilhaIgual 3.0 Não Adaptada.