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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-15T18:22:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11995&amp;mode</id>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-06-15T18:22:44+01:00</updated>
<published>2015-06-15T18:22:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131832#p131832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131832#p131832"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131832#p131832"><![CDATA[
<div class="quotetitle">gordon10 napisał(a):</div><div class="quotecontent"><br />Kopiujcie do woli, wielkiej filozofii tu nie ma:)<br />Przerobienie na inne procki też banalne<br /></div><br />Wielkie dzięki!<br />Skopiowałem i na ATmedze8 uzyskałem dodatkowy pin do pomiaru napięcia - AREF (od 1,2V do VCC).<br />Trochę zmieniłem kod  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /> [syntax=c]//----------V_BG.c----------------------------<br />//----Pomiar napięcia gdy Vref to Band Gap--------------<br />//++++Wywołanie==== f_czynu( checkVccVoltage() ); +++++<br />//++++Wywołanie==== f_czynu( adc ); +++++++++++++++++<br />#include &lt;avr/io.h&gt;//ATmega8<br />#include &lt;util/delay.h&gt;<br /><br />#define  VBG     124             // napiecie Vbg * 100 (dla mega32 1.22V; mega8 1.30V;)<br /><br />volatile uint16_t zasilanie;// przechowuje napiecie(jako np. 5V -&gt; zasilanie = 500)<br />volatile uint16_t adc;   // przechowuje wskazanie z ADC<br /><br /><br />// ********************** DEFINICJE FUNKCJI ***********************************************<br />// funkcja zwraca napiecie Vcc lub In AREF z precyzją setnych czesci volta<br />uint16_t checkVccVoltage (void)<br />{<br />//ADMUX |=  (1&lt;&lt;MUX3) | (1&lt;&lt;MUX2) | (1&lt;&lt;MUX1);//Dla AT8 Pomiar na AREF<br />ADMUX |=  (1&lt;&lt;REFS0) |(1&lt;&lt;MUX3) | (1&lt;&lt;MUX2) | (1&lt;&lt;MUX1);//Dla AT8 Pomiar wew.VCC<br /><br />_delay_us(2); //Opóźnienie asekuracyjne<br />//ADCSRA |= (1&lt;&lt;ADEN)  | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1);  // ADC on | wybor preskalera dla AT8 64<br />ADCSRA |= (1&lt;&lt;ADEN) | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS0);   // ADC on | wybor preskalera dla AT8 32<br /><br />_delay_ms(1);<br /><br />ADCSRA |= (1&lt;&lt;ADSC);                    // start pomiaru<br />while( ADCSRA &amp; (1&lt;&lt;ADSC));             // oczekiwanie na koniec pomiaru<br /><br />adc = ADCW;<br />uint16_t vbat;// przechowuje zmierzone napiecie<br /><br />// obliczanie napiecia ze wzoru Vcc = (Vbg * 1024) / ADC i sprowadzenie do 16bit<br />vbat = (uint16_t)  ( ((uint32_t) VBG * 1024) / adc );              // wzor z artykulu<br /><br />//      ADCSRA &amp;= ~(1&lt;&lt;ADEN);     //ADC off (dla oszczednosci energii)<br />return (vbat);<br />}[/syntax]<br />Co Wy na to? <br />Zainteresowany jestem multipleksowaniem pomiarów(baterii i napięcia na AREF) <img src="https://forum.atnel.pl/images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="Pan Zielony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 15 cze 2015, o 18:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-15T12:37:35+01:00</updated>
<published>2015-06-15T12:37:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131808#p131808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131808#p131808"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131808#p131808"><![CDATA[
Kopiujcie do woli, wielkiej filozofii tu nie ma:)<br />Przerobienie na inne procki też banalne<br /><br />Ja pracuje jeszcze nad prezentacją wyniku - żeby wyświetlać to na pasku 8-miu LEDów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 15 cze 2015, o 12:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PITERK]]></name></author>
<updated>2015-06-15T12:29:10+01:00</updated>
<published>2015-06-15T12:29:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131807#p131807</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131807#p131807"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131807#p131807"><![CDATA[
Koledzy bardzo fajnie się rozprawiliście z tym BandGap'em. <br />Za pozwoleniem kopiuje sobie kodzik. <br />Na pewno się przyda. <br /><br />Jak tylko znajdę chwilę podzielę się ciekawym rozwiązaniem z wykorzystaniem wifi Mirka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2913">PITERK</a> — 15 cze 2015, o 12:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-06-14T23:57:42+01:00</updated>
<published>2015-06-14T23:57:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131789#p131789</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131789#p131789"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131789#p131789"><![CDATA[
<div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />I właśnie dlatego ja wolę niekoszerne makro _BV()<br /></div><br />Jak to mówią jeden woli jabłka inny woli gruszki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Ja ZDECYDOWANIE wolę normalne operatory przesunięć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo od nich i tak się nie ucieknie podczas programowania, zamiast kociego _bv .... No ale ... co tu dużo mówić - jak ktoś już programuje &quot;nie od dziś&quot; to sam wybierze to co lubi. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 14 cze 2015, o 23:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-06-14T22:17:02+01:00</updated>
<published>2015-06-14T22:17:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131783#p131783</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131783#p131783"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131783#p131783"><![CDATA[
<div class="quotetitle">gordon10 napisał(a):</div><div class="quotecontent"><br />przed MUX3 zabrakło jednego znaczka &quot;&lt;&quot;<br /></div><br />I właśnie dlatego ja wolę niekoszerne makro _BV() <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 14 cze 2015, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2015-06-14T21:26:34+01:00</updated>
<published>2015-06-14T21:26:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131773#p131773</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131773#p131773"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131773#p131773"><![CDATA[
O raju ale super Bug :O<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 14 cze 2015, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-14T21:11:23+01:00</updated>
<published>2015-06-14T21:11:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131768#p131768</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131768#p131768"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131768#p131768"><![CDATA[
Hehe to teraz ja strzelam sobie facepalm, bo znalazłem durnego babola w moim pierwszym kodzie<br />to ta linijka<br />[syntax=c]ADMUX |= (1&lt;&lt;REFS0) | (1&lt;&lt;MUX4) | (1&lt;MUX3) | (1&lt;&lt;MUX2) | (1&lt;&lt;MUX1);[/syntax]<br />widzicie o co chodzi?<br />no przed MUX3 zabrakło jednego znaczka &quot;&lt;&quot;<br />Teraz te drobne opóźnienia nie mają większego znaczenia (tylko mniejsze):)<br />Ale dzięki temu tematowi chyba rozpracowaliśmy temat bandgap i już nie będzie wątpliwości.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 14 cze 2015, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-06-14T20:58:49+01:00</updated>
<published>2015-06-14T20:58:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131763#p131763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131763#p131763"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131763#p131763"><![CDATA[
Zgadza się panowie!  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  Teraz już wszystko jasne! Jak to mówi p. Mirek - facepalm <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Dziękuję bardzo za wyjaśnienie!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 14 cze 2015, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-14T20:26:06+01:00</updated>
<published>2015-06-14T20:26:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131757#p131757</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131757#p131757"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131757#p131757"><![CDATA[
Kolego anshar,<br />Muszę trochę sprostować to co napisałeś.<br />W tej metodzie:<br />- jako napięcie wejściowe Vin podajemy napięcie odniesienia ze źródła bandgap czyli VBG<br />- jako napięcie odniesienia Vref podajemy napięcie zasilania czyli Vcc<br />więc po podstawieniu i przekształceniach (nie chce mi się tutaj pisać wszystkiego krok po kroku)<br />Vcc (czyli zmienną vbat) obliczamy ze wrozu:<br /><br /><strong>vbat =  ( VBG * 1024) / ADC</strong> <br /><br />wyraźnie widać to także na tej stronie <br /><a href="http://wp.josh.com/2014/11/06/battery-fuel-guage-with-zero-parts-and-zero-pins-on-avr/"  class="postlink">http://wp.josh.com/2014/11/06/battery-fuel-guage-with-zero-parts-and-zero-pins-on-avr/</a><br />tutaj tak samo<br /><a href="http://www.ikalogic.com/avr-monitor-power-supply-voltage-for-free/"  class="postlink">http://www.ikalogic.com/avr-monitor-power-supply-voltage-for-free/</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 14 cze 2015, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-06-14T20:23:16+01:00</updated>
<published>2015-06-14T20:23:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131754#p131754</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131754#p131754"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131754#p131754"><![CDATA[
<div class="quotetitle">anshar napisał(a):</div><div class="quotecontent"><br />Nie wiem czemu w &quot;artykule&quot; jest inaczej.<br /></div><br />W tej metodzie mierzysz Vref, NIE Vin. Vin jest znane, stałe i równe bandgap, Vref jest napięciem zasilania czyli baterii a więc się zmienia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 14 cze 2015, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-06-14T19:31:39+01:00</updated>
<published>2015-06-14T19:31:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131748#p131748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131748#p131748"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131748#p131748"><![CDATA[
Dodam jeszcze, że według noty katalogowej: ADC = (Vin * 1024) / Vref <br />Aby wyliczyć Vin: <br /><br />ADC = (Vin * 1024) / Vref          // mnożymy lewą i prawą stronę przez Vref <br />ADC * Vref = Vin * 1024            // dzielimy przez 1024<br />(ADC * Vref) / 1024 = Vin<br />czyli<br />Vin = (ADC * Vref) / 1024<br /><br />Teraz podstawiając:<br />Vin = vbat<br />Vref = VBG <br />ADC = adc <br />uzyskamy:<br />vbat = (adc * VBG) / 1024<br /><br />Możliwe, że się mylę, ale tak ja to sobie wyliczyłem. Nie wiem czemu w &quot;artykule&quot; jest inaczej. <br />Dodam, że przyjąłem jako Vref napięcie katalogowe 1.22V i nie widzę możliwości, aby go zmierzyć fizycznie miernikiem. <br /><br />Faktycznie według tego wzoru: vbat =  ( VBG * 1024) / adc <br />też wszystko pięknie działa.<br /><br />Tak więc wspólnymi siłami można powiedzieć, że się udało.  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />Przepraszam jeśli napisałem głupoty, ale dopiero poznaję ADC i jego możliwości. <br />Może ktoś mógłby podpowiedzić dlaczego w oryginalnym artykule użyto innego wzoru?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 14 cze 2015, o 19:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-14T18:01:15+01:00</updated>
<published>2015-06-14T18:01:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131743#p131743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131743#p131743"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131743#p131743"><![CDATA[
Panowie Działa! Dzięki wielkie za pomoc:)<br /><br />tak jak zaproponował kolega anshar dodałem to małe opóźnienie w inicjalizacji ADC<br />[syntax=c]ADMUX |= (1&lt;&lt;REFS0) | (1&lt;&lt;MUX4) | (1&lt;&lt;MUX3) | (1&lt;&lt;MUX2) | (1&lt;&lt;MUX1);<br />        _delay_us(250);<br />        ADCSRA |= (1&lt;&lt;ADEN)  | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1);[/syntax]<br />Kurcze no sam bym na to nie wpadł, że to coś da.<br /><br />Jeśli chodzi o wzór to jednak ten pierwszy (jak w artykule kolegi sq5rix) jest prawidłowy.<br />VBG na razie ustawione jak w nocie 1.22. Później to skalibruje jak podłącze miernik.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />Wklejam jeszcze prawidłowy kod dla potomnych. Jak ktoś chce to niech już sobie dzieli na pliki i rozdziela inicjalizację ADC i pomiar na osobne funkcje. Póki co moja wersja jest &quot;w jednym worku&quot;<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define VBG12// napiecie Vbg * 10 (dla mega32 1.22V; mega8 1.30V;)<br /><br />uint8_t zasilanie;// przechowuje napiecie Vcc (jako dzieciate czesci volta np. 5V -&gt; zasilanie = 50)<br />uint16_t adc;// przechowuje wskazanie z ADC<br /><br />uint8_t checkVccVoltage (void);// funkcja zwraca napiecie Vcc w postaci dziesiatych czesci volta<br /><br />// ********************** FUNKCJA GLOWNA **************************************************<br />int main(void)<br />{<br /><br />lcd_init();<br />_delay_ms(10);<br /><br />lcd_LED(1);// fukcja wystawia 1 na PA7 (podsiwtlenie LCD)<br /><br />// ********************** PETLA GLOWNA ****************************************************<br />while(1)<br />{<br /><br />// pomiar co 500ms i wyswietlanie na LCD<br />_delay_ms(500);<br />zasilanie = checkVccVoltage ();<br />lcd_locate(0,0);<br />lcd_str(&quot;Vcc =     &quot;);<br />lcd_locate(0,6);<br />lcd_int(zasilanie);<br />// dodatkowo: wyswietlanie wskazania ADC<br />lcd_locate(1,0);<br />lcd_str(&quot;ADC =     &quot;);<br />lcd_locate(1,6);<br />lcd_int(adc);<br /><br />}// koniec while(1)<br />}// koniec main<br /><br />// ********************** DEFINICJE FUNKCJI ***********************************************<br />// funkcja zwraca napiecie Vcc w postaci dziesiatych czesci volta<br />uint8_t checkVccVoltage (void)<br />{<br /><br />    ADMUX |= (1&lt;&lt;REFS0) | (1&lt;&lt;MUX4) | (1&lt;&lt;MUX3) | (1&lt;&lt;MUX2) | (1&lt;&lt;MUX1);  // wybor Vref -&gt; Vcc; Vin -&gt; Vbg<br />    _delay_us(250);<br />    ADCSRA |= (1&lt;&lt;ADEN)  | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1);  // ADC on | wybor preskalera 32<br /><br />_delay_ms(1);<br /><br />ADCSRA |= (1&lt;&lt;ADSC);// start pomiaru<br />while( ADCSRA &amp; (1&lt;&lt;ADSC));// oczekiwanie na koniec pomiaru<br /><br />adc = ADCW;<br />uint8_t vbat;// przechowuje zmierzone napiecie na baterii<br />// obliczanie napiecia ze wzoruVcc = (Vbg * 1024) / ADC i sprowadzenie do 8bit<br />vbat = (uint8_t)  ( ( VBG * 1024) / adc );// wzor z artykulu<br /><br />//ADCSRA &amp;= ~(1&lt;&lt;ADEN);  //ADC off (dla oszczednosci energii)<br /><br />return (vbat);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 14 cze 2015, o 18:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2015-06-14T17:24:37+01:00</updated>
<published>2015-06-14T17:24:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131741#p131741</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131741#p131741"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131741#p131741"><![CDATA[
Elegancki kod!!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 14 cze 2015, o 17:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-14T17:23:56+01:00</updated>
<published>2015-06-14T17:23:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131740#p131740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131740#p131740"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131740#p131740"><![CDATA[
<div class="quotetitle">Wirnick napisał(a):</div><div class="quotecontent"><br />Hmm, a ja podejrzewam linię 22 kodu z pierwszego posta.<br /></div><br />Ale ja tu nie korzystam w ogóle z przerwań, więc dlatego ta linia jest zakomentowana.<br /><br />Kolego anshar widzę, że nieco inaczej podszedłeś do tematu - nieco inaczej obliczasz Vcc -&gt;    vbat = ( ( adc * VBG ) / 1024 );<br />Dzięki za kod. Muszę sprawdzić Twój sposób. Z tego co piszesz wynika, że rzeczywiste napięcie VBG w procku jest dalekie od tego co podają w nocie (czyli 1.22V).<br /><br /><div class="quotetitle">sq5rix napisał(a):</div><div class="quotecontent"><br />Hmm, taki głupi pomysł mi przyszedł do głowy. A jak podajesz to napięcie? Bo jak przez przetworniczkę .... <br />We wzorze na vbat zamieniłbym ADCW na adc.....<br /></div><br />Testuję to na 3 sposoby. 1. Zasilanie z USB, 2. Zasilanie z akumulatorków (ok 3.8-4V), 3. Zasilacz regulowany (w zakresie 3 - 5V) i wynik cały czas pokazuje ten sam (ADC = 1022, Vcc ok 1.2V)<br /><br />Pewnie ten wzór co stosuję się nie sprawdza. Spróbuje tak jak kolega anshar<br />zamiast Vcc = (Vbg * 1024) / ADC, zastosuje vbat = ( ( adc * VBG ) / 1024 )<br />różnica jest zasadnicza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 14 cze 2015, o 17:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-06-14T12:33:26+01:00</updated>
<published>2015-06-14T12:33:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131721#p131721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131721#p131721"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131721#p131721"><![CDATA[
Moim skromnym zdaniem to powinno wyglądać trochę inaczej. <br />Zapraszam do testów. Oczywiście trzeba dobrać VBG w pliku band_gap.h<br />W mojej Atmega32 prawidłowe wskazania są dopiero dla Vbg=130 (1.30V) <br />plik main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;BandGap/band_gap.h&quot;<br /><br /><br />int main(void)<br />{<br />     lcd_init();<br />     lcd_LED(1);<br />     lcd_cls();<br /><br />     bandGap_init();<br /><br />     _delay_ms(10);<br /><br />     //sei();<br /><br />     while(1)<br />     {<br />     // pomiar co 500ms i wyswietlanie na LCD<br />     _delay_ms(100);<br />     zasilanie = checkVccVoltage ();<br />     lcd_locate(0,0);<br />     lcd_str(&quot;Vcc =    &quot;);<br />     lcd_locate(0,6);<br />     lcd_int(zasilanie / 10);<br />     lcd_char('.');<br />     lcd_int(zasilanie % 10);<br />     lcd_char('V');<br />     // dodatkowo: wyswietlanie wskazania ADC<br />     lcd_locate(1,0);<br />     lcd_str(&quot;ADC =     &quot;);<br />     lcd_locate(1,6);<br />     lcd_int(adc);<br />     }<br />}[/syntax]<br /><br />plik band_gap.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />//#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;band_gap.h&quot;<br /><br /><br />// ********************** DEFINICJE FUNKCJI ***********************************************<br />// funkcja zwraca napiecie Vcc w postaci dziesiatych czesci volta (np. dla Vcc = 5V -&gt; zasilanie = 50)<br />uint8_t checkVccVoltage (void)<br />{<br /><br />    ADCSRA |= (1&lt;&lt;ADSC);       // start pomiaru<br />    while( ADCSRA &amp; (1&lt;&lt;ADSC));             // oczekiwanie na koniec pomiaru<br /><br />    adc = ADCW;<br />    uint8_t vbat;   // przechowuje zmierzone napiecie na baterii<br /><br />    vbat = ( ( adc * VBG ) / 1024 );<br /><br />    return (vbat);<br />}<br /><br />void bandGap_init(void) {<br /><br />ADMUX |= (1&lt;&lt;REFS0) | (1&lt;&lt;MUX4) | (1&lt;&lt;MUX3) | (1&lt;&lt;MUX2) | (1&lt;&lt;MUX1);<br />_delay_us(250);<br />ADCSRA |= (1&lt;&lt;ADEN)  | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1);<br /><br />}[/syntax]<br /><br />plik band_gap.h<br />[syntax=c]#ifndef BANDGAP_BAND_GAP_H_<br />#define BANDGAP_BAND_GAP_H_<br /><br />#define VBG    130             // napiecie Vbg * 100 (dla mega32 1.22V; mega8 1.30V;)<br /><br />uint8_t zasilanie; // przechowuje napiecie Vcc (jako dzieciate czesci volta np. 5V -&gt; zasilanie = 50)<br />uint16_t adc;      // przechowuje wskazanie z ADC<br /><br /><br />uint8_t checkVccVoltage (void);         // funkcja zwraca napiecie Vcc w postaci dziesiatych czesci volta<br />void bandGap_init(void);<br /><br />#endif /* BANDGAP_BAND_GAP_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 14 cze 2015, o 12:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-06-14T10:57:39+01:00</updated>
<published>2015-06-14T10:57:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131715#p131715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131715#p131715"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131715#p131715"><![CDATA[
Hmm, a ja podejrzewam linię 22 kodu z pierwszego posta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 14 cze 2015, o 10:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2015-06-14T10:31:11+01:00</updated>
<published>2015-06-14T10:31:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131713#p131713</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131713#p131713"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131713#p131713"><![CDATA[
Hmm, taki głupi pomysł mi przyszedł do głowy. A jak podajesz to napięcie? Bo jak przez przetworniczkę .... <br />We wzorze na vbat zamieniłbym ADCW na adc.....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 14 cze 2015, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-13T21:20:34+01:00</updated>
<published>2015-06-13T21:20:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131696#p131696</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131696#p131696"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131696#p131696"><![CDATA[
Chyba 'cza' sprawdzić to na innych prockach - np. jakaś Atmega8 - bo na tej Atmedze32 nic nie wykrzesam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 13 cze 2015, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-13T15:17:44+01:00</updated>
<published>2015-06-13T15:17:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131676#p131676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131676#p131676"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131676#p131676"><![CDATA[
@sq5rix<br />wzorowałem się oczywiście na przykładzie z tego artykułu co dałeś linka, bo tam jest prosto to opisane.<br /><div class="quotetitle">sq5rix napisał(a):</div><div class="quotecontent"><br />Fajnie że to odpalasz<br /></div><br />Przyda mi się to bo czasem próbuję coś stworzyć zasilane z baterii. Wcześniej potrzebowałem kilka dodatkowych elementów i 2 wolnych pinów, a teraz może się uda wszystko programowo rozwiązać.<br /><br />Zaglądałem tez do linka od kolegi Piotrek_P <a href="http://www.ikalogic.com/avr-monitor-power-supply-voltage-for-free/"  class="postlink">http://www.ikalogic.com/avr-monitor-power-supply-voltage-for-free/</a> ale tam sposób jest przecież ten sam (obliczenia wg tego samego wzoru)<br /><br />No nic posiedzę jeszcze w wolnej chwili nad tym i jak rozwiążę problem to się z Wami podzielę gotowcem:)<br />A jak macie jakieś sugestie to zapodajcie:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 13 cze 2015, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2015-06-13T14:49:44+01:00</updated>
<published>2015-06-13T14:49:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131674#p131674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131674#p131674"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131674#p131674"><![CDATA[
No ja bym nie analizował tylko zajrzał na bloga, tam jest działający przykład. Zmieniasz tylko ADMUX. <br />Fajnie że to odpalasz, ja juz od tygodnia sie z tym marudzę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 13 cze 2015, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-13T13:40:14+01:00</updated>
<published>2015-06-13T13:40:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131670#p131670</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131670#p131670"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131670#p131670"><![CDATA[
<div class="quotetitle">sq5rix napisał(a):</div><div class="quotecontent"><br />Zdecydowanie ADCW trzeba użyć raz juz po pętli.<br /></div><br />Tak zrobiłem. <br />Dodatkowo wszystkie zmienne i wyniki przerobiłem na uint16_t, ale dalej głupoty pokazuje.<br /><br />Musze od nowa to przeanalizować i może coś znajdę...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 13 cze 2015, o 13:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2015-06-13T13:26:42+01:00</updated>
<published>2015-06-13T13:26:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131669#p131669</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131669#p131669"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131669#p131669"><![CDATA[
Zdecydowanie ADCW trzeba użyć raz juz po pętli. A w pętli dajesz sprawdzanie bitu ADSC. Teraz dostajesz jakąś nieokreśloną liczbę. <br />Zobacz u Mirka na blogu, jest tam wszystko pokazane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 13 cze 2015, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-13T12:57:21+01:00</updated>
<published>2015-06-13T12:57:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131667#p131667</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131667#p131667"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131667#p131667"><![CDATA[
<div class="quotetitle">Zaba napisał(a):</div><div class="quotecontent"><br />Jeśli dobrze rozumuje to musiał byś brać pod uwagę dwa lub więcej miejsc po przecinku<br />i je wyświetlać .<br /></div><br />Jak najbardziej biorę pod uwagę 2 miejsca po przecinku<br />Vbg mnożę *100 żeby pozbyć się ułamka (1.22 *100, czyli 122) i podstawiam do wzoru. Na koniec wynik dzielę przez 10 żeby otrzymać dziesiąte części volta (np. dla Vcc=5V, wynik zmiennej 'zasilanie' powinien wynosić 50)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 13 cze 2015, o 12:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-06-13T11:07:31+01:00</updated>
<published>2015-06-13T11:07:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131659#p131659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131659#p131659"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131659#p131659"><![CDATA[
Nie wiem czy dobrze myślę ale w DS na stronie 316 <br />jest wykres zależności pomiędzy VCC a Bandgap, i<br />jeśli dobrze go interpretuje to napięcie Bandgap<br />zmienia się w zakresie 1.23V do 1,24V przy VCC 2,7V do 5,5V.<br /><br />Jeśli dobrze rozumuje to musiał byś brać pod uwagę dwa lub więcej miejsc po przecinku<br />i je wyświetlać .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 13 cze 2015, o 11:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2015-06-13T10:27:40+01:00</updated>
<published>2015-06-13T10:27:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131655#p131655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131655#p131655"/>
<title type="html"><![CDATA[Re: BandGap - problem z pomiarem Vcc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11995&amp;p=131655#p131655"><![CDATA[
<div class="quotetitle">Piotrek_P napisał(a):</div><div class="quotecontent"><br />Zastanawia mnie, w jaki sposób kolega chce uzyskać źródło BandGap = 1.1V w ATMega32.<br /></div><br />Kolego ja tu zastosowalem Vbg =1.22V tak jak w dokumentacji megi32. Wszystkie szczegóły opisałem w komentarzach. Bity w rejestrach raczej dobrze ustawiłem, wszytkie wg noty pdf.<br />Tylko ten wynik... &quot;chusteczkowy&quot;.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 13 cze 2015, o 10:27</p><hr />
]]></content>
</entry>
</feed>