- Nødvendige komponenter:
- Kredsløbsdiagram:
- Arduino Uno:
- 16x2 LCD:
- Begrebet modstandsfarvekode:
- Beregning af modstand ved hjælp af Arduino Ohm Meter:
- Kode forklaring:
Vi har svært ved at læse farvekoder på modstande for at finde dens modstand. For at overvinde vanskelighederne med at finde modstandsværdien skal vi bygge en simpel Ohm Meter ved hjælp af Arduino. Det grundlæggende princip bag dette projekt er et Voltage Divider Network. Værdien af den ukendte modstand vises på 16 * 2 LCD-display. Dette projekt fungerer også som 16 * 2 LCD-skærmgrænseflade med Arduino.
Nødvendige komponenter:
- Arduino Uno
- 16 * 2 LCD-skærm
- Potentiometer (1 kilo Ohm)
- Modstande
- Brødbræt
- Jumper ledninger
Kredsløbsdiagram:
Arduino Uno:
Arduino Uno er et open source-microcontroller-kort baseret på ATmega328p microcontroller. Den har 14 digitale stifter (hvoraf 6 stifter kan bruges som PWM-udgange), 6 analoge indgange, indbyggede spændingsregulatorer osv. Arduino Uno har 32 KB flashhukommelse, 2 KB SRAM og 1 KB EEPROM. Det fungerer ved urfrekvensen på 16MHz. Arduino Uno understøtter seriel, I2C, SPI-kommunikation til kommunikation med andre enheder. Tabellen nedenfor viser den tekniske specifikation for Arduino Uno.
Mikrocontroller | ATmega328p |
Driftsspænding | 5V |
Indgangsspænding | 7-12V (anbefales) |
Digitale I / O-ben | 14 |
Analoge ben | 6 |
Glimtvis erindring | 32KB |
SRAM | 2KB |
EEPROM | 1KB |
Urets hastighed |
16 MHz |
16x2 LCD:
16 * 2 LCD er et meget brugt display til indlejrede applikationer. Her er den korte forklaring om stifter og brug af 16 * 2 LCD-display. Der er to meget vigtige registre inde i LCD'et. De er dataregister og kommandoregister. Kommandoregister bruges til at sende kommandoer såsom klar visning, markør derhjemme osv., Dataregister bruges til at sende data, der skal vises på 16 * 2 LCD. Nedenstående tabel viser pinbeskrivelsen på 16 * 2 lcd.
Pin |
Symbol |
I / O |
Beskrivelse |
1 |
Vss |
- |
Jord |
2 |
Vdd |
- |
+ 5V strømforsyning |
3 |
Vee |
- |
Strømforsyning til kontrol af kontrast |
4 |
RS |
jeg |
RS = 0 for kommandoregister, RS = 1 for dataregister |
5 |
RW |
jeg |
R / W = 0 for skrivning, R / W = 1 for læsning |
6 |
E |
I / O |
Aktiver |
7 |
D0 |
I / O |
8-bit databus (LSB) |
8 |
D1 |
I / O |
8-bit databus |
9 |
D2 |
I / O |
8-bit databus |
10 |
D3 |
I / O |
8-bit databus |
11 |
D4 |
I / O |
8-bit databus |
12 |
D5 |
I / O |
8-bit databus |
13 |
D6 |
I / O |
8-bit databus |
14 |
D7 |
I / O |
8-bit databus (MSB) |
15 |
EN |
- |
+ 5V til baggrundsbelysning |
16 |
K |
- |
Jord |
Begrebet modstandsfarvekode:
For at identificere værdien af modstanden kan vi bruge nedenstående formel.
R = {(AB * 10 c) Ω ± T%}
Hvor
A = Farvens værdi i det første bånd.
B = Farvens værdi i det andet bånd.
C = Farvens værdi i det tredje bånd.
T = Farvens værdi i det fjerde bånd.
Tabellen nedenfor viser modstandernes farvekode.
Farve |
Den numeriske værdi af farven |
Multiplikationsfaktor (10 c) |
Toleranceværdi (T) |
Sort |
0 |
10 0 |
- |
Brun |
1 |
10 1 |
± 1% |
Rød |
2 |
10 2 |
± 2% |
orange |
3 |
10 3 |
- |
Gul |
4 |
10 4 |
- |
Grøn |
5 |
10 5 |
- |
Blå |
6 |
10 6 |
- |
Violet |
7 |
10 7 |
- |
Grå |
8 |
10 8 |
- |
hvid |
9 |
10 9 |
- |
Guld |
- |
10 -1 |
± 5% |
Sølv |
- |
10 -2 |
± 10% |
Intet band |
- |
- |
± 20% |
For eksempel, hvis farvekoderne er Brun - Grøn - Rød - Sølv, beregnes modstandsværdien som, Brun = 1 Grøn = 5 Rød = 2 Sølv = ± 10%
Fra de første tre bånd er R = AB * 10 c
R = 15 * 10 +2 R = 1500 Ω
Fjerde bånd angiver tolerance på ± 10%
10% af 1500 = 150 For + 10 procent er værdien 1500 + 150 = 1650Ω For - 10 procent er værdien 1500-150 = 1350Ω
Derfor kan den aktuelle modstandsværdi være hvor som helst mellem 1350Ω og 1650Ω.
For at gøre det mere praktisk er her Resistance Color Code Calculator, hvor du kun behøver at indtaste farven på ringene på modstanden, og du får modstandsværdien.
Beregning af modstand ved hjælp af Arduino Ohm Meter:
Funktionen af denne modstandsmåler er meget enkel og kan forklares ved hjælp af et simpelt spændingsdelernetværk vist nedenfor.
Fra spændingsdelernettet af modstande R1 og R2, Vout = Vin * R2 / (R1 + R2)
Fra ovenstående ligning kan vi udlede værdien af R2 som
R2 = Vout * R1 / (Vin - Vout)
Hvor R1 = kendt modstand
R2 = Ukendt modstand
Vin = spænding produceret ved 5V-stiften på Arduino
Vout = spænding ved R2 i forhold til jord.
Bemærk: værdien af den kendte modstand (R1), der er valgt, er 3,3 KΩ, men brugerne skal erstatte den med modstandsværdien af den modstand, de har valgt.
Så hvis vi får værdien af spænding over ukendt modstand (Vout), kan vi nemt beregne den ukendte modstand R2. Her har vi læst spændingsværdien Vout ved hjælp af den analoge pin A0 (se kredsløbsdiagrammet) og konverteret de digitale værdier (0 -1023) til spænding som forklaret i koden nedenfor.
Hvis værdien af den kendte modstand er langt større eller mindre end den ukendte modstand, vil fejlen være mere. Så det tilrådes at holde den kendte modstandsværdi tættere på den ukendte modstand.
Kode forklaring:
Det komplette Arduino-program og demo-video til dette projekt gives i slutningen af dette projekt. Koden er opdelt i små meningsfulde bidder og forklaret nedenfor.
I denne del af koden skal vi definere de ben, som 16 * 2 LCD-skærm er forbundet til Arduino. RS- pin på 16 * 2 lcd er forbundet til digital pin 2 i arduino. Aktiver pin på 16 * 2 lcd er forbundet til digital pin 3 i Arduino. Datastifter (D4-D7) på 16 * 2 lcd er forbundet til digitale stifter 4,5,6,7 af Arduino.
LiquidCrystal lcd (2,3,4,5,6,7); // rs, e, d4, d5, d6, d7
I denne del af koden definerer vi nogle variabler, der bruges i programmet. Vin er spændingen leveret af 5V pin af arduino. Vout er spændingen ved modstand R2 i forhold til jord.
R1 er værdien af kendt modstand. R2 er værdien af ukendt modstand.
int Vin = 5; // spænding ved 5V pin af arduino float Vout = 0; // spænding ved A0-pin af arduino-float R1 = 3300; // værdi af kendt modstandsflåd R2 = 0; // værdi af ukendt modstand
I denne del af koden skal vi initialisere 16 * 2 LCD-skærm. Kommandoerne gives til 16 * 2 lcd-skærm til forskellige indstillinger såsom klar skærm, visning på markørblink osv.
lcd.begin (16,2);
I denne del af koden konverteres den analoge spænding ved modstanden R2 (A0-pin) til digital værdi (0 til 1023) og lagres i en variabel.
a2d_data = analogRead (A0);
I denne del af koden konverteres den digitale værdi (0 til 1023) til spænding til yderligere beregninger.
buffer = a2d_data * Vin; Vout = (buffer) / 1024,0;
Den Arduino Uno ADC er af 10-bit opløsning (så de heltalsværdier fra 0 - 2 ^ 10 = 1024 værdier). Det betyder, at det vil kortlægge indgangsspændinger mellem 0 og 5 volt i heltalsværdier mellem 0 og 1023. Så hvis vi multiplicerer input anlogValue til (5/1024), så får vi den digitale værdi af indgangsspænding. Lær her, hvordan du bruger ADC-input i Arduino.
I denne del af koden beregnes den faktiske værdi af ukendt modstand ved hjælp af proceduren som forklaret ovenfor.
buffer = Vout / (Vin-Vout); R2 = R1 * buffer;
I denne del af koden udskrives værdien af den ukendte modstand på 16 * 2 LCD- display.
lcd.setCursor (4,0); lcd.print ("ohm meter"); lcd.setCursor (0,1); lcd.print ("R (ohm) ="); lcd.print (R2);
Dette er, at vi let kan beregne modstanden fra en ukendt modstand ved hjælp af Arduino. Kontroller også:
- Arduino frekvensmåler
- Arduino kapacitansmåler