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.
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.
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
“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:
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:
- 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.
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
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
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.
ResponderExcluirVerdade. Muito grato pela observação, amigo.
Excluir