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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-06-12T06:40:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20862&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2018-06-12T06:40:02+01:00</updated>
<published>2018-06-12T06:40:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208883#p208883</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208883#p208883"/>
<title type="html"><![CDATA[Re: Dwa enkodery kwadraturowe - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208883#p208883"><![CDATA[
Jak dla mnie za mało danych odnośnie urządzenia docelowego. W swoim sterowniku obsługuje przy 16MHz łącznie 5 różnych enkoderów i żaden się nie gubi - 2 po 10 imp/obrót z max prędkością 6k/min, 2 po 1600 imp/obr z max 15obr/s, i jeden zwykły do menu 20imp/obr, który też nie ma problemu przy szybszym kręceniu.<br />Wszystko zbiega się do pewnych uproszczeń sprzętowych i zastosowanych rozwiązań programowych, ale jak wspomniałem jeśli nie wiadomo co to ma robić to można sobie gdybać.<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 12 cze 2018, o 06:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomcat65]]></name></author>
<updated>2018-06-11T23:46:57+01:00</updated>
<published>2018-06-11T23:46:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208882#p208882</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208882#p208882"/>
<title type="html"><![CDATA[Re: Dwa enkodery kwadraturowe - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208882#p208882"><![CDATA[
Do czego mają służyć te enkodery - regulacja obrotów?<br />Nie prościej użyć sprzętowego dekodera enkodera? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />W necie jest mnóstwo rozwiązań, często pojawia się układ LS7184. <br />Na wyjściu dostajesz sygnały STEP i DIR, prostsze do zliczania i operacji na nich.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15092">tomcat65</a> — 11 cze 2018, o 23:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2018-06-11T22:29:15+01:00</updated>
<published>2018-06-11T22:29:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208880#p208880</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208880#p208880"/>
<title type="html"><![CDATA[Re: Dwa enkodery kwadraturowe - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208880#p208880"><![CDATA[
Dziękuję za odpowiedzi. W obliczeniach rzeczywiście jest pomyłka za co przepraszam. Zastanawiam się nad zmniejszeniem rozdzielczości. Czy w atmedze jest możliwość sprzetowego procesowania np. co 10 przerwania ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 11 cze 2018, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mario17]]></name></author>
<updated>2018-06-11T21:47:28+01:00</updated>
<published>2018-06-11T21:47:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208875#p208875</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208875#p208875"/>
<title type="html"><![CDATA[Re: Dwa enkodery kwadraturowe - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208875#p208875"><![CDATA[
14000 obr/min to ok. 233 obr/s, przy enkoderze o rozdzielczości 12 impulsów daje sygnał na wyjściu enkodera o częstotliwości ~2,8kHz (0,35ms) a to troche za dużo jak na programowe badanie pinów, czy obsługę przerwań jeżeli w gre wchodzi wykonywanie innych zadań. Najlepiej byłoby to załatwić sprzętowo np. podając sygnał z enkoderów na wejścia T0 i T1 jako zewnętrzny sygnał taktujący dla timerów, a potem w programie co jakiś ustalony okres czasu sprawdzać rejestry TCNT tych timerów i na tej podstawie liczyć aktualną prędkość. Tylko w przypadku ATmegi32 daje to możliwość obsługi jednego enkodera z wykrywaniem kierunku obrotów lub dwóch enkoderów z brakiem informacji o kierunkach, którą jeśli sterujesz jakimś mostkiem h możesz brać z jego aktualnego wysterowania, czy ma obracać silnikiem w prawo czy lewo, więc teoretycznie możesz pominąć badanie kierunku za pomocą enkoderów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, chyba że potrzebujesz dodawania/odejmowania impulsów w zależności od kierunku to na atmedze ciężko będzie z obsługą dwóch enkoderów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3695">Mario17</a> — 11 cze 2018, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2018-06-11T21:51:10+01:00</updated>
<published>2018-06-11T21:36:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208874#p208874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208874#p208874"/>
<title type="html"><![CDATA[Re: Dwa enkodery kwadraturowe - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208874#p208874"><![CDATA[
Enkodery można obsługiwać z jednym pinem &quot;przerwaniowym&quot; najlepiej działającym na obu zboczach.<br />Oczywiście ewentualny debouncing musi być zrealizowany sprzętowo w tym przypadku.<br /><br />np:<br />[syntax=c]// INT na PB0 - w m32 może być inaczej<br />ISR(INTn_vect)<br />{<br />int16_t tmp = EncoderSteps;<br /><br />if(!(PINB &amp; (1&lt;&lt;PB0)))<br />{<br /> if(PINB &amp; (1&lt;&lt;PB1))<br /> tmp++;<br />else<br />tmp--;<br />}<br />else<br />{<br />if(PINB &amp; (1&lt;&lt;PB1))<br /> tmp--;<br />else<br />tmp++;<br />}<br /><br />EncoderSteps = tmp;<br />}[/syntax]<br />Nawet mam jakiegoś dawno nie aktualizowanego liba do tego: <!-- m --><a class="postlink" href="https://github.com/jnk0le/AVR-FAST-ENCODER" >https://github.com/jnk0le/AVR-FAST-ENCODER</a><!-- m --><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />(14k rpm / 60s) * 12  to mi wychodzi 2800 kroków/s, chyba że masz jeszcze jakąś przekładnie przed wałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 11 cze 2018, o 21:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2018-06-11T20:41:45+01:00</updated>
<published>2018-06-11T20:41:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208873#p208873</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208873#p208873"/>
<title type="html"><![CDATA[Dwa enkodery kwadraturowe - ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20862&amp;p=208873#p208873"><![CDATA[
Witam.<br />Mam pewien dylemat co do wyboru popranej implementacji obsługi enkoderów kwadraturowych.<br />Do Atmegi32 zostaną podłączone 2 enkodery kwadraturowe. Z dokumentacji wynika, że procesor ma 3 piny, które mogą pracować jako zewnętrzne wyzwolenie przerwania. Niestety liczba sygnałów, która będzie mierzona z enkoderów wynosi 4.<br />Enkoder jest zamocowany na wale silnika, którego prędkość obrotowa wynosi 14000 obr / min co daje 3,89 obr/s. Enkoder generuje 12 impulsów na obrót, więc częstotliwość zmian sygnałów kwadraturowych wynosi ~50Hz. Sam procesor będzie pracował z zewnętrznym kwarcem 16MHz, czyli czas pojedynczego taktu wynosi ok 6,3*10^(-8)[s]. Sygnał kwadraturowy zmienia się co ok 0,02[s]. <br />Z tych obilczeń wynika, że mogę zastosować timer, który będzie np. z częstotliwością 100Hz sprawdzał aktualny stan wejść 4 pinów, które będą pracowały jako normalne wejścia i na podstawie tych danych aktualizował liczniki.<br />W przypadku zastosowanie pinów jako INTx miałbym pewność, że liczniki będą poprawnie aktualizowane, ale w przypadku programowego zastosowania nie jestem pewien. Dodam, że procesor między czasie będzie wysyłał i odbierał dane przez interfejs UART oraz sterował pozostałymi 3 portami z pinami. <br />Pytanie czy takie rozwiązanie będzie poprawne? Czy może w tym przypadku istnieją jakieś alternatywne rozwiązania (może z wykorzystaniem pinów INTx), o których nie wiem? Być może rozwiązaniem jest wykorzystanie procesora, który posiada sprzętową obsługę 4 zewnętrznych przerwań INTx?<br /><br />Z góry dziękuję za wskazówki i pomoc.<br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 11 cze 2018, o 20:41</p><hr />
]]></content>
</entry>
</feed>