Skocz do zawartości

Ujemne napięcie przy ADC


kampo

Pomocna odpowiedź

Witam.

Załóżmy, że chciałbym mierzyć napięcie na silniku, który jest sterowany przez mostek H. O ile sprawa jest prosta przy 1 kierunku obrotów, tak nie mam pomysłu, co zrobić przy 2, gdy pin uC mógłby być podłączony do minusa silnika lub plusa. Myślałem, że możnaby wykorzystać jakiś przełącznik, ale to słaby pomysł. Powinno to być z automatu.

Wyczytałem, że wystarczy dać jakiś rezystor do 10K między pin uC a silnika, ale nie jestem pewny co do tego rozwiązania.

Mógłby ktoś podsunąć jakiś pomysł?

Pozdrawiam.

Link do komentarza
Share on other sites

1. Tam nie ma żadnego napięcia ujemnego. Nie rozumiem w czym problem.

2. Jeśli mówisz o napięciu różnicowym między jednym zaciskiem silnika a drugim to w uproszczeniu, co do wartości chwilowej jest ono takie jak napięcie zasilania minus spadek napięcia na tranzystorach mostka. Jeśli nie robisz jakiegoś precyzyjnego układu pomiarowego tylko chcesz mieć szacunki +/-5..10% dokładności to takie przybliżenie wystarczy. Co do wartości skutecznej to jest to oczywiście wartość szczytowa razy wypełnienie PWM, bo to prawie prostokąt.

3. Napisz po co w ogóle chcesz to mierzyć a na pewno znajdziemy rozwiązanie bo metod jest mnóstwo. Trudno mi się odnieść do tego co wyczytałeś bo to brzmi bez sensu.

Link do komentarza
Share on other sites

Może faktycznie pomyliłem definicje, chodziło mi dokładnie o podpięcie się do masy.

Na razie nie zamierzam tego nigdzie wykorzystać, tak po prostu sobie spekuluję.

Przybliżoną wartość można wyliczyć w programie - wiadomo, ale ja chciałbym się dowiedzieć, czy można zmierzyć napięcie (już nawet nie mówię tylko o silniku), podłączając GND jakiegoś tam sobie urządzenia do ADC tak, żeby pomiar działał też przy "plusie".

Może zobrazuję swoją myśl:

Połączenie z ADC jest między urządzeniem, a innym urządzeniem (opcjonalnie) sterującym nim.

Dokładnie chodzi mi o to, czy w ogóle można w ten sposób mierzyć napięcie przez ADC, a jeśli tak, to co należy zrobić, co podłączyć miedzy pin a GND urządzenia, a może jeszcze coś innego?

Pozdrawiam.

Link do komentarza
Share on other sites

Napięcie to różnica potencjałów między dwoma punktami. Wskaż mi na swoich schematach między którymi dwoma punktami chcesz to napięcie mierzyć, bo jakoś tego nie widać. ADC mierzy napięcie między swoją masą a wejściem. Jeżeli potencjał na wejściu jest większy niż na masie - wynik będzie dodatni, jeżęli niższy - ujemny. To proste.

Uprzedzając Twoje pytanie - tak, można mierzyć napięcie o dowolnej polaryzacji ale w odpowiednim układzie. Typowy przetwornik (np. w AVR) mierzy tylko napięcia dodatnie względem swojej masy ale nic nie stoi na przeszkodzie by zmienić zarówno polaryzację jak i zakres. Wszystko zależy od tego, czego od tego układu oczekujesz. Jaki zakres ma sam przetwornik i jakiego zakresu napięć wejściowych potrzebujesz, jakiej impedancji wejściowej (czy możemy brać prąd z wejścia), jakiej odporności na przepięcia, jakiego pasma, itd... Im wyższe wymagania - tym układ wejściowy ADC będzie bardziej skomplikowany i zwykle droższy. Im bardziej precyzyjne pytanie - tym dokładniejsza odpowiedź.

Najprostszy dzielnik (dwa oporniki) daje już szansę zarówno zmiany zakresu jak i polaryzacji. Zwykły wzmacniacz operacyjny daje już właściwie dowolność w kształtowaniu charakterystyki Uwe-Uwy a wzmacniacz pomiarowy pozwala nawet zrobić pomiar napięcia "pływającego" względem masy układu pomiarowego. O przetwornikach napisano i zostanie napisanych jeszcze mnóstwo książek więc na coś się zdecyduj.

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

marek1707, kolega kampo, tak jak napisał chce mierzyć napięcie na silniku DC podłączonym do mostka H. Nie komplikując układu da się to zrobić podłączając obydwa piny silnika do wejść ADC i mierząc napięcia na obydwu pinach. W zależności od wysterowania mostka H, można wtedy mierzyć napięcie na odpowiednim pinie silnika. Niektóre AVRy mają dodatkowo możliwość pomiaru napięcia różnicowego pomiędzy dwoma pinami, ale jest to dokładnie to samo co wyżej tyle, że robione automatycznie przez mikrokontroler.

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

Też tak na początku myślałem, że napięcie na silniku. Dlatego właśnie starałem się go do tego zniechęcić, bo ten pomiar jest trochę pozbawiony sensu. Przecież to on sam (dobra, jego procesor) wyznacza napięcie silnika wprost proporcjonalnie do wypełnienia PWM, czyli Usk = Ucc * PWM_duty. Jeżeli ma dobry mostek, to spadki napięcia są na nim nieduże i wynik pomiaru jest właściwie znany z góry. Jeżeli mostek jest słaby (typu kultowych, bipolarnych L293) to raczej trzeba wymienić mostek 😐 albo podstawić Ucc-Ub (przykładowo, gdzie Ub to spadek na mostku) we wzorze. Modulator PWM to nic innego jak mnożarka napięcia wejściowego razy współczynnik 0..100%

O mierzeniu za pomocą dwóch wejść i odejmowaniu wyników starałbym się zapomnieć chyba, że udałoby się to zsynchronizować z pracą PWM. Inaczej pierwszy pomiar mógłby być wykonany przed a drugi po przełączeniu mostka a wtedy wynik można wyrzucić do kosza.

Pomiar różnicowy jest OK, choć wtedy przetwornik AVR dużo traci z powodu fatalnej jakości wzmacniacza wejściowego i więcej jak 8 bitów nie zostaje. Można tak zrobić dla zabawy, tylko wciąż nie rozumiem po co.

O wiele więcej informacji niesie pomiar prądu silnika i dopiero to - zestawione z aktualnym wysterowaniem mostka (czyli wypełnieniem PWM) daje jakiś obraz pracy napędu w danej chwili. Jak rozumiem, do tego właśnie miałyby służyć pomiary silnika. Bo jeśli do oceny pracy mostka to: a) mamy dane katalogowe, b) można to zrobić raz i to statycznie zamiast wbudowywać wątpliwiej jakości układ pomiarowy do robota(?).

Niestety już w następnym poście Autor zmienia zdanie rysując jakieś abstrakcyjne druty i pytając o podstawy podstaw, więc to chyba jednak nie chodzi o silnik tylko o luźne gdybanie na zadany temat. No to gdybię sobie...

Link do komentarza
Share on other sites

wyznacza napięcie silnika wprost proporcjonalnie do wypełnienia PWM, czyli Usk = Ucc * PWM_duty.

Małe ale: przy wystarczająco dużej częstotliwości. Przy małej charakterystyka jest niestety inna, była zresztą o tym bardzo intensywna dyskusja na forum.

Osobiście też bym polecał pomiar prądu silnika oraz jego prędkości obrotowej i ew. sterował stabilizacją tych dwóch wartości.

Link do komentarza
Share on other sites

Nie, nie zgadzam się albo nie rozumiem o czym piszesz. Jaka charakterystyka? Obrotów? Momentu? O tym rzeczywiście była dyskusja ale my mówimy o napięciu. Napięciu na silniku, którego wartość chwilowa jest dokładnie taka jaki jest aktualny stan komutacji mostka. Mostek załączony "w lewo" to napięcie silnika jest równe Vcc w jedną stronę, mostek "w prawo" to mamy Vcc w drugą stronę. Mostek wyłączony - wynik zero. Koniec. Tak działa modulator PWM. Reszta to paskudne charakterystyki elektryczne i mechaniczne silnika DC a w szczególności prąd, który jest widoczną na zewnątrz wypadkową tych zależności. To on jest tutaj ciekawy. Napięcie nie ma tu nic do rzeczy - jest prostokątne a jego wartość skuteczna jedzie ze wzorem podanym już dwukrotnie.

Poza tym - tak szczerze mówiąc, pytania zadawane przez autora wątku były tak naiwne, że dyskusja zmierzająca w stronę nadzorowania stanu napędu DC/PWM już dawno wykroczyła poza obszar głównego tematu.

Link do komentarza
Share on other sites

Niestety już w następnym poście Autor zmienia zdanie rysując jakieś abstrakcyjne druty i pytając o podstawy podstaw, więc to chyba jednak nie chodzi o silnik tylko o luźne gdybanie na zadany temat. No to gdybię sobie...

W pierwszym poście napisałem:

Załóżmy, że chciałbym mierzyć napięcie [...]

Takie urządzenie jako pierwsze przyszło mi do głowy (zresztą innego podobnego nie znam), więc na takim przykładzie wytłumaczyłem, o co mi chodzi.

W kolejnym poście:

czy można zmierzyć napięcie (już nawet nie mówię tylko o silniku), podłączając GND jakiegoś tam sobie urządzenia do ADC

Myślałem, że tym postem wyjaśniłem dokładnie o co mi chodzi.

Nie komplikując układu da się to zrobić podłączając obydwa piny silnika do wejść ADC i mierząc napięcia na obydwu pinach. W zależności od wysterowania mostka H, można wtedy mierzyć napięcie na odpowiednim pinie silnika.

Rozumiem z tego, że jak podłączymy masę do pinu ADC, to mikrokontroler będzie miał to w nosie.

Pan marek1707 już mniej-więcej nakreślił mi sprawę, pan Sabre także, więc na przyszłość będę wiedział czego szukać.

Nie rozumiem, dlaczego dyskusja zeszła na temat PWM, przecież nie pytałem o to, bo wiem co to jest i wiem, że sam podejmuje decyzje jakie napięcie dać na silnik. I to też niedokładnie, bo przecież po drodze jest jeszcze spadek w jakiejś tam granicy (mały czy duży - nieważne) np. właśnie na mostku.

No ale co w przypadku, gdy nie mam na nie wpływu i po prostu chce sobie monitorować napięcie, które sobie "idzie" do jakiegoś urządzenia, w którym można zmieniać polaryzację?

No nieważne, bo zaraz się tu zrobi z tej dyskusji jakaś kłótnia, czy coś. Najwyżej sobie sam jakoś poradzę. Temat do zamknięcia.

Pozdrawiam.

Link do komentarza
Share on other sites

Być może coś, co Tobie wydaje się prostym pytaniem zawiera w sobie tak wielką liczbę dobrych (i różnych) odpowiedzi, że nawet sobie tego nie wyobrażasz. To nic złego, po prostu dzisiejsza elektronika może tak wiele, że z punktu widzenia laika lub nawet początkującego adepta jest rodzajem magii - może prawie wszystko. W takiej sytuacji precyzyjne pytanie jest tym, czego potencjalni pomagający oczekują bo nikt nie ma czasu na książkowe wykłady. Jeśli zapytasz "Czy się da?" odpowiedź brzmi "Tak, da się" (z resztą dostałeś ją), tylko - co Ci z niej przyjdzie?

Zapodałeś jakieś "schematy" więc dostałeś kilka zdań o napięciu i pytanie pomocnicze o dwóch drutach a nie jednym. Dlaczego tego nie rozwinąłeś, nie narysowałeś sposobu w jaki chcesz podłączyć Twój układ pomiarowy tylko dąsasz się jak dzieciak? Pisząc o pomiarze napięcia zawsze mów o dwóch drutach - taka prośba była zawarta w moich zdaniach. Jeśli wejście ADC chcesz podłączyć do GND jakiegoś urządzenia to gdzie podłączasz GND przetwornika? - o takie szczegóły mi chodzi, bo samo podłączenie nie jest generalnie bez sensu. Bez sensu jest, gdy piszesz tylko połowę prawdy. Dlaczego każesz mi przeczuwać, że sam nie ogarniasz podstaw tematu?

Nie rozumiesz dlaczego zeszło na PWM? Już Ci mówię: ano dlatego, że na Forbocie poruszyłeś temat silnika sterowanego mostkiem H. Jeśli ktoś to zbudował i nie zrobił tego na przekaźnikach, to prawie na pewno będzie chciał wykorzystać potencjalne możliwości takiego układu do poprawy kultury pracy napędu: płynnych startów, regulacji mocy itp a to nieodłącznie wiąże się z PWM. Dlatego.

Traktuj odpowiedzi na pytania pomocnicze jako obligatoryjne. Inaczej nigdzie nie usłyszysz precyzyjnej odpowiedzi, bo nikt znający się na rzeczy nie wie dokładnie o co Ci chodzi. Oczywiście możesz sam grzebać w literaturze i z pewnością rozwiązanie znajdziesz ale tylko dlatego, że wiesz czego szukasz. My - nie.

