<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35189573</id><updated>2011-11-27T18:07:45.584-06:00</updated><category term='RTOS'/><title type='text'>Jay's Robotic Journal</title><subtitle type='html'>My journal of creating and experimenting with circuits, CNC, programming, and robotics</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jaydmdigital.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35189573.post-8334324208200293606</id><published>2010-06-13T15:42:00.005-05:00</published><updated>2010-06-13T15:52:22.529-05:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_45gEBj4xUTA/TBVDv9KFudI/AAAAAAAABa0/vROs-DLH2gs/s1600/new_light_stuffed_640.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_45gEBj4xUTA/TBVDv9KFudI/AAAAAAAABa0/vROs-DLH2gs/s200/new_light_stuffed_640.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5482362612543240658" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="  -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;I have stuffed the board with 24 super bright LEDs. In fact I have reused the old ones that are still good. They have a warm tone I prefer. You can see the daughter board "on-edge" in this shot. It has two brass lugs that twist and lock into the power buss holders. The holders can be strung with connecting wires so you can have a string of up to 8 (or more with a higher amp transformer) in series.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_45gEBj4xUTA/TBVCziqcefI/AAAAAAAABak/XsZI4dr-uIc/s1600/new_light_compare_640.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_45gEBj4xUTA/TBVCziqcefI/AAAAAAAABak/XsZI4dr-uIc/s200/new_light_compare_640.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5482361574639041010" /&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;A side by side comparison. The&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt; one on the left is the new design using the warm LEDs. The one in the middle is using the cooler blue LEDs running on AC. And the one on the right is the AC warm LEDs. I can't tell any difference in brightness between the two warm ones like I thought I could. Since I ran out of the cool-colored LEDs, I can't do a full comparison with those yet.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_45gEBj4xUTA/TBVDMEH8DAI/AAAAAAAABas/-kv5erXMqhk/s1600/new_light_done_640.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_45gEBj4xUTA/TBVDMEH8DAI/AAAAAAAABas/-kv5erXMqhk/s200/new_light_done_640.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5482361995937975298" /&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="  -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family:verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Milled another 2 boards (total of 5) but am only using 4 right now. Measured the current at 285.5mA (~72mA per module). The transformer is rated 9V 1A, but the voltage is 10.71V. That is 3.05 Watts. Compare that to the 18W package marking.&lt;br /&gt;&lt;br /&gt;Things are bright and easy to see again. Now I can get back to my projects.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;-Jay&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-8334324208200293606?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8334324208200293606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8334324208200293606'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2010/06/i-have-stuffed-board-with-24-super.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_45gEBj4xUTA/TBVDv9KFudI/AAAAAAAABa0/vROs-DLH2gs/s72-c/new_light_stuffed_640.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3319968626570414072</id><published>2010-06-11T15:30:00.002-05:00</published><updated>2010-06-11T15:34:19.614-05:00</updated><title type='text'></title><content type='html'>Milling a LED light circuit&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9w6CRJ7g8TE&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/9w6CRJ7g8TE&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt; &lt;span&gt;For the past couple of years I have been reviving some LED  tasks lights I bought at Costco by replacing burned out LEDs. Each  modules has 24 LEDs and it's tedious to find the 1 in the series that is  the bad one. The circuit is a transformer-less capacitive AC circuit  and it so poorly designed/built that the LEDs are being overdriven.&lt;br /&gt;&lt;br /&gt;My  solution was to redesign the modules for 12V DC using 8 parallel  strands of 3 super bright LEDs pulling 18mA per strand. This video shows  me cutting out the new and improved circuit board.&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;Jay&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3319968626570414072?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3319968626570414072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3319968626570414072'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2010/06/milling-led-light-circuit-httpwww.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-6484735761975488738</id><published>2010-05-31T18:46:00.003-05:00</published><updated>2010-05-31T18:59:24.534-05:00</updated><title type='text'></title><content type='html'>5/31/2010&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Been a long time since I've updated this blog. I have been addicted tot he www.cnczone.com and all thing computer controlled for the last 3 years. I have a CNC router and a desire to make things. You've seen my old Illuminames. I was using bamboo boxes from an outlet store. Next I tried making my own boxes with sliding lids, but those were a lot of work. My new version is a CNC cut box big enough to hold a custom circuit board (also CNC milled).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is my latest version make from an Australian red cedar that used to be part of a nice patio set from Costco before the weather and bugs destroyed it. Anyway, I plan to custom make these and sell these with all proceeds going to Autism Solution Center. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_45gEBj4xUTA/TAQPvHVYRpI/AAAAAAAABaM/CskGnMGYWHU/s720/DSC00407.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 720px; height: 540px;" src="http://lh5.ggpht.com/_45gEBj4xUTA/TAQPvHVYRpI/AAAAAAAABaM/CskGnMGYWHU/s720/DSC00407.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other examples are &lt;a href="http://picasaweb.google.com/jay.couture/Illuminames#"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-6484735761975488738?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6484735761975488738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6484735761975488738'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2010/05/5312010-been-long-time-since-ive.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_45gEBj4xUTA/TAQPvHVYRpI/AAAAAAAABaM/CskGnMGYWHU/s72-c/DSC00407.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-4768091149705989272</id><published>2009-08-09T21:37:00.002-05:00</published><updated>2009-08-09T21:41:13.389-05:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-INvsN3rI/AAAAAAAAAjs/NfAIfQ0d1GY/s1600-h/hall_2_soldered_640.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-INvsN3rI/AAAAAAAAAjs/NfAIfQ0d1GY/s200/hall_2_soldered_640.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5368159050570522290" /&gt;&lt;/a&gt;&lt;br /&gt;Hall sensor board take 2. here is how it turned out on the second go around. Tested it with a neodymium magnet and it works perfectly.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, I got a lot better result on the soldermask using thinner for the Vitrea 160 paint.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-4768091149705989272?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4768091149705989272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4768091149705989272'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/08/hall-sensor-board-take-2.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-INvsN3rI/AAAAAAAAAjs/NfAIfQ0d1GY/s72-c/hall_2_soldered_640.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3228373739466543395</id><published>2009-08-09T21:29:00.004-05:00</published><updated>2009-08-09T21:35:43.183-05:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-GSfMC_5I/AAAAAAAAAjk/9rx9Grr9NS0/s1600-h/wz_pop_800.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 171px;" src="http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-GSfMC_5I/AAAAAAAAAjk/9rx9Grr9NS0/s200/wz_pop_800.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5368156933016715154" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-GHXwaMbI/AAAAAAAAAjc/HxWk006aDFg/s1600-h/wz_800.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 159px;" src="http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-GHXwaMbI/AAAAAAAAAjc/HxWk006aDFg/s200/wz_800.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5368156742043185586" /&gt;&lt;/a&gt;Wart Zapper! Here is a circuit I found on the web. I claimed to zap warts (something I wanted to do. Long story short, &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IT WORKS :D&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I followed the directions &lt;a href="http://www.zen22142.zen.co.uk/Circuits/Misc/wart_zap/wart_zapper.htm"&gt;here&lt;/a&gt; using SMD parts and adjusting the layout to fit on one side.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jay&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3228373739466543395?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3228373739466543395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3228373739466543395'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/08/wart-zapper-here-is-circuit-i-found-on.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_45gEBj4xUTA/Sn-GSfMC_5I/AAAAAAAAAjk/9rx9Grr9NS0/s72-c/wz_pop_800.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-6755238048226994399</id><published>2009-08-01T21:50:00.000-05:00</published><updated>2009-08-01T22:03:19.310-05:00</updated><title type='text'></title><content type='html'>&lt;b&gt;Hall sensor break out board results:&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, 1.1mm was just too small :) Never got it to work. Oh well, it was a long shot by hand for sure.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_45gEBj4xUTA/SnT_aHCoN0I/AAAAAAAAAjE/ktAGsYkYct4/s1600-h/failed_800.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 62px;" src="http://3.bp.blogspot.com/_45gEBj4xUTA/SnT_aHCoN0I/AAAAAAAAAjE/ktAGsYkYct4/s200/failed_800.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5365193880136857410" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I redid it for a "bigger " sensor device. Also, I am playing with a soldermask technique I found at www.diyaudio.com. It uses a glass paint called Vitrea 160. The image above I painted it with a narrow drush and avoided the pads. Then let it dry for a day and baked it to fuse the paint.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_45gEBj4xUTA/SnT_1D5AKkI/AAAAAAAAAjM/6-ZyUlqDk28/s1600-h/hall_2_soldered_800.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 100px;" src="http://3.bp.blogspot.com/_45gEBj4xUTA/SnT_1D5AKkI/AAAAAAAAAjM/6-ZyUlqDk28/s200/hall_2_soldered_800.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5365194343147645506" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's a work in progress as I'm not fomd of the "blobiness" of the paint. Trying to get the glass paint smooth is proving a challenge. I want the paint to flow and level out, but it doesn't. I may have to buy some of the thinner to see how that goes. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_45gEBj4xUTA/SnUAo5nnVHI/AAAAAAAAAjU/bMvRk3O7eMo/s1600-h/soldermask_test_640.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 184px; height: 200px;" src="http://2.bp.blogspot.com/_45gEBj4xUTA/SnUAo5nnVHI/AAAAAAAAAjU/bMvRk3O7eMo/s200/soldermask_test_640.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5365195233743557746" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This last image shows a test I did using Press-N-Peel blue to mask the pads. I then painted over everything, baked it, and then used acetone to remove the mask (and paint on top. Worked really well, just need to improve my PNP blue techie as the mask smeared (due to too high heat and pressure I'm sure).&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Jay&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-6755238048226994399?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6755238048226994399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6755238048226994399'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/08/hall-sensor-break-out-board-results.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_45gEBj4xUTA/SnT_aHCoN0I/AAAAAAAAAjE/ktAGsYkYct4/s72-c/failed_800.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5641879851633926422</id><published>2009-07-26T22:36:00.001-05:00</published><updated>2009-07-27T13:00:27.729-05:00</updated><title type='text'></title><content type='html'>I new milled circuit. Helping out a guy I met on the web that wanted a circuit milled. This is just a test to see if I can do the SMD pads. With the Widgetmaster and Wolfgang ... yep :) The smallest pads are .254mm wide. This is right off the mill with no "cleaning" of the whiskers of copper. I'm impressed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Removed by request.&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_45gEBj4xUTA/Sm0hDJTQ29I/AAAAAAAAAi8/jbeNPduM9j4/s1600-h/proto1_1024.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5641879851633926422?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5641879851633926422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5641879851633926422'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/07/i-new-milled-circuit.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-6512547136122718241</id><published>2009-07-24T18:19:00.000-05:00</published><updated>2009-07-24T18:29:58.074-05:00</updated><title type='text'></title><content type='html'>&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; white-space: pre-wrap; "&gt;Milled an illuminame for me :D&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:-webkit-monospace;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45gEBj4xUTA/SmpBvE1MfRI/AAAAAAAAAik/pWeZwJlanJQ/s1600-h/Prius_sign_800.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 123px;" src="http://1.bp.blogspot.com/_45gEBj4xUTA/SmpBvE1MfRI/AAAAAAAAAik/pWeZwJlanJQ/s320/Prius_sign_800.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5362170583344512274" /&gt;&lt;/a&gt;1/4" Lexan. I bought some ball nose endmills. The rouging pass was with a 1/8" 2-flute end mill. The finish pass was a 1/16" ballnose. The max depth is 1/10". The sign is roughly 8 x 3.5"&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I plan to light it from underneath.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_45gEBj4xUTA/SmpC6KhwyiI/AAAAAAAAAi0/NNXapJtqRZ8/s1600-h/Prius_sign_back_800.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_45gEBj4xUTA/SmpC6KhwyiI/AAAAAAAAAi0/NNXapJtqRZ8/s320/Prius_sign_back_800.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5362171873363806754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-6512547136122718241?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6512547136122718241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6512547136122718241'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/07/milled-illuminame-for-me-d-14-lexan.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_45gEBj4xUTA/SmpBvE1MfRI/AAAAAAAAAik/pWeZwJlanJQ/s72-c/Prius_sign_800.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-6588583174511459320</id><published>2009-07-23T15:47:00.000-05:00</published><updated>2009-07-23T15:50:43.381-05:00</updated><title type='text'></title><content type='html'>I added a more precise spindle to my CNC router.&lt;br /&gt;&lt;br /&gt;I broke down and bought a mount for my Wolfgang spindle to mount it to the Widgetmaster router. Was it worth it? You tell me...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_45gEBj4xUTA/SmjM1V5yqZI/AAAAAAAAAiU/PwZLSpMOQ3Y/s1600-h/Wolfgang_800.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 198px; height: 200px;" src="http://2.bp.blogspot.com/_45gEBj4xUTA/SmjM1V5yqZI/AAAAAAAAAiU/PwZLSpMOQ3Y/s200/Wolfgang_800.jpg" alt="" id="BLOGGER_PHOTO_ID_5361760573169248658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ran a test circuit to compare...&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_45gEBj4xUTA/SmjM_RnzOnI/AAAAAAAAAic/XDAH4wdJHm4/s1600-h/test_cir_800.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 110px;" src="http://3.bp.blogspot.com/_45gEBj4xUTA/SmjM_RnzOnI/AAAAAAAAAic/XDAH4wdJHm4/s320/test_cir_800.jpg" alt="" id="BLOGGER_PHOTO_ID_5361760743818738290" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-6588583174511459320?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6588583174511459320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6588583174511459320'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/07/i-added-more-precise-spindle-to-my-cnc.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_45gEBj4xUTA/SmjM1V5yqZI/AAAAAAAAAiU/PwZLSpMOQ3Y/s72-c/Wolfgang_800.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-2597437303076673818</id><published>2009-07-07T23:01:00.000-05:00</published><updated>2009-07-07T23:15:52.765-05:00</updated><title type='text'></title><content type='html'>I know, I know ... It's been a long time since my last update. However I wanted to share this one. I was contacted by my alma mater to help them mount a SMD hall effect device. Rather than ask me what would be best, they already ordered the part. It's unbelievably small. How small, 1.1mm square!&lt;br /&gt;&lt;br /&gt;Yeah, have a look at what I milled out:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_45gEBj4xUTA/SlQbc5ZlS0I/AAAAAAAAAgs/JMe2XuUI_Fw/s1600-h/hal_bob.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 96px;" src="http://3.bp.blogspot.com/_45gEBj4xUTA/SlQbc5ZlS0I/AAAAAAAAAgs/JMe2XuUI_Fw/s320/hal_bob.png" alt="" id="BLOGGER_PHOTO_ID_5355936040108772162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Even closer:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_45gEBj4xUTA/SlQbsAgPh7I/AAAAAAAAAg0/5uWFE0j3-_s/s1600-h/hal_bob_zoom.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 302px; height: 320px;" src="http://2.bp.blogspot.com/_45gEBj4xUTA/SlQbsAgPh7I/AAAAAAAAAg0/5uWFE0j3-_s/s320/hal_bob_zoom.png" alt="" id="BLOGGER_PHOTO_ID_5355936299713791922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The whole board is about 1.5 inches. There are 2 surface mount capacitors in the bottom right. They are size 805 for those that care :D&lt;br /&gt;&lt;br /&gt;I'll update when I actually mount the switch and test it. This is a BGA device (4 balls) ... I've never soldered a BGA but plan to use my hot air station. My other option is to buy a skillet from goodwill and do a reflow.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-2597437303076673818?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2597437303076673818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2597437303076673818'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/07/i-know-i-know.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_45gEBj4xUTA/SlQbc5ZlS0I/AAAAAAAAAgs/JMe2XuUI_Fw/s72-c/hal_bob.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-4682102410855726879</id><published>2009-01-12T15:29:00.000-06:00</published><updated>2009-01-12T15:31:49.208-06:00</updated><title type='text'></title><content type='html'>As usually happens my attention gets moved from robotics into some subset. IN this case, CNC has my full attention. Most of my adventures are posted at www.cnczone.com versus here. I also have been adding new videos to youtube. I was hoping to get involved with the students at my alma mater to get me back to robotics but it didn't work out.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-4682102410855726879?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4682102410855726879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4682102410855726879'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2009/01/as-usually-happens-my-attention-gets.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5021082838847436978</id><published>2008-09-27T23:10:00.000-05:00</published><updated>2008-09-28T00:08:30.431-05:00</updated><title type='text'></title><content type='html'>Milling a printed circuit. I have been planning the time when I could mill my own circuits to save the hours of tedious point to point wiring I've done for some of my projects. While it didn't turn out as well as I hoped, I milled my first circuit tonight.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/I9bNOQgkeSk&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/I9bNOQgkeSk&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5021082838847436978?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5021082838847436978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5021082838847436978'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/09/milling-printed-circuit.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-8948392167780339114</id><published>2008-08-14T02:30:00.000-05:00</published><updated>2008-08-14T02:36:30.542-05:00</updated><title type='text'></title><content type='html'>Update 8/14/2008&lt;br /&gt;&lt;br /&gt;One on my goals is to be able to mill my own circuit boards. I done it using the toner transfer method and etching but I want to use the mill to do it. To do this I know I'll need a faster spindle than the one that is on my mill. So I recently purchased a high speed spindle from Wolfgang Engineering. But, I needed to make a mount for it. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_45gEBj4xUTA/SKPfw9Mr3FI/AAAAAAAAANk/bNviV9S51aU/s1600-h/DSC01247.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_45gEBj4xUTA/SKPfw9Mr3FI/AAAAAAAAANk/bNviV9S51aU/s200/DSC01247.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234273224089132114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have a look at the process &lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/3dDOq2buRYg"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/3dDOq2buRYg" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-8948392167780339114?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8948392167780339114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8948392167780339114'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/08/update-8142008-one-on-my-goals-is-to-be.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_45gEBj4xUTA/SKPfw9Mr3FI/AAAAAAAAANk/bNviV9S51aU/s72-c/DSC01247.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-7001022382201172965</id><published>2008-07-19T21:54:00.000-05:00</published><updated>2008-07-19T21:55:35.498-05:00</updated><title type='text'></title><content type='html'>Update 7/19/2008:&lt;br /&gt;&lt;br /&gt;Some testing of PCB-gcode on my mill. I added home switches. I mounted the Y axis one but am waiting for my extension kit from CNCFusion before mounting the X.&lt;br /&gt;&lt;br /&gt;Anyway here is a short video of a test mill:&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/Ob6o2845QPU"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/Ob6o2845QPU" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-7001022382201172965?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/7001022382201172965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/7001022382201172965'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/07/update-7192008-some-testing-of-pcb.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-2186164917301971185</id><published>2008-07-16T22:27:00.000-05:00</published><updated>2008-07-16T23:05:11.906-05:00</updated><title type='text'></title><content type='html'>Updates July 16, 2008&lt;br /&gt;&lt;br /&gt;I have posted some pictures of my mill in it's new &lt;a href="http://picasaweb.google.com/jay.couture/CNC02"&gt;home&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/SH7CdBBH22I/AAAAAAAAAK0/BQcTfW5Nxg4/s1600-h/DSC00129.JPG"&gt;&lt;img style="float:left; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_45gEBj4xUTA/SH7CdBBH22I/AAAAAAAAAK0/BQcTfW5Nxg4/s200/DSC00129.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5223826421541493602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition, I am getting ready to start milling my own prototype PCBs. For this I have found a free ULP for Eagle CAD that converts the board drawing to Gcodes. It's called &lt;a href="http://groups.yahoo.com/group/pcb-gcode/?yguid=278178170"&gt;PCB-Gcode&lt;/a&gt;. In my excitement, I also decided to contribute some time to updating some C++ optimization code for PCB-Gcode output. It works very well as you can see in the sample images I uploaded to my Picasa album.&lt;br /&gt;&lt;br /&gt;Now I'm working on a GUI interface using &lt;a href="http://trolltech.com/solutions/solutions-opensource"&gt;Qt&lt;/a&gt;. A small learning curve. More about milling PCBs can be found &lt;a href="http://www.millpcbs.com"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-2186164917301971185?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2186164917301971185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2186164917301971185'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/07/updates-july-16-2008-i-have-posted-some.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_45gEBj4xUTA/SH7CdBBH22I/AAAAAAAAAK0/BQcTfW5Nxg4/s72-c/DSC00129.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-1984802735738206293</id><published>2008-06-30T10:43:00.000-05:00</published><updated>2009-02-02T21:44:31.974-06:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.nutsvolts.com/images/covers/full/71.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.nutsvolts.com/images/covers/full/71.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A new project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My son took immediate notice of this month's Nuts&amp;amp;Volts cover. Displayed are 3 LED lit name plates ... one being EVAN. "Daddy will you make Evan for me". I jumped at the chance/reason to get my CNC up and running. So I spent Saturday learning/re-learning how to use CAM, Mach3, and my CNC mini-mill.&lt;br /&gt;&lt;br /&gt;I used a bamboo organizer box as the base/case and a piece of PVC for the top (that stuff is too useful IMHO). I am using 6 blue LEDS running off a 5 V 270mAh receiver pack (from my RC stash) drawing 20mA.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_45gEBj4xUTA/SGkAmHPuBJI/AAAAAAAAAFU/Y_ufaOQDZQ8/s1600-h/DSC00121.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_45gEBj4xUTA/SGkAmHPuBJI/AAAAAAAAAFU/Y_ufaOQDZQ8/s320/DSC00121.JPG" alt="" id="BLOGGER_PHOTO_ID_5217702298065437842" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/SGkAlXVvDuI/AAAAAAAAAFM/P8iHh5A30qM/s1600-h/DSC00122.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_45gEBj4xUTA/SGkAlXVvDuI/AAAAAAAAAFM/P8iHh5A30qM/s320/DSC00122.JPG" alt="" id="BLOGGER_PHOTO_ID_5217702285205769954" border="0" /&gt;&lt;/a&gt;Of course this is just the beginning, he already want version 2 with blinking/fading lights and knobs and switches.&lt;br /&gt;&lt;br /&gt;Edit, not too long after I decided to make some signs for a buddy's little girls. Rather than mill through, I back engraved the acrylic for a nice effect. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_45gEBj4xUTA/SYe9P8zqLMI/AAAAAAAAARo/lQ0HUrh-xSo/s1600-h/madeline_800.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_45gEBj4xUTA/SYe9P8zqLMI/AAAAAAAAARo/lQ0HUrh-xSo/s200/madeline_800.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5298411568343166146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-1984802735738206293?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1984802735738206293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1984802735738206293'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/06/new-project.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_45gEBj4xUTA/SGkAmHPuBJI/AAAAAAAAAFU/Y_ufaOQDZQ8/s72-c/DSC00121.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-4464339169008969112</id><published>2008-03-18T22:21:00.000-06:00</published><updated>2008-03-25T16:12:00.584-06:00</updated><title type='text'></title><content type='html'>Something new:&lt;br /&gt;&lt;br /&gt;I leaned something new the other day and decided to give it a go. Charlieplexing is a type of multiplexing for LEDs that allows N pins to control N*(N-1) LEDs. So 5 pins on a Tiny13 can control 20Leds. I used 14 and here is the result:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a style="left: 348px ! important; top: 15px ! important;" title="Block this object with Adblock Plus" class="abp-objtab-07668289639177368 visible ontop" href="http://www.youtube.com/v/S3KoxjLoiDA"&gt;&lt;/a&gt;&lt;a style="left: 348px ! important; top: 15px ! important;" title="Block this object with Adblock Plus" class="abp-objtab-07668289639177368 visible ontop" href="http://www.youtube.com/v/QTS8NVC_kB4"&gt;&lt;/a&gt;&lt;a style="left: 348px ! important; top: 15px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab-05270599471294489 visible ontop" href="http://www.youtube.com/v/QTS8NVC_kB4"&gt;&lt;/a&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/QTS8NVC_kB4"&gt;  &lt;embed src="http://www.youtube.com/v/QTS8NVC_kB4" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Update: I tried POV (persistence of vision) but I'm not really clear on what needs to happen for the affect to show up. It was a half-hearted attempt to say the least.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Jay&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-4464339169008969112?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4464339169008969112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4464339169008969112'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/03/something-new-i-leaned-something-new.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-7386623073997358640</id><published>2008-03-13T21:10:00.000-06:00</published><updated>2008-03-13T21:35:37.029-06:00</updated><title type='text'></title><content type='html'>Gripper: final version with new video and source code&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a style="left: 348px ! important; top: 15px ! important;" title="Block this object with Adblock Plus" class="abp-objtab-06702280120080802 visible ontop" href="http://www.youtube.com/v/omC6sVKlZhM"&gt;&lt;/a&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/omC6sVKlZhM"&gt;  &lt;embed src="http://www.youtube.com/v/omC6sVKlZhM" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;As promised here is the &lt;a href="http://www.avrfreaks.net/index.php?module=Freaks%20Academy&amp;amp;func=viewItem&amp;amp;item_id=1372&amp;amp;item_type=project"&gt;source code&lt;/a&gt;. Also, I hinted at another project I want to tackle .. .that being an electromagnetic levitator. I think the Tiny is up to the task :)&lt;br /&gt;&lt;br /&gt;Of course it would behoove me to get my development environment built too. I programmed the Tiny at least 50 times, by removing it from the socket on my circuit. I need to order a ZIF socket, a 6-pin programming cable, and a longer USB cable so I can do ISP and debug wire on future circuits :)&lt;br /&gt;&lt;br /&gt;Jay&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-7386623073997358640?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/7386623073997358640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/7386623073997358640'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/03/gripper-final-version-with-new-video.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5327054759286383697</id><published>2008-03-12T15:56:00.000-06:00</published><updated>2008-03-12T16:05:08.425-06:00</updated><title type='text'></title><content type='html'>Updates: 3/12/2008:&lt;br /&gt;&lt;br /&gt;First let me say that if you are an engineer and a father a great "toy" for both you and your kid(s) is the Snap Circuits kits from www.elenco.com (available at Radio Shack for a premium price). We bought the Jr. kit as my son is only 4 and he and I have already made all 101 circuits in one day. I have since ordered the Extreme kit which should offer all kinds of experiments. it just arrived today :D I recommend you get the Extreme first.&lt;br /&gt;&lt;br /&gt;Now back to my gripper controller project. I have decided to continue improving the design some more. Most all my friends that have seen the video have commented that the motion looks too jerky and that it's not obvious that my hand is controlling the position of the servo. To address these I am going to modify the code to only update the servo position at 5Hz even though the A2D is being read at 20Hz. Furthermore, the servo position will only move +- 1 each iteration. I may change this based on the actual movement I see of course. As for the second issue, I'll just shoot a better video and maybe add some explaining :) I also plan to add in another sensor to control the gripper opening and closing the same way.&lt;br /&gt;&lt;br /&gt;Forward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5327054759286383697?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5327054759286383697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5327054759286383697'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/03/updates-3122008-first-let-me-say-that.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5396128934579895270</id><published>2008-03-10T22:19:00.000-06:00</published><updated>2008-03-11T12:51:36.892-06:00</updated><title type='text'></title><content type='html'>Update 3/10/2008:&lt;br /&gt;&lt;br /&gt;I been MIA working on some paying projects. After I completed that, I got drawn into a new venture with a buddy. I can't say too much about what it'll be, but in order to get ready for it I've been playing with a new chip (to me anyway). The Atmel Tiny13.&lt;br /&gt;&lt;br /&gt;Pros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;8-pin dip $1.29&lt;/li&gt;&lt;li&gt;No xtal needed has internal clocks up to 9.6MHz&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Supports in-circuit programming&lt;/li&gt;&lt;li&gt;1K flash, .5k EEPROM&lt;/li&gt;&lt;li&gt;6 I/O all of which can be digital or 10-bit A2D&lt;/li&gt;&lt;li&gt;Requires a pull-up on reset&lt;/li&gt;&lt;li&gt;Uses the same GCC compiler as I am used to&lt;/li&gt;&lt;/ul&gt;Cons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Internal clocks while they can be calibrated are somewhat inaccurate (thought they work fine for what I want)&lt;/li&gt;&lt;li&gt;1K of flash goes fast :)&lt;/li&gt;&lt;/ul&gt;In a nutshell I wanted a servo tester/driver. So I surfed the web, found snippets of code here and there, and came up with a little demo. If I were to use this on my robot, I would change it to trigger a "pickup" sequence of servo moves. However, I've never really played with the A2D on an Atmel and I purchased 4 Sharp &lt;a href="http://www.roboticsconnection.com/p-22-sharp-gp2d12-ir-sensor.aspx"&gt;gp2d12&lt;/a&gt;'s so I figured why not. The A2D is read about 40Hz which is also how often the servos get a new value (if required). The timer ISR is set to execute every 13us. At the end of every 20ms frame, the servo signals are turned on. Each run of the 13us timer subtracts 1 from the servo count until it reaches 0. Then the servo pin is turned off. I'm only using the upper 8-bits of the A2D conversion (16-bits adds a lot to the program size and I don't think it's needed). The most current reading is compared to the previous reading + or - 7. This is to prevent the servo from "jerking" all over the place, but it results in visible "stops" in the video.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a style="left: 339px ! important; top: 15px ! important;" title="Block this object with Adblock Plus" class="abp-objtab-0717557104516327 visible ontop" href="http://www.youtube.com/v/M3CyBqVEQV4"&gt;&lt;/a&gt;&lt;a style="left: 339px ! important; top: 15px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab-06412757654753907 visible ontop" href="http://www.youtube.com/v/M3CyBqVEQV4"&gt;&lt;/a&gt;&lt;a style="left: 339px ! important; top: 15px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab-06412757654753907 visible ontop" href="http://www.youtube.com/v/M3CyBqVEQV4"&gt;&lt;/a&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/M3CyBqVEQV4"&gt;  &lt;embed src="http://www.youtube.com/v/M3CyBqVEQV4" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Here is a video of the results. I may add to it, I may not. The important thing is that on a 1" square PCB I can have a multi servo controller that uses analog feedback to position the servos.&lt;br /&gt;&lt;br /&gt;I promise to post the source code once I get it cleaned up (this was just quick and dirty) and commented.&lt;br /&gt;&lt;br /&gt;Forward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5396128934579895270?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5396128934579895270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5396128934579895270'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/03/update-3102008-i-been-mia-working-on.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-272714101990374964</id><published>2008-01-21T23:03:00.000-06:00</published><updated>2008-01-21T23:06:54.942-06:00</updated><title type='text'></title><content type='html'>Progress 1/21/2008&lt;br /&gt;&lt;br /&gt;While I should be working on a different project I worked on my robotic gripper design today. I have posted video of prototypes 2 and 3.&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 15px ! important;" title="Block this object with Adblock Plus" class="abp-objtab-085276771131372 visible ontop" href="http://www.youtube.com/v/Ywz2bZYKKkU"&gt;&lt;/a&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ywz2bZYKKkU"&gt;&lt;embed src="http://www.youtube.com/v/Ywz2bZYKKkU" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 15px ! important;" title="Block this object with Adblock Plus" class="abp-objtab-085276771131372 visible ontop" href="http://www.youtube.com/v/-9pwPNnW5tM"&gt;&lt;/a&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-9pwPNnW5tM"&gt;&lt;embed src="http://www.youtube.com/v/-9pwPNnW5tM" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-272714101990374964?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/272714101990374964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/272714101990374964'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/01/progress-1212008-while-i-should-be.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-6156223946230960818</id><published>2008-01-02T15:12:00.001-06:00</published><updated>2008-01-02T15:15:57.224-06:00</updated><title type='text'></title><content type='html'>I'm still here, just recovering from the Holidays. My plans to use an RTOS have proved to be too much work and not enough progress so I am going back to my interactive code. At this point my robot is still and R&amp;amp;D tool for me to test my code for a specific purpose so I don't actually need concurrent threads of behaviors.&lt;br /&gt;&lt;br /&gt;My next little project is to code to control my 2-DOF gripper. What's that you say, you didn't see any posts about my updated gripper. I'll post some photos soon. The code shouldn't be difficult using the AVRLib library though.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-6156223946230960818?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6156223946230960818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6156223946230960818'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2008/01/im-still-here-just-recovering-from.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-1704862212819728932</id><published>2007-11-30T12:55:00.000-06:00</published><updated>2007-11-30T13:00:21.835-06:00</updated><title type='text'></title><content type='html'>One step forward, two steps back:&lt;br /&gt;&lt;br /&gt;Well I shot myself in the foot so to speak. I took my code to work to hammer out some of the details. This meant a lot of changes without being able to test them. Somehow I incorporated old code into the new code and contaminated both :(&lt;br /&gt;&lt;br /&gt;Long story short, I'm going back to a reliable backup on 11/25/2007 which was before my last two posts. Thus, I'm progressing in the wrong direction. The good news it, I'm incorporating the code optimizations I made recently into the old code prior to me breaking out the functions into their own files. This way I can know they work before I change too many things at once.&lt;br /&gt;&lt;br /&gt;On a good note, I've been mocking up a claw mechanism at lunch today. Saw a YouTube video of one I liked and fashioned a working model out of craft sticks.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-1704862212819728932?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1704862212819728932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1704862212819728932'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/11/one-step-forward-two-steps-back-well-i.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-943978597388130124</id><published>2007-11-28T13:55:00.000-06:00</published><updated>2007-11-28T14:54:29.944-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RTOS'/><title type='text'></title><content type='html'>Updates 11/28/2007:&lt;br /&gt;&lt;br /&gt;I have successfully added RTOS (real time operating system) to my code. I'm using FreeRTOS (www.freertos.org) and it was relatively painless to incorporate. Some of the details that slowed me down:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The kernel timer uses Output Compare 1A which is the same I was using for the right motor PWM. &lt;/li&gt;&lt;li&gt;The port.c file configures the Timer 1 only for Output Compare 1A which overwrites all my settings for pwm I set in my motorInit code. As such, I changed the code in port.c to use |= when setting it's bits. This is the only kernel change I had to make.&lt;/li&gt;&lt;li&gt;I used to have all my code in one file. This is due to the fact that I just kept adding on to experimental code rather than formalize everything. Prior to the addition of the RTOS, I broke out functions in to separate files based on organization (motors, motion, and eventually sensors).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I was also using a lot of global variables (bad form I know but it's been fixed) in my one file. Rather than declare them extern in my new files (yes I tried that at first), I added functions to "get" and "set" key variables.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The benefits of this rework?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Now I can add a task to the list to execute without other functions having to call it or be aware.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No blocking (well except for serial, but it's the lowest priority) so now pauses (which used to nop for x milliseconds) just yield to other processes.&lt;/li&gt;&lt;li&gt;Now I can build behaviors that can layer on top of each other and turn them on or off via a monitor/command line program.&lt;/li&gt;&lt;li&gt;Sensors will run in their own task loops (like sonar) at set intervals which was more difficult to time with function calls especially when something new was added to the mix.&lt;/li&gt;&lt;/ul&gt;All in all I'm very pleased with this decision and I know it'll pay bigger dividends as my experimentation increases.&lt;br /&gt;&lt;br /&gt;To do:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wire up the 4 IRPD sensors and 2 bump switches.&lt;/li&gt;&lt;li&gt;Code a wall following behavior&lt;/li&gt;&lt;li&gt;Code a avoid behavior (to drive/navigate) around an obstacle while still trying to get to a target coordinate :)&lt;/li&gt;&lt;/ul&gt;Other updates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I ordered a Lipo balancer for my battery. I got a great deal on the battery I use (4S 12C 33oomAH) and the replacement cost would be much more than I paid (thank you www.cheapbatterypacks.com) so I'm going to baby this one.&lt;/li&gt;&lt;li&gt;Through typos I ran my motors full speed using the new RTOS code. The measured speeds were 90 ticks/ 20ms. The  movie below shows the motors going 18 ticks/20ms so I plan to increase the max speed a bit. For shorter runs the code will auto slow the bot anyway, but this make longer distance "shorter" ;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-943978597388130124?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/943978597388130124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/943978597388130124'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/11/updates-11282007-i-have-successfully.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-2849308623289311991</id><published>2007-11-26T09:58:00.000-06:00</published><updated>2007-11-26T10:00:26.350-06:00</updated><title type='text'></title><content type='html'>Video of new code. Here is a short video of the robot now. The 4 commands I set are:&lt;br /&gt;go 5 5&lt;br /&gt;go -10 3&lt;br /&gt;go 0 0&lt;br /&gt;go 0 1&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sl_Q3Hf_xQQ&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/sl_Q3Hf_xQQ&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-2849308623289311991?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2849308623289311991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2849308623289311991'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/11/video-of-new-code.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-445446454824578103</id><published>2007-11-23T23:11:00.000-06:00</published><updated>2007-11-23T23:44:56.853-06:00</updated><title type='text'></title><content type='html'>Updates for 11/23/2007&lt;br /&gt;&lt;br /&gt;My code to command the robot to go x distance or turn x degrees works great .. .the issue is that due to slight differences in the motor speeds, the robot could be off by as much as an inch in a 2 foot span. So I decided to change the system over to a target based one.&lt;br /&gt;&lt;br /&gt;The code is inspired/copied from &lt;a href="http://www.geology.smu.edu/%7Edpa-www/robo/Encoder/imu_odo/"&gt;David P Anderson's&lt;/a&gt; find_target and odometry code. I did add some tweaks of my own, and I've not yet started on using an RTOS.&lt;br /&gt;&lt;br /&gt;I added a function that allows me to specify a target coordinate (x,y). Then I added find_target to my timer loop and call it every 30ms. The function looks at the distance and angle and commands the motors to those speeds. By using he distance left to set the speed I get nice fast and crisp movements. Before I added/fixed the code that your set the speeds proportionally, the robot was all over the map oscillating like crazy. Have a look at tonight's results.&lt;br /&gt;&lt;br /&gt;The robot starts at 0,0. I then commanded it to go to 5,5 (that in inches BTW) and then to go to -10, 3. The pink and yellow lines are there for reference. The blue line is the plot of the X and Y coordinates reported by the robot. I have the printout function send data every 40ms (a bit too fast really) so the point markers are really close.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_45gEBj4xUTA/R0e4xP_FDNI/AAAAAAAAACw/FM65jbfk4hk/s1600-h/odom.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_45gEBj4xUTA/R0e4xP_FDNI/AAAAAAAAACw/FM65jbfk4hk/s320/odom.jpg" alt="" id="BLOGGER_PHOTO_ID_5136277056283544786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To dos:&lt;br /&gt;1. Add the ability to create a point array from the drive pattern routine. Then have the robot traverse the array.&lt;br /&gt;2. Figure out how to call the print routine every X ms. Because it uses an interrupt, it'll have to be outside the timer routine that I use for the PID and find_target.&lt;br /&gt;3. Find a suitable and ready to go RTOS to port my code to. I'd rather quit fooling with ms timers and just run all the processes concurrently and have a central function call each when it's their turn.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-445446454824578103?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/445446454824578103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/445446454824578103'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/11/updates-for-11232007-my-code-to-command.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_45gEBj4xUTA/R0e4xP_FDNI/AAAAAAAAACw/FM65jbfk4hk/s72-c/odom.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-8161552780947148422</id><published>2007-10-13T23:21:00.000-05:00</published><updated>2007-10-13T23:35:56.706-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;Lots of discoveries tonight!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Man what a day. I worked with the students today on getting the TIMER basics down, configuring their development platforms (WinAVR, AVR Studio, JTAG ICE), and learning how useful Excel is for calculating TIMER registers.&lt;br /&gt;&lt;br /&gt;During all the back and forth, I had an epiphany. I was using code that limited my PID adjustment to +-100 (as in percent). I was using 10-bit PWM, but by limiting myself to (let's just look at forward speed) 100 possible values (out of 1024 (2^10)). Well that's still not totally true either. I'm using locked anti-phase PWM so only values above 512 generate forward motion. But I digress, I'm still only using 1/5 of the total values I could. So I modified my code and changed the limits to +-511. It works, and a lot better. Still need to tune the PID constants, but things are a lot smoother.&lt;br /&gt;&lt;br /&gt;On a bad/disappointing note I ran my Lipo to 12.8V. Minimum is 12V (3V per cell) but I decided to check (for the first time since I had it) the individual cell voltages. Bad news:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cell 1 - 2.9V&lt;/li&gt;&lt;li&gt;cell 2 - 3.49V&lt;/li&gt;&lt;li&gt;cell 3 -3.02V&lt;/li&gt;&lt;li&gt;cell 4 - 3.34V&lt;/li&gt;&lt;/ul&gt;Wow, not good. My charger wouldn't even attempt to charge cell 1. Lipo charges are constant current, constant voltage chargers. I have a pretty sophisticated NiMh/NiCD/Pb charger. I set it for 2 NiMH and the charge current to .1A. I connected my DMM and monitored the voltage until it was 3.2V. Now the Lipo charger is charger that cell first. Only 3 more to go. Oh well, better than having to replace the pack.I'm not drawing huge currents or this could have been a lot worse.&lt;br /&gt;&lt;br /&gt;From now on, I'm going to check balance every time.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-8161552780947148422?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8161552780947148422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8161552780947148422'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/lots-of-discoveries-tonight-man-what.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5680570265613811196</id><published>2007-10-11T21:50:00.000-05:00</published><updated>2007-10-11T21:54:16.508-05:00</updated><title type='text'></title><content type='html'>Video&lt;br /&gt;&lt;br /&gt;As promised. A short video of my bot in action. The video starts with me showing the pattern function. I told it to drive a pattern with 5 vertices  and sides that are 20" long. At this point I fix the speed at a mild rate. After the pattern completes I instruct it to drive 24" at full speed. You can really see the left steer. Then I instruct the bot to turn 360 degrees full speed.&lt;br /&gt;&lt;center&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/13KKMkK3QbQ"&gt;  &lt;embed src="http://www.youtube.com/v/13KKMkK3QbQ" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5680570265613811196?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5680570265613811196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5680570265613811196'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/video-as-promised.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3371854096961411122</id><published>2007-10-11T10:26:00.000-05:00</published><updated>2007-10-11T11:18:35.322-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;Progress!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Last night I was able to connect to my robot, send commands, and receive output. This is huge (to me at least). Next step is to modify the receive code to parse out the data into arrays. Then to plot them. To do this, I will create a JPanel class that I can override the paintComponent function to do my bidding.&lt;br /&gt;&lt;br /&gt;This weekend is a bachelor weekend so I hope to have it mapping by Sunday. At which time I'll do a video ... finally.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/Rw5Mx_OgImI/AAAAAAAAACo/GERZWOR2Gtc/s1600-h/interface10_11_2007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_45gEBj4xUTA/Rw5Mx_OgImI/AAAAAAAAACo/GERZWOR2Gtc/s320/interface10_11_2007.jpg" alt="" id="BLOGGER_PHOTO_ID_5120114248036393570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3371854096961411122?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3371854096961411122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3371854096961411122'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/progress-last-night-i-was-able-to.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_45gEBj4xUTA/Rw5Mx_OgImI/AAAAAAAAACo/GERZWOR2Gtc/s72-c/interface10_11_2007.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5069023364212145075</id><published>2007-10-09T14:47:00.000-05:00</published><updated>2007-10-09T15:30:18.404-05:00</updated><title type='text'></title><content type='html'>More analysis&lt;br /&gt;&lt;br /&gt;I wanted to see how accurate my bot is at this time.  I took the output from the PID tests I did (see the  graph below) and added odometry calculations and plotted the X and Y coordinates based on the data.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_45gEBj4xUTA/Rwvjt_OgIlI/AAAAAAAAACg/ncOLyy8jdZ8/s1600-h/odometry.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_45gEBj4xUTA/Rwvjt_OgIlI/AAAAAAAAACg/ncOLyy8jdZ8/s320/odometry.jpg" alt="" id="BLOGGER_PHOTO_ID_5119435780642579026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;As you can see for 36" of travel my bot is off about .04". What else does this show ... that my left wheel leads the right wheel. Most interesting to me is that the the worse occasions of this steer is during velocity ramps. I may need to rethink my PID loop or add another component that can correct for this "steer". Then again, with an 8" diameter bot 40 thousandths of an inch doesn't seem that much ;)&lt;br /&gt;&lt;br /&gt;I'm still working on my Java interface. I have made some progress (like getting the serial ports to enumerate and populate a JComboBox, redesigned the GUI layout) but I still need to get the serial listener portion to connect and communicate. I haven't had a big enough block of time to sit down and get my head around it though.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5069023364212145075?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5069023364212145075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5069023364212145075'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/more-analysis-i-wanted-to-see-how.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_45gEBj4xUTA/Rwvjt_OgIlI/AAAAAAAAACg/ncOLyy8jdZ8/s72-c/odometry.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-672933699060827809</id><published>2007-10-06T09:42:00.000-05:00</published><updated>2007-10-06T09:56:38.844-05:00</updated><title type='text'></title><content type='html'>Version 1&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Here is my plan for version 1 of my GUI.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/RwefQvOgIjI/AAAAAAAAACQ/pKezYz2qQCQ/s1600-h/RobotUI.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_45gEBj4xUTA/RwefQvOgIjI/AAAAAAAAACQ/pKezYz2qQCQ/s320/RobotUI.jpg" alt="" id="BLOGGER_PHOTO_ID_5118234611433873970" border="0" /&gt;&lt;/a&gt;My plan is this. I will have a thread that does nothing but parse the incoming serial stream into a multidimensional array. The array components will consist of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;time (this will be the value of the free-running timer from the AVR)&lt;/li&gt;&lt;li&gt;left commanded velocity&lt;/li&gt;&lt;li&gt;right commanded&lt;/li&gt;&lt;li&gt;left measured velocity&lt;/li&gt;&lt;li&gt;right measured velocity&lt;/li&gt;&lt;li&gt;left distance (though I may omit these and let the GUI calculate these two)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;right distance&lt;/li&gt;&lt;li&gt;sonar reading&lt;/li&gt;&lt;li&gt;left PWM value (right now I'm set for 10-bit PWM, this might help me determine if I can use less resolution)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;right PWM value&lt;/li&gt;&lt;li&gt;left PID proportional value (the I is silent :) )&lt;br /&gt;&lt;/li&gt;&lt;li&gt;right PID proportional value&lt;/li&gt;&lt;li&gt;left PID derivative value&lt;/li&gt;&lt;li&gt;right PID derivative value&lt;/li&gt;&lt;/ul&gt;I'll need to format the string in the most efficient manner so I'm thinking HEX&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-672933699060827809?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/672933699060827809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/672933699060827809'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/version-1-here-is-my-plan-for-version-1.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_45gEBj4xUTA/RwefQvOgIjI/AAAAAAAAACQ/pKezYz2qQCQ/s72-c/RobotUI.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-1390937262940893520</id><published>2007-10-05T12:25:00.000-05:00</published><updated>2007-10-05T12:31:33.537-05:00</updated><title type='text'></title><content type='html'>I need a GUI&lt;br /&gt;&lt;br /&gt;Well, I want one for sure. I am tired of the 5 step process I'm using to capture my robot's output and plot it in Excel. Therefore, I'm starting work on a Java application that will plot the PID output, map the path the robot has taken, and allow interactivity with the robot.&lt;br /&gt;&lt;br /&gt;A buddy said I should try Netbeans (it's been a while since I did any Java coding but GUI layout was a PITA). With Netbeans I am able to design my GUI and then plug in my processing code. The GUI design is slick. Netbeans also have a nice UI for keeping my code straight and has it's own CVS.  Screen shots to come soon.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-1390937262940893520?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1390937262940893520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1390937262940893520'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/i-need-gui-well-i-want-one-for-sure.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-8936132978351696516</id><published>2007-10-04T09:37:00.001-05:00</published><updated>2007-10-04T11:28:05.778-05:00</updated><title type='text'></title><content type='html'>I doubled my encoder resolution.&lt;br /&gt;&lt;br /&gt;I modified my interrupt code to switch interrupt levels. On the Mega128 external interrupts 0-3 don't have the option of setting the interrupt level to both. Both meaning low to hi and hi to low edges. You get either or. So in my encoder code, I added a state variable to tell which was the last state. I'm only interrupting on the A channel but now I get double the interrupts by detecting both edges.&lt;br /&gt;&lt;br /&gt;The good news it my resolution has improved to .0047" per tick. The bad news it, I have to re-tune my PID loop :(&lt;br /&gt;&lt;br /&gt;Last night I decided to modify my motor control code to take in account how fast the bot is traveling, and how far it has left to go. The results are good and it has smoothed the ramping I had coded earlier. In fact, in hindsight, the previous code was too restrictive ... now the control is more adaptive. I know I keep promising a video, but there's always something I want to fix before showing it off. I'll do it tonight first thing before I enter another 3 hour coding stint.&lt;br /&gt;&lt;br /&gt;As for the PID, have a look at last night's capture.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_45gEBj4xUTA/RwUCu_OgIiI/AAAAAAAAACI/w1swSl6nVTI/s1600-h/pid10_3_07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 359px; height: 188px;" src="http://bp2.blogger.com/_45gEBj4xUTA/RwUCu_OgIiI/AAAAAAAAACI/w1swSl6nVTI/s320/pid10_3_07.jpg" alt="" id="BLOGGER_PHOTO_ID_5117499557845934626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The thick red is the left encoder measurement, the dashed pink is the right encoder. The yellow (click the image to see a bigger version) is the commanded left velocity. As you can see, I have a lot of oscillation now as well as an overdamped response. I need to go back and refresh my memory on PID tuning and what do I need to do to clean this up. One more thing, the instruction was to drive the robot forward 36". It took about 4.8 seconds.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-8936132978351696516?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8936132978351696516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8936132978351696516'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/i-doubled-my-encoder-resolution.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_45gEBj4xUTA/RwUCu_OgIiI/AAAAAAAAACI/w1swSl6nVTI/s72-c/pid10_3_07.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-6434813133330197942</id><published>2007-10-02T16:52:00.001-05:00</published><updated>2007-10-02T16:57:12.557-05:00</updated><title type='text'></title><content type='html'>Some long overdue updates&lt;br /&gt;&lt;br /&gt;Here is a screen shot of the Excel ploy of my PID output. Using my pattern code I told the bot the pattern had 12 verticies that were 5" long.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_45gEBj4xUTA/RwK-ivOgIgI/AAAAAAAAAB4/3g1O-Q5o6a4/s1600-h/position.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_45gEBj4xUTA/RwK-ivOgIgI/AAAAAAAAAB4/3g1O-Q5o6a4/s320/position.jpg" alt="" id="BLOGGER_PHOTO_ID_5116861630648427010" border="0" /&gt;&lt;/a&gt;I'll post a video of it in action tonight.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-6434813133330197942?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6434813133330197942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/6434813133330197942'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/some-long-overdue-updates-here-is.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_45gEBj4xUTA/RwK-ivOgIgI/AAAAAAAAAB4/3g1O-Q5o6a4/s72-c/position.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-2147684146845034046</id><published>2007-10-02T14:22:00.000-05:00</published><updated>2007-10-02T14:45:43.848-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;I'm back!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've completed the CNC conversion of my mill and have it sitting on my work bench. This means:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I can work on CNC in A/C comfort versus the garage&lt;/li&gt;&lt;li&gt;I have to be very mindful of "dust" on whatever I mill so I have only played with engraving wood&lt;/li&gt;&lt;li&gt;I need to make an enclosure so I can keep it in the house&lt;/li&gt;&lt;/ol&gt;I am working with a new group of students from the university. They are motivated, bt they are also 17 and 18hours this semester ... we'll see how it goes but I am positive that they will have a mobile platform by December.&lt;br /&gt;&lt;br /&gt;As for me, I need/want to improve my robot speed/positioning. My encoders are 1000PPR, If I can double, triple, or sextuple that I can increase my accuracy. I'm looking at replacing my motors and encoders with some new ones. The encoder will be mounted on the motor and I calculate 6000PPR with them. As a bonus they have a higher output RPM. The con is that they are 7.2V motors and my Lipo is 14V. I can control the peak voltage via PWM so it's not that big a concern. The other con is cost. We are talking $94.&lt;br /&gt;&lt;br /&gt;I need to post a video of what my robot looks like now. It's been a while, but I wrote a program the takes input variables for side length and number of verticies. It then commands the robot to draw that shape based on the calculated angles and distances. It works ok, but one motor always lags the other. My peak speed is 20 ticks for the PID time period I chose (20ms IIRC). This means I can command the robot to go 0 to 20 ticks. This is too small of a range. With the new motors, the range would be 0 to 120.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-2147684146845034046?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2147684146845034046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/2147684146845034046'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/10/im-back-ive-completed-cnc-conversion-of.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3575560302217065831</id><published>2007-09-21T11:09:00.001-05:00</published><updated>2007-09-21T11:11:05.425-05:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s1600-h/blogger_pic.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg" alt="" id="BLOGGER_PHOTO_ID_5112690641878393330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3575560302217065831?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3575560302217065831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3575560302217065831'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/09/blog-post.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s72-c/blogger_pic.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-8954724504476637959</id><published>2007-03-16T10:10:00.000-06:00</published><updated>2007-03-16T10:33:26.558-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Update March 16 2007: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Just wanted to post a graph of my measured velocities ... or put another way, how well my PD loop is controlling my motors. The motors have been commanded to go 14. 14 = 14 ticks per 20 ms. I have 1000ppr encoders on 3" wheels so that's .1357"/20ms at that speed. Expanding that the bot is traveling &lt;strong&gt;6.7&lt;/strong&gt; inches per second or &lt;strong&gt;407.12&lt;/strong&gt; inches per minute or &lt;strong&gt;33.9&lt;/strong&gt; feet per minute or just for grins &lt;strong&gt;.382&lt;/strong&gt; miles per hour :D&lt;br /&gt;&lt;br /&gt;Anyway, notice the error is only +-1 tick. I may play with adding in an integral component. The graph shows the output of the bot being commanded to drive in a 10" square. The first step drives both motors forward, then stop (it even reverse the motors to effect a quicker stop) then left reverse, right forward to turn to the left 90 degrees, the forward ...&lt;br /&gt;&lt;br /&gt;One other neat side affect is that the motors resist any change from the commanded speed. Put another way, if the robot is told to stop (left and right = 0) then if you try to push it, it will resist (actively turn on the motors in the reverse direction. Cool, but is a big battery drain as the current will shoot to 1.2 amps.&lt;br /&gt;&lt;br /&gt;Finally, at this PD rate (50Hz) the fastest encoder speed is 18ticks/20 ms which equals 8.7 in/s or 43.6 ft/min or .49 mph :)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://bp0.blogger.com/_45gEBj4xUTA/RfrB4DgkAFI/AAAAAAAAABk/-IeFgPMLMkA/s1600-h/pd_loop.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5042555901553410130" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_45gEBj4xUTA/RfrB4DgkAFI/AAAAAAAAABk/-IeFgPMLMkA/s400/pd_loop.jpg" border="0" /&gt;&lt;/a&gt; Onward,&lt;/p&gt;&lt;p&gt;Jay&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-8954724504476637959?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8954724504476637959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8954724504476637959'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/03/update-march-16-2007-just-wanted-to.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_45gEBj4xUTA/RfrB4DgkAFI/AAAAAAAAABk/-IeFgPMLMkA/s72-c/pd_loop.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-965561448795808613</id><published>2007-03-13T11:14:00.000-06:00</published><updated>2007-03-13T11:22:54.292-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Update March 13, 2007:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The BlueSMiRF is paying huge dividends in my ability to code and test. My PID function is working great and I have set it for 50Hz. I have expanded my interactive menu to allow me to command distances and angles to the bot. Last night I finally added a separate switch for the motors, and mounted the motor controller circuit. I’ve been using a 3S Lithium Polymer battery for my power source, and am thinking of getting a 4S to see how fast I can go.&lt;br /&gt;&lt;br /&gt;My next task will be to add the SoundGin circuit and play with announcing the current command or some phrase. Then I want to add odometry calculations and command waypoints. Then add in the sonar and some prox sensors. I’m still having fun with the blue tooth though.&lt;br /&gt;&lt;br /&gt;On the CNC front, I lucked out (or maybe not, time will tell) in winning a CNC kit for my mill off Ebay. I’ve ordered the last missing components from McMaster Carr (great prices and fair shipping) and plan to install it this weekend. In the mean time, I need to disassemble the ball nuts to make sure they are not missing any and to clean them. It’s be a waste of time to install it all only to have to take it apart due to an issue regarding the ball nuts … at least that’s the way I see it.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-965561448795808613?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/965561448795808613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/965561448795808613'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/03/update-march-13-2007-bluesmirf-is.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-5623452261550185291</id><published>2007-02-26T14:34:00.000-06:00</published><updated>2007-02-26T15:00:07.204-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Update 2/26/2007: &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;It's been a long time since I last posted. I have only one excuse CNC :) It's consumed me and my attention for 3 months now. What do I have to show for it? A mini mill, a wish list, a parts list, and an AWAOL machinist that was going to help me get there.&lt;br /&gt;&lt;br /&gt;On the robotic front I got inspired to help the local college team again and thus worked on some A2D stuff for line sensors. I also spent 5 hours with them troubleshooting their LCD, braiding wires, and answering questions. The results: they were able to follow a line fairly well before the night was over. But, the system was a bit unstable if the angle to the line was too great the robot would run right over it. Thus we started discussing how to slave the wheel speeds together to truly go straight.&lt;br /&gt;&lt;br /&gt;Enter PID (proportional integral derivative) loops and controls. Mobile Robotics implements a PI loop, while others using a PD (&lt;a href="http://www.geology.smu.edu/~dpa-www/robots/doc/speedctl.txt"&gt;http://www.geology.smu.edu/~dpa-www/robots/doc/speedctl.txt&lt;/a&gt;). This weekend I typed out the code in the Mobile Robotics book modifying what I thought needed to be and letting her rip. Let me just say that I am using anti-phase PWM where 0 to 128 is reverse and 128 to 255 is forward with the duty cycle getting bigger the further you get from 128. Well, the robot did in fact slave the two motors together, but in opposite directions! When I added code to stop it after 4000 ticks (4 revolutions) the robot then when in a straight line. Great ... now why is it doing that?!&lt;br /&gt;&lt;br /&gt;Long story short, I knocked together an Excel spreadsheet to simulate the result of the PI loop today. I had a multiplication error when trying to convert -100% &lt;&gt; 100% duty to and actual PWM value. DOH! On the otherhand, I changed over tot he PD loop David uses and now understand a lot better what is really going on. Can't wait to try it out later tonight.&lt;br /&gt;&lt;br /&gt;Onward&lt;br /&gt;Jay&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_45gEBj4xUTA/ReNItF5TjMI/AAAAAAAAABQ/Gsu3p7nczR4/s1600-h/pid_chart.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5035948747844193474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_45gEBj4xUTA/ReNItF5TjMI/AAAAAAAAABQ/Gsu3p7nczR4/s400/pid_chart.jpg" border="0" /&gt; &lt;p align="center"&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;A screenshot of my excel spreadsheet&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-5623452261550185291?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5623452261550185291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/5623452261550185291'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/02/update-2262007-its-been-long-time-since.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_45gEBj4xUTA/ReNItF5TjMI/AAAAAAAAABQ/Gsu3p7nczR4/s72-c/pid_chart.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-1317026983898224278</id><published>2007-01-16T23:54:00.000-06:00</published><updated>2007-01-16T23:59:40.158-06:00</updated><title type='text'></title><content type='html'>Video!&lt;br /&gt;&lt;br /&gt;I made a quick 20second video of my ball launcher in action. Don't be too critical as it's on;y a quick and dirty to test my progress but several friends requested it so here is is &lt;a href="http://www.youtube.com/watch?v=r30vDsLaZn8"&gt;http://www.youtube.com/watch?v=r30vDsLaZn8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh, and here is a shot of the new wiring I did over the weekend:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_45gEBj4xUTA/Ra261bzlnRI/AAAAAAAAAA0/wIWo1jtWy-Y/s1600-h/jan1607_640.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_45gEBj4xUTA/Ra261bzlnRI/AAAAAAAAAA0/wIWo1jtWy-Y/s400/jan1607_640.jpg" alt="" id="BLOGGER_PHOTO_ID_5020874586747936018" border="0" /&gt;&lt;/a&gt;Note the labels, the braided cables, and the empty spot on the right side for the mouting of the launcher.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-1317026983898224278?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1317026983898224278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/1317026983898224278'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/01/video-i-made-quick-20second-video-of-my.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_45gEBj4xUTA/Ra261bzlnRI/AAAAAAAAAA0/wIWo1jtWy-Y/s72-c/jan1607_640.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3483611521285516203</id><published>2007-01-15T12:32:00.000-06:00</published><updated>2007-01-15T12:33:40.258-06:00</updated><title type='text'></title><content type='html'>&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;Monday, January 15, 2007 Update:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;I got inspired to do some wiring on my project this weekend. I made 4 connectors for the encoders and motors. I also started working on the ball launcher. I took my 2” 90 degree PVC elbow and started hacking at it. I am using a DIY brushless motor I built for flying RC airplanes to drive the launch wheel &lt;a href="http://www.gobrushless.com"&gt;www.gobrushless.com&lt;/a&gt;. The wheel is foam landing tire which I tapped for 3mm (to fir the motor shaft thread) and secured with a nyloc nut. I am using a homemade mount I turned from nylon previously to mount it to an “arm” of blue PVC. The arm will screw to a block of Delrin I have JB Welded to the modified elbow. This will allow me to adjust the motor/wheel assembly up and down, and the threaded motor shaft will allow me to adjust the wheel position with respect to the center of the tube.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;The launch motor will be driven by a BL ESC (electronic speed control) that I have which is in turn controlled by the MAVRIC via a standard servo signal. The balls will be fed to the launcher via a turnstile gate controlled by another servo.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;I’ll post pictures if my ISP is back up tonight. Hopefully I’ll get off my duff and actually write some code to make this thing move.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Onward,&lt;br /&gt;Jay&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3483611521285516203?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3483611521285516203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3483611521285516203'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/01/monday-january-15-2007-update-i-got.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-4569800165455339608</id><published>2007-01-06T09:05:00.000-06:00</published><updated>2007-01-06T09:17:40.453-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Where have I been, what have I been up to?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Great questions. I have been researching and procuring a benchtop mill. It should make it easier and more fun to build parts of this robot, but it’ll become it’s own project as well. I plan to convert it to CNC (&lt;a href="http://www.cnczone.com"&gt;&lt;span style="text-decoration: underline;"&gt;CNCZone&lt;/span&gt;&lt;/a&gt;). That said, I have not put much time into doing anything on this project except read some books on subsumption during this time.&lt;br /&gt;&lt;br /&gt;I’m hoping I’ll get inspired to work on it this weekend, but right now, CNC and machining have piqued my full interest.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_45gEBj4xUTA/RZ-7z5tU34I/AAAAAAAAAAc/hxs-R0g2DOI/s1600-h/hf_crate_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_45gEBj4xUTA/RZ-7z5tU34I/AAAAAAAAAAc/hxs-R0g2DOI/s400/hf_crate_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5016935010252676994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;How the mill comes packed and crated. First order of business was to clean the protective packing grease off.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_45gEBj4xUTA/RZ-8zZtU35I/AAAAAAAAAAk/R_AkbStSepU/s1600-h/workshop_w_mill.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_45gEBj4xUTA/RZ-8zZtU35I/AAAAAAAAAAk/R_AkbStSepU/s400/workshop_w_mill.jpg" alt="" id="BLOGGER_PHOTO_ID_5016936101174370194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The mill installed in it's new home. Not sure I'll be needing the drill press or not. Need to find it a new home.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-4569800165455339608?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4569800165455339608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/4569800165455339608'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2007/01/where-have-i-been-what-have-i-been-up.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_45gEBj4xUTA/RZ-7z5tU34I/AAAAAAAAAAc/hxs-R0g2DOI/s72-c/hf_crate_2.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3998430319109614641</id><published>2006-12-16T22:03:00.000-06:00</published><updated>2006-12-16T22:26:53.717-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Progress update December 16, 2006:&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;As you can see from these two images I have made great strides in building the mobile base.&lt;br /&gt;&lt;br /&gt;Today I:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mounted the two lower decks where the casters mount&lt;/li&gt;&lt;li&gt;Mounted the casters&lt;/li&gt;&lt;li&gt;Machined some standoffs from acrylic rod (see the second image)&lt;/li&gt;&lt;li&gt;Attached the motor mount assemblies with angle brackets (very stiff and perpendicular)&lt;/li&gt;&lt;li&gt;Made a mount for the sonar (using 3mm PVC)&lt;/li&gt;&lt;li&gt;Redid the sonar cabling (using 22ga stranded versus the solid, and following my wiring standard layout)&lt;/li&gt;&lt;li&gt;Mounted the sonar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;From the front:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/RYTBwJzVxzI/AAAAAAAAAAw/CFYxVYI2Qvc/s1600-h/mobile_base_1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_45gEBj4xUTA/RYTBwJzVxzI/AAAAAAAAAAw/CFYxVYI2Qvc/s400/mobile_base_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5009341718551971634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note: the front lower deck will also be the mount point for the line following sensors. You can see two of the angle brackets I'm using to shore up the motor mounts. At this time the bot weighs just over 2 pounds ... largely due tot he motors and encoders.&lt;br /&gt;&lt;br /&gt;From the rear:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/RYTB7JzVx0I/AAAAAAAAAA4/YhUIc52hI-w/s1600-h/mobile_base_1_rear.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_45gEBj4xUTA/RYTB7JzVx0I/AAAAAAAAAA4/YhUIc52hI-w/s400/mobile_base_1_rear.jpg" alt="" id="BLOGGER_PHOTO_ID_5009341907530532674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note: I used the acrylic rod because I have 20 feet of it that a friend gave to me. I am considering lighting it with LEDs … but that's for a later time. This deck with also hold the Lipo pack.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To do:&lt;/span&gt;&lt;br /&gt;It might help if I actually kept up with my todo lists but I use them as a brainstorm tool and right now my mind is racing with ideas.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Resolder the motor controller circuit&lt;/li&gt;&lt;li&gt;Rewire the encoders with longer leads using my wiring standard (which is to say the same as a servo lead) | GND | 5V |  SIG1 |  SIG2 …&lt;/li&gt;&lt;li&gt;Get this bot mobile with some simple code to count encoder pulses and drive a square&lt;/li&gt;&lt;li&gt;Add in PID to start using waypoints and let the "algorithm" decide how to get from A to B&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Onwards,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3998430319109614641?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3998430319109614641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3998430319109614641'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/12/progress-update-december-16-2006-as-you.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_45gEBj4xUTA/RYTBwJzVxzI/AAAAAAAAAAw/CFYxVYI2Qvc/s72-c/mobile_base_1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-345627460784714323</id><published>2006-12-11T11:05:00.000-06:00</published><updated>2006-12-11T11:35:39.544-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;December 11, 2006 progress,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was on a roll this weekend and have some photos of my progress to share.&lt;br /&gt;&lt;br /&gt;This first photos shows how I printed templates for my motor mounts. I first cut the mounts to their final width and height, glued them together with wood glue (tried spay adhesive first but it was too messy), glued the template on, marked the holes with a center punch, and drilled the mounting and clearance holes on my drill press. The photo below is my first design. Taking a page from my RC airplane days of constructing planes from foam, I added tabs and slots.&lt;br /&gt;&lt;br /&gt;Note: I originally drilled the holes the same for both side, but due to the motor shaft being offset it was not symmetric like the encoders. Also, the mounting hole closest to the output shaft is too shallow for the screws I had. What is, was symmetric are the two mounting holes at 180 degrees which is what I am using.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_45gEBj4xUTA/RX2P9y4FQMI/AAAAAAAAAAM/1STjRClctPE/s1600-h/wheel_mount_template.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_45gEBj4xUTA/RX2P9y4FQMI/AAAAAAAAAAM/1STjRClctPE/s320/wheel_mount_template.jpg" alt="" id="BLOGGER_PHOTO_ID_5007316652497649858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The second image shows the motor and encoder mounted along with the gears and wheel. The motors are heavy and the assembly feels like it weighs half a pound or more (will measure it and update this post).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_45gEBj4xUTA/RX2QBS4FQNI/AAAAAAAAAAU/pc_3TCnO6hg/s1600-h/mounted.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_45gEBj4xUTA/RX2QBS4FQNI/AAAAAAAAAAU/pc_3TCnO6hg/s320/mounted.jpg" alt="" id="BLOGGER_PHOTO_ID_5007316712627192018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To  add the mounts again I when with a tab-slot design. I printed a template for the base to locate the slots and used a razor knife to cut them out. I also had to make slots for the small portion of wheel that protrudes through the base.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_45gEBj4xUTA/RX2QFi4FQOI/AAAAAAAAAAc/m1iwdRnjvpc/s1600-h/wheels.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_45gEBj4xUTA/RX2QFi4FQOI/AAAAAAAAAAc/m1iwdRnjvpc/s320/wheels.jpg" alt="" id="BLOGGER_PHOTO_ID_5007316785641636066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next steps are to:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Strengthen and square the mounts using l-brackets and a cross bar of some sort. I have some acrylic rod I am going to try. Failing that, I’ll add a skin of 3mm PVC along the bottom to tie them together.&lt;/li&gt;&lt;li&gt;I have decided to redo my motor controller board using the ribbon cable wires versus wire wrap. The insulation is better, and I had an issue with intermittent shorts when I tested it before. &lt;/li&gt;&lt;li&gt;Create the cables for the encoders to the interface board&lt;/li&gt;&lt;li&gt;Make some mounts for the caster wheels (it’s really back heavy right now so 1 may be enough)&lt;/li&gt;&lt;li&gt;Write some code to drive in a square&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-345627460784714323?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/345627460784714323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/345627460784714323'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/12/december-11-2006-progress-i-was-on-roll.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_45gEBj4xUTA/RX2P9y4FQMI/AAAAAAAAAAM/1STjRClctPE/s72-c/wheel_mount_template.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-8809863248541818033</id><published>2006-12-04T08:18:00.000-06:00</published><updated>2006-12-04T08:27:35.840-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;December 4, 2006 update:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Well, I received the gears and wheels that I ordered. The wheels from www.budgetrobotics.com are great.&lt;br /&gt;&lt;br /&gt;I used to be fairly proficient with my Taig microlathe, but not Sunday. The gears are bored for .25” (1/4”) but the shaft diameter on the motors is .234”. I decide to make an adapter that would fit better on the shaft and integrate with the wheels and gears. I tried to use some Fortal aluminum, but it wasn’t cutting as well as I had remembered. It took my quite an effort to hacksaw a chunk to chuck in the lathe, and then it kept bogging down on anything but light cuts. It would have taken a day for one adapter to whittle 1.5” down to .375”. So I switched to nylon. All told it took 5 hours to crank out one adapter.&lt;br /&gt;&lt;br /&gt;The good news is it works great; the bad news is I have 1 more to make. I’ll post a photo tonight.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Onwards,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-8809863248541818033?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8809863248541818033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/8809863248541818033'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/12/december-4-2006-update-well-i-received.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-717522624312433598</id><published>2006-11-28T23:06:00.000-06:00</published><updated>2006-11-28T23:54:28.202-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;11/28/2006 update: &lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt; &lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt; This past weekend I did indeed get some “me” time to work on my bot. I spent most of Friday making the cables and soldering the interface board. I decided to use ribbon cable (old IDE cables) for the point to point wiring versus wire wrap. I really like the way it worked out and can recommend other give it a try too.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;I decided against creating four 8-pin cables from the port headers on the MAVRIC to my interface board. Instead, I designed it so that I used all of PortB for one cable and a combination of PortF, PortE and PortD for the other. In&lt;span style=""&gt;  &lt;/span&gt;other words, I went the wiring harness route.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4933/4295/1600/756492/base_800.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4933/4295/320/294155/base_800.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-size:78%;"&gt;From left to right, simple switcher power supply, MAVRIC, interface board, encoder, DC gearmotor&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;I also decided against reusing my tank base for this bot. The vacuum cleaner belts were starting to dry rot and I really wanted to redo the mechanics of the drive. I spent the rest of my weekend looking for solutions to couple the motors, wheels, and encoders. When I finally settled on gears I then began the search for affordable gears. &lt;a href="http://www.servocity.com/"&gt;www.servocity.com&lt;/a&gt; have a nice selection, but they are very proud of their gears. $4.95 for 1 gear and it doesn’t even have a set screw not is it bored for the ¼” shaft. Instead they want to sell you a hub for another $4.95. I have a micro lathe and can make my own hubs, but $4 is too much for a single gear IMHO. I found Stock Drive after trying &lt;a href="http://www.servolink.com/"&gt;www.servolink.com&lt;/a&gt; (great prices but $30 minimum order) and MSC (no details on the gears). They hit me with a $3.95 handling charge for using the online store and then another $6.18 for UPS for 4 freaking gears. The gears were reasonably priced at $2.10 a piece. If they had offered USPS I would have picked that. It’s a major pet peeve of mine getting overcharged for shipping. But I digress.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt;Oh, and I also ordered some wheels ($10 minimum order) from &lt;a href="http://www.budgetrobotics.com/"&gt;www.budgetrobotics.com&lt;/a&gt; .  After deciding on the gears, I was able to knock up a model in CAD. The silver motors will be aligned with the center of the 9" diameter disk platform. The red encoders will be linked via the gears. The wheels will be attached to the gear on the motor shaft via 4 screws. I am planning for the gears to be a press fit, but if not, the hubs on the gears or thick enough to drill and tap for a set screw. Failing that, I'll bore out the hub and make a sleeve hub out of aluminum.&lt;br /&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;!--[endif]--&gt; Onward,&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Jay&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4933/4295/1600/724291/drive_system.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4933/4295/320/588401/drive_system.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This iso wireframe shows how the gears come into play. The base is made from 6mm pvc.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4933/4295/1600/520801/drive_system_wire.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/4933/4295/320/883464/drive_system_wire.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/4933/4295/1600/746217/drive_system_wire.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-717522624312433598?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/717522624312433598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/717522624312433598'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/11/11282006-update-this-past-weekend-i-did.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-3089054683809872525</id><published>2006-11-15T15:25:00.000-06:00</published><updated>2006-11-15T15:40:13.859-06:00</updated><title type='text'></title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;11/15/2006 progress: &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;What have I been up to? Well mainly I have been thinking about how to physically interface my sensors and peripherals to the MAVRIC. The MAVRIC has 6 8-pin headers (he offers screw terminals too) for each port of the ATMega128 cpu. I am being playing with my pin layout to consolidate as many pins on a port as I can. Some pins are too specialized for this (A2D, UART) and thus I have it down to 4 ports.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Also I have three serial devices but only two serial ports. I need to play with bit-banging to one of them (most likely the voice module).&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;I have not touched the bot in over a week, but I did place an order to www.sparkfun.com for some odds and ends. This weekend I am testing for level three in Krav and then I’ll work on a interface board. But then I’m still in a circle. Do I need an interface board, or do I create custom wiring harness with 5 8-pin connectors on one end and sensor connectors on the other. Or do I create 4 8-pin bus connectors to a connector board and tie the port pins to their connectors using wire wrapping or point to point soldering and then run another connector from the board to the sensor. I like the second method better but it’s more connectors and thus more to screw up.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Here is what my connector board looked like on a previous robot: &lt;a href="http://www.geocities.com/jaydmdigital/ieee/jamaica.html"&gt;http://www.geocities.com/jaydmdigital/ieee/jamaica.html&lt;/a&gt; 3rd picture. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;After I get the whole connector thing decided, I can work on the PID, line sensors, IR sensor, etc… so you see it really is a key decision.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Hmmmmm…&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Jay&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-3089054683809872525?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3089054683809872525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/3089054683809872525'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/11/11152006-progress-what-have-i-been-up.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116252673040418345</id><published>2006-11-02T21:58:00.000-06:00</published><updated>2006-11-15T15:23:55.861-06:00</updated><title type='text'></title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;11/2/2006 progress: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;I tested my PWM code (and corrected a typo in my blog) tonight. I’m happy to report that locked anti-phase is working. The “sings” at the locked position but I can live with that (I think). Hopefully it won’t be louder than the voice chip speaker. Also, using my RC wattmeter my motor never goes above 1A even with a locked rotor (i.e. my stopping it by hand) with a 12V motor source.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;So next on the agenda is PID testing. Then onward to line following.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Onward,&lt;/p&gt;&lt;p class="MsoNormal"&gt;Jay&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116252673040418345?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116252673040418345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116252673040418345'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/11/1122006-progress-i-tested-my-pwm-code.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116242355875132258</id><published>2006-11-01T17:24:00.000-06:00</published><updated>2006-11-15T15:23:55.745-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;strong&gt;11/1/2006 update:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Things have slowed a bit. I decided that the best way to test the line following was to have a moving platform. Therefore I decided to rebuild my H-Bridge circuit. I decided to compare the circuit I built nearly a decade ago with the reference design. Wow, not sure what I was thinking but my component values for the RC blanking circuit were way not right, and my current sense resistor wasn’t even connected.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Locked anti-phase&lt;/strong&gt;&lt;br /&gt;Previously I was using PWM of the enable pin for speed control and the phase pin for direction. Recently I read about PWM of the phase call locked anti-phase control. At 50% the motor is locked and thus neither moves forward or backward. If the PWM is less than 50% then it moves backward, greater than 50% forward. How much greater or less than 50% controls the speed. So now you get speed and direction with one control line.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;New circuit&lt;br /&gt;&lt;/strong&gt;I soldered up my new circuit with more correct values except the current sense resistor. RS doesn’t carry a .5ohm resistor and paying $5 for a resistor is nuts. Long story short 10ohms was too big and I ended up removing the current sensing and blanking components from the circuit to make it work. Also I need to get a smaller tip for my iron as I had a short (or two) that I had to trace down too. Once I’m sure on my circuits, drafting a PCB seems like a good idea.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Testing&lt;br /&gt;&lt;/strong&gt;To test my circuit I first tried it as a servo. I must have been high from solder fumes because I knew that PWM of a servo doesn’t use a duty cycle it uses pulse timing (1.5ms for center, 1ms for 0 degrees, 2ms for 180 degrees roughly). So as a quick and dirty I bit banged a 500ms 50% duty square wave. The motor was locked alright but it was singing too. So I tried smaller periods and settled on 50ms. I’m hoping that using the built in phase correct PWM of Timern that I can get a nice smooth 127 steps in both directions with little wasted power at “stop”. I am thinking that I’ll need to add a brake line for each motor to de-energize the motors at 0 speed (50% duty).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PWM&lt;br /&gt;&lt;/strong&gt;There are 4 timers on the ATMega128 Timer 0 and 2 are 8-bit and Timer 1 and 3 are 16 bit. All are capable of PWM using output compares. If I only need/want 127 steps then and 8 bit timer is enough, but I can see no penalty in using a 16 bit timer either. So here is the scenario. Using the phase-correct mode of operation the period of the waveform is set by the WGMn3:0 bits. Either 0x00FF, 0X01FF or 0x03FF. For 8-bit 0x00FF is what I’ll use. TCNTn will count up to 0x00FF and then count down to zero. If OCRnx == 0 then the output will be zero. Similarly if it is 0x00FF (or TOP) then output will be 1. So first step is to decide the actual period and set the prescaler to get close. The CPU clock is 16MHz. A prescaler of 64 will give us a 4us timer clock source. This means our period will be roughly 2ms (2 * 255 * 4us) or 500Hz. Now we need to configure the Output Compare bits in TCCRnA. We will configure them to 2 (10b) to clear the output bit on up counting match and set it on down counting match. Finally we need to set the DDRx bits for our output pins.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;void timer1PWMInit (void)&lt;br /&gt;{&lt;br /&gt;// Set prescaler&lt;br /&gt;TCCR1B = 0x03; // Timer clocked at F_CPU/64&lt;br /&gt;&lt;br /&gt;// Init to 8bit phase correct mode 1&lt;br /&gt;TCCR1A = _BV(WGMA0);&lt;br /&gt;&lt;br /&gt;// Configure Output compares for A and B mode 2&lt;br /&gt;// output bit will be cleared on match while up counting and set on match while down counting&lt;br /&gt;TCCR1A = _BV(COMA1)   _BV(COMB1); ;&lt;br /&gt;&lt;br /&gt;// Set DDRB pins 5 and 6 for output&lt;br /&gt;DDRB = _BV(OC1A)  _BV(OC1B);&lt;br /&gt;&lt;br /&gt;// set motors to 0 or 50% duty for locked anti-phase controller&lt;br /&gt;OCR1A = 0x7F;&lt;br /&gt;OCR1B = 0x7F;&lt;br /&gt;&lt;br /&gt;// Enable timer1 overflows&lt;br /&gt;TIMSK = _BV(TOIE1); // enable TCNT1 overflow&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116242355875132258?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116242355875132258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116242355875132258'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/11/1112006-update-things-have-slowed-bit.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116179053949780334</id><published>2006-10-25T10:26:00.000-05:00</published><updated>2006-11-15T15:23:55.658-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;strong&gt;10/25/2006 progress:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What a good day it turned out to be yesterday. I went home at lunch to fix the serial cable connector. I booted it up and tried the Soundgin software. YEEHA it works!  I spent some time playing with the vocabulary by adding my own words to the listing. So now I move on to the line following sensor.&lt;br /&gt;&lt;br /&gt;I have decided that each sensor will be individually mounted and wired.  I will use  6’ servo leads. I am leaning towards the QRD 1114 part for ease of mounting. I will try analog first.&lt;br /&gt;&lt;br /&gt;Still need to get some proto PCB. I’d rather use the solder mask plated thru hole material vesus the RS stuff, but it’s hard to tell what you get if you order it from a B&amp;W photo. Anyone have any part numbers for me to use. I am thinking 4”x 6” or 2”x 3” .1” PTH with solder mask and mounting holes in each corner.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116179053949780334?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116179053949780334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116179053949780334'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/10252006-progress-what-good-day-it.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116170637372435218</id><published>2006-10-24T10:54:00.000-05:00</published><updated>2006-11-15T15:23:55.548-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;strong&gt;10/24/2006 update:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;I decided to take a break form programming and build my audio/voice circuit for the Soundgin. I spent about 2 hours Sunday laying out and soldering the circuit provided by the manufacturer. I didn’t get a chance to test it until that night and it didn’t work … well it did make noise, but not what I was expecting. So I had to wait till lunch Monday to do some debugging. Rather than look at the schematic and trace the line, I draw the schematic based on my soldered circuit. I used that link to creating your own graphing paper to generate PCB graph paper (i.e. dots versus lines) spaced at .2” so I could see what I had. Everything was correct but I had forgotten one connection from the low pass filter to ground. I added it after dinner last night and bingo, I get the demo with plays all the allophones to work.&lt;br /&gt;&lt;br /&gt;This morning before leaving for work I added a header to allow me to jumper the demo input to ground, and either use 5V for the LM386 or a 9V lead if I need/want more volume. I also plan to play with adding capacitance to the gain pins.&lt;br /&gt;&lt;br /&gt;I had hoped to test the Soundgin software with an &lt;a href="http://www.seattlerobotics.org/encoder/aug97/cable.html"&gt;RS232 to TTL&lt;/a&gt; cable I made ages ago for an &lt;a href="http://www.kevinro.com/products.html"&gt;HC11 Botboard&lt;/a&gt;. Unfortunately, I made a guess as to which pins should RX and TX when I soldered my circuit to the header and I guessed wrong ;) Oh well, with my new crimps I’ll be able to redo the cable in no time. You see, I tried to fix it in the field and ended up pulling one of the wires out ... doh!&lt;br /&gt;&lt;br /&gt;Well, back to my list. I think I’ll work on #3 next. That’s the line sensor circuit. That will also require #2. Then I’ll tackle #5. I have 5 of the 3252SB chips in my inventory.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116170637372435218?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116170637372435218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116170637372435218'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/10242006-update-i-decided-to-take.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116149424846262210</id><published>2006-10-22T00:06:00.000-05:00</published><updated>2006-11-15T15:23:55.443-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;10/21/2006 update:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Progress has been either stopped or else moving backwards. I’ve been down the very dark street of the &lt;a href="http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;file=viewtopic&amp;amp;t=37649&amp;POSTNUKESID=ae358b08ee24796042642fbb014620cd"&gt;TWI on an Atmel device&lt;/a&gt;. Long story short, I can’t trust the TWI not to freeze and thus block in my code. So I’m dumping it, the I2C LCD (which I think I may have shorted out too L ), and the last few days of my life. Yeah it’s been bad, but on the the good side, I now have a good handle on how to use the debugger.&lt;br /&gt;&lt;br /&gt;So, now I’m dropping back to serial for my LCD (only 16x2 and 9600baud versus the 20x4 and 100KHz). I also grabbed a copy of &lt;a href="http://www.freertos.org/"&gt;FreeRTOS&lt;/a&gt; which has an AVR port though I’ve had to do some work to port it to mega128 versus the mega232. I need to get my srf04 and encoder code (I intend to pull it out of AVRLib to keep it simple) and get a basic system to have the display updating 5Hz, the sonar measuring (pinging) 10Hz using an external interrupt, and the encoder as an interrupt.&lt;br /&gt;&lt;br /&gt;Oh, and all my parts for making wires came in as well as my sound chip and components to get that circuit built … too bad I fried my brain (and nerves) on the &lt;span style="color:#ff6666;"&gt;&lt;strong&gt;$^%^*&lt;/strong&gt;&lt;/span&gt; I2C first.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116149424846262210?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116149424846262210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116149424846262210'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/10212006-update-progress-has-been.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116101878157393688</id><published>2006-10-16T12:09:00.000-05:00</published><updated>2006-11-15T15:23:55.335-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:130%;"&gt;October 16, 2006 to-do list:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Things are starting to get a bit overwhelming for me. I tend to get ahead of myself and end up second-guessing, blue-skying, and just plain day-dreaming. In other words, I stall out until I can procrastinate no longer and I end up doing marathon sessions. In an effort to prevent that from occurring this time, I have decided to create a to-do list and try to link any dependencies so I can see the forest and the trees.&lt;br /&gt;&lt;br /&gt;Note not listed by priority.&lt;br /&gt;&lt;br /&gt;1. Build some cables and a break out board.&lt;br /&gt;Status: The parts for the cables has been ordered and should be here by Wednesday. I have a PCB protoboard from Radio Shack but it may be too small.&lt;br /&gt;&lt;br /&gt;2. Make a sample of the contest board and line for testing.&lt;br /&gt;Status: Not started. Not a high priority but will need it when I test line sensors.&lt;br /&gt;&lt;br /&gt;3. Make a line sensor and test different parts and configurations.&lt;br /&gt;Status: I have QRD1114 and QRB1114 parts and can either feed them into the A2D or to digital I/O via an inverter. I have used both and am leaning towards the A2D.&lt;br /&gt;Dependency: Maybe on wire making parts … but not required for prototypes&lt;br /&gt;&lt;br /&gt;4. Make a terminal serial cable for debugging with AvrX&lt;br /&gt;Status: Need to get a surplus serial cable. Then just connect the wires to the MAVRIC. I’ll search for one at lunch.&lt;br /&gt;&lt;br /&gt;5. Rebuild/build H-bridge circuit.&lt;br /&gt;Status: I have my original (5 years old now) Allegro Micro A3952SB circuit board and some of the newer &lt;a href="http://www.allegromicro.com/sf/3959/"&gt;A3959SB&lt;/a&gt; parts. I need to redo the circuit with cleaner wiring.&lt;br /&gt;Dependency: Wire making parts&lt;br /&gt;&lt;br /&gt;6. Design the shape and size of the robot.&lt;br /&gt;Status: I found this &lt;a href="http://www.incompetech.com/beta/plainGraphPaper/"&gt;link to a website&lt;/a&gt; that let’s you print your own graph paper. Will start sketching some designs for the wheel layout and base shapes&lt;br /&gt;&lt;br /&gt;7. Design the motor mounts and encoder mounting&lt;br /&gt;Status: Currently I have a tank-based mobile platform with the encoders serving as the other end of the tank tread. I will need to design a way to transfer the shaft motion to the encoders without interfering with the wheels. Also, I’d like the make the motor/encoder mount as a module that can be removed/installed as a component incase I ever want to change the base shape/layout.&lt;br /&gt;&lt;br /&gt;8. Prototype a circuit that will decode the 1200Baud I/R signal.&lt;br /&gt;Status: No started but do plan to use one of the UARTs on the MAVRIC. Have not decided on photodiode or phototransistor and will need to do some prototyping.&lt;br /&gt;&lt;br /&gt;9. Add sound/speech.&lt;br /&gt;Status: Have ordered components but am backordered on actual voice chip. No ETA. Will call manufacturer to get their opinion and may switch to competing product depending on timeline.&lt;br /&gt;&lt;br /&gt;10. Build ball launcher.&lt;br /&gt;Status: I have a pretty good idea for the design using a PVC elbow, &lt;a href="http://www.gobrushless.com/store/cgi-bin/cp-app.cgi"&gt;a brushless DC motor &lt;/a&gt;(because I have one), and &lt;a href="http://www.castlecreations.com/products/phoenix-10.html"&gt;BLDC controller&lt;/a&gt; using a servo output. At this point I don’t have any real size constraints. The module should be sell contained and thus make it easy for me to change position and angle of it. At this point I am looking for the launcher to sit on one side of the robot.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116101878157393688?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116101878157393688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116101878157393688'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/october-16-2006-to-do-list-things-are.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116094783784627492</id><published>2006-10-15T16:29:00.000-05:00</published><updated>2006-11-15T15:23:55.226-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;October 15, 2006 progress:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One step back, two steps forward. I became obvious to me once I started trying to put a few sensors together and control the rate at which they scanned and displayed their data that I need some sort of task scheduler or RTOS. A quick search on &lt;a href="http://www.google.com"&gt;Google &lt;/a&gt;and it brought up one I had read about but never used &lt;a href="http://www.barello.net/avrx/index.htm"&gt;AvrX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So I have sent the last day reading about &lt;a href="http://www.barello.net/avrx/index.htm"&gt;AvrX&lt;/a&gt; and experimenting with shoehorning my existing sensor drivers into it. After some initial issues with the makefile I was using I have successfully grafted the encoder, i2c, and matrixglcd functions onto some example code Larry provides. I love quick wins it just boosts my morale.&lt;br /&gt;&lt;br /&gt;So now that the quick and dirty is out of the way, I am reading everything I can about how and when to use the &lt;a href="http://www.barello.net/avrx/index.htm"&gt;AvrX&lt;/a&gt; api. I have joined the Yahoo Groups support group as well. I hope to have the SRF04 code added by tomorrow. However, it looks like I may want/need to make a serial cable to enable debugging first.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116094783784627492?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116094783784627492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116094783784627492'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/october-15-2006-progress-one-step-back.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116069110481807982</id><published>2006-10-12T17:09:00.000-05:00</published><updated>2006-11-15T15:23:55.128-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;October 12 progress:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I got the AVRLib i2c library test working and then molded in into what I needed. To do this, I created a i2cLCDsendbyte function to replace the uartsendbyte in rprintf. Now I’ll remount the processor, the new power supply, then new LCD (&lt;a href="http://www.matrixorbital.com/product_info.php?pName=glk1223225sm&amp;cName=lcd-graphic-lcds"&gt;122x32&lt;/a&gt; or 4x20 with the option of using a &lt;a href="http://www.matrixorbital.com/product_info.php?pName=glk2406425&amp;amp;cName=lcd-graphic-lcds"&gt;240x64&lt;/a&gt; model I have), the servos and an interface board (when my parts order arrive). If I have time tonight I will modify the SRF04 and encoder programs to use the i2cLCD functions.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116069110481807982?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116069110481807982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116069110481807982'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/october-12-progress-i-got-avrlib-i2c.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116058713500481688</id><published>2006-10-11T12:16:00.000-05:00</published><updated>2006-11-15T15:23:55.018-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;October 11, 2006 progress:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Microcontroller: The replacement parts have arrived from Brian but looking at how small they still are I’m a bit hesitant to try and solder them in just yet. Besides, it’s working fine without them. In truth I’m going to wait till this weekend when I have some free time at home.&lt;br /&gt;&lt;br /&gt;As for programming, I now have quadrature encoding working flawlessly between ARVlib and my 1000PPR encoder. The nice thing about the encoder lib is that it keeps track of the position of the wheel (signed number of ticks) either forward or backward. Next step I2C to graphic LCD. That and I plan to modify my SRF04 code to be standalone from AVRLib for posting on &lt;a href="http://www.avrfreaks.net/"&gt;AVRfreaks.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voice: I pulled the trigger and ordered a Soundgin (backordered according to the &lt;a href="http://www.thebotshop.com"&gt;vendor&lt;/a&gt; I ordered it from) and the parts to build up a protoboard circuit (amplifier, low pass filter, etc…) most of the parts I found at &lt;a href="http://www.hobbyengineering.com/"&gt;www.hobbyengineering.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Odds and ends: Connectors is always something in the back of my mind. Therefore I also made a order from &lt;a href="http://www.action-electronics.com/"&gt;www.action-electronics.com&lt;/a&gt; for some Molex KK shrouds, pins, and headers. I won’t have to worry about connectors ever again :)&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116058713500481688?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116058713500481688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116058713500481688'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/october-11-2006-progress.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116041840610980839</id><published>2006-10-09T13:22:00.000-05:00</published><updated>2006-11-15T15:23:54.894-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;October 8, 2006 progress&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Sunday was 4 hours of yard work and a very unhappy little boy so minimal progress was made. I decided to research speech chips and got off on all kinds of tangents. &lt;a href="http://www.makezine.com/"&gt;Makezine.com&lt;/a&gt; BLOG is addictive and I was up way too late Saturday night reading it.&lt;br /&gt;&lt;br /&gt;So anyway, in a former life I was a midnight engineer for a buddy’s fledgling company. I had designed and programmed a device to translate the clock synchronization signal of one master clock to that of a tower clock controller. This was going to be a big product for his company so he had several PCB’s manufactured along with several sets of parts. Unfortunately the company went bust. I was contacted by the major investor and asked if I wanted the leftover electronics stock before it was “tossed”. Long story short I have a surplus of PCB’s, LCD’s, relays, etc… The reason I explain all this is because I had designed the system to use a switching power supply and had designed the 5V DC supply in one corner of the board. A few minutes with a hack saw and I had a nice PCB for a 5V DC switching PS. I also had all the parts to stuff it and as luck would have it, the diode bridge layout matched the .156” power header part. So, now I have a very stable high current PS (5A IIRC) that I can power from my stock of RC batteries (LiPo and  NiMh up to 18VDC IIRC). I will go back any look at my notes to see what the design criteria were, but the system was capable for switching 4 relays at the same time if need be.&lt;br /&gt;&lt;br /&gt;Back to the speech chips. &lt;a href="http://www.acroname.com/robotics/parts/R184-SP03.html"&gt;Devantech’s&lt;/a&gt; is too expensive (at least for now) so it’s down to the &lt;a href="http://www.speakjet.com"&gt;SpeakJet&lt;/a&gt; or the new (and as far as I can tell not yet released) &lt;a href="http://oopic.com/soundgin/"&gt;Savage Innovations Soundgin&lt;/a&gt;. Interestingly &lt;a href="http://www.magnevation.com/"&gt;Magnevation&lt;/a&gt; which makes the &lt;a href="http://www.speakjet.com/"&gt;SpeakJet&lt;/a&gt; is a &lt;a href="http://www.magnevation.com/aboutus.htm"&gt;partner in some fashion&lt;/a&gt; with &lt;a href="http://www.oopic.com"&gt;Savage&lt;/a&gt; and both chips are very similar in that they use phonemes to generate speech. They are the same price but the Soundgin’s manual and software have given it a very strong lead on my score sheet. I’ll have to hack together a demo board with amp, but the schematic is presented. Since both use RS232 communications, I will most likely switch to a I2C LCD (a good excuse to play with I2C again) maybe even a graphic one I have laying around. &lt;br /&gt;&lt;br /&gt;So, I think I will spend lunch making a parts order for a speech circuit J&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116041840610980839?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116041840610980839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116041840610980839'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/october-8-2006-progress-sunday-was-4.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116024659720872081</id><published>2006-10-07T13:03:00.000-05:00</published><updated>2006-11-15T15:23:54.790-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;October 7, 2006 Updates &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Wow what progress! Slowly but surely I was able to get the SRF04 sonar module working. Not without a lot of lost time on false starts, dead batteries and general ignorance on my part. I have created some notes for you to consider if you are going down the same path.&lt;br /&gt;&lt;br /&gt;* The &lt;a href="http://www.robot-electronics.co.uk/htm/srf04tech.htm"&gt;SRF04&lt;/a&gt; outputs a pulse whose width in us = the distance. To scale it to cm divide by 58 and to get inches divide by 148 per the instructions.&lt;br /&gt;* You can use an external interrupt to measure this pulse by storing the timer count on the rising edge and then subtracting the second time on the falling edge.&lt;br /&gt;* External INT0-3 do not allow “Any Edge” triggers (i.e. both rising and falling edges trigger the interrupt) 4-7 do.&lt;br /&gt;* A 16 bit timer has fewer overflows and helps limit erroneous readings&lt;br /&gt;* The timer counts you use are in CPU ticks not us. Depending on how you configure your prescaler a tick can represent .0625us up to 64us. Since your measurement is in us you will need to convert your ticks to us.&lt;br /&gt;* The &lt;a href="http://www.robot-electronics.co.uk/htm/srf04tech.htm"&gt;SRF04&lt;/a&gt; has a 3cm minimum distance (100us) and measurements start at the element, not the PCB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So using Pascal’s AVRLib I chose to use Counter/Timer1 which he configures with a prescale of 64 (each tick = 4us with a 16MHz clock). I also chose to use INT4 which is on PORTE pin4 configured for both rising and falling edges. IN my ISR I check to see if it is the rising edge (PINE PE4 =1). If so, I capture the current tick count (SonarDistance = TCNT1). Otherwise, I set the SonarDistance = TCNT1 – SonarDistance because the TCNT1 is set to count down.&lt;br /&gt;&lt;br /&gt;Now all I need to do is write a function that will ping the sonar X times and return the average.&lt;br /&gt;&lt;br /&gt;Depending on how much more time I’ll have today, I’ll start on the encoders.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116024659720872081?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116024659720872081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116024659720872081'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/october-7-2006-updates-wow-what.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-116014665294708431</id><published>2006-10-06T09:34:00.000-05:00</published><updated>2006-11-15T15:23:54.671-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Update for October 05, 2006&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Well on the physical front things aren’t so good. I have had chronic back issues (muscle spasms) ever since 7th grade (maybe even before) where I am somewhat debilitated and unable to stand. Yesterday I woke and was not able to stand up without a lot of pain. It’s hard to concentrate when you have a constant pain in your lower back so I stayed home from work.&lt;br /&gt;&lt;br /&gt;On the robotic front I made huge strides. The spasms are weird in that the come and go in spurts (Ibuprofen helps to relax the muscles). When I felt a relaxation I went into my computer room to work on playing with AVRLib. Specifically, I wired up serial communication to a serial LCD and servo control.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Serial LCD&lt;/strong&gt;:&lt;br /&gt;This was cake to wire as the MAVRIC has screw headers from the Maxim 232 chip. The serial LCD from &lt;a href="http://www.crystalfontz.com/"&gt;http://www.crystalfontz.com/&lt;/a&gt; can take level shifted 232 or TTL 232. So I enabled the onboard RS232 pullups (via the dip switches) and gave it a try. It worked, but needed some tweaking to allow the LCD to init before sending any text. It would be nice to have a bigger LCD (4 line, 20 chars but anything is better than nothing).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Servos&lt;/strong&gt;:&lt;br /&gt;Now this was a PITA. Long story short, I already knew to change timer.h to timer128.h to accommodate the Mega128 device. However, I also had to modify the makefile to do the same thing. I had a 3 hour debug session wherein I dragged out my O-scope to watch the pin transition. After I got one working, adding more was cake. The AVRLib allows you to control up to 8 (any port, any pin) servos simultaneously by using the 16-bit timer/counter. Seemed a bit jerky, but that’s probably due to my adding printf statement to show the position of the servo before updating it to the next value.&lt;br /&gt;&lt;br /&gt;I also made a mounting board for the LCD, MAVRIC, and servos. What I’ve learned thus far is I need to add two toggle switches. One for the power to the MAVRIC as there is no reset switch and 1 for the servo power. Come to think of it adding 1 more for the drive motors would be a good idea too.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://photos1.blogger.com/blogger/7458/3910/1600/MAVRICmount.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7458/3910/320/MAVRICmount.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;You can see the MAVRIC, serial LCD, two micro servos,&lt;br /&gt;my wire wrapping connections for the servos, oneof &lt;/span&gt;&lt;/center&gt;&lt;center&gt;&lt;span style="font-size:85%;"&gt;the RC battery packs, and the Ecro ICE Cube JTAG unit.&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-116014665294708431?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116014665294708431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/116014665294708431'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/update-for-october-05-2006-well-on.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115999829003776623</id><published>2006-10-04T16:36:00.000-05:00</published><updated>2006-11-15T15:23:54.559-06:00</updated><title type='text'></title><content type='html'>Had a chance at lunch to play with the MAVRIC some more. Went through the intro document that comes with WinAVR. Was able to enter a debug session in AVRStudio and step, watch, modify register and program variables. One thing I learned is that everything slows way down from real time.&lt;br /&gt;&lt;br /&gt;I then proceeded to debug the hello world program which uses interrupts. Ended up having to modify the program to get any realistic speed, but the program did step as it should. To improve the speed, I will play with breakpoints.&lt;br /&gt;&lt;br /&gt;I then modified an AVRLib program using his library to do the same thing as Hello Wolrd. After I figured out the different places I need to check to make sure the right library and target chip is configured it works too. All in all a very productive day.&lt;br /&gt;&lt;br /&gt;Next steps. Time to play with some hardware. I will add a serial LCD, a server, and a quadrature encoder. maybe even a push button ... I think I have a "test" board with some LEDs and buttons on it from a Rabbit2000 kit.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115999829003776623?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115999829003776623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115999829003776623'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/had-chance-at-lunch-to-play-with.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115997894881027210</id><published>2006-10-04T11:03:00.000-05:00</published><updated>2006-11-15T15:23:54.442-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Microcontroller board update&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Good news, with Brian's (of &lt;a href="http://www.bdmicro.com"&gt;www.bdmicro.com&lt;/a&gt;) patience I have successfully run a test program on the Mavric board. Of course had I done everything right last night I could have reached this step sooner. Here's what all I had to do to get this thing to blink the LED as it should:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1&lt;/strong&gt;. After soldering the rest of the thru-hole components on the board and getting the go ahead from Brian about the missing (but in the mail) caps I decided on an RC reciever battery (5V DC) to connect the Vcc and GND pins bypassing the LDO regulator.&lt;br /&gt;&lt;strong&gt;2&lt;/strong&gt;. I installed AVRStudio 4 and it's service pack, WinAVR (except PN), and AVRLib&lt;br /&gt;&lt;strong&gt;3&lt;/strong&gt;. Following along with the ICE Cube quick start guide, I atteched it to the JTAG header, connected the battery, and ran AVRStudio.&lt;br /&gt;&lt;strong&gt;4&lt;/strong&gt;. Using the Tools menu I selected AVR Prog to loag the JTAG ICE image to the ICE CUBE. Worked perfectly&lt;br /&gt;&lt;strong&gt;5&lt;/strong&gt;. Using the command line ran make on the Hello World sample from Brian's site. Compiled fine.&lt;br /&gt;&lt;strong&gt;6&lt;/strong&gt;. Using the JTAGICE under Tools programmed the board with the .hex file generated. Programmed fine.&lt;br /&gt;&lt;strong&gt;7&lt;/strong&gt;. Nothing ... no blinking. After an hour or so, I decided to look at it with fresh eyes and went to bed&lt;br /&gt;&lt;strong&gt;8&lt;/strong&gt;. I decided to read the user help in AVRStudio (I know ... wierd isn't it) and read the following under known issues: "ATmega128 in ATmega103 compatibility mode: Not supported, but will be available in a later version of AVR Studio 4." I remembered seeing, reading, something about 103 compatibility mode and found it under the Fuses tab in the JTAG ICE screen. Cleared the fuse and now was seeing a very slow (say 8hz blinking LED). Ok, so it works ... kinda.&lt;br /&gt;&lt;strong&gt;9&lt;/strong&gt;. Read the ATMega datasheet and run ferquency calc in Excel to confirm register settings.&lt;br /&gt;&lt;strong&gt;10&lt;/strong&gt;. Brian's email telling me that the chip has not been programmed for the 16MHz external clock and that the fuse sertting are in the Mavric user manual. DOH! That's where I saw them.&lt;br /&gt;&lt;strong&gt;11&lt;/strong&gt;. Set the fuses per the manual, reset the code fro the Hello World same program ... viola!&lt;br /&gt;&lt;br /&gt;Next step, figure out how to use JTAG debugging. Oh, and I've noticed what may be a solder bridge on two of PortB's pins that need to be inspected closer.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115997894881027210?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115997894881027210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115997894881027210'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/microcontroller-board-update-good-news.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115981468217334713</id><published>2006-10-02T13:35:00.000-05:00</published><updated>2006-11-15T15:23:54.332-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Encoders and odometry&lt;/span&gt;&lt;/strong&gt; &lt;br/&gt;&lt;br/&gt;Along with knowing how many RPM my wheels will be spinning, I can calculate velocity. With the dimensions of my wheels I can calculate distance. And with the dimensions and layout of the wheels to the center of the bot, I can calculate angle. David Anderson has a great site to dicuss these and showcase his robot &lt;a href="http://www.geology.smu.edu/~dpa-www/robots/sr04/index.html"&gt;SRO4&lt;/a&gt;. Be sure to have a look at his writeups towards the end of the page. &lt;br/&gt;&lt;br/&gt;Also, I have found a nice lab &lt;a href="www.engr.sjsu.edu/bjfurman/ courses/ME106/ME106pdf/encoder-atmel.pdf"&gt;pdf&lt;/a&gt; that uses the AVRlib to do quadrature encoding. &lt;br/&gt;&lt;br/&gt;Onward,&lt;br/&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115981468217334713?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115981468217334713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115981468217334713'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/encoders-and-odometry-along-with.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115980798129909316</id><published>2006-10-02T11:51:00.000-05:00</published><updated>2006-11-15T15:23:54.230-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Coding&lt;/strong&gt; &lt;br/&gt; &lt;br/&gt;On the trail of PID motor control I found this interesing library. &lt;br/&gt;This may save me a lot of "reinventing the wheel" and allow me to &lt;br/&gt;concentrate on high level tasks ... just as the author intended ;-)&lt;br/&gt;&lt;a href="http://seasight.dforge.cse.ucsc.edu/details/data_acquisition/ATmega128/avrlib/docs/html/index.html"&gt;http://seasight.dforge.cse.ucsc.edu/details/data_acquisition/ATmega128/avrlib/docs/html/index.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The more examples the better.&lt;br/&gt;&lt;br/&gt;Onward,&lt;br/&gt;Jay&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115980798129909316?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115980798129909316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115980798129909316'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/coding-on-trail-of-pid-motor-control-i.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115980441339372099</id><published>2006-10-02T10:52:00.000-05:00</published><updated>2006-11-15T15:23:54.134-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;font&gt;Microprocessor Update &lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Well I learned a few things this past weekend. First and foremost my SMD soldering skills are rusty. We perhaps I’m being too critical of myself. I have never actually tried to solder a discrete component smaller than 0805 and the bypass caps in this kit have to be 0402 or smaller. Smaller than a grain of rice for sure. Anyways, I got through 98% of the SMD components on Friday night but two of the .1uF bypass caps were lost as my tweezers shot them into wherever. I contact Brian to get some replacement parts so maybe those will get here today and I can knock them out later tonight.&lt;br/&gt;&lt;br/&gt;As I couldn’t finish the board I decided to wit on the thru-hole parts too. To pass the time I started re-reading my Mobile Robotics book and looking for online content along the lines of PID motor control code using the ATMega128. I found a very promising site (still investigating) at &lt;a href="http://www.drtak.org"&gt;www.drtak.org&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I have also been playing with some driving strategies for the course which may end up affecting my base platform’s shape.&lt;br/&gt;&lt;br/&gt;Onward,&lt;br/&gt;Jay&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115980441339372099?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115980441339372099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115980441339372099'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/10/microprocessor-update-well-i-learned.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115946348879131302</id><published>2006-09-28T11:47:00.000-05:00</published><updated>2006-11-15T15:23:54.014-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Microcontroller&lt;/strong&gt; &lt;br/&gt;&lt;br/&gt;I have ordered a microcontroller kit from&lt;a href="http://www.bdmicro.com"&gt; www.bdmicro.com&lt;/a&gt; to use for my robot. I have used HC11’s HC12’s, Basics Stamps II’s, and OOPics on former robots. In my engineering life I have played with PICs , AVRs, and Rabbit2000s. My favorite, the AVR. Thus when I found the ATMega128 kit I felt at home. I prefer C to ASM and Basic and the AVR is optimized for C. I also wanted the built in features the AVR offers (A2D, PWM, I2C, etc…). So my kit will be here today and I will have either a long night or a short weekend of SMD soldering and testing.&lt;br/&gt;&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7458/3910/1600/mav2b_ph1_vsm.jpg"&gt;&lt;img src="http://photos1.blogger.com/blogger/7458/3910/400/mav2b_ph1_vsm.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align="left"&gt;&lt;div align="left"&gt;I also order the ICE from&lt;a href="http://www.ecrostech.com"&gt; www.ecrostech.com&lt;/a&gt; as I only have a STK400 and don’t need want the STK500. I will be using WinAVR and it’s associated tools (though not PN, I use &lt;a href="http://www.ultraedit.com"&gt;Ultredit32&lt;/a&gt; and love it) and AVRStudio from Atmel for the actual flashing.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;I know for certain that I will have a serial LCD (as I have a bunch of them I bought when a local business went out), will do line tracking, will use a sonar (I have one so why not), will try to incorporate a &lt;a href="http://www.cs.cmu.edu/~cmucam/"&gt;CMUcam&lt;/a&gt; (I have one and have always wanted to use it so…). I would like to implement speech/sounds but this is “bells and whistles” stuff so it’s on the back burner.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7458/3910/1600/CMUcam.jpg"&gt;&lt;img src="http://photos1.blogger.com/blogger/7458/3910/320/CMUcam.jpg" border="0" alt="" /&gt;&lt;br/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align="left"&gt;Onward,&lt;br/&gt;Jay&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115946348879131302?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946348879131302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946348879131302'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/09/microcontroller-i-have-ordered.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115946193589923819</id><published>2006-09-28T11:29:00.000-05:00</published><updated>2006-11-15T15:23:53.911-06:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Projectile motion&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Well, I can't seem to get my mind off this thing. I mean it's really simple and yet I find myself considering and reconsidering materials, configurations, issues ... it's a flaw I have. I actually get more done when I don't have much time and I'm shooting from the hip. I can make things work versus engineering them to (that's my take anyway). So yesterday I spent my lunch rediscovering the formulas for projectile motion.&lt;br /&gt;&lt;br /&gt;When a ball is launched at an angle (theta) the only force acting in the x direction (horizontal) is the initial force that propels the ball in the x direction. But the y direction has gravity that works against it. My thinking was that I know the height and range from the hoop. At what angle and what linear speed would the ball have to be shot to hit this point at it’s apex (upward velocity = 0)?&lt;br /&gt;&lt;br /&gt;I created a spreadsheet to play with different angles to determine the velocity of the ball. Then using the calculated values, I plugged these back in and plotted the flight path with respect to time. I added a vertical line to show the hoop. In this way I can actually change the angle, initial velocity and launcher height to see the trajectory and time to target. Have a look below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7458/3910/1600/projectile.jpg"&gt;&lt;img alt="" src="http://photos1.blogger.com/blogger/7458/3910/320/projectile.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition, I calculated the RPM of the motor for the specified velocity and then reversed it to specify the motor speed to calculate the linear velocity so I could play with the angle. It’s quite useful, but we’ll see how reality plays out.&lt;br /&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115946193589923819?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946193589923819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946193589923819'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/09/projectile-motion-well-i-cant-seem-to.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115946087635725905</id><published>2006-09-28T11:13:00.001-05:00</published><updated>2006-11-15T15:23:53.793-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Base&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;For this bot I plan to use PVC that my brother gave me. It's 1/4" thick and most likely the same stuff sold here &lt;a href="http://www.budgetrobotics.com/shop/?shop=1&amp;cat=103"&gt;http://www.budgetrobotics.com/shop/?shop=1&amp;amp;cat=103&lt;/a&gt; I am able to cut it with a razor knife, but I have cut myself a few times in my excitement to get a base mocked up. I'll try my Dremmel to see how it goes.&lt;br /&gt;&lt;br /&gt;I went to Radio Shack and picked up some discontinued &lt;a href="http://www.vexlabs.com/"&gt;VEX&lt;/a&gt; motors. In reality they are nothing more than Futaba S148 servos modified for continuous rotation. That and they use the VEX square drive shafts and clutchs. At $9.97 ea I thought I ws getting a good deal ... though I'm not so sure of this. Servos are slow and 4' x 6' is a rather big field ... I am seriously considering using my old tank base with DC motors and encoders already mounted.&lt;br /&gt;In an effort to play with prototyping a new wheel layout though I mounted 1.5" strips of Velcro on my cutout base so I could play with motor/wheel spacings. This is on hold as I'm brainstorming my ball launcher too much.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;a href="http://photos1.blogger.com/blogger/7458/3910/1600/tankbase.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7458/3910/320/tankbase.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;Tank base&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;a href="http://photos1.blogger.com/blogger/7458/3910/1600/protobase.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7458/3910/200/protobase.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;Prototype Base. 8"x8"&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;br /&gt;Onward,&lt;br /&gt;Jay &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115946087635725905?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946087635725905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946087635725905'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/09/base-for-this-bot-i-plan-to-use-pvc_28.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115946002590889235</id><published>2006-09-28T11:04:00.000-05:00</published><updated>2006-11-15T15:23:53.533-06:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Ball Launcher&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;I actually started the process back in August. The first thing I did was mock up a ball launcher. It is/was a simple affair. I used a surplus DC motor (I dismantle and keep any electronic and mechanical bits from old PC's, VCRS, and thinks to my dad photocopiers ... my wife calls it junk so it's my junk box 'o stuff) a scrap of PVC two sheets of paper, tape, a foam wheel (from my RC landing gear), a rubber band, and an old AT power supply (+12V and +5V). Using a 40mm ping pong ball as my guide I rolled the first sheep of paper into a tube and taped it. Then to stiffent the tube I added another sheet of paper. I mounted the wheel on the motor shaft using a piece of the rubber band to take of the slack ... it works well actually and if a trick from RC. Then I cut a notch out of the PVC a bit smaller (always cut smaller as you can shave off material easier than starting over ;) than the diameter of the motor case and wedged the motor in. I used an exacto knife to cut a slot in my tube long enough to accomodate the foam wheel. Then using the 5V I ran some tests. Conclusion: it works fine, and so I will continue to refine my design.&lt;br /&gt;&lt;br /&gt;[Add photo here]&lt;br /&gt;&lt;br /&gt;Onwards,&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115946002590889235?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946002590889235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115946002590889235'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/09/ball-launcher-i-actually-started.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-35189573.post-115945874745745509</id><published>2006-09-28T10:36:00.000-05:00</published><updated>2006-11-15T15:23:53.273-06:00</updated><title type='text'></title><content type='html'>This is my first post to this blog. I'd thought I'd explain what my intentions are and what the content will contain.&lt;br /&gt;&lt;br /&gt;Background: I have been playing with autonomous robotics since my sophomore year at college. The Southeast IEEE student chapter hosts an annual Hardware competition. It involves a team of student constructing an autonomous vehicle to navigate a "game" board to complete assigned tasks and compete head to head against other student teams in the same region. While a EE has the electronics understanding, practical knowledge (and I only speak for my school) was nil. Worse, mechanical and machining knowledge were not included in the EE curriculum (although helpful subjects like art appreciation and philosophy were :rolleyes:) So a lot of it is OJT (on the job training). I have attended 4 of the competitions and helped with a fifth. This year I am advising my alma mater's team while building my own bot to compete with the same rules but not to be entered. It's good to have a set of goals when you start something like this so you know where you're going and how far you've gotten.&lt;br /&gt;&lt;br /&gt;Intent: My purpose for this blog is to keep anyone interested up to date on my progress as I construct and code this bot. Hopefully you can learn from my experiences and I can be “kept honest” by feeling the need to make frequent updates and progress.&lt;br /&gt;&lt;br /&gt;Content: I will try to make this a media rich blog with progress pictures, maybe video, charts/graphs and links to interesting sites I’ve uncovered.&lt;br /&gt;&lt;br /&gt;Rules: The rules to the competition are &lt;a href="http://www.southeastcon.org/2007/doc/SoutheastCon_2007_Hardware_Rules.pdf"&gt;http://www.southeastcon.org/2007/doc/SoutheastCon_2007_Hardware_Rules.pdf&lt;/a&gt; Broken down the robot will need to navigate to a code box, received/decode the IR transmission, then navigate to the ball box and present the code to get 3 more shots. To me the most fun part of this is the shooting of the balls through the hoop. This is what I’ve been working on the past week or so.&lt;br /&gt;&lt;br /&gt;Onward.&lt;br /&gt;&lt;br /&gt;Jay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35189573-115945874745745509?l=jaydmdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115945874745745509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35189573/posts/default/115945874745745509'/><link rel='alternate' type='text/html' href='http://jaydmdigital.blogspot.com/2006/09/this-is-my-first-post-to-this-blog.html' title=''/><author><name>Jay C</name><uri>http://www.blogger.com/profile/08387474307979531944</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp1.blogger.com/_45gEBj4xUTA/RvPtDPOgIfI/AAAAAAAAABw/DvgyGeOHF4Y/s400/blogger_pic.jpg'/></author></entry></feed>
