- Vereiste componenten:
- Schakelschema:
- Arduino Uno:
- 16x2 LCD:
- Concept van weerstandskleurcode:
- Weerstand berekenen met de Arduino Ohm-meter:
- Code uitleg:
We vinden het moeilijk om kleurcodes op weerstanden te lezen om de weerstand te vinden. Om de moeilijkheid van het vinden van de weerstandswaarde te overwinnen, gaan we een eenvoudige Ohm-meter bouwen met Arduino. Het basisprincipe achter dit project is een Voltage Divider Network. De waarde van de onbekende weerstand wordt weergegeven op een 16 * 2 LCD-scherm. Dit project doet ook dienst als 16 * 2 LCD-scherm dat in verbinding staat met Arduino.
Vereiste componenten:
- Arduino Uno
- 16 * 2 LCD-scherm
- Potentiometer (1 kilo Ohm)
- Weerstanden
- Breadboard
- Doorverbindingsdraden
Schakelschema:
Arduino Uno:
Arduino Uno is een open source microcontroller-board gebaseerd op ATmega328p-microcontroller. Het heeft 14 digitale pinnen (waarvan 6 pinnen kunnen worden gebruikt als PWM-uitgangen), 6 analoge ingangen, ingebouwde spanningsregelaars etc. Arduino Uno heeft 32 KB flash-geheugen, 2 KB SRAM en 1 KB EEPROM. Het werkt op de klokfrequentie van 16 MHz. Arduino Uno ondersteunt seriële, I2C-, SPI-communicatie voor communicatie met andere apparaten. De onderstaande tabel toont de technische specificaties van Arduino Uno.
Microcontroller | ATmega328p |
Werkspanning | 5V |
Ingangsspanning | 7-12V (aanbevolen) |
Digitale I / O-pinnen | 14 |
Analoge pinnen | 6 |
Flash-geheugen | 32 KB |
SRAM | 2 KB |
EEPROM | 1 KB |
Kloksnelheid |
16 MHz |
16x2 LCD:
16 * 2 LCD is een veelgebruikt beeldscherm voor embedded toepassingen. Hier is de korte uitleg over pinnen en werking van 16 * 2 LCD-scherm. Er zijn twee zeer belangrijke registers in het LCD-scherm. Ze zijn dataregister en commandoregister. Commandoregister wordt gebruikt om commando's te verzenden zoals duidelijke weergave, cursor thuis enz., Dataregister wordt gebruikt om gegevens te verzenden die op 16 * 2 LCD-schermen moeten worden weergegeven. Onderstaande tabel toont de pin beschrijving van 16 * 2 lcd.
Pin |
Symbool |
IO |
Omschrijving |
1 |
VSS |
- |
Grond |
2 |
Vdd |
- |
+ 5V voeding |
3 |
Vee |
- |
Voeding om het contrast te regelen |
4 |
RS |
ik |
RS = 0 voor commandoregister, RS = 1 voor gegevensregister |
5 |
RW |
ik |
R / W = 0 voor schrijven, R / W = 1 voor lezen |
6 |
E. |
IO |
Inschakelen |
7 |
D0 |
IO |
8-bits databus (LSB) |
8 |
D1 |
IO |
8-bits databus |
9 |
D2 |
IO |
8-bits databus |
10 |
D3 |
IO |
8-bits databus |
11 |
D4 |
IO |
8-bits databus |
12 |
D5 |
IO |
8-bits databus |
13 |
D6 |
IO |
8-bits databus |
14 |
D7 |
IO |
8-bits databus (MSB) |
15 |
EEN |
- |
+ 5V voor achtergrondverlichting |
16 |
K |
- |
Grond |
Concept van weerstandskleurcode:
Om de waarde van de weerstand te identificeren, kunnen we de onderstaande formule gebruiken.
R = {(AB * 10 c) Ω ± T%}
Waar
A = waarde van de kleur in de eerste band.
B = Waarde van de kleur in de tweede band.
C = Waarde van de kleur in de derde band.
T = waarde van de kleur in de vierde band.
De onderstaande tabel toont de kleurcode van weerstanden.
Kleur |
Numerieke waarde van de kleur |
Vermenigvuldigingsfactor (10 c) |
Tolerantiewaarde (T) |
Zwart |
0 |
10 0 |
- |
Bruin |
1 |
10 1 |
± 1% |
Rood |
2 |
10 2 |
± 2% |
Oranje |
3 |
10 3 |
- |
Geel |
4 |
10 4 |
- |
Groen |
5 |
10 5 |
- |
Blauw |
6 |
10 6 |
- |
paars |
7 |
10 7 |
- |
Grijs |
8 |
10 8 |
- |
Wit |
9 |
10 9 |
- |
Goud |
- |
10 -1 |
± 5% |
Zilver |
- |
10 -2 |
± 10% |
Geen band |
- |
- |
± 20% |
Als de kleurcodes bijvoorbeeld Bruin - Groen - Rood - Zilver zijn, wordt de weerstandswaarde berekend als, Bruin = 1 Groen = 5 Rood = 2 Zilver = ± 10%
Van de eerste drie banden, R = AB * 10 c
R = 15 * 10 + 2 R = 1500 Ω
Vierde band geeft tolerantie van ± 10% aan
10% van 1500 = 150 Voor + 10 procent is de waarde 1500 + 150 = 1650Ω Voor - 10 procent is de waarde 1500-150 = 1350Ω
Daarom kan de werkelijke weerstandswaarde ergens tussen 1350 Ω en 1650 Ω liggen.
Om het hier handiger te maken, is er de Resistance Color Code Calculator, waar u alleen de kleur van de ringen op de weerstand hoeft in te voeren en u de weerstandswaarde krijgt.
Weerstand berekenen met de Arduino Ohm-meter:
De werking van deze weerstandsmeter is heel eenvoudig en kan worden uitgelegd met behulp van een eenvoudig spanningsdelernetwerk dat hieronder wordt weergegeven.
Van het spanningsdelernetwerk van weerstanden R1 en R2, Vout = Vin * R2 / (R1 + R2)
Uit de bovenstaande vergelijking kunnen we de waarde van R2 afleiden als
R2 = Vout * R1 / (Vin - Vout)
Waar R1 = bekende weerstand
R2 = onbekende weerstand
Vin = spanning geproduceerd op de 5V-pin van Arduino
Vout = spanning op R2 ten opzichte van aarde.
Opmerking: de gekozen waarde van de bekende weerstand (R1) is 3,3KΩ, maar de gebruikers moeten deze vervangen door de weerstandswaarde van de gekozen weerstand.
Dus als we de waarde van de spanning over onbekende weerstand (Vout) krijgen, kunnen we gemakkelijk de onbekende weerstand R2 berekenen. Hier hebben we de spanningswaarde Vout afgelezen met behulp van de analoge pin A0 (zie het schakelschema) en die digitale waarden (0-1023) omgezet in spanning zoals uitgelegd in Code hieronder.
Als de waarde van de bekende weerstand veel groter of kleiner is dan de onbekende weerstand, zal de fout groter zijn. Het is dus aan te raden om de bekende weerstandswaarde dichter bij de onbekende weerstand te houden.
Code uitleg:
Het volledige Arduino-programma en de demovideo voor dit project wordt aan het einde van dit project gegeven. De code is opgesplitst in kleine, betekenisvolle brokken en wordt hieronder uitgelegd.
In dit deel van de code gaan we de pinnen definiëren waarop het 16 * 2 LCD-scherm is aangesloten op Arduino. RS- pin van 16 * 2 lcd is verbonden met digitale pin 2 van Arduino. Enable pin van 16 * 2 lcd is verbonden met digitale pin 3 van Arduino. Datapinnen (D4-D7) van 16 * 2 lcd zijn verbonden met digitale pinnen 4,5,6,7 van Arduino.
LiquidCrystal lcd (2,3,4,5,6,7); // rs, e, d4, d5, d6, d7
In dit deel van de code definiëren we enkele variabelen die in het programma worden gebruikt. Vin is de spanning die wordt geleverd door de 5V-pin van Arduino. Vout is de spanning op weerstand R2 ten opzichte van aarde.
R1 is de waarde van bekende weerstand. R2 is de waarde van onbekende weerstand.
int Vin = 5; // spanning op 5V pin van arduino float Vout = 0; // spanning op A0 pin van arduino float R1 = 3300; // waarde van bekende weerstand float R2 = 0; // waarde van onbekende weerstand
In dit deel van de code gaan we een 16 * 2 lcd-scherm initialiseren. De commando's worden gegeven aan een 16 * 2 lcd-scherm voor verschillende instellingen, zoals helder scherm, knipperende cursor enz.
lcd.begin (16,2);
In dit deel van de code wordt de analoge spanning op de weerstand R2 (A0-pin) omgezet in digitale waarde (0 tot 1023) en opgeslagen in een variabele.
a2d_data = analogRead (A0);
In dit deel van de code wordt de digitale waarde (0 tot 1023) omgezet in spanning voor verdere berekeningen.
buffer = a2d_data * Vin; Vout = (buffer) /1024.0;
De Arduino Uno ADC heeft een 10-bit resolutie (dus de gehele getallen van 0 - 2 ^ 10 = 1024 waarden). Dit betekent dat het ingangsspanningen tussen 0 en 5 volt zal omzetten in gehele waarden tussen 0 en 1023. Dus als we de input anlogValue vermenigvuldigen met (5/1024), dan krijgen we de digitale waarde van de ingangsspanning. Leer hier hoe u ADC-invoer in Arduino gebruikt.
In dit deel van de code wordt de werkelijke waarde van onbekende weerstand berekend met behulp van de procedure zoals hierboven uitgelegd.
buffer = Vout / (Vin-Vout); R2 = R1 * buffer;
In dit deel van de code wordt de waarde van de onbekende weerstand afgedrukt op een 16 * 2 lcd- scherm.
lcd.setCursor (4,0); lcd.print ("ohm-meter"); lcd.setCursor (0,1); lcd.print ("R (ohm) ="); lcd.print (R2);
Dit is dat we gemakkelijk de weerstand van een onbekende weerstand kunnen berekenen met Arduino. Controleer ook:
- Arduino-frequentiemeter
- Arduino capaciteitsmeter