Acerca de este proyecto
Los multímetros digitales simples (DMM) no pueden medir la capacitancia y, para encontrar la capacitancia, debe optar por un multímetro digital avanzado y costoso o encontrar módulos de capacitancia dedicados.
En este proyecto, construiré un medidor de capacitancia Arduino simple con función de rango automático. Puede medir capacitancia desde 10 pF hasta 10, 000 μF. La medición se realiza en modo automático, basta con conectar el condensador a los contactos de medición. El dispositivo tiene dos rangos:"nF" y "μF". Al medir un capacitor, el rango "nF" se enciende primero, si la capacitancia es demasiado grande, entonces ocurre la transición al rango "μF".
Cada medidor de capacitancia tiene un circuito RC con valores de resistencia conocidos y un valor de capacitor desconocido. El Arduino medirá el voltaje en el capacitor y registrará el tiempo que tarda en alcanzar un cierto porcentaje de su voltaje cuando está completamente cargado (la constante de tiempo). Dado que el valor de la resistencia ya se conoce, podemos usar la fórmula en un programa que calculará la capacitancia desconocida. El condensador bajo prueba se carga usando una de las resistencias. El Arduino inicia la carga del condensador a través de una resistencia según su capacidad. En el medidor de capacitancia, se realiza una calibración a cero cada vez que se enciende, por lo tanto, en el momento del encendido, no se debe conectar un capacitor a los contactos de medición. Además, todos los condensadores deben estar descargados previamente.
La precisión es de +/- un pequeño porcentaje y depende principalmente de la tolerancia de las resistencias utilizadas, así como de la estabilidad de la tensión de alimentación.
Por último, todo el dispositivo está alojado en una caja adecuada y es otra herramienta útil en su laboratorio.
Código
Código Arduino C / C ++
#include LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup () {lcd.begin (16, 2 ); // LCD 16X2 pinMode (A0, INPUT);} unsigned long time0, time1, time2; flotador c, nulo0; byte kn, mk, i; bucle vacío () {lcd.setCursor (15,0); lcd.print ("*"); if (mk ==0) {pinMode (8, SALIDA); pinMode (7, ENTRADA); escritura digital (8, ALTA); } if (mk ==1) {pinMode (7, SALIDA); pinMode (8, ENTRADA); escritura digital (7, ALTA); } tiempo0 =micros (); while (analogRead (A0) <644) {time2 =micros () - time0; si (tiempo2> =1000000 &&mk ==0) {mk =1; time0 =100000000; descanso; }} tiempo1 =micros () - tiempo0; while (analogRead (A0)> 0) {pinMode (7, SALIDA); pinMode (8, SALIDA); digitalWrite (7, BAJO); digitalWrite (8, BAJO); } si (mk ==1 &&tiempo1 <1000) {mk =0; } lcd.setCursor (1,0); c =tiempo1; c =c / 1000-null0; c =abs (c); if (tiempo1> =10000000) {lcd.setCursor (1,0); lcd.print ("PRUEBA uF"); } else {lcd.print (c); if (mk ==0) {lcd.print ("nF"); } if (mk ==1) {lcd.print ("uF"); }} si (i ==0) {i ++; null0 =c + 0.02; } retraso (100);}
Esquemas