quarta-feira, 26 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 1


O Arduíno é uma plataforma de prototipagem eletrônica de hardware livre, ou seja, do tipo denominado “open-source”, projetada com um microcontrolador Atmel AVR, com suporte embutido de entrada/saída, e linguagem de programação padrão, a qual tem origem na plataforma Wiring, cujo código empregado é essencialmente linguagem de programação C/C++. Com isto, temos uma ferramenta acessível de baixo custo e, relativamente, fácil de usar.

O termo “Wiring” refere-se ao sistema que denominamos Plataforma para Programação, que é composta pelo conjunto que incluí a linguagem de programação, o Ambiente de Desenvolvimento Integrado (IDE, do inglês Integrated Development Environment), que funciona como um aplicativo instalado em um computador pessoal, bem como do hardware do sistema microcontrolador de placa única.

O sistema foi criado junto a designers e artistas de forma a atender ao objetivo que tanto usuários avançados, quanto intermediários ou iniciantes, ao redor do mundo, encontrassem facilidade de aprendizagem de uso e pudessem compartilhar suas ideias, conhecimentos e experiências coletivamente.

O Wiring permite escrever programas de controle para os aparelhos conectados a ele e assim criar todo o tipo de objetos interativos, correspondendo a experiência do usuário através do mundo físico. Com poucas linhas de código é possível conectar-se a alguns poucos componentes eletrônicos, formando, por exemplo, um sistema simples de Aquisição de Dados (DAQ), que é um processo de medição de um fenômeno físico, tal como intensidade de luz, som, temperatura, pressão, vazão, velocidade, nível, etc, com o uso do hardware do sistema microcontrolador (ou de um computador).

Além do hardware do sistema microcontrolador (que, no caso, consiste na placa Arduíno), um sistema DAQ é formado, também, por um ou mais sensores, os quais costumam ser específicos para a medição de cada tipo de grandeza física, cuja entrada detecta a variação daquela grandeza, respondendo em sua saída com um sinal elétrico analógico de tensão ou de corrente (ou com um sinal de pulsos elétricos, ou ainda com um sinal ótico), que é proporcional à intensidade da grandeza física medida.

Também faz paz parte de um sistema DAQ, o software programável, que é a sequência de instruções a serem seguidas e executada pelo hardware do sistema microcontrolador, lembrando que, apenas em umas poucas aplicações o objetivo de se realizar a medição de uma grandeza física é, pura e tão somente, o de poder apresentar o valor daquela medição a um observador mas, sim, de uma maneira mais comum, é o de usar a informação da medição para estabelecer um laço de controle, de modo que as saídas do hardware do sistema microcontrolador possam comandar, de maneira adequada, um ou mais atuadores.


Como exemplo, podemos desejar aquecer um certo material à uma dada temperatura. Para isso monitoramos a temperatura do material, enquanto regulamos a quantidade de energia que é aplicada sobre o atuador de aquecimento (uma ou mais resistências, por exemplo, que podem aquecer o material por efeito Joule), fazendo com que a temperatura do material possa ser estabilizada, com certa precisão, em torno do valor desejado.

O Projeto Arduíno:


O projeto Arduíno foi iniciado em 2003 por Hernando Barragán (Universidad de Los Andes - Colômbia) através do Interaction Design Institute Ivrea, na Itália. Atualmente se desenvolve na Escola de Arquitetura e Design da Universidade de Los Andes, em Bogotá, Colômbia. Construído sobre o "Processing", um projeto aberto de autoria de Casey Reas e Benjamin Fry, sua linguagem foi desenvolvida com a ajuda do Grupo de Computação e Estética da MIT Media Lab.

A placa única pode ser usada para o desenvolvimento de Objetos Interativos Independentes, os quais requeiram um sistema de controle integrado ou embarcado, ou ainda para desenvolvimento de subsistemas que permaneçam conectados a um computador hospedeiro. Uma típica placa Arduíno é composta por um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou USB, para interligar-se ao hospedeiro, que é usado para programá-la e / ou interagi-la em tempo real.

