Skocz do zawartości

Arduino - podłączenie czujnika ciśnienia MPX2053GS


luki866

Pomocna odpowiedź

Witam, 

Próbuję podłączyć czujnik ciśnienia MPX2053GS, jest on zasilany 10V, dlatego na wyjściu 5V z Arduino stworzyłem przetwornicę step-up, która z tego co mierzyłem daje mi ok 9,84V. Czujnik na wyjściu zwraca bardzo małe wartości (rzędu 0,2V) niezależnie od stworzonego ciśnienia. Nie wiem czy jest to kwestia źle dobranego czujnika, czy złego podłączenia/schematu. Dołączam plik ze schematem podłączenia czujnika. Dodam, że czujnik wykorzystuję do pomiaru ciśnienia krwi przez ciśnieniomierz.

Schemat-czujnik.jpg

Link do komentarza
Share on other sites

Maksymalnie na wyjściu ten czujnik ma 0,04V dla 50kPa, także go pewnie przeciążasz, dla odczytu 0,2V to dajesz mu ciśnienie gdzieś 160kPa, choć z dzielnikiem 0,5 to już 320kPa. Reaguje w ogóle jeszcze? Musisz wzmocnić ten sygnał najlepiej do zakresu 0-1V i użyć wewnętrznego napięcia odniesienia z Arduino.

Link do komentarza
Share on other sites

Dzięki za pomoc. Myślałem, że w datasheecie napięcie wyjściowe było 0-10V. Mam kilka pytanek następnych apropo wzmocnienia tego sygnału teraz.

Wzmocnienie zakresu do 0-1V wystarczy? Nie lepiej do 0-5V? I czy wystarczy wzmacniacz operacyjny o odpowiednio dobranych rezystorach? Potrzebna będzie jeszcze jakaś filtracja czy coś?

Link do komentarza
Share on other sites

Czujnik ma dopuszczalne przeciążenie 200 kPa. Ciśnienie krwi u człowieka to maks. 135 mm Hg (18 kPa). Dobrze by było więc zastosować jakiś mniejszy. A wzmocnienie sygnału do ok. 4 V lub 5 z diodą Zenera na pewno poprawi dokładność. No i trzeba by układ jakoś skalibrować skoro ma mieć zastosowanie medyczne (potrzebny manometr kontrolny)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Temat w tym momencie jest już nie związany za bardzo z Arduino. Szukaj gotowych schematów, gotowych wzmacniaczy. Jak się chcesz pobawić to np. taki układ: http://tinyurl.com/y86w8tx8 ale  wymyślony  na potrzebę PT100. Pobaw się suwakami to zobaczysz jak wpływa ustawienie i napięcie podawane na wykresie po lewej na wyjście po prawej. Jak użyjesz wewnętrznego napięcia odniesienia to możesz użyć dowolnego procesora Atmega zasilanego z napięcia np. baterii 3-5V i zawsze będziesz mierzył względem 1.1V - no to akurat trzeba sprawdzić, bo każda atmega ma rozbieżność 10% tego napięcia, ale jak robisz 1 układ to nie jest problemem zrobić kalibrację gdzieś w połowie i przy końcu zakresu, 0 to zawsze będzie 0. Im bardziej wzmacniasz tym może być większy błąd. Przy odniesieniu VCC inne odczyty będziesz miał gdy Arduino jest podłączone do USB w laptopie, inne do ładowarki, inne gdzieś z zasilacza (bo USB to 4.6-5.2V, szczególnie w ładowarkach).Taki układ z załącznika to taka zabawka bardziej. Ale jak masz w domu parę rezystorów i 1 lm358 to możesz to zmontować do testów i potem sobie szukać lepszego rozwiązania.

Ewentualnie zerknij na zewnętrzny ADC  ADS1115, ma to Adafruit w ofercie, więc znajdziesz gotowe biblioteki, cena niewielka: ali .

Czujnik ma zakres ok, ciśnienie pracy ma do 50kPa, to 200kPa to po prostu go może już zniszczyć (dlatego pytałem czy jeszcze coś pokazuje), a to co pokazuje powyżej 50kPa po prostu już może być niezwiązane z podawanym ciśnieniem.

Link do komentarza
Share on other sites

Czujnik ma dobry zakres, mniejszy był dużo za mały. Ciśnienie tworzyłem rękawem ciśnieniomierza więc wątpię, aby przekroczyło te 50kPa. Co do wzmacniacza i napięć referencyjnych to myślę, że chyba już wszystko rozumiem, tylko będę musiał doczytać jak dobrać i się pobawić z tym. Dzięki za poświęcony czas i pomoc 🙂

Aktualizacja:

Który z dostępnych w tym sklepie wzmacniaczy będzie najlepszy? Jest ich bardzo dużo i nie jestem w stanie stwierdzić którego wybrać: http://electropark.pl/124-wzmacniacze-operacyjne

Gdzieś przeczytałem, że potrzebuję wzmacniacz typu rail-to-rail, bo inaczej nie będę w stanie uzyskać wyników bliskich 0V, ale jedyny dostępny w lokalnym sklepie jest na SO8. Goni mnie czas, dlatego wolałbym się nie bawić i kupić od razu DIP8.

Nasunęło mi się jeszcze jedno pytanie: Lepiej wzmocnić sygnał do zakresu 0-4V bez napięcia referencyjnego, czy 0-1V z napięciem referencyjnym z Atmegi?

Link do komentarza
Share on other sites

Aż się boję, bo sam zwalczam głosy w stylu "jestem najmądrzejszy na świecie więc wywal wszystko i zrób od początku", ale w ten wątek muszę się wtrącić. Wczoraj nie pisałem bo byłem chory (mam zwolnienie) - jeśli ktoś tu pamięta ten film 🙂 O poradach, które dostałeś spróbuję taktownie pomilczeć.

Hm, czyli tak.. wywal wszystko zacznij od początku. Spróbuję to uzasadnić.

1. Wybór czujnika: dziś jest całe spektruum możliwości: czujniki z wyjściami cyfrowymi, z wewnętrznymi wzmacniaczami które podłączane są wprost do ADC ale nie, Ty wybrałeś najprostszy (najtańszy?) i najgłupszy czujnik składający się w środku z mostka Wheatstone'a (koniecznie o tym przeczytaj) plus kilku trymowanych laserem oporników kompensacji temperaturowej. Musisz kombinować ze wzmacniaczem a widać, że nie masz pojęcia o co chodzi. Poza tym kład mostka - z definicji - ma wyjście różnicowe. Jego sygnałem wyjściowym jest różnica napięć między dwoma liniami VOUT.

2. Nie możesz więc jednego z tych kabelków podpinać do masy. Jeżeli chcesz stracić większość precyzji pomiaru to możesz jednego z pinów VOUT nie używać  w ogóle, ale zwarcie do czegokolwiek to najgorsze co mogłeś zrobić. W przypadku używania jednego wyjścia tracisz całą kompensację temperaturową bo ona jest liczona dla sygnału różnicowego.

3. Ponieważ ważna jest różnica napięć, to tylko ją musisz wzmacniać. Na każdym z tych pinów otrzymywane jest jakieś wysokie (względem sygnału "ciśnieniowego")  napięcie stałe - mostek W. się kłania. Co powiesz na okolice Vcc/2? Tak więc oczekujesz co prawda sygnału kilkudziesięciu mV, ale na tle kilku tysięcy mV offsetu. Sam rozumiesz, że podłączanie tego do wzmacniacza który planujesz nie ma sensu. Wzmacniacz musi być czuły jedynie na różnicę (VOUT+) - (VOUT-) a na wyjściu powinien ją przesunąć i odnieść unipolarnie względem masy ADC. Tylko wtedy odejmujesz dwa wielkie (i równe sobie) napięcia od siebie i zostaje to co Cię interesuje.

4. Skoro czujnik jest tak prosty, to i zasada działania jest prosta. 10V zasilania jest dobrym pomysłem, ale u Ciebie bardzo niewygodnym. Musiałeś zrobić przetwornicę boost, nawiasem mówiąc wybrałeś jeden z najstarszych, najgorszych, najmniej sprawnych i najbradziej syfiących zakłóceniami scalaków na rynku. To dobre do zasilania łańcuszka 10 diodek LED z 5V, ale nie do żadnej analogówki. A Ty jeszcze pytasz o filtrowanie. Ale ja nie o tym. Otóż mostek Wheatstone'a ma tę cechę, że jego sygnał różnicowy jest wprost proporcjonalny także do napięcia zasilania. Jeśli zastanowisz się nad jego schematem przez 15 sekund to stanie się to oczywiste. Tak więc gdy napędzasz (akurat ten czujnik) z 10V to masz czułość 40mV (pełna skala), ale nic nie stoi na przeszkodzie by zasilać go z przyjemnych 5V i mieć full-scale 20mV. Tak, to gorzej z punktu widzenia wzmacniacza, bo wymagania rosnbą, ale moim zdaniem zalety przeważają na wadami.

