CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Autor
Mensagem
3
thalysson.thfs

Level 0
0 xp

Registrado em:
21/11/2019





Mensagens:
1
3
thalysson.thfs

Responder com citações
Mensagem Sex Nov 22, 2019 9:49 am
Motor DC com transistor e diodo não ta funcionando
Fiz um circuito com transistor e diodo para acionar um motor DC 12V através da resposta de um sensor analógico de gás MQ-2. Testei o programa simples abaixo e o motor funcionou bem.

int Pincooler = 8; 
int PinA0 = A0;
 
int leitura_sensor = 30;
void setup() {
  pinMode(PinA0, INPUT); 
  pinMode(Pincooler, OUTPUT); 
  Serial.begin(9600);

}

void loop() {
  int valor_analogico = analogRead(PinA0); 
Serial.print("Leitura: "); 
Serial.println(valor_analogico);
 if (valor_analogico > leitura_sensor){
 Serial.print("Limpando ambiente contaminado\n");
  digitalWrite(Pincooler, HIGH);
 delay(10000); 
 }else{ 
 digitalWrite(Pincooler, LOW);
 }
 delay(100);

}

Quando carreguei outro programa no arduino, com mais linhas de programação, porém com o mesmo princípio de acionamento do motor, ele não funciona. Dá apenas um "click", ou um "passo".

#define PIN_MQ2 (0) 
#define RL (5) 
#define FATOR_AR_LIMPO (9.62) 
                                                     
#define ITERACOES_CALIBRACAO (50)    
#define ITERACOES_LEITURA (5)     

#define PinCooler  (Cool

                                                  
                                                    
float CurvaFumaca[3] = {2.3,0.53,-0.44};    
                                          
float Ro = 10; 
int Limiar_Acionamento = 5000;

void setup()
{
  Serial.begin(9600);                             
  Serial.print("Calibrando o sensor MQ2...\n");                
  Ro = Calibracao_Ro(PIN_MQ2);      //calibra o sensor MQ2                                  
  Serial.print("Finalizando a calibracao...\n"); 
  Serial.print("Calibracao concluida...\n"); 
  Serial.print("Valor de Ro=");
  Serial.print(Ro);
  Serial.print("kohm");
  Serial.print("\n");
}

void loop()
{
  
   float PPM = calculaPPMGas(leitura_MQ2(PIN_MQ2)/Ro,CurvaFumaca);    
   Serial.print("Concentracao de Fumaca:"); 
   Serial.print(PPM);
   Serial.print( "ppm    " );
   Serial.println("");
   
   if (PPM > Limiar_Acionamento){
     Serial.print("Ambiente contaminado\n");
     Serial.print("Limpando ambiente contaminado\n");
     digitalWrite(PinCooler, HIGH);
     delay(10000); 
     }else{ 
     digitalWrite(PinCooler, LOW);
     }
   delay(100);
}

float calcularRSArLimpo(int tensao_bits)   //funcao que recebe o tensao (dado cru) e calcula a resistencia efetuada pelo sensor. O sensor e a resistência de carga forma um divisor de tensão. 
{
  return (((float)RL*(1023-tensao_bits)/tensao_bits));
}

float Calibracao_Ro(int mq_pin)   
{
  int i;
  float valor=0;

  for (i=0;i<ITERACOES_CALIBRACAO;i++) {    
    valor += calcularRSArLimpo(analogRead(mq_pin));
    delay(500);
  }
  valor = valor/ITERACOES_CALIBRACAO;        

  valor = valor/FATOR_AR_LIMPO; 
  return valor; 
}

float leitura_MQ2(int mq_pin)
{
  int i;
  float rs=0;

  for (i=0;i<ITERACOES_LEITURA;i++) {
    rs += calcularRSArLimpo(analogRead(mq_pin));
    delay(50);
  }

  rs = rs/ITERACOES_LEITURA;

  return rs;  
}
int  calculaPPMGas(float rs_ro, float *pcurve) 
{
  return (pow(10,( ((log(rs_ro)-pcurve[1])/pcurve[2]) + pcurve[0])));
}

Onde vocês acham que está o erro?
Mostrar mensagens desde a última:




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group