Arduino induktans/kapacitans/motstånd mätaren (2 / 3 steg)

Steg 2: Kod och prestanda



Så tre funktionerna mäta ben kapacitans, induktans och motstånd, måste vi välja vi vill göra, att välja funktionen och användning 2 bitar kan räkna 0-0,0-1,1-0,1-1.

Så vi använder två switch för att välja, vilket gör dem fungerar som en dip-växel med dem som drar ner, att mäta induktans är 0-0, 0-1 för kapacitans, motstånd mot 1-0, det är hur vi väljer att mäta.

För att mäta induktans användning LM393 jämförelseperson att mäta kapacitans LM741, och att mäta motstånd lätt Använd en 10 k resistor och en spänningsavdelare.

Antag att vi vill beräkna R1. Vi vet att R2 har värdet 10k, vi vet att Vin har ett värde på 5V (som vi brukar hitta i Arduino miljön) och att läsa på en analog Vout pin av Arduino är 750.

1.-vi vet att upplösningen på ADC Arduino är 10 bitar, vilket innebär att 1024 är möjligt divisioner (2 upphöjt till 10) för ett indatavärde mellan 0V och 5V. Så om vi sätter 5V på en analog stift, dess värde blir 1023 (1024 kommer inte ihåg som börjar räkna på 0, inte 1); om vi sätter 0V på stift, dess värde blir 0 och om till exempel 2.5V dess värde kommer vi att 511.

Därför, om det värde som ger behandlingen analoga stiftet i dess digitala värde 750, kan vi beräkna Vout, den tillverkade spänningen av spänningsdelare.

>> 5V / 1024 divisioner = 0, 00488V / division

>> 0.00488 volt / division • 750 divisioner = 3.66V

2.-vi kan redan tydliga R1, som var frågan:

>> Vout = (R2 / R1 + R2) • Vin

>> 3,66 V = (10k / R1 + 10k) • 5V

>> R1 + 10 k = 10 k • 5V / 3.66V

>> R1 = (10 k • 5V / 3.66V)-10 k = 3.66KΩ

I allmänhet kan vi beräkna värdet av R1 som:

>> R1 = (R2 • Vin / Vout)-R2

Samma kod är i spanska dokumentation, så om du har några frågor vänligen säga så:

#include LiquidCrystal lcd (13, 8, 7, 5, 4, 2);