5. Skoro sygnał wyjściowy mostka jest proporconalny (oprócz ciśnienia - to oczywiste) także do jego napięcia zasilania to właśnie zalecaną cechą ADC jest uzależnienie jego refrencji od Vcc. Postulowane przełączenie się na dobre, superstabilne, ale niezwiązane z poziomem Vcc wewnętrzne napięcie odniesienia procesora paradoksalnie pogorszy stabilność wyników - trzeba rozumieć co się mierzy, prawda? Ta cecha mostków jest często stosowana w układach pomiarowych a korzystanie z napięcia odniesienia związanego z napięciem zasilania mostka kasuje wiele błędów i nie wymaga stosowania wysokostabilnych referencji. Tak więc zalecam stosowanie domyślnej konfiguracji ADC w Arduino, gdzier Vref=Vcc =5V.

6. Do wzmacniania rożnicy miliwoltów na tle woltów potrzebujesz tzw. wzmacniacza pomiarowego. Musi mieć dwa wejścia i jedno wyjście odniesione do masy, regulowane wzmocnienie, zasilanie 5V, zakres napięcia wyjściowego (przy tym zasilaniu) od 0mV i mieć - jak to wzmacniacz pomiarowy - ogromny CMRR (koniecznie znajdź co to znaczy), mały dryft i mały offset, na poziomie pojedynczych uV. Poszukasz sam czy ma coś wskazać?

I na koniec: mam nadzieję, że to tylko taki demostrator technologii albo praca na zaliczenia na studiach bo raczej nie masz kwalifikacji do robienia czegoś dla prawdziwej elekroniki medycznej..

Jeżeki tego czujnika jeszcze nie kupiłeś, pomyśl o trochę droższej serii z wbudowanym wzmacniaczem. Odpadnie wiele problemów i podłączysz go wprost do ADC.

  • Lubię! 1
Link do komentarza
Share on other sites

1. Wybór padł na ten czujnik, bo inne były dużo droższe, a i tak większość z nich musiałbym sprowadzić z poza Polski, czego chciałem uniknąć. 

2. Dziś doczytałem dokładniej i już się dowiedziałem, że jest to wyjście różnicowe i podpinanie go o masy nie ma sensu.

4. W Datasheecie napięcie standardowe jest 10V, nie wiedziałem czy zasilenie z 5V zapewni poprawną pracę. Jeśli zasilenie 5V zmniejszy jedynie zakres napięcia wyjściowego to na pewno pominę moją przetwornicę.

6. Jedyny wzmacniacz pomiarowy dostępny w sklepie we Wrocławiu to ten: http://electropark.pl/wzmacniacze-operacyjne/4440-mcp6n11-100e-wzmacniacz-operacyjny-so8.html jednak jest w obudowie SO8, co wolałbym pominąć.

Oczywiście jest to projekt na potrzeby studiów. Nigdy nawet nie pomyślałem, że z moją wiedzą zdołam osiągnąć wystarczająco dobre efekty, aby urządzenie miało prawdziwe zastosowanie medyczne.

Czujnik niestety kupiony, tak jak pisałem wyżej - małe opcje wyboru czegoś innego (Z tych dostępnych w Polsce głównie nie zgadzał się zakres ciśnienia lub rozmiar otworu do podłączenia rękawa do czujnika).

Co z wykorzystaniem przetwornika ADS1115, o którym mowa była wcześniej? Dopiero zacząłem czytać dokumentację więc nie wiem czy to ma sens.

Link do komentarza
Share on other sites

17 minut temu, luki866 napisał:

Co z wykorzystaniem przetwornika ADS1115

A co z pasmem sygnału? Bo sam przetwornik:

1. Pasuje bo ma wejście różnicowe i PGA który umożliwia pracę do 256mV FS. Ty byś korzystał z 1/6 tego zakresu, ale przy jego 16-bitach zostało by wciąż ok. 11-12 bitów dynamiki.

2. Pasuje, bo ma wbudowane w naturę architektury delta-sigma fantastyczne filtrowanie, ale tutaj wracamy do problemu pasma sygnału, bo musisz przehandlować pasmo na liczbę bitów. Ten przetwornik - chcąc wykorzystać jego pełne możliwości dynamiczne - w zasadzie jest przeznaczony dla sygnałów DC lub bardzo wolnozmiennych. Jakie pasmo ma sygnał ciśnienia? Czy to jest przebieg tętna człowieka? Jak będziesz otrzymane próbki obrabiał dalej? Możesz to opisać?

