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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-02-02T12:39:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17509&amp;mode</id>
<entry>
<author><name><![CDATA[ostr]]></name></author>
<updated>2017-02-02T12:38:50+01:00</updated>
<published>2017-02-02T12:38:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181416#p181416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181416#p181416"/>
<title type="html"><![CDATA[Re: sterowanie serwo sg90 mini]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181416#p181416"><![CDATA[
racja, nie wiem czemu wbiłlem sobie do głowy te wartości, dziękuję bardzo<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3780">ostr</a> — 2 lut 2017, o 12:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-02-02T12:39:25+01:00</updated>
<published>2017-02-02T12:31:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181415#p181415</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181415#p181415"/>
<title type="html"><![CDATA[Re: sterowanie serwo sg90 mini]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181415#p181415"><![CDATA[
Ostatnio bawiłem się tymi serwami (2 egzemplarze z dwóch różnych źródeł) i też patrzyłem na datascheet który krąży po necie. Niestety ten dokument mija się z prawdą. Zakres impulsów to serwo ma tak jak większość od 0,6ms do 2,4ms (a nie tak jak w nocie 1ms do 2ms) Co do częstotliwości to nie jest to rygorystyczna wartość. Ja testowałem na atmedze 32A z timerem0 8bitowym ustawionym w tryb fast PWM którego częstotliwość była w granicy 30Hz (f procka 8MHz, wzór na f_PWM = fprocka/(256 * preskaler). U mnie preskaler był na 1024) i oba serwa działały bez problemu. <br /><br /><div class="quotetitle">ostr napisał(a):</div><div class="quotecontent"><br />Zatem jesli wszystko policzylem poprawnie to powinienem sterowac serwomechanizmem w zakresie wartosci zmiennej time i time 2 od 10 do 20. Tymczasem wartość 30 oznacza ustawienie sie serwomechanizmu na srodku, 10 maksymalnie w lewo, 50 maksymalnie w prawo.<br />Prosiłbym o weryfikację kodu<br /></div>I działa Ci to właściwie. Przerwanie wywołuje się co 0,05ms (1/20KHz=0,00005s) czyli tak jak pisałem max wychylenie w jedną to ok 0,6ms a u Ciebie to 0,05ms*10 daje 0,5ms; max wychylenie w drugą stronę to ok 2,4ms a u Ciebie 0,05*50 daje 2,5ms czyli wszystko w jak najlepszym porządku, nieco tylko rozciągnąłeś zakres co z uwagi na delikatny potencjometr wewnątrz serwa lepiej zawęzić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 2 lut 2017, o 12:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimg3]]></name></author>
<updated>2017-02-02T10:34:42+01:00</updated>
<published>2017-02-02T10:34:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181405#p181405</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181405#p181405"/>
<title type="html"><![CDATA[Re: sterowanie serwo sg90 mini]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181405#p181405"><![CDATA[
Po pierwsze jaki to mikrokontroler? Po drugie zmienna inter jest 16 bitowa? Jeśli tak to może być tak, że kod w przerwaniu jest tak długo wykonywany, że przerwanie nie jest wykonywane z częstotliwością 20k Hz. Druga kwestia to dlaczego 2,10,20? Przecież współczynnik wypełnienia masz od 1 ms do 2 ms przy okresie 20 ms, czyli od 5% do 10%, czyli dla zmiennej inter która maksymalnie osiąga wartość 400, będzie od 20 do 40.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8904">anonimg3</a> — 2 lut 2017, o 10:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ostr]]></name></author>
<updated>2017-02-01T23:48:37+01:00</updated>
<published>2017-02-01T23:48:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181389#p181389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181389#p181389"/>
<title type="html"><![CDATA[sterowanie serwo sg90 mini]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17509&amp;p=181389#p181389"><![CDATA[
Witam, mam pytanie odnośnie sterowania serwo tower pro sg90 mini. W datasheet jest informacja o tym, że steruje się sygnałem o wypelnieniu  1-2ms, którego okres wynosi 20ms (50 Hz ). Po napisaniu ponizszego kodu okazuje się ( lub pomylilem sie w obliczeniach ), ze wypelnienie ktorym steruje się serwo wynosi od 1 do 5 ms.<br />[syntax=c]void pwm_init(void)<br />{<br />TIMSK |= (1&lt;&lt;OCIE0);<br />TCCR0 |= (1&lt;&lt;WGM01)| (0&lt;&lt;WGM00) | (1&lt;&lt;CS01) ;<br />OCR0 = 49;<br />DDRB |= (1&lt;&lt;PB1) | (1&lt;&lt;PB2);     // wyjscia pwm serwo<br /><br />}[/syntax]<br />Ze względu na budowe projektu nie moge uzyc timera 16 bitowego, wiec sygnal PWM generowany jest programowo poprzez timer 8 bitowy. Powyzszy kod przedstawia inicjalizację timera.Tryb CTC, układ taktowany z częstotliwością 8 Mhz, preskaler ustawiony na 8 , wartość rejestru OCR0 równa 50. 8 MHz / 8 / (49+1) daje częstotliwość generowania przerwań 20 kHz. Aby osiagnac wymagany okres 50 Hz, napisalem programowy dzielnik czestotliwosci.<br /><br />[syntax=c]ISR(TIMER0_COMP_vect)<br />{<br /><br />if( inter ==0)<br />{<br />PORTB |= (1&lt;&lt;PB1);<br />PORTB |= (1&lt;&lt;PB2);<br /><br />}<br /><br />if (inter==time)<br />{<br />PORTB &amp;=~ (1&lt;&lt;PB1);<br />}<br /><br />if (inter==time2)<br />{<br />PORTB &amp;=~ (1&lt;&lt;PB2);<br />}<br /><br />inter++;<br /><br />if (inter ==400 )<br />{<br />inter=0;<br /><br />}<br /><br />}[/syntax]<br /><br />zmienna inter inkrementuje sie z kazdym wywolaniem przerwania az do wartosci 400. 20 kHz / 400 = 50 Hz. Wyjscia PB1 oraz PB2 ustawianesą przy wartosci zmiennej inter rownej 0 , a zerowane w zaleznosci od tego co wpisze do zmiennej time i time2 ( co tworzy wypelnienie sygnalu ). Zatem jesli wszystko policzylem poprawnie to powinienem sterowac serwomechanizmem w zakresie wartosci zmiennej time i time 2 od 10 do 20. Tymczasem wartość 30 oznacza ustawienie sie serwomechanizmu na srodku, 10 maksymalnie w lewo, 50 maksymalnie w prawo. <br />Prosiłbym o weryfikację kodu<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3780">ostr</a> — 1 lut 2017, o 23:48</p><hr />
]]></content>
</entry>
</feed>