- Komponenter som krävs:
- Kretsschema:
- Arduino Uno:
- 16x2 LCD:
- Begreppet motståndsfärgkod:
- Beräkning av motstånd med Arduino Ohm Meter:
- Kodförklaring:
Vi har svårt att läsa färgkoder på motstånd för att hitta dess motstånd. För att övervinna svårigheten att hitta motståndsvärdet ska vi bygga en enkel Ohm-mätare med Arduino. Grundprincipen bakom detta projekt är ett Voltage Divider Network. Värdet på det okända motståndet visas på 16 * 2 LCD-display. Detta projekt fungerar också som 16 * 2 LCD-skärmgränssnitt med Arduino.
Komponenter som krävs:
- Arduino Uno
- 16 * 2 LCD-skärm
- Potentiometer (1 kilo Ohm)
- Motstånd
- Bakbord
- Bygeltrådar
Kretsschema:
Arduino Uno:
Arduino Uno är ett mikrokontrollerkort med öppen källkod baserat på ATmega328p mikrokontroller. Den har 14 digitala stift (varav 6 stift kan användas som PWM-utgångar), 6 analoga ingångar, spänningsregulatorer ombord etc. Arduino Uno har 32 kB flashminne, 2 kB SRAM och 1 kB EEPROM. Den fungerar vid klockfrekvensen 16MHz. Arduino Uno stöder seriell, I2C, SPI-kommunikation för kommunikation med andra enheter. Tabellen nedan visar den tekniska specifikationen för Arduino Uno.
Microcontroller | ATmega328p |
Driftspänning | 5V |
Inspänning | 7-12V (rekommenderas) |
Digitala I / O-stift | 14 |
Analoga stift | 6 |
Flashminne | 32KB |
SRAM | 2KB |
EEPROM | 1KB |
Klockfrekvens |
16 MHz |
16x2 LCD:
16 * 2 LCD är en mycket använd skärm för inbäddade applikationer. Här är den korta förklaringen om stift och bearbetning av 16 * 2 LCD-display. Det finns två mycket viktiga register inuti LCD-skärmen. De är dataregister och kommandoregister. Kommandoregister används för att skicka kommandon som tydlig visning, markör hemma etc., dataregister används för att skicka data som ska visas på 16 * 2 LCD. Nedanstående tabell visar stiftbeskrivningen på 16 * 2 lcd.
Stift |
Symbol |
I / O |
Beskrivning |
1 |
Vss |
- |
Jord |
2 |
Vdd |
- |
+ 5V strömförsörjning |
3 |
Vee |
- |
Strömförsörjning för att kontrollera kontrasten |
4 |
RS |
Jag |
RS = 0 för kommandoregister, RS = 1 för dataregister |
5 |
RW |
Jag |
R / W = 0 för skriv, R / W = 1 för läsning |
6 |
E |
I / O |
Gör det möjligt |
7 |
D0 |
I / O |
8-bitars databuss (LSB) |
8 |
D1 |
I / O |
8-bitars databuss |
9 |
D2 |
I / O |
8-bitars databuss |
10 |
D3 |
I / O |
8-bitars databuss |
11 |
D4 |
I / O |
8-bitars databuss |
12 |
D5 |
I / O |
8-bitars databuss |
13 |
D6 |
I / O |
8-bitars databuss |
14 |
D7 |
I / O |
8-bitars databuss (MSB) |
15 |
A |
- |
+ 5V för bakgrundsbelysning |
16 |
K |
- |
Jord |
Begreppet motståndsfärgkod:
För att identifiera värdet på motståndet kan vi använda formeln nedan.
R = {(AB * 10 c) Ω ± T%}
Var
A = Färgens värde i det första bandet.
B = Färgens värde i det andra bandet.
C = Färgens värde i det tredje bandet.
T = Färgens värde i det fjärde bandet.
Tabellen nedan visar motståndens färgkod.
Färg |
Färgens numeriska värde |
Multiplikationsfaktor (10 c) |
Toleransvärde (T) |
Svart |
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 |
- |
Violett |
7 |
10 7 |
- |
grå |
8 |
10 8 |
- |
Vit |
9 |
10 9 |
- |
Guld |
- |
10 -1 |
± 5% |
Silver |
- |
10 -2 |
± 10% |
Inget band |
- |
- |
± 20% |
Till exempel, om färgkoderna är Brun - Grön - Röd - Silver beräknas motståndets värde som, Brun = 1 Grön = 5 Röd = 2 Silver = ± 10%
Från de tre första banden, R = AB * 10 c
R = 15 * 10 +2 R = 1500 Ω
Fjärde bandet anger tolerans på ± 10%
10% av 1500 = 150 För + 10 procent är värdet 1500 + 150 = 1650Ω För - 10 procent är värdet 1500-150 = 1350Ω
Därför kan det faktiska motståndsvärdet ligga var som helst mellan 1350Ω och 1650Ω.
För att göra det bekvämare här är Resistance Color Code Calculator där du bara behöver ange färgen på ringarna på motståndet och du får motståndsvärdet.
Beräkning av motstånd med Arduino Ohm Meter:
Funktionen för denna motståndsmätare är mycket enkel och kan förklaras med ett enkelt spänningsdelningsnätverk som visas nedan.
Från spänningsdelarens nätverk av motstånd R1 och R2, Vout = Vin * R2 / (R1 + R2)
Från ovanstående ekvation kan vi härleda värdet av R2 som
R2 = Vout * R1 / (Vin - Vout)
Där R1 = känt motstånd
R2 = Okänt motstånd
Vin = spänning producerad vid 5V-stiftet i Arduino
Vout = spänning vid R2 i förhållande till jord.
Obs! Värdet på det kända motståndet (R1) som valts är 3,3 KΩ, men användarna bör ersätta det med motståndsvärdet på det motstånd de valt.
Så om vi får värdet av spänning över okänt motstånd (Vout) kan vi enkelt beräkna det okända motståndet R2. Här har vi läst spänningsvärdet Vout med hjälp av det analoga stiftet A0 (se kretsschemat) och omvandlat dessa digitala värden (0 -1023) till spänning enligt förklaringen i koden nedan.
Om värdet på den kända motståndet är mycket större eller mindre än det okända motståndet blir felet mer. Så det rekommenderas att hålla det kända motståndsvärdet närmare det okända motståndet.
Kodförklaring:
Det kompletta Arduino-programmet och demovideo för detta projekt ges i slutet av detta projekt. Koden är uppdelad i små meningsfulla bitar och förklaras nedan.
I denna del av koden ska vi definiera stiften på vilka 16 * 2 LCD-skärm är ansluten till Arduino. RS- stift på 16 * 2 lcd är ansluten till digital stift 2 på arduino. Aktivera stift på 16 * 2 lcd är ansluten till digital stift 3 i Arduino. Datapinnar (D4-D7) på 16 * 2 lcd är anslutna till digitala stift 4,5,6,7 av Arduino.
LiquidCrystal lcd (2,3,4,5,6,7); // rs, e, d4, d5, d6, d7
I denna del av koden definierar vi några variabler som används i programmet. Vin är spänningen som tillhandahålls av 5V-stift av arduino. Vout är spänningen vid motstånd R2 med avseende på jord.
R1 är värdet på känt motstånd. R2 är värdet av okänt motstånd.
int Vin = 5; // spänning vid 5V-stift av arduino-flottör Vout = 0; // spänning vid A0-stift av arduino-flottör R1 = 3300; // värde på känt motståndsflöde R2 = 0; // värde av okänt motstånd
I den här delen av koden kommer vi att initiera 16 * 2 LCD-skärm. Kommandona ges till 16 * 2 LCD-skärm för olika inställningar som tömd skärm, visning på markör blinkar etc.
lcd.begin (16,2);
I denna del av koden omvandlas den analoga spänningen vid motståndet R2 (A0-stift) till digitalt värde (0 till 1023) och lagras i en variabel.
a2d_data = analogRead (A0);
I denna del av koden omvandlas det digitala värdet (0 till 1023) till spänning för ytterligare beräkningar.
buffert = a2d_data * Vin; Vout = (buffert) / 1024,0;
Den Arduino Uno ADC är av 10-bitars upplösning (så heltalsvärdena från 0 - 2 ^ 10 = 1024 värden). Detta innebär att det kommer att mappa inspänningar mellan 0 och 5 volt i heltalsvärden mellan 0 och 1023. Så om vi multiplicera ingångs anlogValue till (5/1024), då får vi det digitala värdet för ingångsspänningen. Lär dig här hur du använder ADC-ingång i Arduino.
I denna del av koden beräknas det verkliga värdet av okänt motstånd med hjälp av proceduren enligt ovan.
buffert = Vout / (Vin-Vout); R2 = R1 * buffert;
I denna del av koden skrivs värdet av det okända motståndet ut på 16 * 2 LCD- skärm.
lcd.setCursor (4,0); lcd.print ("ohm meter"); lcd.setCursor (0,1); lcd.print ("R (ohm) ="); lcd.print (R2);
Detta är att vi enkelt kan beräkna motståndet hos ett okänt motstånd med hjälp av Arduino. Kontrollera även:
- Arduino frekvensmätare
- Arduino kapacitansmätare