- Nødvendige komponenter:
- Kretsdiagram:
- Arduino Uno:
- 16x2 LCD:
- Konseptet med motstandsfargekode:
- Beregning av motstand ved bruk av Arduino Ohm Meter:
- Kode forklaring:
Vi synes det er vanskelig å lese fargekoder på motstander for å finne motstanden. For å overvinne vanskeligheter med å finne motstandsverdien, skal vi bygge en enkel Ohm Meter ved hjelp av Arduino. Det grunnleggende prinsippet bak dette prosjektet er et Voltage Divider Network. Verdien av den ukjente motstanden vises på 16 * 2 LCD-skjerm. Dette prosjektet fungerer også som 16 * 2 LCD-skjermgrensesnitt med Arduino.
Nødvendige komponenter:
- Arduino Uno
- 16 * 2 LCD-skjerm
- Potensiometer (1 kilo Ohm)
- Motstander
- Brettbrett
- Jumper ledninger
Kretsdiagram:
Arduino Uno:
Arduino Uno er et open source mikrokontrollerkort basert på ATmega328p mikrokontroller. Den har 14 digitale pinner (hvorav 6 pinner kan brukes som PWM-utganger), 6 analoge innganger, innebygde spenningsregulatorer osv. Arduino Uno har 32 KB flashminne, 2 KB SRAM og 1 KB EEPROM. Den opererer med klokkefrekvensen på 16MHz. Arduino Uno støtter seriell, I2C, SPI-kommunikasjon for kommunikasjon med andre enheter. Tabellen nedenfor viser den tekniske spesifikasjonen til Arduino Uno.
Mikrokontroller | ATmega328p |
Driftsspenning | 5V |
Inngangsspenning | 7-12V (anbefalt) |
Digitale I / O-pinner | 14 |
Analoge pinner | 6 |
Flashminne | 32KB |
SRAM | 2KB |
EEPROM | 1KB |
Klokkefart |
16MHz |
16x2 LCD:
16 * 2 LCD er en mye brukt skjerm for innebygde applikasjoner. Her er den korte forklaringen om pinner og bruk av 16 * 2 LCD-skjerm. Det er to veldig viktige registre inne i LCD-skjermen. De er dataregister og kommandoregister. Kommandoregister brukes til å sende kommandoer som klar visning, markør hjemme etc., dataregister brukes til å sende data som skal vises på 16 * 2 LCD. Tabellen nedenfor viser pinbeskrivelsen på 16 * 2 lcd.
Pin |
Symbol |
I / O |
Beskrivelse |
1 |
Vss |
- |
Bakke |
2 |
Vdd |
- |
+ 5V strømforsyning |
3 |
Vee |
- |
Strømforsyning for å kontrollere kontrasten |
4 |
RS |
Jeg |
RS = 0 for kommandoregister, RS = 1 for dataregister |
5 |
RW |
Jeg |
R / W = 0 for skriving, R / W = 1 for lese |
6 |
E |
I / O |
Muliggjøre |
7 |
D0 |
I / O |
8-bits databuss (LSB) |
8 |
D1 |
I / O |
8-bits databuss |
9 |
D2 |
I / O |
8-bits databuss |
10 |
D3 |
I / O |
8-bits databuss |
11 |
D4 |
I / O |
8-bits databuss |
12 |
D5 |
I / O |
8-bits databuss |
1. 3 |
D6 |
I / O |
8-bits databuss |
14 |
D7 |
I / O |
8-bit databuss (MSB) |
15 |
EN |
- |
+ 5V for bakgrunnsbelysning |
16 |
K |
- |
Bakke |
Konseptet med motstandsfargekode:
For å identifisere verdien av motstanden kan vi bruke formelen nedenfor.
R = {(AB * 10 c) Ω ± T%}
Hvor
A = Verdien av fargen i det første båndet.
B = Fargens verdi i det andre båndet.
C = Fargens verdi i det tredje båndet.
T = Fargens verdi i det fjerde båndet.
Tabellen nedenfor viser fargekoden til motstandene.
Farge |
Numerisk verdi av fargen |
Multiplikasjonsfaktor (10 c) |
Toleranseverdi (T) |
Svart |
0 |
10 0 |
- |
brun |
1 |
10 1 |
± 1% |
rød |
2 |
10 2 |
± 2% |
oransje |
3 |
10 3 |
- |
Gul |
4 |
10 4 |
- |
Grønn |
5 |
10 5 |
- |
Blå |
6 |
10 6 |
- |
Fiolett |
7 |
10 7 |
- |
Grå |
8 |
10 8 |
- |
Hvit |
9 |
10 9 |
- |
Gull |
- |
10 -1 |
± 5% |
Sølv |
- |
10 -2 |
± 10% |
Ingen band |
- |
- |
± 20% |
For eksempel, hvis fargekodene er brun - grønn - rød - sølv, beregnes motstandsverdien som, Brun = 1 Grønn = 5 Rød = 2 Sølv = ± 10%
Fra de tre første båndene er R = AB * 10 c
R = 15 * 10 +2 R = 1500 Ω
Fjerde bånd indikerer toleranse på ± 10%
10% av 1500 = 150 For + 10 prosent, er verdien 1500 + 150 = 1650Ω For - 10 prosent, er verdien 1500-150 = 1350Ω
Derfor kan den faktiske motstandsverdien være hvor som helst mellom 1350Ω og 1650Ω.
For å gjøre det mer praktisk er her Resistance Color Code Calculator, der du bare trenger å skrive inn fargen på ringer på motstanden, og du vil få motstandsverdien.
Beregning av motstand ved bruk av Arduino Ohm Meter:
Arbeidet til denne motstandsmåler er veldig enkelt og kan forklares ved hjelp av et enkelt spenningsdelernettverk vist nedenfor.
Fra spenningsdelernettverket av motstandene R1 og R2, Vout = Vin * R2 / (R1 + R2)
Fra ovenstående ligning kan vi utlede verdien av R2 som
R2 = Vout * R1 / (Vin - Vout)
Hvor R1 = kjent motstand
R2 = Ukjent motstand
Vin = spenning produsert ved 5V-pinnen til Arduino
Vout = spenning ved R2 i forhold til bakken.
Merk: verdien av kjent motstand (R1) valgt er 3.3KΩ, men brukerne bør erstatte den med motstandsverdien til motstanden de har valgt.
Så hvis vi får verdien av spenning over ukjent motstand (Vout), kan vi enkelt beregne den ukjente motstanden R2. Her har vi lest spenningsverdien Vout ved hjelp av den analoge pinnen A0 (se kretsskjemaet) og konvertert de digitale verdiene (0 -1023) til spenning som forklart i koden nedenfor.
Hvis verdien av den kjente motstanden er langt større eller mindre enn den ukjente motstanden, vil feilen være mer. Så det anbefales å holde den kjente motstandsverdien nærmere den ukjente motstanden.
Kode forklaring:
Det komplette Arduino-programmet og Demo Video for dette prosjektet er gitt på slutten av dette prosjektet. Koden er delt inn i små meningsfulle biter og forklart nedenfor.
I denne delen av koden skal vi definere pinnene som 16 * 2 LCD-skjerm er koblet til Arduino. RS- pinne på 16 * 2 lcd er koblet til digital pinne 2 på arduino. Aktiver pin på 16 * 2 lcd er koblet til digital pin 3 på Arduino. Datapinner (D4-D7) på 16 * 2 lcd er koblet til digitale pinner 4,5,6,7 av Arduino.
LiquidCrystal lcd (2,3,4,5,6,7); // rs, e, d4, d5, d6, d7
I denne delen av koden definerer vi noen variabler som brukes i programmet. Vin er spenningen som tilbys av 5V pin med arduino. Vout er spenningen ved motstand R2 i forhold til bakken.
R1 er verdien av kjent motstand. R2 er verdien av ukjent motstand.
int Vin = 5; // spenning ved 5V pin av arduino float Vout = 0; // spenning ved A0-pinne av arduino-flottør R1 = 3300; // verdien av kjent motstandsflyter R2 = 0; // verdi av ukjent motstand
I denne delen av koden skal vi initialisere 16 * 2 LCD-skjerm. Kommandoene er gitt til 16 * 2 LCD-skjerm for forskjellige innstillinger som klar skjerm, visning på blinkende markør etc.
lcd.begin (16,2);
I denne delen av koden blir den analoge spenningen ved motstanden R2 (A0-pin) konvertert til digital verdi (0 til 1023) og lagret i en variabel.
a2d_data = analogRead (A0);
I denne delen av koden blir den digitale verdien (0 til 1023) omgjort til spenning for videre beregninger.
buffer = a2d_data * Vin; Vout = (buffer) / 1024.0;
Den Arduino Uno ADC er av 10-bits oppløsning (slik de heltallige verdier fra 0 - 2 ^ 10 = 1024 verdier). Dette betyr at den vil kartlegge inngangsspenninger mellom 0 og 5 volt i heltall mellom 0 og 1023. Så hvis vi multipliserer inngang anlogValue til (5/1024), så får vi den digitale verdien av inngangsspenning. Lær her hvordan du bruker ADC-innganger i Arduino.
I denne delen av koden beregnes den faktiske verdien av ukjent motstand ved hjelp av fremgangsmåten som forklart ovenfor.
buffer = Vout / (Vin-Vout); R2 = R1 * buffer;
I denne delen av koden blir verdien av den ukjente motstanden skrevet ut på 16 * 2 LCD- skjerm.
lcd.setCursor (4,0); lcd.print ("ohm meter"); lcd.setCursor (0,1); lcd.print ("R (ohm) ="); lcd.print (R2);
Dette er at vi enkelt kan beregne motstanden til en ukjent motstand ved hjelp av Arduino. Sjekk også:
- Arduino frekvensmåler
- Arduino kapasitetsmåler