ATNEL tech-forum
https://forum.atnel.pl/

Jak przeskalować wartości ADC
https://forum.atnel.pl/topic21859.html
Strona 1 z 1

Autor:  grego [ 10 sty 2019, o 18:07 ]
Tytuł:  Jak przeskalować wartości ADC

Tworze sobie kontroler sterujący pracą siłownika elektrycznego, wykorzystuje tam kilka kanałów Adc do których podłączone są potencjometry, jeden jako czujnik położenia dwa jako skrajne punkty pracy siłownika czyli minimalna wysokośc i maksymalna - wszystko ma byc płynnie regulowane. Potencjometr położenia nie będzie pracował w pełnym swoim zakresie bo to nierealne, doszedłem do wniosku, że trzeba wszystko w jakis sposób ze sobą skalibrować. W eepromie zapisuje więc skrajne wartości pracy czujnika położenia i pozostałych potencjometrów.
Tylko teraz w jaki sposób to ze sobą zgrać by potencjometry ustawiania położenia mieściły sie w zakresie pracy potencjometru położenia?

Obrazek

Połowicznie rozwiązałem to w taki sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Generalnie to działa, ale tylko w jednym skrajnym położeniu potencjometru od biedy wystarczy, bo zostaną określone wysokości gdzie ma się siłownik zatrzymać, czy ktoś ma pomysł jak przeskalować całą wartość U2 i U3 by zakresy pracy potencjometrów mieściły sie w zakresie pracy U1? Samo odejmowanie róznicy od wartości nie wystarczy bo jedna strona owszem się zgra, ale druga się rozejdzie...

Autor:  mirekk36 [ 10 sty 2019, o 21:32 ]
Tytuł:  Re: Jak przeskalować wartości ADC

zubik napisał(a):
A nie da się "analogowo" tego rozwiązać? Tj w układzie ze wzmacniaczami operacyjnymi?

O matko jerychejska .... no po jasny gwint ? ;) to wzmacniaczami zrobić skoro można programowo ;) po prostu zgroza ;) .... nie po to bierzemy procka w łapki, żeby jeszcze doklejać na PCB 100 innych WO ;)

W którymś poradniku wideo pokazuję funkcję map() ;)

Autor:  grego [ 10 sty 2019, o 21:50 ]
Tytuł:  Re: Jak przeskalować wartości ADC

Oj ten siłownik to duuże uproszczenie bo cały projekt jest bardziej wyrafinowany ;).

Autor:  mirekk36 [ 11 sty 2019, o 02:59 ]
Tytuł:  Re: Jak przeskalować wartości ADC

zubik napisał(a):
jak przy okazji stracisz połowę rozdzielczości adc to też tak zrobisz?


No tak, oczywiście że masz rację gdyby miało dojść do aż takiej straty - tzn też aż tak dużej różnicy w przeskalowaniu no i jeszcze do tego miałoby to aż takie duże znaczenie w działaniu programu. Moim zdaniem jednak w zdecydowanej większości wypadków i potrzeb - programowo spokojnie wystarczy a bywają wręcz sytuacje gdzie wręcz ta utrata rozdzielczości nie ma żadnego znaczenia bo chodzi o zgrubne reakcje w dużo mniejszej ilości punktów a wręcz o ich przy okazji mocne uśrednienie ....

W każdym razie - rzeczywiście twoja uwaga jest cenna - bo to że często można programowo - to warto wiedzieć, że analogowo na zewnątrz można to zrobić prawie bezstratnie

Autor:  grego [ 11 sty 2019, o 06:24 ]
Tytuł:  Re: Jak przeskalować wartości ADC

O w razie czego zawsze mogę wbić kołek ograniczający ruch potencjometru i też będzie dobrze :mrgreen:.

Pan Mirek nie pamięta gdzie ów cenne porady mogą się znajdować?

A coś znalazłem:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  grego [ 13 sty 2019, o 11:05 ]
Tytuł:  Re: Jak przeskalować wartości ADC

Spróbowałem z tą funkcją, ale mam pewien problem z wynikiem, górny zakres się zgadza, ale dolny się rozjeżdża.

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdzie tkwi błąd?

Edit:
Funkcja napisana jest prawidłowo i juz działa dobrze, błąd był w zmiennych pobieranych z eepromu, a raczej tych co do niego trafiały... W sumie to jeszcze można to uprościć, wystarczy oba rożne przedziały liczbowe przedstawić w procentach i dopiero potem je ze sobą porównywać i tak wartości miałem wyświetlać w %.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/