{"id":488,"date":"2016-11-22T19:09:57","date_gmt":"2016-11-22T19:09:57","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=488"},"modified":"2016-11-23T08:56:04","modified_gmt":"2016-11-23T08:56:04","slug":"podstawy-dzielnik-napiec-pwm-fotorezystor-inteligentne-oswietlenie","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=488","title":{"rendered":"Podstawy: dzielnik napi\u0119\u0107, PWM, fotorezystor = inteligentne o\u015bwietlenie"},"content":{"rendered":"<h2>Podstawy: dzielnik napi\u0119\u0107<\/h2>\n<p>Obrazki z tablicy&#8230;&nbsp;<\/p>\n<p>Najpierw bawili\u015bmy si\u0119 multimetrem i dzielnikiem:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-489 size-full\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-1.jpg\" alt=\"fibot2016-11-22-note-19-36-1\" width=\"766\" height=\"386\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-1.jpg 766w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-1-300x151.jpg 300w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><\/p>\n<p>a potem pod\u0142\u0105czyli\u015bmy fotorezystor i pr\u00f3bowali\u015bmy go odczytywa\u0107 z poziomu Arduino.<\/p>\n<p>Pomys\u0142 Pana Paw\u0142a (PPP) aby najpierw zmierzy\u0107 multimetrem <strong>pr\u0105d<\/strong> p\u0142yn\u0105cy w obwodzie, a nast\u0119pnie znaj\u0105c podane napi\u0119cie i stosuj\u0105c prawo Ohma otrzymywa\u0107 warto\u015b\u0107 rezystancji na fotooporniku &#8211; by\u0142 dobry, ale wymaga\u0142 \u00f3wczesnego u\u017cycia amperomierza (z multimetru). Mi bardziej chodzi\u0142o o wykorzystanie fotorezystora w ten spos\u00f3b, aby uzyska\u0107 informacj\u0119 czy go zas\u0142aniamy czy nie, czy jest du\u017co \u015bwiat\u0142a zastanego (w pomieszczeniu) czy jest ciemno. Dlatego nie koniecznie interesuje mnie sama warto\u015b\u0107 oporu, a raczej jej zmiany. Dlatego po sprawdzeniu dzia\u0142ania PPP i przyznaniu mu racji (a raczej Ohmowi), zaproponowa\u0142em zastosowanie dzielnika napi\u0119\u0107 i mierzenia napi\u0119cia w standardowy spod\u00f3wb<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-490 size-large\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-2-1024x425.jpg\" alt=\"fibot2016-11-22-note-19-36-2\" width=\"640\" height=\"266\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-2-1024x425.jpg 1024w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-2-300x124.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-2-768x319.jpg 768w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-2.jpg 1179w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<pre class=\"lang:arduino decode:true\">void setup(){\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop(){\r\n  Serial.println(analogRead(A0));  \r\n  delay(100);\r\n}<\/pre>\n<p>W zale\u017cno\u015bci od kolejno\u015bci opornik\u00f3w (sta\u0142ego R i zmiennego fotorezystora) otrzymywali\u015bmy liczby rosn\u0105ce lub malej\u0105ce zas\u0142aniaj\u0105c fotorezystor r\u0119k\u0105. Dodatkowo mo\u017cna by\u0142o u\u017cy\u0107 latarki z telefonu kom\u00f3rkowego i symulowa\u0107 mocne o\u015bwietlenie.<\/p>\n<h2>PWM<\/h2>\n<p>Aby zrobi\u0107 inteligentne o\u015bwietlenie potrzebowali\u015bmy sposobu na kontrolowanie jasno\u015bci LED-a. Poznali\u015bmy Pulse Width Modulation i piny cyfrowe Arduino z &#8222;falk\u0105&#8221; (wol\u0119: tyld\u0105).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-491 size-full\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-3.jpg\" alt=\"fibot2016-11-22-note-19-36-3\" width=\"834\" height=\"344\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-3.jpg 834w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-3-300x124.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-3-768x317.jpg 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/p>\n<h2>Inteligentne o\u015bwietlenie<\/h2>\n<p>To nic innego jak po\u0142\u0105czenie dw\u00f3ch poznanych schemat\u00f3w:<\/p>\n<ul>\n<li>mierzymy napi\u0119cie na fotorezystora przez wej\u015bcie analogowe, a nast\u0119pnie<\/li>\n<li>ustawiamy jasno\u015b\u0107 LED-a steruj\u0105c wype\u0142nieniem PWM.<\/li>\n<\/ul>\n<p>Jedyny problem to kwestia zamiany odczytywanych warto\u015bci z portu A0 (fotorezystora) na warto\u015bci akceptowane przez piny PWM (przypominam: 0..255). W tym celu wr\u00f3cili\u015bmy do gimnazjum i zastosowali\u015bmy funkcj\u0119 liniow\u0105.<\/p>\n<p>Dla przyk\u0142adu: Pani Emanuela zastosowa\u0142a sta\u0142y opornik R o takiej warto\u015bci, \u017ce na porcie A0 odczytywa\u0142a warto\u015bci 130 gdy fotorezystor by\u0142 zas\u0142oni\u0119ty palcem, oraz 500 gdy by\u0142 o\u015bwietlany \u015bwiat\u0142em zastanym. Warto\u015bci pomi\u0119dzy przedzia\u0142em 130..500 odpowiada\u0142y cz\u0119\u015bciowemu zas\u0142oni\u0119ciu r\u0119k\u0105 fotorezystora. Trzeba to teraz zamieni\u0107 na liczby 0..255 aby sterowa\u0107 LED-em przez PWM (bo PWM akceptuje w\u0142a\u015bnie takie liczby, a nie 130..500). Dlatego stosujemy liniowe skalowanie (y=<strong>a<\/strong>x+<strong>b<\/strong>, wsp\u00f3\u0142czynniki <strong>a<\/strong> i&nbsp;<strong>b<\/strong> na razie nie znane), gdzie warto\u015b\u0107 130 ma odpowiada\u0107 maksymalnemu \u015bwieceniu LED-a, czyli 100% wype\u0142nieniu PWM-a (warto\u015b\u0107 255), natomiast gdy odczytujemy 500 (jest jasno) to LED ma si\u0119 nie \u015bwieci\u0107 (wype\u0142nienie 0). Trzeba skonstruowa\u0107 uk\u0142ad r\u00f3wna\u0144 i wyznaczy\u0107&nbsp;<strong>a<\/strong> oraz&nbsp;<strong>b<\/strong> a nast\u0119pnie przelicza\u0107 wskazania z portu A0 (traktuj\u0105c je jako <strong>x<\/strong> w r\u00f3wnaniu prostej, a otrzymany <strong>y<\/strong> to w\u0142a\u015bnie warto\u015b\u0107 przekazana do PWM-a). Poni\u017cszy rysunek wyja\u015bnia\u0142 ten opis:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-492 size-full\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-4.jpg\" alt=\"fibot2016-11-22-note-19-36-4\" width=\"796\" height=\"560\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-4.jpg 796w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-4-300x211.jpg 300w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-4-768x540.jpg 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/p>\n<p>Z kolei Pan Pawe\u0142 u\u017cy\u0142 innego rezystora (oraz innej kolejno\u015bci ustawienia opornik\u00f3w) i mia\u0142 nast\u0119puj\u0105cy schemat do rozwa\u017cenia&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-493\" src=\"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-5.jpg\" alt=\"fibot2016-11-22-note-19-36-5\" width=\"549\" height=\"577\" srcset=\"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-5.jpg 549w, https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/wp-content\/uploads\/sites\/6\/2016\/11\/fibot2016-11-22-Note-19-36-5-285x300.jpg 285w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/p>\n<p>W obu przypadkach trzeba by\u0142o rozwi\u0105za\u0107 otrzymany uk\u0142ad r\u00f3wna\u0144 na kartce a nast\u0119pnie wpisa\u0107 liczby (wyliczone wsp\u00f3\u0142czynniki <strong>a <\/strong>i&nbsp;<strong>b<\/strong>)&nbsp;to takiego prostego programiku:<\/p>\n<pre class=\"lang:arduino decode:true\">#define lampka 9\r\nfloat a=0.689189, b = 344.595;\r\n\r\nvoid setup(){\r\n  Serial.begin(9600);\r\n  pinMode(lampka, OUTPUT);\r\n}\r\n\r\nvoid loop(){\r\n  int fotorezystor = analogRead(A0);  \r\n  Serial.print(\"fotorezystor=\");\r\n  Serial.print(fotorezystor);  \r\n  Serial.print(\"--&gt;\");  \r\n  int pwm = a*fotorezystor+b:\r\n  Serial.print(\" PWM=\");  \r\n  Serial.println(pwm);\r\n  analogWrite(lampka, pwm);  \r\n  delay(100);  \r\n}<\/pre>\n<p>Wr\u00f3cimy do tego programu na kolejnym spotkaniu, bo trzeba tu o paru kwestiach wspomnie\u0107. Ale ju\u017c teraz zach\u0119cam do zabawy z powy\u017cszym programikiem na wirtualnym Arduino (jest tam te\u017c wirtualny fotorezystor). Prosz\u0119 te\u017c zastanowi\u0107 si\u0119 nad nast\u0119puj\u0105cymi kwestiami:<\/p>\n<ul>\n<li>dlaczego Pan Pawe\u0142 mia\u0142 prost\u0105 o wsp\u00f3\u0142czynniki kierunkowym&nbsp;<strong>a<\/strong>&gt;0, a Pani Ema&nbsp;<strong>a<\/strong>&lt;0 ?<\/li>\n<li>kto zastosowa\u0142 lepsz\u0105 warto\u015b\u0107 opornika sta\u0142ego &#8211; Pani Ema czy Pan Pawe\u0142, a mo\u017ce to nieistotne?&nbsp;<\/li>\n<\/ul>\n<p>Zapraszam za tydzie\u0144!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Podstawy: dzielnik napi\u0119\u0107 Obrazki z tablicy&#8230;&nbsp; Najpierw bawili\u015bmy si\u0119 multimetrem i dzielnikiem: a potem pod\u0142\u0105czyli\u015bmy fotorezystor i pr\u00f3bowali\u015bmy go odczytywa\u0107 z poziomu Arduino. Pomys\u0142 Pana Paw\u0142a (PPP) aby najpierw zmierzy\u0107 multimetrem pr\u0105d p\u0142yn\u0105cy w obwodzie, a nast\u0119pnie znaj\u0105c podane napi\u0119cie i stosuj\u0105c prawo Ohma otrzymywa\u0107 warto\u015b\u0107 rezystancji na fotooporniku &#8211; by\u0142 dobry, ale wymaga\u0142 \u00f3wczesnego [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":489,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[52],"tags":[67,95,75,74,98,9,96],"class_list":{"0":"post-488","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-fibot","8":"tag-analogread","9":"tag-dzielnik","10":"tag-dzielnik-napiec","11":"tag-fotorezystor","12":"tag-multimetr","13":"tag-pwm","14":"tag-serial","16":"post-with-thumbnail","17":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/488","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=488"}],"version-history":[{"count":4,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/488\/revisions"}],"predecessor-version":[{"id":497,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/488\/revisions\/497"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/489"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}