O Arduíno é livre, no sentido que qualquer desenvolvedor é livre para montar seu próprio Arduíno e ainda modificá-lo. Tanto o software, quanto o hardware. Existe uma extensa comunidade desenvolvendo as mais diversas aplicações, programas e "Shields" (placas de expansão) para serem usados com uma placa Arduíno mãe. Em geral, uma (ou mais de uma) placa de expansão (Shields) é que permite que os propósitos gerais da placa controladora Arduíno sejam utilizados de uma maneira específica para uma dada aplicação.

As placas controladoras da plataforma Arduíno que são consideradas padrão, ou seja,  todos Arduinos com microcontroladores de 28 pinos, como, por exemplo, o 2009 e o Uno, são ambas, baseadas em um mesmo microcontrolador de 8-bits, de baixa potência e alto desempenho, fabricado pela Atmel, o ATmega328P.

O ATmega328P pertence à série 48PA/88PA/168PA/328P de microcontroladores CMOS de 8-bits, de baixa potência, baseada em arquitetura RISC de microcontrolador AVR. Executando as instruções poderosas em um único ciclo de clock, o ATmega48PA/88PA/168PA/328P atinge taxas aproximadas de 1 MIPS (acrônimo de Millions of Instructions Per Second, que significa Milhões de Instruções Por Segundo), por MHz, com uma frequência de clock máxima de 16 MHz, permitindo, ainda, ao projetista do sistema, otimizar o consumo de energia em função da velocidade de processamento.

O núcleo AVR combina um poderoso conjunto de instruções com 32 registradores de uso geral de trabalho. Todos os 32 registradores estão diretamente ligados à unidade lógica e aritmética (ULA), permitindo que dois registros independentes sejam acessado em uma única instrução que é executada em um único ciclo de clock. A arquitetura resulta em um código mais eficiente ao conseguir throughputs até dez vezes mais rápido do que Microcontroladores CISC convencionais. O ATmega48PA/88PA/168PA/328P oferece os seguintes recursos:

  • 4K/8K bytes de memória flash programável residente no chip do microprocessador, com capacidade de realizar operações de leitura e escrita simultâneas;
  • 256/512/512/1K bytes de EEPROM;
  • 512/1K/1K/2K bytes de SRAM;
  • 23 linhas E / S de uso geral;
  • 32 registradores de propósito geral de trabalho;
  • 3 Contadores / Temporizadores flexíveis, com modos de comparação, interrupções internas e externas;
  • 1 USART serial programável;
  • 1 interface serial as 2 fios, orientada ao byte;
  • 1 porta serial SPI;
  • 1 Conversor A/D de 6-canais 10-bit (8 canais em nos encapsulamentos TQFP e QFN / MLF);
  • 1 temporizador Watchdog programável com oscilador interno e cinco modos de economia de energia selecionáveis por software.

Seis Modos de Economia de Energia:


A fim de permitir que haja uma melhor sustentabilidade ambiental em aplicações embarcadas, em que a alimentação seja provida por bateria, ou mesmo para se obter um melhor desempenho de controle, pode-se fazer uso de algum, ou de uma combinação de alguns, dos seis modos de economia de energia.
O modo de “Ocioso”, por exemplo, interrompe a CPU, permitindo que a SRAM, os Temporizadores / Contadores, a USART, a Interface Serial a 2 fios, a porta SPI e o sistema de interrupção continuem funcionando.

O modo “Desliga” salva o conteúdo dos registradores, mas congela o oscilador, desativando todas as outras funções, até a próxima interrupção ou reinicialização do hardware.

Em modo de “Economia de Energia”, o temporizador assíncrono continua a funcionar, permitindo ao usuário manter uma base para temporização, enquanto o resto do dispositivo está dormindo.

No modo “Redução de Ruído do Conversor A/D”, interrompe a CPU e todos os módulos de E / S, exceto temporizador assíncrono e o conversor A/D, para minimizar o ruído provocado pelas comutações digitais durante uma conversão A/D.

Em modo “Espera”, o oscilador de cristal / ressonador está sendo executado enquanto o resto do dispositivo está dormindo. Isso permite muito rápido start-up combinado com baixo consumo de energia.

O AVR ATmega48PA/88PA/168PA/328P possui suporte de um conjunto completo de ferramentas de programação e sistema de desenvolvimento, incluindo compiladores C, montadores de Macro, depurador / simuladores de programa, emuladores in-circuit e kits de avaliação.

