<?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'><id>tag:blogger.com,1999:blog-5716901919411807454</id><updated>2009-12-05T05:58:41.842+11:00</updated><title type='text'>pure robot.com</title><subtitle type='html'>Microsoft based robotics</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default'/><link rel='alternate' type='text/html' href='http://purerobot.com/default.htm'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://purerobot.com/atom.xml'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-2565330192241083382</id><published>2009-11-29T06:49:00.001+11:00</published><updated>2009-11-29T19:09:02.071+11:00</updated><title type='text'>LED Current Calculation</title><content type='html'>&lt;p&gt;At first glance, the calculation of current to an LED seems simple – you need a resistor to limit the current flow to the LED so it doesn’t draw to much and burn out.&lt;/p&gt; &lt;p&gt;But what value of resistor do you need, and how do you work that out?&lt;/p&gt; &lt;p&gt;It turns out the answer gets quite complicated, mainly due to the forward voltage (Vf) property of an LED. Forward voltage, voltage drop, or Vf, indicates the voltage that the LED reduces the circuit voltage by when current is flowing through it. The value of Vf varies according to the current and the colour and quality of the LED. As a rough guide:&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="150"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="75"&gt;Red&lt;/td&gt; &lt;td valign="top" width="75"&gt;1.7Vf&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="75"&gt;Green&lt;/td&gt; &lt;td valign="top" width="75"&gt;2.2Vf&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="75"&gt;Yellow&lt;/td&gt; &lt;td valign="top" width="75"&gt;2.1Vf&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="75"&gt;Blue&lt;/td&gt; &lt;td valign="top" width="75"&gt;4.5Vf&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="75"&gt;White&lt;/td&gt; &lt;td valign="top" width="75"&gt;3.4Vf&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;So what does that mean? Well basically it means that having an LED in your circuit will reduce the voltage in the circuit by the amounts shown above. &lt;/p&gt; &lt;p&gt;All of the voltages in the circuit are relative to the source voltage (Vs). &lt;/p&gt; &lt;p&gt;So if I have a 6V lantern battery (6Vs) and I hook up a green LED to it, suddenly there’s only 3.8V flowing through the rest of the components in the circuit.&lt;/p&gt; &lt;p&gt;To prevent the LED from burning out, you need to limit the amount of current that flows through it, usually to a maximum of between 20 and 30 milliamps (mA). The way you do that is by using a current-limiting resistor.&lt;/p&gt; &lt;p&gt;To calculate the required resistor value, you need a new voltage measurement: Vs –Vf, or Vresistor. Vs-Vf is the amount of voltage flowing through the ‘other components in the circuit’, namely the current-limiting resistor being used to restrict current flow through the LED and prevent damage occurring to it or the rest of the circuit.&lt;/p&gt; &lt;p&gt;LEDs are pretty flexible and they will happily light up with 5mA or even less. With smaller currents they will not be at their brightest and it will be much nicer to see them shining away with their maximum of 20mA or 30mA.&lt;/p&gt; &lt;p&gt;So as an example, lets say I have a red LED rated at a maximum 30mA and I want to light it up as brightly as possible with the full 30mA current supply. How would I calculate the resistor values required? To do that you need to go back to &lt;a href="http://en.wikipedia.org/wiki/Ohm's_law" target="_blank"&gt;Ohm’s law&lt;/a&gt; and apply a bit of theory. Ohm’s law states that current is equal to voltage divided by resistance:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;I = V/R&lt;/p&gt; &lt;p&gt;or in this case I = Vs-Vf / R&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Lets take our 6V lantern battery and a red LED to start with. In the chart above the red LED’s Vf is shown as 1.7 volts. These values are all entirely hypothetical at this point - in reality the LED’s Vf will vary and the battery will not produce a stable 6V. We’re going to start needing some real numbers soon, but as a place to start let’s calculate the resistor you’d need using the chart values and the lantern battery’s theoretical 6V as a voltage source (Vs):&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;30mA = (6Vs – 1.7Vf) / R&lt;/p&gt; &lt;p&gt;so 0.03A = 4.3V / R&lt;/p&gt; &lt;p&gt;so R = 4.3 / 0.03&lt;/p&gt; &lt;p&gt;so R = 143.3333333333333&lt;/p&gt; &lt;p&gt;so R = 143 ohms&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;To get started calculating the actual resistor required, you first need to get a more accurate measure of the LEDs real forward voltage drop (Vf). The easiest way to do that is to take a battery and a resistor, hook up the LED and measure it with a &lt;a href="http://en.wikipedia.org/wiki/Multimeter" target="_blank"&gt;multimeter&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;The resistor value calculated with the theoretical values should be close enough that nothing will be damaged by using it to test the actual values. Different colour LEDs will vary their voltage characteristics based on the current passing through them so you’ll get inaccurate readings if you supply a different current in your tests. In this case I calculated 143 ohms, which I’ve added to the circuit using a 100 ohm and a 43 ohm resistor in series:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_nkUO4ox46jk/SxHrZX9hYUI/AAAAAAAAAeo/ZiV2hrDNYY4/s1600-h/misc%20%2B%20LEDs%20165%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="misc   LEDs 165" border="0" alt="misc   LEDs 165" src="http://lh4.ggpht.com/_nkUO4ox46jk/SxHrZxIXh-I/AAAAAAAAAes/fMmFxFaZCzY/misc%20%2B%20LEDs%20165_thumb%5B3%5D.jpg?imgmax=800" width="324" height="244"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Crocodile_clip" target="_blank"&gt;Gator clips&lt;/a&gt; are your friend when working with a lantern battery, so that’s how I’m hooking up my LED to test. If you had a 9V battery you’d be better off with a breadboard and a nine-volt battery &lt;a href="http://en.wikipedia.org/wiki/Nine-volt_battery#Connectors" target="_blank"&gt;connector&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Here are the measurements I’ve taken with the multimeter on this circuit:&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="616"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="202"&gt;&lt;a href="http://lh4.ggpht.com/_nkUO4ox46jk/SxHrai8Q_XI/AAAAAAAAAew/p0VgYlTUrkQ/s1600-h/143%20ohm%20LED%20test%20002%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="143 ohm LED test 002" border="0" alt="143 ohm LED test 002" src="http://lh6.ggpht.com/_nkUO4ox46jk/SxHrbbDrgnI/AAAAAAAAAe0/SVxi9wPK8YQ/143%20ohm%20LED%20test%20002_thumb.jpg?imgmax=800" width="184" height="244"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;Source voltage 6.34Vs&lt;/td&gt; &lt;td valign="top" width="257"&gt;&lt;a href="http://lh3.ggpht.com/_nkUO4ox46jk/SxHrcbBIZ1I/AAAAAAAAAe4/iLVbTsv-wXk/s1600-h/143%20ohm%20LED%20test%20008%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="143 ohm LED test 008" border="0" alt="143 ohm LED test 008" src="http://lh5.ggpht.com/_nkUO4ox46jk/SxHrcyhofXI/AAAAAAAAAe8/8OIWP6mmorw/143%20ohm%20LED%20test%20008_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;LED forward voltage 2.54Vf&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://lh3.ggpht.com/_nkUO4ox46jk/SxHrdkL3aEI/AAAAAAAAAfA/y7tsdOfgEm4/s1600-h/143%20ohm%20LED%20test%20006%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="143 ohm LED test 006" border="0" alt="143 ohm LED test 006" src="http://lh5.ggpht.com/_nkUO4ox46jk/SxHreTRCNiI/AAAAAAAAAfE/fiiikB13awc/143%20ohm%20LED%20test%20006_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;Resistor voltage 3.79V&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;So the actual voltage of the source was wrong in theory and so was the forward voltage of the LED. If you’d used the theoretical calculated 143 ohms you would have been way off, supplying a mere 26.5mA to your LED and how dull that would be :). A much more accurate calculation can now be made with the real values:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;R = Vs-Vf/I&lt;/p&gt; &lt;p&gt;so R = 6.34-2.54 / 0.03&lt;/p&gt; &lt;p&gt;so R = 3.8 / 0.03&lt;/p&gt; &lt;p&gt;so R = 126.6 ohms&lt;/p&gt; &lt;p&gt;so R = 127 ohms&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;That works out quite nicely because I happen to have a 100 ohm and a 27 ohm resistor in my kit here, so connected in series I can create a 127 ohm resistor. Here’s the LED now fulfilling its potential and shining away with a clear 30mA flowing through it:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_nkUO4ox46jk/SxHrfPibFTI/AAAAAAAAAfI/f9kZPEaRVwk/s1600-h/127%20ohm%20final%20LED%20config%20-%20filmstrip%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="127 ohm final LED config - filmstrip" border="0" alt="127 ohm final LED config - filmstrip" src="http://lh5.ggpht.com/_nkUO4ox46jk/SxHrfymcdPI/AAAAAAAAAfM/3HiqfifHPLo/127%20ohm%20final%20LED%20config%20-%20filmstrip_thumb%5B1%5D.jpg?imgmax=800" width="644" height="191"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I’m still blinking and seeing little LEDs from the image burned into my retina from looking it straight in the eye. A new moon has appeared on the ceiling, an angry red moon. In other words, the thing is on and it’s bright. It is also nice and cool and has remained cool for a few minutes. It should remain cool as it is within its operating parameters. I think I’ll leave it on all day and test that theory (and the staying power of the lantern battery).&lt;/p&gt; &lt;p&gt;For further reading I’d recommend taking a look at these links:&lt;/p&gt; &lt;p&gt;Technical Charts Showing LED Characteristics:&lt;br&gt;&lt;a href="http://www.maxim-ic.com/appnotes.cfm/an_pk/3070"&gt;http://www.maxim-ic.com/appnotes.cfm/an_pk/3070&lt;/a&gt;&lt;/p&gt; &lt;p&gt;LED Resistor Calculator:&lt;br&gt;&lt;a href="http://led.linear1.org/1led.wiz"&gt;http://led.linear1.org/1led.wiz&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-2565330192241083382?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/2565330192241083382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=2565330192241083382&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/2565330192241083382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/2565330192241083382'/><link rel='alternate' type='text/html' href='http://purerobot.com/2009/11/led-current-calculation.html' title='LED Current Calculation'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-3546573470069904990</id><published>2009-10-13T20:29:00.001+11:00</published><updated>2009-10-13T20:29:45.165+11:00</updated><title type='text'>First Drill Press</title><content type='html'>&lt;p&gt;Is it wrong to feel proud of a hole 0.5mm across? &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_nkUO4ox46jk/StRIfgdVEpI/AAAAAAAAAd4/5mjgMny_2Rg/s1600-h/Drill%20Press%21%20001%5B2%5D.jpg"&gt;&lt;img title="Drill Press! 001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="242" alt="Drill Press! 001" src="http://lh6.ggpht.com/_nkUO4ox46jk/StRIgZC0LfI/AAAAAAAAAd8/Tch9OHunh7U/Drill%20Press%21%20001_thumb.jpg?imgmax=800" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I bought my first drill press today and couldn’t help but feel a little glow at having drilled a hole in a piece of copper board destined to be my first home made printed circuit board (PCB). It even fits a transistor’s leg :).&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_nkUO4ox46jk/StRIhNHVKCI/AAAAAAAAAeA/Z878REPR-HY/s1600-h/Drill%20Press%21%20006%5B2%5D.jpg"&gt;&lt;img title="Drill Press! 006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="184" alt="Drill Press! 006" src="http://lh3.ggpht.com/_nkUO4ox46jk/StRIiAfq7II/AAAAAAAAAeE/7LNpGGhbJ7U/Drill%20Press%21%20006_thumb.jpg?imgmax=800" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-3546573470069904990?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/3546573470069904990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=3546573470069904990&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/3546573470069904990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/3546573470069904990'/><link rel='alternate' type='text/html' href='http://purerobot.com/2009/10/first-drill-press.html' title='First Drill Press'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-5212228885756401439</id><published>2009-08-02T21:07:00.002+10:00</published><updated>2009-09-29T21:50:40.196+10:00</updated><title type='text'>Using a Transistor as a Digital Switch</title><content type='html'>&lt;p&gt;A basic requirement for digital electronics is to switch on a higher current device using the low current capable IO pins of a microcontroller.&lt;/p&gt; &lt;p&gt;A microcontroller is typically capable of outputting only a limited current of 90-200 milliamps (mA) across all of its IO pins. Even if you only have to light up a couple of bright LEDs that will not be enough and drawing more current than allowed could damage the microcontroller. To limit the current drawn whilst still supplying enough power to the controlled devices you need to use a device that can act as a digital switch. A transistor can fill this role, drawing only a few milliamps from the microcontroller whilst the controlled devices draw as much as they require. &lt;/p&gt; &lt;p&gt;There are a several types of transistors which can allow you to switch on or off anything from LEDs to motors. The decision for which transistor to use depends on how fast the switch needs to be flipped, and how much power will flow through it. &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_nkUO4ox46jk/Sr6kikYg99I/AAAAAAAAAdI/AfFhlQrUBHA/s1600-h/Perfect%20BC547%20Transistor%20-%20Cropped%5B8%5D.jpg"&gt;&lt;strong&gt;&lt;img title="TO-92 Packaged BC547 Transistor" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="244" alt="TO-92 Packaged BC547 Transistor" src="http://lh3.ggpht.com/_nkUO4ox46jk/Sr6kkw-BEvI/AAAAAAAAAdM/iV0RyLqgAFE/Perfect%20BC547%20Transistor%20-%20Cropped%5B9%5D.jpg?imgmax=800" width="106" align="right" border="0"&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;Bipolar Junction Transistor (&lt;a href="http://en.wikipedia.org/wiki/Bipolar_junction_transistor"&gt;BJT&lt;/a&gt;)&lt;br&gt;&lt;/strong&gt;A BJT transistor such as the NPN BC547 shown on the right can function as a digital switch. When a small amount of power is supplied to its base (middle leg), power is allowed to flow between its collector (left leg) and emitter (right leg). When the base is grounded no power can flow between collector and emitter. &lt;/p&gt; &lt;p&gt;There are two types of BJT transistor, NPN and PNP. NPN is far more widely used and in the majority of cases NPN is a better choice. The circuit symbols are shown below:&lt;br&gt;&lt;a href="http://lh5.ggpht.com/_nkUO4ox46jk/Sr79oCRm1SI/AAAAAAAAAdo/raRshkKQ75s/s1600-h/Transistors%20and%20Digital%20IO%20-%20PNP%20vs%20NPN%5B3%5D.png"&gt;&lt;img title="Transistors and Digital IO - PNP vs NPN" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="122" alt="Transistors and Digital IO - PNP vs NPN" src="http://lh6.ggpht.com/_nkUO4ox46jk/Sr79rrfV6lI/AAAAAAAAAds/kQXw61kVhL0/Transistors%20and%20Digital%20IO%20-%20PNP%20vs%20NPN_thumb%5B1%5D.png?imgmax=800" width="260" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Here is a simple circuit demonstrating an NPN transistor being used to switch on an LED:&lt;br&gt;&lt;a href="http://lh6.ggpht.com/_nkUO4ox46jk/Sr79xF2ToQI/AAAAAAAAAdw/HXpTWWDJrrs/s1600-h/Transistors%20and%20Digital%20IO%5B6%5D.png"&gt;&lt;img title="Transistors and Digital IO" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="223" alt="Transistors and Digital IO" src="http://lh3.ggpht.com/_nkUO4ox46jk/Sr79ymPynYI/AAAAAAAAAd0/JcGEKM5fGGI/Transistors%20and%20Digital%20IO_thumb%5B4%5D.png?imgmax=800" width="500" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The circuit uses the 3.3V supply from the microcontroller’s IO pin, limited to 3.3mA by the 1K resistor, to allow the 5V supply, limited to 50mA by the 100 ohm resistor, to flow through the LED.&lt;/p&gt; &lt;p&gt;I built the circuit using the &lt;a href="http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp" target="_blank"&gt;Digi Connect ME&lt;/a&gt; microcontroller and a breadboard:&lt;br&gt;&lt;a href="http://lh4.ggpht.com/_nkUO4ox46jk/Sr6kwiDDNLI/AAAAAAAAAdY/H5_mnOZR2Sw/s1600-h/Digi%20Development%20Board%5B3%5D.jpg"&gt;&lt;img title="Digi Development Board" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="484" alt="Digi Development Board" src="http://lh6.ggpht.com/_nkUO4ox46jk/Sr6k4U-S2kI/AAAAAAAAAdc/0QQytTsM1WY/Digi%20Development%20Board_thumb%5B1%5D.jpg?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The gator clip wires shown on the left connect up the Digi development board’s 5V supply to the breadboard’s left hand power rail. The white wire connects the first IO pin of the microcontroller (GPIO1) to the breadboard’s 1K resistor at the base of the BC547 transistor:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_nkUO4ox46jk/Sr6k8pRqegI/AAAAAAAAAdg/b7R2BWEcsN0/s1600-h/Breadboard%20Showing%20Transistor%20Circuit%5B3%5D.jpg"&gt;&lt;img title="Breadboard Showing Transistor Circuit" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="484" alt="Breadboard Showing Transistor Circuit" src="http://lh5.ggpht.com/_nkUO4ox46jk/Sr6lAdGhzzI/AAAAAAAAAdk/GFEEWURlF6o/Breadboard%20Showing%20Transistor%20Circuit_thumb%5B1%5D.jpg?imgmax=800" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If you have to switch higher current loads, say to drive a motor or a pump, different types of transistors may be applicable. The BC547 has a maximum current throughput of 100mA, so it’s only suitable for small loads such as the driving this LED. In particular Field Effect Transistors (&lt;a href="http://en.wikipedia.org/wiki/Field-effect_transistor" target="_blank"&gt;FET&lt;/a&gt;) may be a better choice for many higher current robotics applications.&lt;/p&gt; &lt;p&gt;The Microsoft .NET Micro Framework (.NET MF) C# code used to test out the circuit is here:&lt;br&gt;&lt;a title="http://purerobotdigiconnect.codeplex.com/SourceControl/changeset/view/29696#691604" href="http://purerobotdigiconnect.codeplex.com/SourceControl/changeset/view/29696#691604"&gt;http://purerobotdigiconnect.codeplex.com/SourceControl/changeset/view/29696#691604&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-5212228885756401439?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/5212228885756401439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=5212228885756401439&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/5212228885756401439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/5212228885756401439'/><link rel='alternate' type='text/html' href='http://purerobot.com/2009/08/using-transistor-as-digital-switch.html' title='Using a Transistor as a Digital Switch'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-4434656073058761425</id><published>2008-10-13T07:02:00.003+11:00</published><updated>2008-10-24T06:05:25.189+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>Digi Connect ME JumpStart Kit Hardware Emulation + Demo Code</title><content type='html'>&lt;p&gt;Here is a small demo application running on a Digi Connect ME JumpStart kit, and an emulator of the kit:&lt;/p&gt; &lt;p&gt;&lt;embed src="http://www.youtube.com/v/socHBCmzwhs" width="425" height="350" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;/p&gt; &lt;p&gt;I've started a new open source project for Digi Connect ME sample code, hosted on the TFS servers at CodePlex:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/PureRobotDigiConnect" href="http://www.codeplex.com/PureRobotDigiConnect"&gt;http://www.codeplex.com/PureRobotDigiConnect&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The Pure Robot - Digi Connect ME project demonstrates the basics of interaction with the Digi Connect ME module, as well as emulation of the JumpStart kit hardware.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Emulating Hardware&lt;br&gt;&lt;/strong&gt;One of the main features of this project is the Digi Connect ME JumpStart kit emulator. This was an interesting exercise for me since Digi do not supply their own emulator along with the kit and I've never attempted to build an emulator before. I've created one in the solution, in a project named PureRobot.Emulators.Digi.ConnectME.JumpStart. The code is in a beta stage: it's ready to look at with the LightFun sample code being discussed; however the serial emulation UI is not complete so the other sample projects in the solution may not work as expected yet.&lt;/p&gt; &lt;p&gt;The emulation features of the Microsoft .NET Micro Framework (.NET MF) are very easy to work with. Essentially all you need is a few lines of .NET code, an XML configuration file and some kind of UI. You can then execute your .NET MF code against the emulator and (in theory) see the same results as you would on the actual hardware.&lt;/p&gt; &lt;p&gt;I've made a basic attempt at defining the hardware in the emulator XML configuration file:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/PureRobotDigiConnect/SourceControl/FileView.aspx?itemId=13592&amp;amp;changeSetId=4771" href="http://www.codeplex.com/PureRobotDigiConnect/SourceControl/FileView.aspx?itemId=13592&amp;amp;changeSetId=4771"&gt;http://www.codeplex.com/PureRobotDigiConnect/SourceControl/FileView.aspx?itemId=13592&amp;amp;changeSetId=4771&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This file outlines the Input / Output (IO) capability of the Digi Connect ME module, and the memory characteristics as defined in the documentation:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Processor: 55MHz NS7520 (Digi Part no. &lt;a href="http://www.digi.com/products/embeddedsolutions/ns7520.jsp" target="_blank"&gt;NS7520B-1-I55&lt;/a&gt;)&lt;br&gt;Memory: 2 MB of Flash, 8 MB of SDRAM&lt;br&gt;IO: 5 GPIO pins, TTL (CMOS 3.3V) serial&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;For the user interface I used an image of the JumpStart kit board and added some overlaid bitmaps for the LEDs in the on state. &lt;/p&gt; &lt;p&gt;The emulator framework provides a nice set of objects to listen out for GPIO state changes. The only complexity in the UI code is that IO events will occur on another thread, so you need to synchronize with the UI thread before modifying the Windows Forms components to represent changes. When I first tried this, I used the InvokeRequired/BeginInvoke pattern of Windows Forms controls, but found the performance sucked. Instead I went for a synchronized set of integer variables which are modified by the IO thread using .NET thread synchronisation objects, then read on a timer from the UI thread - this seems to give a more realistic emulation experience. &lt;/p&gt; &lt;p&gt;The code for the UI form is here:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/PureRobotDigiConnect/SourceControl/FileView.aspx?itemId=159650&amp;amp;changeSetId=4771" href="http://www.codeplex.com/PureRobotDigiConnect/SourceControl/FileView.aspx?itemId=159650&amp;amp;changeSetId=4771"&gt;http://www.codeplex.com/PureRobotDigiConnect/SourceControl/FileView.aspx?itemId=159650&amp;amp;changeSetId=4771&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Running the Demo Code&lt;/strong&gt;&lt;br&gt;To run the sample code:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download the Visual Studio 2005 &lt;a href="http://www.codeplex.com/PureRobotDigiConnect/SourceControl/ListDownloadableCommits.aspx" target="_blank"&gt;source&lt;/a&gt; and open the solution  &lt;ul&gt; &lt;li&gt;You might have to cancel a few dialogs that attempt to access the source control server, then choose to 'Permanently remove source control association bindings' &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Build the solution  &lt;ul&gt; &lt;li&gt;When you build the solution the emulator will be added to the registry&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Open the Project Properties of PureRobot.Digi.ConnectME.JumpStart.LightFun -&amp;gt; Micro Framework tab, and set the Transport to Emulator and the Device to 'PureRobot.Emulators.Digi.ConnectME.JumpStart'  &lt;li&gt;Set the PureRobot.Digi.ConnectME.JumpStart.LightFun to the startup project  &lt;li&gt;Run (hit F5)  &lt;ul&gt; &lt;li&gt;If everything has been successful you should see the lights flashing away on the emulator application as they do in the video above.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Please feel free to play with the code and if you have any bugs, problems or improvements please don't hesitate to contact me through comments to this post or through the CodePlex site. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-4434656073058761425?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/4434656073058761425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=4434656073058761425&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/4434656073058761425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/4434656073058761425'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/10/digi-connect-me-jumpstart-kit-hardware.html' title='Digi Connect ME JumpStart Kit Hardware Emulation + Demo Code'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-8042779694369659458</id><published>2008-09-17T16:55:00.004+10:00</published><updated>2009-11-22T15:21:07.982+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Electronics'/><title type='text'>Voltage Regulation</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/endeavour9/SNCpmzIbVyI/AAAAAAAAASk/sN9MsDnCE1w/s1600-h/VoltageRegulator0048.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulator" align="right" src="http://lh5.ggpht.com/endeavour9/SNCpnvkG56I/AAAAAAAAASo/8VuQyRdMlLc/VoltageRegulator004_thumb6.jpg?imgmax=800" width="54" height="124"&gt;&lt;/a&gt;A common requirement for powering a microcontroller based circuit is to regulate voltage to a steady level, protecting the sensitive equipment from fluctuations in power.&lt;/p&gt; &lt;p&gt;One of the simplest devices that can be used to achieve this result is a &lt;a href="http://en.wikipedia.org/wiki/Voltage_regulator" target="_blank"&gt;voltage regulator&lt;/a&gt;, such as the &lt;a href="http://www.sipex.com/" target="_blank"&gt;Sipex&lt;/a&gt; &lt;a href="http://www.exar.com/Files/Documents/sipex/datasheets/spx1117.pdf" target="_blank"&gt;SPX1117U&lt;/a&gt; shown to the right. &lt;/p&gt; &lt;p&gt;Using the SPX1117U (the 3.3 volt variant of the SPX1117 range), I have hooked up a small circuit on the breadboard to demonstrate the process. The circuit below consists of the following components:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;9V Battery  &lt;li&gt;Gator clip wires  &lt;li&gt;Home made power jack - two strips from a ribbon cable crimped onto a two pin socket  &lt;li&gt;Assorted jumper wires - mainly borrowed from a spare bit of CAT5 cable  &lt;li&gt;An SPX1117U voltage regulator  &lt;li&gt;Three 100 ohm resistors (Brown, Black, Brown)  &lt;li&gt;A bright blue LED  &lt;li&gt;A dull three colour LED  &lt;li&gt;A DIP switch block used to control the colour of to the three colour LED &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/endeavour9/SNCpos_0NbI/AAAAAAAAASs/_6TxRLKEhcU/s1600-h/VoltageRegulation01211.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulation 012" src="http://lh3.ggpht.com/endeavour9/SNCppvfYnJI/AAAAAAAAASw/yK_BoNXhx3E/VoltageRegulation012_thumb7.jpg?imgmax=800" width="644" height="411"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="512"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="33%"&gt; &lt;p&gt;You can see the voltage output from the 9 volt battery, 8.13 volts:&lt;br&gt;&lt;br&gt;&lt;a href="http://lh5.ggpht.com/endeavour9/SNCpqpQ2SjI/AAAAAAAAAS0/-0OVKDgGwc0/s1600-h/VoltageRegulation0132.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulation 013" src="http://lh3.ggpht.com/endeavour9/SNCprcDNIKI/AAAAAAAAAS4/mXMrVP4XdsQ/VoltageRegulation013_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="33%"&gt; &lt;p&gt;And the voltage being sourced from the SIPEX SPX1117U voltage regulator, a perfect 3.3 volts:&lt;br&gt;&lt;a href="http://lh4.ggpht.com/endeavour9/SNCpsZ0elaI/AAAAAAAAAS8/2Gi9DkQ6L0A/s1600-h/VoltageRegulation0142.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulation 014" src="http://lh4.ggpht.com/endeavour9/SNCptOr7ZqI/AAAAAAAAATA/Gq9ovL3-8ls/VoltageRegulation014_thumb.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt; &lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="10"&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="33%"&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="33%"&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="10"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;The resistors are required here to protect two components: the LEDs which have a maximum current of around 30 milliamps and the voltage regulator itself which can supply a maximum current of 800 milliamps. The brightness of the LEDs will be determined by several factors to do with the quality of the material they were constructed with and the amount of current passing through them. The current flowing through the LEDs is limited by two 100 ohm resistors protecting each LED. The choice of 100 ohm resistors was somewhat arbitrary, being enough to ensure a small current is supplied so that the LEDs will light up brightly without overburdening the voltage regulator or burning out the LEDs.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Improving the Stability&lt;br&gt;&lt;/strong&gt;&lt;a href="http://lh5.ggpht.com/endeavour9/SNCpzX1__LI/AAAAAAAAATc/m4oHvLJBLuw/s1600-h/VoltageRegulatorwithCapacitor0184.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulator with Capacitor 018" align="right" src="http://lh3.ggpht.com/endeavour9/SNCpz-2z_2I/AAAAAAAAATg/Exaz4cCeFyU/VoltageRegulatorwithCapacitor018_thu.jpg?imgmax=800" width="54" height="150"&gt;&lt;/a&gt;The circuit above is fine for LEDs, but if you want to power something which requires a steadier voltage you'll need some additional components. According to the SPX1117U &lt;a href="http://www.exar.com/Files/Documents/sipex/datasheets/spx1117.pdf" target="_blank"&gt;documentation&lt;/a&gt;, an output capacitor with a minimum value of 2.2uF but recommended 100uF will make the output stable.&lt;/p&gt; &lt;p&gt;In order to increase the output voltage stability, I've added a 100uF aluminium capacitor to the circuit. It is placed across the 3.3 volt output power rail:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/endeavour9/SNCp02rYFeI/AAAAAAAAATk/oG6MoRm1Nwc/s1600-h/VoltageRegulatorwithCapacitor0133.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulator with Capacitor 013" src="http://lh6.ggpht.com/endeavour9/SNCp10OaHCI/AAAAAAAAATo/KaLp9huA5NM/VoltageRegulatorwithCapacitor013_thu.jpg?imgmax=800" width="567" height="484"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In simplified circuit diagram form, this is the above circuit, including the stabilizing capacitor:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/endeavour9/SNCp2itjgEI/AAAAAAAAATs/t_hdVs8-KPY/s1600-h/Stabilized%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Stabilized" src="http://lh5.ggpht.com/endeavour9/SNCp3hjys4I/AAAAAAAAATw/eXnRyFsk848/Stabilized_thumb%5B2%5D.jpg?imgmax=800" width="640" height="204"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The use of capacitors as &lt;a href="http://en.wikipedia.org/wiki/Capacitor#Noise_filters.2C_motor_starters.2C_and_snubbers" target="_blank"&gt;filtering&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Decoupling_capacitor" target="_blank"&gt;decoupling&lt;/a&gt; agents is especially important when one power source will be used for both sensitive components like microcontrollers and for rough components like motors. In the circuit above the capacitor is purely used for stabilizing the power output from the voltage regulator, however a more robust design to protect a sensitive circuit could be implemented like this:&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="600"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;a href="http://lh5.ggpht.com/endeavour9/SNCp4Q3jlkI/AAAAAAAAAT0/p3NlC4kEtrI/s1600-h/VoltageRegulatorwithFilterDecoupling%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulator with Filter   Decoupling Capacitors 004" src="http://lh6.ggpht.com/endeavour9/SNCp5dpEPrI/AAAAAAAAAT4/5nq3fDWL3Mc/VoltageRegulatorwithFilterDecoupling%5B8%5D.jpg?imgmax=800" width="633" height="369"&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign="top" width="200"&gt;&lt;a href="http://lh5.ggpht.com/endeavour9/SNCp6l_uwFI/AAAAAAAAAT8/U_UeTlcPHxc/s1600-h/VoltageRegulatorwithFilterDecoupling%5B6%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulator with Filter   Decoupling Capacitors 006" src="http://lh3.ggpht.com/endeavour9/SNCp7axtjbI/AAAAAAAAAUA/_k3oex1EMTc/VoltageRegulatorwithFilterDecoupling%5B5%5D.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/endeavour9/SNCp6l_uwFI/AAAAAAAAAT8/U_UeTlcPHxc/s1600-h/VoltageRegulatorwithFilterDecoupling%5B6%5D.jpg"&gt;&lt;a href="http://lh5.ggpht.com/endeavour9/SNCp8OfEWII/AAAAAAAAAUE/mNytGu1RjEU/s1600-h/VoltageRegulatorwithFilterDecoupling%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Voltage Regulator with Filter   Decoupling Capacitors 008" src="http://lh4.ggpht.com/endeavour9/SNCp8-Gc_5I/AAAAAAAAAUI/Ww-cbaGfn0E/VoltageRegulatorwithFilterDecoupling%5B2%5D.jpg?imgmax=800" width="244" height="184"&gt;&lt;/a&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Because of the different electrical characteristics and capacities that different materials allow for, a 100uF aluminium capacitor is used here as a filter and two 2.2uF tantalum capacitors for decoupling.&lt;/p&gt; &lt;p&gt;The circuit can be simplified into the diagram below:&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/endeavour9/SNCp9gZ4YDI/AAAAAAAAAUM/SkvpCKqx6D0/s1600-h/Decoupled%20Filtered%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Decoupled Filtered" src="http://lh3.ggpht.com/endeavour9/SNCp-kW0fpI/AAAAAAAAAUQ/Lz0oo02goi4/Decoupled%20Filtered_thumb%5B2%5D.jpg?imgmax=800" width="640" height="222"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This power supply circuitry can provide a stable platform for a simple robot, allowing the microcontroller to enjoy a steady voltage level whilst the other components of the robot introduce spikes and drains on the supply as they grind their way across the deserts of Mars or are picked up and hurled by a toddler.&lt;/p&gt; &lt;p&gt;Note: Thanks to the kind people on &lt;a href="http://www.electro-tech-online.com" target="_blank"&gt;Electro Tech Online&lt;/a&gt; forums for helping me understand the issues surrounding LED current calculations, which I’ll cover further in a later post.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-8042779694369659458?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/8042779694369659458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=8042779694369659458&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/8042779694369659458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/8042779694369659458'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/09/voltage-regulation.html' title='Voltage Regulation'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-7043456748534798917</id><published>2008-09-07T06:59:00.002+10:00</published><updated>2008-10-18T11:00:09.265+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>.Net Micro Framework White Papers and Resources</title><content type='html'>&lt;p&gt;Since I began researching the Microsoft .Net Micro Framework (.NET MF) I've come across some very handy white papers and resources. Here's a reading list:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Introducing the .NET Micro Framework (&lt;a href="http://download.microsoft.com/download/a/9/c/a9cb2192-8429-474a-aa56-534fffb5f0f1/.NET%20Micro%20Framework%20White%20Paper.doc" target="_blank"&gt;Word Doc&lt;/a&gt;)&lt;br&gt;A Microsoft 'Product Positioning and Technology' white paper written by Donald Thompson and Colin Miller. This white paper includes a nice discussion of the background of and business case for the .NET MF. It sells the idea that the lower development costs of using a managed environment and great tools like Visual Studio can offset the slightly higher per unit cost of using a 32-bit processor and licensing the .NET MF.&lt;br&gt;&amp;nbsp; &lt;li&gt;Official .NET MF Site  &lt;ul&gt; &lt;li&gt;Main Site (&lt;a href="http://www.microsoft.com/netmf" target="_blank"&gt;HTML&lt;/a&gt;)  &lt;li&gt;Developer Centre (&lt;a href="http://msdn.microsoft.com/en-us/embedded/bb267253.aspx" target="_blank"&gt;HTML&lt;/a&gt;)  &lt;li&gt;Official Supporting Hardware List (&lt;a href="http://www.microsoft.com/netmf/hardware" target="_blank"&gt;HTML&lt;/a&gt;)&lt;br&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Porting the .NET Micro Framework (&lt;a href="http://download.microsoft.com/download/a/c/b/acbd926c-25fc-4831-8f5b-436baa0eaadb/Porting_the_Micro_Framework.pdf" target="_blank"&gt;PDF&lt;/a&gt; or &lt;a href="http://209.85.141.104/search?q=cache:DpDauP0lVr8J:download.microsoft.com/download/a/c/b/acbd926c-25fc-4831-8f5b-436baa0eaadb/Porting_the_Micro_Framework.pdf" target="_blank"&gt;HTML&lt;/a&gt;)&lt;br&gt;A Microsoft technical white paper for device manufacturers about porting the .NET MF to their hardware platform. Includes interesting insights into the underlying framework.&lt;br&gt;&amp;nbsp; &lt;li&gt;Embedded Development Kit for the Microsoft .NET Micro Framework Step by Step Guide (&lt;a href="http://www.seanliming.com/Docs/EDK_Step_By_Step_Guide.pdf"&gt;PDF&lt;/a&gt;)&lt;br&gt;A tutorial for the SJJ Embedded Micro Solutions &lt;a href="http://www.sjjmicro.com/EDK.html"&gt;EDK&lt;/a&gt; module, which includes a great introduction to the .NET MF.&lt;br&gt;&amp;nbsp; &lt;li&gt;Introducing Devices Profile for Web Services (DPWS) (&lt;a href="http://download.microsoft.com/download/B/5/3/B53EA430-DBE5-440C-A308-DF97B10280B7/Introducing_DPWS.pdf"&gt;PDF&lt;/a&gt;)&lt;br&gt;Great introduction to DPWS, including an overview of the libraries, namespaces and important classes. Includes sample code for getting started with DPWS.&lt;br&gt;&amp;nbsp; &lt;li&gt;&lt;a href="http://informatix.miloush.net/microframework/" target="_blank"&gt;.NET Micro Framework on miloush.net&lt;/a&gt;&lt;br&gt;A great site, full of straight forward information, sample code and discussion of the .NET MF. Particularly useful is the &lt;a href="http://informatix.miloush.net/microframework/Hardware.aspx" target="_blank"&gt;list of available modules&lt;/a&gt; including approximate prices and the &lt;a href="http://informatix.miloush.net/microframework/HardwareComparisonModules.aspx"&gt;product comparison&lt;/a&gt; page, which appear to be kept up to date as new modules are released.&lt;br&gt;&amp;nbsp; &lt;li&gt;The .NET MF News Group (&lt;a href="news://msnews.microsoft.com/microsoft.public.dotnet.framework.microframework" target="_blank"&gt;newsreader&lt;/a&gt;, &lt;a href="http://groups.google.com/group/microsoft.public.dotnet.framework.microframework/topics"&gt;HTML&lt;/a&gt;, &lt;a href="http://groups.google.com/group/microsoft.public.dotnet.framework.microframework/feed/atom_v1_0_topics.xml"&gt;ATOM&lt;/a&gt; or &lt;a href="http://groups.google.com/group/microsoft.public.dotnet.framework.microframework/feed/rss_v2_0_topics.xml"&gt;RSS&lt;/a&gt;)&lt;br&gt;The official newsgroup for .NET MF questions. The forum is very active, with knowledgeable people contributing to help with practical problems.&lt;br&gt;&amp;nbsp; &lt;li&gt;The .NET MF Team Blog (&lt;a href="http://blogs.msdn.com/netmfteam" target="_blank"&gt;HTML&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/netmfteam/atom.xml" target="_blank"&gt;ATOM&lt;/a&gt; or &lt;a href="http://blogs.msdn.com/netmfteam/rss.xml" target="_blank"&gt;RSS&lt;/a&gt;)&lt;br&gt;From the horses mouth, news and announcements on the .NET MF.&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-7043456748534798917?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/7043456748534798917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=7043456748534798917&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/7043456748534798917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/7043456748534798917'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/09/net-micro-framework-white-papers-and.html' title='.Net Micro Framework White Papers and Resources'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-6327206089430867626</id><published>2008-09-03T23:49:00.001+10:00</published><updated>2008-10-05T21:50:02.629+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>Microsoft .NET Micro Framework Licensing</title><content type='html'>&lt;p&gt;The Microsoft .NET Micro Framework (.NET MF) is licensed differently according to the volume you will be selling. There are three basic scenarios:&lt;/p&gt; &lt;p&gt;&lt;em&gt;Pre-licensed Modules&lt;/em&gt;&lt;br&gt;Several original equipment manufacturers (OEMs) have ported the .NET MF to a 'module' which can be bought prepackaged with a number of connectivity and peripheral options. When you buy a module from an OEM, the license fee has already been paid to Microsoft, and there are no licensing fees for you to consider. Just buy the module, include it in your design and you're done.&lt;/p&gt; &lt;p&gt;An example of a pre-licensed module is the Digi Connect ME (&lt;a href="http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp" target="_blank"&gt;DC-ME-01T-MF&lt;/a&gt;), which can be bought for approx. USD $50, and includes the .NET MF license. For a full list of available pre-licensed modules, see the comparison chart on &lt;a href="http://informatix.miloush.net/microframework/HardwareComparisonModules.aspx" target="_blank"&gt;miloush.net&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Discrete Custom Designs for Existing Ports&lt;/em&gt;&lt;br&gt;If you are building a device for mass distribution, a prepackaged module from an OEM may not exactly meet your connectivity, peripheral or pricing requirements. In this case you can use one of the processors that an OEM has already ported to the .NET MF in your design. If you choose this approach, you first contact Microsoft at &lt;a href="mailto:netmfbiz@microsoft.com"&gt;netmfbiz@microsoft.com&lt;/a&gt; and send them information about your company, project, and potential volume. They will put you in contact with processor manufacturers from whom you can buy a CPU at volume, and then Microsoft will agree a per-unit license fee for the .NET MF in your particular case. For example, in a high-volume device project you may create a discrete design around an ARM processor supported in the porting kit or using a public board support package (&lt;a href="http://en.wikipedia.org/wiki/Board_support_package" target="_blank"&gt;BSP&lt;/a&gt;).&amp;nbsp; You could buy processors from &lt;a href="http://www.arrow.com" target="_blank"&gt;Arrow&lt;/a&gt;, &lt;a href="http://www.digikey.com" target="_blank"&gt;Digi-Key&lt;/a&gt; or some other distributor, and since those processors could be used with any platform, they won't have the license built in.&lt;/p&gt; &lt;p&gt;&lt;em&gt;New Platform Port&lt;/em&gt;&lt;br&gt;If you have a processor architecture which the .NET MF has not yet been ported to and you want to use the .NET MF on this platform, you can sign a 'porting agreement' with Microsoft. The porting process involves working closely with Microsoft developers to incorporate your platform into the .NET MF. Processor and microcontroller manufacturers such as &lt;a href="http://www.arm.com/"&gt;ARM&lt;/a&gt; and &lt;a href="http://www.nxp.com/"&gt;NXP&lt;/a&gt; have been through this process, sometimes directly and sometimes through specialists in porting new architectures to the .NET MF such as &lt;a href="http://www.adeneo-embedded.com/srt/en/document/show?location.id:=1358"&gt;Adeneo&lt;/a&gt;. OEMs such as Digi use these processors and microcontrollers as part of the design of their prepackaged modules. To create such an agreement contact Microsoft at &lt;a href="mailto:netmfbiz@microsoft.com"&gt;netmfbiz@microsoft.com&lt;/a&gt;. A Microsoft technical white paper for device manufacturers about porting the .NET MF to a new hardware platform can be found here: &lt;a href="http://download.microsoft.com/download/a/c/b/acbd926c-25fc-4831-8f5b-436baa0eaadb/Porting_the_Micro_Framework.pdf" target="_blank"&gt;PDF&lt;/a&gt; or &lt;a href="http://209.85.141.104/search?q=cache:DpDauP0lVr8J:download.microsoft.com/download/a/c/b/acbd926c-25fc-4831-8f5b-436baa0eaadb/Porting_the_Micro_Framework.pdf" target="_blank"&gt;HTML&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-6327206089430867626?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/6327206089430867626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=6327206089430867626&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/6327206089430867626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/6327206089430867626'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/09/microsoft-net-micro-framework-licensing.html' title='Microsoft .NET Micro Framework Licensing'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-2692762445256838050</id><published>2008-08-29T04:08:00.003+10:00</published><updated>2008-10-05T21:50:02.629+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>Introduction to the Microsoft .Net Micro Framework</title><content type='html'>&lt;p&gt;Let's start out with what the Microsoft .NET Micro Framework (.NET MF) is. In a nutshell, it's the future of embedded development. Programming microcontrollers for embedded devices has suffered through a litany of poor man's compilers, custom languages, non-standard development environments and until the arrival of the .NET MF was the province of the specialist low-level programmer. The .NET MF brings the finest development environment on Earth, Visual Studio, and managed C# to the embedded world. No other integrated development environment (IDE) even comes close to Visual Studio, and the debugging experience using C# and .NET MF directly on the device leaves other embedded IDEs for dead and buried. Using the increasingly standard ARM CPU as a platform, the .NET MF enables low-powered, high performance computing in micro sized packages.&lt;/p&gt; &lt;p&gt;The .NET MF is a complete re-write of the .Net common language runtime (CLR), and does not run on a host operating system. It is a 'bootable runtime', meaning that the CLR runs directly on the processor and includes a memory manager. This is a major departure for Microsoft from the existing .Net implementations in the embedded space, such as &lt;a href="http://en.wikipedia.org/wiki/XPe#Windows_XP_Embedded" target="_blank"&gt;XPe&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Windows_CE#Visual_Studio" target="_blank"&gt;Windows CE&lt;/a&gt; running the .Net Compact Framework, and removes the massively bloated environment that those systems required - think 12MB-&amp;gt;300KB, not to mention the reduced power consumption during operation.&lt;/p&gt; &lt;p&gt;The .NET MF includes these components:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Drivers for standard peripherals such as  &lt;ul&gt; &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Flash_memory"&gt;Flash Memory&lt;/a&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/EEPROM"&gt;EEPROM&lt;/a&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/GPIO"&gt;GPIO&lt;/a&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/I2C"&gt;I2C&lt;/a&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus"&gt;SPI&lt;/a&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/USB"&gt;USB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;XML and Web Services support  &lt;li&gt;Parallelism with threaded applications  &lt;li&gt;Simple persistent storage architecture  &lt;li&gt;XML based user interface GUI framework for working with LCD screens and touch screens&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Best of all, the platform is free with a licensed copy of Visual Studio and there are no runtime licensing fees: these are covered for you by &lt;a href="http://purerobot.com/2008/09/microsoft-net-micro-framework-licensing.html"&gt;most&lt;/a&gt; manufacturers of .NET MF modules.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-2692762445256838050?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/2692762445256838050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=2692762445256838050&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/2692762445256838050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/2692762445256838050'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/08/introduction-to-microsoft-net-micro.html' title='Introduction to the Microsoft .Net Micro Framework'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-6464622622517755766</id><published>2008-08-25T19:06:00.001+10:00</published><updated>2008-10-05T21:51:06.979+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Robotics'/><title type='text'>Ethical Robotics</title><content type='html'>What is an ethical robot?&lt;br /&gt;&lt;br /&gt;Ethics is defined in Miriam Webster's dictionary as:&lt;br /&gt;"the discipline dealing with what is good and bad and with moral duty and obligation"&lt;br /&gt;&lt;br /&gt;Robots all over the world are engaged in activities from &lt;a href="http://abcnews.go.com/Technology/story?id=2504508&amp;amp;page=1"&gt;killing people&lt;/a&gt; with live ammunition on the Korean border to &lt;a href="http://www.sciam.com/article.cfm?id=could-robots-become-your"&gt;playing with children&lt;/a&gt; in kindergarten. Are these activities good or bad? &lt;br /&gt;&lt;br /&gt;In 2005 the US military engaged in a &lt;a href="http://www.smh.com.au/news/World/US-robot-troops-to-go-into-battle/2005/02/17/1108609330610.html"&gt;$161 billion dollar robotics project&lt;/a&gt; that will develop combat robots, from their &lt;a href="https://www.fcs.army.mil/"&gt;website&lt;/a&gt;:&lt;br /&gt;"Protecting our soldiers now and in the future is nothing less than a national moral imperative."&lt;br /&gt;An interesting ethical standpoint. It is certainly moral to protect 'our' soldiers; but not, it seems, moral to protect anyone elses.&lt;br /&gt;&lt;br /&gt;Clearly &lt;a href="http://en.wikipedia.org/wiki/Three_Laws_of_Robotics"&gt;Asimov's three laws&lt;/a&gt; are firmly entrenched in the world of fiction. Perhaps robotics technology will only be limited by an ethos when its darker side is brought to public focus. How will you feel when the first robot army takes out a human one?&lt;br /&gt;&lt;br /&gt;I believe that robots should take us beyond the boundaries of what we can do; rather than replace us. People are great at killing one another; we don't need any robotic assistance for that, so why not use robotics for extending our capabilities. There are robots right now exploring the deep sea floor where humans could not go, from figuring out what causes Tsunamis to seeking out the next great undersea oilfield. There are robots in space exploring other planets where people would freeze or boil in a heartbeat.&lt;br /&gt;&lt;br /&gt;Military robotics is the biggest part of the industry, but I would much rather pursue the areas of robot development that:&lt;br /&gt;a) don't harm people&lt;br /&gt;and b) do things that people can't&lt;br /&gt;&lt;br /&gt;Call it an ethos; a set of ethics. There are medical ethics, political ethics and social ethics; so why not a set of ethics for robotics?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-6464622622517755766?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/6464622622517755766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=6464622622517755766&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/6464622622517755766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/6464622622517755766'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/08/ethical-robotics.html' title='Ethical Robotics'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-3126202480353713951</id><published>2008-08-16T19:17:00.001+10:00</published><updated>2008-10-05T21:50:02.630+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>Embedded Programming with the Microsoft .Net Micro Framework Sample Chapters</title><content type='html'>&lt;p&gt;&lt;a href="http://purerobot.com/content/?content=books" target=""&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px 15px 0px 0px; border-left: 0px; border-bottom: 0px" height="98" alt="Embedded Programming with the Microsoft .Net Micro Framework Cover" src="http://lh5.ggpht.com/endeavour9/SKad4pBMjLI/AAAAAAAAAQU/VqSjIs16qKI/cover_thumb%5B1%5D.jpg?imgmax=800" width="80" align="left" border="0"&gt;&lt;/a&gt;If you're looking for an introduction to the Microsoft .Net Micro Framework (netmf), the first three chapters of Rob Miles and Donald Thompson's book '&lt;a href="http://purerobot.com/content/?content=books"&gt;Embedded Programming with the Microsoft .Net Micro Framework&lt;/a&gt;' have been made available on the book's &lt;a href="http://www.dotnetmicroframework.com/downloads/chapters/" target="_blank"&gt;website&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The first chapter runs through the origins, features and benefits of the netmf. It has a nice breakdown of the architecture stack, including the CLR and hardware abstraction layers. It is 15 pages long, and gives a nice concise overview of the netmf platform.&lt;/p&gt; &lt;p&gt;Rob Miles is an &lt;a href="https://mvp.support.microsoft.com/profile=A45C9A02-2624-455A-BD14-7F72733D9756" target="_blank"&gt;MVP&lt;/a&gt; in Microsoft embedded development. He has a small space in his site for the &lt;a href="http://www.robmiles.com/net-micro/" target="_blank"&gt;netmf&lt;/a&gt;, including an interesting but slightly out of date &lt;a href="http://www.robmiles.com/net-micro-faq/" target="_blank"&gt;FAQ&lt;/a&gt; and a &lt;a href="http://www.robmiles.com/micro-framework-discussion/" target="_blank"&gt;forum&lt;/a&gt; in which you can ask netmf questions.&lt;/p&gt; &lt;p&gt;Donald Thompson is an architect for Microsoft Research, and was responsible for overseeing the design and management of the software, protocols, and technology strategy for SPOT which was &lt;a href="http://www.microsoft.com/presspass/features/2002/nov02/11-17SPOT.mspx" target="_blank"&gt;launched&lt;/a&gt; back in 2002. As such he was well qualified to write this book about the netmf, which developed out of the SPOT project.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-3126202480353713951?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/3126202480353713951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=3126202480353713951&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/3126202480353713951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/3126202480353713951'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/08/embedded-programming-with-microsoft-net.html' title='Embedded Programming with the Microsoft .Net Micro Framework Sample Chapters'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-6824875674017893946</id><published>2008-08-14T17:57:00.005+10:00</published><updated>2008-10-05T21:50:02.631+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>Lowering Consumption with the .Net Micro Framework</title><content type='html'>This morning in the shower I was thinking about the importance of all the appliances in my house being connected to the Internet. To me, this is no longer a luxurious idea, it is a critical requirement.&lt;br /&gt;&lt;br /&gt;In this world of ours we are starting to realise it is not sustainable to go on consuming as we have. Guzzling power like it is going out of fashion, is going out of fashion. It is no longer cool to have a car that does 1 mile per gallon. It is cool to have a Prius.&lt;br /&gt;&lt;br /&gt;There are protocols now in use for communicating over the 240/120 volt power lines that arrive at every plugged in device.&lt;br /&gt;&lt;br /&gt;What if every device's plug socket was actually a small low-powered micro computer, with functions to measure power consumption, identify the appliance being powered and control the power with a digital switch? Every single appliance in your house could have its plug changed over to one of these new plugs, and a Wifi .Net Micro Framework plug in an out of the way place could aggregate these devices into a simple web service. With all this information you could easily see the power consumption throughout the house, both whilst at home and anywhere online. You could have a small page for your house that shows your current power consumption, and maybe aggregate these pages into a site where you could run competitions for the house with the lowest consumption in your street...&lt;br /&gt;&lt;br /&gt;Low power consumption for residential properties will be a massive industry, and fine grained control over how much you consume in your life will be a critical part of how you interact with the world in years to come. Why not use the .Net Micro Framework as a part of the solution?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-6824875674017893946?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/6824875674017893946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=6824875674017893946&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/6824875674017893946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/6824875674017893946'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/08/lowering-consumption-with-net-micro.html' title='Lowering Consumption with the .Net Micro Framework'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5716901919411807454.post-3692498219480354556</id><published>2008-08-14T00:55:00.009+10:00</published><updated>2008-10-05T21:50:02.631+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET Micro Framework'/><title type='text'>Microsoft .NET Micro Framework</title><content type='html'>&lt;p&gt;I have recently become obsessed by the Microsoft .NET Micro Framework. The .Net Micro Framework is the perfect blend of tools and hardware for me, and I have jumped in head first.&lt;/p&gt;&lt;p&gt;I first picked up Jens K&amp;uuml;hner's book &lt;a href="/content/?content=books"&gt;Expert .NET Micro Framework&lt;/a&gt;, which is a great book: practical, to the point and not too verbose. I then skipped through &lt;a href="/content/?content=books"&gt;Embedded Programming with the Microsoft .NET Micro Framework&lt;/a&gt; written by Donald Thompson, Rob S. Miles, which also has some useful information. If you're looking for a book to get into the framework I would recommend Jens K&amp;uuml;hner's.&lt;/p&gt;&lt;p&gt;To get my feet wet, I bought the &lt;a href="http://www.digi.com/products/model.jsp?lid=EN&amp;amp;pgid=37&amp;amp;pfid=36&amp;amp;mtid=2256&amp;amp;amtid=2256&amp;amp;pm=Y"&gt;Digi JumpStart for Microsoft .NET Micro Framework&lt;/a&gt; kit, on the basis of Jens' excellent introduction to the available modules, and have been using it to experiment with the platform. I chose the Digi module because it is compact, cheap and simple.It includes a couple of GPIO's, an Ethernet port and a serial port, which will allow you a surprising amount of connectivity. I had no idea how widespread RS232 serial still is after all these years. My very first experience with communications was with an RS232 2400 baud modem, and throughout my early professional life I have worked with serial devices such as VT terminals - I thought USB must surely have killed it off by now but it seems RS232 is far from dead, with devices all over the place supporting it. Using the Digi Connect ME / Wi-ME module you can hook up to everything from a ZigBee sensor network to a full robotic platform using RS232.&lt;/p&gt;&lt;p&gt;With a few small test projects under my belt I can say that the Microsoft .NET Micro Framework is living up to my expectations, and more. The framework libraries are concise, logical and well designed; the hardware integration has been easy to work with and the footprint is absolutely tiny for what they have packed in. I would recommend this platform to anyone building devices, especially where quality user interface and standard XML web services integration are factors in the design.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5716901919411807454-3692498219480354556?l=purerobot.com%2Fdefault.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/3692498219480354556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5716901919411807454&amp;postID=3692498219480354556&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/3692498219480354556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5716901919411807454/posts/default/3692498219480354556'/><link rel='alternate' type='text/html' href='http://purerobot.com/2008/08/microsoft-net-micro-framework.html' title='Microsoft .NET Micro Framework'/><author><name>Luke Thompson</name><uri>http://www.blogger.com/profile/13469464903034705204</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17516354812308397044'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>