{"id":99,"date":"2018-11-22T11:47:27","date_gmt":"2018-11-22T11:47:27","guid":{"rendered":"http:\/\/raisanen.org\/?page_id=99"},"modified":"2019-05-14T19:45:27","modified_gmt":"2019-05-14T19:45:27","slug":"8-moottoriharjoitustyo","status":"publish","type":"page","link":"http:\/\/raisanen.org\/?page_id=99","title":{"rendered":"8. Moottoriharjoitusty\u00f6"},"content":{"rendered":"<div class=\"entry-content\">\n<p>T\u00e4m\u00e4n harjoitusty\u00f6n tarkoituksena on soveltaa aiemmissa harjoituksissa opittua tietoa.\u00a0T\u00e4m\u00e4n ty\u00f6n tarkoituksena on my\u00f6s tutustua H-sillan k\u00e4ytt\u00f6\u00f6n moottorien ohjauksessa.<\/p>\n<p>Ty\u00f6ss\u00e4 k\u00e4ytet\u00e4\u00e4n NPN-transistorina 2N2222A transistoria ja PNP-transistorina 2N2907A\u00a0transistoria. Moottorina k\u00e4ytet\u00e4\u00e4n DGO-3512ADA pienoismoottoria.<\/p>\n<p>Toteuta elektroniikan simulaatio-ohjelmalla (NI Multisim) kuvassa 1 esitetty kytkent\u00e4. Korvaa PNP-transistori 2N2907A transistorilla ja NPN-transistori\u00a02N2222A transistorilla. Tutustu kytkenn\u00e4n toimintaan simuloinnissa. Esittele toimiva simulointi opettajalle.<\/p>\n<ol>\n<li>Rakenna (Hyv\u00e4ksytyn simuloinnin j\u00e4lkeen) kuvassa 2 oleva kytkent\u00e4 koekytkent\u00e4alustalle.<\/li>\n<li>Pythonilla Raspberry Pi:lle ohjelma, jossa ohjaat moottorin py\u00f6rimisuuntaa kytkinten avulla seuraavasti:<br \/>\n\u2013 GPIO17 k\u00e4ynnist\u00e4\u00e4 moottorin my\u00f6t\u00e4p\u00e4iv\u00e4\u00e4n.<br \/>\n\u2013 GPIO23\u00a0k\u00e4ynnist\u00e4\u00e4 moottorin vastap\u00e4iv\u00e4\u00e4n.<br \/>\n\u2013 GPIO#\u00a0pys\u00e4ytt\u00e4\u00e4 moottorin.<\/li>\n<\/ol>\n<p>Huomioi seuraavat asiat:<br \/>\n1. V\u00e4\u00e4rin kytkettyn\u00e4\/ohjelmoituna H-silta synnytt\u00e4\u00e4 hyvin helposti oikosulun.<br \/>\n2. Tarkistuta rakentamasi kytkent\u00e4 ja koodaamasi ohjelma opettajalla ennen\u00a0kuin kytket s\u00e4hk\u00f6t p\u00e4\u00e4lle!<\/p>\n<p><a href=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-174\" src=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-1.png\" alt=\"\" width=\"909\" height=\"627\" srcset=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-1.png 909w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-1-300x207.png 300w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-1-768x530.png 768w\" sizes=\"auto, (max-width: 909px) 100vw, 909px\" \/><\/a><\/p>\n<p>Kuva 1.\u00a0Simuloitava transistorien muodostama H-silta, jolla ohjataan tasavirtamoottoria<\/p>\n<p>Tarvitset kytkent\u00e4\u00e4n<\/p>\n<ul>\n<li>Erillisen 5V virtal\u00e4hteen<\/li>\n<li>2kpl NPN-transistori 2N2222A<\/li>\n<li>2kpl\u00a0PNP-transistori 2N2907A<\/li>\n<li>pienoismoottori <a href=\"http:\/\/www.bebek.fi\/kauppa\/lisatiedot.php?&amp;tuote_id=16497\" target=\"_blank\" rel=\"noopener noreferrer\">DGO-3512ADA<\/a>\u00a0tai <a href=\"http:\/\/www.bebek.fi\/kauppa\/lisatiedot.php?&amp;tuote_id=14330\" target=\"_blank\" rel=\"noopener noreferrer\">DGO-3512ADA<\/a><\/li>\n<li>Vastuksia 10 k\u03a9<\/li>\n<li>kytkent\u00e4johtimia<\/li>\n<\/ul>\n<p><a href=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-175\" src=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-2-1024x549.png\" alt=\"\" width=\"870\" height=\"466\" srcset=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-2-1024x549.png 1024w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-2-300x161.png 300w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-2-768x412.png 768w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/kuva8-2.png 1190w\" sizes=\"auto, (max-width: 870px) 100vw, 870px\" \/><\/a><\/p>\n<p>Kuva 2: Rakennettava H-sillalla ohjattava DC-moottori kytkent\u00e4<\/p>\n<p>Tee Python-ohjelma, jolla luet jo kytkemi\u00e4si painonappeja (painonappi 1, GPIO17, pin 11, input ja\u00a0painonappi 2, GPIO23, pin 16, input) ja ohjaat l\u00e4hd\u00f6iksi m\u00e4\u00e4rittelemi\u00e4si GPIO-pisteit\u00e4 5 (pin 29) ja 6 (pin 31). Lis\u00e4\u00e4 ohjelmaan toimintoja seuraavasti:<\/p>\n<ul>\n<li>Kun 1-wire anturin l\u00e4mp\u00f6tila laskee alle 10\u00a0\u00baC, moottori pys\u00e4htyy<\/li>\n<li>Kun 1-wire anturin l\u00e4mp\u00f6tila nousee yli 35\u00a0\u00baC, moottori pys\u00e4htyy ja led syttyy h\u00e4lytyksen merkiksi.<\/li>\n<\/ul>\n<p>Voit my\u00f6s jatkaa teht\u00e4v\u00e4\u00e4 siten, ett\u00e4 voit s\u00e4\u00e4t\u00e4\u00e4 moottorin py\u00f6rimisnopeutta potentiometrin asennon perusteella. Kytke FET-transistori (<a href=\"https:\/\/www.fairchildsemi.com\/datasheets\/BS\/BS170.pdf\">BS170<\/a>) j\u00e4nnitesy\u00f6tt\u00f6\u00f6n ja ohjaa hilaa PWM-ohjauksella aivan kuten teit led-himmennyksess\u00e4. K\u00e4yt\u00e4 py\u00f6rimisnopeuden s\u00e4\u00e4t\u00e4miseen potentiometrin asentoarvoa (potentiometrin asento -&gt; PWM -&gt; ohjaus BS170 hilalle).<\/p>\n<p><a href=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/h-silta.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-173\" src=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/h-silta.jpg\" alt=\"\" width=\"853\" height=\"479\" srcset=\"http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/h-silta.jpg 853w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/h-silta-300x168.jpg 300w, http:\/\/raisanen.org\/wp-content\/uploads\/2019\/05\/h-silta-768x431.jpg 768w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/a><\/p>\n<p><strong>Ohjelmaa:<\/strong><\/p>\n<div class=\"container\">\n<pre class=\"line number1 index0 alt2\"><code class=\"python keyword\">import<\/code><code class=\"python plain\">RPi.GPIO as GPIO<\/code><code class=\"python keyword\">from<\/code><code class=\"python plain\">time <\/code><code class=\"python keyword\">import<\/code><code class=\"python plain\">sleep<\/code><code class=\"python plain\">GPIO.setmode(GPIO.BOARD)<\/code><code class=\"python plain\">Motor1A <\/code><code class=\"python keyword\">=<\/code><code class=\"python value\">29<\/code><code class=\"python plain\">Motor1B <\/code><code class=\"python keyword\">=<\/code><code class=\"python value\">31<\/code><code class=\"python plain\">GPIO.setup(Motor1A,GPIO.OUT)<\/code><code class=\"python plain\">GPIO.setup(Motor1B,GPIO.OUT)<\/code><code class=\"python functions\">print<\/code><code class=\"python string\">\"Turning motor on left\"<\/code><code class=\"python plain\">GPIO.output(Motor1A,GPIO.HIGH)<\/code><code class=\"python plain\">GPIO.output(Motor1B,GPIO.LOW)<\/code><code class=\"python plain\">sleep(<\/code><code class=\"python value\">5<\/code><code class=\"python plain\">)\n\n<\/code><code class=\"python functions\">print<\/code><code class=\"python string\">\"Turning motor on right\"<\/code><code class=\"python plain\">GPIO.output(Motor1A,GPIO.LOW)<\/code><code class=\"python plain\">GPIO.output(Motor1B,GPIO.HIGH)<\/code><code class=\"python plain\">\n\nsleep(5)\n\n<\/code>p<code class=\"python functions\">rint<\/code><code class=\"python string\">\"Stopping motor\"<\/code><code class=\"python plain\">\nGPIO.output(Motor1A,GPIO.LOW)<\/code><code class=\"python plain\">GPIO.output(Motor1B,GPIO.LOW)<\/code><code class=\"python plain\">GPIO.cleanup()<\/code><\/pre>\n<p>nano.py<\/p>\n<pre>import RPi.GPIO as io\nio.setmode(io.BCM)\n\nin1_pin = 29\nin2_pin = 31\n\nio.setup(in1_pin, io.OUT)\nio.setup(in2_pin, io.OUT)\n\ndef set(property, value):\n try:\n f = open(\"\/sys\/class\/rpi-pwm\/pwm0\/\" + property, 'w')\n f.write(value)\n f.close() \n except:\n print(\"Error writing to: \" + property + \" value: \" + value)\n\nset(\"delayed\", \"0\")\nset(\"mode\", \"pwm\")\nset(\"frequency\", \"500\")\nset(\"active\", \"1\")\n\ndef clockwise():\n io.output(in1_pin, True) \n io.output(in2_pin, False)\n\ndef counter_clockwise():\n io.output(in1_pin, False)\n io.output(in2_pin, True)\n\nclockwise()\n\nwhile True:\n cmd = raw_input(\"Command, f\/r 0..9, E.g. f5 :\")\n direction = cmd[0]\n if direction == \"f\":\n clockwise()\n else: \n counter_clockwise()\n speed = int(cmd[1]) * 11\n set(\"duty\", str(speed))<\/pre>\n<\/div>\n<p><a href=\"https:\/\/learn.adafruit.com\/adafruit-raspberry-pi-lesson-9-controlling-a-dc-motor\/pwm\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/learn.adafruit.com\/adafruit-raspberry-pi-lesson-9-controlling-a-dc-motor\/pwm<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4m\u00e4n harjoitusty\u00f6n tarkoituksena on soveltaa aiemmissa harjoituksissa opittua tietoa.\u00a0T\u00e4m\u00e4n ty\u00f6n tarkoituksena on my\u00f6s tutustua H-sillan k\u00e4ytt\u00f6\u00f6n moottorien ohjauksessa. Ty\u00f6ss\u00e4 k\u00e4ytet\u00e4\u00e4n<\/p>\n<p class=\"readmore\"><a href=\"http:\/\/raisanen.org\/?page_id=99\" title=\"Read 8. Moottoriharjoitusty\u00f6\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":83,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-99","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/pages\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/raisanen.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=99"}],"version-history":[{"count":2,"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/pages\/99\/revisions"}],"predecessor-version":[{"id":177,"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/pages\/99\/revisions\/177"}],"up":[{"embeddable":true,"href":"http:\/\/raisanen.org\/index.php?rest_route=\/wp\/v2\/pages\/83"}],"wp:attachment":[{"href":"http:\/\/raisanen.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}