Pular para o conteúdo principal

Grove - Relé de Estado Sólido de 8 Canais

Em vez de usar bobina, relés de estado sólido (SSR) encapsulados usam dispositivos semicondutores de potência, como tiristores e transistores, que proporcionam uma velocidade de comutação muito mais rápida do que os relés mecânicos. O Grove - 8-Channel Solid State Relay é baseado no módulo de alta qualidade G3MC202P, que permite usar 5VDC para controlar até 240VAC MÁX. Com a ajuda da interface Grove, torna-se muito conveniente usar o SSR com o seu Arduino.

Usamos um STM32F030F4P6 on-board para controlar os canais separadamente. O comando do Arduino ou de outras placas é transmitido via interface I2C, o STM32F030F4P6 on-board irá analisar o comando, para que você possa controlar o interruptor que desejar.

De acordo com diferentes cenários de aplicação, preparamos uma série de relés de estado sólido para você.

Grove - Solid State Relay V2

Grove - 2-Channel Solid State Relay

Grove - 4-Channel Solid State Relay

Grove - 8-Channel Solid State Relay

Características

  • Baixo consumo de energia

  • Longa durabilidade

  • Endereço I2C opcional

  • Vantagens sobre relés mecânicos:

    • Os relés de estado sólido têm velocidades de comutação muito mais rápidas em comparação com relés eletromecânicos e não possuem contatos físicos que se desgastem
    • Operação totalmente silenciosa
    • A ausência de contatos físicos significa ausência de faíscas, permitindo seu uso em ambientes explosivos, onde é fundamental que nenhuma faísca seja gerada durante a comutação
    • Vida útil aumentada, mesmo que seja acionado muitas vezes, pois não há partes móveis para desgastar nem contatos que possam se danificar ou acumular carbono
    • SSR compacto, de perfil fino e construção monobloco, com um único lead frame que incorpora PCB, terminais e dissipador de calor, sendo muito menor que relés mecânicos e podendo integrar mais canais
  • Desvantagens:

    • Quando fechado, maior resistência (gerando calor) e aumento de ruído elétrico
    • Quando aberto, menor resistência e corrente de fuga reversa
    • Funciona apenas para carga CA

Especificação

ItemValor
Tensão de entrada de operação4~6V
Tensão de Entrada Nominal5V
Tensão de Carga Nominal100 a 240 VAC 50/60 Hz
Faixa de Tensão de Carga75 a 264 VAC 50/60 Hz
Corrente de carga0,1 a 2 A
Corrente de fuga1,5 mA máx. (a 200 VAC)
Resistência de Isolação1.000 MΩ mín. (a 500 VDC)
Tempo de acionamento1/2 do ciclo da fonte de alimentação da carga +1 ms máx.
Tempo de liberação1/2 do ciclo da fonte de alimentação da carga + 1 ms máx.
Temperatura de Armazenamento-30°C a 100°C (sem gelo ou condensação)
Temperatura de Operação-30°C a 80°C (sem gelo ou condensação)
Umidade de Operação45% a 85%RH
Interface de EntradaI^2^C
Endereço I^2^C Padrão0x11 ou 0x12
Endereço I^2^C Disponível0x00 ~ 0x7F
Interface de saídaDIP fêmea azul 2 pinos x8
Passagem por zerosuporte
CertificaçãoUL / CSA
nota

Você deve prestar atenção à corrente de fuga; 1,5 mA é forte o suficiente para acender um LED de baixa potência, portanto, quando o relé estiver desligado, o LED ainda poderá emitir uma luz fraca.

Aplicações

  • Operações que exigem comutação de baixa latência, por exemplo, controle de luzes de palco
  • Dispositivos que exigem alta estabilidade, por exemplo, dispositivos médicos, sinais de trânsito
  • Situações que exigem à prova de explosão, anticorrosão, à prova de umidade, por exemplo, indústrias de carvão, químicas.

Visão Geral do Hardware

Mapa de Pinos

nota
  • Os interruptores 1-8 têm a mesma função de pino, portanto, para os outros interruptores, você pode se referir a LOAD1/LOAD2.
  • Na parte de trás da PCB, há duas interfaces: SWD e I^2^C. A interface SWD é usada por padrão ao programar o firmware; se você quiser usar a I^2^C (que na prática funciona como a UART de boot), você deve definir o BOOT em nível alto.

Esquemático

Controle do relé

K1 é o módulo de relé. Quando uma tensão de 5V é aplicada entre INT+ e INT-, o relé será ligado. Então o LOAD1 será conectado ao LOAD2. Usamos um transistor NPN Q1 (BC817-40) para controlar a tensão entre INT+ e INT-.

O CTR é o sinal de controle proveniente do Arduino ou de outra placa. Ele é puxado para baixo pelo resistor de 10k R2; se não houver sinal, o 'Gate' (porta 1) do Q1 estará em 0V e o Q1 ficará desligado, de modo que o K1 ficará desligado. Se o CTR se tornar 5V, então o Q1 será ligado. O INT- do K1 será conectado ao GND do sistema; para o K1 haverá 5V entre INT+ e INT-, então o K1 será ligado e o LOAD1 será conectado ao LOAD2.

