{"id":920,"date":"2022-04-06T00:12:45","date_gmt":"2022-04-05T22:12:45","guid":{"rendered":"https:\/\/www.degerdalen.no\/?p=920"},"modified":"2022-04-10T21:39:22","modified_gmt":"2022-04-10T19:39:22","slug":"esp32-steppermotorer-og-dollies-work-in-progress-expect-updates-dog-ikke-sa-ofte","status":"publish","type":"post","link":"https:\/\/www.degerdalen.no\/?p=920","title":{"rendered":"ESP32, Steppermotorer og Dollies &#8211; Work in progress, expect updates &#8211; dog ikke s\u00e5 ofte"},"content":{"rendered":"\r\n<p>For noen \u00e5r tilbake, tr\u00e5let jeg som alltid Finn.no. Der snublet jeg over en ganske snasen manuell Dolly til en fornuftig penge.<\/p>\r\n\r\n\r\n\r\n<p>Etter litt googling fant man ut at denne kunne utstyres med kontroller som gjorde det mulig \u00e5 kj\u00f8re denne dollyen med motor. Men med b\u00e5de motor og kontroller &#8211; men da ble prisen vesentlig h\u00f8yere. Men motoren alene var ikke s\u00e5 dyr.<\/p>\r\n\r\n\r\n\r\n<p>Som en som raskt tenker &laquo;hvor vanskelig kan det v\u00e6re&raquo;, kj\u00f8pe sporenstreks inn steppermotor og brakett fra leverand\u00f8ren. I tillegg ble det kj\u00f8pt inn en stepper kontrollkort &#8211; og der har det ligget siden.<br \/>Hva er vel bedre enn \u00e5 b\u00f8rste st\u00f8v av et slikt prosjekt?<\/p>\r\n\r\n\r\n\r\n<p><strong>Steppermotor:<\/strong><br \/>Motoren er av typen 17HS15-1684S-PG27X (<a href=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/17HS15-1684S-PG27.pdf\">datablad<\/a>)<br \/>Det er en bipolar motor, med 1.8 grader pr step, og kan trekke 1.68Ampere pr fase. 1,8 grader betyr 200 step pr runde.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image.png\"><img loading=\"lazy\" width=\"1024\" height=\"683\" class=\"wp-image-922\" src=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1024x683.png\" alt=\"\" srcset=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1024x683.png 1024w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-300x200.png 300w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-768x513.png 768w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image.png 1461w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<p><strong>Stepperkontroller<\/strong>:<br \/>Kontrollerkortet var et DRV8825 fra Pololu (<a href=\"https:\/\/www.pololu.com\/product\/2982\">lenke<\/a>)<a href=\"https:\/\/www.pololu.com\/product\/2982\">. <\/a><br \/>I f\u00f8lge skjemaet p\u00e5 produsentens nettside burde det v\u00e6re grei skuring \u00e5 koble sammen dette<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1.png\"><img loading=\"lazy\" class=\"wp-image-924\" src=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1.png\" alt=\"\" width=\"670\" height=\"321\" srcset=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1.png 1019w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1-300x144.png 300w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-1-768x369.png 768w\" sizes=\"(max-width: 670px) 100vw, 670px\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<p>Det ser ut til \u00e5 v\u00e6re mulig \u00e5 kj\u00f8re microstep ved \u00e5 benytte M0-M2, s\u00e5 disse b\u00f8r jeg koble opp.<\/p>\r\n\r\n\r\n\r\n<p><strong>Str\u00f8mgrense<\/strong><br \/>Etter \u00e5 ha sett litt dokumentasjon p\u00e5 8825-kortet, st\u00e5r det at man skal justere str\u00f8mgrensen. Motoren kan trekk 1.68A pr fase, mens 8825 kan kun levere 1.5A med kj\u00f8ling mens kun 1.2 uten. Jeg tenker uansett jeg justerer str\u00f8mgrensen ned til 1.2A<\/p>\r\n\r\n\r\n\r\n<p>Formelen for \u00e5 finne korrekt vref er definert p\u00e5 pololu sine nettsider, men for 8825 er formelen limit = vref *2. Som betyr at jeg skal justere vref til 0.6V for \u00e5 sette en grense p\u00e5 1.2A.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\r\n<div class=\"wp-block-embed__wrapper\">https:\/\/youtu.be\/89BHS9hfSUk<\/div>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p><strong>Andre grensesnitt<\/strong>:<br \/>En timelapse-rigg m\u00e5 jo ogs\u00e5 st\u00f8tte kameratilkobling. I et<a href=\"https:\/\/www.degerdalen.no\/?p=822\"> tidligere prosjekt<\/a> har jeg lekt meg med \u00e5 trigge kamera fra en Arduino med en optocoupler som legger kamera-selvutl\u00f8seren til jord. Dette har fungert tidligere, og jeg tenker at det vil fungere greit ogs\u00e5 i dette scenarioet.<\/p>\r\n\r\n\r\n\r\n<p><strong>Valg av mikrokontroller:<\/strong><br \/>Jeg har jobbet en del med ESP8266, og har begynt \u00e5 bli godt kjent med dette kortet. Dog har den et begrenset sett med GPIO tilgjengelig. Konseptuelt ser jeg for meg at jeg m\u00e5 ha kunne bruke 9 samtidige GPIO pinner. 7 til stepper-kontroller, samt 2 til kameratrigging. Denne videoen g\u00e5r i gjennom hvilke pinner som er tilgjengelig i hver av kortene<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\r\n<div class=\"wp-block-embed__wrapper\">https:\/\/youtu.be\/7h2bE2vNoaY<\/div>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>Det vil da v\u00e6re naturlig \u00e5 se p\u00e5 en ESP32<\/p>\r\n\r\n\r\n\r\n<p><strong>Diagram<\/strong><\/p>\r\n<p>Edit: R1 og R2 m\u00e5 sl\u00f8yfes. Det oppn\u00e5s ikke h\u00f8y nok spenning p\u00e5 optoisolatorene med 220 ohms resistor i serie.\u00a0<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3.png\"><img loading=\"lazy\" class=\"wp-image-927\" src=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3-1024x656.png\" alt=\"\" width=\"506\" height=\"324\" srcset=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3-1024x656.png 1024w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3-300x192.png 300w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3-768x492.png 768w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3-1536x984.png 1536w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-3-2048x1312.png 2048w\" sizes=\"(max-width: 506px) 100vw, 506px\" \/><\/a><\/figure>\r\n\r\n\r\n\r\n<p>Kretskort:<br \/>Jeg syns ikke dette s\u00e5 ut som noe jeg \u00f8nsker prototype p\u00e5 vero-board, s\u00e5 jeg bestiller et printkort.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4.png\"><img loading=\"lazy\" class=\"wp-image-928\" src=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4-1024x766.png\" alt=\"\" width=\"438\" height=\"328\" srcset=\"https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4-1024x766.png 1024w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4-300x224.png 300w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4-768x574.png 768w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4-1536x1148.png 1536w, https:\/\/www.degerdalen.no\/wp-content\/uploads\/2022\/04\/image-4-2048x1531.png 2048w\" sizes=\"(max-width: 438px) 100vw, 438px\" \/><\/a>\r\n<figcaption>To-lags kort, Gul er banene p\u00e5 ene siden, mens orange p\u00e5 andre siden. Fant ikke noe fint silkscreen til kontrollerkortet.<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p><strong>Kode<\/strong><br \/>For \u00e5 gj\u00f8re prosjektet overkommelig deler jeg det opp i tre hovedbolker. <br \/>Steppermotor-kontroll<br \/>Kamerastyring<br \/>UI<br \/><br \/>La oss starte med test av steppermotoren.<\/p>\r\n\r\n\r\n\r\n<p>En rask kodesnutt basert p\u00e5 flere andre kilder p\u00e5 nett, s\u00e5 endte jeg opp med denne;<\/p>\r\n<pre>\/\/kj\u00f8rer steppermotor 40000 step f\u00f8r den snur og kj\u00f8rer tilbake 4000<br \/>\/\/step. Gjenta fra toppen. <br \/>\/\/Trykker du p\u00e5 boot-knappen p\u00e5 ESP32 vil den ogs\u00e5 snu, og kj\u00f8re <br \/>\/\/40k stepp fra der den snur.<br \/><br \/>#include &lt;Button.h&gt;\r\n#define dirPin 26\r\n#define stepPin 25\r\n#define resetPin 32\r\n#define enablePin 33\r\n#define MS1 18\r\n#define MS2 17\r\n#define MS3 16\r\nButton bootButton(0);\r\nint totalSteps = 0;\r\nint idirection = 1;\r\nvoid setup() {\r\n  Serial.begin(9600);\r\n  bootButton.begin();\r\n  pinMode(stepPin, OUTPUT);\r\n  pinMode(dirPin, OUTPUT);\r\n  pinMode(resetPin, OUTPUT);\r\n  pinMode(enablePin, OUTPUT);\r\n  pinMode(MS1, OUTPUT);\r\n  pinMode(MS2, OUTPUT);\r\n  pinMode(MS2, OUTPUT);\r\n  digitalWrite(dirPin, idirection);\r\n  digitalWrite(resetPin, HIGH);\r\n  digitalWrite(enablePin, HIGH);\r\n  digitalWrite(MS1, LOW);\r\n  digitalWrite(MS2, LOW);\r\n  digitalWrite(MS3, LOW);\r\n }\r\n\r\nvoid loop() {\r\n    totalSteps++;\r\n    digitalWrite(stepPin, HIGH);\r\n    delayMicroseconds(500);\r\n    digitalWrite(stepPin, LOW);\r\n    delayMicroseconds(500);\r\n   if (bootButton.pressed()){\r\n     Serial.println(\"Button 1 pressed\");\r\n     Serial.println(totalSteps);\r\n     toggle();\r\n   }\r\n   if (totalSteps == 40000){\r\n    toggle();\r\n   }\r\n }\r\n void toggle(){\r\n   totalSteps = 0;\r\n   if (idirection == 0){\r\n     idirection = 1;\r\n      }\r\n     else \r\n      { \r\n       idirection = 0;\r\n      }\r\n   digitalWrite(dirPin, idirection);\r\n   }\r\n<\/pre>\r\n\r\n\r\n\r\n<p>P\u00e5 grunn av gearkassen koblet p\u00e5 steppermotoren, trenger den hele 40k stepp for \u00e5 komme fra en side av dollyen til den andre.\u00a0<\/p>\r\n\r\n<pre>\/\/fokuserer, trigger shutter - repeat<br \/><br \/>#define focusPin 2\r\n#define shutterPin 4\r\n\r\nvoid setup() {\r\n  \/\/ Declare pins as output:\r\n  Serial.begin(9600);\r\n  pinMode(focusPin, OUTPUT);\r\n  pinMode(shutterPin, OUTPUT);\r\n   \r\n}\r\n\r\nvoid loop() {\r\n delay(5000);\r\n Serial.println(\"focus\");\r\n digitalWrite(focusPin, HIGH);\r\n delay(5000);\r\n Serial.println(\"shutter\");\r\n digitalWrite(shutterPin, HIGH);\r\n delay(5000);\r\n digitalWrite(focusPin, LOW);\r\n digitalWrite(shutterPin, LOW);\r\n}\r\n<\/pre>\r\n<p>&nbsp;<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>For noen \u00e5r tilbake, tr\u00e5let jeg som alltid Finn.no. Der snublet jeg over en ganske snasen manuell Dolly til en fornuftig penge. Etter litt googling fant man ut at denne kunne utstyres med kontroller som gjorde det mulig \u00e5 kj\u00f8re &hellip; <a href=\"https:\/\/www.degerdalen.no\/?p=920\">Les videre <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=\/wp\/v2\/posts\/920"}],"collection":[{"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=920"}],"version-history":[{"count":9,"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=\/wp\/v2\/posts\/920\/revisions"}],"predecessor-version":[{"id":936,"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=\/wp\/v2\/posts\/920\/revisions\/936"}],"wp:attachment":[{"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.degerdalen.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}