Diagrama de Blocos:




Open-Source (Código Fonte Aberto):


O termo “código aberto”, ou “open-source” em inglês, foi criado pela entidade OSI (Open Source Initiative) e refere-se a software também conhecido por software livre. Genericamente trata-se de software que respeita as quatro liberdades definidas pela Free Software Foundation (FSF), compartilhadas também pelo projeto Debian, nomeadamente em "Debian Free Software Guidelines (DFSG)". Qualquer licença de software livre é também uma licença de código aberto (Open Source), a diferença entre as duas nomenclaturas reside essencialmente na sua apresentação.

Enquanto a FSF usa o termo "Software Livre" envolta de um discurso baseado em questões éticas, direitos e liberdade, a OSI usa o termo "Código Aberto" sob um ponto de vista puramente técnico, evitando (propositadamente) questões éticas. Esta nomenclatura e discurso foram cunhados por Eric Raymond e outros fundadores da OSI com o objetivo de apresentar o software livre a empresas de uma forma mais comercial evitando o discurso ético.

Em consequência disso, sempre há bastante suporte para a maioria dos problemas que se pode encontrar em meio ao desenvolvimento de aplicações com Arduíno, basta procurar ou postar suas dúvidas em algum dos muitos fóruns ou comunidades de Arduíno

O objetivo deste estudo do Arduíno é com vista a, por fim, poder usá-lo como dispositivo que solucione a necessidade de automação de Estações de Carregamento de Veículos Elétricos padrão SAE-J1772 (de uso residencial, também denominada de EVSE para CA (Corrente Alternada), de nível 2). Assim, estaremos empregando uma placa Arduíno na composição de uma Open-EVSE (EVSE = Electric Vehicle Supply Equipment), que é um equipamento de relativo baixo custo para realizar o carregamento de baterias de sistema de tração (baterias principais) de VEs (Veículo Elétricos), podendo prover aos VEs a ela conectado, uma alimentação monitorada de CA bifásica de 220V, para correntes de carregamento de até o limite máximo de 80A.

A necessidade mínima de automação de uma EVSE SAE J-1772 CA Nível 2, se apresenta simples o bastante para que seja feita, tranquilamente, com um Arduíno, podendo ainda este mesmo controlador controlar também, via comunicação I2C, um “shield” mostrador (LCD monocromático 16x2 Caracteres) que torna a operação de carregamento de um VE algo mais simples e feita de modo bastante interativo, com um botão podendo navegar por um menu apresentado no LCD, para modificar algumas das configurações básicas EVSE com este botão, como, por exemplo, a máxima corrente permitida que o circuito da instalação elétrica pode fornecer para operação de carregamento.

A vantagem deste shield é que ele permite controlar um LCD 16x2 caracteres, com até 3 níveis de luz de fundo e 5 pinos de teclado usando apenas os dois pinos de I2C no Arduíno! A melhor parte é que você realmente não perde o uso desses dois pinos, uma vez que você pode manter os sensores baseados em I2C, RTCs, etc, compartilhando o barramento I2C. Esta é uma maneira super prática de adicionar um mostrador (com teclado) sem toda aquela fiação desagradável.

Este shield é perfeito para quando você quer construir um projeto independente, com sua própria interface de usuário. Os quatro botões direcionais, mais botão "Select" permite o controle básico sem ter que anexar um computador volumoso.

Para obter conhecimento sobre a EVSE escopo deste projeto, consulte as seguintes postagens anteriores deste blog:


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

O Arduíno foi projetado na cidade de Ivrea, Itália, em 2005, com o intuito de interagir em projetos escolares de forma a ter um orçamento menor que outros sistemas de prototipagem disponíveis naquela época. No Brasil temos a versão industrializada da TATO Equipamentos Eletrônicos, que desenvolveu o seu “TATUINO”.

A placa Arduíno é composta por um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou USB. Ela não possui recurso de rede, assim é comum, quando necessário, combinar um ou mais Arduínos, usando extensões apropriadas denominadas “Shields”.

O termo “Shield” refere-se às placas que podem ser conectadas em cima do PCB Arduíno base, estendendo as suas capacidades originais. Os vários diferentes shields seguem a mesma filosofia que da ferramenta original: eles são fáceis de montar e baratos de produzir.

Algumas das Shields mais populares são a Arduíno Xbee shield, que permite múltiplas placas Arduíno se comunicarem sem fios (wireless), em distâncias de até 100 pés (dentro de casa) ou 300 pés (ao ar livre), utilizando o Maxstream Xbee Zigbee módulo e, a Arduíno Motor Control Shield v1.1, que permite controlar motores DC e ler Encoders (Codificadores de Pulso).

Arduíno Software:

O termo IDE refere-se a um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente os IDEs facilitam a técnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rápido de Aplicativos"), que visa uma maior produtividade dos desenvolvedores.

Os IDEs de Arduino, em geral, são aplicações multiplataforma escritas em Java, e são derivadas do IDE para a linguagem de programação de processamento e projeto Wiring. Eles são projetado para introduzir a linguagem de programação para leigos, como artistas e outros recém-chegados, que não estão familiarizados com desenvolvimento de software.

Ele inclui um editor de código com recursos como destaque de sintaxe, cela de correspondência (Brace matching), e recuo automático, e também é capaz de compilar e carregar programas para a placa com um único clique. Geralmente não há necessidade de editar Makefiles ou rodar programas em uma interface de linha de comando. Embora a construção de linha de comando seja possível, se necessário, com algumas ferramentas de terceiros, como Ino. Abaixo, usando o Atmel Studio (IDE gratuito).


Cela de Correspondência, ou parêntese de correspondência, é um recurso de realce de sintaxe de editores de texto e certos ambientes de desenvolvimento integrado que destaca combinando conjuntos de correspondência de chaves em linguagens como Java e C ++ que usá-los.

O objetivo é ajudar o programador a navegar através do código e também detectar qualquer correspondência inadequada, o que faria com que o programa não compilasse ou pudesse funcionar errado. Se uma chave de fechamento é deixada de fora, por exemplo, o compilador não poderá reconhecer que o final de um bloco de código tenha sido atingido. Celas de correspondência são particularmente úteis quando estão envolvidos muitas funções “if”, ou outros tipos de laço de programa, estão aninhados.

O IDE Arduino Oficial (Faça o download do software Arduino), vem com uma biblioteca C/C++ que costuma ser denominada "Wiring" (por derivar a partir do projeto da plataforma de programação de mesmo nome), o que faz com que muitas das operações de entrada / saída mais comuns sejam muito mais fáceis de implementar. 


O código-fonte aberto ambiente Arduino torna fácil escrever código e enviá-lo à placa i / o. Ele roda em Windows, Mac OS X e Linux. O ambiente é escrito em Java e baseado em Processing, avr-gcc e outros softwares de código aberto. Programas Arduino são escritos em C / C + +, embora os usuários só precisam definir duas funções para fazer um programa executável:

setup () - executar uma função uma vez no início de um programa que pode inicializar configurações;

loop () - chamada a uma função repetidamente até que a energia dass placa seja removida.

Um programa típico primeiro por um microcontrolador simplesmente pisca um LED ligado e desligado. No ambiente Arduino, o usuário pode escrever um programa como este:

#define LED_PIN 13

void setup () {
    pinMode (LED_PIN, OUTPUT);     // enable pin 13 for digital output
}

void loop () {
    digitalWrite (LED_PIN, HIGH);  // turn on the LED
    delay (1000);                  // wait one second (1000 milliseconds)
    digitalWrite (LED_PIN, LOW);   // turn off the LED
    delay (1000);                  // wait one second
}

É uma característica da maioria de placas Arduino ter uma resistor e um LED e ligados em série entre o pino 13 e o GND, uma característica conveniente para muitos testes simples. O código acima não seria visto por um padrão compilador C + + como um programa válido , então, quando o usuário clica no botão "Enviar para I/O" do IDE, uma cópia do código é escrito para um arquivo temporário com um cabeçalho extra incluído na parte superior e uma função main muito simples () na parte inferior, para torná-lo válido programa C ++.

Uma execução cíclica é uma alternativa para um sistema operativo de tempo real. É uma forma de multitarefa cooperativa, na qual existe apenas uma tarefa. A única tarefa é normalmente realizado como um laço infinito no main (), por exemplo, em C.

