Go Down

Topic: Capacimetro con tres dígitos de 7 segmentos (Read 356 times) previous topic - next topic

freddy2086

Jan 24, 2019, 11:34 pm Last Edit: Jan 25, 2019, 12:14 am by surbyte Reason: Titulo Editado
Saludos y gracias de antemano.


He iniciado un proyecto el cual posiblemente esten ya cansados de ver. Pero he investigado mucho y no he podido encontrar un capacimetro con pantalla 7 segmentos led.

Ustedes de seguro pensaran que es mas fácil hacerlo con un LCD, pero la cosa es hacerlo con reciclaje y tengo varias de estas pantallad. Además las necesito para poder medir solo en microfaradios.
Code: [Select]
#include "SevSeg.h"
SevSeg myDisplay;

#define analogPin      0         // analog pin para medir capacitador
#define chargePin      3         // pin  para carga del capacitador - conectado al final de resistencia de 1kohm
#define dischargePin   2         // pin de descarga del capacitador - conectado al final de la resistencia de 220ohm
#define resistorValue  1000.0F   // resistencia de carga del capacitador

unsigned long startTime;         // inicio del tiempo
unsigned long elapsedTime;       // tiempo transcurrido

void setup(){
  int displayType = COMMON_ANODE;
  int digit1 = 4; //Pin 12  display
  int digit2 = 7; //Pin 9   display
  int digit3 = 8; //Pin 8   display
  int digit4 = 1; /////////////////
  
  int segA = 5;   //Pin 11 display
  int segB = 9;   //Pin 7  display
  int segC = 12;  //Pin 4  display
  int segD = 11;  //Pin 2  display
  int segE = 10;  //Pin 1  display
  int segF = 6;   //Pin 10 display
  int segG = 13;  //Pin 5  display
  int segDP= 0;   //Pin 6  display

  int numberOfDigits = 4;

  myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);
  
  myDisplay.SetBrightness(100);

  pinMode(chargePin, OUTPUT);    
  digitalWrite(chargePin, LOW);
}

void loop(){
  char tempString[10];
  sprintf(tempString, "%4d", elapsedTime*10);
  myDisplay.DisplayString(tempString, 4);

  digitalWrite(chargePin, HIGH);            //comienza la carga
  startTime = millis();
  while(analogRead(analogPin) < 648){}      // 647 es 63.2% de 1023, que corresponde a el voltaje
  elapsedTime = millis() - startTime;  

  digitalWrite(chargePin, LOW);             //descarga del capacitador
  pinMode(dischargePin, OUTPUT);            
  digitalWrite(dischargePin, LOW);          
  while(analogRead(analogPin) > 0){}
  pinMode(dischargePin, INPUT);
}



Este es el código que he estado utilizando pero solo he podido hacer que parpadeen los dígitos por un momento y así es difícil leerlos y quisiera que se apreciara por mas tiempo o fijos.

Disculpen los errores que pueda contener el código o la manera de postear pero soy muy nuevo en esto y mis conocimientos de electrónica son limitados. :smiley-confuse:

surbyte

La librería SevSeg.h viene con ejemplos, los has probado?

freddy2086

Si ya he probado los ejemplos de la librería pero aun así no consigo que los dígitos se mantengan, solo consigo un parpadeo momentáneo del valor. Así cuesta mucho para verlo. Sin embargo sigo haciendo pruebas de conseguir respuesta la comento. Gracias

surbyte

Vaya me sorprende el comentario que haces.
Puedes indicarnos el valor de las resistencias que usas para los segmentos, y como manejas los displays? usas algun driver o Transitor?
Un esquema ayudaría.

Yo he usado esa librería y es fantástica y muy facil de usar.

Go Up