Skocz do zawartości

pomiar przebiegu napięcia i prądu


Pomocna odpowiedź

Napisano (edytowany)

 
void setup() {
  Serial.begin(2000000);//Uruchomienie komunikacji przez USART
}
 
void loop() {
  Serial.println(analogRead(A5));//Wysyłamy zmierzone napięcie
   delay (0);
}

 

 

dzień dobry myślałem wykonać na Arduino płytkę pomiarowa do pomiaru przebiegu napięcia.Jako że jakieś podstawy znam złożyłem taki układ. ale przebieg nie przypomina sin . czy jest w ogóle możliwe wykonanie takiego miernika z zapisem na kartę sd?

 

 

IMG_20230312_180749_208.jpg

schnapiecie.png

Edytowano przez Marcin1922
(edytowany)

Może serial nierówno przesyła, może takie jest napięcie. Charakterystyka ADC może nie być liniowa. Może wszystko na raz albo po trochu.

Edytowano przez matsobdev
  • Lubię! 1

To prawda przesyła dość nie równo. image.thumb.png.5abfd0e1a4aee4581be13e465783b9a4.png Ale czy jest możliwość tego uniknąć. Sądzę , że gdy dodam zapisa na kartę sd to jeszcze spowolni program i lepiej nie będzie... Zastanawiam się czy ten kondensator który dałem w układ  nie powoduję wygładzenie przebiegów. 

(edytowany)

Nie, w Excelu jest równo, patrzysz na oś czasu tylko, poziomą. Chodzi też o typ wykresu. Dokładnie to będzie numer próbki, nie czas. Arduino wysyła tyle ile daje radę. Trzeba by zrobić, żeby pomiar był robiony miarowo i tak, żeby pomiędzy kolejnymi dało się wysłać serialem. Trochę wolniej będzie. Pewnie jakiś timer, żeby szło jak w zegarku. A przy okazji, Scoppy.

Edytowano przez matsobdev

No teoretycznie w kartach pomiarowych zapis odbywa się paczkami to można pomyśleć coś w tą stronę. Najlepiej chyba pomyśleć o układzie przynajmniej dwu wątkowym. W tedy jedna linia odpowiada za pomiar a druga zapis. Chyba dobrze myślę ? 

- to układ do pomiaru prądu, napięcia.

- kondensator C1 musi w nim być.

- z esp32 miałem też z tym problemy, zrobiłem pomiar w paczce 2000 impulsów, przerwa.

- ten delay(0) trochę na wyrost.

(edytowany)

Ja  bym użył freeruning mode i w przerwaniu od adc wysyłał (lub lepiej w loopie kiedy jest aktywna flaga że pomiar zakończony)- gdybym musiał to z jakiegoś powodu zrobić na AVR.

A i tak dużo lepszym rozwiązaniem wydaje się użycie STM32 i wysyłka z użyciem DMA. Można by powiedzieć że przy odpowiedniej konfiguracji pomiary i wysyłanie będą odbywały się w tle. 

 

Edytowano przez _LM_
9 minut temu, 99teki napisał:

- ten delay(0) trochę na wyrost.

dokładnie, jest nie potrzebny bo i tak zanim avr pomierzy to jest dosyć czasu na wysłanie danych

  • Lubię! 1
3 godziny temu, _LM_ napisał:

A i tak dużo lepszym rozwiązaniem wydaje się użycie STM32 i wysyłka z użyciem DMA. Można by powiedzieć że przy odpowiedniej konfiguracji pomiary i wysyłanie będą odbywały się w tle. 

Ja bym jeszcze dorzucił Raspberry Pi Pico 😉 3 kanały ADC dla użytkownika i nie trzeba się męczyć z DMA, bo masz dwa rdzenie... No i tańsze.

(edytowany)

Tylko generalnie tam siedzi i tak jeden przetwornik pewnie, tylko są przełączane wejścia. Będzie wolniej im więcej kanałów, mniej pomiarów na kanał. O jakiej częstotliwości sygnały chcesz badać? @H1M4W4R1 Pico fajna opcja, Pico W też, Scoppy używa Pico (W) - W, żeby czasem nie upalić telefonu. A robiąc samemu to można podkręcić i przyspieszyć (albo bez podkręcania, tylko wskazać zegar systemowy jako źródło dla przetwornika. Domyślnie z USB - 48 MHz, 96 taktów na próbkę) ADC.

Edytowano przez matsobdev

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...