<?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=4&amp;t=8613&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-29T22:53:01+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8613&amp;mode</id>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2014-10-29T22:53:01+01:00</updated>
<published>2014-10-29T22:53:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=101466#p101466</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=101466#p101466"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=101466#p101466"><![CDATA[
Według mnie to co kolega SylwekK napisał jest najlepszą opcją.. Wystarczy napisać:<br /><br />[syntax=c]if(!Timer1){<br />                        Timer1 = 1;<br />                        wynik = pomiar(PA0);<br />                        OCR1B = 100+((wynik/1024.0)*400);<br />                }[/syntax]<br /><br /><br />Wszystko powinno ładnie i szybko działać. Można by wartość 400/1024 obliczyć już wcześniej i zapisać od razu wartość a nie iloczyn, procesor będzie miał mniej liczenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 29 paź 2014, o 22:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Espablo]]></name></author>
<updated>2014-10-28T21:00:55+01:00</updated>
<published>2014-10-28T21:00:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=101274#p101274</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=101274#p101274"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=101274#p101274"><![CDATA[
To może i ja jeszcze coś dodam. Jest na stronie <a href="http://arduino.cc/en/reference/map"  class="postlink">Arduino</a> pewna funkcja, która przelicza wartości z jednego zakresu na inny np: od 0-1023 na taki 0-255<br />[syntax=c]long map(long x, long in_min, long in_max, long out_min, long out_max)<br />{<br />  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;<br />}[/syntax]<br /><br />A używamy jej np tak podano na stronie Arduino:<br />[syntax=c]/* Map an analog value to 8 bits (0 to 255) */<br />void setup() {}<br /><br />void loop()<br />{<br />   int val = analogRead(0);<br />   val = map(val, 0, 1023, 0, 255);<br />   analogWrite(9, val);<br />}[/syntax]<br /><br />Jak tego używać? Zakładamy, że pełny obrót to od 0 do 1023 ADC, a ty potrzebujesz przeliczyć ten pełny zakres i mieć zakres od 100 do 500.<br /><br />Piszemy:<br />[syntax=c]if(!Timer1){<br /><br />                        Timer1 = 1;<br />                        wynik = pomiar(PA0);<br />                        wynik = map(wynik, 0, 1023, 100, 500);<br />                        if(wynik&lt;100) wynik=100;    // tą linijkę i następną myślę, że można usunąć<br />                        if(wynik&gt;500) wynik=500;<br />                        OCR1B = wynik;<br /><br />                }[/syntax]<br /><br />Używam tego też do przeliczania ADC na napięcie. <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=1897">Espablo</a> — 28 paź 2014, o 21:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-09-23T19:17:46+01:00</updated>
<published>2014-09-23T19:17:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96489#p96489</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96489#p96489"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96489#p96489"><![CDATA[
...widzisz i nie grzmisz...<br /><br />zakres=400,  w zasadzie 100-500, ale to później<br />1023/zakres=2.5575 z tego wynika, że jakikolwiek wynik podzielony przez to 2.5575 z wyjścia ADC o zakresie 0-1023 da w efekcie śliczną wartość z zakresu 0-400, a teraz dodaj do tego na końcu 100 i będzie zakres 100-500.<br />Trudne było ?? ...nie ma za co <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> możesz kliknąć pomógł.<br />Ewentualna zamiana liczb zmiennoprzecinkowych na całkowite była poruszana setki razy, a jak nie wiesz jak to zrobić to korzystaj z float póki nie przetrawisz o co tu chodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 23 wrz 2014, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-23T17:22:50+01:00</updated>
<published>2014-09-23T17:22:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96473#p96473</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96473#p96473"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96473#p96473"><![CDATA[
Witam,<br /><br />Kolega najprościej to sobie stablicować:<br /><br />main.h:<br />[syntax=c]#define PWM_wypelnienie(a) (pgm_read_byte(&amp;PWM_tablica_stanu&#91;a&#93;))[/syntax]<br /><br />main.c:<br />[syntax=c]const uint8_t PWM_tablica_stanu&#91;&#93; PROGMEM = {<br />  0,  1,  1,  1,  1,  2,  2,  3,  3,  3,  4,  4,  5,  5,  5,  6,  6,  7,<br />  7,  7,  8,  8,  8,  9,  9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14,<br /> 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, 19, 19, 20, 20, 21,<br /> 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 25, 25, 26, 26, 26, 27, 27, 28,<br /> 28, 28, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 33, 33, 33, 34, 34, 35,<br /> 35, 35, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 40, 40, 40, 41, 41, 42,<br /> 42, 42, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, 47, 47, 47, 48, 48, 49,<br /> 49, 49, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 54, 54, 54, 55, 55, 56,<br /> 56, 56, 57, 57, 58, 58, 58, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 63,<br /> 63, 63, 64, 64, 65, 65, 65, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 70,<br /> 70, 70, 71, 71, 72, 72, 72, 73, 73, 74, 74, 74, 75, 75, 75, 76, 76, 77,<br /> 77, 77, 78, 78, 79, 79, 79, 80, 80, 81, 81, 81, 82, 82, 82, 83, 83, 84,<br /> 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, 88, 88, 89, 89, 90, 90, 90, 91,<br /> 91, 91, 92, 92, 93, 93, 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, 97, 98,<br /> 98, 98, 99, 99,100,100,100,101,101,102,102,102,103,103,104,104,104,105,<br />105,105,106,106,107,107,107,108,108,109,109,109,110,110,111,111,111,112,<br />112,112,113,113,114,114,114,115,115,116,116,116,117,117,118,118,118,119,<br />119,120,120,120,121,121,121,122,122,123,123,123,124,124,125,125,125,126,<br />126,127,127,127,128,128,128,129,129,130,130,130,131,131,132,132,132,133,<br />133,134,134,134,135,135,135,136,136,137,137,137,138,138,139,139,139,140,<br />140,141,141,141,142,142,143,143,143,144,144,144,145,145,146,146,146,147,<br />147,148,148,148,149,149,150,150,150,151,151,151,152,152,153,153,153,154,<br />154,155,155,155,156,156,157,157,157,158,158,158,159,159,160,160,160,161,<br />161,162,162,162,163,163,164,164,164,165,165,165,166,166,167,167,167,168,<br />168,169,169,169,170,170,171,171,171,172,172,173,173,173,174,174,174,175,<br />175,176,176,176,177,177,178,178,178,179,179,180,180,180,181,181,181,182,<br />182,183,183,183,184,184,185,185,185,186,186,187,187,187,188,188,188,189,<br />189,190,190,190,191,191,192,192,192,193,193,194,194,194,195,195,195,196,<br />196,197,197,197,198,198,199,199,199,200,200,201,201,201,202,202,203,203,<br />203,204,204,204,205,205,206,206,206,207,207,208,208,208,209,209,210,210,<br />210,211,211,211,212,212,213,213,213,214,214,215,215,215,216,216,217,217,<br />217,218,218,218,219,219,220,220,220,221,221,222,222,222,223,223,224,224,<br />224,225,225,225,226,226,227,227,227,228,228,229,229,229,230,230,231,231,<br />231,232,232,233,233,233,234,234,234,235,235,236,236,236,237,237,238,238,<br />238,239,239,240,240,240,241,241,241,242,242,243,243,243,244,244,245,245,<br />245,246,246,247,247,247,248,248,248,249,249,250,250,250,251,251,252,252,<br />252,253,253,254,254,254,255,255,255,256,256,257,257,257,258,258,259,259,<br />259,260,260,261,261,261,262,262,263,263,263,264,264,264,265,265,266,266,<br />266,267,267,268,268,268,269,269,270,270,270,271,271,271,272,272,273,273,<br />273,274,274,275,275,275,276,276,277,277,277,278,278,278,279,279,280,280,<br />280,281,281,282,282,282,283,283,284,284,284,285,285,286,286,286,287,287,<br />287,288,288,289,289,289,290,290,291,291,291,292,292,293,293,293,294,294,<br />294,295,295,296,296,296,297,297,298,298,298,299,299,300,300,300,301,301,<br />301,302,302,303,303,303,304,304,305,305,305,306,306,307,307,307,308,308,<br />308,309,309,310,310,310,311,311,312,312,312,313,313,314,314,314,315,315,<br />316,316,316,317,317,317,318,318,319,319,319,320,320,321,321,321,322,322,<br />323,323,323,324,324,324,325,325,326,326,326,327,327,328,328,328,329,329,<br />330,330,330,331,331,331,332,332,333,333,333,334,334,335,335,335,336,336,<br />337,337,337,338,338,338,339,339,340,340,340,341,341,342,342,342,343,343,<br />344,344,344,345,345,346,346,346,347,347,347,348,348,349,349,349,350,350,<br />351,351,351,352,352,353,353,353,354,354,354,355,355,356,356,356,357,357,<br />358,358,358,359,359,360,360,360,361,361,361,362,362,363,363,363,364,364,<br />365,365,365,366,366,367,367,367,368,368,368,369,369,370,370,370,371,371,<br />372,372,372,373,373,374,374,374,375,375,376,376,376,377,377,377,378,378,<br />379,379,379,380,380,381,381,381,382,382,383,383,383,384,384,384,385,385,<br />386,386,386,387,387,388,388,388,389,389,390,390,390,391,391,391,392,392,<br />393,393,393,394,394,395,395,395,396,396,397,397,397,398,398,399<br />};[/syntax]<br /><br />Teraz wystarczy takie coś:<br />[syntax=c]OCR1B = (PWM_wypelnienie(wynik) + 100);[/syntax]<br /><br />Plus 100 jest aby było od 100 -&gt; 500.<br />Generalnie jak byś chciał sobie takie tablice tworzyć to polecam MkAvrCalculator w pełnej wersji. Wersja free ma bodajże ograniczenie do 32 elementów - ale mogę się mylić.<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 23 wrz 2014, o 17:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-09-23T16:54:06+01:00</updated>
<published>2014-09-23T16:54:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96471#p96471</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96471#p96471"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96471#p96471"><![CDATA[
Nic nie mogę wymyśleć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1439">kuba</a> — 23 wrz 2014, o 16:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-09-23T06:39:48+01:00</updated>
<published>2014-09-23T06:39:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96427#p96427</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96427#p96427"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96427#p96427"><![CDATA[
Witam<br /><div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Nie powiem Ci od razu jak to ma wyglądać...<br /></div><br />...może ja troszkę narysuję  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> :<br /><a href="http://forum.atnel.pl/_obrazki/o/826/e03ea34dde051be3109a9660fbcb8867.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/826/e03ea34dde051be3109a9660fbcb8867.JPG" alt="Obrazek" /></a><br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 23 wrz 2014, o 06:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-09-23T01:37:33+01:00</updated>
<published>2014-09-23T01:37:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96425#p96425</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96425#p96425"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96425#p96425"><![CDATA[
@kuba, rany to jest matematyka na poziomie podstawówki. Weź na logikę - potrzebny Ci zakres od 100-500 czyli w sumie 400 jednostek + przesunięcie 100 jednostek. I teraz najważniejsze: pomyśl przez chwilę co zrobić aby, np. wartość ADC z zakresu 0-1023 dał po wyliczeniach (tu dosłownie dwa działania matematyczne, a w sumie to nawet jedno wystarczy, bo drugie można zastąpić stałą...) od  0-400 czyli dla maksymalnej wartości 1023 jakaś zmienna wyjściowa ma przyjąć wartość 400 (a oczywiście pośrednie wartości odpowiednio proporcjonalnie mniej). Teraz do wyniku wystarczy dodać te 100 jednostek przesunięcia i masz zakres 100-500. Nie powiem Ci od razu jak to ma wyglądać, bo się nie nauczysz  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Chcę Cię zmotywować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 23 wrz 2014, o 01:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-09-23T00:07:56+01:00</updated>
<published>2014-09-23T00:07:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96424#p96424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96424#p96424"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96424#p96424"><![CDATA[
Chciałabym taki joystick coś jako tutaj <!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=LIedWYZ6RuU" >https://www.youtube.com/watch?v=LIedWYZ6RuU</a><!-- m --> tylko to nie będzie od100 do 500<br />ale to się  może zmieniać 200 do 300 ......  a to mi niepomoże podzielicz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1439">kuba</a> — 23 wrz 2014, o 00:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Maly]]></name></author>
<updated>2014-09-22T23:32:57+01:00</updated>
<published>2014-09-22T23:32:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96423#p96423</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96423#p96423"/>
<title type="html"><![CDATA[Re: ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96423#p96423"><![CDATA[
Możliwe, że zasilacz układ napięciem 5V, a napięcie odniesienia masz 1,1V bądź 2,56V. W takim wypadku będzie dostępne jedynie ~1/4 obrotu lub połowa. By był cały obrót ustaw napięcie odniesienia avcc z kondensatorem podpiętym do gnd, ewentualnie zastosuj dzielnik napięcia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />@EDIT<br />A, to nie będzie to <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Przepraszam, teraz zauważyłem chyba gdzie leży błąd, ADC 10 bitowy ma zakres 0-1023, w twoim kodzie linia  &quot;if(wynik&gt;500) wynik=500;&quot; po prostu nie przyjmuje połowy wartości (od połowy obrotu), jeśli chcesz uzyskać wynik np. 0-511 to po prostu podziel wynik na dwa. <br />Jeśli chcesz uzyskać dokładny wynik 100-500 na pełnym zakresie potencjometru to możesz zrobić coś takiego:<br />[syntax=c]wynik = pomiar(PA0);<br />wynik = (wynik * 100 / 256) + 100<br />OCR1B = wynik;[/syntax]<br />Tylko w takim wypadku, zmienna wynik musi być minimalnie 32bitowa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4814">Maly</a> — 22 wrz 2014, o 23:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kuba]]></name></author>
<updated>2014-09-22T23:13:49+01:00</updated>
<published>2014-09-22T23:13:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96422#p96422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96422#p96422"/>
<title type="html"><![CDATA[ADC i PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8613&amp;p=96422#p96422"><![CDATA[
Witam<br /><br />Chciałbym potencjometrem sterować 16 bitowy PWM ale od wartości 100 do 500<br />ale jak używam 10 bitowy ADC tak nie moge użyć  całego obrotu <br />tak to nie działa<br />[syntax=c]if(!Timer1){<br />Timer1 = 1;<br />wynik = pomiar(PA0);<br />if(wynik&lt;100) wynik=100;<br />if(wynik&gt;500) wynik=500;<br />OCR1B = wynik;<br />}[/syntax]<br /><br />jak to zrobić aby użyć  całego obrotu ? jakis sposób obliczania<br /><br /><br />dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1439">kuba</a> — 22 wrz 2014, o 23:13</p><hr />
]]></content>
</entry>
</feed>