Nestkast met camera bouwen

Bluemotica - Thu, 20/03/2014 - 11:31

In onze tuin komen een heel aantal verschillende vogels voor. Nu zag ik op een aantal andere websites zoals verschillende vogelhuisjes waarin een camera'tje geplaatst is om de nestjes te volgen. Nu worden deze nestkastjes ook wel te koop aangeboden maar daar wordt meer dan 125 euro voor gevraagd! Dat kan je zelf met een beetje knutselwerk een stuk goedkoper!

Inmiddels hangt er nu al 2 jaar een camera in een zelfgebouwd kastje in de tuin. en met succes! we hebben al 1 nestje gehad en bijna elke nacht slaapt er wel een koolmeesje in het kastje.Hier een kleine "howto" van het bouwwerk.

Categories: Community Blog posts

Getting the best from underfloor heating

John Cantor - Thu, 06/03/2014 - 10:54

Many years ago, when heat pumps were not so common, I found it a real struggle to get any of the main underfloor heating suppliers to embrace the need for low water temperatures for use with heat pumps. 15 years on, and I’m sure that things have changed dramatically, but I’m still stumbling across things that make me doubt that.When I visited Germany over 10 years ago, I got the feeling they commonly use much closer spacing between floor pipes than we do in the UK, and I have read of very close spacing (50mm) in Austria.  I realise these are potentially cold countries, but even recently visiting a Spanish heat pump company, they were surprised that we don’t use closer pipe spacing (more pipes).
Over the last 6 months I have heard several references in the trade to; ‘never use closer than 150mm pipe spacing’.   However, CIBSE clearly give ratings for 100mm spacing, as does the MCS Emitter Guide, so why are some in the UK so resistant to putting more pipe into floors.

To basics  -   COP v heat pump water temperature
Heat pumps are more energy-efficient if the water temperature is low.Coefficient of performance (COP) = heat output / electrical power input
This graph of an air source heat pump shows how beneficial a low flow temperature is.   Units like this with electronic expansion valves are particularly efficient at very low water temperatures.

How to get a low flow temperature with underfloor heating
The values for the example graph above have been extracted from CIBSE, and show a general trend for a fixed heat output.  It demonstrates what we all should know  - the closer the spacing, the lower the required water temperature for the same heat output. Putting the two together we could plot pipe spacing v COP.  It would clearly indicate that closer spacing improves COP, so why do some seem reticent to embrace close spacing?  Is that added cost for more pipe really that much??I have gleaned that some people have the notion that close spacing could lead to warm floors and an overly hot house.  The whole point here is that with closer spacing, we can turn the water temperature setting (heating curve) down, and get the same heat output, thus improving the COP.I think some of the fears about hot  floors stem from boiler systems, many of which had plenty of extra output capacity for quick warm-up, and hot patches could result. However, heat pumps are generally slower response, with lower water temperatures, so are much more forgiving in this respect.  I recently visited a system where I had used 50mm spacing in an always-open loop in a bathroom.  I asked the owner if they had ever thought the bathroom floor was too warm.  The answer was no, never.  The reason why I had used 50mm spacing was that we didn’t want a buffer cylinder, so I was trying to ensure there was adequate water quantity, and flow-rate in the floor – effectively using the floor as a buffer.   Another hot (excuse the pun) topic here is floor coverings. People are now seeing that a carpet will drop the star rating for RHI, so there is an added financial incentive for having solid (tiled etc.) floor, as seems far more common in Germany, instead of carpet.However, by designing a house where some rooms are tiled, and some are carpet, you are somewhat limiting any changes that future occupants might wish.  (e.g.  if 100mm spacing in a carpeted room, and 200mm in a tiled room).   Underfloor pipes are literally set in stone, so can never be changed.  The only solution that I could think of here would be to interlace the loops (given that there is often more than 1 loop per room).  There is always the option of turning off one of the interlaced loops.  I like multiple interlaced loops.I have come across an installation where a new owner had fitted thick pile carpet in one room without thinking the affect it would have.  The result was a cold room, remedied only by turning up the water temperature, thus  increasing the running cost, and the reliance on room thermostats to limit heat to the tiled rooms.   The general design approach for underfloor is to consider the heat required (e.g. watts/sq m) , but unless a buffer cylinder is fitted, we should also consider what heat is being delivered to the floor, given that some zones will be closed for some of the time, and the outside temperature is seldom at design temperature (-2C etc.).   For most of the time, we have far more available heat than the floor needs.  Even with modulating heat pumps, there can still be a tendency for the flow temperature to stray above the theoretical flow/return temperatures. This is another reason for favouring more pipe in the floor.  Furthermore,  MCS requires the heat pump to provide at least 100% of the design at -2C etc.  Due to models only being available in certain size jumps, the heat pump installed is often oversized, so this is an added reason for ensuring that there is adequate pipe in the floor.For any thinking that buffer cylinders are the perfect answer – they may be an answer, but they are seldom perfect, as shown by this piece of monitoring.     (
In this example of a system with a simple buffer tank, the heat pump flow/return needs to be approx. 4 degrees hotter than UH flow/return.    This could reduce energy efficiency by 10%, plus the added energy to run a second circulation pump.A buffer can usually be avoided IF enough zones are always on AND if there is plenty of pipe in the screed.Another potential worry is the thermal mass of the screed.   I was recently involved in the design of a passive house where a buffer cylinder was not wanted, so I proposed  to use the screed as the buffer, and fitted 9 x 100m loops with average 100mm spacing in a  floor that was 200mm thick.  One might expect some temperature overshoot, and I may not have been so bold as to propose it if it were not for the fact that due to the interlaced nature of pipework,  we could shut off ½ the zones if we needed to.The result was surprisingly good with all room zones open and control on one master thermostat. The whole house has very even temperatures.  This demonstrates the self-regulating nature of very low temperature underfloor heating.Another concern I have heard of is the pumping power required  for such a lot of pipe.  In the above passive house example.  If the heat pump needs 10 lit/min to give a 5 degree flow-return dt , then the flow rate is about 1.11 litres/min for each pipe loop.  If we used a more standard 5 loops, the flow rate per loop would be 2 litres/ min.  For the same heat (kW) and same dt, more pipe actually means less pumping power since the heat output per m of pipe is lower, and the flow-rate for each loop  is lower.Finally, I have also come across the notion that mixer valves and pumps are desirable, even for a heat pump.  Here is an example to illustrate the potential penalty of having a mixer even if the mixer never actually mixes (i.e. its fully open).
The arrangement here with recorded temperatures shows that the flow to the floor is always equal in temperature to the return to the heat pump. In this example, the flow from the heat pump is 7 degrees higher  than the flow to the floor.  The mean floor temperature  was only 23°C (average of 28 & 18). If the mixing valve and pump were removed, the heat pump’s flow could go directly to the bottom manifold.   To get the same floor heat output, the heat pump setting could be adjusted down so as to give a working flow of 26 and return of 20.  This is a reduction in flow temperature of 9 degrees, potentially (according to our first graph at top of page ) saving 13%.   (see top graph - The COP at 35°C is 3.1, at 26C its 3.1, saving 13% in COP). 
All these little details can eat into potential savings. They should be dealt with at design stage.
Categories: Community Blog posts

Presence detection using phone’s WiFi and Node-RED

mharizanov - Sat, 01/03/2014 - 17:07

Nathan tweeted a cool idea couple months ago, use static IP lease for your phone, ping it every minute to see if it responds, and if the ping times out that most probably means that the phone and his owner are not at home:

I found ~15 minutes to implement this today in Node-RED, couldn’t be any easier.

Since I always carry my phone with me, this is pretty reliable method of determining my presence at home.

I only needed to ensure that my phone receives a static IP lease, pretty trivial task for most modern wifi routers, you just need to find out you phone’s MAC address. I have WiFi on my phone always on.

Here is just how easy this is to do with Node-RED:

The ping node is set to ping the fixed internal IP address of my Nexus 5 phone every 60 seconds.

Just to be on the sure side, I extended the criteria to three consecutive ping fails:

Finally, that data is fed to emonCMS for home automation and self-quantification purposes:

Here is the flow code, you may need to check my previous post for the emonCMS sender part:

[{"id":"ba386057.845d3","type":"mqtt-broker","broker":"localhost","port":"1883"},{"id":"344b04c2.cbb4fc","type":"ping","name":"Ping Nexus 5","host":"","timer":"60","x":105,"y":160,"z":"127c7a58.ed8386","wires":[["680c5308.97f3ac"]]},{"id":"c7248577.38db78","type":"debug","name":"","active":false,"complete":"false","x":543,"y":248,"z":"127c7a58.ed8386","wires":[]},{"id":"680c5308.97f3ac","type":"function","name":"Analyze Result","func":"// anything stored in context is kept available for next time we get called\ncontext.gotping = context.gotping || 1;\ncontext.pingfails = context.pingfails || 0;\n\n\nif(msg.payload) {\ncontext.gotping = 1;\ncontext.pingfails = 0;\n} \nelse\n{\ncontext.pingfails +=1;\nif(context.pingfails>3) context.gotping=0;\n}\n\nmsg.payload=context.gotping;\n\nreturn msg;","outputs":1,"x":309,"y":183,"z":"127c7a58.ed8386","wires":[["c7248577.38db78","cfb3d65b.304c28"]]},{"id":"cfb3d65b.304c28","type":"mqtt out","name":"Nexus5 presence","topic":"presence/nexus5","broker":"ba386057.845d3","x":546,"y":161,"z":"127c7a58.ed8386","wires":[]},{"id":"74d54a29.8b2ab4","type":"mqtt in","name":"Nexus5 presence","topic":"presence/nexus5","broker":"ba386057.845d3","x":127,"y":276,"z":"127c7a58.ed8386","wires":[["919ef3bc.6e611"]]},{"id":"919ef3bc.6e611","type":"mqtt out","name":"Send to Emoncms","topic":"home/emoncms/out/12","broker":"ba386057.845d3","x":357,"y":276,"z":"127c7a58.ed8386","wires":[]}]

From practical aspect, I will probably use this approach to check my and wife’s presence at home and if both of us are absent for say more than 30 minutes, I could turn down the heating a degree or two.

Update 1: Here is how the presence report looks so far, 1 means I am at home, 0 means I am out:

Presence report

WiFi accounted for only 5% of my total battery usage that day:

Battery usage report on Android, pretty heavily used the phone to read news/browse that day


Categories: Community Blog posts

NodeRED RFM2Pi to emonCMS gateway

mharizanov - Sat, 22/02/2014 - 09:58

I created a Node-RED RFM2Pi gateway few weeks ago, have it running nicely since then. I decided to use that approach instead of a python script, since it is very flexible, visual and easy to extend. Prior to Node-RED I used the great OEM gateway script by Jérôme Lafréchoux. My inspiration to switch to Node-RED were Nathan Chantrell’s posts and tweets and Don Bramey’s work.

Getting Node-RED installed on Raspberry Pi is best described on Adafruit’s site [Edit: see Ukmoose' comment below on node.js version]. Should be straightforward for most. In addition, I installed MQTT:

sudo apt-get install mosquitto

The idea of the gateway is to

  • Interface with the RFM2Pi board
  • Forward all incoming wireless packets to EmonCMS for logging and further analysis
  • Send current time to wireless nodes like EmonGLCD

Here are the Node-RED flows

The RFM2Pi flow containing the inbound and outbound functions


This uses the so called ‘multinode’ approach, i.e. doesn’t really decode or understand what is being sent. It just captures the payload and publishes it to a MQTT topic


The RFM2Pi sender function

And here is the source code for this flow:

[{"id":"b7108ab7.48ef78","type":"serial-port","serialport":"/dev/ttyAMA0","serialbaud":"9600","newline":"\\r\\n","addchar":"true"},{"id":"ba386057.845d3","type":"mqtt-broker","broker":"localhost","port":"1883"},{"id":"4daa1376.b255ec","type":"function","name":"Parse RF12B ","func":"//we are expecting data in form \" nodeid data1 data2 etc\"\nmsg.payload = msg.payload.trim();\n\nvar tokens = msg.payload.split(\" \",66); //FM2Pi will have max of 66 bytes payload\nvar outString = null;\nvar outTopic = null;\nvar msg2 = null;\nvar nodeid = tokens.shift();\n\nif(!isNaN(nodeid)) {\n\tnodeid = nodeid & 0x1F; // Strip out the additional flags\n\tvar raw= tokens;\n\tbuf = new Buffer(raw);\n\toutString = [];\n\tfor (var i=0; i<=(tokens.length/2); i+=2) {\n\t\toutString.push( buf.readInt16LE(i) );\n\t}\t\n\t//console.log(outString);\n\toutTopic = 'rfm12b/' + nodeid;\n\tmsg2 = { payload:outString, topic:outTopic};\n}\nreturn msg2;","outputs":"1","x":277,"y":111,"z":"437a6787.bc8598","wires":[["d02f9e7.f2fd06"]]},{"id":"d02f9e7.f2fd06","type":"mqtt out","name":"RFM12B IN","topic":"","broker":"ba386057.845d3","x":456,"y":111,"z":"437a6787.bc8598","wires":[]},{"id":"2a97ab9.fd56854","type":"serial in","name":"","serial":"b7108ab7.48ef78","x":89,"y":111,"z":"437a6787.bc8598","wires":[["4daa1376.b255ec","512b148f.aed4ec"]]},{"id":"1af69d77.e50963","type":"mqtt in","name":"RFM12B OUT","topic":"rfm12b/out","broker":"ba386057.845d3","x":86,"y":304,"z":"437a6787.bc8598","wires":[["80d0c97c.7f2f38"]]},{"id":"80d0c97c.7f2f38","type":"function","name":"Send to Node","func":"// The received message is stored in 'msg'\n// It will have at least a 'payload' property:\n// console.log(msg.payload);\n// The 'context' object is available to store state\n// between invocations of the function\n// context = {};\n\nvar dataStr = msg.payload;\n\n//if individual node selected - the destination id should be last part of topic\nvar tokens = msg.topic.split(\"/\");\nvar dest = tokens[tokens.length-1];\n\nif(dest == \"out\")\n{\n dest = \"0\";\n}\nif(isNaN(dest))\n{\n dataStr='NAN';\n //return null;\n}\nmsg.payload = dataStr + \",\" + dest + \"s\";\nreturn msg;","outputs":1,"x":271,"y":305,"z":"437a6787.bc8598","wires":[["906cd828.6f9328"]]},{"id":"512b148f.aed4ec","type":"debug","name":"Serial In Debug","active":false,"complete":"false","x":285.42852783203125,"y":183.85711669921875,"z":"437a6787.bc8598","wires":[]},{"id":"ff2da801.00d258","type":"comment","name":"RFM2Pi Inbound ","info":"","x":81,"y":58,"z":"437a6787.bc8598","wires":[]},{"id":"6bb839bd.9447c8","type":"comment","name":"RFM2Pi Outbound","info":"","x":88,"y":258,"z":"437a6787.bc8598","wires":[]},{"id":"67bfcebf.98403","type":"serial out","name":"","serial":"b7108ab7.48ef78","x":634,"y":304,"z":"437a6787.bc8598","wires":[]},{"id":"113cd655.eec32a","type":"debug","name":"Sender Debug","active":true,"complete":"false","x":570,"y":419,"z":"437a6787.bc8598","wires":[]},{"id":"906cd828.6f9328","type":"delay","name":"Delay 5ms","pauseType":"delay","timeout":"5","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","x":432,"y":306,"z":"437a6787.bc8598","wires":[["67bfcebf.98403","113cd655.eec32a"]]}]

Next is the EmonCMS interface flow:


Most interesting is the “Prepare for EmonCMS” function:

Mind to place your API key here, emoncms URL as well, if it is not default

And the source code for this flow is:

[{"id":"ba386057.845d3","type":"mqtt-broker","broker":"localhost","port":"1883"},{"id":"909bcfcf.6f643","type":"mqtt in","name":"Send to Emoncms","topic":"home/emoncms/out/#","broker":"ba386057.845d3","x":84.00000762939453,"y":87,"z":"fea0be35.015f4","wires":[["8ebc9733.714368"]]},{"id":"8ebc9733.714368","type":"function","name":"Build EmonCMS url","func":"// The received message is stored in 'msg'\n// It will have at least a 'payload' property:\n// console.log(msg.payload);\n// The 'context' object is available to store state\n// between invocations of the function\n// context = {};\n\n//expects JSON payload and destination specified in topic\n\nvar key = \"**** YOUR API *****\";\n\n//destination will be last part node of topic\nvar tokens = msg.topic.split(\"/\");\nvar dest = tokens[tokens.length-1];\n\n\nif(isNaN(dest))\n{\n//not a valid destination\nreturn null;\n}\n\nmsg.url =\"\";\nmsg.url += dest;\nmsg.url += \"&json=\";\nmsg.url += msg.payload;\nmsg.url += \"&apikey=\";\nmsg.url += key;\n\n\nreturn msg;","outputs":1,"x":285.00001525878906,"y":119,"z":"fea0be35.015f4","wires":[["f9933cd6.066cc","bef8a264.41076"]]},{"id":"f9933cd6.066cc","type":"http request","name":"HTTP GET to EmonCMS","method":"GET","url":"","x":513.6667175292969,"y":99,"z":"fea0be35.015f4","wires":[["87f944f6.7806b8"]]},{"id":"87f944f6.7806b8","type":"debug","name":"EmonCMS HTTP Request Result","active":false,"complete":"false","x":713.6666870117188,"y":31.333343505859375,"z":"fea0be35.015f4","wires":[]},{"id":"a8c85fa8.5737a","type":"debug","name":"EmonCMS URL","active":false,"complete":"true","x":702,"y":164,"z":"fea0be35.015f4","wires":[]},{"id":"bef8a264.41076","type":"function","name":"Debug EmonCMS URL","func":"// The received message is stored in 'msg'\n// It will have at least a 'payload' property:\n// console.log(msg.payload);\n// The 'context' object is available to store state\n// between invocations of the function\n// context = {};\n\n\nreturn msg.url;","outputs":1,"x":517,"y":163,"z":"fea0be35.015f4","wires":[["a8c85fa8.5737a"]]},{"id":"788069a.f877f98","type":"mqtt in","name":"RFM12B IN","topic":"rfm12b/#","broker":"ba386057.845d3","x":65,"y":289,"z":"fea0be35.015f4","wires":[["ca153b2d.35eac8"]]},{"id":"314a8d67.ceb572","type":"mqtt out","name":"Send to Emoncms","topic":"","broker":"ba386057.845d3","x":502,"y":289,"z":"fea0be35.015f4","wires":[]},{"id":"ca153b2d.35eac8","type":"function","name":"Prepare for EmonCMS","func":"// The received message is stored in 'msg'\n// It will have at least a 'payload' property:\n// console.log(msg.payload);\n// The 'context' object is available to store state\n// between invocations of the function\n// context = {};\n\n//destination will be last part node of topic\nvar tokens = msg.topic.split(\"/\");\nvar dest = tokens[tokens.length-1];\n\nmsg.topic = \"home/emoncms/out/\";\nmsg.topic += dest;\n\nreturn msg;\n","outputs":1,"x":270,"y":290,"z":"fea0be35.015f4","wires":[["314a8d67.ceb572"]]},{"id":"b8e15d04.471ea","type":"comment","name":"EmonCMS sender","info":"","x":84,"y":44,"z":"fea0be35.015f4","wires":[]},{"id":"7a28503a.85d7b","type":"comment","name":"Send whatever was received on the RFM12B/# MQTT topic to EmonCMS","info":"","x":258,"y":234,"z":"fea0be35.015f4","wires":[]}]

The final component is the time sender flow:

I have an inject node that kicks in every minute, you can reduce that to whatever is necessary. Most of the work is done in the “Prepare Time Packet” function:


And the source code is:

[{"id":"ba386057.845d3","type":"mqtt-broker","broker":"localhost","port":"1883"},{"id":"df2824d5.20d7d8","type":"inject","name":"Inject time","topic":"","payload":"","repeat":"","crontab":"*/1 * * * *","once":true,"x":196,"y":179,"z":"7733bcb0.88cc44","wires":[["431cf1b3.bce31"]]},{"id":"431cf1b3.bce31","type":"function","name":"Prepare Time Packet","func":"// The received message is stored in 'msg'\n// It will have at least a 'payload' property:\n// console.log(msg.payload);\n// The 'context' object is available to store state\n// between invocations of the function\n// context = {};\n\nvar date = new Date;\ndate.getTime();\n\nvar minutes = date.getMinutes();\nvar hour = date.getHours();\n\n//00,20,23,00,s\n\nmsg.payload = '0,' + hour + ',' + minutes + ',0';\nmsg.topic = 'rfm12b/out';\n\nreturn msg;","outputs":1,"x":397,"y":197,"z":"7733bcb0.88cc44","wires":[["36026f66.c9fd9"]]},{"id":"36026f66.c9fd9","type":"mqtt out","name":"RFM12B Sender","topic":"","broker":"ba386057.845d3","x":608,"y":225,"z":"7733bcb0.88cc44","wires":[]}]

As conclusion, I believe Node-RED is the future of IoT wiring. Do get started with it.


Categories: Community Blog posts

Workshop: Solder and hack the Nanode

Amin - Mon, 04/06/2012 - 12:07
The first nanode workshop was a great success, we got to introduce many people to soldering and arduino. But we didn’t get to really hacking the nanodes and we couldn’t ...
Categories: Community Blog posts

betapitch: what it meant to us

Amin - Tue, 29/05/2012 - 01:11
We applied, we were shortlisted, we pitched and we didn’t win… But boy it was great! I personally never presented anything in front of such a crowd in my life. It ...
Categories: Community Blog posts

Raspberry Pi Finally Arrives

Nathan - Wed, 09/05/2012 - 17:17

After a long wait the Raspberry Pi I ordered from Farnell on 29th February finally arrived yesterday.

I expect that most people reading this blog knows all about the Raspberry Pi and the charity behind it by now, designed with the aim to bring programming back into the school curriculum and spawn a new generation of coders, it’s had some fantastic news coverage and even people with no idea about computers have mentioned it to me over the last few months. It has been a rocky road, originally it was expected to have been released in late 2011 but finally the much anticipated single board computer has started to be delivered into the eager hands of geeks around the world. Initially only a caseless version of the “Model B” is available, intended for early adopters and developers with a fully cased version being launched for education later in the year. The idea being that by the time it reaches the hands of school children there will already be a healthy eco system built up around it and those preparing educational material will have been able to do so.

At the moment I am just familiarising myself with it and getting a grasp of what it is capable of. I’m running Debian Squeeze on it as that’s my distro of choice for servers and the like anyway and is also what the Raspberry Pi team are currently recommending. As a desktop it’s usable but pretty sluggish, perhaps not as much as expected but it’s potential for me lies more in the home automation and IoT field, £30 for a tiny networked Linux box is unbeatable and with up to 17 GPIO pins, built in UART and support for I2C and SPI it also opens up a lot of possibilities for interfacing to other hardware, a number of expansion boards are already available or in the pipeline. Here is a good primer on Getting Started with Raspberry Pi GPIO and Python.

Categories: Community Blog posts

The Magic of the Boost Converter

Nathan - Mon, 30/04/2012 - 23:49

Or how to get 5V From a single AA Battery.

It might seem like magic but a boost converter or step-up converter is a handy little device that can output a voltage greater than its input voltage. This makes it very useful for getting a consistent voltage in battery powered devices or running a circuit from fewer cells than would otherwise be required. If you don’t need much capacity it can also be a good way of using the last remaining power from batteries that other devices have deemed too flat, connect a few up to a boost converter and you can still get some useful power out of them for a while longer. For more capacity you can add more cells (as long as you keep the input voltage under the output voltage) or use higher capacity batteries such as C or D cells.
The Maxim chip I am using here has an adjustable output (2.7-5.5V) and will work with an input voltage as low as 0.7V.

Obviously it isn’t really magic and this extra power can’t be generated from nowhere, P=IV and all that. What this means in practice is that by increasing the output voltage the available output current must be lower than the source current and will decrease as the input voltage decreases (as the batteries deplete), as seen in the graph on the left below. Efficiency is also dependent on the input voltage and the output current, peaking at around 87% with a 3.3V input and a 5V 200mA load as seen on the right hand graph.


Wikipedia has a better explanation of how a boost converter works than I could give so have a read of that if you’re curious about the details.  The Maxim MAX757 I’m using here is an 8 pin DIP chip and requires minimal external components which makes it ideal for a stripboard build, it has an adjustable output voltage in the range 2.7V to 5.5V and can operate down to a 0.7V input voltage, the data sheet seems to imply that it needs at least 1.1V initially to start up but this doesn’t seem to be the case, at least it wasn’t in my testing. This output range combined with the low voltage capability means it is easy to get the two common voltages used with microcontrollers and other digital electronics of 3.3V and 5V from even a single AA or AAA cell although the extra capacity probably makes two (or more) more practical for most uses.

The output voltage on the MAX757 is set by a voltage divider between ground and the output which is connected to the feedback input (pin 2), the formula to calculate the required resistors is:

VOUT = (1.25) [(R2 + R1) / R2]

To get 5V I have used 30K for R1 and 10K for R2, for 3.3V you could use 18K for R1 and 11K for R2.

If you can find it an alternative part is the MAX756 which is a bit easier if you only need an output of 5V or 3.3V as the voltage can be set by connecting pin 2 low for 5V or high for 3.3V which negates the need for the voltage divider arrangement.

These chips also have a low battery output that can be used to light an LED to notify of a low battery, it brings pin 4 (LBO) low when the voltage at pin 5 (LBI) drops below the converters internal reference voltage of 1.25V. This means the lowest voltage you can trigger the warning is 1.25V so you would probably want to leave this off if using a single cell. For a warning at 1.25V you just need to connect pin 5 (LBI) to VIN and an LED with a suitable resistor to pin 4 (LBO). For a warning at a higher voltage you would need to use a voltage divider to output the desired voltage to the LBI pin.

Here is my stripboard layout for the MAX757, the MAX756 would be the same except R1 and R2 would be omitted and pin 2 would instead be connected to ground to select 5V output or to VIN to select 3.3V output.

Parts list:

1 x MAX757 Adjustable-Output Step-Up DC-DC Converter
1 x 8 pin DIL socket
1 x Piece of stripboard, minimum 8 rows by 21 holes
1 x 22 uH Inductor (0.03 Ohm or less, 1.2A or more)
1 x 150 uF electrolytic capacitor
1 x 100 uF electrolytic capacitor
1 x 100 nF ceramic capacitor
1 x 1N5817 Schottky Diode
1 x AA Battery holder of desired capacity
1 x LED (optional)
1 x 100 Ohm resistor (optional)
For 5V output: 
1 x 30K resistor
1 x 10K resistor
For 3.3V output:
1 x 18K resistor
1 x 11K resistor

For other output voltages calculate suitable resistors using the formula VOUT = (1.25) [(R2 + R1) / R2]

Categories: Community Blog posts

We’re pitching at betapitch this thursday

Amin - Sun, 29/04/2012 - 16:31
Betahaus is one of my favorite places in Berlin. I work and have meetings in the cafe, I hack around in the makerspace Open Design City at the back, and ...
Categories: Community Blog posts

New logo and website revamp

Amin - Thu, 12/04/2012 - 19:17
Hello everyone, we are back ! With lots of fresh and refreshing news. First of all, I am very glad and proud to announce that we could charm a seed ...
Categories: Community Blog posts
Syndicate content