segunda-feira, 1 de abril de 2013

4º Projeto: Controlador de velocidade de motor CC com display de 7 segmentos

Nesse 4º projeto iremos fazer um controlador de motor cc com um transistor NPN (bd139) e um velocímetro simples com um display de 7 segmentos.

Material:

    - Arduino
    - Protoboard
    - Fios Jumpers
    - Transistor NPN BD139
    - Motor CC
    - display de 7 segmentos (Ânodo comum)
    - 2 pusshbottons
    - 3 Resistores 220ohms
    - 2 pilhas pequenas

Esquema:





Código: 

int motorPin = 3;  //Motor conectados ao pino 3
int acePin = 4;  //Pushbotton para ascelerar conectado no pino 4
int decPin = 5;  //Pushbotton para desascelerar conectado no pino 5
int val = 0;  //Valor 0 para motor
int aceButton = LOW;  //valor zerado no push de ascelerar
int decButton = LOW;  //Valor zarado no push de desascelerar
int displayA = 6;
int displayB = 7;
int displayC = 8;
int displayD = 10;
int displayE = 11;
int displayF = 12;
int displayG = 13;

void setup(){ 
pinMode(acePin, INPUT);  //Pino de acelerar setado como entrada  
pinMode(decPin, INPUT);  //Pino de desascelerar setado como entrada  
pinMode(motorPin, OUTPUT);  //Motor setado como sáida  
analogWrite(motorPin, 0);  //Valor zerado no motor 
Serial.begin(9600);  //Valor do serial para transferencia de dados  
  
pinMode(6, OUTPUT);  
pinMode(7, OUTPUT);  
pinMode(8, OUTPUT);  
pinMode(10, OUTPUT);  
pinMode(11, OUTPUT);  
pinMode(12, OUTPUT);  
pinMode(13, OUTPUT);
}

void loop(){
aceButton = digitalRead(acePin);  //Ler valor de push para ascelerar  
decButton = digitalRead(decPin);  //Ler o valor do push para desascelerar  
if(aceButton == HIGH)  //Ao acionar o push de acelerar seta o motor
  {
     val=val-1;      //incrementa um valor  
}
   if(val<=0){     
digitalWrite(displayA, HIGH);  //Seguencia do numero 0     
digitalWrite(displayB, LOW);     
digitalWrite(displayC, LOW);     
digitalWrite(displayD, LOW);     
digitalWrite(displayE, LOW);     
digitalWrite(displayF, LOW);     
digitalWrite(displayG, LOW);   
}  
    if(val<=-1){  //se valor for menor ou igual que -1        
digitalWrite(displayA, HIGH);  //Seguencia do numero 1        
digitalWrite(displayB, HIGH);        
digitalWrite(displayC, HIGH);        
digitalWrite(displayD, LOW);        
digitalWrite(displayE, HIGH);        
digitalWrite(displayF, HIGH);        
digitalWrite(displayG, LOW);      
}
     if(val<=-2){      
digitalWrite(displayA, LOW);  //Seguencia do numero 2      
digitalWrite(displayB, HIGH);      
digitalWrite(displayC, LOW);      
digitalWrite(displayD, LOW);      
digitalWrite(displayE, LOW);      
digitalWrite(displayF, LOW);      
digitalWrite(displayG, HIGH);    
}
    if(val<=-3){     
digitalWrite(displayA, LOW);  //Seguencia do numero 3     
digitalWrite(displayB, HIGH);     
digitalWrite(displayC, LOW);     
digitalWrite(displayD, LOW);     
digitalWrite(displayE, HIGH);     
digitalWrite(displayF, LOW);     
digitalWrite(displayG,LOW);   
}
       if(decButton == HIGH)
  {    
val++;  
  
Serial.println(val);  //Printar valores do serial crlt+shift+M  
delay(100);  
analogWrite(motorPin,val);  //Escrita do valor analogico para o motor    
}

Vídeo:


Comentário:

Ao fazer o upload do programa para o arduino você poderá navegar pelos pushbottons para acelerar e desacelerar o motor cc, o display de 7 segmentos comporta-se como um simples velocímetro.

Agradeço a atenção.



Nenhum comentário:

Postar um comentário