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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-05-30T18:43:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=18500&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-05-30T18:43:13+01:00</updated>
<published>2017-05-30T18:43:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=190016#p190016</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=190016#p190016"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=190016#p190016"><![CDATA[
Przerzutnik shmitta powinien sporo poprawić. Wstaw do tesu bramkę, np. z CD4093 ( będziesz miał zanegowany sygnał) i zobacz czy jest poprawa.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 26 minutach ]</span></strong><br /><br />O, teraz dopiero zauważyłem, że napięcie jest w granicach 300mV. Warto by było go podciągnąć jakimś tranzystorkiem i dopiero badać to może nawet shmitt by nie był potrzebny, bo piny uC też mają lekką histerezę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 30 maja 2017, o 18:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[thcmaniac]]></name></author>
<updated>2017-05-30T18:31:30+01:00</updated>
<published>2017-05-30T18:31:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=190013#p190013</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=190013#p190013"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=190013#p190013"><![CDATA[
Zrobiłem dziś test tak wygląda przebieg z tacho wentylatora: <br /><a href="https://obrazkiforum.atnel.pl/981/853db229765cde6c82f3458840719634.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/981/853db229765cde6c82f3458840719634.jpg" alt="Obrazek" /></a><br />Przebieg widać jaki jest.. więc nie dziwne że są różne wartości dla zbocza narastającego i opadającego.<br /><br />a tak wygląda przebieg po wpięciu między masę a tacho kondesator 100nF:<br /><a href="https://obrazkiforum.atnel.pl/981/18c83e0bb41f53f195fabd5ecac41d32.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/981/18c83e0bb41f53f195fabd5ecac41d32.jpg" alt="Obrazek" /></a><br /><br />Takie sama zależność występuje dla różnych wentylatorów (czy to went za 10zł czy za 80zł) i dla róznych napięć.<br /><br />Po dodaniu kondensatora obroty przypominają rzeczywistość, teraz zostało zminimalizować czas kiedy przerwania są wyłączone i prawdopodobnei w celu poprawienia dokłądności nie będe zliczał impulsów ale obliczał czas między nimi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=981">thcmaniac</a> — 30 maja 2017, o 18:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2017-05-30T05:45:18+01:00</updated>
<published>2017-05-30T05:45:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189966#p189966</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189966#p189966"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189966#p189966"><![CDATA[
obroty sie mogą różnić ponieważ wyłączasz przerwanie i wtedy obrotów nie zlicza tak mi się wydaje. zacznij od wyrzucenia mniejszej ilości na serial i sprawdź czy wtedy obroty są prawidłowe czy nie. <br /><br /><br />Wysłane z iPad za pomocą Tapatalk<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 30 maja 2017, o 05:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[thcmaniac]]></name></author>
<updated>2017-05-29T20:39:05+01:00</updated>
<published>2017-05-29T20:39:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189955#p189955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189955#p189955"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189955#p189955"><![CDATA[
Możliwość mam postaram się to zrobić jutro dla np 3 went i 3 różnych napięć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=981">thcmaniac</a> — 29 maja 2017, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-05-29T20:35:56+01:00</updated>
<published>2017-05-29T20:35:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189954#p189954</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189954#p189954"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189954#p189954"><![CDATA[
Masz możliwość podejrzeć sygnał z wentylatora na oscyloskopie? Myślę, że to by wiele wyjaśniło...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 29 maja 2017, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[thcmaniac]]></name></author>
<updated>2017-05-29T18:42:15+01:00</updated>
<published>2017-05-29T18:42:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189947#p189947</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189947#p189947"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189947#p189947"><![CDATA[
Dokładnie jest to otwarty kolektor. Podpinam ten przewód rezystorem podciągającym 10k do lini 5V ( testowałem różne rezystory od 1k do 50k i co się okazuje że obroty w zależności od rezystora mogą różnić się o ok 70%...)<br /><br /><br />Zrobiłem taki test że: pomiar tylko dla 1 went i jak wywalę detekcje który pin zakomunikował przerwanie to obroty skaczą o ok 10% w górę (wygląda na to że kilka lini kodu/prostych obliczeń wprowadza znaczne zaburzenia). Po wywaleniu wykrywania pinu wprowadziłem detekcje zbocza opadającego/narastającego by sygnał nie był zliczany 2 razy (np: if(!(PIND &amp; (1&lt;&lt;PD2))) ). Różnica rpm zależności od detekcji zbocza (narastające/opadające) sięga ok 50%... i nie potrafię zrozumieć dlaczego tak się dzieje, przecież liczba zboczy powinna być identyczna +/-2<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=981">thcmaniac</a> — 29 maja 2017, o 18:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-05-29T17:02:13+01:00</updated>
<published>2017-05-29T17:02:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189944#p189944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189944#p189944"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189944#p189944"><![CDATA[
A jak kolega podpina wyjście impulsatora do procka/arduino? Jak dobrze pamiętam impulsator (czyli żółty przewód z wentyla) jest wyjściem typu otwarty kolektor czyli do prawidłowego działania trzeba ten pin podciągnąć do zasilania rezystorkiem, i tu wewnętrzny rezystorek podciągający w uC może być za mały...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 29 maja 2017, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2017-05-28T20:54:13+01:00</updated>
<published>2017-05-28T20:54:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189916#p189916</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189916#p189916"/>
<title type="html"><![CDATA[Re: PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189916#p189916"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 28 maja 2017, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[thcmaniac]]></name></author>
<updated>2017-05-29T03:35:41+01:00</updated>
<published>2017-05-28T20:38:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189915#p189915</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189915#p189915"/>
<title type="html"><![CDATA[PCINT - Atmega/Arduino - zlicza niedokładnie +/- 20%]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18500&amp;p=189915#p189915"><![CDATA[
Witam wszystkich!<br /><br />Mam problem z przerwaniami PCINT. Używam ich do zliczania impulsów ( do wyświetlania obrotów wentylatora komputerowego). Problem że wynik który otrzymuje jest oo ok 20% inny niż rzeczywiste obroty. Tak samo obroty bardzo skaczą przy ok 1.5k skoki są rzędu 200+/- wciągu 1 sekundy, gdzie wentylator kręci się praktycznie tak samo +/- 10rpm.<br /><br />Prosiłbym o weryfikacje kodu i pomoc w znalezieniu błędu....<br /><br />Przerwania PCINT realizowalem na podstawie poradników z blogu Mirka.<br /><br /><br /><br />[syntax=c]//read RPM PCINT by Asica10<br /><br />//-----Define variable for measure RPM-----<br />volatile int rpm_counter_1 = 0;<br />volatile int rpm_counter_2 = 0;<br />volatile int rpm_counter_3 = 0;<br /><br />volatile uint8_t interrupt_pin = 0xFF; // Variable used to check where an interrupt occurs<br /><br />int rpm_1 = 0;<br />int rpm_2 = 0;<br />int rpm_3 = 0; <br /><br />unsigned long previous_millis = 0;<br /><br />//Defines the structure for multiple fans and <br />//their dividers <br />typedef struct{<br />char fantype;<br />unsigned int fandiv; }fanspec;<br /><br />//Fans definitions<br />//Varible used to select the fan and it's divider,<br /><br />fanspec fanspace&#91;3&#93;={{0,1},{1,2},{2,8}}; char fan = 2; //set 1 for unipole hall effect sensor, 2 for bipole hall effect sensor<br /><br /><br />void setup() {<br />PCICR |= (1&lt;&lt;PCIE2); // define interrupt on PCIE2 - PCINT&#91;23:16&#93;<br />PCMSK2 |= (1&lt;&lt;PCINT18) | (1&lt;&lt;PCINT19) | (1&lt;&lt;PCINT20); // Permission to interrupt<br /><br />Serial.begin(9600);<br /><br />sei(); // Global Interrupt Enable<br />}<br /><br />void loop() {<br /><br />if (millis() - previous_millis == 1000) //Update every one second<br />{ <br /><br />cli(); // Global Interrupt Disable - when calculeting<br /><br />rpm_1 = ((rpm_counter_1 * 60) / fanspace&#91;fan&#93;.fandiv); // Calculating rpm_1 using dividers<br />rpm_2 = ((rpm_counter_2 * 60) / fanspace&#91;fan&#93;.fandiv); // Calculating rpm_2 using dividers<br />rpm_3 = ((rpm_counter_3 * 60) / fanspace&#91;fan&#93;.fandiv); // Calculating rpm_3 using dividers<br /><br /><br />Serial.print(&quot;RPM_1 =\t&quot;); //print &quot;RPM&quot; and tab.<br />Serial.print(rpm_1); // print the rpm value.<br />Serial.print(&quot;\t Hz_1=\t&quot;); //print &quot;Hz&quot;.<br />Serial.println(rpm_counter_1); // print frequency value<br /><br />Serial.print(&quot;RPM_2 =\t&quot;); //print &quot;RPM&quot; and tab.<br />Serial.print(rpm_2); // print the rpm value.<br />Serial.print(&quot;\t Hz_2=\t&quot;); //print &quot;Hz&quot;.<br />Serial.println(rpm_counter_2); // print frequency value<br /><br />Serial.print(&quot;RPM_3 =\t&quot;); //print &quot;RPM&quot; and tab.<br />Serial.print(rpm_3); // print the rpm value.<br />Serial.print(&quot;\t Hz_3=\t&quot;); //print &quot;Hz&quot;.<br />Serial.println(rpm_counter_3); // print frequency value<br /><br />rpm_counter_1 = 0; //Restart counter<br />rpm_counter_2 = 0;<br />rpm_counter_3 = 0;<br /><br />previous_millis = millis(); <br />sei(); // Global Interrupt Enable<br />}<br />}<br /><br /><br />ISR(PCINT2_vect) { // interrupt vector<br /><br />//-----Checking which PIN reported interrupt-----<br />uint8_t changedbits = PIND ^ interrupt_pin;<br />interrupt_pin = PIND;<br /><br />if(changedbits &amp; (1 &lt;&lt; PD2))<br />{<br />rpm_counter_1++;<br />}<br />if(changedbits &amp; (1 &lt;&lt; PD3))<br />{<br />rpm_counter_2++;<br />}<br />if(changedbits &amp; (1 &lt;&lt; PD4))<br />{<br />rpm_counter_3++;<br />}<br /><br />}[/syntax]<br /><br />Skracałem czas kiedy przerwania są wyłączone po przez wyrzucenie wyswietlanie w serial monitorze, poza obszar kodu gdzie przerwania są zablokowane, ale nie na wiele się to zdało.<br /><br />Dziwne jest także coś takiego, że jak np nie podłacze nic pod pin PD3 (PCINT19) to i tak wyświetlają się jakieś wartości. Zatrzymanie wentylatora na PD2 skutkuje, że dopiero wtedy nie ma żadnych przerwań na tych pinach.<br /><br />Z góry bardzo dziękuje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=981">thcmaniac</a> — 28 maja 2017, o 20:38</p><hr />
]]></content>
</entry>
</feed>