Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.25 KB | None | 0 0
  1. /* Pinos LCD:
  2.  LCD RS pin 2
  3.  LCD EN pin 3
  4.  LCD D4 pin 5
  5.  LCD D5 pin 6
  6.  LCD D6 pin 7
  7.  LCD D7 pin 8
  8.  */
  9.  
  10. #include <LiquidCrystal.h>
  11.  
  12. #define analogPin      1          // Pino analogico para medicao tensao
  13. #define chargePin      11         // Pino para carregar capacitor
  14. #define dischargePin   12         // Pino para descarregar capacitor
  15. #define resistorValue  100000.0F   // Valor do resistor que descarrega o cap
  16. // F mostra que é um valor float
  17. LiquidCrystal lcd(2,3,5,6,7,8);
  18. unsigned long startTime;
  19. unsigned long elapsedTime;
  20. unsigned long elapsedTimeMilli;
  21. unsigned long delayTime;
  22. float microFarads, nanoFarads, picoFarads;
  23.  
  24.  
  25. void setup(){
  26.   pinMode(chargePin, OUTPUT);    
  27.   digitalWrite(chargePin, LOW);
  28.  
  29.   lcd.begin(16,2);
  30.   lcd.setCursor(0,0);
  31.   lcd.print("Valor do cap:   ");
  32.  
  33.   Serial.println("Inicio");
  34. }
  35.  
  36.  
  37. void loop(){
  38.   digitalWrite(chargePin, HIGH);  // set chargePin HIGH and capacitor charging
  39.   startTime = micros();
  40.  
  41.   while(analogRead(analogPin) < 648){       // 647 é 63.2% de 1023, que corresponde a tensão total
  42.   }
  43.  
  44.   elapsedTime= micros() - startTime;  //Tempo entre o capacitor descarregado e 63,2% do total
  45.  
  46.   // converter microsegundos para segundos ( 10^-6 ) e Farads para microFarads ( 10^6 )  
  47.   microFarads = ((float)elapsedTime/ resistorValue);
  48.  
  49.  
  50.   if (microFarads > 1){
  51.     lcd.setCursor(0,1);
  52.     lcd.print("                ");
  53.     lcd.setCursor(0,1);
  54.     lcd.print(microFarads,3);
  55.     lcd.setCursor(13,1);
  56.     lcd.print("uF");
  57.   }
  58.   else
  59.   {
  60.     nanoFarads = microFarads * 1000.0;    // multiplicar por 1000 para passar para nanoFarads
  61.     if (nanoFarads > 1){
  62.       if (nanoFarads < 2) {
  63.         lcd.setCursor(0,1);
  64.         lcd.print("-Sem Capacitor-");
  65.       }
  66.       else
  67.       {
  68.         lcd.setCursor(0,1);
  69.         lcd.print("                ");
  70.         lcd.setCursor(0,1);
  71.         lcd.print(nanoFarads,3);
  72.         lcd.setCursor(13,1);
  73.         lcd.print("nF");
  74.       }
  75.     }
  76.   }
  77.  
  78.  
  79.  
  80.   delay(800);
  81.  
  82.   /* dicharge the capacitor  */
  83.   digitalWrite(chargePin, LOW);            
  84.   pinMode(dischargePin, OUTPUT);            
  85.   digitalWrite(dischargePin, LOW);          
  86.   while(analogRead(analogPin) > 0){        
  87.   }
  88.  
  89.   pinMode(dischargePin, INPUT);            
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement