Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
O SCT-013 é um sensor de corrente não invasivo amplamente utilizado para medir a corrente elétrica em cabos sem a necessidade de desconectá-los. Embora seja mais comum em projetos de Arduino e Raspberry Pi, é possível adaptá-lo para funcionar em um ambiente de microchip, como com microcontroladores PIC ou AVR. Este artigo explicará como integrar o SCT-013 com um microcontrolador, destacando sua importância para monitoramento de corrente em projetos eletrônicos e industriais.
Exemplo 1: Conexão do SCT-013 com um Microcontrolador PIC
Para conectar o SCT-013 a um microcontrolador PIC, você precisará de alguns componentes adicionais, como resistores e capacitores, para criar um circuito de condicionamento de sinal. Aqui está um exemplo de como fazer isso:
Componentes Necessários:
Circuito de Condicionamento de Sinal:
Código de Exemplo em C:
#include <xc.h>
// Configurações do ADC
void ADC_Init() {
ADCON0 = 0x41; // Habilita o ADC e seleciona o canal AN0
ADCON1 = 0x80; // Configura o ADC para usar o oscilador interno
}
// Função para ler o valor do ADC
unsigned int ADC_Read(unsigned char channel) {
ADCON0 &= 0xC5; // Limpa os bits de seleção do canal
ADCON0 |= channel << 3; // Seleciona o canal
__delay_ms(2); // Tempo de aquisição
GO_nDONE = 1; // Inicia a conversão
while(GO_nDONE); // Espera a conversão terminar
return ((ADRESH << 8) + ADRESL); // Retorna o valor do ADC
}
void main() {
unsigned int adc_value;
ADC_Init();
while(1) {
adc_value = ADC_Read(0); // Lê o valor do ADC no canal 0
// Processa o valor do ADC conforme necessário
}
}
Exemplo 2: Conexão do SCT-013 com um Microcontrolador AVR
Para um microcontrolador AVR, como o ATmega328p, o processo é semelhante. Aqui está um exemplo de como fazer isso:
Componentes Necessários:
Circuito de Condicionamento de Sinal:
Código de Exemplo em C:
#include <avr/io.h>
// Configurações do ADC
void ADC_Init() {
ADMUX = (1<<REFS0); // Seleciona a referência de tensão AVcc
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // Habilita o ADC e configura o prescaler
}
// Função para ler o valor do ADC
uint16_t ADC_Read(uint8_t channel) {
ADMUX &= 0xF0; // Limpa os bits de seleção do canal
ADMUX |= channel; // Seleciona o canal
ADCSRA |= (1<<ADSC); // Inicia a conversão
while(ADCSRA & (1<<ADSC)); // Espera a conversão terminar
return ADC; // Retorna o valor do ADC
}
int main() {
uint16_t adc_value;
ADC_Init();
while(1) {
adc_value = ADC_Read(0); // Lê o valor do ADC no canal 0
// Processa o valor do ADC conforme necessário
}
}