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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-20T20:49:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=42&amp;t=7489&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-06-20T20:49:38+01:00</updated>
<published>2014-06-20T20:49:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85211#p85211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85211#p85211"/>
<title type="html"><![CDATA[Re: Servo - prosba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85211#p85211"><![CDATA[
Witam<br />Prawdopodobnie można, ale jako że ja nie mam doświadczenia w sterowaniu serwami poszedłbym w kierunku &quot;skalibrowania&quot; działającego programu, tym bardziej że jak stwierdził kol.<strong>mokrowski</strong> nie da się dokładnie przewidzieć położenia nowego serwa. Myślę, że jak poznasz min i max wychyłu jak również kilka pozycji pośrednich to na tej podstawie możesz zrobić sobie taki &quot;odczytywacz pozycji&quot;.<br />Zaznaczam, że jest to mój tok rozumowania i prawdopodobnie jest wiele innych metod ale ja bym próbował w ten sposób. <br />Można np. zainkludować wyśw. LCD i na bieżąco sprawdzać wartość OCRx w stosunku do położenia i dalej j.w.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 20 cze 2014, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jari17]]></name></author>
<updated>2014-06-20T18:52:27+01:00</updated>
<published>2014-06-20T18:52:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85206#p85206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85206#p85206"/>
<title type="html"><![CDATA[Re: Servo - prosba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85206#p85206"><![CDATA[
Czyli nie można obliczyć aktualnej pozycji serva na podstawie podawanego na servo sygnału?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1173">jari17</a> — 20 cze 2014, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-06-19T19:28:46+01:00</updated>
<published>2014-06-19T19:28:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85075#p85075</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85075#p85075"/>
<title type="html"><![CDATA[Re: Servo - prosba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85075#p85075"><![CDATA[
Witam<br />Jeśli Ci się do czegoś przyda to tu są moje wypociny.<br />Na pewno można to dopieścić, ale to co było mi potrzebne to osiągnąłem  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2014-04-18<br /> *      Author: Kicajek<br /> *<br /> *      sterowanie serwem<br /> *      za pomącą klawiszy<br /> *<br /> *      ATmega8 - 8MHz wew<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define KEY_PORT   PORTD<br />#define KEY_UP     (1&lt;&lt;PD0)<br />#define KEY_CENTER (1&lt;&lt;PD1)<br />#define KEY_DOWN   (1&lt;&lt;PD2)<br />#define SENSOR_OUT (1&lt;&lt;PB1)<br /><br />uint16_t up, center = 1450, down;<br />uint16_t poz_sens = 1450;<br /><br />uint8_t key_SENS(uint8_t);<br /><br />int main(void)<br />{<br />DDRB |= (1 &lt;&lt; PB1); // port serwa - wyjście<br />KEY_PORT |= KEY_UP | KEY_CENTER | KEY_DOWN; //klawisze - wejście, podciągniecie do Vcc<br /><br />/* ustawienie PWM sprzętowe 50 Hz */<br />TCCR1A = (1 &lt;&lt; COM1A1) | (1 &lt;&lt; COM1B1) | (1 &lt;&lt; WGM11); //tryb pracy licznika(15)<br />TCCR1B = (1 &lt;&lt; CS11) | (1 &lt;&lt; WGM12) | (1 &lt;&lt; WGM13); // prescaler 8<br />ICR1 = 20000; //przerwanie co 20ms<br /><br />sei();<br /><br />while (1)<br />{<br /><br />OCR1A = poz_sens; //ustawienie w poz. środkowej - 1450 ( min - 600, max - 4350 )<br /><br />if (key_SENS(KEY_UP))<br />{<br />{<br />poz_sens += 5;<br />if (poz_sens &gt; 4350)<br />poz_sens = 4350; // max wychył<br />             }<br />}<br /><br />if (key_SENS(KEY_CENTER))<br />{<br />{<br />poz_sens = center;<br />}<br />}<br /><br />if (key_SENS(KEY_DOWN))<br />{<br />{<br />poz_sens -= 5;<br />if (poz_sens &lt; 600)<br />poz_sens = 600; //minimalny wychył<br />}<br />}<br /><br />}<br />}<br /><br /><br />uint8_t key_SENS(uint8_t klawisz) // funkcja obsługi klawisza Nr...<br /><br />{<br />if (!(PIND &amp; klawisz)) {<br />_delay_ms(20);<br />if (!(PIND &amp; klawisz)) {<br />return 1;<br />}<br />}<br />return 0;<br />}<br />                     /*  I TO BY BYŁO NA TYLE */[/syntax]<br />...wszystko jest w komentarzach.<br />Naciśnięcie CENTER powoduje ustawienie na środku, UP i DOWN - trzymane - krótkimi skokami naprzód, aż do położenia skrajnego ( trochę szarpie w czasie jazdy, ale już pojechało i jest OK  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> )<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 19 cze 2014, o 19:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jari17]]></name></author>
<updated>2014-06-19T17:33:02+01:00</updated>
<published>2014-06-19T17:33:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85059#p85059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85059#p85059"/>
<title type="html"><![CDATA[Re: Servo - prosba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85059#p85059"><![CDATA[
Mikrokontroler Atmega88<br />Taktowanie zewnętrzne 8Mhz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1173">jari17</a> — 19 cze 2014, o 17:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-06-19T14:42:25+01:00</updated>
<published>2014-06-19T14:42:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85035#p85035</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85035#p85035"/>
<title type="html"><![CDATA[Re: Servo - prosba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=85035#p85035"><![CDATA[
Witam<br />Jaki uC i jaki zegar?<br /><div class="quotetitle">jari17 napisał(a):</div><div class="quotecontent"><br />Jak mogę określic kat obrotu serwa na podstawie kodu?<br /></div><br />....ja to robiłem w dość nie typowy sposób ( ? ): gdy już &quot;przywołałem do życia&quot; moje serwo wpisywałem wartości OCR1 malejąco, kompilowałem, wgrywałem i sprawdzałem gdzie się zatrzymuje.<br />Oczywiście to &quot;się zatrzymuje&quot; ma być w takim miejscu, że to Ty zatrzymujesz programowo a nie na zasadzie &quot; dalej nie da rady&quot;  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br />Jak ustaliłem OCR1 min, wtedy analogicznie dodawałem wartości do OCR i metodą prób i błędów ustaliłem min. i max. wychylenia serwa ( nawiasem mówiąc różnił się nieznacznie od obliczeń teoretycznych )<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 19 cze 2014, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jari17]]></name></author>
<updated>2014-06-18T21:27:38+01:00</updated>
<published>2014-06-18T21:27:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=84970#p84970</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=84970#p84970"/>
<title type="html"><![CDATA[Servo - prosba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7489&amp;p=84970#p84970"><![CDATA[
Tak jak w temacie. proszę o sprawdzenie kodu i ustawień obranych w nim do sterowania serva. Jak mogę określic kat obrotu serwa na podstawie kodu? <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />int main()<br />{<br />DDRB|=(1&lt;&lt;PB1)|(1&lt;&lt;PB2);//wyjscia<br /><br />//tryb pracy licznika(14) FAST PWM<br />//ustawienie prescalera na 64,<br /> TCCR1A = (1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1)|(1&lt;&lt;WGM11);<br /> TCCR1B = (1&lt;&lt;CS10)|(1&lt;&lt;CS11)|(1&lt;&lt;WGM12)|(1&lt;&lt;WGM13);<br /><br /> //ustawienie okresu na 20ms(czestotliwosc 50Mz)<br /> ICR1 = 2499;<br /><br /> while(1)<br />    {<br /><br />      OCR1A=125;<br />      _delay_ms(1000);<br />      OCR1A=187;<br />      _delay_ms(1000);<br />      OCR1A=250;   //0 degree<br />       _delay_ms(1000);<br /><br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1173">jari17</a> — 18 cze 2014, o 21:27</p><hr />
]]></content>
</entry>
</feed>