Circuito de conversão de nível bidirecional

Este é um circuito típico de conversão de nível bidirecional para conectar duas seções de tensão diferente de um barramento I^2^C. O barramento I2C deste sensor usa 3,3 V; se o barramento I2C do Arduino usar 5 V, este circuito será necessário. No esquemático acima, Q17 e Q18 são MOSFETs de canal N 2N7002A, que atuam como uma chave bidirecional. Para entender melhor esta parte, você pode consultar o AN10441

nota

Nesta seção mostramos apenas parte do esquemático; para o documento completo, consulte os Resources

Plataformas Suportadas

ArduinoRaspberry Pi
cuidado

As plataformas mencionadas acima como suportadas são uma indicação da compatibilidade teórica ou de software do módulo. Na maioria dos casos, fornecemos apenas biblioteca de software ou exemplos de código para a plataforma Arduino. Não é possível fornecer biblioteca de software / código de demonstração para todas as possíveis plataformas de MCU. Portanto, os usuários precisam escrever sua própria biblioteca de software.

Primeiros Passos

Brincar com Arduino

Hardware

Materiais necessários

Seeeduino V4.2Base ShieldGrove - 8-Channel Solid State Relay
enter image description hereenter image description hereenter image description here
Adquira agoraAdquira agoraAdquira agora
nota

1 Conecte o cabo USB com cuidado, caso contrário você pode danificar a porta. Use o cabo USB com 4 fios internos; o cabo de 2 fios não consegue transferir dados. Se você não tiver certeza sobre o cabo que possui, pode clicar here para comprar

2 Cada módulo Grove vem com um cabo Grove quando você compra. Caso você perca o cabo Grove, pode clicar here para comprar.

  • Passo 1. Conecte o Grove - 8-Channel Solid State Relay à porta I^2^C do Base Shield.

  • Passo 2. Conecte o Grove - Base Shield ao Seeeduino.

  • Passo 3. Conecte o Seeeduino ao PC por meio de um cabo USB.

nota

Se não tivermos o Grove Base Shield, também podemos conectar este módulo diretamente ao Seeeduino como abaixo.

SeeeduinoGrove - 8-Channel Solid State Relay
5VVermelho
GNDPreto
SDABranco
SCLAmarelo

Software

nota

Se esta é a primeira vez que você trabalha com Arduino, recomendamos fortemente que veja Getting Started with Arduino antes de começar.

  • Passo 1. Baixe a biblioteca Multi_Channel_Relay_Arduino do Github.

  • Passo 2. Consulte How to install library para instalar a biblioteca para Arduino.

  • Passo 3. Reinicie a Arduino IDE. Abra o exemplo pelo caminho: File --> Examples --> Multi Channel Relay Arduino Library --> eight_channel_relay_control.

Ou você pode simplesmente clicar no ícone no canto superior direito do bloco de código para copiar o código a seguir para um novo sketch na Arduino IDE.

#include <multi_channel_relay.h>

#define USE_8_CHANNELS (1)

Multi_Channel_Relay relay;

void setup()
{
Serial.begin(9600);
while(!Serial);

/* Scan I2C device detect device address */
relay.begin();
uint8_t old_address = relay.scanI2CDevice();
if((0x00 == old_address) || (0xff == old_address)) {
while(1);
}

Serial.println("Start write address");
relay.changeI2CAddress(old_address, 0x11); /* Set I2C address and save to Flash */
Serial.println("End write address");

/* Read firmware version */
Serial.print("firmware version: ");
Serial.print("0x");
Serial.print(relay.getFirmwareVersion(), HEX);
Serial.println();
}

void loop()
{

/**
* channle: 8 7 6 5 4 3 2 1
* state: 0b00000000 -> 0x00 (all off)
* state: 0b11111111 -> 0xff (all on)
*/

/* Begin Controlling Relay */
Serial.println("Channel 1 on");
relay.turn_on_channel(1);
delay(500);
Serial.println("Channel 2 on");
relay.turn_off_channel(1);
relay.turn_on_channel(2);
delay(500);
Serial.println("Channel 3 on");
relay.turn_off_channel(2);
relay.turn_on_channel(3);
delay(500);
Serial.println("Channel 4 on");
relay.turn_off_channel(3);
relay.turn_on_channel(4);
delay(500);
#if(1==USE_8_CHANNELS)
Serial.println("Channel 5 on");
relay.turn_off_channel(4);
relay.turn_on_channel(5);
delay(500);
Serial.println("Channel 6 on");
relay.turn_off_channel(5);
relay.turn_on_channel(6);
delay(500);
Serial.println("Channel 7 on");
relay.turn_off_channel(6);
relay.turn_on_channel(7);
delay(500);
Serial.println("Channel 8 on");
relay.turn_off_channel(7);
relay.turn_on_channel(8);
delay(500);
relay.turn_off_channel(8);
#endif

relay.channelCtrl(CHANNLE1_BIT |
CHANNLE2_BIT |
CHANNLE3_BIT |
CHANNLE4_BIT |
CHANNLE5_BIT |
CHANNLE6_BIT |
CHANNLE7_BIT |
CHANNLE8_BIT);
Serial.print("Turn all channels on, State: ");
Serial.println(relay.getChannelState(), BIN);

delay(2000);

relay.channelCtrl(CHANNLE1_BIT |
CHANNLE3_BIT |
CHANNLE5_BIT |
CHANNLE7_BIT);
Serial.print("Turn 1 3 5 7 channels on, State: ");
Serial.println(relay.getChannelState(), BIN);

delay(2000);

relay.channelCtrl(CHANNLE2_BIT |
CHANNLE4_BIT |
CHANNLE6_BIT |
CHANNLE8_BIT);
Serial.print("Turn 2 4 6 8 channels on, State: ");
Serial.println(relay.getChannelState(), BIN);

delay(2000);


relay.channelCtrl(0);
Serial.print("Turn off all channels, State: ");
Serial.println(relay.getChannelState(), BIN);

delay(2000);
}
  • Passo 4. Faça o upload do demo. Se você não sabe como fazer o upload do código, verifique How to upload code.

  • Passo 5. Abra o Serial Monitor da Arduino IDE clicando em Tool-> Serial Monitor. Ou pressione as teclas ++ctrl+shift+m++ ao mesmo tempo.

dica

Se tudo correr bem, você obterá o resultado. Enquanto isso, você verá os LEDs on-board acendendo e apagando alternadamente.

Scanning...
I2C device found at address 0x11 !
Found 1 I2C devices
Start write address
End write address
firmware version: 0x1
Channel 1 on
Channel 2 on
Channel 3 on
Channel 4 on
Channel 5 on
Channel 6 on
Channel 7 on
Channel 8 on
Turn all channels on, State: 11111111
Turn 1 3 5 7 channels on, State: 1010101
Turn 2 4 6 8 channels on, State: 10101010
Turn off all channels, State: 0
Channel 1 on
Channel 2 on

nota

Não adicionamos carga neste demo; se você quiser verificar como adicionar carga, consulte Grove - 2-Channel Solid State Relay.

Descrição da função

FunçãoDescrição
changeI2CAddress(uint8_t old_addr, uint8_t new_addr)altera o endereço do dispositivo; o old_addr é o endereço atual; o new_addr é o endereço que você quer usar. O novo endereço só pode ser definido com sucesso inserindo o endereço antigo correto.
scanI2CDevice()obtém o old_addr (endereço atual)
getChannelState()obtém o estado de cada canal, por exemplo "State: 1111", o que significa que todos os relés estão ligados
getFirmwareVersion()obtém a versão do firmware gravada no MCU on-board
channelCtrl(uint8_t state)para alterar imediatamente todos os canais que você selecionou, a lista de parâmetros state:

CHANNLE1_BITou 0x01
CHANNLE2_BIT ou 0x02
CHANNLE3_BIT ou 0x04
CHANNLE4_BIT ou 0x08
CHANNLE5_BIT ou 0x10
CHANNLE6_BIT ou 0x20
CHANNLE7_BIT ou 0x40
CHANNLE8_BIT ou 0x80

por exemplo
channelCtrl(CHANNLE2_BIT|CHANNLE3_BIT),ligará o canal 2 e o canal 3
channelCtrl(0x01|0x02|0x08), ligará o canal 1, o canal 2 e o canal 4.
channelCtrl(0), desligará todos os canais.
turn_on_channel(uint8_t channel)liga um único canal.
por exemplo
turn_on_channel(3), ligará o canal 3
turn_off_channel(uint8_t channel)desliga um único canal.
por exemplo
turn_off_channel(3), desligará o canal 3

Caso você queira alterar o endereço, é necessário definir o endereço antes de usar. Por exemplo, queremos alterá-lo para 0x2f. Podemos usar o seguinte código.

#include <multi_channel_relay.h>

Multi_Channel_Relay relay;

void setup()
{
Serial.begin(9600);
while(!Serial);

/* Scan I2C device detect device address */
uint8_t old_address = relay. ;
if((0x00 == old_address) || (0xff == old_address)) {
while(1);
}

Serial.println("Start write address");
relay.changeI2CAddress(old_address,0x2f); /* Set I2C address as 0x2f and save it to the EEPRom */
Serial.println("End write address");

/* Read firmware version */
Serial.print("firmware version: ");
Serial.print("0x");
Serial.print(relay.getFirmwareVersion(), HEX);
Serial.println();
}


FAQ

P1: Como gravar o firmware?

R1: Recomendamos que você use o gravador J-Link e a interface WSD para gravar o firmware.

Você pode baixar o firmware aqui:

Firmware de fábrica

Recomendamos que você use o J-flash para o software:

J-flash

Visualizador Online de Esquemático

Recursos

Projeto

Este é o vídeo de introdução deste produto, com demos simples, que você pode experimentar.

Suporte Técnico e Discussão sobre o Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...