Moduł Arduino posiada kilka portów analogowych, poprzez które możemy mierzyć napięcie. Napięcie jest taką wielkością, że przy odrobinie wyobraźni i znajomości elektrotechniki w zasadzie każdą inną możemy sprowadzić właśnie do napięcia. Dzisiejszy projekt dotyczy trójkanałowego pomiaru rezystancji z wykorzystaniem Arduino. Oprócz modułu procesora wykorzystany będzie moduł wyświetlacza LCD. Dlaczego trójkanałowego? Ano dlatego, że taki układ można wykorzystać np. do pomiaru przenośnych uziemiaczy trójfazowych.
Przykładowy uziemiacz 3-fazowy |
Badanie takiego uziemiacza polega na pomiarze rezystancji każdej końcówki fazowej względem końcówki uziemiającej. Pomysł z Arduino polega na wykorzystaniu trzech analogowych portów wejściowych i pomiarze napięcia. Jak zatem zamienić wartość rezystancję na proporcjonalną wartość napięcia? Sposób jest bardzo prosty i oparty jest na zasadzie działania rezystancyjnego dzielnika napięcia.
Dzielnik rezystancyjny |
Zasada działania takiego dzielnika opisana jest następującym wzorem:
Czyli znając wartość napięcia U1, napięcia U2 oraz rezystancji R1 jesteśmy w stanie przekształcić wzór i policzyć mierzoną rezystancję R2:
Jako napięcie U1 wykorzystany zostanie port zasilający Arduino o wartości 5 V. Wartość napięcia U2 zmierzymy, zaś wartość rezystancji R1 zostanie określona.
Aby można było zobaczyć wyniki do Arduino dołączony zostanie wyświetlacz LCD. Cały schemat wygląda następująco:
Schemat układu |
Centralnym punktem jest płytka Arduino. Na lewo część rezystancyjna, czyli rezystory wzorcowe o znanej wartości rezystancji, oraz pontencjometry symulujące mierzoną rezystancję. Z prawej strony zaś płytka stykowa oraz wyświetlacz LCD. Informację o tym jak go podłączyć można łatwo znaleźć w sieci, stąd nie będę tutaj tego powielać. Pomiar napięcia na mierzonych rezystancjach odbywa się przy użyciu trzech portów A0 - A2. Program realizujący funkcjonalność wygląda następująco:
#include <LiquidCrystal.h>
int pinR1 = 0;
int pinR2 = 1;
int pinR3 = 2;
int Rd = 1;
int Uwe = 5;
int a = 0;
float Uwy = 0;
float R1 = 0;
float R2 = 0;
float R3 = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
//inicjalizacja i ustawienie rozmiaru wyświetlacza
lcd.begin(16, 2);
}
void loop()
{
//wyswietlenie kursora na danej pozycji
lcd.setCursor(0,0);
//pomiary dla L1
a = analogRead(pinR1);
if(a)
{
Uwy=a*(Uwe/1024.0);
R1=(Uwy*Rd)/(Uwe-Uwy);
}
//pomiary dla L2
a = analogRead(pinR2);
if(a)
{
Uwy=a*(Uwe/1024.0);
R2=(Uwy*Rd)/(Uwe-Uwy);
}
//pomiary dla L3
a = analogRead(pinR3);
if(a)
{
Uwy=a*(Uwe/1024.0);
R3=(Uwy*Rd)/(Uwe-Uwy);
}
//wyswietlenie wynikow
lcd.print("R1="); lcd.print(R1,1); lcd.print(" ");
lcd.print("R2="); lcd.print(R2,1);
lcd.setCursor(0,1);
lcd.print("R3="); lcd.print(R3,1);
delay(500);
}
Pierwsza część programu są to deklaracje zmiennych i stałych oraz definicje.Główna część programu polega na odczycie napięcia z danego portu i przeliczeniu go na odpowiadającą wartość rezystancji. Przeliczenie czyli uwzględnienie 10-bitowej charakterystyki przetwornika AC/DC oraz podstawienie do wzoru na wartość rezystancji R2. Ostatnia część to wyświetlenie zaokrąglonych do dziesiątych części oma wyników na LCD.
Projekt został wykonany na platformie TinkerCAD i tam też można go na żywo obejrzeć.
Bibliografia
[1] Strona internetowa sklepu uziemiacze.pl[2] Projekt na stronie TinkerCAD - tutaj
Komentarze
Prześlij komentarz