Capacimètre bricolage simple à plage automatique (10pF-10000microF)
Composants et fournitures
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| LCD alphanumérique, 16 x 2 | | × | 1 | |
| Potentiomètre à un tour - 10k ohms | | × | 1 | |
Applications et services en ligne
À propos de ce projet
Les multimètres numériques simples (DMM) ne peuvent pas mesurer la capacité et pour trouver la capacité, vous devez soit opter pour un multimètre numérique avancé et coûteux, soit trouver un module de capacité dédié.
Dans ce projet, je vais construire un simple compteur de capacité Arduino avec fonction de plage automatique. Il peut mesurer la capacité de 10 pF à 10 000 μF. La mesure s'effectue en mode automatique, il suffit de connecter le condensateur aux contacts de mesure. L'appareil dispose de deux plages :"nF" et "μF". Lors de la mesure d'un condensateur, la plage "nF" est d'abord activée, si la capacité est trop grande, la transition vers la plage "μF" se produit.
Chaque capacimètre a un circuit RC avec des valeurs de résistance connues et une valeur de condensateur inconnue. L'Arduino mesurera la tension au condensateur et enregistrera le temps qu'il faut pour atteindre un certain pourcentage de sa tension lorsqu'il est complètement chargé (la constante de temps). Puisque la valeur de résistance est déjà connue, nous pouvons utiliser la formule dans un programme qui calculera la capacité inconnue. Le condensateur testé est chargé à l'aide de l'une des résistances. L'Arduino initie la charge du condensateur à travers la résistance en fonction de sa capacité. Dans le capacimètre, un étalonnage du zéro est effectué à chaque mise sous tension. Par conséquent, au moment de la mise sous tension, un condensateur ne doit pas être connecté aux contacts de mesure. De plus, tous les condensateurs doivent être prédéchargés.
La précision est de +/- quelques pourcents et dépend principalement de la tolérance des résistances utilisées ainsi que de la stabilité de la tension d'alimentation.
Enfin, l'ensemble de l'appareil est logé dans une boîte appropriée et constitue un autre outil utile dans votre laboratoire.
Code
Code ArduinoC/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);} long time0, time1, time2 non signé; float c,null0;byte kn,mk,i;void loop(){ lcd.setCursor(15,0); lcd.print("*"); if(mk==0){ pinMode(8,OUTPUT); pinMode(7,ENTRÉE); digitalWrite(8,HIGH); } if(mk==1){ pinMode(7,OUTPUT); pinMode(8,ENTRÉE); écriture numérique(7, ÉLEVÉ); } heure0=micros(); while(analogRead(A0)<644){ time2=micros()-time0; if(time2>=1000000 &&mk==0){ mk=1; heure0=100000000 ; Pause; } } time1=micros()-time0; while(analogRead(A0)>0){ pinMode(7,OUTPUT); pinMode(8,SORTIE); digitalWrite(7,LOW); digitalWrite(8,LOW); } if(mk==1&&time1<1000){ mk=0; } lcd.setCursor(1,0) ; c=temps1; c=c/1000-null0 ; c=abs(c); if(time1>=10000000){ lcd.setCursor(1,0) ; lcd.print(" TEST uF "); } else{ lcd.print(c); if(mk==0){ lcd.print(" nF "); } if(mk==1){ lcd.print(" uF "); } } if(i==0){ i++; nul0=c+0,02 ; } retard (100);}
Schémas