O esquema básico é o ciclo através de uma sequência de repetição de atividades, em uma frequência definida. Por exemplo, vamos considerar o exemplo de um sistema embarcado projetado para monitorar um sensor de temperatura e atualizar a informação num monitor mostrador LCD. O mostrador LCD pode ter de ser escrita 10 vezes por segundo (isto é, a cada 100 ms). Se o sensor de temperatura tem de ser lido a cada 50 ms por outras razões, podemos construir um algorítimo com a seguinte aparência:

int main(void)
{
   // initialization code here
 
   while (1)
   {
      currTemp = tempRead();
      lcdWrite(currTemp);

      // waste CPU cycles until 50 ms
      currTemp = tempRead();
      // do other stuff

      // waste CPU cycles until 100 ms
   }
}

O ciclo exterior 100 ms é chamado o ciclo principal. Neste caso, existe também um ciclo interno menor de 50 ms.

Os IDEs Arduino usam o conjunto de ferramentas GNU Libc e AVR para compilar programas, e usam avrdude para carregar programas para a placa.

Como a plataforma Arduino usa ambiente Atmel de desenvolvimento para microcontroladores Atmel, AVR Studio ou o mais recente Estúdio Atmel, também pode ser usado para desenvolver software para o Arduino.

Para fins educacionais há terceiros ambiente gráfico de desenvolvimento chamado Minibloq disponível sob uma licença de código aberto diferente.

Neste artigo, será apresentado o Arduino Duemilanove e a elaboração de um simples projeto com o Arduino UNO.

Apresentação do Arduino Duemilanove:


O Arduino Duemilanove ("2009") é uma placa de microcontrolador baseada no ATmega328. Ele possui:


  • 14 pinos de entrada/saída digital (dos quais 6 podem ser usados como saídas analógicas PWM);
  • 6 entradas analógicas, um cristal oscilador de 16 Mhz;
  • 1 conexão USB;
  • 1 entrada para alimentação;
  • 1 cabeçalho ICSP;
  • 1 botão de reset.
    Assim, ele contém tudo que é necessário para que o microcontrolador funcione, portanto, para começar a explorar os seus recursos, apenas é necessário que se faça a conexão com um computador através de um cabo USB ou use uma fonte de alimentação de corrente contínua ou uma bateria.

"Duemilanove" significa 2009 em italiano e o nome foi escolhido pelo ano de lançamento.

Alimentação:

O Arduino Duemilanove pode ser alimentado via ligação USB, ou por qualquer fonte de alimentação externa. A fonte de alimentação é selecionada automaticamente.

Alimentação externa (não USB) pode ser tanto de uma fonte CC como de uma bateria. A fonte pode ser ligada à placa via um plugue de 2,1mm (com centro positivo) no conector de alimentação. Cabos vindos de uma bateria podem ser inseridos nos pinos GND (Massa) e Vin (entrada de tensão) do conector de alimentação.

A placa pode funcionar com uma alimentação externa de 6 a 20 volts.

Entretanto, se a alimentação for inferior a 7 volts, o pino 5V pode fornecer menos de 5 volts e a placa pode ficar instável. Se a alimentação for superior a 12 volts, o regulador de tensão pode sobreaquecer e avariar a placa. Assim, a alimentação recomendada é de 7 a 12 volts. Os pinos de alimentação são:

  • Vin - Entrada de alimentação para a placa Arduino, quando uma fonte externa for utilizada. Poder-se-á fornecer alimentação por este pino ou, caso se use o conector de alimentação, utilizar a alimentação por este pino;
  • 5V - A fonte de alimentação utilizada para o microcontrolador e para outros componentes da placa. Pode ser proveniente do pino Vin através de um regulador on-board ou ser fornecida pelo USB, ou ainda de outra fonte de 5 volts;
  • 3V3 - Alimentação de 3,3 volts fornecida pelo chip FTDI (Chip do USB). A corrente máxima é de 50 mA.

  • GND - Pinos terra ou massa.

Numa postagem anterior, relativa à EVSE (Por Dentro de uma Estação de Carregamento EV SAE-J1772-AC Nível 2), foi sugerido a utilização de uma fonte CC genérica de 12V de 2A que é vendida “pronta para uso”. Uma fonte de tensão de +12VCC é indispensavelmente necessária por alguns bons motivos:

  • Quando a tensão de +12VCC suprida, chega a placa controladora Arduino, ela vai alimentar diretamente a saída de acionamento do (s) SSR(s), que é o relé principal que liga ou interrompe o fornecimento de energia para o carregamento. Numa placa Open-EVSE V2.0, existe opção de acionamento independente de dois SSRs, porém, pode-se, em geral, empregar um único SSR bifásico (duplo) de potência como relé principal (ver figura abaixo) e,
  • Ser reconvertida, de CC/CC de +12VCC normal, para fonte de saída simétrica +12VCC e -12VCC, isoladas, a fim de alimentar o circuito que realiza a função de “Piloto”, que é inerente à operação comum de uma EVSE de protocolo SAE J1772;
  • Ser reconvertida, via um regulador série, CC/CC de +5V , a fim de, tanto alimentar quanto gerar referência analógica, para microcontrolador da placa Arduíno.


Quanto ao relé principal, a Crydom tem usado inovação e tecnologia para ampliar sua linha de SSRs duplos, criando a série Crydom Evolution "D" e "H12" de SSRs duplos, que oferecem um design mecânico e térmico melhorados, proporcionando saídas de maior capacidade e densidade de energia, com terminais parafusáveis adequado para correntes de carga nominal de 50 ampères / 600 VAC por canal como padrão de saída, provendo, com segurança, energia para carregamento com potência de até 9,9 kVA (45A a 220V).

Cada canal de saída CA apresenta tiristor bidirecional de alta potência, com tolerância elevada contra surtos e encontram-se disponíveis, tanto na versão para comutação no ponto de passagem por tensão zero, como para ponto de comutação aleatória.

A nova geração de SSRs duplos se apresenta com quatro opções diferentes de terminação de entrada de comando (barra de terminais de pinos, conector travante, barras de terminais destacáveis ou parafusos e fio direto) e estão disponíveis com três classificações diferentes de entrada de tensão, incluindo a ampla gama (4 a 32 VDC), versão corrente regulada.

Os novos relés de dois canais estão disponíveis com cobertura transparente anti toque opcional  (IP20) segura, permitindo uma visão clara das terminações e cabos, fornecendo operação de toque seguro. Apresentam, ainda, indicadores de LED de status para cada canal.

Para maiores detalhes sobre Relés de Estado Sólido (SSR - Solid State Relays), veja essa minha publicação no EBAH.

Assim, uma fonte CC de 12V é necessária e indispensável, porém, ela não precisa ser de 2A pois, menos de 0,5A já bastaria. Todavia, o custo da fonte pronta de 2A (R$ 40,00) e, suas dimensões reduzidas (85 x 58 x 32 mm), compensavam o trabalho de ter que se montar uma fonte de alimentação dedicada específica. Para especificar uma fonte de 12V, em geral, atentar para entrada em 220VCA e para a ligação do aterramento juntamente a caixa de metal.

No entanto, a partir da versão 2.0 da open-EVSE, uma nova recomendação passou a demandar o emprego de uma fonte 12VCC avançada, ou seja, uma fonte para uso específico com o EVSE, com potência de apenas 4 Watts, porém, com monitoramento de terra, detecção de L1/120V e L2/240V (detecção de relé principal ativado), nos pontos de teste das linhas da rede CA, antes do local de medição do Transformador de Corrente (TC). Com a nova fonte de alimentação, o diagrama elétrico da EVSE fica conforme apresentado na figura a seguir:


Esta fonte tem a vantagem de fornecer dois sinais digitais (pinos 4 e 5 do conector JP5 da fonte), que vão, ambos para a placa controladora Arduino, onde vão ligados, respectivamente, nos pinos PD0 (RXD – pino 2) e PD1 (TXD – pino 3) do microcontrolador. Estes sinais digitais, correspondem, às informações de estado de cada uma das duas linhas da rede CA disposta na saída da estação de carregamento.

Para gerar tais sinais de monitoramento, o subsistema da fonte avançada emprega dois pequenos CIs com a função específica de Monitor de Linha CA com Saída Lógica (MID400), um para cada linha da rede, seja bifásico (220V, fase 1 e fase 2) ou monofásico (127V, fase e Neutro).


