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 Wichert, voce está correto, 

O MOC3041 só dispara o TRIAC no zerocross .

Eu uso o MOC3023,  pois ele serve para as duas situações, chave ou dimmer, o diac dele faz o disparo.

Chave  ligando e desligando o LED "dele", e dimmer usando o delay após o zerocross para controlar o LED, como no circuito que postei acima.

Rui


Oi Jose,

fiz um desenho bem básico mesmo.

O motro parte quendo aperta liga;

Para qdo aperta Desligar.

Desliga também qdo sente o sensor ou qd EPO foi prescionada,

e nestes casos só volta a ligar se apertar reset e depois liga.

Correto.

Rui

isso mesmo rui

Oi José,

este novo código faz a mesma lógica das chaves e parte o motor progressivamente. (SoftStart).

Modifique os pinos de acordo com a sua necessidade.

o unico pino que não deve ser mudado é o da entrada de zerocross que é o pino 2.

Se voce quiser muda-lo a única alternativa no UNO é o pino 3, mas se mudar tem que mudar tb dentro do código,

Esta linha     attachInterrupt(0, zero_cross, RISING);  mude de 0 para 1, e nesta linha    detachInterrupt(0); também.

http://pastebin.com/KA6HPJtF

Rui

rui fiz umas mudanças ficou assim 

http://pastebin.com/SvDkkqH7 

vou montar na pci e testar tudo funcionando dps coloco os resultados aqui pra todos ok!

vlw!!!!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço