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 - 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
| Item | Valor |
|---|---|
| Tensão de entrada de operação | 4~6V |
| Tensão de Entrada Nominal | 5V |
| Tensão de Carga Nominal | 100 a 240 VAC 50/60 Hz |
| Faixa de Tensão de Carga | 75 a 264 VAC 50/60 Hz |
| Corrente de carga | 0,1 a 2 A |
| Corrente de fuga | 1,5 mA máx. (a 200 VAC) |
| Resistência de Isolação | 1.000 MΩ mín. (a 500 VDC) |
| Tempo de acionamento | 1/2 do ciclo da fonte de alimentação da carga +1 ms máx. |
| Tempo de liberação | 1/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ção | 45% a 85%RH |
| Interface de Entrada | I^2^C |
| Endereço I^2^C Padrão | 0x11 ou 0x12 |
| Endereço I^2^C Disponível | 0x00 ~ 0x7F |
| Interface de saída | DIP fêmea azul 2 pinos x8 |
| Passagem por zero | suporte |
| Certificação | UL / CSA |
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


- 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
Nesta seção mostramos apenas parte do esquemático; para o documento completo, consulte os Resources
Plataformas Suportadas
| Arduino | Raspberry Pi | |||
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.2 | Base Shield | Grove - 8-Channel Solid State Relay |
|---|---|---|
![]() | ![]() | |
| Adquira agora | Adquira agora | Adquira agora |
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.

Se não tivermos o Grove Base Shield, também podemos conectar este módulo diretamente ao Seeeduino como abaixo.
| Seeeduino | Grove - 8-Channel Solid State Relay |
|---|---|
| 5V | Vermelho |
| GND | Preto |
| SDA | Branco |
| SCL | Amarelo |
Software
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.
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

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ção | Descriçã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:
Recomendamos que você use o J-flash para o software:

Visualizador Online de Esquemático
Recursos
- [Zip] Arquivos eagle do Grove-8-Channel SPDT Relay
- [Zip] Biblioteca Arduino Multi Channel Relay
- [Bin] Firmware de fábrica
- [PDF] Folha de dados do G3MC202P
- [PDF] Folha de dados do STM32
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.







