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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-01T14:24:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=22&amp;t=7973&amp;mode</id>
<entry>
<author><name><![CDATA[0livaw]]></name></author>
<updated>2014-08-01T14:24:04+01:00</updated>
<published>2014-08-01T14:24:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7973&amp;p=89740#p89740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7973&amp;p=89740#p89740"/>
<title type="html"><![CDATA[Re: Pomiar napięcia za pomocą AD654]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7973&amp;p=89740#p89740"><![CDATA[
Nieźle.<br />Przeglądnąłem pobieżnie twój program i niepotrzebnie używasz zmiennej typu float.<br />Pomnóż częstotliwość przez 1000 a potem podziel przez DZIELNIK i wynik masz<br />w zmiennej u, która nie musi być już typu float. Kwestia tylko odpowiedniego wyświetlenia przecinka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1304">0livaw</a> — 1 sie 2014, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krawacik3]]></name></author>
<updated>2014-08-01T14:06:18+01:00</updated>
<published>2014-08-01T14:06:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7973&amp;p=89734#p89734</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7973&amp;p=89734#p89734"/>
<title type="html"><![CDATA[Pomiar napięcia za pomocą AD654]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7973&amp;p=89734#p89734"><![CDATA[
Witam. Wczoraj odzyskałem kilka układów <a href="http://www.analog.com/static/imported-files/data_sheets/AD654.pdf"  class="postlink">AD654JN</a> ze starych sterowników silników. Układ ten to przetwornik napięcie/częstotliwość o maksymalnej częstotliwości wyjściowej 500kHz.<br />Schemat jest banalnie prosty, potrzeba tylko rezystora i kondensatora:<br /><img src="https://photos-3.dropbox.com/t/0/AAB91dqhyNJMBq8P3PEYS5xM5wVtz7ofOwM47YN8K4rJgQ/12/291832243/png/1024x768/3/1406901600/0/2/schemat%20eagle.png/aKrhpbTCpT6ZjaKtyO0pvRcmxR81WN4IrAF64BQCNRA" alt="Obrazek" /><br /><br />Mój układ był wlutowany w PCB, a zbędna część jego nóżek została obcięta, dlatego musiałem wspomóc się goldpinami wciskając je razem z nóżkami w płytkę stykową.<br /><img src="https://photos-3.dropbox.com/t/0/AABJABH6jVhR_0-TW9iJSmv9v8EeRXdH8tpjZ7yYwmuXJA/12/291832243/jpeg/1024x768/3/1406901600/0/2/DSC09808.JPG/nCdO-dSnW2s5lF8Rr1q96iXjuwVoLd8jO8od6xqhX8Q" alt="Obrazek" /><br /><img src="https://photos-4.dropbox.com/t/0/AADuE0kvqxmAp3gqw754pyG2WOHtGFo_cz4IuarFttSWEw/12/291832243/jpeg/1024x768/3/1406901600/0/2/DSC09810.JPG/Ik0hQKshMcsYuXxcu2rq7TOy2G8UmoObNWKq_fZL09o" alt="Obrazek" /><br />Potem na szybko zrobiony został dzielnik napięcia na potencjometrze wieloobrotowym 10kOhm oraz kompletny układ:<br /><img src="https://photos-3.dropbox.com/t/0/AACgW2C-zRE7e3kGodV956IQWu0R71FT3NlcLzOwkTGmTg/12/291832243/jpeg/1024x768/3/1406901600/0/2/DSC09811.JPG/bSgmjsgOTjLUv2E3ler5j_yHlGV9L1wT32YKAtc0MJI" alt="Obrazek" /><br />Wzór na f:<br /><img src="https://dl-web.dropbox.com/get/wzor.png?_subject_uid=291832243&amp;w=AAAyv54vdDYdbj14zh-SOehq2I6Ay1PgOV5x3SK-Hhsvgg" alt="Obrazek" /><br /><br />Zgodnie z w/w wzorem na f obliczyłem wartość RC*10V doświadczalnie:<br /><br />UrzeczUrzecz/frzecz<br />0,2500V0,000374251<br />0,5000V0,000375657<br />0,7500V0,000375752<br />1,0000V0,000373972<br />1,2500V0,0003747<br />1,5000V0,000373878<br />1,7500V0,000426829<br /><br />ŚREDNIA:0,000382149<br /><br />1/0,000382149=2652<br /><br />Tak więc teraz wzór na Urzecz to f/2652.<br /><br />Wyjście AD654 podpiąłem do INT0 ATMegi16, która w ciągu ok. 1 sek zlicza zbocza narastające na owym INT0. Wynik to częstotliwość, dzięki której oblicza napięcie. Obie wartości przedstawia na LCD3310 (fajna biblioteka SunRiver <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ). Kod dla ATMega16:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;pcd8544.h&quot;<br /><br />#define DZIELNIK 2652.00//Wartość RC*10<br /><br /><br /><br />uint16_t freq;//czestotliwosc<br /><br />float u;//obliczone napiecie<br /><br />char bufor &#91;10&#93;;//bufor do wyswietlania int<br /><br /><br /><br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />u = freq / DZIELNIK;//Obliczanie U na podstawie f<br />PCD_GotoXYFont(1,1);<br />PCD_Str(FONT_1X,&quot;            &quot;);//wyczysc ekran<br />PCD_GotoXYFont(1,1);//<br />PCD_Str(FONT_1X, itoa(freq,bufor,10));//wyswietl czestotliwosc<br />PCD_Str(FONT_1X,&quot;Hz&quot;);//<br />dtostrf(u,5,4,bufor);<br />PCD_GotoXYFont(1,2);//<br />PCD_Str(FONT_1X, bufor);//wyswietl napiecie<br />PCD_Str(FONT_1X,&quot;V&quot;);//<br /><br /><br /><br /><br />PCD_Upd();//odswież ekran<br />freq = 0;//zeruj czestotliwosc<br /><br />}<br /><br />ISR(INT0_vect){<br />freq++;//inkrementuj czestotliwosc<br />}<br /><br /><br /><br /><br />int main(void){<br /><br />TCCR1B |=(1&lt;&lt;WGM12);//<br />TCCR1B |=(1&lt;&lt;CS12)|(1&lt;&lt;CS10);//TIMER1, CTC<br />OCR1A = 3906;//1Hz<br />TIMSK |=(1&lt;&lt;OCIE1A);//<br /><br />MCUCR |= (1&lt;&lt;ISC00) | (1&lt;&lt;ISC01);//PRZERWANIE NA INT0, ZBOCZE NARASTAJACE<br />GICR |= (1&lt;&lt;INT0);//WŁĄCZ PRZERWANIE INT0<br /><br />sei();//Zezwól na przerwania<br /><br />DDRD = 0b00000000;//INT0-WEJSCIE<br />PORTD |= (1&lt;&lt;PD2);//INT0-PULLUP<br />DDRB = 0b00000010;//PB1-WYJSCIE<br />PORTD |= (1&lt;&lt;PB1);<br /><br />PCD_Ini();  // inicjacja LCD<br />    PCD_Contr(220);  // kontrast<br />    PCD_Clr();//Czyść ekran<br /><br /><br />    while(1){<br /><br />    }<br /><br /><br /><br />}[/syntax]<br /><br /><br />Wykonałem też pomiary napięcia rzeczywistego i obliczonego:<br /><img src="https://photos-2.dropbox.com/t/0/AACOYOTepcYYCouI-42MSBxLEANRQKMAtIcFqjV-DPnsOA/12/291832243/png/1024x768/3/1406901600/0/2/obliczenia.PNG/qOWfILUy03MyrjMs0p3NCIfKl5MlkBEuBNj8_hdD1SE" alt="Obrazek" /><br />A tytaj wykres:<br /><img src="https://photos-4.dropbox.com/t/0/AACkuI26rzOw_OWxaMtZXstzLphbz_mm4Ey-UAqBF-i4vw/12/291832243/png/1024x768/3/1406901600/0/2/wykres.PNG/x7_QfoTM5UAkEBHLinE8NBMDYTH16dkvoa9YKZrFSpM" alt="Obrazek" /><br />Na wykresie widać, że napięcie rzeczywiste nie ma charakterystyki liniowej-nie miałem innego sposobu mierzenia częstotliwości niż wejście audio PC.<br />Błąd pomiaru jest rzędu 0.1% co jest dla mnie zaskoczeniem ze względu na m.in. wykorzystaniu RC. Muszę jeszcze dopracować takie elementy jak obliczanie napięć wyższych jak 1.5V, stabilność RC oraz kod programu, bo float zżera za dużo pamięci.<br />Na moim multimetrze UT55 (ma ktoś z Was taki? <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> ) napięcie pływa w granicach jakiś 0.5%, ale stabilizuje się po kilkunastu sekundach:<br /><img src="https://photos-6.dropbox.com/t/0/AAAZnhOgPJE8shLBvQDBVfWQLDDNEJvNvsJOHPsBeAgKjg/12/291832243/jpeg/1024x768/3/1406905200/0/2/DSC09815.JPG/86F8YO5asJ_RzT9tnpczXl81qBbHdlPsTDHs0GUCx0Q%2CK7imKqnR82GYqnnfb70-kIzqk5C7DdV1PD7ayRdTnYI" alt="Obrazek" /><br />Jestem ciekawy Waszych opinii i komentarzy.<br /><br />---------<br /><strong><span style="color: #FF0000">Popraw fotki zgodnie z zasadami forum <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic44.html." >topic44.html.</a><!-- l -->.  Inaczej wątek spotka anihilacja... .   -- SunRiver</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2860">krawacik3</a> — 1 sie 2014, o 14:06</p><hr />
]]></content>
</entry>
</feed>