środa, 13 marca 2019

SLIDER – wirtualny potencjometr w BLYNKu

BUTTON załatwi nam połowę potrzeb w aplikacji typu Smart Home Iot czy Inteligentnego Domu. Drugie 50% przypada na kilkadziesiąt pozostałych widgetów BLYNKa. No może nie dokładnie tak ale…  W zasadzie kolejne elementy BLYNKowej układanki realizują ,już tylko jakieś pojedyncze ale za to specyficzne funkcje trudne do obsłużenia przyciskiem. np.  odczyt czujników telefonu, prezentacja  graficznych wykresów czy obsługa terminala.  Nie wszystkie są niezbędne ale poprawiają komfort obsługi naszego systemu lub jego wygląd. Ale są jeszcze 2-3 widgety, bez których trudno sobie wyobrazić przyjazny panel sterujący Dziś popatrzymy więc na jeden z nich – wirtualny potencjometr czyli SLIDER

Sygnał cyfrowy (np. dwustanowy 0/1) ma się nijak do sygnału analogowego. I to nie tylko w tym że jeden ma w określonym przedziale tylko dwie wartości (lub więcej ale dokładnie określoną liczbę) a drugi nieskończenie wiele. Ale i w tym, że wielkości analogowe mogą przyjmować wartości z baaaaardzo szerokiego przedziału. Taka na przykład oporność może się w praktyce zmieniać od mili omów (mΩ) do megaomów (MΩ) czyli lekko licząc 9 rzędów wielkości (109). Jeszcze gorzej jest z odległością – tu możemy mieć nanometry (10−9) cz Angstremy (10−10) i lata świetlne ( 1016 m).
Jeśli dla napięcia mamy wartość 100 to już coś wiemy. Możemy mieć wątpliwość co do jednostki (mnożnika) czy to jest 100 V , 100 mV (100 x 10−3 )  czy 100 kV(100 x 103 ). W systemach cyfrowych wartość 100 jest kompletnie bezużyteczna jeśli nie znamy przedziału w jakim może się ona zmieniać. I tak dla liczby 8  bitowej 100 oznacza ok 40% wartości maksymalnej a dla 16 bitowej 0,3 %. I to jeszcze nie wszystko. Dodatkowo musimy wiedzieć jakim rzeczywistym wartościom danej wielkości odpowiada minimum i maksimum naszej cyfrowej liczby. I tak jeśli cyfrowe 0 to 0 napięcia, a maksimum (dla 8 bitów to 255) odpowiada 5 V to liczba 100 oznacza  5/256 x 100 = 1.953125 V.
Ale cyfrowa wartość 100 ma jedną kolosalną zaletę – 100 oznacza DOKŁADNIE 100. W technice analogowej ustawienie wartości DOKŁDNIE 100 jest w praktyce niewykonalne.



Po co ten cały przydługi wstęp? Dla lepszego zrozumienia czym w aplikacji jest lub może być SLIDER. A pełni on jako element wyjściowy (sterujący) co najmniej dwie funkcje:
  1. ustawienie konkretnej liczby
  2. ustawienie wielkości analogowej
Ad.1 Ta funkcja jest dosyć oczywista.  Za pomocą tego elementu w bardzo prosty sposób możemy ustawić i błyskawicznie zmienić wartość jakiejś zmiennej w programie. Co prawda tylko jeśli jest to zmienna typu integer i tylko w zakresie -9999 do +9999 ale w większości przypadków to całkowicie wystarcza. A więc jeśli potrzebujemy ustawić i zmieniać np. czas załączenia grzania, świecenia lub generalnie ustawić jakiś licznik czy timer widget SLIDER będzie nieoceniony.
Ad.2 W przypadku zmian wartości analogowej sprawa jest bardziej skomplikowana. Po pierwsze nasz mikrokontroler musi mieć WYJŚCIE analogowe czyli przetwornik C/A zamieniający liczbę na wielkość napięcia. Dostępna w większości układów funkcja PWM (trochę wiedzy o PWM tu >>> i tu>>>> i tu>>>>) jest takim udawanym sygnałem analogowym. Bowiem w tym przebiegu stała jest jedynie wartość średnia napięcia ale amplituda zmienia się i to kilkaset razy na sekundę Dopiero przepuszczenie sygnału przez filtr dolnoprzepustowy lub zastosowanie układu scalonego zamieniającego PWM na sygnał analogowy da nam na wyjściu rzeczywiste stałe napięcie. Ale i takie ułomne wyjście analogowe jak PWM nadaje się znakomicie w wielu „analogowych” zastosowaniach typu zmiana jasności świecenia leda czy prędkości obrotu silnika prądu stałego. Ba, w tych zastosowaniach układ PWM jest lepszy niż zasilanie regulowanym prądem stałym ze względu na minimalne straty w regulatorze. Nie zmienia to jednak faktu, iż klasyczne wyjście analogowe powinno nam dać stały poziom napięcia, którym możemy sterować odpowiednimi komendami procesora. W takim przypadku SLIDER pozwala nam zdalnie zmieniać wartość napięcia na wyjściu analogowym.
Zakres zmian naszego wirtualnego potencjometru możemy sobie dowolnie ustawić w zakresie od 0 do 9999. Jak prawidłowo dobrać zakres pracy SLIDERa do przetwornika C/A lub PWM w naszym mikrokontrolerze? To zależy jaki efekt chcemy uzyskać. Jeśli zależy nam na wykorzystaniu w pełni rozdzielczości przetwornika maksymalna wartość suwaka musi odpowiadać liczbie wynikającej z tej rozdzielczości (dla przetwornika 8 bitowego = 255, 10 bitowego 1024, 12 bitowego 4096). Wtedy zmiana o 1 na suwaku spowoduje zmianę na wyjściu analogowym o jedną jednostkę napięcia wyjściowego przetwornika  =  Umax/2rozdzielczość
Możemy jednak tak ustawić SLIDER by wybrana jego wartość bezpośrednio odpowiadała napięciu na wyjściu mikroprocesora. Weźmy dla przykładu przetwornik C/A o napięciu maksymalnym 5 V i rozdzielczości 10 bitów Możemy więc ustawić wartość maksymalną SLIDERa na
  • 5 i uzyskamy regulację co 1 V
  • 50  uzyskamy regulację co 0,1 V
  • 500 da nam możliwość zmiany co 10 mV
  • 5000 powinno pozwolić na zmianę napięcia wyjściowego co 1 mV
Ale przetwornik 10 bitowy pozwala na zmianę co  5 mV (dla napięcia wyjściowego 5V)  więc ostatnie ustawienie nie ma większego sensu. By uzyskać rozdzielczość 1mV musielibyśmy zastosować co najmniej 12 bitowy przetwornik C/A. Dodatkowo, zmiany wartości na suwaku nie będą dokładnie odpowiadały zmianom napięcia na wyjściu przetwornika. 5V/1024 jest równe 0,0048828125 a nie 0,005 więc nie uda nam się dokładnie skalibrować wskazań SLIDERa z napięciem wyjściowym. Oczywistym jest, iż w naszym programie musimy wprowadzić procedurę przeliczania wskazań potencjometru na odpowiednią liczbę sterującą przetwornikiem C/A tak by uzyskać maksymalnie zbliżenie obu wartości.
Praktyczne aspekty konfiguracji tego widgeta będą jeszcze omawiane w rozdziale Przykłady.

SLIDER jako wskaźnik

Piękne jest to, że i ten widget jest elementem dwukierunkowym. Może nie tak wszechstronnym jak BUTTON ale w porównaniu z rzeczywistym potencjometrem bije go na głowę.
Standardowo możemy dowolnie zmieniać kolor SLIDERa komendą
Blynk.setProperty(V1, "color", _RED)
oraz tekst na etykiecie
Blynk.setProperty(V1, "label", "jakis tekst");
Najciekawszym jednak efektem możliwym do uzyskania jest analogowy wskaźnik liniowy
Wysyłając jakąś wartość na pin wirtualny przyłączony do potencjometru możemy sterować położeniem suwaka  standardową procedurą
Blynk.virtualWrite(V1, liczba);
Co w efekcie daje nam bardzo użyteczny wskaźnik


Inne właściwości

Slider jest widgetem o zmiennym kształcie i tak naprawdę mamy dwa takie same elementy – ale o kierunku poziomym i pionowym.
Ważną funkcją elementu jest możliwość zdalnego ustawiania zakresów minimum i maksimum. Jest to wygodny sposób wstępnej kalibracji parametrów pracy widgetu lepszy  niż ustawianie ich ręcznie w aplikacji. Do tego celu służą specjalne funkcje
Blynk.setProperty(V1, "min", -55);
Blynk.setProperty(V1, "max", 102);
Wśród zbioru widgetów nie ma odpowiednika potencjometru obrotowego. A szkoda.

Z doświadczenia mogę stwierdzić, iż widget SLIDER jest baaardzo użytecznym elementem szczególnie w układach testowych i prototypowych. Zamiast instalować jakikolwiek potencjometr do płynnej zamiany parametrów w programie dużo szybciej i taniej jest to zrobić BLYNKowym potencjometrem. I jeszcze odczytać na nim bieżącą wartość obserwowanej wielkości. I wszystko zdalnie i bez jednego choćby lutowania. Po prostu wirtualna elektronika na wyciągnięcie ręki.
23

Brak komentarzy:

Prześlij komentarz