O MID400 é um dispositivo interface de linha CA para sinal lógico, opticamente isolado. É encapsulado em invólucro plástico dual em linha (DIP) de 8 pinos. Uma tensão de linha da CA é monitorizado por dois diodos LED GaAs, ligados num arranjo em antiparalelo em série com uma resistência montada externa (respectivamente R1 e R2, de 22kW).

Um alto ganho de circuito detector detecta a corrente do LED e acciona a porta de saída para um estado lógico baixo (0V ou nível lógico 0). Um tempo de retardo de ligamento e de desligamento típico da ordem de 1ms, garante uma filtragem que neutraliza a cintilação dos LEDs, durante a curta duração do transitório da passagem por zero volts da forma de onda senoidal da tensão de entrada, porém, isso torna a operação em baixa frequência, obrigatória.

O MID400 foi concebido apenas para o uso como um monitor de linha CA (monitor de presença de linha de rede, provendo interface para a condição "relé atracado", entre elementos eletromecânicos, tais como contatores, relés e SSR e o microprocessador. É recomendado para o uso em qualquer aplicação de controle de CA para CC onde o isolamento óptico excelente, confiabilidade de estado sólido, compatibilidade TTL, tamanho pequeno e baixa potência são desejáveis.

Para produzir a alimentação de 12V, o subsistema da fonte avançada emprega um Módulo Conversor CA/CC de operação chaveada, modelo MPM-04S-12, simples, compacto e para montagem em placa. Existe a opção de fonte simples, ou dupla (+12V e +5V), para os conversores da série MPM-04 (MPM-04D-1205), Esta opção seria para aplicação no caso em que a placa controladora não disponha de regulador de +5V próprio.

Memória:

O ATmega328 tem 32 KB de memória flash para armazenar código (dos quais 2 KB são utilizados pelo bootloader), além de 2 KB de SRAM e 1 KB de EEPROM (que pode ser lida e escrita através da “biblioteca EEPROM”).

Entrada e Saída Digitais:

Cada um dos 14 pinos digitais da Duemilanove pode ser usado como entrada ou saída, usando-se as funções de pinMode(), digitalWrite(), e digitalRead(). Eles trabalham com 5 volts. Cada pino pode fornecer ou receber um máximo 40 mA, e tem uma resistência de pull-up interna (vem desligadas de fábrica) de 20 – 50 kΩ. Além disso, alguns pinos de E/S digital têm funções específicas, a saber:
  • Serial: 0 (RX) e 1 (TX) – são usados para receber (RX) e transmitir (TX) dados TTL em série. Estes pinos são ligados aos pinos correspondentes do chip serial FTDI USB-to-TTL;
  • External Interrupts: 2 e 3 - Estes pinos podem ser configurados para ativar uma interrupção por aplicação de um nível baixo, de uma borda de subida ou descida, ou uma mudança de valor. Ver a função attachInterrupt();
  • PWM: 3, 5, 6, 9, 10, e 11 - Fornecem uma saída analógica PWM de 8 bits com a função analogWrite();
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCLK) - Estes pinos suportam comunicação SPI, que embora compatível com o hardware, não está incluída na linguagem do Arduino;
  • LED: 13 - Há um LED já montado e ligado de origem ao pino digital 13. Quando o pino está no valor HIGH, o LED acende; quando o valor está em LOW, ele apaga.

A tecnologia de comunicação SPI (Serial Peripheral Interface) foi desenvolvida originalmente pela Motorola, para a linha de processadores da família MC68K. O SPI é um protocolo síncrono, opera no modo full duplex e O Serial Peripheral Interface - SPI - permite que os dispositivos digitais se comuniquem utilizando apenas 3 ou 4 fios. Assim, dispositivos adicionais podem ser adicionados juntamente, interligados pelo mesmo barramento de dados, com a adição de apenas um único fio de seleção para cada dispositivo.
O protocolo SPI não permite nenhum tipo de endereçamento. Assim, a comunicação só pode ser feita entre dois pontos, sendo um deles definido como Master e o outro Slave. Por meio do protocolo SPI é possível comunicação SPI de microcontroladores AVRs entre si, por exemplo,. Usando o AVRstudio(gratuito) . A comunicação é feita através de apenas três vias :
  • SCLK: trata-se da via de clock, que é entrada (no Slave) ou saída (no Master);
  • MOSI: trata-se da entrada de dados (Data in no Slave), ou seja, a via de recepção;
  • MISO: trata-se da saída de dados (Data out no Slave), ou seja, a via de transmissão;
  • Existe também um quarto pino denominadoque pode ser utilizado do lado Slave. Na maioria dos casos, este pino é opcional e serve como um sinal de Chip Select. Com este recurso podemos fazer o Master controlar no mínimo dois Slaves, ou mais desde que o Master possa controlar controle individualmente os pinos de cada um dos Slaves. Esse controle terá de ser implementado manualmente no software e deve garantir que somente um Slave está ativado de cada vez, evitando conflitos nas E/S.”
