quinta-feira, 4 de junho de 2015

VÍDEO FINAL - O FUNCIONAMENTO DO PROTÓTIPO

Abaixo, para fechar o projeto do 7º semestre de Engenharia Elétrica da USF, "SmarCar", segue um vídeo explicativo do protótipo. Aproveitamos para agradecer à todos que nos acompanharam nessa jornada, aos muitos autores de tópicos e artigos da internet, que nos ajudaram muito, e aos professores do curso que nos orientaram: Débora, Adriano, Eduardo, João Hermes e Renato. Muito obrigado à todos!!!!



Apresentação do projeto - 02/06/2015

E chegou o dia. A apresentação do protótipo!










Últimos detalhes da montagem do protótipo













Apresentação de mídia

Essa foi a apresentação de slides que apresentamos no dia projeto. Segue o link:

https://www.sendspace.com/file/v6ju0a

Linha de programação utilizada no projeto - transcrição

Segue abaixo toda a transcrição da linha de programação utilizada no projeto:

/*
Todo programa esta na ordem:
1° presença
2º Corrente 5A
3º Corrente 20A
4° Vidro
*/


// presença
int led_presenca =  3;    //Declara Led que indica presenca no pino 3
int pinopir = 2;         // Declara entrada sensor de presenca no pino 1
int acionamento;         // Declara variavel auxiliar do sensor de presenca

// Corrente 5A

int sensorPin =A0;
int alimentacao = 11;
int led=12;
int sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.004887586;// 5%1023

// Corrente 20A

int sensorPin_1 =A1;
int alimentacao_1 = 10;
int led_1=13;
int sensorValue_1_aux_1 = 4;
float sensorValue_1 = 4;
float currentValue_1 = 4;
float voltsporUnidade_1 = 0.004887586;// 5%1023

//Vidro

int vidro=5;
int motor=6;


void setup() {
  
 //presença
 
  pinMode(led_presenca, OUTPUT);     //Define led_presenca como saida
  pinMode(pinopir, INPUT);           // Defini pinopir como entrada
  digitalWrite(led_presenca, LOW);
  digitalWrite(pinopir,LOW);
  digitalWrite(acionamento,LOW);
 
//Corrente 5A
 
  Serial.begin(9600);
  pinMode(sensorPin, INPUT);
  pinMode(led,OUTPUT);
  pinMode(alimentacao,OUTPUT);
  digitalWrite(led,HIGH);
  digitalWrite(alimentacao,HIGH);
  
//Corrente 20A  

  pinMode(sensorPin_1, INPUT);
  pinMode(led_1,OUTPUT);
  pinMode(alimentacao_1,OUTPUT);
  digitalWrite(led_1,HIGH);
  digitalWrite(alimentacao_1,HIGH);
  
  
//Vidro
  
  pinMode(vidro,OUTPUT);
  pinMode(motor,OUTPUT);
  digitalWrite(vidro,HIGH);
  digitalWrite(motor,LOW);
   
}


void loop() {
  // put your main code here, to run repeatedly:
   
  
    
   acionamento=digitalRead(pinopir); // Define acionamento como leitura do sensor de presenca
  
  if (acionamento==HIGH)           // Se sensor nao indica presenca, executa a sequencia abaixo
  {
  digitalWrite(vidro,HIGH);
  digitalWrite(motor,LOW);
    digitalWrite(led_1,HIGH);
     digitalWrite(led,HIGH);
    digitalWrite(led_presenca, HIGH);
    delay(5000);

}
else{
  acs();
  acs_1();
  reset();
  vidros();
 digitalWrite(led_presenca, LOW);

    
}
}

/*

Ligar o Acs712 Sempre no final do circuito (delisgar o terra e colocar o ACS)

*/

void acs()
{
 for(int i=100; i>0; i--){
    sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é (1023)vcc/2 para corrente =0
    sensorValue += pow(sensorValue_aux,2); // somam os quadrados das leituras.

  }
 
  sensorValue = (sqrt(sensorValue/ 100)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
  currentValue = (sensorValue/.5); // calcula a corrente considerando a sensibilidade do sernsor (185 mV por amper)
 

  // mostra o resultado no terminal
  Serial.print(currentValue,3);
  Serial.print(" A \n" );
 
  sensorValue =0;
  delay(1000); // Delay necessario para leitura da corrente (não se pode tirar este delay)
  
if (currentValue > .26 )
{
digitalWrite(led,LOW);
delay(100);
}
else
{
digitalWrite(led,LOW);
delay(100);
}
}


void acs_1()
{
 for(int i=100; i>0; i--){
    sensorValue_1_aux_1 = (analogRead(sensorPin_1) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é (1023)vcc/2 para corrente =0
    sensorValue_1 += pow(sensorValue_1_aux_1,2); // somam os quadrados das leituras.

  }
 
  sensorValue_1 = (sqrt(sensorValue_1/ 100)) * voltsporUnidade_1; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
  currentValue_1 = (sensorValue_1/.125); 
 

  // mostra o resultado no terminal
  Serial.print(currentValue_1,3);
  Serial.print(" A \n" );
 
  sensorValue_1 =4;
  delay(1000); // Delay necessario para leitura da corrente (não se pode tirar este delay)
  
if (currentValue_1 > 1 )
{
digitalWrite(led_1,LOW);
delay(100);
}
else
{
digitalWrite(led_1,LOW);
delay(100);
}
}

void vidros()
{
if(digitalRead(vidro)==HIGH && digitalRead(motor) == LOW)
{ 
digitalWrite(vidro,LOW);
digitalWrite(motor,HIGH);
delay(3000);
digitalWrite(motor,LOW);

}
}


void reset()
{

digitalWrite(acionamento,LOW);
digitalWrite(led_presenca,LOW);
digitalWrite(led,LOW);
digitalWrite(led_1,LOW);

}

Mais alguns rascunhos, cálculos e circuitos













sábado, 23 de maio de 2015

Vídeo

Primeiro vídeo explicando um pouco do circuito.