<?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-413511309083211208</id><updated>2012-02-16T19:52:42.374-08:00</updated><category term='Race Car ECU'/><category term='OBDII Touch Screen'/><category term='RSS MiniMsgBoard'/><category term='LCR Meter'/><category term='Other Projects'/><category term='USB DRO'/><category term='UV PCB'/><category term='News'/><category term='Clubman'/><category term='Focus Box'/><title type='text'>MigDevelopments</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.migdevelopments.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default?start-index=26&amp;max-results=25'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-5688582920301287735</id><published>2011-05-03T03:36:00.000-07:00</published><updated>2011-05-03T03:36:13.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><category scheme='http://www.blogger.com/atom/ns#' term='Focus Box'/><title type='text'>Ford Focus Duratec Box 'O Tricks - PATS Code Fun</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This post details reverse engineering the PATS security system in the  Australian delivered Duratec engined Ford Focus.  It follows on from &lt;a href="http://www.migdevelopments.com/2011/04/ford-focus-duratec-box-o-tricks.html"&gt;this post&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;After recording a few CAN sessions with and without a valid key, it was time to try and understand the encryption method being used by the focus.&amp;nbsp; I took a punt and started by assuming they were using the Microchip owned &lt;a href="http://en.wikipedia.org/wiki/KeeLoq"&gt;Keeloq &lt;/a&gt;system.&amp;nbsp; This encryption might be used by the wireless unlock system, but as it turns out, not the PATS system.&amp;nbsp; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The cypher for the Keeloq system has been published as well as some tools to make breaking it a little easier.&amp;nbsp; I started with a brute force approach.&amp;nbsp; The code I wrote in C.Net was going to take years to complete all possible codes.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Disheartened by the lack of success I considered just creating a response map.&amp;nbsp; Basically a table of the response for each possible challenge code.&amp;nbsp; But since this is 32bit we are looking at 2GB to store the data as an offset table.&amp;nbsp; Not an ideal situation, and gathering all the data would take a long long time too.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;I started to look at the recorded challenge and response codes and thought there may be a pattern.&amp;nbsp; However I only had responses to random challenges, making things a little tough.&amp;nbsp; Then it struck me that I could remove the EFI ECU and send sequential challenges to the dash to record the responses.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;With the sequential challenge \ response data (for a few hundred codes) I started to see some patterns.&amp;nbsp; Then I dug a little further, looking at the data in binary helped a lot.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;To cut to the chase, I was able to condense the data set required down from 32GB to just 1024 bytes!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;As it turns out each byte of the challenge code maps a separate code table.&amp;nbsp; So for each byte within the 4 byte challenge code, there is just 256 answers.&amp;nbsp; Basically each byte is treated independently, greatly reducing the complexity.&amp;nbsp; This was a huge surprise!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt; There are a few little tricks (bit nibble swapping and the like) which make the simple code a little harder to see at first.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;In the next post I will illustrate some examples and the rules for this code simplification.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I am still convinced that there are patterns in the simplified code and this could be further reduced, I just haven't had the time yet.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-5688582920301287735?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/5688582920301287735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/5688582920301287735'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/05/ford-focus-duratec-box-o-tricks-pats.html' title='Ford Focus Duratec Box &apos;O Tricks - PATS Code Fun'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-4301893345483585449</id><published>2011-05-02T05:44:00.000-07:00</published><updated>2011-05-02T05:45:38.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><category scheme='http://www.blogger.com/atom/ns#' term='Focus Box'/><title type='text'>Ford Focus Duratec Box 'O Tricks - Hardware</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-a2r_YmxpzBM/TXVLY8JMclI/AAAAAAAAACw/6UDrBVs47Ec/s1600/FocusBoxFar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-a2r_YmxpzBM/TXVLY8JMclI/AAAAAAAAACw/6UDrBVs47Ec/s320/FocusBoxFar.jpg" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Just here to get a picture link for a forum...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-4301893345483585449?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4301893345483585449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4301893345483585449'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/05/ford-focus-duratec-box-o-tricks.html' title='Ford Focus Duratec Box &apos;O Tricks - Hardware'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-a2r_YmxpzBM/TXVLY8JMclI/AAAAAAAAACw/6UDrBVs47Ec/s72-c/FocusBoxFar.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-1201430535901920955</id><published>2011-04-18T04:20:00.000-07:00</published><updated>2011-04-18T04:42:02.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><title type='text'>Killing ABS Warnings - Sometimes You Just Get Lucky!</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;At the moment I am doing some work on the electrical system of a Hot Rod build that is mostly made up of a 2005 VZ Commodore, being built by Jim.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The good part about this project is that it is using almost all of the commodore, so the harness stays in tact and everything is guaranteed to work together in harmony.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Apart from a few small issues, the biggest headache is the ABS.&amp;nbsp;&amp;nbsp; The rod won't have ABS, so the instrument cluster was beeping and showing animated warnings non stop.&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hfFNByCRAXc/TaweNiwTN9I/AAAAAAAAAHc/BuEByRT4ni0/s1600/Dash.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="122" src="http://1.bp.blogspot.com/-hfFNByCRAXc/TaweNiwTN9I/AAAAAAAAAHc/BuEByRT4ni0/s320/Dash.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Pesky ABS Warning on the LCD Dash&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;I had looked at a lot of options to fix this, the easiest was to use a BCM from a non ABS VZ ute (yes they made them) but I think nearly everyone would have optioned AC &amp;amp; ABS, the base option is only to get the headline price down.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&amp;nbsp;In the end I decided the only way to fix it was to create a ghost system that would pretend to be the ABS.&amp;nbsp; Now I could reverse engineer this, but It was going to take ages and I needed access to a working system.&amp;nbsp; Convincing a friend of a friends mother that you need to plug-in an play with the family car is not as easy as you think!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This time however, I go lucky!...&amp;nbsp;&amp;nbsp; Even though the ABS wasn't hooked up on the rod, we still had the original ABS unit.&amp;nbsp; So I hooked up a CAN bus monitor and compared the system with and without the ABS module running.&amp;nbsp;&amp;nbsp; This yielded three message addresses belonging to the ABS.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-TdsV4V1wT-c/TawhVHILqSI/AAAAAAAAAHg/SHUnFbuaKdE/s1600/Power+ON+NO+ABS.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-TdsV4V1wT-c/TawhVHILqSI/AAAAAAAAAHg/SHUnFbuaKdE/s320/Power+ON+NO+ABS.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Without ABS&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-VZ7wPCGRZQs/TawhbrrgmdI/AAAAAAAAAHk/VTvbjN6Kc6E/s1600/Power+ON++ABS.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-VZ7wPCGRZQs/TawhbrrgmdI/AAAAAAAAAHk/VTvbjN6Kc6E/s320/Power+ON++ABS.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;With ABS ON&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So now I knew that the ABS module was sending frames out on 140h, 280h, 2F0h at 21ms, 100ms and 100ms respectively.&amp;nbsp; But I had no idea what the content of these frames represented.&amp;nbsp; Sure I can guess,&amp;nbsp; wheel speed, status, brake force, but that still doesn't help.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Suddenly I had a thought, I felt a little silly about trying it and didn't explain to those watching what I was doing in case of embarrassment.....&amp;nbsp; But what do you know, it worked.&amp;nbsp;&amp;nbsp;&amp;nbsp; I Just spammed out empty (all zeros) frames at on the addresses above at the original rates.&lt;br /&gt;&lt;br /&gt;It seems that the BCM was happy seeing something, but nothing from the ABS module.&amp;nbsp; It stopped telling the cluster to beep and flash, so now everyone is happy.&lt;br /&gt;&lt;br /&gt;Sometimes you just get lucky.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-1201430535901920955?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/1201430535901920955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/1201430535901920955'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/04/killing-abs-warnings-sometimes-you-just.html' title='Killing ABS Warnings - Sometimes You Just Get Lucky!'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-hfFNByCRAXc/TaweNiwTN9I/AAAAAAAAAHc/BuEByRT4ni0/s72-c/Dash.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-4077488747699073917</id><published>2011-04-14T03:33:00.000-07:00</published><updated>2011-04-14T04:23:01.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><category scheme='http://www.blogger.com/atom/ns#' term='Focus Box'/><title type='text'>Ford Focus Duratec Box 'O Tricks - Engineering In Reverse</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This post details reverse engineering the PATS security system in the Australian delivered Duratec engined Ford Focus.  It follows on from &lt;a href="http://www.migdevelopments.com/2011/04/ford-focus-duratec-box-o-tricks-system.html"&gt;this post&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&amp;nbsp;To reverse engineer this system I began by listening to the CAN bus interaction between the Cluster &amp;amp; ECU.&amp;nbsp; I use a &lt;a href="http://www.peak-system.com/Produktdetails.49+M578cbdb898b.0.html?&amp;amp;L=1&amp;amp;tx_commerce_pi1[catUid]=6&amp;amp;tx_commerce_pi1[showUid]=16"&gt;Peak USB CAN interface&lt;/a&gt;, which is great, but you need to write you own PC software to get the best out of it.&lt;br /&gt;&lt;br /&gt;The first task is to sort out which data on the bus relates to the function you are interested in.&amp;nbsp; Typically you will get 20 ~ 50 addresses reporting at different rates on the bus so it can be daunting to start with.&amp;nbsp; Removing components from the system one by one can help in starting to narrow down the addresses of interest.&lt;br /&gt;&lt;br /&gt;In this case the engine ECU PATS is reported on address 46h&amp;nbsp; whilst the instrument panel reports on 40h.&lt;br /&gt;&lt;br /&gt;The next step is to identify the interaction pattern.&amp;nbsp; There is no need to understand the detail of the message content yet, just the order and timing of the 'conversation'.&amp;nbsp;&amp;nbsp; This part needed recordings from several engine starts to compare the common parts, and the parts that changed.&lt;br /&gt;&lt;br /&gt;The data interaction is detailed below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-CvWqF_CyGhw/TabU7FZ64mI/AAAAAAAAAHM/_ZEfquD2tsY/s1600/CAN+Conversation.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="http://2.bp.blogspot.com/-CvWqF_CyGhw/TabU7FZ64mI/AAAAAAAAAHM/_ZEfquD2tsY/s400/CAN+Conversation.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;The highlighted frames are the important ones.&amp;nbsp; I don't know the interaction between the Key ECU and Cluster, but since I want to replace all of these, I don't care.&lt;br /&gt;&lt;br /&gt;Basically the above shows a classic challenge response scheme., also know as &lt;i&gt;Friend Or Foe&lt;/i&gt;&amp;nbsp; This method doesn't require any codes or keys etc to be broadcast, reducing the chance of hacking.&amp;nbsp; A diagram of the interaction is below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Q0EXnbrvQ78/TabYV5vny7I/AAAAAAAAAHQ/567QVXQ_eZ0/s1600/FriendOrFoe.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://3.bp.blogspot.com/-Q0EXnbrvQ78/TabYV5vny7I/AAAAAAAAAHQ/567QVXQ_eZ0/s320/FriendOrFoe.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Next I needed to get an understanding of the encryption to try and replicate it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-4077488747699073917?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4077488747699073917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4077488747699073917'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/04/ford-focus-duratec-box-o-tricks.html' title='Ford Focus Duratec Box &apos;O Tricks - Engineering In Reverse'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-CvWqF_CyGhw/TabU7FZ64mI/AAAAAAAAAHM/_ZEfquD2tsY/s72-c/CAN+Conversation.bmp' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-5294680373582513940</id><published>2011-04-14T02:57:00.000-07:00</published><updated>2011-04-14T03:33:35.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><category scheme='http://www.blogger.com/atom/ns#' term='Focus Box'/><title type='text'>Ford Focus Duratec Box 'O Tricks - System Layout</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This post details the PATS security system in the Australian delivered Duratec engined Ford Focus.  It follows on from &lt;a href="http://www.migdevelopments.com/2011/03/ford-focus-ztec-box-o-tricks.html"&gt;this post&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The PATS (Passive Anti Theft System) essentially forms the vehicles immobiliser.&amp;nbsp; Without the PATS system working, your Focus just wont start.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The thing that makes the system a little odd in this vehicle is the critical function performed by the instrument cluster.&amp;nbsp; Not only is the cluster required for PATS operation, it has to be coded to match both the ECU and key!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The diagram below shows the layout of the components in the Focus PATS system.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-V3Q9boX0sug/TabJH0ZzDpI/AAAAAAAAAHE/_P3dr6YMKr0/s1600/System+Layout.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="347" src="http://4.bp.blogspot.com/-V3Q9boX0sug/TabJH0ZzDpI/AAAAAAAAAHE/_P3dr6YMKr0/s400/System+Layout.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Instrument Cluster communicates with the Key ECU which is located beside the ignition cylinder, it includes a loop type antenna for wireless communication with the circuitry embedded in the key head.&amp;nbsp;&amp;nbsp; Communication with the cluster is by a independent serial bus.&lt;br /&gt;&lt;br /&gt;The Cluster interacts with the Engine ECU through the high speed CAN bus which is shared with most other ECU's.&amp;nbsp; The messages sent between these components perform many functions apart from the PATS feature.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-5294680373582513940?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/5294680373582513940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/5294680373582513940'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/04/ford-focus-duratec-box-o-tricks-system.html' title='Ford Focus Duratec Box &apos;O Tricks - System Layout'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-V3Q9boX0sug/TabJH0ZzDpI/AAAAAAAAAHE/_P3dr6YMKr0/s72-c/System+Layout.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-7062761334526805925</id><published>2011-04-02T22:01:00.000-07:00</published><updated>2011-04-14T04:35:02.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><title type='text'>Seatbelt Warning Lamp Timer</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZV4L55ykhbk/TZf-zEHIZ-I/AAAAAAAAAGY/VOAt8CY3bew/s1600/SeatbeltTimer2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-ZV4L55ykhbk/TZf-zEHIZ-I/AAAAAAAAAGY/VOAt8CY3bew/s320/SeatbeltTimer2.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;If you are registering a ICV (Clubman, Cobra etc) in Australia you will need to have a seatbelt warning light to meet ADR requirements.&amp;nbsp; There are a number of ways that the lamp is allowed to operate (for example linked to a switch in the seat), the easiest is just to run the lamp for a short time when the ignition is turned on.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The small (60x20mm) circuit will run the lamp for 20 to 30sec after power is supplied.&amp;nbsp; When power turned off and on again the timing period restarts.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The circuit is a simple and robust.&amp;nbsp; Power feed comes from ACC or ON ignition lines.&amp;nbsp; The output can run a small bulb (2W max) an LED or the lamp in an OEM dash (where it needs to be grounded to operate).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The board is double heatshrinked and supplied with fly leads and wiring instructions, it is&amp;nbsp; easily taped or cable tied to a harness or frame.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-uMppNNWDCgE/TZf-xD4PPLI/AAAAAAAAAGU/D8AUDtTqCug/s1600/SeatbeltTimer1.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="309" src="http://3.bp.blogspot.com/-uMppNNWDCgE/TZf-xD4PPLI/AAAAAAAAAGU/D8AUDtTqCug/s320/SeatbeltTimer1.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The completed timer board, wrapped in heatshrink&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-aungR8K3qk0/TZf-1JMCYeI/AAAAAAAAAGc/HUdSF9UnWjk/s1600/SeatbeltTimer3.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-aungR8K3qk0/TZf-1JMCYeI/AAAAAAAAAGc/HUdSF9UnWjk/s320/SeatbeltTimer3.gif" width="240" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Dash lamp with symbol is also available&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The Timers can be purchased for $20 including shipping (Aus only)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;If you want the lamp as well the package is shipped for $35.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;For sales and enquiries please email me using the form on the right, or using this address&amp;nbsp;&lt;/span&gt;&lt;a href="mailto:info@migdevelopments.com"&gt; info@migdevelopments.com&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Below is a hook-up diagram covering a few diferent scenareos.  Click on the image for a larger view.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FHjWB44dkuU/TabbdAFjUJI/AAAAAAAAAHU/7BxmT2_vbV8/s1600/HookUp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-FHjWB44dkuU/TabbdAFjUJI/AAAAAAAAAHU/7BxmT2_vbV8/s200/HookUp.jpg" width="141" /&gt;&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/413511309083211208-7062761334526805925?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/7062761334526805925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/7062761334526805925'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/04/seatbelt-warning-lamp-timer.html' title='Seatbelt Warning Lamp Timer'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZV4L55ykhbk/TZf-zEHIZ-I/AAAAAAAAAGY/VOAt8CY3bew/s72-c/SeatbeltTimer2.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-6829173709803767175</id><published>2011-04-02T21:58:00.000-07:00</published><updated>2011-05-04T17:30:41.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><title type='text'>Tim's Tachometer Interface</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Tim is building an ICV using a 4cly Toyota Camry engine.&amp;nbsp;&amp;nbsp; For a dash he bought a multifunction LCD unit intended for motorbikes.&amp;nbsp; It was a 'vapor' brand -&amp;gt; see picture below....&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4EJVEZ9PD9E/TZf-Bgcff4I/AAAAAAAAAGQ/a5egeRRwgpA/s1600/vapor_tachometer_w250.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-4EJVEZ9PD9E/TZf-Bgcff4I/AAAAAAAAAGQ/a5egeRRwgpA/s1600/vapor_tachometer_w250.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Vapor LCD Dash Unit - Intended For A Motorbike&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The problem was that the tachometer was not triggering.&amp;nbsp;&amp;nbsp; The vapor dash had an input that could supposedly be hooked up a number of ways.&amp;nbsp; The primary method was to wrap in input wire around the ignition lead, inductively coupling it.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Since the engine in Tim's car uses coil on plug ignition, there was no lead to wrap the line around.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Even though the dash instructions said that the tacho could also be connected to the coil trigger line, this didn't work.&amp;nbsp;&amp;nbsp; The trigger line is 5v, we fixed this with a transistor to get the same signal to 12v, but with no success.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The only time that the dash would just to life was when the line was connected to the power supply line of the coil.&amp;nbsp; When I looked at this line on the oscilloscope I could see a lot of noise related to the coil firing.&amp;nbsp; Each time the coil charged the voltage would drop and then spike to 16v when charging stoped (inductive field collapse).&amp;nbsp;&amp;nbsp; This worked ok at low rpm, but there was too much interference from the other coils at higher rpm causing erratic behaviour.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Interestingly some cheap rpm meters that plug into the cigarete plug use the noise on the power line to detect the coil firing rate.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Since the dash seemed to be triggered better by higher voltages (which would get quite high when inductively coupled with the ignition lead) I build a simple charge pump circuit to increase the system voltage to around 25v.&amp;nbsp; The 5v coil trigger line activates an NPN transistor which is pulled up to the 25v rail.&amp;nbsp;&amp;nbsp; All this gives a higher input voltage signal to the dash, causing it to spring to life.&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hJ-Ck5a8py4/TZf9-_1FpjI/AAAAAAAAAGI/cYZVEZCw_e4/s1600/TacoDrive1.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-hJ-Ck5a8py4/TZf9-_1FpjI/AAAAAAAAAGI/cYZVEZCw_e4/s320/TacoDrive1.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Circuit on proto-board&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-A-U-WbuqOCc/TZf-AxBNULI/AAAAAAAAAGM/2l8laiNM5OE/s1600/TacoDrive2.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-A-U-WbuqOCc/TZf-AxBNULI/AAAAAAAAAGM/2l8laiNM5OE/s320/TacoDrive2.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Circuit neatly mounted in a box&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-56fbjp1M3IE/Tabj_YzQI2I/AAAAAAAAAHY/aKuroWUj5YQ/s1600/Circuit.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="226" src="http://2.bp.blogspot.com/-56fbjp1M3IE/Tabj_YzQI2I/AAAAAAAAAHY/aKuroWUj5YQ/s320/Circuit.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td class="tr-caption"&gt;Basic Schematic of circuit &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The only modification we made was to hook the circuit up to two coils, doubling the rpm displayed (this adjustment couldn't be made in the dash).&amp;nbsp; The reason was that the unit was designed for a high reving motorbike and didn't look so good only revving to less than half the full display range.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-6829173709803767175?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6829173709803767175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6829173709803767175'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/04/tims-tachometer-interface.html' title='Tim&apos;s Tachometer Interface'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4EJVEZ9PD9E/TZf-Bgcff4I/AAAAAAAAAGQ/a5egeRRwgpA/s72-c/vapor_tachometer_w250.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-7681237606590485065</id><published>2011-03-07T19:26:00.000-08:00</published><updated>2011-03-07T20:10:33.463-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB DRO'/><title type='text'>USB DRO Project</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This project will increase the usability of any Mill or Lathe with minimal cost.&amp;nbsp; Whats a DRO?&amp;nbsp; It stands for Digital Read Out and is connected to the axis on a milling machine or lath to show the current location of the cutter.&amp;nbsp; This makes it much easier to make things, rather than reading the dials and counting in your head.&amp;nbsp; The productivity gains from adding a DRO are huge.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-H4qepXPFpmo/TXWlDe7RW_I/AAAAAAAAAGE/L8uC0yApfp0/s1600/Example.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="119" src="https://lh4.googleusercontent.com/-H4qepXPFpmo/TXWlDe7RW_I/AAAAAAAAAGE/L8uC0yApfp0/s200/Example.gif" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Traditional DRO System&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Unfortunately DRO's tend to be realy expensive, some systems cost more  than the home workshop equipment they are connected to.&amp;nbsp; When I started  to look at options I quickly ruled out the traditional 7 segment LED displays for the following reasons:&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;li&gt;Too difficult to run - A three axis system might have 25 or more modules!&lt;/li&gt;&lt;li&gt;Too much current draw - It adds up!&lt;/li&gt;&lt;li&gt;Too expensive - Again, the cost adds up&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;I was also keen to make the system flexible, so that some users might have one axis, others 4 or more.&amp;nbsp; Designing the PCB and control systems to be modular was a headache.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;As an alternative to 7 Segment LED modules, I explores LCD's.&amp;nbsp; However the readability was not so good and the same issues with flexibility etc weren't resolved.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Finally I decided to produce a PC based system.&amp;nbsp; It is pretty easy to get your hands on a low cost (free) older PC running XP, small LCD screens (14") are worthless and both can be mounted easily high up next to the machine (or in between a mill and lathe for a shared setup).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;By using the PC as the display and input system the costs are kept down, the system is flexible and there is plenty of scope for fancy functions to be added later (like pseudo CNC).&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-Wy200rrHH64/TXWhuojagDI/AAAAAAAAAFY/bKZxa8BDz90/s1600/UsbDro1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh6.googleusercontent.com/-Wy200rrHH64/TXWhuojagDI/AAAAAAAAAFY/bKZxa8BDz90/s400/UsbDro1.gif" width="400" /&gt; &lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-BX_xHqs6MHI/TXWhwRfw7WI/AAAAAAAAAFc/U9t3j8VvxFc/s1600/UsbDro2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh3.googleusercontent.com/-BX_xHqs6MHI/TXWhwRfw7WI/AAAAAAAAAFc/U9t3j8VvxFc/s400/UsbDro2.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The above pictures are of the prototype system currently under development.&amp;nbsp; The board on the left is the optical transceiver option (for linear\rotary position) and the board on the right is the hall switch option (for spindle RPM).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The optical transceiver and matching linear strips are from &lt;a href="http://usdigital.com/"&gt;US Digital&lt;/a&gt;.&amp;nbsp; The USB bridge is an  &lt;a href="http://www.ftdichip.com/Products/ICs/FT232R.htm"&gt;FTDI FT232RL&lt;/a&gt; and currently a &lt;a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010264"&gt;Microchip PIC18F1220&lt;/a&gt; is loaded as the micro. Power is derived from the USB bus with a P channel mosfet ensuring the board does not draw excess current during suspend mode.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The pins exiting the side of the PCB are for development programming and will not be there in the final version.&amp;nbsp; Also, the wires jumping across the micro are there to correct a mistake in the circuit which seems inevitable despite checking are rechecking (damn microchip and there use of the easily forgotten vdd \ vcc). The boards are 55mm x 32mm and were produced by &lt;a href="http://www.pcbcore.com/"&gt;PCB Core&lt;/a&gt;. The final units will be encapsulated in epoxy for water resistance. &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I will keep placing updates here as I go.&amp;nbsp; If you have any interest in the system please drop me an enquiry using the form on the right.&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-7681237606590485065?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/7681237606590485065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/7681237606590485065'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/usb-dro-project.html' title='USB DRO Project'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-H4qepXPFpmo/TXWlDe7RW_I/AAAAAAAAAGE/L8uC0yApfp0/s72-c/Example.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-3315074558434559702</id><published>2011-03-07T17:30:00.000-08:00</published><updated>2011-03-07T17:30:48.154-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UV PCB'/><category scheme='http://www.blogger.com/atom/ns#' term='Other Projects'/><title type='text'>UV PCB Exposure From Old Scanner</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This is a project I finished a long time ago and even though I no longer use it the idea could be useful for someone else into home made PCB's.&lt;br /&gt;&lt;br /&gt;Over the first few years of mucking around with electronics I tried many methods of making PCB's at home.&amp;nbsp; Starting with hand drawing the tracks with a marker pen, then moving to some of the iron on methods.&amp;nbsp; Finlay I decided the best (most accurate, repeatable, satisfying) method was the UV sensitive system from &lt;a href="http://kinsten.com.au/"&gt;Kinsten&lt;/a&gt;.&amp;nbsp; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;To make this system work as well as possible the exposure should be done on a flat bed with the artwork sandwiched between the PCB and light source.&amp;nbsp; Kinsten sell a nice UV exposure unit (picture below), but it is a bit pricey for the home user.&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-qma_pJXpdkc/TXWCrL_qRCI/AAAAAAAAAFI/C5096b164o8/s1600/kin1.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="https://lh4.googleusercontent.com/-qma_pJXpdkc/TXWCrL_qRCI/AAAAAAAAAFI/C5096b164o8/s320/kin1.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Kinsten Exposure Unit&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;As an alternative I salvaged an old flat bed scanner from a local throw-out.&amp;nbsp; Removing the workings of the scanner I placed 5 small UV fluorescent tubes and associated power circuits that I removed from a number of 'party' lights that were designed to run from batteries or a 9v plug pack.&amp;nbsp;&amp;nbsp; I seem to remember paying around $5 each for the lights on sale.&amp;nbsp;&amp;nbsp; To finish off the project I added a switch mode power supply (240v -&amp;gt; 9v) and a timer from an old oven (rotate to set, rings a bell and switches off when finished).-&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ab9jz7oe4J0/TXWCwZcsmEI/AAAAAAAAAFU/00DbdHYdi3Q/s1600/Running-UV-Exposure-Unit.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh3.googleusercontent.com/-ab9jz7oe4J0/TXWCwZcsmEI/AAAAAAAAAFU/00DbdHYdi3Q/s400/Running-UV-Exposure-Unit.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-jYGxTGdqOLg/TXWCv5cj77I/AAAAAAAAAFQ/KU883S0_9_0/s1600/Open-UV-Exposure-Unit.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh4.googleusercontent.com/-jYGxTGdqOLg/TXWCv5cj77I/AAAAAAAAAFQ/KU883S0_9_0/s400/Open-UV-Exposure-Unit.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-s6JtPyQNNO0/TXWCptmZBPI/AAAAAAAAAFE/1FUacoiREyU/s1600/Closed-UV-Exposure-Unit.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="https://lh5.googleusercontent.com/-s6JtPyQNNO0/TXWCptmZBPI/AAAAAAAAAFE/1FUacoiREyU/s400/Closed-UV-Exposure-Unit.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Photos of the recycled flat bed scanner&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This unit gave me the most repeatable and accurate home made boards, I was able to produce small pitch footprints for SMD and make double sided boards (without plated through holes \ vias).&amp;nbsp; There are also chemicals available to 'silver' the exposed copper (at room temp) to give the look of tin platting (HALT) as can be seen in the example below.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;In the end I have decided to get a commercial company to make all of my PCB's now.&amp;nbsp; Once you are handling small SMD parts and want high density there are too many defects when trying to make your own boards economically.&amp;nbsp; I recommend the following PCB manufactures:&lt;/div&gt;&lt;ul&gt;&lt;li style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://www.futurlec.com/PCBService.shtml"&gt;Futurlec&lt;/a&gt; [Thailand: For Through Hole and Larger SMD - Double Sided]&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://www.pcbcore.com/"&gt;PCB Core&lt;/a&gt; [China: For High Density, Low Pitch SMD, Multi Layer]&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-Go9gL-J7c1k/TXWCvbklUvI/AAAAAAAAAFM/SD8UOtaQDik/s1600/Main-Board-Bottom.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="https://lh4.googleusercontent.com/-Go9gL-J7c1k/TXWCvbklUvI/AAAAAAAAAFM/SD8UOtaQDik/s400/Main-Board-Bottom.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="justify" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Example PBC made using this system&lt;/td&gt;&lt;td class="tr-caption"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Of course, its is pretty hard to come by a stand alone scanner these days, they all seem to be built into multifunction printers!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-3315074558434559702?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/3315074558434559702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/3315074558434559702'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/uv-pcb-exposure-from-old-scanner.html' title='UV PCB Exposure From Old Scanner'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-qma_pJXpdkc/TXWCrL_qRCI/AAAAAAAAAFI/C5096b164o8/s72-c/kin1.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-5551154335703003199</id><published>2011-03-07T15:53:00.000-08:00</published><updated>2011-03-07T16:16:11.859-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Race Car ECU'/><title type='text'>Race Car ECU - Graduate Project</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This is a blast from the past.&amp;nbsp; Reminds me of how far my electronics knowledge and design skill has come!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;My final year engineering (mech) project was to build a prototype engine ECU and data logger (integrated) for the &lt;a href="http://www.saea.com.au/"&gt;Formula SAE&lt;/a&gt; contest.&amp;nbsp; The project was completed in partnership with Julian Sanders under &lt;a href="http://www.linkedin.com/pub/bruce-kuhnell/10/638/106"&gt;Prof Bruce Kuhnell&lt;/a&gt;.&amp;nbsp; We also had some guidance from an engineer for a Formula One team.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The system was based around a Freescale MPC555 32bit processor, which was quite advanced at the time.&amp;nbsp; The prototype was made with 2 A3 sized double sided PCBs which were hand made.&amp;nbsp; Most of the parts were through hole.&amp;nbsp; The system had an enormous number of inputs and outputs handled by the circuitry on these boards.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-g72hGUcY7PE/TXVnDH-6kWI/AAAAAAAAAE0/5eNqMIVfFIg/s1600/RaceCarECU.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="https://lh4.googleusercontent.com/-g72hGUcY7PE/TXVnDH-6kWI/AAAAAAAAAE0/5eNqMIVfFIg/s400/RaceCarECU.jpg" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-rXPCoY32w1M/TXVnBq1kMmI/AAAAAAAAAEs/zfwTuMKSfWs/s1600/LowerBoard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="361" src="https://lh4.googleusercontent.com/-rXPCoY32w1M/TXVnBq1kMmI/AAAAAAAAAEs/zfwTuMKSfWs/s400/LowerBoard.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-el3LD_8mcr4/TXVnEqCgbGI/AAAAAAAAAE8/b0tCb9A20OM/s1600/UpperBoard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="381" src="https://lh4.googleusercontent.com/-el3LD_8mcr4/TXVnEqCgbGI/AAAAAAAAAE8/b0tCb9A20OM/s400/UpperBoard.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;User input was from a 'remote' hand controller with an LCD screen and  input keys.&amp;nbsp; Data was logged onto an SD flash card using a &lt;a href="http://www.roguerobotics.com/products/electronics/ummc"&gt;uMMC&lt;/a&gt; board from &lt;a href="http://www.roguerobotics.com/"&gt;Rouge Robotics&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-RWd6V7Jr0zc/TXVnAgyF9zI/AAAAAAAAAEo/LSIgY4mAhKM/s1600/HandControlFront.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh5.googleusercontent.com/-RWd6V7Jr0zc/TXVnAgyF9zI/AAAAAAAAAEo/LSIgY4mAhKM/s400/HandControlFront.jpg" width="363" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-P-zYBdAPNOs/TXVnDtG9ImI/AAAAAAAAAE4/6Xf2WNMsgV4/s1600/uMMC.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;By the end of the project we had the system running and test software written.&amp;nbsp; However there wasn't time to hook it up to an engine.&amp;nbsp;&amp;nbsp; The reports for this project are available for download below, feel free to take a look.&amp;nbsp; Please don't send any questions or comments, the project was completed a long time ago and I am more than aware of the limitation of my understanding at the time.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0BxOfS6Uv1gfwMDE0OWIxYjQtY2NjNi00OTk2LWFkOGUtODU3YzY3Y2Y1MDI4&amp;hl=en&amp;authkey=CIia6IwP" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="https://lh4.googleusercontent.com/-W0Sdz7qIPXc/TXVvNSbZvVI/AAAAAAAAAFA/yJLa-pvZvds/s200/pdf_logo.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0BxOfS6Uv1gfwMDE0OWIxYjQtY2NjNi00OTk2LWFkOGUtODU3YzY3Y2Y1MDI4&amp;hl=en&amp;authkey=CIia6IwP"&gt;Research Paper&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0BxOfS6Uv1gfwOWFhZDk4ZTItMGZmYy00NGNlLTlkZmYtN2VjMTEwMTdmZjli&amp;hl=en&amp;authkey=CLnJ_M4J" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="https://lh4.googleusercontent.com/-W0Sdz7qIPXc/TXVvNSbZvVI/AAAAAAAAAFA/yJLa-pvZvds/s200/pdf_logo.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0BxOfS6Uv1gfwOWFhZDk4ZTItMGZmYy00NGNlLTlkZmYtN2VjMTEwMTdmZjli&amp;hl=en&amp;authkey=CLnJ_M4J"&gt;Final Report&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-5551154335703003199?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/5551154335703003199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/5551154335703003199'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/race-car-ecu-graduate-project.html' title='Race Car ECU - Graduate Project'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-g72hGUcY7PE/TXVnDH-6kWI/AAAAAAAAAE0/5eNqMIVfFIg/s72-c/RaceCarECU.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-6046447537505711481</id><published>2011-03-06T19:45:00.000-08:00</published><updated>2011-04-02T22:03:31.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clubman'/><category scheme='http://www.blogger.com/atom/ns#' term='Focus Box'/><title type='text'>Ford Focus Duratec Box 'O Tricks</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This group of blogs is about a system I developed for my Dads car (see below).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Those who build ICV's (like those at &lt;/span&gt;&lt;a href="http://www.ozclubbies.com.au/" style="font-family: Arial,Helvetica,sans-serif;"&gt;OzClubbies&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;) will appreciate that taking an engine from a donor car and getting it to work in your back yard project is getting more an more difficult as the electronics become increasingly complex.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-aZu74MSDZBg/TXRUrulyu0I/AAAAAAAAAB4/Ku-kHY5LPWA/s1600/R23.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh5.googleusercontent.com/-aZu74MSDZBg/TXRUrulyu0I/AAAAAAAAAB4/Ku-kHY5LPWA/s400/R23.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-X0qoMzmyTVc/TXRUpCc38ZI/AAAAAAAAAB0/-QnmwQvIFEE/s1600/Focus-Engine.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh4.googleusercontent.com/-X0qoMzmyTVc/TXRUpCc38ZI/AAAAAAAAAB0/-QnmwQvIFEE/s400/Focus-Engine.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;T&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;he ICV built by my father (Ian Rusch) used a 2005 Australian delivered Ford Focus 2.0L 'Duratec' engine.&amp;nbsp; When wiring up the system we wanted to retain the minimum amount of electronics from the original car.&amp;nbsp; For ADR compliance the original engine control ECU had to be retained, and obviously all of the engine sensors.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;In the past it would have been easy to separate out the engine control to run stand-alone, but not in this case.&amp;nbsp; The dashboard (gauge cluster) plays a fairly major role in the focus system, for our purposes the main function causing issues was the security system.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;-One option to take (which others have) is to just retain the original dashboard in the new car.&amp;nbsp; There are a number of reasons why we didn't want to do this.&amp;nbsp; 1. The dash didn't suit the look of the car, aftermarket gauges matched much better.&amp;nbsp; 2.&amp;nbsp; The dash would complain non stop about a myriad of things that were 'wrong' with the car, such as doors being open, power steering faults, ABS faults etc.&amp;nbsp; It is possible to trick the dash into thinking that all of the required systems are still there (by sending faked CAN Bus messages), but that is a bit of a band aid approach.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;For all the reasons above I was tasked with creating a system to allow the engine to start and run using only the Engine ECU (bypass security) and to drive the aftermarket gauges and cooling fan.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;In the next blogs I will describe the system I came up with and what I found out about the security system (Fords 'PATS' system - Passive Anti Theft System)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-6046447537505711481?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6046447537505711481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6046447537505711481'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/ford-focus-ztec-box-o-tricks.html' title='Ford Focus Duratec Box &apos;O Tricks'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-aZu74MSDZBg/TXRUrulyu0I/AAAAAAAAAB4/Ku-kHY5LPWA/s72-c/R23.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-3102216204058956382</id><published>2011-03-06T18:54:00.000-08:00</published><updated>2011-03-06T19:38:31.274-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OBDII Touch Screen'/><title type='text'>The Project That Never Was</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-VjoUI5eMOHQ/TXRIT9McqRI/AAAAAAAAABY/PntTV0G6ATI/s1600/OBDII+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="https://lh4.googleusercontent.com/-VjoUI5eMOHQ/TXRIT9McqRI/AAAAAAAAABY/PntTV0G6ATI/s400/OBDII+1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This was a project I started whilst looking at options for color LCD's to use as a remote control for a system I was designing for the company I worked for at the time.&amp;nbsp; This project was intended an an evaluation of the LCD system.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;After looking into a lot of systems I decided to use a turnkey option from &lt;a href="http://www.4dsystems.com.au/"&gt;4D&lt;/a&gt; systems, specifically the &lt;a href="http://www.4dsystems.com.au/prod.php?id=114"&gt;uLCD-32PT&lt;/a&gt;.&amp;nbsp; This is ready to go system that includes a uSD card to store images and has high level functions to draw shapes, controll the contrast etc.&amp;nbsp; This is not the cheapest option, but avoids lots and lots of hardware and code to get the LCD running.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;As an alternative, a college created a proto circuit to use Sony's PSP screen.&amp;nbsp; These screens can be bought very cheaply as replacements on ebay.&amp;nbsp; However, the circuit required about 5 power supplies and an FPGA to clock out the huge display.&amp;nbsp; Additionally, all of the connectors and chips required are tiny and impossible to solder (if you can buy them).&amp;nbsp; The final result was great, but too much work for low production.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The application I was working on for the evaluation was an &lt;a href="http://en.wikipedia.org/wiki/OBD-II_PIDs"&gt;OBDII&lt;/a&gt; interface which would allow you to plug in to your car and display all sorts of system information as dials or graphs.&amp;nbsp; Changing the display was all done through touch and swipe movements on the screen.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;I have the GUI working well when I discovered this &lt;/span&gt;&lt;a href="http://devtoaster.com/products/rev/" style="font-family: Arial,Helvetica,sans-serif;"&gt;iPhone App&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;.&amp;nbsp; Of course there was little point in going on with the project, since I would have to sell my system for close to the cost of an iPhone, and my box didn't make calls!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-MagcuRupk5Q/TXRJXZh9X9I/AAAAAAAAABo/GFQAxau0tP4/s1600/OBDII+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="https://lh3.googleusercontent.com/-MagcuRupk5Q/TXRJXZh9X9I/AAAAAAAAABo/GFQAxau0tP4/s400/OBDII+2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-B5lGq35xvy4/TXRIVVEactI/AAAAAAAAABg/cYsZb-DMoiY/s1600/OBDII+3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="https://lh4.googleusercontent.com/-B5lGq35xvy4/TXRIVVEactI/AAAAAAAAABg/cYsZb-DMoiY/s400/OBDII+3.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-QWgpFd6AAoU/TXRIWGwxo6I/AAAAAAAAABk/pz2Y04twpS0/s1600/OBDII+4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" src="https://lh6.googleusercontent.com/-QWgpFd6AAoU/TXRIWGwxo6I/AAAAAAAAABk/pz2Y04twpS0/s400/OBDII+4.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;One day I will pull this project out and find another use for it.......&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-3102216204058956382?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/3102216204058956382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/3102216204058956382'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/project-that-never-was.html' title='The Project That Never Was'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-VjoUI5eMOHQ/TXRIT9McqRI/AAAAAAAAABY/PntTV0G6ATI/s72-c/OBDII+1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-2476685434272905576</id><published>2011-03-06T18:18:00.000-08:00</published><updated>2011-03-06T18:35:44.912-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS MiniMsgBoard'/><title type='text'>MiniMsgBoard - Software</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-3Ysh82TxKgg/TXQ_4sXB5pI/AAAAAAAAABM/O0w3D7sMd7M/s1600/VB+Program+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="https://lh4.googleusercontent.com/-3Ysh82TxKgg/TXQ_4sXB5pI/AAAAAAAAABM/O0w3D7sMd7M/s200/VB+Program+1.jpg" width="198" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The PC Software for this project was developed using Visual Basic .NET (Visual Studio Express 2010) which can be downloaded from Microsoft for FREE.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The project requires the &lt;a href="http://www.ftdichip.com/FTDrivers.htm"&gt;FTDI D2XX&lt;/a&gt; Driver and&amp;nbsp; &lt;a href="http://www.chilkatsoft.com/Xml-ActiveX.asp"&gt;ChilKat XML ActiveX&lt;/a&gt; component to be installed.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-9aHFWreun_w/TXQ_7sXIMmI/AAAAAAAAABQ/trOCclxb4Vo/s1600/VB+Program+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh3.googleusercontent.com/-9aHFWreun_w/TXQ_7sXIMmI/AAAAAAAAABQ/trOCclxb4Vo/s400/VB+Program+2.jpg" width="397" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The USB communications are handled by the FTDI API which utilises their D2XX driver.&amp;nbsp; This is one of the two drivers you can choose to use with this chip.&amp;nbsp; The virtual COM port driver makes the device look like a regular RS232 port that can be accessed by any UART program, this is useful for debugging, but a little unprofessional.&amp;nbsp; By contrast, the D2XX driver looks more like a 'product' and limits easy access from other programs.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Changing the setup of the FT232RL is done with the &lt;a href="http://www.ftdichip.com/Support/Utilities.htm"&gt;FT_PROG&lt;/a&gt; tool from FTDI.&amp;nbsp; Here you can set the name of the device (in this case"MiniMsgBoard"), which is used by the VB code do identify which device to connect to.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The RSS data to display is handled by the &lt;a href="http://www.chilkatsoft.com/Xml-ActiveX.asp"&gt;ChilKat XML ActiveX&lt;/a&gt; component.&amp;nbsp; This allows the program to retrieve a text string from a particular RSS feed.&amp;nbsp; The program maintains a list of RSS feeds that the user likes, the address to display is randomly chosen, and similarly the item to be displayed is randomly chosen.&amp;nbsp; Even though the Chilkat Active X component is very good, I ended up writing my own XML parsing function as I found that the built-in would occasionally 'forget' to convert some XML to ASCII correctly (e.g. &amp;amp;).&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The RSS data retrieval and USB communications are handled by a thread.&amp;nbsp; This is the first time I have used threading and It is fantastic for this type of project.&amp;nbsp; Because the communications function would spend a lot of time feeding characters to the microprocessor, the user interface would lock-up.&amp;nbsp; Now with the long slow stuff handled by a thread, the user can click on the form and get an instant response.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The user interface is finished and stable, it just needs some time spent to make it pretty now.&amp;nbsp; The program starts up minimised in the notification tray, where the icon changes color to inform the user of the status.&amp;nbsp; User settings are saved within the program using the '&lt;a href="http://msdn.microsoft.com/en-us/library/saa62613%28v=vs.80%29.aspx"&gt;My.Settings&lt;/a&gt;' method, which greatly simplifies handling user preferences etc.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The RSS project is available for download below.&amp;nbsp; The executable can be found within this folder as well.&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://docs.google.com/leaf?id=0BxOfS6Uv1gfwNmE5MWI5ZDMtNTMxNi00ODE0LWI1ZjAtOGEyZDNhYzBkNjIx&amp;amp;hl=en&amp;amp;authkey=CMzw19AD" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="https://lh4.googleusercontent.com/-T0mVFWnlvwA/TXRAFcDKu7I/AAAAAAAAABU/oKo_QVHG_R4/s200/thumb-zip-folder.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;VB Mini Msg Board RSS Feeder&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-2476685434272905576?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/2476685434272905576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/2476685434272905576'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/minimsgboard-software.html' title='MiniMsgBoard - Software'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-3Ysh82TxKgg/TXQ_4sXB5pI/AAAAAAAAABM/O0w3D7sMd7M/s72-c/VB+Program+1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-6836226703237024598</id><published>2011-03-06T17:46:00.000-08:00</published><updated>2011-03-06T17:56:56.962-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS MiniMsgBoard'/><title type='text'>MiniMsgBoard - Firmware</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The firmware for this project was writing in C and compiled with &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en010014"&gt;Microchip's C18&lt;/a&gt; system.&amp;nbsp;&amp;nbsp; C18 can be downloaded for free from Microchip if you register as a student.&amp;nbsp; The files are created and managed via Microchips IDE (&lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en019469&amp;amp;part=SW007002"&gt;MPLAB&lt;/a&gt;).&amp;nbsp; The &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en023805"&gt;PICKITII&lt;/a&gt; system is integrated with the IDE so programming is done at the push of a button.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The basic program flow is grouped into 3 key areas:&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;li&gt;UART Communications&lt;/li&gt;&lt;li&gt;Display Buffer Manipulation&lt;/li&gt;&lt;li&gt;Display Function&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;b&gt;UART Communications:&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This function handles receiving ASCII characters to display.&amp;nbsp; The microcontroller uses the CTS UART line to signal to the PC software that it is ready to receive a character.&amp;nbsp;&amp;nbsp; The micro will continue to receive characters until the buffer is full, once the character has disappeared form the display it is removed from the buffer and another character can be received.&amp;nbsp; By having a buffer much larger than the display width, there is no change of gaps in the display caused by time delays on the PC side.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;b&gt;Display Buffer Manipulation:&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&amp;nbsp;This function converts the received ASCII character into a 'font map' and adds it to the display buffer.&amp;nbsp; Additionally it handles shifting the buffer along to create the 'scrolling' effect.&amp;nbsp; Protection is provided to stop the updates being visible to the viewer.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&amp;nbsp; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;b&gt;Display Function:&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&amp;nbsp;This is the function that actually runs the LED display.&amp;nbsp; The interrupt driven function switches the PNP line drivers line by line and sends SPIO commands to the GPIO chips to switch on the appropriate columns.&amp;nbsp; The speed that this function runs at is tuned to make the alternate actuation invisible to the viewer.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The firmware project is attached for download below.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://docs.google.com/leaf?id=0BxOfS6Uv1gfwNDhhNDU0ZWEtODI5Yy00NThlLWI5ZGQtODQ4MGE5YzliNTNl&amp;amp;hl=en&amp;amp;authkey=CNHHuqoF" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="https://lh4.googleusercontent.com/-eZ0w2EmmqOY/TXQ4d4l465I/AAAAAAAAABI/3Tj89Uozqks/s200/thumb-zip-folder.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Firmware ZIP Folder&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-6836226703237024598?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6836226703237024598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6836226703237024598'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/minimsgboard-firmware.html' title='MiniMsgBoard - Firmware'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-eZ0w2EmmqOY/TXQ4d4l465I/AAAAAAAAABI/3Tj89Uozqks/s72-c/thumb-zip-folder.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-2755865396220258719</id><published>2011-03-06T17:14:00.000-08:00</published><updated>2011-03-06T17:55:48.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS MiniMsgBoard'/><title type='text'>MiniMsgBoard - Hardware</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-K40OUe6ojbc/TXQtUuOpOyI/AAAAAAAAAA8/UAZ1y4XMIm0/s1600/MiniMsgBoard2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="166" src="https://lh4.googleusercontent.com/-K40OUe6ojbc/TXQtUuOpOyI/AAAAAAAAAA8/UAZ1y4XMIm0/s400/MiniMsgBoard2.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The PCB for this project is 100mm x 34mm double sided, manufactured by &lt;a href="http://www.futurlec.com/PCBService.shtml"&gt;Futurlec&lt;/a&gt;.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The display is made up of 4 LED modules, each of 5x7 pixels.&amp;nbsp; The modules are M7571AG-11 from &lt;a href="http://www.futurlec.com/PCBService.shtml"&gt;Futurlec&lt;/a&gt;.&amp;nbsp; Where the 'A' stands for common anode and 'G' for green.&amp;nbsp; Normally these modules are arranged so that they form numerals that are 7 pixels high (same as a character LCD).&amp;nbsp; However with this project I wanted to get the smallest possible display, so I squashed the font library to 6 pixels high (while still supporting capital and lower case!).&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-tx_YAoSzKr0/TXQxIa9oC1I/AAAAAAAAABE/8T8agHPKZQg/s1600/MiniMsgBoard.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="https://lh6.googleusercontent.com/-tx_YAoSzKr0/TXQxIa9oC1I/AAAAAAAAABE/8T8agHPKZQg/s400/MiniMsgBoard.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Each horizontal line of the display is connected to a common power line which is switched by a PNP transistor, controlled by the microcontroller.&amp;nbsp; each 'dot' in the vertical lines are connected together and grounded (to turn on) by one of three &lt;a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en021817"&gt;Microchip MCP23S08&lt;/a&gt; (SPI GPIO) which are used a little like a shift register.&amp;nbsp; So at any one time, only one line is active, cycling through each of the 5 lines fast enough to be naked to the human eye.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Power for the circuit is supplied from the USB system.&amp;nbsp; The current level to the display LED's has been limited to ensure that the maximum current does not exceed the 500mA allowed by the USB specification, in practice, the LED's are never all on at the same time.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The microcontroller is a &lt;a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010275"&gt;Microchip PIC18F2515&lt;/a&gt;.&amp;nbsp; A programming port is supplied for the PICKITII system.&amp;nbsp; The PIC18 Communicates via UART with an &lt;a href="http://www.ftdichip.com/Products/ICs/FT232R.htm"&gt;FTDI FT232RL&lt;/a&gt; USB UART Chip.&amp;nbsp; This greatly simplifies adding USB to your project and allows you to write microprocessor firmware without worrying about timing and overhead for USB tasks.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The PCB was designed using &lt;a href="http://www.cadsoftusa.com/"&gt;CadSoft Eagle&lt;/a&gt; which is available for free download, the limit being the size of PCB that can be designed.&amp;nbsp; While this is a great starting point for the hobbyist, I have again moved back to using &lt;a href="http://www.altium.com/"&gt;Altium&lt;/a&gt; (which is certainly a long way from free) as it is basically the industry standard and supports many more powerful functions.&amp;nbsp; Altium is much more complex and daunting for the beginner, so I would still recommend starting with Eagle.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Unfortunately I no longer have the PCB file for this project.&amp;nbsp; I may get around to drawing it up again in Altium when I get time.&amp;nbsp; The schematic is available below.&amp;nbsp; The one issue I know if is that pin 5 of the Mini-B USB connector needs to be connected to ground.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The bill of materials (BOM) is attached below.&amp;nbsp; The designators don't quite match those on the schematic, but I am sure anyone could work it out.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0BxOfS6Uv1gfwOWI0ZTgzYTAtYmI2Yi00Yjc2LWI4YzYtZWNmNTY3ZTYzNjA2&amp;amp;hl=en&amp;amp;authkey=CNHGyewK" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="https://lh6.googleusercontent.com/-lKxvIQKxmwM/TXQwNLYZMII/AAAAAAAAABA/kQVOhAA375I/s200/pdf_logo.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Schematic File&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0BxOfS6Uv1gfwYWU5ZDE0NjYtOGU0ZS00MjI5LTk5MDQtZmU3M2Q0NWVlNjM2&amp;amp;hl=en&amp;amp;authkey=CJ-tyL4O" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="https://lh6.googleusercontent.com/-lKxvIQKxmwM/TXQwNLYZMII/AAAAAAAAABA/kQVOhAA375I/s200/pdf_logo.jpg" width="80" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Bill Of Materials&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-2755865396220258719?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/2755865396220258719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/2755865396220258719'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/minimsgboard-about.html' title='MiniMsgBoard - Hardware'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-K40OUe6ojbc/TXQtUuOpOyI/AAAAAAAAAA8/UAZ1y4XMIm0/s72-c/MiniMsgBoard2.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-2083759076303135894</id><published>2011-03-05T16:22:00.001-08:00</published><updated>2011-03-06T12:57:20.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS MiniMsgBoard'/><title type='text'>RSS Mini Message Board</title><content type='html'>&lt;object height="245" width="240"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BPhYf4YNSmM?hl=en&amp;amp;fs=1&amp;version=3" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/BPhYf4YNSmM?hl=en&amp;fs=1&amp;version=3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="410"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;This is a little project that I completed a few years ago.  Recently I pulled it out again and re-wrote the PC software because I was never happy with the original version.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;At the time I designed this I was working as a designer for a &lt;a href="http://www.axent.com.au/"&gt;company&lt;/a&gt; that made huge LED message signs (like those you see on the freeway).&amp;nbsp; I set myself the challenge to see how small I could make a dot matrix message board.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The system is USB 2.0 based, providing power and the data flow from the PC.&amp;nbsp; A visual basic program on the PC collects &lt;a href="http://www.whatisrss.com/"&gt;RSS&lt;/a&gt; news feeds from sites specified by the user and sends the data for display on the board.&lt;br /&gt;&lt;br /&gt;More details to be posted soon... Click the video above to see it in action.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-2083759076303135894?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/2083759076303135894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/2083759076303135894'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/03/rss-mini-message-board.html' title='RSS Mini Message Board'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-4409446444491393297</id><published>2011-02-28T03:25:00.000-08:00</published><updated>2011-03-06T18:09:55.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Postsript</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;If there are any questions about the project you can contact me on the address below.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;I will answer general questions, however I cannot explain the reason for selecting a particular resistor value etc.&amp;nbsp; Also, no futher work was done to this project after the article, so there are no finished PCB designs or firmware updates etc.&lt;/div&gt;&lt;br /&gt;&lt;a href="mailto:info@migdevelopments.com"&gt;info@migdevelopments.com&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Microchip Contest Site &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;a href="http://www.circuitcellar.com/microchip2007/"&gt;www.circuitcellar.com/microchip2007/&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Download article PDF: &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;a href="http://www.circuitcellar.com/archives/viewable/214-Rusch/Rusch-214.pdf"&gt;http://www.circuitcellar.com/archives/viewable/214-Rusch/Rusch-214.pdf&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Download source documents: &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="style15"&gt;&lt;/span&gt;&lt;a href="ftp://ftp.circuitcellar.com/pub/Circuit_Cellar/2008/214"&gt;ftp://ftp.circuitcellar.com/pub/Circuit_Cellar/2008/214&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/413511309083211208-4409446444491393297?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4409446444491393297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4409446444491393297'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-prolouge.html' title='LCR Meter - Postsript'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-8113785460236293259</id><published>2011-02-28T03:19:00.001-08:00</published><updated>2011-02-28T03:19:34.191-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Whats Next</title><content type='html'>&lt;div style="text-align: justify;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This project was my first implementation of embedded DSP  technology. It was also my first introduction to Microchip’s 16-bit  processors. The toolchain and development tools supplied by Microchip  made coding this type of controller quick and painless. The compiler was  easy to use and all of the library files were well-documented.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;       &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;I’m pleased that I can now cross the LCR meter off of my wish  list. In addition, while adding a new and valuable tool to my workbench,  I have learned a great deal about both analog and digital design. Now I  look at the remaining items on my wish list and wonder which tool I  should attack next. Perhaps a dsPIC spectrum analyzer!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-8113785460236293259?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/8113785460236293259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/8113785460236293259'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-whats-next.html' title='LCR Meter - Whats Next'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-1187148055285434750</id><published>2011-02-28T03:15:00.000-08:00</published><updated>2011-02-28T03:15:14.885-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Further Development</title><content type='html'>&lt;div style="text-align: justify;"&gt;      &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;To correctly measure the impedance, or more importantly the  equivalent series resistance (ESR) of electrolytic capacitors, a DC-bias  voltage must be applied. I’ll add this to the next prototype as a fixed  (e.g., 2 V) bias that is isolated from the measurement equipment by  small-value DC-blocking capacitors.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;       &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Input overload protection is another feature that is especially  important for large electrolytic capacitors. It is easy to add to the  design. When the DUT is connected, stored energy in the device will  discharge into the measurement circuit. Effective protection can be  provided by varistors or Zeners coupled with forward-biased diodes.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;       &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The final version of this project will be incorporated into a  multimeter-style enclosure. It will include battery power for portable  use.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-1187148055285434750?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/1187148055285434750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/1187148055285434750'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-further-development.html' title='LCR Meter - Further Development'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-4638557575340761056</id><published>2011-02-28T03:14:00.000-08:00</published><updated>2011-02-28T03:14:03.273-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - System Performance</title><content type='html'>&lt;div style="text-align: justify;"&gt;      &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The prototype system’s performance is very pleasing. The user  interface is easy to use, push button operation is handy, and the  graphic LCD is clear and easy to read. Measurements appear to meet the  required accuracy (less than 1%), and repeatability is excellent.  Because the system can automatically choose the most suitable frequency  and circuit type, making basic measurements  is very easy.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;       &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Currently, the program implements a five-cycle averaging  function on the result to improve stability and accuracy. While this is a  useful function, it has the disadvantage of increasing the overall test  cycle time. A test on “automatic” will take up to 5 s to finish. A fast  test feature is needed in the next prototype to enable quick sorting of  parts at a lower accuracy.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;       &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Typically, LCR meters implement short-circuit and open-circuit  calibration. Tests on this device have shown that use of the four-wire  method has resulted in a series resistance error that is significantly  less than the lower-limit impedance that can be measured. Open-circuit  tests, however, have shown that there is approximately 3.5 pF of  parallel capacitance in the test leads. At frequencies below 10 kHz,  this capacitance represents an impedance value significantly above the  measurement ceiling. Future revisions of this design will add a  calibration cycle to measure and compensate for the parallel  capacitance. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-4638557575340761056?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4638557575340761056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/4638557575340761056'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-system-performance.html' title='LCR Meter - System Performance'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-8906476785468776988</id><published>2011-02-28T03:12:00.000-08:00</published><updated>2011-02-28T03:12:07.447-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Take A Measurement</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Figure 6 illustrates a simplified program flow for the function call  that performs each test. The first tasks involve setting the ADC module,  setting the DDS chip for the desired frequency, and setting the gain  for both channels to a minimum value. The function of the initial  acquisition loop is to auto-range the gain for each channel. Following  offset correction and band-pass filtering, the dataset is scanned for  the maximum value. If it’s below a preset threshold, the gain is  increased (doubled) and the acquisition starts again. This process is  continued until either a suitable gain is found or the maximum gain is  reached.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-XTxKBDC1xSY/TWuCq2AOm-I/AAAAAAAAAA4/tYwgGfEygnY/s1600/LCR7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://lh5.googleusercontent.com/-XTxKBDC1xSY/TWuCq2AOm-I/AAAAAAAAAA4/tYwgGfEygnY/s320/LCR7.jpg" width="166" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;strong&gt;Figure 6    — &lt;/strong&gt;Two main loops make up the program  structure that performs tests. The initial loop auto-ranges the analog  stage gain before the second loop makes a complete measurement.&lt;/i&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The second loop within the test function acquires data in a similar  way to the previous loop, correcting the offset and filtering the  resulting array. The main difference is that additional code is executed  to calculate the crossing point and from this the impedance and phase  angle. The number of times the loop executes is dependent on the  argument passed to the function.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;       &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;Calculations of the parameters other than impedance and phase angle are made within &lt;span class="style16"&gt;RUN_TEST()&lt;/span&gt;.  This calculation is dependent on the circuit model under consideration.  Auto mode attempts to first check if the Parallel mode is suitable  (small capacitance); otherwise, the series model is used. The resulting  parameter values are recorded to a global structure. A call to functions  within the graphics module displays the values within this structure.  It also displays the circuit elements graphically.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-8906476785468776988?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/8906476785468776988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/8906476785468776988'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-take-measurement.html' title='LCR Meter - Take A Measurement'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-XTxKBDC1xSY/TWuCq2AOm-I/AAAAAAAAAA4/tYwgGfEygnY/s72-c/LCR7.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-6411218576513358136</id><published>2011-02-28T03:06:00.000-08:00</published><updated>2011-02-28T03:06:37.542-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Firmware</title><content type='html'>I wrote the system’s code in C and compiled it with the contest  version of Microchip’s C30 compiler. Code was developed as many  individual functions, which could be tested in isolation. Developing the  code in small pieces was necessary because the programming tool I used  (PICkit 2) did not support the debugging of dsPIC devices.&lt;br /&gt;&lt;br /&gt;Coefficients for the DSP filters were designed using Momentum  Data Systems’s dsPIC FD Lite. The resulting assembly files from this  program have to be slightly modified to suit versions of MPLAB C30 v1.30  and higher because the standard declarations used are no longer allowed  by the compiler.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Before using a digital filter on a small data sample, its delay  line has to be set appropriately. Because the initial value of the  acquired dataset could lie anywhere within the sinusoid, there is a  chance the data could appear to the filter as a step input, which would  cause ringing throughout the dataset. The process of setting the delay  line involves running a set of data whose length is an exact multiple of  the period many times through the filter and ignoring the resulting  output data.&lt;br /&gt;&lt;br /&gt;Setting the delay line for IIR filters in this way doesn’t  present problems; however, the actual frequency of the “100-Hz” test was  adjusted to 100.80635 Hz to present an exact sinusoid period with an  integer-sized data set. The FIR filters used for down-sampling cannot  use recorded data because there is a strict requirement on the cycles  between ADC buffer flags. Instead, the initial 50 cycles of the filter  use fresh data to set up the delay line and then only the last few  frames are stored for further analysis.&lt;br /&gt;&lt;br /&gt;I used FastAVR’s FastLCD V1.2.0 to create the graphics  displayed on the LCD (see Photo 2). The free program enables you to  quickly create and preview graphics before exporting them as a text file  in a number of formats, including one suitable for the Toshiba chipset.  Graphics were stored in program memory as constants, representing a  sizable amount of data.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-l0DZLbbjgR8/TWuBhMdF_WI/AAAAAAAAAA0/QeZFcUelsDU/s1600/LCR6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="https://lh5.googleusercontent.com/-l0DZLbbjgR8/TWuBhMdF_WI/AAAAAAAAAA0/QeZFcUelsDU/s320/LCR6.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&amp;nbsp;&lt;strong&gt;Photo 2   —&lt;/strong&gt; Test results are displayed on the graphic  LCD. Graphics were created with FastAVR’s free program FastLCD V1.2.0.  The data was exported in a format to suit the Toshiba T6963C chipset and  stored as constants in program memory.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-6411218576513358136?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6411218576513358136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6411218576513358136'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-firmware.html' title='LCR Meter - Firmware'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-l0DZLbbjgR8/TWuBhMdF_WI/AAAAAAAAAA0/QeZFcUelsDU/s72-c/LCR6.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-1652982294030492543</id><published>2011-02-28T03:04:00.001-08:00</published><updated>2011-02-28T03:07:18.825-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - User Interface</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;You interact with the device via three control buttons. You receive  information via a 128 × 64 pixel graphic LCD using a Toshiba T6963C  chipset. The eight data lines are driven via an MCP23S08 SPI GPIO. The  RD signal is supplied as an inversion of the WR signal via a  general-purpose NPN transistor rather than using an additional GPIO  line. The two remaining control lines, CE and C/D, are driven directly  from general I/O pins.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The screen contrast is controlled by a connection to a PWM pin  clocked at 1 MHz (required for DDS operation). Currently, the contrast  is not user-adjustable, although this functionality will be added in a  later revision. Similarly, backlighting control is not implemented in  the prototype. This is required to improve battery life.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-1652982294030492543?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/1652982294030492543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/1652982294030492543'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-user-interface.html' title='LCR Meter - User Interface'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-6977182324945128547</id><published>2011-02-28T03:03:00.000-08:00</published><updated>2011-02-28T03:08:00.474-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Signal Conditioning</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The flow of signal conditioning stages is illustrated for each test  frequency in Figure 5. Before being sampled by the dsPIC ADC, each  signal is passed through an LP antialiasing filter to ensure that the  Nyquist-Shannon sampling theorem criterion is met. In this case, the  sample rate (Fs) is 100 kHz and the ADC is 10 bits; therefore, the  filter needs to reduce the signal strength by approximately 61 dB  between 10 kHz (highest frequency of interest) and 50 kHz (Fs/2). This  task was achieved by a sixth-order Butterworth filter. Microchip’s free  FilterLab 2.0 was used to design this filter and generate the passive  component values&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-beHnIMjP9uU/TWuAtGtAUTI/AAAAAAAAAAw/wIW4wLRDik0/s1600/LCR5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://lh4.googleusercontent.com/-beHnIMjP9uU/TWuAtGtAUTI/AAAAAAAAAAw/wIW4wLRDik0/s320/LCR5.jpg" width="185" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&amp;nbsp;&lt;b&gt;Figure 5 —&lt;/b&gt; Test waveforms are first passed through  antialiasing filters (sixth-order Butterworth) before being digitized by  the 10-bit ADC at 100 ksps. Down-sampling and FIR low-pass filtering is  performed on data from the 100-Hz and 1-kHz tests. The final stage  before data analysis is IIR band-pass filtering.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;Once the signal has been suitably band-limited, it is digitized by the  10-bit ADC. The next action is dependent on the test frequency. In the  case of a 10-kHz test, the signal is passed directly to an IIR band-pass  filter that limits the bandwidth to only the frequency of interest. In  the case of the 1-kHz and 100-Hz tests, the signal must first be  low-pass, FIR-filtered, and decimated. The rate of decimation is  dependent on the test frequency, either at a rate of eight or 16.  Decimation is required in this system at lower test frequencies to  minimize the size of data needed to represent a single test cycle. It  allows compliance with Nyquist criterion while only relying on a single  antialiasing filter.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-6977182324945128547?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6977182324945128547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/6977182324945128547'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-signal-conditioning.html' title='LCR Meter - Signal Conditioning'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-beHnIMjP9uU/TWuAtGtAUTI/AAAAAAAAAAw/wIW4wLRDik0/s72-c/LCR5.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-413511309083211208.post-702684221337826723</id><published>2011-02-28T02:59:00.001-08:00</published><updated>2011-02-28T03:09:01.038-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCR Meter'/><title type='text'>LCR Meter - Analog Stages</title><content type='html'>&lt;div style="text-align: justify;"&gt;For this project to be effective, I had to get heavily involved in  the black art of analog design. The nature of this device requires high  accuracy and low noise amplification over a wide range of gains. Because  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;considerable amplification is required for devices at either extreme of  the impedance spectrum, input offset and other errors can easily  saturate op-amp outputs. With this in mind, the bipolar sections of the  analog circuit were handled via Analog Devices AD8629 zero-drift op-amps  whose 1-µV offset and 0.002-µV/°C drift are orders of magnitude below  the expected signal range.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The task of the first analog stage is to condition the test signal. The signal from the DDS chip is approximately 0.3 V&lt;sub&gt;PP&lt;/sub&gt;,  and its common mode voltage (CMV) is approximately 0.3 V. The signal is  fed through a single-order, low-pass RC filter to further isolate clock  noise. From there, it is directed to the inverting input of an AD8629  op-amp. The op-amp is configured to generate a nominal 1-V&lt;sub&gt;PP&lt;/sub&gt;  signal with 0-V CMV. The required offset is achieved via a voltage  present on the non-inverting input that is adjusted by the MCP41010 10-k&lt;span class="style13"&gt;W&lt;/span&gt; digital potentiometer.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The resultant signal from the first stage is fed via a 1-k&lt;span class="style13"&gt;W&lt;/span&gt;  0.1% source resistor to the DUT. A four-wire Kelvin clip test lead is  used to minimize the effects of the lead resistance. The test signal  passes through the DUT and into the inverting input of a  ground-referenced AD8629 op-amp. The current flowing through the device  is then imposed as a voltage across the 1-k&lt;span class="style13"&gt;W&lt;/span&gt; 0.1% feedback resistor.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The differential signals for voltage and current are directed  to separate differential instrumentation-style amplifiers constructed of  three AD8629 op-amp sections each. The gain for this stage is  selectable via a Vishay Intertechnology DG418L analog switch, resulting  in either G = 2 or G = 128. The final op-amp in this differential  configuration is referenced at 2.5 V—provided by a Microchip Technology  MCP1525 precision voltage reference and buffered by a Microchip  Technology MCP6022 op-amp—to minimize source impedance.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The op-amp stages need lead compensation by way of a  small-capacitance (47 pF paralleled with the feedback resistor). This  was necessary to ensure stability, especially for stages with minimal  gain. The capacitor value was carefully chosen to not attenuate the test  frequency.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The previous stage output is centered on 2.5 V but still  requires additional gain for impedances greater or smaller than the  source resistance. The signal is amplified in binary steps (e.g., 2, 4,  8, 16, and 32) by a Microchip MCP6S91 SPI PGA. The reference pin for  this op-amp is tied to the same 2.5-V reference voltage as the previous  stage.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;The non-ideal realization of the design is caused by the  high-frequency impedance of the DG418L analog switch, a quantity not  covered in the specification sheet. At 10 kHz, the switch displays  approximately 3-dB attenuation and also introduces additional phase  shift. Both have to be compensated for. A more suitable component with a  higher cut-off frequency will be substituted in future revisions.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/413511309083211208-702684221337826723?l=www.migdevelopments.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/702684221337826723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/413511309083211208/posts/default/702684221337826723'/><link rel='alternate' type='text/html' href='http://www.migdevelopments.com/2011/02/lcr-meter-analog-stages.html' title='LCR Meter - Analog Stages'/><author><name>migdevelopments</name><uri>http://www.blogger.com/profile/12118788079372290652</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
