<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=12&amp;t=21859&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-01-13T11:05:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=21859&amp;mode</id>
<entry>
<author><name><![CDATA[grego]]></name></author>
<updated>2019-01-13T11:05:48+01:00</updated>
<published>2019-01-13T11:05:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215750#p215750</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215750#p215750"/>
<title type="html"><![CDATA[Re: Jak przeskalować wartości ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215750#p215750"><![CDATA[
Spróbowałem z tą funkcją, ale mam pewien problem z wynikiem, górny zakres się zgadza, ale dolny się rozjeżdża.<br /><br />[syntax=basic4gl]Declare Function Mapu2(byval U2 As Integer , Byval U2min As Integer , Byval U2max As Integer , Byval U1min As Integer , Byval U1max As Integer) As Integer   <br /><br />Dim U1 As Integer<br />Dim U1min As Integer<br />Dim U1max As Integer<br />                                          '<br />Dim U2 As Integer<br />Dim U2min As Integer<br />Dim U2max As Integer<br /><br />Dim U3 As Integer<br />Dim U3min As Integer<br />Dim U3max As Integer<br />  ' Deklaracja zmiennych (zmienne oprócz U1, U2, U3 to zmienne sczytywane z eepromu )<br /><br />Do<br />  ' program <br />U1 = Getadc(1)<br />U2 = Getadc(3)<br />U2 = Mapu2(u2 , U2min , U2max , U1min , U1max)<br />U3 = Getadc(5)<br />..<br />end<br /><br />Function Mapu2(byval U2 As Integer , Byval U2min As Integer , Byval U1max As Integer , Byval U1min As Integer , Byval U1max As Integer) As Integer<br />Local Alfa As Long<br />Local Beta As Long<br />Local Gamma As Long<br />Local Delta As Long<br />Local Epsilon As Long<br />Local Dzeta As Long<br /><br />Alfa = U2 - U2min<br />Beta = U1max - U1min<br />Gamma = U2max - U2min<br />Delta = Alfa * Beta<br />Epsilon = Delta / Gamma<br />Dzeta = Epsilon + U1min<br />Mapu2 = Dzeta<br />  'fx = (U2 - U2min) *(U1max - U1min) /(U2max - U2min) + U1min<br /><br />End Function[/syntax]<br /><br />Gdzie tkwi błąd?<br /><br />Edit:<br />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 %.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20142">grego</a> — 13 sty 2019, o 11:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grego]]></name></author>
<updated>2019-01-11T06:24:49+01:00</updated>
<published>2019-01-11T06:24:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215682#p215682</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215682#p215682"/>
<title type="html"><![CDATA[Re: Jak przeskalować wartości ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215682#p215682"><![CDATA[
O w razie czego zawsze mogę wbić kołek ograniczający ruch potencjometru i też będzie dobrze   <img src="https://forum.atnel.pl/images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="Pan Zielony" />.<br /><br />Pan Mirek nie pamięta gdzie ów cenne porady mogą się znajdować?<br /><br />A coś znalazłem:<br />[syntax=basic4gl]int map( int x, int in_min, int in_max, int out_min, int out_max ) {<br />int a = (x-in_min)*(out_max-out_min);<br />int b = (in_max-in_min);<br />return ( a + (b/2)) / b + out_min;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20142">grego</a> — 11 sty 2019, o 06:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-01-11T02:59:13+01:00</updated>
<published>2019-01-11T02:59:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215679#p215679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215679#p215679"/>
<title type="html"><![CDATA[Re: Jak przeskalować wartości ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215679#p215679"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />jak przy okazji stracisz połowę rozdzielczości adc to też tak zrobisz?<br /></div><br /><br />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 ....<br /><br />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<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 sty 2019, o 02:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grego]]></name></author>
<updated>2019-01-10T21:50:14+01:00</updated>
<published>2019-01-10T21:50:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215673#p215673</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215673#p215673"/>
<title type="html"><![CDATA[Re: Jak przeskalować wartości ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215673#p215673"><![CDATA[
Oj ten siłownik to duuże uproszczenie bo cały projekt jest bardziej wyrafinowany <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20142">grego</a> — 10 sty 2019, o 21:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-01-10T21:32:27+01:00</updated>
<published>2019-01-10T21:32:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215672#p215672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215672#p215672"/>
<title type="html"><![CDATA[Re: Jak przeskalować wartości ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215672#p215672"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />A nie da się &quot;analogowo&quot; tego rozwiązać? Tj w układzie ze wzmacniaczami operacyjnymi?<br /></div><br />O matko jerychejska .... no po jasny gwint ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to wzmacniaczami zrobić skoro można programowo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> po prostu zgroza <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... nie po to bierzemy procka w łapki, żeby jeszcze doklejać na PCB 100 innych WO <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />W którymś poradniku wideo pokazuję funkcję map() <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 sty 2019, o 21:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[grego]]></name></author>
<updated>2019-01-10T18:07:13+01:00</updated>
<published>2019-01-10T18:07:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215666#p215666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215666#p215666"/>
<title type="html"><![CDATA[Jak przeskalować wartości ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21859&amp;p=215666#p215666"><![CDATA[
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.<br />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?<br /><br /><a href="https://obrazkiforum.atnel.pl/20142/dae3d37e6b2e6f6124e7d28816d62de8.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/20142/dae3d37e6b2e6f6124e7d28816d62de8.jpg" alt="Obrazek" /></a> <br /><br />Połowicznie rozwiązałem to w taki sposób:<br />[syntax=basic4gl]Dolna = U1min - U2min<br />Gorna = U3max - U1max<br />U1 = Getadc(1)<br />U2 = Getadc(3)<br />U2 = U2 + Dolna<br />U3 = Getadc(5)<br />U3 = U3 - Gorna[/syntax]<br /><br />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...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20142">grego</a> — 10 sty 2019, o 18:07</p><hr />
]]></content>
</entry>
</feed>