Tak więc, wracając do tematu i jeśli Cię on wciąż interesuje, proszę o precyzyjne odpowiedzi na poniższe pytania:

Podstawowe: Do czego to ma być? Czy chcesz mierzyć napięcie bo Cię to zwyczajnie interesuje? Wtedy mógłbyś po prostu podłączyć tam miernik uniwersalny ale z jakiegoś powodu tego nie robisz więc - z jakiego? W jakim celu chcesz mierzyć to napięcie - tylko konkretnie proszę.

I dalej:

1. Czy sterownik silnika (czy tego cokolwiekbądź) generuje PWM czy tylko statycznie przełącza kierunek prawo-stop-lewo?

2. Czy masz dostęp do masy (0V) sterownika czy tylko do dwóch drutów idących do silnika?

3. O napięciach jakiego rzędu mówimy?

4. Do czego potrzebny Ci jest wynik pomiaru, tzn. czy będzie jakoś dalej składowany i/lub przetwarzany (komputer PC? jakiś własny układ? mikrokontroler?) czy może być po prostu wyświetlony w postaci liczby woltów (plu ew. znak) i już?

5. Czy układ który chcesz dołączyć ma być odseparowany galwanicznie od obu linii zasilania silnika czy nie? Odpowiedź na to pytanie jest częściowo zawarta w odpowiedziach na pytania 3 i 4 ale chcę się upewnić.

Proszę o odpowiedzi w punktach. Być może po tych podstawowych przyjdą mi do głowy następne ale będzie to wynikiem pójścia pewną ścieżką rozwiązania. Na razie - nie wiem którą.

Link do komentarza
Share on other sites

Mostek załączony "w lewo" to napięcie silnika jest równe Vcc w jedną stronę, mostek "w prawo" to mamy Vcc w drugą stronę. Mostek wyłączony - wynik zero. Koniec.

Z tym ostatnim akurat się nie zgodzę, to ostatnie jest wypadkową konstrukcji mostka i sterowania (czy na zerze zwieramy czy zostawiamy otwarte i prąd płynie diodami), prądu na indukcyjności silnika, jego rezystancji oraz napięcie indukowanego przez silnik, a nawet wartości kondensatorów na stykach silnika. Fakt - nie wiem na co i po co to - pasuje mi tylko do zrobienia jakiegoś stanowiska laboratoryjnego dla szkoły/uczelni.

Link do komentarza
Share on other sites

tylko dąsasz się jak dzieciak

Nieee, nie dąsam się 😃

Sprawa też jest taka, że jestem początkujący, nawet bardzo i nie do końca potrafię może przekazać o co mi chodzi dokładnie, ponieważ ja i Wy myślimy inaczej:

Być może coś, co Tobie wydaje się prostym pytaniem zawiera w sobie tak wielką liczbę dobrych (i różnych) odpowiedzi, że nawet sobie tego nie wyobrażasz.

A więc tak:

1. Generuje PWM

2. Mam dostęp.

3. 6-12V? Przyjmijmy, że 9V.

4. Powiedzmy, że wynik (w postaci woltów) chcę wyświetlić na wyświetlaczu, wysłać przez jakiś interfejs komunikacyjny. Może nawet sterować tym napięciem przyciskami/potencjometrem. Miernikiem nie chce mierzyć, po prostu chcę sobie gdzieś to ładnie wyświetlić.

5. Jeśli dobrze rozumiem, to nie. Widzę to np. tak: Źródło 9V, do zasilania silnika i stabilizator, powiedzmy 5V do logiki. Więc jak na moje, to wszsytko ma wspólną masę, ale jak jestem w błędzie, to proszę mnie z niego wyprowadzić 😉

Pozdriawiam.

Link do komentarza
Share on other sites

Dysponując masą systemu zasilania silnika i pracując z napięciami rzędu 12V chyba rzeczywiście nie musisz izolować tego galwanicznie. Muisz jednak mieć na uwadze, że robiąc pomiar nieizolowany podłączasz masę Twojego nowego układu a więc i masę np. komputera zbierającego dane z masą sterownika silnika. Nie zawsze jest to mile widziane rozwiązanie szczególnie w przypadku, gdy takich układów jest do komputera podpiętych więcej niż jeden.

A teraz o samym pomiarze.

