Skocz do zawartości

Pomiar napięcia przez Arduino - szum na wejściu


Pomocna odpowiedź

Napisano

Witam, Mam problem z pomiarem napięcia a mianowicie zanim podłączę baterię - tak jak jest opisane w poradniku to już w terminalu pojawiają się napięcia z zakresu od 0,20V do nawet 2V. Przy podłączonej baterii napięcie się stabilizuje jednak chciałbym wyeliminować te śmieciowe odczyty. Możecie coś podpowiedzieć? Arduino UNO zasilane z USB.

screen1.jpg

Przede wszystkim pokaż w jakim układzie to mierzysz. Wejście ADC nigdy nie może zostawać niepodłączone, zawsze musi być jakiś obwód który nim steruje. No i niebezpiecznie jest podłączać baterię (czy cokolwiek) wprost do delikatnych wejść mikrokontrolera. Jeżeli nie chcesz mieć odczytów "z powietrza", to zapewnij odpływ ładunków i mikroprądów do masy przez wstawienie opornika np. 100k od wejścia ADC do GND. Powinieneś też w jakikolwiek sposób zabezpieczyć pin przed spaleniem, np. przez opornik szeregowy 1k. W sumie najlepiej, gdybyś zrobił na wejściu dzielnik rezystorowy, bo to załatwia obie te sprawy za jednym zamachem a jednocześnie ustawia zakres pomiarowy na dowolny (większy) a nie tylko taki, jaki wynika z użytego napięcia referencyjnego.

 

  • Lubię! 1
(edytowany)

Już mi się udało podłączyłem na stałe źródło napięcia, wygląda na to że wejście analogowe nie podłączone wariuje.

Teraz mam kolejną sprawę, szukam algorytmu/funkcji za pomocą zamienię napięcie wejściowe na sterowanie przekaźnikiem ma to wyglądać tak: przy napięciu 0,3V przekaźnik ma się załączać na 1s co 10s i linowo podnosząc napięcie ma się zmniejszać czas przerwy (z 10s do 1s).

Edytowano przez Treker
Poprawiłem formatowanie.

No ale zapewne pamiętasz z podstawówki to, że aby jednoznacznie określić oba współczynniki funkcji linowej to potrzebujesz co najmniej dwóch punktów. Musisz zatem podać czas dla napięcia minimalnego i czas dla napięcia maksymalnego. Czekamy na cztery liczby, trzy (tj. 0.3V, 1s i 10s) nie wystarczą. Brakuje jeszcze jednego napięcia.

  • Lubię! 1

Wiem, że się czepiam, ale po pierwsze czy ta dyskusja na pewno ma związek z kursem Arduino? Może jednak lepiej tego typu wątki umieszczać w oddzielnym temacie?

A druga sprawa to jakaś epidemia programowania deklaratywnego. Nie wiem co się dzieje, ale teraz wszyscy programują pisząc na forum co by chcieli żeby ich program robił i liczą, że to się automagicznie zmieni w program. Masakra jakaś - chociaż to widocznie działa skoro tyle tematów sprowadza się do takiego podejścia 😞

  • Lubię! 1
(edytowany)

Masz rację Elvis, to ciekawe podejście i faktycznie działa więc nie dziwię się ludziom. O godzinie 16, po wyjściu ze szkoły zapominają po co tam byli - to przecież nuda i same bzdety, nos w smartfon i filmiki z YT. A gdy zobaczą coś fajnego, po prostu chcą to mieć. Wrzucają pytanie w kilka miejsc i proszę, po chwili jest odpowiedź. Nie ma to jak Arduino 🙂

PAJ123, poniższe równanie prostej  pewnie poznasz po kombinacji liter do której rozpoznania wystarczy prosta sieć neuronowa a cóż dopiero mózg:

y = A*x + B

gdzie y to czas który chcesz policzyć, powiedzmy, że wyrażony w milisekundach,

x to wynik z pomiaru ADC przeliczony na miliwolty,

A i B to współczynniki jakich szukasz.

Podając dwa punkty na prostej, czyli (350, 10000) i (2900, 1000) możesz  jednoznacznie określić A i B:

A = (y1-y2)/(x1-x2)

oraz

B = ((x1*y2)- (x2*y1)) / (x1-x2)

a to w prostej linii (nomen omen) prowadzi do:

A = -3.53

B = 11235

Teraz wystarczy, że:

a. Napiszesz pomiary napięcia i będziesz ich wyniki oddawał w [mV]. My nie znamy Twojego Vref więc nie możemy tego zrobić.

b. Przeliczysz wg właśnie wyznaczonych współczynników napięcie na czas wg równania prostej.

c. Napiszesz kawałek kodu generujący PWM o zadanym czasie wyłączenia liczonym w [ms] i stałym czasie włączenia.

Proste, prawda? 🙂 Powodzenia.

EDIT: Mam nadzieję, że te kreski przed napięciami jakie podałeś to tylko taki ozdobnik artystyczny a nie rzeczywisty znak minus, bo to wszystko zmienia. Także sposób podłączenia ADC do źródła tego sygnału. Nigdy nie umieszczaj takich myślników przed liczbami. Rozumiesz, prawda?

Edytowano przez marek1707
  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...