ola garagistas tudo bem?

estou tentando acionar um triac no inicio do semi ciclo mas estou com um pouco de dificuldades

vou colocar o codigo do q eu quero modificar se puderem me ajudar a incluir a funçao cross int agradeço !!!

esse eh uma programaçao de nr-12

funciona assim :

aperta o botao liga e liga o motor, desliga para o motor, emergencia desliga o motor e so liga dnv se pressionar o reset assim como tb com o sensor

mas pra evitar interferencias no lcd quero acionar no tempo certo da senoide

segue o codigo:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int liga = 10;
int desliga = 9;
int reset= 8;
int emergencia = 7;
int sensor = 13;
int motor = 6;
boolean motor_bloqueado = true;
boolean libera_lcd = false;
boolean libera_lcd2 = false;
boolean libera_lcd3 = false;

void setup()
{
  pinMode(liga,INPUT);
  pinMode(desliga,INPUT);
  pinMode(reset,INPUT);
  pinMode(emergencia,INPUT);
  pinMode(sensor,INPUT);
  pinMode(motor,OUTPUT);
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("OLA EZEQUIEL");
  lcd.setCursor(0,1);
  lcd.print("BOM TRABALHO");
}

void loop()
{
  if (digitalRead(liga) == HIGH && motor_bloqueado == false && libera_lcd == false)
  {
    digitalWrite(motor,HIGH);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MOTOR LIGADO");
    libera_lcd = true;
  }
  if (digitalRead(desliga) == HIGH && libera_lcd == true)
  {
    digitalWrite(motor,LOW);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MOTOR DESLIGADO");
    libera_lcd = false;
  }
  if (digitalRead(emergencia) == HIGH && libera_lcd2 == false)
  {
    digitalWrite(motor,LOW);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("BOTAO EMERGENCIA");
    lcd.setCursor(0,1);
    lcd.print("FOI PRESSIONADO");
    motor_bloqueado = true;
    libera_lcd2 = true;

  }
  if (digitalRead(reset) == HIGH && libera_lcd2 == true);
  {
    motor_bloqueado = false;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MAQUINA LIBERADA");
    libera_lcd2 = false;
    libera_lcd3 = false;   
  }
  if (digitalRead(sensor) == HIGH && libera_lcd3 == false)
  {
    digitalWrite(motor,LOW);
    motor_bloqueado = true;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("SENSOR ACIONADO");
    lcd.setCursor(0,1);
    lcd.print("PRESSIONE RESET");
    libera_lcd3 = true;
  }
}

desde ja agradeço!!!

Exibições: 2805

Responder esta

Respostas a este tópico

Oi José.

1. O Triac estará ligado entre uma fase (R S ou T) e o GND, ou entre fases?

2 . Qual CI voce está utilizando para Zerocross e para Disparar o Tiac (4N25 e MOC3023, MOC....)?

Rui

José, eu uso muito este esquema e este código:

O código usa o interrupt cada semiciclo,

Este código é para um Dimmer controlado pela serial.

Mas pode ser modificado para ser acionado por um Botão.

No Lugar da lampada use o motor.

Rui

// Rotina para dimmer. (110v ou 220v) comandado pela serial
// Os valores de brilho da lampada são enviados ao Arduino pelo Serial Monitor.
// O Serial monitor deve ser configurado como "No line ending".
// Os valoes vão de 0 (min) a 100(max).
// Uso didático
// Rui 01/05/2015
//*************** Variaveis e constantes *************
int LAMP = 3; // Pino de disparo do Triac
unsigned int dimming = 115; // Variavel para tempo de retardo. Valor Inicial Minimo
String str; // Variavel string para receber dados da Serial

//*********************** Setup ********************
void setup() // Rotina de setup
{
Serial.begin(9600); // Inicializa a serial a 9600 bps
pinMode(LAMP, OUTPUT); // Define o pino(D3) LAMP como saída
attachInterrupt(0, zero_cross, RISING); // Enable interrupt no pino D2
Serial.println("Digite o valor de brilho de 0 min a 100 max"); // Mensagem de entrada
}
//*********************** Loop ********************
void loop() // Rotina de loop
{
if(Serial.available() > 0) // Verifica se tem dados disponiveis na serial
{
str = Serial.readStringUntil('\n'); // Le os dados da serial para uma string
dimming = str.toInt(); // Transforma a string em Interio
Serial.println(dimming); // Eco da entrada da serial
dimming = (118-dimming)*68; // Calcula o retardo para o disparo do triac
if (dimming <1224) dimming = 1224; // Valor para o brilho máximo 1224
if (dimming >7820) dimming = 7820; // Valor para o brilho minimo 7820
}
delay(10);
}
//******************** Zero_Cross_Int ****************
void zero_cross() // Rotina chamada à cada interrupt causada pelo zero cross do AC
{
delayMicroseconds(dimming); // Restardo calculado
digitalWrite(LAMP, HIGH); // Dispara o Triac
delayMicroseconds(8.33); // Duração do pulso de disparo
digitalWrite(LAMP, LOW); // Desliga pulso de disparo
}

tem um modelo do MOCXXXX que faz isso automaticamente, ele só dispara no zero da senoide,

Jonas, 

Tem mesmo, é o MOC3041,

como eu não tenho mas tenho varios 4N25 e MOC3023, eu uso eles.

Rui

ola rui 

eu vou usar o moc 3021 para disparar o triac

mas esse seu codigo aciona pelo serial neh?

eu queria q ele acionasse direto no max mas no inicio do semi ciclo 

se puder me ajudar agradeço 

vlw!!!

cara , pra disparar no inicio, basta acionar o triac no mesmo momento q detectar o zerocross. e pelo q entendi vc não vai precisar da função dimmer, ou vai?

nao vai ser 0% ou  100%

OI Jonas,

se voce quizer fazer "Dimmer" usando  MOC3041, mesmo assim voce precisa de um device

para detectar o zero cross, para que o microntolador diga ao TRIAC qdo ele deve disparar.

Rui

Oi Rui,

O MOC3041 não permite fazer a dimerização por angulo de fase, ele é usado quando queremos um relé de estado sólido. 

Este acoplador tem um circuito que detecta a passagem por zero e dispara o triac apenas no início do semiciclo da senoide. Se desejar fazer um dimmer use um MOC sem o zero cross detector.

Abraço.

entao se eu quiser um rele de estado solido sem dimmer posso fazer o arduino apenas alimentar o gnd desse moc q ele se encarrega de acionar o triac no momento correto?

José Miguel, se deseja fazer um relé de estado solido, use o MOC3041 e esqueça o zero cross.

O proprio MOC3041 faz esse serviço.

Liga o led - aciona o triac, desliga o led > desliga o triac 

https://www.fairchildsemi.com/datasheets/MO/MOC3041M.pdf

[​IMG]

http://www.electro-tech-online.com/threads/switching-ac-loads-with-...

puxa q bom q tem esse moc vou comprar ele vlw 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço