{"id":2542,"date":"2015-06-24T21:57:43","date_gmt":"2015-06-24T21:57:43","guid":{"rendered":"http:\/\/41j.com\/blog\/?p=2542"},"modified":"2015-06-24T21:57:43","modified_gmt":"2015-06-24T21:57:43","slug":"playing-with-picomotors","status":"publish","type":"post","link":"https:\/\/41j.com\/blog\/2015\/06\/playing-with-picomotors\/","title":{"rendered":"Playing with Picomotors"},"content":{"rendered":"<p><a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino.jpg\" alt=\"arduino\" width=\"800\" height=\"598\" class=\"aligncenter size-full wp-image-2548\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino.jpg 800w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino-300x224.jpg 300w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>I&#8217;ve written about slip-stick motors before <a href=\"http:\/\/41j.com\/blog\/2014\/09\/piezo-actuators-a-review\/\">here<\/a> and I&#8217;ve now purchased a couple from ebay to play with.<\/p>\n<p>I acquired both 30nm and 100nm resolution Picomotors and a Picomotor 8701 driver. This post documents the process on getting them up and running.<\/p>\n<p>This is the 30nm resolution motor:<\/p>\n<p><a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/picomotor.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/picomotor.jpg\" alt=\"picomotor\" width=\"500\" height=\"593\" class=\"aligncenter size-large wp-image-2545\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/picomotor.jpg 500w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/picomotor-253x300.jpg 253w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>It&#8217;s kind of seen better days. The case is coming off and I wrapped teflon tape round it to hold it together. It does work however!<\/p>\n<p>Slip-stick motors work using the difference in motion caused by static and dynamic friction. It&#8217;s rather neat and you can read more about it <a href=\"http:\/\/41j.com\/blog\/2014\/09\/piezo-actuators-a-review\/\">here<\/a>. But it means they only require a single piezo stack give clockwise and anti-clockwise rotation. Giving you 30-100nm resolution over ~25mm travel.<\/p>\n<p><a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/slipstick.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/slipstick.png\" alt=\"slipstick\" width=\"363\" height=\"233\" class=\"aligncenter size-full wp-image-2550\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/slipstick.png 363w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/slipstick-300x193.png 300w\" sizes=\"auto, (max-width: 363px) 100vw, 363px\" \/><\/a><\/p>\n<p>The 8701 driver didn&#8217;t come with a power supply, but luckily it&#8217;s quite well <a href=\"http:\/\/assets.newport.com\/webdocuments-en\/images\/15245.pdf\">documented<\/a> <a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/15245.pdf\">(local copy)<\/a>. It requires +12,-12 and 5V supplies. It also used an old DIN type connector. Unfortunately I didn&#8217;t have one knocking around so had to make do with board pins. Hopefully the one I&#8217;ve ordered from China will turn up in the new couple of weeks, same goes for the 15pin input signal connector.<\/p>\n<p><a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/func.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/func.jpg\" alt=\"func\" width=\"500\" height=\"159\" class=\"aligncenter size-large wp-image-2546\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/func.jpg 500w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/func-300x95.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>For the moment I&#8217;m running it off a bunch of lab supplies, but will probably put together something more permanent at some point:<br \/>\n<a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/power.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/power.jpg\" alt=\"power\" width=\"500\" height=\"658\" class=\"aligncenter size-large wp-image-2544\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/power.jpg 500w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/power-228x300.jpg 228w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>Driving the motor is pretty straight forward. There&#8217;s a 5v &#8220;step&#8221; input pin (which triggers on the negative edge), and a direction pin. The motor can be driven at upto 1KHz. Initially I drove it using a function generator:<\/p>\n<p><a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/control.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/control.jpg\" alt=\"control\" width=\"700\" height=\"523\" class=\"aligncenter size-large wp-image-2547\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/control.jpg 800w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/control-300x224.jpg 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>Finally I knocked a quick Arduino Sketch together to drive to motor over serial (code below):<\/p>\n<p><a href=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino.jpg\" alt=\"arduino\" width=\"800\" height=\"598\" class=\"aligncenter size-full wp-image-2548\" srcset=\"https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino.jpg 800w, https:\/\/41j.com\/blog\/wp-content\/uploads\/2015\/06\/arduino-300x224.jpg 300w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\r\nvoid setup()\r\n{\r\n  \/\/ start serial port at 9600 bps and wait for port to open:\r\n  Serial.begin(9600);\r\n  while (!Serial) {\r\n    ; \/\/ wait for serial port to connect. Needed for Leonardo only\r\n  }\r\n\r\n  pinMode(8, OUTPUT);\r\n  pinMode(9, OUTPUT);\r\n}\r\n\r\nint cspeed = 1;\r\nvoid do_steps(int dir,int dspeed) {\r\n\r\n  digitalWrite(9,dir);\r\n  for(int n=0;n&lt;dspeed;n++) {\r\n    digitalWrite(8,1);\r\n    delay(1);\r\n    digitalWrite(8,0);\r\n    delay(1);\r\n  }\r\n\r\n}\r\n\r\nvoid loop()\r\n{\r\n  \/\/ if we get a valid byte, read analog ins:\r\n  if (Serial.available() &gt; 0) {\r\n    \/\/ get incoming byte:\r\n    int in = Serial.read();\r\n    \r\n    if(in == 'W') {do_steps(1,cspeed); Serial.print(&quot;S&quot;);}\r\n    if(in == 'S') {do_steps(0,cspeed); Serial.print(&quot;S&quot;);}\r\n    if(in == 'P') {cspeed++; Serial.print(cspeed); Serial.print(&quot;\\n&quot;);}\r\n    if(in == 'L') {cspeed--; Serial.print(cspeed); Serial.print(&quot;\\n&quot;);}\r\n  }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve written about slip-stick motors before here and I&#8217;ve now purchased a couple from ebay to play with. I acquired both 30nm and 100nm resolution Picomotors and a Picomotor 8701 driver. This post documents the process on getting them up and running. This is the 30nm resolution motor: It&#8217;s kind of seen better days. The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-2542","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1RRoU-F0","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts\/2542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/comments?post=2542"}],"version-history":[{"count":1,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts\/2542\/revisions"}],"predecessor-version":[{"id":2553,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/posts\/2542\/revisions\/2553"}],"wp:attachment":[{"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/media?parent=2542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/categories?post=2542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/41j.com\/blog\/wp-json\/wp\/v2\/tags?post=2542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}