CAPACÍMETRO com Arduino UNO (Faça você mesmo – DIY)
Fala Pessoal! Tudo Bom?
Neste video ensinamos como você pode passar a ter na sua própria Bancada Eletrônica um aparelho eletrônico muitíssimo requisitado e utilizado até mesmo por Hobistas na área de Eletrônica e Elétrica.
Vamos mostrar como você pode desenvolver e montar um CAPACÍMETRO (portátil ou de bancada) utilizando uma simples placa Arduino UNO, ou no nosso caso, utilizando a nossa Placa Roduino V2 – Um Arduino Standalone feito em casa (Projeto completo disponível aqui).
Com este projeto você será capaz de realizar medições de uma extensa faixa de capacitores, desde os 1.000nF até mais de 6.800uF!
Para quem ainda não tem um capacímetro em sua bancada, ou até mesmo quem já tenha, este projeto além de levar didática a todos, também promete ser um bom companheiro para “conferências” de valores de capacitâncias diversas. 😉
Confira abaixo o desenho esquemático do circuito a ser montado, muito simples por sinal! 🙂
Agora basta inserir o código fonte abaixo (Sketch) na sua plataforma IDE do Arduino, compilar e rodar seu projeto!
OBS: Este Código Funciona APENAS com DISPLAY LCD 16×2 (I2C)!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
#include <Arduino.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); //as vezes o endereço não é (0x27). Mude para (0x3f) se não funcionar. int Carga = 7; //Pino digital 7 vai carregar o capacitor int Descarga = 6; //Pino digital 6 vai descarregar o capacitor int PinA0 = A0; //Medida de tensão(carga no capacitor) no pino analógico 0 float Resistor = 2200.0; //Resistor de carga 2K2 Ohms float microFarads; //Armazena o valor da capacitância em µF float nanoFarads; //Armazana o valor da capacitância em nF unsigned long Time1; //Tempo inicial unsigned long Time2; //Tempo transcorrido unsigned long T; //Constante de tempo void setup() { pinMode(Carga,OUTPUT); //Configura pino de carga como saída digital digitalWrite(Carga,LOW); //Inicializa pino de carga lcd.init(); lcd.backlight(); lcd.setCursor(2,0); //Coluna 3, Linha 1 lcd.print("Capacimetro"); //Escreve no display } void loop() { digitalWrite(Carga,HIGH); //Saída de carga em nível alto Time1 = millis(); //Armazena a contagem de programa em mili segundos em Time 1 while(analogRead(PinA0) < 648) { // Aguarda até atingir 63,2% da tensão da fonte } /* Conversor AD de 10 bits 1024 - 100% X - 63,2% X = 1024 x 0,632 X ~~ 647 */ Time2 = millis(); //Armazena a contagem de programa em mili segundos em Time 2 T = Time2- Time1; //Calcula a constante de tempo /* tau = RC -> C = tau/R Time2 x 10E-3 (segundos) Time2 (segundos) C x 10E-6 (microFarad) = --------------------------- -> C (microFarad) = ------------------- x 10E3 Resistor (Ohms) Resistor (Ohms) */ microFarads = ((float)T / Resistor) * 1000; // Calcula a capacitância em micro Farads if (microFarads > 1) //Capacitância maior que 1uF? { //Sim... lcd.clear(); lcd.setCursor(2,0); //Coluna 3, Linha 1 lcd.print("Capacimetro"); lcd.setCursor(5,1); //Coluna 6, Linha 2 lcd.print((long)microFarads); lcd.print(" uF"); } else //Senão... { nanoFarads = microFarads * 1000.0; //Converte uF em nF lcd.clear(); lcd.setCursor(2,0); //Coluna 3, Linha 1 lcd.print("Capacimetro"); lcd.setCursor(5,1); //Coluna 6, Linha 2 lcd.print((long)nanoFarads); if(nanoFarads>901 && nanoFarads<999) { lcd.clear(); lcd.setCursor(2,0); //Coluna 3, linha 1 lcd.print("Capacimetro"); lcd.setCursor(5,1); //Coluna 6, Linha 2 lcd.print("1 uF"); lcd.print(" "); } if(nanoFarads<500){ lcd.clear(); lcd.setCursor(2,0); //Coluna 3, linha 1 lcd.print("Capacimetro"); lcd.setCursor(6,1); //Coluna 6, Linha 2 lcd.print("0"); } lcd.print(" nF"); } digitalWrite(Carga,LOW); //Saída de carga em nível baixo pinMode(Descarga,OUTPUT); //Configura pino de descarga como saída digital digitalWrite(Descarga,LOW); //Saída de descarga em nível baixo while(analogRead(PinA0) > 0) { //Aguarda até que a tensão no capacitor chegue a zero } pinMode(Descarga, INPUT); //Pino de descarga volta a ser entrada delay(300); //Atualização das leituras } |
OBS: Este Código Funciona com DISPLAY LCD 16×2 (I2C) e também via MONITOR SERIAL da IDE ARDUINO!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
// Código para leitura *apenas via DISPLAY SERIAL da Plataforma ARDUINO // PS: Ainda sim, com este código é possível utilizar display 16x2 LCD // By: Rodrigo Santos do Blog - https://EletronicaParaTodos.com #include <Arduino.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> LiquidCrystal_I2C lcd(0x27,20,4); //as vezes o endereço não é (0x27). Mude para (0x3f) se não funcionar. int Carga = 7; //Pino digital 7 vai carregar o capacitor int Descarga = 6; //Pino digital 6 vai descarregar o capacitor int PinA0 = A0; //Medida de tensão(carga no capacitor) no pino analógico 0 float Resistor = 2200.0; //Resistor de carga 2K2 Ohms float microFarads; //Armazena o valor da capacitância em µF float nanoFarads; //Armazana o valor da capacitância em nF unsigned long Time1; //Tempo inicial unsigned long Time2; //Tempo transcorrido unsigned long T; //Constante de tempo void setup() { //Medidor Serial Arduino Serial.begin(115200); Serial.println("Iniciando Medição..."); //delay(200); pinMode(Carga,OUTPUT); //Configura pino de carga como saída digital digitalWrite(Carga,LOW); //Inicializa pino de carga lcd.init(); lcd.backlight(); lcd.setCursor(2,0); //Coluna 3, Linha 1 lcd.print("Capacimetro"); //Escreve no display } void loop() { digitalWrite(Carga,HIGH); //Saída de carga em nível alto Time1 = millis(); //Armazena a contagem de programa em mili segundos em Time 1 while(analogRead(PinA0) < 647) { // Aguarda até atingir 63,2% da tensão da fonte } /* Conversor AD de 10 bits 1024 - 100% X - 63,2% X = 1024 x 0,632 X ~~ 647 */ Time2 = millis(); //Armazena a contagem de programa em mili segundos em Time 2 T = Time2- Time1; //Calcula a constante de tempo /* tau = RC -> C = tau/R Time2 x 10E-3 (segundos) Time2 (segundos) C x 10E-6 (microFarad) = --------------------------- -> C (microFarad) = ------------------- x 10E3 Resistor (Ohms) Resistor (Ohms) */ microFarads = ((float)T/Resistor)*1000; // Calcula a capacitância em micro Farads if (microFarads > 1) //Capacitância maior que 1uF? { //Sim... //Impressão Serial (Monitor Serial da IDE) Serial.print("\tCapacitância"); Serial.print((long)microFarads); Serial.println(" uF"); delay(1000); lcd.clear(); lcd.setCursor(2,0); //Coluna 3, Linha 1 lcd.print("Capacimetro"); lcd.setCursor(5,1); //Coluna 6, Linha 2 lcd.print((long)microFarads); lcd.print(" uF"); } else //Senão... { nanoFarads = microFarads * 1000.0; //Converte uF em nF lcd.clear(); lcd.setCursor(2,0); //Coluna 3, Linha 1 lcd.print("Capacimetro"); lcd.setCursor(5,1); //Coluna 6, Linha 2 lcd.print((long)nanoFarads); //Impressão Serial (Monitor Serial da IDE) Serial.print("\tCapacitância"); Serial.print((long)nanoFarads); Serial.println(" nF"); delay(1000); if(nanoFarads>901 && nanoFarads<999) { lcd.clear(); lcd.setCursor(2,0); //Coluna 3, linha 1 lcd.print("Capacimetro"); lcd.setCursor(5,1); //Coluna 6, Linha 2 lcd.print("1 uF"); lcd.print(" "); } if(nanoFarads<500){ lcd.clear(); lcd.setCursor(2,0); //Coluna 3, linha 1 lcd.print("Capacimetro"); lcd.setCursor(6,1); //Coluna 6, Linha 2 lcd.print("0"); } lcd.print(" nF"); } digitalWrite(Carga,LOW); //Saída de carga em nível baixo pinMode(Descarga,OUTPUT); //Configura pino de descarga como saída digital digitalWrite(Descarga,LOW); //Saída de descarga em nível baixo while(analogRead(PinA0) > 0) { //Aguarda até que a tensão no capacitor chegue a zero } pinMode(Descarga, INPUT); //Pino de descarga volta a ser entrada delay(300); //Atualização das leituras } |
Bom, acho que já falamos D+ por aqui, e sendo assim, a pergunta que fica é:
Tá curioso(a)?!
CLICA EM PLAY e “Vombora“! 😀
? Hospedagem de Sites 50% OFF + SSL Grátis!
➤ https://bit.ly/2UBv3pB
? Acesso ao CURSO COMPLETO de Altium Designer :
➤ https://hotm.art/OdQRbNu
? Nosso CANAL “SECRETO” no TELEGRAM:
➤ https://t.me/eletronicaparatodos
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021