Przejdź do głównej zawartości

[Arduino] Trójkanałowy pomiar rezystancji

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

Popularne posty z tego bloga

Bolimowski Park Krajobrazowy

Dzisiejszy wpis ma charakter praktycznych rozważań życiowych - co zrobić z psem, kiedy rodzina chce jechać na większą część dnia w miejsce, gdzie nie obsługują psów? To zależy. W tym przypadku docelowym miejscem wyjazdu było Suntago - znany myślę każdemu, choćby z mediów, park wodny w centralnej części Polski. Ponieważ nie stanowię targetu dla projektantów zjeżdżalni stąd odpowiedź na wyżej postawione pytanie była jasna - pies zostaje ze mną. Ale trzeba go czymś zająć. I gdyby ktoś stał przed podobnym pytaniem dotyczącym właśnie Suntago, albo basenów termalnych w Mszczonowie (rzut beretem obok Suntago) to mogę polecić rozwiązanie. Spacer po lesie w Bolimowskim Parku Krajobrazowym. Jak już odstawimy rodzinę do parku wodnego należy udać się około 22 km na zachód w kierunku miejscowości Bartniki, gdzie znajduje się parking leśny o całkiem niezłych możliwościach. Mapa dojazdu z Suntago Miejsce na ognisko, wiata, ławki, stoły, kosze - cud miód. Parking leśny Mnie jednak interesowała okolica...

Zapora i elektrownia wodna w Dębe

Na północ od Warszawy, za Legionowem zjeżdżając na drogę numer 632 w kierunku trasie numer 62 relacji Nowy Dwór Mazowiecki - Serock, możemy przyjrzeć się zaporze oraz elektrowni wodnej w miejscowości Dębe. 

Wydma Łącka - największa ruchoma wydma w Polsce

Sezon wakacyjny w pełni, więc nawet mi udało się wyskoczyć na kilka dni urlopu. Mimo serii zdjęć paragonów grozy znad polskiego morza właśnie ten kierunek obrałem jako cel wyjazdu. A że nieszczególnie lubię tłumy ludzi i nie było mnie jeszcze w tym miejscu to konkretnie wylądowałem w okolicach Łeby. Szerzej o lokalizacji postaram się wspomnieć w innym wpisie, a w tym chciałbym skupić się na największej polskiej wydmie ruchomej czyli Wydmie Łąckiej.  Znajduje się ona około 9 kilometrów na zachód od Łeby, na mierzei oddzielającej Morze Bałtyckie od jeziora Łebsko. Teren ten jest częścią Słowińskiego Parku Narodowego. Wydma jest największa zarówno w kwestii powierzchni, można poczuć się jak na pustyni, ale też swojej wysokości osiągającej 30-40 metrów nad poziom morza. Ciekawostką jest pochodzenie nazwy wydmy, gdyż pierwotnie znajdowała się w tym miejscu wieś Łączka, ale została ona zasypana przez przemieszczająca się wydmę. Ruch ten szacuje się na kilka metrów rocznie w kierunku wsch...