tag:blogger.com,1999:blog-18904039508226964042024-03-13T05:14:41.619+02:00Robocombo - Robotic and Electronic Experimentsfun projects with microcontroller boardsMarishttp://www.blogger.com/profile/10001155991104971054noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-1890403950822696404.post-39437615211501634162010-12-11T17:00:00.021+02:002011-01-03T00:49:24.294+02:00Interfacing TI Launchpad to Digital Caliper<h2>Using msp430 Launchpad to Connect Digital Caliper to RS232 serial port</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1iBHFmk9bOKHFMFNlQc-Z8eGUVX50TwiuNZ1oBVAN9zShGjj3VGU6BxB8XsgLFM5l2lb_AvsLNL-h7IoEUt2uIW20hGp4F6lhX0bnIMroZaWvlwYz3AruOWeZNHJeLgLKKQT4xU986TzW/s1600/P1030024-cr.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1iBHFmk9bOKHFMFNlQc-Z8eGUVX50TwiuNZ1oBVAN9zShGjj3VGU6BxB8XsgLFM5l2lb_AvsLNL-h7IoEUt2uIW20hGp4F6lhX0bnIMroZaWvlwYz3AruOWeZNHJeLgLKKQT4xU986TzW/s320/P1030024-cr.jpg" width="290" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Caliper and Launchpad</td></tr>
</tbody></table><a href="http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_%28MSP-EXP430G2%29">MSP430 Launchpad </a> from <a href="http://www.ti.com/">TI</a> is new, <a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?lang=en&site=US&WT.z_homepage_link=hp_go_button&KeyWords=msp430+launchpad&x=0&y=0">very affordable (4.35$)</a>, value line development platform. It uses <a href="http://focus.ti.com/docs/prod/folders/print/msp430g2231.html">MSP430G2231</a> - msp430 series mcu and includes everything you'll need to start programming microcontroller. In this article I'll show how to use this development platform to read data from digital caliper and send then to PC RC232 serial port.<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "ca-pub-1397632599528829";
/* Robocombo-inposts */
google_ad_slot = "7982429310";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
<br />
You can get digital caliper from <a href="http://ebay.com/">ebay.com</a> from about 7$ with shipping. I bought it from this <a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=320573110856">seller</a>, but you can search for <a href="http://shop.ebay.com/Digital+Vernier+Caliper">Digital Vernier Caliper</a> to find many more. Most of them have small digital port on side, with 4 pins. You could connect data port to microcontroller and use digital caliper as precise position sensor, for instance.<br />
<br />
<h2>Taking it Apart</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNrAT_q4RSdfBqKuXRD7FCPN2TXbDUTqm5dxcqKr3gsbwXsOiQ3BxRX1GmL2TcXDAQA2K-X9NRSaemZzfCBy5boA6jQf11bHlSGSMMwxJyYIfAa1gpTFZjFEQvLd4Zc8LO_sXQf3vBPeu/s1600/P1030026-cr.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="vernier caliper back, break open" border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNrAT_q4RSdfBqKuXRD7FCPN2TXbDUTqm5dxcqKr3gsbwXsOiQ3BxRX1GmL2TcXDAQA2K-X9NRSaemZzfCBy5boA6jQf11bHlSGSMMwxJyYIfAa1gpTFZjFEQvLd4Zc8LO_sXQf3vBPeu/s200/P1030026-cr.jpg" width="200" /></a></div>Before connecting wires and reading data I wanted to find out "what's inside" and what principle is used to sense position changes. After some struggle with screwdriver and trying to open it up with force, I discovered there 4 screws on back of main unit with display. You just have to take off plastic sticker from back.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIljP9X96i6MAUUQdXpxerOItXO9za4Q-Ri_FnMqOWSWf7gODF8UtNzUTHpwu0fLqeRXj521dmGFEKV6vEDmYnYCBFl84gxb_knM7uhTrquu02OapF9uzMC2vIq22FiRWJCDgPAj_BC68z/s1600/P1020941-cr.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="calipers body with pealed off plastic" border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIljP9X96i6MAUUQdXpxerOItXO9za4Q-Ri_FnMqOWSWf7gODF8UtNzUTHpwu0fLqeRXj521dmGFEKV6vEDmYnYCBFl84gxb_knM7uhTrquu02OapF9uzMC2vIq22FiRWJCDgPAj_BC68z/s200/P1020941-cr.jpg" width="200" /></a>What I discovered or maybe more correct to say, proved to myself as I have been reading other articles that was talked about this, was that "capacitance" was used to sense movement. PCB that has display had small strips of copper. Similar pattern is on calipers part that moves, the one with units and digits. Basically both of those parts form series of capacitors and when caliper inside part is moved, all those "capacitors" are changing capacitance and from the sequence in what it changes, MCU inside caliper calculates by how far it has moved.<br />
<script type="text/javascript">
<!--
google_ad_client = "ca-pub-1397632599528829";
/* top-left-300-250 */
google_ad_slot = "5308637748";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><br />
<br />
<a name='more'></a><br />
<br />
<h2>Data Port Pinout and Data Format</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD-fisjwai4YxuoT-FXl3C8vAdGv6GVb5BWChUeUoehZIzuh7r00Pj2zce_3-Bh8muHBF0_9UgFbdKfw-WnmnpE73UAYzwmYJfhonimKf6za4toh6ESLtmmu3oBDCEtonMqeGy1te7BLY0/s1600/pinout.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="118" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD-fisjwai4YxuoT-FXl3C8vAdGv6GVb5BWChUeUoehZIzuh7r00Pj2zce_3-Bh8muHBF0_9UgFbdKfw-WnmnpE73UAYzwmYJfhonimKf6za4toh6ESLtmmu3oBDCEtonMqeGy1te7BLY0/s200/pinout.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pinout</td></tr>
</tbody></table>Digital caliper has small data pot on side, near battery cover. Theoretically you can get cable that connects to this connector, but it is very rear and more expensive than caliper itself, so I just soldered wires directly to contacts of data port.<br />
<br />
Pinout of caliper data port is Ground, Data, Clock, +1.5V. Clock is being sent out as series of 24 bit pulses and then silence. Silence (steady signal) between 24 bit bursts is about 115 msec long. Thus, we get position update about 8 times per second.<br />
<br />
CLOCK signal is normally high and is taken down on every bit. Thus, you need to read DATA on high-to-low transition. DATA line is taken high or low to signal corresponding bit.<br />
<br />
Bits form integer that corresponds to number of 100th of mm in case of metric system. And 2000th of inch in case of measurements in inches. That is, if display reads 3.67mm, you get integer 367. The same reading in inches is 0.1445 and this gives us 289 (0.1445 * 2000). So, in case if caliper is switched to inches, for the same reading, it will send now 289 instead of 367.<br />
<br />
First bit from those 24 is ignored and it is also always high. We could call it start bit. Then next bits, starting from second, form bits of number, starting from less significant bits on left. All up to 21st bit, which indicates sign - if it is high, number should be negative. This means that last 3 bits are not used. At least moving my 150mm caliper in both directions full scale I never saw anything there. Maybe working with longer calipers they will get used.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTFsDKB4-T1En6w2ox1UrdOauY-eIQ4bukFzolfTeIJJthlpLiDMN2yE-8iagWMg3Ls0Vg8Uxz4YypaT4cMlxmjyVTXuz9_Jm-8_S4HOA5Z2bUYzyN2KNbkLqQ1p_KUADPvZ7HTuRnM_dQ/s1600/bits.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="63" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTFsDKB4-T1En6w2ox1UrdOauY-eIQ4bukFzolfTeIJJthlpLiDMN2yE-8iagWMg3Ls0Vg8Uxz4YypaT4cMlxmjyVTXuz9_Jm-8_S4HOA5Z2bUYzyN2KNbkLqQ1p_KUADPvZ7HTuRnM_dQ/s400/bits.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">24bit data format</td></tr>
</tbody></table>And this is how 3.67 looks on Oscilloscope. Ch 1 is CLOCK directly connected to caliper, Ch2 is DATA. (you should be able to find 367 there or 101101111 reversed)<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbHnUQ66GKYjrKqCbRdVTwdqVGOYlwaEWCPdAOViCHeOvJNQCN0U65zDrnr-tjXSYCBOi6Y-qVKc97NI9SH7wd_U25PfelWmbq2k4q-Hl96lts1x9ARPDElJDWCQ8gRQR3zbnCw-aMsWEQ/s1600/scope.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbHnUQ66GKYjrKqCbRdVTwdqVGOYlwaEWCPdAOViCHeOvJNQCN0U65zDrnr-tjXSYCBOi6Y-qVKc97NI9SH7wd_U25PfelWmbq2k4q-Hl96lts1x9ARPDElJDWCQ8gRQR3zbnCw-aMsWEQ/s320/scope.jpg" width="320" /></a></div><script type="text/javascript">
<!--
google_ad_client = "ca-pub-1397632599528829";
/* Robocombo-inposts */
google_ad_slot = "7982429310";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><br />
<br />
<h2>Connecting to MSP430 Launchpad and Converting from +1.5V to +3V</h2>We want to connect DATA signal to P1.5 on Launchpad, and CLOCK to P1.4. Ground from caliper is connected to ground (pin 20) on Launchpad.<br />
<br />
But in order to interface caliper to Launchpad or any other microcontroller, you need to convert voltage signals from 0 - +1.5V range of digital caliper to 0 + 3V range what MSP430 series chip is using. That is because +1.5V what caliper is using to indicate logical 1 is not really 1 for MSP430. It is something in middle and it's not good. One of the ways to do it using simple NPN transistor and pull-up resistor (using internal one built into Launchpad).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg59YREfzMLAYGHP8bueGiVk3Q4yNlrvoTgjSLMNHJZO_SZWxpLg2EsouW8A-pWl2UGmiR-k2qGJCmU9wwuJfRBXHgBUcfv8HDzkN0VagT9ixZXZSuuojTemZf0fyeYkJT1qh58zNk1GmX-/s1600/schematics.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg59YREfzMLAYGHP8bueGiVk3Q4yNlrvoTgjSLMNHJZO_SZWxpLg2EsouW8A-pWl2UGmiR-k2qGJCmU9wwuJfRBXHgBUcfv8HDzkN0VagT9ixZXZSuuojTemZf0fyeYkJT1qh58zNk1GmX-/s400/schematics.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Schematics - connecting digital caliper to Launchpad MCU</td></tr>
</tbody></table>When there is no signal at DATA line from caliper, Colector-Emiter path is closed for transistor Q1. So, signal on P1.5 is high because of pull-up resistor (need to be enabled in software). When there is signal at DATA line Colector-Emiter path opens basically pulling P1.5 to ground, thus we get logical 0. As you see, signal gets inverted this way and we need to deal with those inverted signals in software. That is - we will fire interrupt on low-to-high transition for CLOCK and will treat low signal on DATA pin as 1 and high signal as 0.<br />
<br />
<h2>Programming MSP430 Launchpad</h2>I won't go though all source but will try to point out key parts. Basic structure of our application is that we will be mostly sleeping in low power mode and would wake up on two interrupts:<br />
<br />
<ol><li>CLOCK pulse interrupt</li>
<li>32 millisecond timer that helps us detect beginning of CLOCK bursts</li>
</ol><br />
Timer is triggering interrupt every 32 milliseconds. If during this time there has not been any CLOCK action, we know we are at idle period and next pulse that we will receive we can interpret as start of 24 bit chunk. In CLOCK interrupt, if we are in state where we know that we are ready for next 24bits, then on every CLOCK interrupt we read DATA pin state and assemble integer from bits read. When we have read all 24 bits, we send integer value our to serial as two single bytes.<br />
<br />
Setting up 32 msec timer happens at beginning of main function (we are reusing Watchdog timer as simple timer):<br />
<pre>
WDTCTL = WDT_MDLY_32; // default timer 32 msec
IE1 |= WDTIE; // Enable WDT interrupt
</pre>After this interrupt function<br />
<pre>
__interrupt void WDT_ISR(void)
</pre>will be called every 32 milliseconds.<br />
<br />
Setting up CLOCK pin (labeled P1.4, but actually pin6 on chip itself) is done here:<br />
<pre>
P1DIR &= ~CLOCK; // sets input direction
P1OUT |= CLOCK; // pull-up is selected
P1REN |= CLOCK; // pull-up/pull-down enabled
P1IES &= ~CLOCK; // interrupt triggered on low-to-high
P1IFG &= ~CLOCK; // reset interrupt flag to 0. needs to be reset on start
P1IE |= CLOCK; // interrupt enabled for CLOCK
</pre>By setting pull-up, we basically say that pin will normally be up and we just need to bring it down (connect to ground, to make it zero). This is important because we connected caliper data and clock lines using transistor. Second important part is that we setup interrupt direction to be fired from low-to-high transition. If we would look at signal direct from caliper it would be high-to-low, but as we inverted it by using transistor, we need to use this other transition.<br />
<br />
Now to most important part of our code, Interrupt function PORT1_ISR for CLOCK pin. We need to read DATA pin value as soon as we enter interrupt as if we do this later, DATA pin state might have changed already:<br />
<pre>
port = P1IN;
</pre><br />
Next we check if we are not in middle of clock burst. Ready flag is set by timer if during time interval there have not been any clock action and also it stays true while we are reading current value:<br />
<pre>
if (ready_for_data)
</pre><br />
Next we check "bits read" counter to be between 1 and 16. This way we ignore first bit as it's not relevant. If DATA bit in port is not set, it corresponds to 1 as we have inverted signal. So, if we need 1, we set most significant (the one on most left) bit of value. We had there 0 already as we started with "value" variable at 0. So, we shift all bits to right, this way preparing for next bit. After doing this 16 times, we'll have our integer value formed from bit stream:<br />
<pre>
if (bits_so_far && bits_so_far <= 16){
if (!(port & DATA)) // if 0 received, invert = >1
value |=0x8000; // then set most significant bit
value = value >> 1;
</pre><br />
We ignore bits above 16 as we have just 16 bit integer, until sign bit. Sign bit is bit nr.21. If it is set, we need to make our integer negative. One way to do it, is by using fact that integer is stored using so called <a href="http://en.wikipedia.org/wiki/Signed_number_representations">Two's complement</a> notation. So, to invert it you need to invert all bits and add one:<br />
<pre>
}else if (bits_so_far == 21){ // 21st bit indicates sign (+/-)
if (!(port & DATA))
value = (~value)+1;
</pre>Last part is detecting when we are done, that is if we successfully received all 24 bits, we have our value in variable "value" and are ready to print it. So, we set ready flag to 0 (timer will set it up again when it detects idle period) and we wake up main function from low power sleep by calling __bic_SR_register_on_exit. When you call this function inside interrupt function it sets flags inside interrupt vector basically waking up main function where it started sleeping with __bis_SR_register(LPM0_bits + GIE);<br />
<pre>
}else if (bits_so_far >= 23){ // we're done, got all bits
ready_for_data = 0; // warchdog timer will set it
__bic_SR_register_on_exit(LPM0_bits); // wake up main from LPM sleep
}
</pre><br />
When main is woken up, it sends value over serial by spiting it into two parts. Also we invert LED pin state, thus blinking LED to give visual feedback that serial transmission is happening. I won't describe serial transmit function in details as that has been described nicely already: <a href="http://www.msp430launchpad.com/2010/08/half-duplex-software-uart-on-launchpad.html">here</a>:<br />
<pre>
TXByte = value >> 8; // first byte (most significant bits)
Transmit();
TXByte = value & 0xFF; // second byte (least significant)
Transmit();
P1OUT ^= LED; // blink LED
</pre><div><br />
</div><h2>Demo - how to see the number in PC</h2>I'm using nice free terminal program <a href="http://realterm.sourceforge.net/">Realterm</a>. When you connect Launchpad to PC over USB, it creates COM port. In my case it was COM9, but you can check device manager to find out what number you have for Launchpad COM port. Start Realterm and connect to port 9, set no parity, 8 data bits, 1 stop bit and Baud to 9600. Everything besides Baud should be at this by default. You can click Open two times to close and open it, just to make sure it's really open.<br />
<br />
Besides all else, very useful feature is that you can select how you want data to be interpreted. That is, if you are sending integers, you can select if they are displayed as signed or unsigned, if they are one byte long or two. In our case it is useful as we are sending 16 bit integer (two bytes), signed. And we are just sending binary over serial, first part of integer first, then second. If you select right option (int16), then Realterm will combine those two bytes and display number in nice readable way. So, in our case you should select int16 in Display tab. See picture at the end of post.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFz4x5U6DT_P3Me73EszDepHj8FEcQuCJnKTUKRLFpwf_Zg7R0zJMbFc1mSnP9yja0NMNLwilvu8JxPztpq_PDa6HeN-MuHnR-_v5QJ6H8eX7-JG9c4QEYu2Ldc3SRpf3AxIjtphughGpJ/s1600/demo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Digital Caliper alongside Realterm and breadboard" border="0" height="63" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFz4x5U6DT_P3Me73EszDepHj8FEcQuCJnKTUKRLFpwf_Zg7R0zJMbFc1mSnP9yja0NMNLwilvu8JxPztpq_PDa6HeN-MuHnR-_v5QJ6H8eX7-JG9c4QEYu2Ldc3SRpf3AxIjtphughGpJ/s400/demo.jpg" width="400" /></a></div><br />
Now if Launchpad is programmed and caliper connected through transistors as explained above, when you switch ON caliper, you should see instant data flow of numbers from caliper into terminal screen. It should have been easy to write small windows application that reads this serial data stream and displays reading in more user friendly way, but I didn't do it as terminal program was showing it nice enough. If you are interested in Inch measurements, it won't work as well as to get digital caliper readout you will have to divide number from terminal program with 2000.<br />
<br />
<h2>C Source Code</h2>You can find full source code of project in separate article:<br />
<a href="http://robocombo.blogspot.com/p/c-source-code-msp430-launchpad-with.html">C Source Code of MSP430 Launchpad to Digital Caliper Project</a><br />
<br />
<h2>Links, resources</h2><ul><li><a href="http://www.robotroom.com/Caliper-Digital-Data-Port.html">interfacing with digital calipers</a></li>
<li><a href="http://groups.google.com/group/ti-launchpad">TI Launchpad google group</a></li>
<li><a href="http://www.msp430launchpad.com/">msp430 blog</a></li>
<li><a href="http://e2e.ti.com/support/microcontrollers/msp43016-bit_ultra-low_power_mcus/f/166.aspx">TI's MSP430 forum</a></li>
</ul><br />
<h2>Picture of Result</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKEDuLUyhUWhRS1uVjto-QedZQyLFV_v-KvvIwPR-mq0Dqo-_pffsLJ7axe3-43YSbMVeVeN-Y_pO7sVfjelLzEmUwGaOVSOY3TAAeCT4rk4UBDrjSfsqgKnN1fma4R_3f6e7YCxR6bWuT/s1600/realterm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Realterm terminal program" border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKEDuLUyhUWhRS1uVjto-QedZQyLFV_v-KvvIwPR-mq0Dqo-_pffsLJ7axe3-43YSbMVeVeN-Y_pO7sVfjelLzEmUwGaOVSOY3TAAeCT4rk4UBDrjSfsqgKnN1fma4R_3f6e7YCxR6bWuT/s400/realterm.png" width="400" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpyYPXBdPRigQrmFE5oaxJ_yaYAmSMrit-5Vks8IGRmv76p29Af0m8_QAhQBYhMy7LNEXL3AWSessZ7K_u_dwl2c_L-cwMhkNOAigd-omq_KKyKgB_tt4nrLvawiPQgpWDZJHcjq7eY7hI/s1600/setup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="breadboard connecting msp430 launchpad and digital caliper" border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpyYPXBdPRigQrmFE5oaxJ_yaYAmSMrit-5Vks8IGRmv76p29Af0m8_QAhQBYhMy7LNEXL3AWSessZ7K_u_dwl2c_L-cwMhkNOAigd-omq_KKyKgB_tt4nrLvawiPQgpWDZJHcjq7eY7hI/s400/setup.jpg" width="400" /></a></div>Let me know if you have any questions or comments!Marishttp://www.blogger.com/profile/10001155991104971054noreply@blogger.com55