3. Nie pasuje, bo ma wyłącznie referencję wewnętrzą. Już wiesz dlaczego. Szukaj innego.

Link do komentarza
Share on other sites

9 minut temu, kaczakat napisał:

A oglądałeś może ten czujnik: https://www.tme.eu/pl/details/abpmann005pg2a3/czujniki-cisnienia/honeywell/ ? Jest do 6PSI czyli około 35kPa i od razu masz sygnał cyfrowy po I2C.  Nawet w pdf ma opis, że jest do ciśnienia krwi.  Jest zasilany z 3.3V, ale to załatwi konwerter za 1zł.

Sam czujnik pasuje, Arduino ma wyjscie 3,3V więc nawet konwerter byłby niepotrzebny, jednak nie pasuje sposób mocowania nóżek...

Co do pdfa, to w opisie tego MPXM2053GS też w zastosowaniach wymieniony jest pomiar ciśnienia krwi.

Co do samej stronki, jak wygląda czas dostarczenia elementów? Jakbym jeszcze dziś coś zamówił to powinno dojść do Wrocławia do wtorku?

24 minuty temu, marek1707 napisał:

3. Nie pasuje, bo ma wyłącznie referencję wewnętrzą. Już wiesz dlaczego. Szukaj innego.

Ok, zobaczę co tam jeszcze jest.

Link do komentarza
Share on other sites

15 minut temu, luki866 napisał:

Nie pasuje, bo ma wyłącznie referencję wewnętrzą. Już wiesz dlaczego. Szukaj innego.

Gdy zdecydujesz się na czujnik z aktywnym wzmacniaczem i wyjściem asymetrycznym to oczywiście powyższe przestaje obowiązywać i stabilna referencja ADC jest jak najbardziej OK.

Link do komentarza
Share on other sites

Dochodzę do wniosku, że łatwiej będzie jednak zmienić ten czujnik... Co myślicie o tych dwóch ? 

https://www.tme.eu/pl/details/abpdann005pg2a3/czujniki-cisnienia/honeywell/

https://www.tme.eu/pl/details/abpdant005pgaa5/czujniki-cisnienia/honeywell/

Wydaje mi się, że oba byłyby ok. Jeden ma wyjście analogowe, drugi I2C. Duża będzie różnica jeśli chodzi o samą konfigurację wyjścia? 

Są tam jeszcze dwa dokładniejsze, ale cena zaczyna się robić trochę za wysoka niestety...

https://www.tme.eu/pl/details/sscdant005pgaa5/czujniki-cisnienia/honeywell/

https://www.tme.eu/pl/details/hscsand005pgaa5/czujniki-cisnienia/honeywell/

Link do komentarza
Share on other sites

Co rozumiesz przez "konfigurację wyjścia"?

Jeden podłączasz do interfejsu I2C i czytasz wynik w postaci cyfrowej - musisz znaleść opis rejestrów, procedury ustawiania trybu pracy, (auto)kalibracji, wyzwalania pomiaru i odczytu wyników lub gotową bibliotekę - może ktoś napisał albo Honeywell udostępnia jakieś noty aplikacyjne do tej rodziny?

Drugi czujnik podłączasz do swojego ADC jak ten poprzedni. Z podanej ch-ki wyjściowej (i wzorów) wynika, że on też jest proporcjonalny (jak goły mostek) do zasilania więc uwaga o referencji ADC związanej z Vcc pozostaje w mocy. Ciekawe że tak zrobili - to tańsze rozwiązanie (w samym czujniku), bo nie wymaga posiadania precyzyjnej referencji a jedynie utrzymania stałego wzmocnienia a to jest zwykle zależne od stosunku dwóch rezystorów a to jest w scalakach łatwiejsze niż ich konkretne wartości.

Edytowano przez marek1707
literówki..
Link do komentarza
Share on other sites

Przez konfigurację wyjścia rozumiałem I2C/analog. Chodziło mi czy pomiary będą się jakkolwiek różnić między sobą i czy któryś będzie lepszy/gorszy dla mojego zastosowania?

Z tego co widzę, to czujnik ABPDANT005PGAA5 z wyjściem analogowym wydaje się łatwiejszy do podłączenia. Zakres wyjścia będzie przeskalowany według zakresu Vcc, więc pomijam wszystkie wzmacniacze itp. a na Arduino pominę używanie bibliotek, bo wystarczy zwykły analogRead(), z którego potem będę mógł przetwarzać dane dalej. Czy to się zgadza?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.