- Необходими компоненти:
- Електрическа схема:
- Arduino Uno:
- 16x2 LCD:
- Концепция на цветовия код на устойчивост:
- Изчисляване на съпротивлението с помощта на Arduino Ohm Meter:
- Обяснение на кода:
Затрудняваме се да четем цветни кодове на резистори, за да намерим неговата устойчивост. За да преодолеем трудността при намирането на стойността на съпротивлението, ще изградим прост измервател на ома, използвайки Arduino. Основният принцип зад този проект е мрежа за разделяне на напрежението. Стойността на неизвестното съпротивление се показва на 16 * 2 LCD дисплей. Този проект служи и като 16 * 2 LCD дисплей, свързващ се с Arduino.
Необходими компоненти:
- Arduino Uno
- 16 * 2 LCD дисплей
- Потенциометър (1 кило Ом)
- Резистори
- Макет
- Джъмперни проводници
Електрическа схема:
Arduino Uno:
Arduino Uno е платка за микроконтролер с отворен код, базирана на микроконтролер ATmega328p. Той има 14 цифрови пина (от които 6 пина могат да се използват като ШИМ изходи), 6 аналогови входа, бордови регулатори на напрежение и др. Arduino Uno има 32KB флаш памет, 2KB SRAM и 1KB EEPROM. Той работи с тактова честота 16MHz. Arduino Uno поддържа серийна, I2C, SPI комуникация за комуникация с други устройства. Таблицата по-долу показва техническата спецификация на Arduino Uno.
Микроконтролер | ATmega328p |
Работно напрежение | 5V |
Входен волтаж | 7-12V (препоръчително) |
Цифрови I / O щифтове | 14. |
Аналогови щифтове | 6 |
Флаш памет | 32KB |
SRAM | 2KB |
EEPROM | 1KB |
Тактова честота |
16MHz |
16x2 LCD:
16 * 2 LCD е широко използван дисплей за вградени приложения. Ето краткото обяснение за щифтовете и работата на 16 * 2 LCD дисплей. Вътре в LCD има два много важни регистъра. Те са регистър на данни и регистър на командите. Командният регистър се използва за изпращане на команди като ясен дисплей, курсор у дома и т.н., регистърът на данни се използва за изпращане на данни, които трябва да бъдат показани на 16 * 2 LCD. По-долу таблицата показва пиновото описание на 16 * 2 lcd.
ПИН |
Символ |
I / O |
Описание |
1 |
Vss |
- |
Земя |
2 |
Vdd |
- |
+ 5V захранване |
3 |
Вее |
- |
Захранване за контрол на контраста |
4 |
RS |
Аз |
RS = 0 за команден регистър, RS = 1 за регистър на данните |
5 |
RW |
Аз |
R / W = 0 за запис, R / W = 1 за четене |
6 |
Е. |
I / O |
Активиране |
7 |
D0 |
I / O |
8-битова шина за данни (LSB) |
8 |
D1 |
I / O |
8-битова шина за данни |
9 |
D2 |
I / O |
8-битова шина за данни |
10 |
D3 |
I / O |
8-битова шина за данни |
11. |
D4 |
I / O |
8-битова шина за данни |
12 |
D5 |
I / O |
8-битова шина за данни |
13 |
D6 |
I / O |
8-битова шина за данни |
14. |
D7 |
I / O |
8-битова шина за данни (MSB) |
15 |
A |
- |
+ 5V за подсветка |
16. |
К |
- |
Земя |
Концепция на цветовия код на устойчивост:
За да идентифицираме стойността на съпротивлението, можем да използваме формулата по-долу.
R = {(AB * 10 c) Ω ± T%}
Където
A = Стойност на цвета в първата лента.
B = Стойност на цвета във втората лента.
C = Стойност на цвета в третата лента.
T = Стойност на цвета в четвъртата лента.
Таблицата по-долу показва цветовия код на резисторите.
Цвят |
Числова стойност на цвета |
Коефициент на умножение (10 c) |
Стойност на толеранс (T) |
Черен |
0 |
10 0 |
- |
Кафяво |
1 |
10 1 |
± 1% |
червен |
2 |
10 2 |
± 2% |
Оранжево |
3 |
10 3 |
- |
Жълто |
4 |
10 4 |
- |
Зелено |
5 |
10 5 |
- |
Син |
6 |
10 6 |
- |
Виолетово |
7 |
10 7 |
- |
Сиво |
8 |
10 8 |
- |
Бял |
9 |
10 9 |
- |
Злато |
- |
10 -1 |
± 5% |
Сребро |
- |
10 -2 |
± 10% |
Няма група |
- |
- |
± 20% |
Например, ако цветовите кодове са Кафяв - Зелен - Червен - Сребърен, стойността на съпротивлението се изчислява като, Кафяво = 1 Зелено = 5 Червено = 2 Сребро = ± 10%
От първите три ленти R = AB * 10 c
R = 15 * 10 +2 R = 1500 Ω
Четвърта лента показва толеранс от ± 10%
10% от 1500 = 150 За + 10 процента, стойността е 1500 + 150 = 1650Ω За - 10 процента, стойността е 1500 -150 = 1350Ω
Следователно действителната стойност на съпротивлението може да бъде между 1350Ω и 1650Ω.
За да бъде по-удобно тук е калкулаторът за цветови кодове за съпротивление, където трябва само да въведете цвета на пръстените на резистора и ще получите стойността на съпротивлението.
Изчисляване на съпротивлението с помощта на Arduino Ohm Meter:
Работата на този измервател на съпротивлението е много проста и може да бъде обяснена с помощта на проста мрежа за разделяне на напрежението, показана по-долу.
От мрежата на делителя на напрежението на резистори R1 и R2, Vout = Vin * R2 / (R1 + R2)
От горното уравнение можем да изведем стойността на R2 като
R2 = Vout * R1 / (Vin - Vout)
Където R1 = известна устойчивост
R2 = Неизвестна съпротива
Vin = напрежение, произведено на 5V щифт на Arduino
Vout = напрежение при R2 по отношение на земята.
Забележка: избраната стойност на известното съпротивление (R1) е 3.3KΩ, но потребителите трябва да го заменят със стойността на съпротивлението на резистора, който са избрали.
Така че, ако получим стойността на напрежението на неизвестно съпротивление (Vout), можем лесно да изчислим неизвестното съпротивление R2. Тук прочетохме стойността на напрежението Vout, използвайки аналоговия щифт A0 (вижте електрическата схема) и преобразувахме тези цифрови стойности (0 -1023) в напрежение, както е обяснено в Код по-долу.
Ако стойността на известното съпротивление е много по-голяма или по-малка от неизвестното съпротивление, грешката ще бъде повече. Затова се препоръчва да се поддържа известната стойност на съпротивлението по-близо до неизвестната съпротива.
Обяснение на кода:
Най- пълен Arduino програмата и видео демонстрация за този проект се дава в края на този проект. Кодът е разделен на малки смислени парчета и е обяснен по-долу.
В тази част на кода ще дефинираме щифтовете, на които 16 * 2 LCD дисплей е свързан към Arduino. RS щифт от 16 * 2 lcd е свързан към цифров щифт 2 на arduino. Разрешаващият щифт от 16 * 2 lcd е свързан към цифров щифт 3 на Arduino. ПИН за данни (D4-D7) от 16 * 2 lcd е свързан към цифрови изводи 4,5,6,7 на Arduino.
LCD LiquidCrystal (2,3,4,5,6,7); // rs, e, d4, d5, d6, d7
В тази част на кода дефинираме някои променливи, които се използват в програмата. Vin е напрежението, осигурено от 5V щифт на arduino. Vout е напрежението на резистора R2 по отношение на земята.
R1 е стойността на известното съпротивление. R2 е стойността на неизвестното съпротивление.
int Vin = 5; // напрежение при 5V щифт на arduino float Vout = 0; // напрежение на щифт A0 на поплавък arduino R1 = 3300; // стойност на известното съпротивление поплавък R2 = 0; // стойност на неизвестна съпротива
В тази част на кода ще инициализираме 16 * 2 lcd дисплей. Командите се дават на 16 * 2 lcd дисплей за различни настройки като изчистен екран, дисплей при мигане на курсора и т.н.
lcd.begin (16,2);
В тази част на кода аналоговото напрежение на резистора R2 (щифт A0) се преобразува в цифрова стойност (0 до 1023) и се съхранява в променлива.
a2d_data = analogRead (A0);
В тази част на кода цифровата стойност (0 до 1023) се преобразува в напрежение за по-нататъшни изчисления.
буфер = a2d_data * Vin; Vout = (буфер) / 1024.0;
В Arduino Uno ADC е 10-битова резолюция (така стойности на цяло число от 0 - 2 ^ 10 = 1024 стойности). Това означава, че ще преобразува входните напрежения между 0 и 5 волта в целочислени стойности между 0 и 1023. Така че, ако умножим входното anlogValue на (5/1024), тогава получаваме цифровата стойност на входното напрежение. Научете тук как да използвате ADC въвеждане в Arduino.
В тази част на кода действителната стойност на неизвестното съпротивление се изчислява, като се използва процедурата, както е обяснено по-горе.
буфер = Vout / (Vin-Vout); R2 = R1 * буфер;
В тази част на кода стойността на неизвестното съпротивление се отпечатва на 16 * 2 lcd дисплей.
lcd.setCursor (4,0); lcd.print ("ом метър"); lcd.setCursor (0,1); lcd.print ("R (ом) ="); lcd.print (R2);
Това е, че можем лесно да изчислим съпротивлението на неизвестен резистор, използвайки Arduino. Също така проверете:
- Измервател на честота Arduino
- Измервател на капацитет на Arduino