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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-14T21:11:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=24&amp;t=15116&amp;mode</id>
<entry>
<author><name><![CDATA[jony15]]></name></author>
<updated>2016-04-14T21:11:32+01:00</updated>
<published>2016-04-14T21:11:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158552#p158552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158552#p158552"/>
<title type="html"><![CDATA[Re: MCP3421 - Pomiar prądu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158552#p158552"><![CDATA[
Zamień na próbę 6 i 1 tj Vin+ i Vin- czy odczytane wyniki będziesz miał powyżej 32700. Jeśli tak to coś nie tak elektrycznie, jeśli nie to programowo. ( Oczywiście przy przepływającym prądzie ) Schemat masz poprawny, przynajmniej u mnie układ jest tak samo zbudowany, chociaż ja go zasilam 5V ale inny mcp3424 od kilku miesięcy pracuje na 3V i mierzy prądy ok 300mA. <br /><br />Załóżmy ze &quot;gain&quot; mcp wynosi 1 to przy pomiarze 16bit na jeden bit przypada 62,5uV. przez rezystor przepływa prąd np&quot; 100mA co na 0,1om spadek napięcia wyniesie ( U= R * J ) 0,01V ( 10mV ). I teraz 10mV/62,5uV = 160. W teorii taką wartość powinieneś odczytywać. A spróbuj jeszcze ustawić wzmocnienie &quot;gain&quot; na 2 albo 4  czy odczytane wyniki podwoją się.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2183">jony15</a> — 14 kwi 2016, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2016-04-14T20:25:31+01:00</updated>
<published>2016-04-14T20:25:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158543#p158543</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158543#p158543"/>
<title type="html"><![CDATA[Re: MCP3421 - Pomiar prądu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158543#p158543"><![CDATA[
Hej, <br /><br />No właśnie nie odczytuję normlanych wartości ADC... tu jest główny problem<br />Przy napięciu 4V na zaciskach &quot;Fotoogniwo&quot; (ze schematu) wartość ADC wynosi 80, zwiększe do 4,1 wynosi 100, zwiększe do 4,2 powiedzmy 130 , a przy 4,3 już wynosi 80 !! .. i tak w kółko ... nie wiem co jest źle , pewnie coś ze schematem... może rezystor nie taki..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 14 kwi 2016, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jony15]]></name></author>
<updated>2016-04-13T16:11:48+01:00</updated>
<published>2016-04-13T16:11:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158457#p158457</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158457#p158457"/>
<title type="html"><![CDATA[Re: MCP3421 - Pomiar prądu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158457#p158457"><![CDATA[
Czy to co odczytujesz z MCP to są w miarę realne wartości ? tj. np w miarę stała wartość. Ja to odczytuję tak: [syntax=c]//odczyt z przetwornika mcp<br />uint16_t odczyt_z_mcp(void){<br />uint8_t conf_ch0;<br />uint16_t wynik_pomiaru;<br />//start pomiaru 16 bit gain 8<br />i2c_START();<br />i2cPutbyte(MCP3421_ADRES);<br />i2cPutbyte((1&lt;&lt;MCP_RDY)|(1&lt;&lt;MCP_S1)|(1&lt;&lt;MCP_G1)|(1&lt;&lt;MCP_G0));<br />i2c_STOP();<br />_delay_ms(5);<br />//odczytujemy z mcp<br />do {<br />i2c_START();<br />  i2cPutbyte(MCP3421_ADRES+1);<br /> wynik_pomiaru= i2cGetbyte(ACK);<br />wynik_pomiaru = (wynik_pomiaru &lt;&lt; 8);<br />wynik_pomiaru = wynik_pomiaru | i2cGetbyte(ACK);<br />conf_ch0 = i2cGetbyte(NACK);<br />i2c_STOP();<br />_delay_us(600);<br />} while (128 &amp; conf_ch0);<br />if(wynik_pomiaru&gt;32000)//gdyby wyszedl za duży <br />     wynik_pomiaru=0;<br />return wynik_pomiaru;<br />}[/syntax]<br />Później przeliczam na prąd z proporcji ( tak jak Mirek w którymś poradniku pokazywał ).<br /> <br />A jeszcze jeden temat jakich prądów się spodziewasz; gdyż jest jeszcze jedno ciekawe zjawisko przy pomiarze prądu, jak wiadomo na rezystorze wydziela się ciepło podczas przepływającego prądu a wraz z ciepłem zmienia się rezystancja i pomiar zaczyna się &quot; pływać &quot; ale jeśli są to prądy powiedzmy do 400 500mA to na 0,1 oma powinno być ok. Pamiętaj też że przetwornik ten posiada wzmacniacz w sobie także możesz dać mniejszy rezystor np 0,05 i wzmocnić sygnał. <br />P.s. funkcje do i2c z BB - &quot;programowy i2c&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2183">jony15</a> — 13 kwi 2016, o 16:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2016-04-13T14:53:36+01:00</updated>
<published>2016-04-13T14:53:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158445#p158445</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158445#p158445"/>
<title type="html"><![CDATA[MCP3421 - Pomiar prądu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15116&amp;p=158445#p158445"><![CDATA[
Hejka, <br /><br />Mam problemy z pomiarem prądu poprzez układ MCP3421  (oglądałem poradnik na temat tego układu od Mirka).<br />Zaprojektowałem schemat oraz wykonałem już urządzenie.  (to jest część schematu. Rezystory podciągające linię SDA I SCL są w innym fragmencie schematu.)<br /><br /><a href="https://obrazkiforum.atnel.pl/903/4ad3839a8d38a3bddf11e4c51de9bfed.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/903/4ad3839a8d38a3bddf11e4c51de9bfed.PNG" alt="Obrazek" /></a><br /><br />Co do programu: <br />Układ wykrywa, przesyła wyniki poprzez BT do terminala, wartości prądu mi pokazuje, no ale nie zgadzają się z faktycznym stanem.. <br />W zaciski fotoogniwa wpinam zasilacz laboratoryjny, a procesor zasilany jest baterią 3,7V która jest doładowywana z układu TP4056.<br />Pomiar prądu ma być wykonywany przed ładowarką czyli ma pokazywać prąd płynący z panelu fotowoltaicznego.  <br />Wartości pokazywane czy to adc czy już w amperach są dziwne, bo np. o 4,0V - 4,2V rośnie adc a przy 4,3 V znowu spada i znowu rośnie o 4,5 V powyżej 5V też wartości adc spadają ... <br /><br />Kod programu jest z poradnika Mirka:<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 12 Mar 2016<br /> *      Author: Marcin<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MK_USART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br /><br />#define MCP_ADR 0b11010000<br />#define SR 4<br /><br />typedef struct {<br />uint8_t idx;<br />uint16_t adc_mid;<br />uint16_t ref_adc;<br />uint16_t ref_v;<br />char v1&#91;3&#93;;<br />char v2&#91;3&#93;;<br />} TVOL;<br /><br />TVOL mcp_vol;<br /><br />// dioda LED<br />#define LED_PIN (1&lt;&lt;PD2)// definicja pinu do którego podłączona jest dioda<br />#define LED_OFF PORTD &amp;= ~ LED_PIN<br />#define LED_ON PORTD |= LED_PIN<br />#define LED_TOG PORTD ^= LED_PIN<br /><br /><br />uint8_t buf&#91;5&#93;;<br />uint16_t mcp_sr&#91;SR&#93;;<br />uint8_t mcpadc = 0;<br /><br />void get_vol( uint16_t adc, TVOL * voltage, uint16_t * sr );<br />void Pomiar_pradu (void);<br /><br />int main (void)<br />{<br />DDRD |= LED_PIN;<br /><br />mcp_vol.ref_adc =500;// 15891;<br />mcp_vol.ref_v = 50;<br />uint8_t cfg = 0b10011000;<br />MCP_write_buf ( MCP_ADR, 1, &amp;cfg );<br /><br />i2cSetBitrate( 100 );<br />USART_Init(__UBRR);// inicjalizacja UART<br />sei();<br /><br /><br />while (1)<br />{<br />Pomiar_pradu ();<br /><br />_delay_ms(250);<br />LED_TOG;<br />}<br />}<br /><br />void get_vol( uint16_t adc, TVOL * voltage, uint16_t * sr ) {<br /><br />uint32_t sr1=0;<br />uint8_t i;<br /><br />sr&#91; voltage-&gt;idx++ &amp; (SR-1) &#93; = adc;<br /><br />for(i=0; i&lt;SR; i++) sr1+=sr&#91;i&#93;;<br />sr1 /= SR;<br /><br />voltage-&gt;adc_mid = sr1;<br /><br />uint16_t wynik = ( sr1 * (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br /><br />void Pomiar_pradu (void)<br />{<br />MCP_read_buf ( MCP_ADR, 4, buf );<br />get_vol( mcpadc, &amp;mcp_vol, mcp_sr );<br />mcpadc = buf&#91;0&#93;&lt;&lt;8 | buf&#91;1&#93;;<br /><br />tr_locate(6,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts (&quot;MCP ADC: &quot;);<br />uart_putint ( mcpadc, 10 );<br />uart_puts (&quot;   &quot;);<br />tr_pen_color(RED);<br /><br />uart_puts( &quot;MCP Pomiar Prądu: &quot;);<br />uart_puts( mcp_vol.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( mcp_vol.v2 );<br />uart_puts( &quot;A&quot;);<br />uart_puts( &quot;     &quot;);<br /><br />}[/syntax]<br /><br />W linikach: <br /><br />[syntax=c]mcp_vol.ref_adc =500;// 15891;<br />mcp_vol.ref_v = 50;[/syntax]<br /><br />Wpisałem ref_v = 50 ponieważ według BB (rozdział o pomiarze różnicowym prądu strona 269), spadek na rezystorze przy 5A wynosi 0,5V *100 = 50. Mnie interesują prądy do 1A. <br />Natomiast nie wiem co wpisać w ref_adc bo wyniki tak skaczą żę ciężko ustalić środek wartości... <br /><br />Czy ktoś ma pomysł jak ogarnąć ten pomiar ?? Może problem tkwi w funkcji get_vol ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 13 kwi 2016, o 14:53</p><hr />
]]></content>
</entry>
</feed>