#define R_1 A1
#define R_2 A2
#define IND_1 6
#define IND_2 12
#define fuente_pin 11
#define switch_pin 10
#define descarga_pin 9
#define PIN_1 A3
#define PIN_2 A4
Variablerna leer pines
int pin_1;
int pin_2;
Variablerna para inductometro
dubbel pulso;
dubbel frecuencia;
dubbla capacitancia;
dubbla inductancia;
Capacimetro
float R = 1.0e6;
float C = 0;
flyta RC = 0;
lång t_inicio = 0;
flyktiga lång t_alto = 0;
lång T = 0;
flyta VCC = 4,50;
flyta Vref = VCC / 2;
flyta V0 = 0;
flyta error_correccion = 40.;
int retardo_delay = 20;
Variablerna resistometro
int vR_1 = 0;
int vR_2 = 0;
flyta Vin = 5;
flyta Vout = 0;
flyta Res_1 = 10000;
flyta Res_2 = 9000000;
flyta r_1 = 0;
flyta r_2 = 0;
flyta Resistor_1 [8],
flyta Resistor_2 [5].
float ResArreglo_1;
float ResArreglo_2;
void setup() {
LCD.BEGIN (16, 2);
Configuracion de tallar
pinMode (PIN_1, indata);
pinMode (PIN_2, indata);
Configuracion Inductometro
pinMode (IND_1, indata);
pinMode (IND_2, OUTPUT);
capacitancia = 0.000001021;
Delay(200);
Configuracion de Resistometro
pinMode (R_1, indata);
pinMode (R_2, indata);
Configuracion Capacimetro
attachInterrupt (1, stop, RISING);
VREF = VCC / 2;
pinMode (fuente_pin, produktionen);
digitalWrite (fuente_pin, låg);
pinMode (switch_pin, ingång);
pinMode (descarga_pin, ingång);
}
void loop() {
leerpines();
om (pin_1 == låg & & pin_2 == låg) {
digitalWrite (IND_2, hög);
Delay(5);
digitalWrite (IND_2, låg);
delayMicroseconds(100);
Pulso = pulseIn (IND_1, hög, 5000);
LCD.Clear();
om (pulso > 0,1) {
frecuencia = 1.E6 / (2 * pulso);
inductancia = 1. / (capacitancia * älskar * älskar * 4.*3.1459 * 3.14159);
inductancia * = 1E6;
lcd.setCursor (2, 0);
LCD.Print("INDUCTANCIA:");
Delay(200);
om (inductancia > = 1000) {
lcd.setCursor (0, 1);
int valor = (inductancia / 1000) - 0,5;
LCD.Print(Valor);
lcd.setCursor (6, 1);
LCD.Print("MH");
} annat {
lcd.setCursor (0, 1);
int valor_2 = inductancia + 10.
LCD.Print(valor_2);
lcd.setCursor (6, 1);
LCD.Print("uh");
}
} else om (pulso < 0,1) {
lcd.setCursor (2, 0);
LCD.Print ("INSERTAR IND");
}
Delay(300); } om (pin_1 == låg & & pin_2 == hög) {
LCD.Clear();
för (int jag = 0; jag < = 7; i ++) {
Resistor_1 [i] = analogRead(R_1);
ResArreglo_1 = ResArreglo_1 + Resistor_1 [i];
}
vR_1 = (ResArreglo_1 / 8.0);
Vout = (Vin * vR_1) / 1023;
r_1 = Res_1 * (1 / ((Vin / Vout) - 1));
lcd.setCursor (2, 0);
LCD.Print("RESISTENCIA:");
om (r_1 < = 999) {
lcd.setCursor (0, 1);
LCD.Print(r_1);
lcd.setCursor (9, 1);
LCD.Print("Omhs");
} else om (r_1 > = 1000) {
r_1 = r_1 / 1000;
lcd.setCursor (0, 1);
LCD.Print(r_1);
lcd.setCursor (9, 1);
LCD.Print("KOmhs");
}
Delay(500);
ResArreglo_1 = 0;
} om (pin_1 == hög & & pin_2 == låg) {
LCD.Clear();
om (debounce(switch_pin) == låg)
{
pinMode (descarga_pin, produktionen);
digitalWrite (descarga_pin, låg);
Delay(100);
pinMode (descarga_pin, ingång);
digitalWrite (fuente_pin, hög);
t_inicio = micros(); } om (t_alto > 0 & & t_inicio > 0 & & (t_alto - t_inicio) > 0)
{
T = (t_alto - t_inicio);
RC = -T / log ((Vref-VCC) / (V0 - VCC));
VREF = VCC/2
V0 = 0V
C = RC / R; Valor sv uF
lcd.setCursor (0, 0);
LCD.Print("C:");
lcd.setCursor (3, 0);
LCD.Print (C * 1000, 1);
lcd.setCursor (13, 0);
LCD.Print("NF");
lcd.setCursor (0, 1);
LCD.Print("C:");
lcd.setCursor (3, 1);
LCD.Print (C * 1000000 - error_correccion, 0);
lcd.setCursor (13, 1);
LCD.Print("PF"); t_inicio = 0;
t_alto = 0; digitalWrite (fuente_pin, låg);
Delay(2000);
}
}
} void leerpines() {
pin_1 = digitalRead(PIN_1);
pin_2 = digitalRead(PIN_2);
} makulera stop()
{
t_alto = micros();
} int debounce (int stift)
{
int estado;
int previo_estado;
previo_estado = digitalRead(pin);
för (int jag = 0; jag < retardo_delay; i ++)
{
Delay(1);
Estado = digitalRead(pin);
om (estado! = previo_estado)
{
Jag = 0;
previo_estado = estado;
}
}
returnera estado;
}

Se Steg
Relaterade Ämnen

Induktans/kapacitans mätare Saga

Jag hade en massa random induktorer i vissa slumpmässiga lådor och jag ville veta vilka värden de var. Dessa värden är ganska ofta inte uppenbara genom att titta på enheten. Färgkoder för gamla var inte standardiserade och några av de färgade ringarn...

L/C induktans kapacitans Multimeter mäter LC200A Tool

den mäter 500 KHz, erbjuder en noggrannhet på 1% och används för att mäta kapaciteten av 0,01 pf 100mF, induktorer 0.001 uH och 100 H (med olika upplösningar förstås). Huset är mycket professionellt utseende med en bakre stöd för den placerade vertik...

Mäta SMD kondensatorer på Arduino

Mäta kapacitans är uppgiften varje Arduino ägare har att hantera förr eller senare. Detta gäller särskilt när du flyttar från thru-håls komponenter till SMD ones-mindre kondensatorer, till skillnad från motstånd av samma storlek, inte markeras alls....

4-i-1 Arduino LCD sköld Version 2

Med detta projekt, har du minst fyra produkter i en eftersom detta kit består av en Arduino Uno, en LCD-skärm, en USB-A till USB-B kabel och alla material som du kommer att behöva utveckla följande fyra projekt: en disk, en termometer, en kondensator...

Arduino hög hastighet oscilloskop med PC-gränssnitt