Gdyby tylko chodziło o "ładne wyświetlanie", radziłbym użyć płytki gotowego woltomierza. Można takie kupić już zmontowane pewnie za jakieś 30zł albo złożyć samemu z kitu. Po zrobieniu prostego dzielnika wejściowego przeniósłbyś zakres pomiarowy takiego woltomierza z typowych +/-200mV do np. +/-20V i miałbyś odczyt wprost w woltach ze znakiem, np: -11,34V. Wystarczyłoby to do orientacji w stanie silnika a i do ręcznego sterowania wypełnieniem PWM także.

Niestety, chcesz coś potem z tym wynikiem robić więc liczba na wyświetlaczu to za mało. Proponuję kilka rozwiązań:

1. Z każdego zacisku silnika (Ua i Ub) robisz dzielnik napięcia tak, by dopasować jego poziom do możliwości przetwornika A/D w procesorze. Synchronicznie z PWM mierzysz oba napięcia chwilowe w jednej (Ua1, Ub1) oraz w drugiej (Ua2, Ub2) fazie PWM. Liczysz ich różnice czyli napięcie na silniku w fazie pierwszej U1 = Ub1-Ua1 oraz w fazie drugiej U2 = Ub2-Ua2. Obliczenie muszą być robione ze znakiem, bo wyniki mogą wyjść ujemne. Teraz znając wypełnienie PWM (zakładam, że je znasz skoro możesz je zmieniać) obliczasz napięcie wypadkowe mnożąc każde z napięć chwilowych przez czas w jakim ono panuje na silniku: U = U1*PWM + U2*(1-PWM) gdzie PWM to współczynnik wypełnienia wyrażony jako liczba z zakresu 0..1.

2. Robisz takie same dzielniki napięcia ale korzystasz z trybu różnicowego przetwornika. Teraz musisz zrobić tylko dwa pomiary, po jednym w każdej fazie PWM ale to przetwornik robi odejmowanie i oddaje od razu wynik ze znakiem. Wystarczy, że pomnożysz oba wyniki przez odpowiednie wypełnienia PWM i już.

Pomysł 1 i 2 ma tę wadę, że musisz mierzyć na tyle szybko, by zdążyć nawet w najkrótszym (lub najdłuższym) impulse PWM. Przy 8 bitach licznika i częstotliwości np. 5kHz najkrótszą szpilką będzie coś poniżej 1us a to znacznie przekracza możliwości przetworników z procesorów AVR.

3. Przenosisz uśrednianie za okres PWM na analogowy filtr dolnoprzepustowy, czyli robisz takie same dzielniki jak poprzednio ale między dwa wejścia przetwornika wstawiasz kondensator. Wraz z rezystorami dzielników tworzy on filtr a napięcie na kondensatorze będzie średnim napięciem silnika. Mierzysz to kiedy chcesz, uśredniasz za kilka pomiarów a wynik przeliczasz wprost na wolty ze znakiem i robisz z nim co Ci się podoba.

W przypadku koniecznej większej dokładności możnaby użyć wzmacniacza pomiarowego (monolitycznego albo nawet zbudowanego "na piechotę") ale 7-8 bitów jakie może wyciągniesz z pracującego w trybie różnicowym przetwornika w AVR do zabawy powinno wystarczyć. Możesz też - nie zmieniając idei - użyć jakiegoś innego przetwornika z wejściem różnicowym. Jest ich mnóstwo, a 10- lub 12-bitowe na SPI są dziś już całkiem tanie. Dobrym rowiązaniem byłby tu przetwornik całkujący bo nie musi być szybki a z zasady uśrednia za pewien długi czas lub delta-sigma, który działa trochę inaczej ale wyszłoby na to samo.

Napisz czy któryś pomysł Ci odpowiada to podrążymy to dalej.

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

Pomysły 2 i 3 wydają mi się chyba najlepsze. Dokładność nie musi być jakaś super, więc myślę, że wybrałbym 3, ponieważ jak pisałeś, przetwornik może nie nadążyć z mierzeniem, tym bardziej, że w przypadku 3 opcji pomiar mógłbym robić kiedy bym tylko chciał.

Link do komentarza
Share on other sites

Ja tylko podam pewna uwagę dla liczenia różnicy napięć z dwóch dzielników: jeżeli różnica jest mała, ale na wyższym napięciu (np. mamy 11 i 11.1V) to krytyczna dla pomiaru jest dokładność rezystorów w dzielniku! Może ona generować stałą wartość błędu, co przy małych wartościach jest istotne.

Link do komentarza
Share on other sites

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

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.