Entrada e Saída Analógicas:

O Duemilanove tem 6 entradas analógicas e cada uma delas tem uma resolução de 10 bits (i.e. 1024 valores diferentes). Por padrão, elas medem de 0 a 5 volts, embora seja possível mudar o limite superior usando o pino AREF e um pouco de código de baixo nível. Adicionalmente alguns pinos têm funcionalidades específicas, a saber:

  • I2C: 4 (SDA) and 5 (SCL) – Suportam comunicação I 2 C (TWI) usando a biblioteca Wire (documentação no site do WIRE). Há ainda mais alguns pinos na placa:
  • AREF - Referência de tensão para entradas analógicas. São usados com o analogReference();
  • Reset - Envia o valor LOW para efetuar o RESET ao microcontrolador. É tipicamente utilizado para adicionar um botão de reset aos shields que bloqueiam o que há na placa.

Analise o diagrama de blocos entre os pinos do Arduino e as portas do ATmega 168 e referência do ATmega328.


Port B - pinos B0 até B5
Port C - pinos C0 até C5
Port D - Pinos D0 até D7















Todos os microcontroladores AVR tem “watchdog timer” interno que pode ser usado com sucesso em seus projetos. Atmega328 e outros microcontroladores AVR modernos têm chamado Watchdog Timer (Enhanced WDT). Ele tem algumas características muito úteis, incluindo: fonte de clock separado 128kHz, capacidade de redefinir microcontrolador e gerar interrupção.

Comunicação:

Com o Arduino Duemilanove, a comunicação com um computador, ou com outro Arduino, ou ainda com outros microcontroladores, é muito simplificada. O ATmega328 permite comunicação serial no padrão UART TTL (5V), que está disponível nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa Duemilanove encaminha esta comunicação serial através do USB e os drives FTDI (incluídos no software do Arduino) fornecem uma porta COM virtual para o software no computador. O software Arduino inclui um monitor série que permite que dados simples de texto sejam enviados à placa Arduino.

Já, na placa modelo Uno da plataforma Arduino, optou-se pelo avanço de empregar microcontrolador em separado, o Atmega8U2 para ncaminha esta comunicação serial através do USB. Apesar de ter pouca relevância para o escopo do nosso projeto, detalhes comparativos destes dois modelos de placas (Duemilanove e Uno), da plataforma Arduino, serão vistosa na próxima postagem O Arduino (ou Duemilanove) Uno Aplicado a uma EVSE (SAE-J1772) CA Nível 2 PARTE 2).

Os LEDs RX e TX da placa piscam, quando os dados estão para ser transferidos ao computador pelo chip FTDI. Mas o mesmo não ocorre quando há comunicação série, pela ligação USB, pelos pinos 0 e 1.

A biblioteca SoftwareSerial permite a comunicação série por quaisquer dos pinos digitais do Duemilanove.

O ATmega328 também oferece suporte aos padrões de comunicação I2C (TWI) e SPI. O software do Arduino inclui uma biblioteca Wire para simplificar o uso do bus I2C; para usar a comunicação SPI, veja detalhes na folha de informações do Atmega328.

Aceda, também, aos diagramas dos esquemas eletrônicos completos das placas Arduino Duemilanove e Arduino Uno, e compare-os, atentamente e, se Deus assim permitir, por favor, me aguardem até a próxima postagem.


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

2 comentários:

  1. Informações valiosas e muito importantes, é uma pena que não chega a todos os interessados, considerando que o google cada vez mais tem informações e no fim não recomenda.

    ResponderExcluir

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.