{"id":508,"date":"2016-12-20T18:38:59","date_gmt":"2016-12-20T18:38:59","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=508"},"modified":"2016-12-21T08:57:47","modified_gmt":"2016-12-21T08:57:47","slug":"podstawy-wejscie-analogowe-czujka-pola-magnetycznego-ss49e","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=508","title":{"rendered":"Podstawy: czujka pola magnetycznego SS49E"},"content":{"rendered":"<h2>Analogowa czujka pola magnetycznego SS49E<\/h2>\n<h2>&nbsp;<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-509 alignleft\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E.jpg\" alt=\"ss49e\" width=\"178\" height=\"155\">SS49E to bardzo fajny uk\u0142ad&nbsp;do mierzenia warto\u015bci pola magnetycznego w zakresie -1500..0..+1500 Gs. Warto zwr\u00f3ci\u0107 uwag\u0119, \u017ce czujka ta mierzy zar\u00f3wno &#8222;plusy&#8221; jak i &#8222;minusy&#8221;, czyli jest <strong>bibolarna<\/strong>&nbsp;&#8211; w odr\u00f3\u017cnieniu od uk\u0142ad\u00f3w unipolarnych (kt\u00f3re reaguj\u0105 jedynie na konkretn\u0105 polaryzacj\u0119 magnesu, czyli tylko biegun N lub tylko biegun S). Warto\u015b\u0107 zmierzonego pola t\u0142umaczona jest na napi\u0119cie na pinie OUT z zakresu od 0.86V do 4.21V w spos\u00f3b <strong>liniowy<\/strong>. T\u0119 liniowo\u015b\u0107 wykorzystamy za chwil\u0119.<\/p>\n<h2>Analogowa czy cyfrowa?<\/h2>\n<p>Jest du\u017co podobnych uk\u0142ad\u00f3w. Inne czujki (szczeg\u00f3lnie te unipolarne) s\u0105 nazywane switczami (<em>ang. switche<\/em>) i s\u0105 <strong>cyfrowe<\/strong>. Unipolarno\u015b\u0107 wyja\u015bni\u0142em wy\u017cej, natomiast cyfrowo\u015b\u0107 oznacza tu, \u017ce uk\u0142ady te reaguj\u0105 jedynie na jak\u0105\u015b konkretn\u0105 warto\u015b\u0107 pola magnetycznego (warto\u015b\u0107 progow\u0105). I tak w przypadku przekroczenia tego progu czujka zwraca napi\u0119cie wysokie, a je\u015bli pr\u00f3g nie zosta\u0142 przekroczony &#8211; napi\u0119cie niskie. \u015awietnie to si\u0119 sprawdza w wielu sytuacjach (inteligentne domy &#8211; okno zamkni\u0119te\/otwarte, lub do mierzenia obrot\u00f3w wszelakiego rodzaju k\u00f3\u0142). Przyk\u0142adem takiej czujki jest TLE4905L. Jest te\u017c z regu\u0142y o po\u0142ow\u0119 ta\u0144sza. Ale nie o niej dzi\u015b b\u0119dzie (wspomnian\u0105 pobawimy si\u0119 na innych zaj\u0119ciach) &#8211; my mamy czujk\u0119 analogow\u0105. Jak wi\u0119c jej u\u017cywa\u0107?<\/p>\n<h2>Pinologia (aka. pod\u0142\u0105czenie)<\/h2>\n<p>Jak zawsze nale\u017cy pobra\u0144 z internetu not\u0119 katalogow\u0105 (szukamy frazy <em>SS49E datasheet<\/em> lub podobnie) i przegl\u0105damy ca\u0142o\u015b\u0107. Nie musimy wszystkiego rozumie\u0107, zwracamy uwag\u0119 na opis og\u00f3lny uk\u0142adu i spos\u00f3b pod\u0142\u0105czenia. Poni\u017cej zamieszczam wycinek z tego dokumentu:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-510\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E-pins.gif\" alt=\"ss49e-pins\" width=\"509\" height=\"407\"><\/p>\n<p>i ju\u017c wiemy, kt\u00f3ra n\u00f3\u017cka tego uk\u0142adu co oznacza. Dalej doczytujemy, \u017ce napi\u0119cie zasilaj\u0105ce (Vdd) musi by\u0107 z przedzia\u0142u 4-6V, czyli Arduino UNO jak najbardziej si\u0119 nada. Przy pod\u0142\u0105czeniu dbamy o odpowiednie ustawienie uk\u0142adu!<\/p>\n<h2>Odczyt warto\u015bci pola<\/h2>\n<p>Specyfikacja podaje, \u017ce SS49E zwraca warto\u015b\u0107 0.86V gdy pole wyosi -1500 Gs, oraz 4.21V gdy pole wynosi +1500 Gs. Jak wi\u0119c oblicza\u0107 co wskazuje czujka? Musimy pod\u0142\u0105czy\u0107 uk\u0142ad do zasilania (n\u00f3\u017cki 1 i 2) a tak\u017ce n\u00f3\u017ck\u0119 3 (nazwan\u0105 OUT) do woltomierza (miernika uniwersalnego) lub do Arduino i portu analogowego (np. A0). Oczywi\u015bcie zach\u0119cam do rozpocz\u0119cia zabawy z miernikiem i magnesem, aby sprawdzi\u0107 jak to dzia\u0142a. Po tej czynno\u015bci wracamy do Arduino i pod\u0142\u0105czamy n\u00f3\u017ck\u0119 OUT do portu analogowego A0 w Arduino. Potrzebujemy przelicznika.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-514\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E-1-1024x576.jpg\" alt=\"ss49e\" width=\"640\" height=\"360\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E-1-1024x576.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E-1-300x169.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E-1-768x432.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/12\/SS49E-1.jpg 1800w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><br \/>\n(uk\u0142ad SS49E + Arduino UNO + magnes + p\u0142ytka stykowa).<\/p>\n<h2>Czujka liniowa<\/h2>\n<p>Oznacza to, \u017ce warto\u015bci napi\u0119cia z pinu OUT odpowiadaj\u0105 warto\u015bciom pola w spos\u00f3b <strong>liniowy<\/strong>, czyli jak funkcja y=a*x+b. Traktujemy wi\u0119c <strong>x<\/strong> jako napi\u0119cie z pinu OUT, a <strong>y<\/strong> jako wskazywane pole. Dlatego zapisujemy uk\u0142ad r\u00f3wna\u0144 na nieznane jeszcze wsp\u00f3\u0142czynniki prostej <strong>a<\/strong> i <strong>b<\/strong>. S\u0105 to:<\/p>\n<p>-1500 = a*0.86 + b &nbsp; &nbsp;(1)<br \/>\noraz<br \/>\n1500 = a*4.21 + b. &nbsp; &nbsp; (2)<\/p>\n<p>Te dwa r\u00f3wnania nale\u017cy rozwi\u0105za\u0107 wyznaczaj\u0105c wsp\u00f3\u0142czynniki prostej a i b a nast\u0119pnie dla ka\u017cdego odczytanego napi\u0119cia z pinu OUT (oznaczmy to <strong>x<\/strong>) oblicza\u0107 nat\u0119\u017cenie pola wed\u0142ug przepisy<\/p>\n<p>y=a*x+b,<\/p>\n<p>gdzie <strong>y<\/strong> to w\u0142a\u015bnie warto\u015b\u0107 pola.<\/p>\n<pre class=\"lang:arduino decode:true\">float a=....;\/\/policz samodzielnie, rozwi\u0105zuj\u0105c (1) i (2)\r\nfloat b=....;\/\/policz samodzielnie\r\nvoid setup(){\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop(){\r\n  int odczyt=analogRead(A0);\r\n  float x=odczyt*4.56\/1023;\r\n  Serial.print(\"napi\u0119cie OUT [V] = \");\r\n  Serial.print(x);\r\n  Serial.print(\" ,pole magnetyczne [Gs] = \");\r\n  Serial.println(a*x+b);\r\n}<\/pre>\n<h2>Uwaga<\/h2>\n<p>Kluczowe jest odpowiednie odczytanie napi\u0119cia z n\u00f3\u017cki OUT uk\u0142adu SS49E &#8211; bardzo przydatny oka\u017ce si\u0119 woltomierz (multimetr w trybie woltomierza). Zwr\u00f3\u0107 uwag\u0119 na program powy\u017cej, gdzie moje Arduino jest ju\u017c lekko uszkodzone i zamiast ksi\u0105\u017ckowych 5V otrzymuj\u0119 jedynie 4.56V z pinu oznaczonego 5V &#8211; dlatego moje przeliczenie <strong>odczyt &lt;&#8212;&gt; x<\/strong> jest w taki, a nie inny spos\u00f3b.<\/p>\n<h2>Rozdzielczo\u015b\u0107 czujnika<\/h2>\n<p>Ze specyfikacji czujnika wynika, \u017ce na 1 Gs przypada napi\u0119cie 0.001116666 V, czyli 1.116 mV (obliczone jako iloraz 4.21-0.86 &#8212; caly zakres napi\u0119cia &#8212; i liczby 3000 &#8212; ca\u0142y zakres pola, od -1500 do 1500). Natomiast rozdzielczo\u015b\u0107 wej\u015bcia analogowego to 4.457 mV na 1 jednostk\u0119 w funkcji analogRead (obliczone jako iloraz 4.56 i 1023). Oznacza to, \u017ce nie jeste\u015bmy w stanie mierzy\u0107 Aruinem tak dok\u0142adnie, jak by si\u0119 chcia\u0142o, ale tylko z dok\u0142adno\u015bci\u0105 plus\/minus 4 Gs. Dochodz\u0105 do tego jeszcze fluktuacje samego przetwornika analogowo-cyfrowego w Arduino &#8211; przyznacie, \u017ce widzicie czasami skoki odczyt\u00f3w o plus\/minus 1? mo\u017ce nawet 2? Dlatego zmierzona w ten spos\u00f3b warto\u015b\u0107 pola to raczej plus\/minus 8 Gs.&nbsp;<\/p>\n<h2>Ziemskie pole magnetyczne<\/h2>\n<p>Na powierzchni Ziemi, bez magnes\u00f3w i innych zewn\u0119trznych p\u00f3l powinni\u015bmy otrzyma\u0107 oko\u0142o 0.5 Gs &#8212;&nbsp;z nasz\u0105 dok\u0142adno\u015bci\u0105 ka\u017cdy wynik &lt;10 Gs jest OK.<\/p>\n<h2>Zabawa magnesem<\/h2>\n<p>Jak najbardziej! Pr\u00f3bujemy odczyty z obu biegun\u00f3w magnesu, sprawdzamy zale\u017cno\u015b\u0107 od odleg\u0142o\u015bci od czujki. W przypadku mocnych magnes\u00f3w (np. neodymowych) uwa\u017camy, aby ich nie zbli\u017ca\u0107 do mikrokonktrolera Atmega na p\u0142ytce Arduino &#8212; mo\u017cemy go uszkodzi\u0107!<\/p>\n<p>Okazuje si\u0119, \u017ce w zale\u017cno\u015bci od n<strong>api\u0119cia zasilania<\/strong> czujka podaj <strong>zero pola<\/strong> magnetycznego r\u00f3\u017cnymi warto\u015bciami napi\u0119cia z pinu OUT &#8212; opisane jest to w specyfikacji. Wr\u00f3cimy do tego zagadnienia p\u00f3\u017aniej.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Analogowa czujka pola magnetycznego SS49E &nbsp; SS49E to bardzo fajny uk\u0142ad&nbsp;do mierzenia warto\u015bci pola magnetycznego w zakresie -1500..0..+1500 Gs. Warto zwr\u00f3ci\u0107 uwag\u0119, \u017ce czujka ta mierzy zar\u00f3wno &#8222;plusy&#8221; jak i &#8222;minusy&#8221;, czyli jest bibolarna&nbsp;&#8211; w odr\u00f3\u017cnieniu od uk\u0142ad\u00f3w unipolarnych (kt\u00f3re reaguj\u0105 jedynie na konkretn\u0105 polaryzacj\u0119 magnesu, czyli tylko biegun N lub tylko biegun S). Warto\u015b\u0107 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":514,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[52],"tags":[106,103,107,105,104,102],"class_list":{"0":"post-508","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-fibot","8":"tag-bipolarny","9":"tag-hall","10":"tag-liniowy","11":"tag-magnes","12":"tag-pole","13":"tag-ss49e","15":"post-with-thumbnail","16":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=508"}],"version-history":[{"count":7,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/508\/revisions"}],"predecessor-version":[{"id":520,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/508\/revisions\/520"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/514"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}