Använd din Arduino och PC som en Snabb lagring oscilloskop.Arduinoen kan på ett tillförlitligt sätt samla spänning avläsningar med en frekvens mellan 141 och 153 KiloHertz.1000 data avläsningar kan tas i runt 6.8ms.Överfört kapitalinlösenfond till en...

12 tim binär klocka, timmar och minuter bara, DS1307 RTC, i2C, Arduino-Nano

Ett tag nu har jag velat göra en binär klocka, men efter att ha tittat jag bestämde mig något bara lite annorlunda. Så jag beslöt att endast visar timmar och minuter och endast visa en 12 timmars klocka, innebär detta du bara behöver 3 kolumner och m...

5 & 8 siffrigt Arduino Counter

i detta projekt, kan du använda en skärbräda för montering den 8-siffriga sju segment LED display modulen och din Arduino Nano så att du kan ladda upp 5 & 8 siffrig counter kod. Det vill säga två olika program i ett enda projekt utan lödning någon tr...

DIY Arduino matrisskrivare armbandsur

Handleden klockor är fantastiska och fancy mode accessoarer för män och kvinnor. Beslutsfattare vilja alltid använda något annat. Min diy arduino matrisskrivare armbandsur är slutresultatet efter en månad. Klockan visar tid, datum och temperatur i tv...

Arduino trafikljus simulator

Ett barn vänliga språk att lära barn programmering är grunden. Scratch är ett grafiskt programmeringsspråk utvecklat av MIT Media Lab livslångt dagis grupp. Den kan användas till att programmera spel och animeringar genom att dra och släppa instrukti...

Kul med LED och POT - Arduino insikter

Hi guys... ett stort Hej till alla er där ute... det är första gången jag presenterar en instructable till er alla från våra org elektronik gjord enkel. Så en elektroingenjör med mycket hårda tider spenderas i lärande elektronik på sätt dess faktiskt...

AVR programmering med Arduino, AVRdude och AVR-gcc

AVR är en gemensam, billig typ av mikro-controller som kan verka skrämmande att arbeta med, men oroa dig inte! När du har Ställ in grundläggande kunskap och kan de bli inte bara nyttigt, men viktigt att nya projektidéer som du drömmer upp!Denna handl...

Arduino väderstation Del3, regn

så ett av mina senaste projekt var att lägga en vindflöjel till min Arduino väderstation.Denna lata gamla Geek beslutat att lägga till en REGNMÄTARE i det även om vi inte får mycket regn i höga öknen. De flesta digitala regn mätare baseras på något s...

Multi-sätt hacka-Cam använder Arduino

Ja, är detta mitt första inlägg. Jag gjorde något som kommer att göra minsommaren produktiva men det tog endast 1 dag att avsluta det här projektet, från planering till kodning och tillverka. Lyckligtvis nästan hälften av material jag använt är bärga...

Arduino Sump Pump

Denna Arduino Pump handledning visar ett exempel på hur man använder en flottör, Powertail och pumpen skapar en sump pumpsystem. När du vill styra större pumpar från en Arduino behöver du ett starkare relä att hantera större spänning och ström. Power...

Kapacitiv Touch Arduino Keyboard Piano

med endast en Arduino, några motstånd, en Summer och några bitar aluminiumfolie, kan du skapa din egen touch-sensor piano keyboard på bara några minuter! Med en Arduino Uno kan skapa du ett piano med upp till 18 nycklar. eller med en Arduino Mega, ka...

Enkel ljusstyrka indikator och alert med LDR, Arduino, Python.

Används LDR (Light beroende motstånd) för att ändra motståndet i kretsen som kan användas för att styra beteendet hos olika komponenter.I detta projekt använder jag LED och högtalare som utdata komponenterna som upptäcker ljusstyrkan i rummet och var...

Genom att använda en Arduino kontrollerar eller testa en elektronisk anordning som SPI

det finns många elektroniska apparater som använder SPI bussen, eller seriellt perifera gränssnitt buss, för kommunikation (t.ex. olika sensorer, LCD skärmar, digital potentiometrar, D/A och A/D omvandlare, trådlös sändare och mottagare, audio volymk...

Arduino binära väckarklocka

detta Instructable visar dig hur man bygger en binär väckarklocka, med en touch sensor snooze knappen. Detta är min första instructable och mitt första riktiga arduino projekt, jag hoppas du gillar det!Jag köpte en arduino ett tag tillbaka och jag ty...

Puzzlebox bana: Med en Arduino att styra en infraröd helikopter

i detta Instructable kommer vi att förklara hur IR signaler används av en fjärrkontroll att styra en leksak eller enhet, sedan Visa hur en enkel krets kan läggas till en Arduino att fungera samma enhet genom fri, öppen källkod.Detta dokument ingår i...