tag:blogger.com,1999:blog-38957988877684261482024-03-13T09:31:29.412-07:00Everett's projectsEverett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.comBlogger55125tag:blogger.com,1999:blog-3895798887768426148.post-83437411314347393312021-04-14T20:28:00.001-07:002021-04-14T20:28:16.895-07:00Hacking the DJI mini 2 to add active payload control <p> I hacked my DJI mini 2 to build a payload dropper that I can control from the Fly App. Here's the video:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/DBzJd7ATzxQ" width="320" youtube-src-id="DBzJd7ATzxQ"></iframe></div><br /><p><br /></p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com3tag:blogger.com,1999:blog-3895798887768426148.post-7383880684001920232021-02-05T09:54:00.003-08:002021-02-05T10:01:49.024-08:00Simulating Hoot Owl Hoot! in Python to find the best strategy<p> Here's a board game simulation I wrote in Python to work out which strategy is the best to win the kid's game Hoot Owl Hoot!</p><p>My 5-year-old loves to play this board game made by <a href="https://www.mindware.orientaltrading.com/peaceable-kingdom-a1-560194.fltr" target="_blank">Peaceable Kingdom</a> where the players work cooperatively to move the owls along a path to the nest before running out of time. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-bCuG6-sMsoM/YB2BMpRbazI/AAAAAAAADCA/BCWcvUqjaHAF7s7Vow7PFMg-d00JqAtQACLcBGAsYHQ/s1500/7163MZKnK6L._SL1500_.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1500" data-original-width="1500" height="320" src="https://1.bp.blogspot.com/-bCuG6-sMsoM/YB2BMpRbazI/AAAAAAAADCA/BCWcvUqjaHAF7s7Vow7PFMg-d00JqAtQACLcBGAsYHQ/s320/7163MZKnK6L._SL1500_.jpg" /></a></div><p>We were all playing one day and ended up debating on what the best strategy is to win - do you always move the piece that can go the farthest, or do you always move the piece in the back? It didn't seem like a clear answer at first - there are several game pieces and one moves on each turn to a color space chosen from the shuffled deck of cards, but they can jump over other pieces if there is one occupying the space they would otherwise land on. I thought it was best to move the one in the back so as to not strand one far behind the others (and therefore maximize the chance of getting to jump over spaces), while my wife thought you should always figure out which piece can go the farthest and move that one. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-OmqY8koPWNE/YB2CRM5CDOI/AAAAAAAADCM/pbNEFaeYbtMORohQhv_Pd_QkbFt4x7NUACLcBGAsYHQ/s1711/20210111_150547.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1283" data-original-width="1711" src="https://1.bp.blogspot.com/-OmqY8koPWNE/YB2CRM5CDOI/AAAAAAAADCM/pbNEFaeYbtMORohQhv_Pd_QkbFt4x7NUACLcBGAsYHQ/s320/20210111_150547.jpg" width="320" /></a></div><br /><p>Not satisfied with just not knowing the answer, I wrote a Python script that simulates the game. In this script only four owls are used (the way we usually play) and it doesn't bother including the sun chip - for my purposes it was sufficient to just see which strategy won in the fewest moves. </p><p>The game is fairly simple to simulate - I made an array that holds the actual colors on the path which I copied from the game board, and there is an array of owl positions on that path. </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-wLnhQ7uI2Fk/YB2D06KJdYI/AAAAAAAADCc/dTJTEcMWrasYBzdYcaBbRv_vy0sDdSV8QCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="177" data-original-width="784" height="90" src="https://lh3.googleusercontent.com/-wLnhQ7uI2Fk/YB2D06KJdYI/AAAAAAAADCc/dTJTEcMWrasYBzdYcaBbRv_vy0sDdSV8QCLcBGAsYHQ/w400-h90/image.png" width="400" /></a></div><br /><p></p><p>Each turn, a random color value is chosen and then some simple logic can move an owl forward to the next matching color while also checking for owls occupying the space that it could jump over and checking if it has reached the nest:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-qFDraDMuhS4/YB2DpHL00XI/AAAAAAAADCY/TZ5oflubVKsw8FGHsSrkgAECc12JJjRGACLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="155" data-original-width="673" height="93" src="https://lh3.googleusercontent.com/-qFDraDMuhS4/YB2DpHL00XI/AAAAAAAADCY/TZ5oflubVKsw8FGHsSrkgAECc12JJjRGACLcBGAsYHQ/w400-h93/image.png" width="400" /></a></div><br />I wrote functions that would be used to evaluate the potential moves for each strategy by simply finding the rearmost owl:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-1Xg7XPisdFA/YB2EMEkrMtI/AAAAAAAADCo/hLTeN0AFa0A1ZCCKlAZeS3foY0RwMrdrgCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="43" data-original-width="325" height="42" src="https://lh3.googleusercontent.com/-1Xg7XPisdFA/YB2EMEkrMtI/AAAAAAAADCo/hLTeN0AFa0A1ZCCKlAZeS3foY0RwMrdrgCLcBGAsYHQ/image.png" width="320" /></a></div><br />and finding the longest potential move:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-puxEa1hvEuQ/YB2EcLt_2oI/AAAAAAAADCw/y7Rw_M-7e_wYUSna2n5QPlYPPQPTRSavgCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="368" data-original-width="671" height="219" src="https://lh3.googleusercontent.com/-puxEa1hvEuQ/YB2EcLt_2oI/AAAAAAAADCw/y7Rw_M-7e_wYUSna2n5QPlYPPQPTRSavgCLcBGAsYHQ/w400-h219/image.png" width="400" /></a></div><p><br /></p>With those it was easy to make functions that would simulate an entire game played strictly by each strategy, and to make it really fair I had them both run simultaneously from the same random card deck sequence:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-PEbXvYh11iw/YB2Ezro1udI/AAAAAAAADC8/ZbEgT--uTT8mbS2Yd6ikO_tdnQQq24o8gCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="220" data-original-width="986" height="89" src="https://lh3.googleusercontent.com/-PEbXvYh11iw/YB2Ezro1udI/AAAAAAAADC8/ZbEgT--uTT8mbS2Yd6ikO_tdnQQq24o8gCLcBGAsYHQ/w400-h89/image.png" width="400" /></a></div><br />This got wrapped up in the main program that is run in a terminal and lets you choose the number of iterations to run and then gives the statistics on the result:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-5RXbVqVMvT8/YB2FbH9P9tI/AAAAAAAADDE/ZNmmT4sVYFghxj5O9RtIQqs9h0C99wNbACLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="263" data-original-width="643" height="164" src="https://lh3.googleusercontent.com/-5RXbVqVMvT8/YB2FbH9P9tI/AAAAAAAADDE/ZNmmT4sVYFghxj5O9RtIQqs9h0C99wNbACLcBGAsYHQ/w400-h164/image.png" width="400" /></a></div><br />It turns out that the two strategies are remarkably close, despite leading to very different games each time, but if you run it through very many iterations, the longest move strategy tends to be best most of the time:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-9zC38Ldo2fY/YB2F5UjPp6I/AAAAAAAADDQ/JDc86DinwpwQ52boAJxlJatzw1HRu10OQCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="108" data-original-width="696" height="63" src="https://lh3.googleusercontent.com/-9zC38Ldo2fY/YB2F5UjPp6I/AAAAAAAADDQ/JDc86DinwpwQ52boAJxlJatzw1HRu10OQCLcBGAsYHQ/w400-h63/image.png" width="400" /></a></div><br /><br /><a href="https://github.com/tterev3/hoot-owl-simulator" target="_blank">Here's the code</a>. It's a bit messy with some nearly-duplicate functions since I built it up layer-by-layer and included a lot of stuff earlier on to print out the whole game board and detail each move to make sure the algorithms were correct before just running them without printouts to collect the statistics. <p></p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com6tag:blogger.com,1999:blog-3895798887768426148.post-27480189830364264902021-01-14T07:46:00.009-08:002021-02-05T09:26:20.151-08:00Pyro System 4<p> </p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/gT04WaCQ3ic" width="320" youtube-src-id="gT04WaCQ3ic"></iframe></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p></p><p>Here's version 4 of the Pyro System!</p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com0tag:blogger.com,1999:blog-3895798887768426148.post-18249637717626521222021-01-08T13:31:00.000-08:002021-01-08T13:31:07.203-08:00Hacking and upgrading a 3Doodler 3D pen<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-al7SEeCry8g/X_hu4yNzu2I/AAAAAAAAC9Q/soxmxzKQ1eo7ROUqJ5xyUMNOf3WB3L8sQCLcBGAsYHQ/s1012/Capture.PNG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="304" data-original-width="1012" src="https://1.bp.blogspot.com/-al7SEeCry8g/X_hu4yNzu2I/AAAAAAAAC9Q/soxmxzKQ1eo7ROUqJ5xyUMNOf3WB3L8sQCLcBGAsYHQ/s320/Capture.PNG" width="320" /></a></div> <div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-74R_eYpOuHU/X_hu5kBeqpI/AAAAAAAAC9Y/91Eu_pzbq10pCT2I3hDr4GI2Jc-Ud2spACLcBGAsYHQ/s2048/20210103_090117.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-74R_eYpOuHU/X_hu5kBeqpI/AAAAAAAAC9Y/91Eu_pzbq10pCT2I3hDr4GI2Jc-Ud2spACLcBGAsYHQ/s320/20210103_090117.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_hSJw3BzyqE/X_hu5fq25vI/AAAAAAAAC9U/MajIG-AjA2AKGZVnJ0zNNGT6f_vvalmIgCLcBGAsYHQ/s2048/20210104_211056.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-_hSJw3BzyqE/X_hu5fq25vI/AAAAAAAAC9U/MajIG-AjA2AKGZVnJ0zNNGT6f_vvalmIgCLcBGAsYHQ/s320/20210104_211056.jpg" width="320" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: left;">I recently received a 3Doodler 3D pen after only using cheapo $20 no-name 3D pens for several years (like <a href="https://usa.banggood.com/2nd-Generation-3D-Printing-Pen-with-3x-1_75mm-ABS-Filament-Kit-for-Beginners-and-Kids-with-EU-Standard-Plug-Power-Adapter-p-1158476.html?" target="_blank">this one</a>). While the mechanical design on this one is nice, it had a few issues that left me not wanting to use it in its stock form:</div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>used 3mm filament instead of the 1.75mm that my printers use</li><li>used switch presses as <i>stop </i>and <i>start </i>commands instead of momentary (hold to extrude, release to stop)</li><li>slow extrude was not slow enough (not their fault, I always want a slower extrude to better do detail work)</li><li>annoying behavior of the cooling fan (just runs along with the extrude regardless of temperature)</li></ul>I decided to tear it apart and implement several upgrades to fix it:</div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>closed-loop feedback control on the extrude speed to achieve slower speeds and better consistency</li><li>add temperature monitoring of the cold end of the extruder to more effectively use the cooling fan</li><li>change the power input to USB-C</li></ul>These changes required some hardware updates and a complete rewrite of the firmware. First I worked on switching the filament size to 1.75mm. I was lucky enough to have the dimensions of common brass M3 threaded inserts work out to act as spacers on top of the existing extruder gears that grip the filament. I had to add the serrations to grip the filament by forming a screw into a cutter by cutting an axial slot in it, and spinning it against the inserts:<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxqyhw5dkrbD9Jek7fhLBlRGW479ShsIbS9jtykORKbia8TlK0eWYM3R__lqdaTQMN7X35c9VRHyZbLWAJoLA' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><br /></div></div></div>The spacers needed a small amount of trimming on the ends, and then I press-fit them onto the existing drive gears. I also cut down a short section of teflon <span style="text-align: center;">tube (the kind used for Bowden extruders with 2mm ID) and pressed it into the cold end of the extruder to avoid the plastic building up there. The teflon tube is just visible at the bottom of this picture:</span><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0KlpJoxm5d4/X_jC4mP2A5I/AAAAAAAAC-U/DVUqMU8hCcgIcgyXf56JcQ2S5o2M0MlkACLcBGAsYHQ/s2048/20210104_211056.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-0KlpJoxm5d4/X_jC4mP2A5I/AAAAAAAAC-U/DVUqMU8hCcgIcgyXf56JcQ2S5o2M0MlkACLcBGAsYHQ/s320/20210104_211056.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><span style="text-align: center;">Those two changes were sufficient to mechanically convert the system to 1.75mm, but I also decided added some sections of tubing further upstream to better center the filament before it reaches the extruder. <br /></span><br /><p></p></div><div>After the filament size conversion I worked on the speed control upgrade. Initially I tried to add rotation speed measurement to the bevel gear on the output of the motor gearbox, by drilling a hole and adding a 2mm magnet, and mounting a hall effect sensor above it on the PCB:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--CLv6cXAeOk/X_jDhS_9kPI/AAAAAAAAC-g/5VCXD5DOVXQH6jn1j-jqKYxbmuvvjt2fgCLcBGAsYHQ/s2048/20201229_212628.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/--CLv6cXAeOk/X_jDhS_9kPI/AAAAAAAAC-g/5VCXD5DOVXQH6jn1j-jqKYxbmuvvjt2fgCLcBGAsYHQ/s320/20201229_212628.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-RHrSYSziP_I/X_jDhXEimlI/AAAAAAAAC-k/XMgbIsUA_FQ0mooSdsX8h6NrnRzW2HqzgCLcBGAsYHQ/s2048/20201230_090725.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://1.bp.blogspot.com/-RHrSYSziP_I/X_jDhXEimlI/AAAAAAAAC-k/XMgbIsUA_FQ0mooSdsX8h6NrnRzW2HqzgCLcBGAsYHQ/s320/20201230_090725.jpg" /></a></div>In the end I had to abandon this implementation since the rotation period was too slow to effectively implement feedback control. It took up to about 7 seconds for a revolution at the lower speeds so the control loop was too slow to be useful. To fix it, I set up rotation rate measurement further upstream in the gear train by finding a spot to add a very small magnet, which I cut and shaped using sandpaper from a larger magnet. In this particular gear train there happened to be a spot I could fit it on the third gear which spins roughly 40 times faster than the output shaft. I ground down the gear slightly to make a flat mounting spot and attached it with both CA glue and then epoxy:<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-2f3L3KFRneA/X_jFO_9YHnI/AAAAAAAAC-0/B9YzxM5o3P0kgaqoFRmw9Lq4gobiyjZOQCLcBGAsYHQ/s2048/20210104_154925.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-2f3L3KFRneA/X_jFO_9YHnI/AAAAAAAAC-0/B9YzxM5o3P0kgaqoFRmw9Lq4gobiyjZOQCLcBGAsYHQ/s320/20210104_154925.jpg" width="320" /></a></div><br /><div>I could then check the placement with a hall effect sensor and see how close I had to be to detect it. The camera frame rate happened to sync up with the motor speed here:</div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dySPW09yC3xwMdiCbobimGVHFLC-TSYsWfngaeelUiN0FZvRXm8Tz9j4sYV7i2JDrKI97o_C2s1LPR7w4_pFA' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>I mounted the hall effect sensor to the brass plates of the gearbox with CA glue, and it fit entirely within the envelope of the gearbox, so I didn't have to make any changes to the plastic frame that the motor fits into:<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-euG4d0v8-WA/X_jGarOZyCI/AAAAAAAAC_A/c9aRUsBEpkwj2JvqIm0AUOZMRoR-svxtwCLcBGAsYHQ/s2048/20210104_160937.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-euG4d0v8-WA/X_jGarOZyCI/AAAAAAAAC_A/c9aRUsBEpkwj2JvqIm0AUOZMRoR-svxtwCLcBGAsYHQ/s320/20210104_160937.jpg" width="320" /></a></div><br /><div>This new setup gave rotation measurement periods in the range of 50-200ms which was much more usable to close the feedback loop on extruder speed. </div><div><br /></div><div>The cooling fan upgrade was much simpler, I just installed a thermistor on the cold end of the extruder to monitor its temperature. This is an 0603 thermistor wrapped with kapton and mounted to the cold end with CA glue:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-E1ZUDp5r_10/X_jHE58tKsI/AAAAAAAAC_I/BJE0Z8r8LZIGHCjHInyBwoJhmObTsygCQCLcBGAsYHQ/s2048/20201230_105500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-E1ZUDp5r_10/X_jHE58tKsI/AAAAAAAAC_I/BJE0Z8r8LZIGHCjHInyBwoJhmObTsygCQCLcBGAsYHQ/s320/20201230_105500.jpg" width="320" /></a></div><div><br /></div>With all the hardware updates done it was time to do firmware, starting with reverse-engineering the control board. The stock microcontroller was an unlabelled 16-pin SOIC part:<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-PpG38MTk5Ww/X_jHh6CTMpI/AAAAAAAAC_U/D8AfQnFV7wUw2roFMpbN8TqQBhtaA-nmQCLcBGAsYHQ/s2048/20201230_115753.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-PpG38MTk5Ww/X_jHh6CTMpI/AAAAAAAAC_U/D8AfQnFV7wUw2roFMpbN8TqQBhtaA-nmQCLcBGAsYHQ/s320/20201230_115753.jpg" width="320" /></a></div><br /><div>Along with the microcontroller, the board has a FET and gate drive transistor for the heater, a FET and flyback diode for the fan, a motor driver (the SOIC-8 package), an RGB LED, and all associated passives. I took measurements on the microcontroller pins while operating the pen and came up with this list of pin functions:</div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div>1: VCC 5.05V</div></div><div><div>2: pulled low if switch is back (off)</div></div><div><div>3: pulled low if switch is forward (ABS mode)</div></div><div><div>4: <span style="white-space: pre;"> </span>icsp, not used in circuit</div></div><div><div>5: heater pwm 1khz active high</div></div><div><div>6: 2.5V reference for adc </div></div><div><div>7: rear switch</div></div><div><div>8: fan pwm 200Hz 20% duty</div></div><div><div>9: extruder active low (high = backward)</div></div><div><div>10: red led active low</div></div><div><div>11: green led active low </div></div><div><div>12: blue led active low</div></div><div><div>13: extruder forwards active high 600Hz 50% fast 20% slow</div></div><div><div>14: front switch</div></div><div><div>15: hot end temperature. lower=hotter. pla = 1.51V, abs = 1.24V</div></div><div><div>16: ground</div></div></blockquote><p>With all those identified I could safely remove the stock microcontroller and install a new one. I chose to use the PIC16F1579 in a QFN package, and mounted it upside-down in the middle of the old uC pads with CA glue:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-i2l0pUWNKaM/X_jJI3U9puI/AAAAAAAAC_g/-Bo6fSek-aYKA1GFbLU-oLm7EDyzvj4KgCLcBGAsYHQ/s2048/20210101_214129.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-i2l0pUWNKaM/X_jJI3U9puI/AAAAAAAAC_g/-Bo6fSek-aYKA1GFbLU-oLm7EDyzvj4KgCLcBGAsYHQ/s320/20210101_214129.jpg" width="320" /></a></div><br /> I wired up the new microcontroller, using 34AWG enameled magnet wire. I also added a small chunk of PCB to hold the pull-down resistor and capacitor used to read the added thermistor, as well as a piece of a PCB to act as a programming port:<p></p><div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-XNjcv41ubE8/X_jJtGW6V1I/AAAAAAAAC_o/62yP9snhe50i5gc0GurB_NCLT0T7VnZkQCLcBGAsYHQ/s2048/20210103_090117.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-XNjcv41ubE8/X_jJtGW6V1I/AAAAAAAAC_o/62yP9snhe50i5gc0GurB_NCLT0T7VnZkQCLcBGAsYHQ/s320/20210103_090117.jpg" width="320" /></a></div><br /><div>With that the hardware changes were complete and I moved on to firmware. For the initial work I set up a temporary UART debugging output so I could watch values for hotend temperature and extruder speed in order to tune those control loops. I ended up getting decent results for both using PD control loops, although the way I implemented it also has a sort of half-assed integral term since the P and D term results get added to the current duty cycle instead of calculating a new duty cycle every loop. After all the hardware and the two control loops (extruder speed and hotend temperature) were working, I figured out the new UI I wanted. Here it is as I wrote it before coding the state machine that runs the UI:</div></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><div><div><i> /*switch on: rise to temperature</i></div></div></div><div><div><i>once up at temp, allow extruder movement</i></div></div><div><div><i>front switch is momentary forward extrude</i></div></div><div><div><i>short retract after forward movement</i></div></div><div><div><i>click rear switch shifts between 3 speeds</i></div></div><div><div><i>hold rear switch backs out filament until released</i></div></div><div><div><i>safety timeout 3 minutes</i></div></div><div><div><i>broken thermistor detection*/</i> </div></div></blockquote><div><div><div><br /></div><div>The final source code is uploaded here: <a href="https://github.com/tterev3/3D_pen">https://github.com/tterev3/3D_pen</a></div></div></div><div><br /></div><div>In the course of finalizing the firmware I ended up wanting to fully reassemble the pen but still be able to reprogram, so I added a new programming port (this time just a flat PCB onto which I press a pogo pin programming header). The pen had this useful port on the side with a removable cover, which wasn't used for anything in the stock product, so I added the port there and could fully reassemble it:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-s3xqMk-Hnq8/X_jL5Ek72EI/AAAAAAAAC_0/jfRctDKVAHs8GZFrjw99mo9v5iXA2aFoQCLcBGAsYHQ/s2048/20210106_094223.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-s3xqMk-Hnq8/X_jL5Ek72EI/AAAAAAAAC_0/jfRctDKVAHs8GZFrjw99mo9v5iXA2aFoQCLcBGAsYHQ/s320/20210106_094223.jpg" width="320" /></a></div><br /><div>Around this time I also decided to add one last hardware upgrade and swap out the barrel jack for a USB-C jack, which required a bit of trimming of the rear cover:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-lKxAgamBYSM/X_jMO_t53QI/AAAAAAAADAA/0KcKI8Z4dDo89wgB2IXf0AVgxdnxDCbqACLcBGAsYHQ/s2048/20210105_115726.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-lKxAgamBYSM/X_jMO_t53QI/AAAAAAAADAA/0KcKI8Z4dDo89wgB2IXf0AVgxdnxDCbqACLcBGAsYHQ/s320/20210105_115726.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-reojoZBVvGM/X_jMO_qMB0I/AAAAAAAADAE/JaOLUq7l6jg6FMDVepiLYty_h6CPfdWUACLcBGAsYHQ/s2048/20210106_094736.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-reojoZBVvGM/X_jMO_qMB0I/AAAAAAAADAE/JaOLUq7l6jg6FMDVepiLYty_h6CPfdWUACLcBGAsYHQ/s320/20210106_094736.jpg" width="320" /></a></div><div><br /></div>Here's a demo of how the pen works now after finishing my new firmware:<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dwAS_krHrFF7_EZqILrBkVU4m21FSIllXHjG8xMPrzE-i1rgbR2B2q8DBikllKU8uf0TR1j7OE7hT8c9hs2sA' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div><br /><div>After all these changes I'm quite happy with this pen now - it's much nicer hardware to use than the cheapo pens, can do lower extrude speed, and can be run from a power bank since it's now 5V USB-C powered. <br /><div><br /></div></div>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-29643460461960769292020-11-19T10:45:00.003-08:002020-11-19T10:45:46.592-08:00Saving a broken tablet with a charger hack<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-531s71enVVs/X7a5Gywue1I/AAAAAAAAC3c/a9uKReyAjUI8Qj7aZMVZjAM1bpnMmSV6wCLcBGAsYHQ/s2048/20201117_132459.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-531s71enVVs/X7a5Gywue1I/AAAAAAAAC3c/a9uKReyAjUI8Qj7aZMVZjAM1bpnMmSV6wCLcBGAsYHQ/s320/20201117_132459.jpg" width="320" /></a></div><p>I found this Samsung Galaxy Tab S in an e-waste bin. It didn't have any visible damage, but it had been thrown away because it was dead and wouldn't charge or react at all when plugged in. My USB power meter showed it would only pull about 10mA from the USB cable. </p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0_OWGhWupbc/X7a5Fu_AYKI/AAAAAAAAC3U/-i1d5SInqCgJ_k0GEyTgCfemN_zxQKrjwCLcBGAsYHQ/s2048/20201117_125710.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-0_OWGhWupbc/X7a5Fu_AYKI/AAAAAAAAC3U/-i1d5SInqCgJ_k0GEyTgCfemN_zxQKrjwCLcBGAsYHQ/s320/20201117_125710.jpg" width="320" /></a></div><br /><p></p><p>Since this was one of the older designs with the removable back cover, I could easily open it up and directly access the battery connector. By charging the battery from a bench supply, I got it to wake up, and everything seemed to work normally except for charging. The previous owner had installed some kind of aftermarket OS on it that caused it to get stuck in a boot loop as soon as I tried to do a factory reset, so I had to spend a while figuring out how to use Odin to restore the stock OS. After that diversion it was wiped and working normally, but still unable to charge. </p><p>I couldn't find any visible signs of damage, and I could confirm that the connections to the USB port were still good - in fact the system could still detect 5V when plugged in and indicate that it was charging, but no current was actually going into the battery. It also was still able to accurately report battery charge because it was based on voltage. This meant that if I could add something to charge the cell, the whole thing could be restored without having to dig further into the real source of the failure. </p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-uC6D-7GsYvI/X7a5E3BNvFI/AAAAAAAAC3M/lrJwJ3Dgkss2FH_hnccRbPh4lQILn7-NgCLcBGAsYHQ/s1548/20201117_130447%2B%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1548" data-original-width="1430" height="320" src="https://1.bp.blogspot.com/-uC6D-7GsYvI/X7a5E3BNvFI/AAAAAAAAC3M/lrJwJ3Dgkss2FH_hnccRbPh4lQILn7-NgCLcBGAsYHQ/s320/20201117_130447%2B%25282%2529.jpg" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">I prepared a small board to hold a TP4056 charger IC. This was cut from blank flex PCB material since everything needed to stay very low profile to fit in the case. A higher-current charger would have been preferable since this is a 4.8Ah cell, but the only options I had would have required a PCB with a lot more support components and would have ended up being too thick. The TP4056 is set up to charge at 1.2A, which is a slow charge but probably good enough for the use case for a tablet. One other disadvantage is that it will only charge to 4.2V while this is a 4.35V cell, so it only gets to 92% (as estimated by Android). I figured these disadvantages were acceptable tradeoffs for keeping the repair simple and getting it working quickly. </div><div class="separator" style="clear: both; text-align: left;"><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/--NiyPBmPiRE/X7a5FY8ck3I/AAAAAAAAC3Q/NZaQDquTSJU6vrcNjvPDM_f-CCMMe0RIgCLcBGAsYHQ/s2048/20201117_131508.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://1.bp.blogspot.com/--NiyPBmPiRE/X7a5FY8ck3I/AAAAAAAAC3Q/NZaQDquTSJU6vrcNjvPDM_f-CCMMe0RIgCLcBGAsYHQ/s320/20201117_131508.jpg" /></a></div></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">I probed out the connections for 5V and ground on the USB connector daughter board, and tapped into these with 34AWG magnet wire. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-U0Q0pOOygJM/X7a5F0_L-XI/AAAAAAAAC3Y/wjZTKxpJlYMRhowGiFhz316PnJtxYawzACLcBGAsYHQ/s2048/20201117_132454.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-U0Q0pOOygJM/X7a5F0_L-XI/AAAAAAAAC3Y/wjZTKxpJlYMRhowGiFhz316PnJtxYawzACLcBGAsYHQ/s320/20201117_132454.jpg" width="320" /></a></div><br /></div><div class="separator" style="clear: both; text-align: left;">From there it was very simple to wire in the new charger. I was lucky that system ground was connected to battery negative, so this charger architecture would work. All I had to do was wire 5V and ground to the TP4056, and then connect the output from the charger to a battery+ connection next to the battery connector. </div><div class="separator" style="clear: both; text-align: center;"><br /></div><a href="https://1.bp.blogspot.com/-Nug2k9hdXNw/X7a5G2ucTzI/AAAAAAAAC3g/bfMod9jxtucrZERrB_0S60ybTeyMQhdRACLcBGAsYHQ/s2048/20201117_132714.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://1.bp.blogspot.com/-Nug2k9hdXNw/X7a5G2ucTzI/AAAAAAAAC3g/bfMod9jxtucrZERrB_0S60ybTeyMQhdRACLcBGAsYHQ/s320/20201117_132714.jpg" /></a></div><br />I then plugged it in, checked that everything was working on the USB meter, and closed up the case. The tablet now works normally and has no visible external changes - it just charges a bit slower and tops out at 92%. <br /><br /><br /><br /><br /><p></p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com2tag:blogger.com,1999:blog-3895798887768426148.post-4561940520684825022020-10-29T11:54:00.004-07:002020-10-29T11:54:33.414-07:00Building an instrumented IP5328P power bank <p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-Wc8Rts6wAIU/X5sNSpnswFI/AAAAAAAAC1o/ZtsJjzaTf8kUMXfNqIZ0AWiqDKCMHU29QCLcBGAsYHQ/20201025_152359.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1899" data-original-width="1424" height="320" src="https://lh3.googleusercontent.com/-Wc8Rts6wAIU/X5sNSpnswFI/AAAAAAAAC1o/ZtsJjzaTf8kUMXfNqIZ0AWiqDKCMHU29QCLcBGAsYHQ/w240-h320/20201025_152359.jpg" width="240" /></a></div><p></p><p><br /> I bought some nice 21700 cells and an IP5328P power bank board with the intent to build a large (24Ah) power bank. I've done lots of<a href="https://www.youtube.com/watch?v=0VnTvev33r0"> power bank projects</a> in the past where I added voltage and current instrumentation and displays to be able to monitor what was happening while using the power bank, and for this new one I wanted to use a nice RGB graphical display (whereas older projects used black and white OLED displays). </p><p>When I received the boards I started doing some reverse engineering with the goal of taking my standard approach of adding in current sense resistors, voltage dividers, and INA219 power monitors to get the data I needed. After taking a look at the IC's datasheet though, I realized that all the information I wanted was available over an I2C connection, so I'd hardly have to implement any hardware at all. The I2C bus is available by connecting to some lines that are otherwise used for the indicator LEDs:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-vPi5Vnh3BOg/X5sNBHQPa1I/AAAAAAAAC1g/wPCU6N_kr202-42cxQUINvlZnXhKO_6jQCLcBGAsYHQ/20201022_115350.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="2048" data-original-width="1536" height="320" src="https://lh3.googleusercontent.com/-vPi5Vnh3BOg/X5sNBHQPa1I/AAAAAAAAC1g/wPCU6N_kr202-42cxQUINvlZnXhKO_6jQCLcBGAsYHQ/w240-h320/20201022_115350.jpg" width="240" /></a></div><br />The datasheet had no information on the available registers though, but luckily an EEVBlog forum user had come across the needed documentation and share it in <a href="https://www.eevblog.com/forum/projects/injoinic-ip5328-i2c-register-map/">this thread</a>. With that and a whole bunch of Google Translate I got my microcontroller (PIC18F26K40) talking to it. <p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-Xd5-VaIC8TE/X5sOYXReZ6I/AAAAAAAAC14/Fbpb7lW_NNoQShMkfg4wQnwjyFmIlWJQQCLcBGAsYHQ/20201022_115427.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="2041" data-original-width="1531" height="240" src="https://lh3.googleusercontent.com/-Xd5-VaIC8TE/X5sOYXReZ6I/AAAAAAAAC14/Fbpb7lW_NNoQShMkfg4wQnwjyFmIlWJQQCLcBGAsYHQ/20201022_115427.jpg" width="180" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">I wired up my microcontroller breakout board to the 1.8" RGB display, which I manually wired up to with 34AWG magnet wire (trying to keep things as low-profile as possible). </div><br /><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-QqJqA4aeQhQ/X5sOEO5fcSI/AAAAAAAAC1w/NaYJhlgybaA1t6XS0Fc7sPj3R_7Za1OqgCLcBGAsYHQ/20201022_115432.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="2048" data-original-width="1536" height="320" src="https://lh3.googleusercontent.com/-QqJqA4aeQhQ/X5sOEO5fcSI/AAAAAAAAC1w/NaYJhlgybaA1t6XS0Fc7sPj3R_7Za1OqgCLcBGAsYHQ/w240-h320/20201022_115432.jpg" width="240" /></a></div><br />And after connecting I2C as well as the INT signal and power to the main board, I was able to pull data and display it on the screen. You can also see that I relocated the inductor to save on height. <p></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-mvwAYTXJqb4/X5sOs3AwP5I/AAAAAAAAC2A/bmvobnZT9q0oibPtx8R2IKsHJHNYqxEUgCLcBGAsYHQ/20201025_110002.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1809" data-original-width="1357" height="320" src="https://lh3.googleusercontent.com/-mvwAYTXJqb4/X5sOs3AwP5I/AAAAAAAAC2A/bmvobnZT9q0oibPtx8R2IKsHJHNYqxEUgCLcBGAsYHQ/w240-h320/20201025_110002.jpg" width="240" /></a></div><br /><p></p><p>I did a bit more work on the 3d-printed housing, including some manual adjustments with dremel and 3D pen, and got the display and power bank board installed. At this stage of assembly I spent a long time writing all the graphics code to show status and data. After getting that to a point I was happy with, I welded up the cells and installed them:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-b_gxrblS66U/X5sPXuh1v2I/AAAAAAAAC2M/f_mozC1RzIU_AMzRA664EZppAhYN8Hn5ACLcBGAsYHQ/20201025_132540.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1459" data-original-width="1945" height="240" src="https://lh3.googleusercontent.com/-b_gxrblS66U/X5sPXuh1v2I/AAAAAAAAC2M/f_mozC1RzIU_AMzRA664EZppAhYN8Hn5ACLcBGAsYHQ/w320-h240/20201025_132540.jpg" width="320" /></a></div><br />And closed it up:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-rwi9ibhckfU/X5sPiqytjEI/AAAAAAAAC2Q/4sH3Fzk2mmEkUoSCYogMY1apqdsyGmb0ACLcBGAsYHQ/20201025_152415.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1472" data-original-width="1963" height="240" src="https://lh3.googleusercontent.com/-rwi9ibhckfU/X5sPiqytjEI/AAAAAAAAC2Q/4sH3Fzk2mmEkUoSCYogMY1apqdsyGmb0ACLcBGAsYHQ/w320-h240/20201025_152415.jpg" width="320" /></a></div><br />Here's a demo showing the display in action:<p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Nu6Hjamfnbg" width="320" youtube-src-id="Nu6Hjamfnbg"></iframe></div><br /><p><br /></p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-63481602488930023652020-09-25T09:55:00.007-07:002020-09-25T09:55:59.532-07:00Min/Max light version 2<p style="text-align: left;"><span style="background-color: black;"><span></span></span></p><p style="clear: both; text-align: center;"></p><div class="separator" style="clear: both; text-align: left;"><span><a href="https://lh3.googleusercontent.com/-qPnp-_-UHag/X24grkyrh7I/AAAAAAAACz0/5yD1uEDX2JAMGYEeXy0rwej-r7xIG3hngCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1014" data-original-width="2160" height="188" src="https://lh3.googleusercontent.com/-qPnp-_-UHag/X24grkyrh7I/AAAAAAAACz0/5yD1uEDX2JAMGYEeXy0rwej-r7xIG3hngCLcBGAsYHQ/w400-h188/image.png" width="400" /></a></span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span><br /></span></div><p></p><p></p><p style="clear: both; text-align: left;">Here’s version 2 of my Min/Max light – a flashlight built from scratch with the aim of having the minimum size with the maximum functions. I shared version 1 here.</p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: left;">This time around I designed and built this light from the ground up instead of modifying an existing light. I included every feature I could think of for a small EDC light:</p><p style="clear: both; text-align: center;"></p><ul><li style="text-align: left;">adjustable brightness</li><li style="text-align: left;">red, green, and blue color modes</li><li style="text-align: left;">ultraviolet</li><li style="text-align: left;">a green laser</li><li style="text-align: left;">USB-C rechargeable</li><li style="text-align: left;">temperature control</li><li style="text-align: left;">battery power instrumentation</li><li style="text-align: left;">a graphical color display</li><li style="text-align: left;">a tail switch as well as up and down switches</li><li style="text-align: left;">a touch sensitive panel</li><li style="text-align: left;">a tailcap magnet</li></ul><p></p><p style="clear: both; text-align: left;">and of course this includes all the functions of my previous MELD flashlights – strobes, configuration options, automatic shutdown, etc.</p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: left;">I managed to fit it into a final size of 51×30×17mm.</p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: center;"></p><div class="separator" style="clear: both; text-align: left;"><a href="https://lh3.googleusercontent.com/-eCmZE8W4IxU/X24g3UwMx-I/AAAAAAAACz8/P5XCnwA08YkG0MEfTN0wTlKayBCDs2l4wCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1536" data-original-width="2048" height="300" src="https://lh3.googleusercontent.com/-eCmZE8W4IxU/X24g3UwMx-I/AAAAAAAACz8/P5XCnwA08YkG0MEfTN0wTlKayBCDs2l4wCLcBGAsYHQ/w400-h300/image.png" width="400" /></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><p></p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: left;">The structural parts are 3d printed in ABS. a central plastic frame holds all the electronics wrapped around the lithium battery, and there is a heatsink formed from a folded copper sheet that wraps around the right side.</p><p style="clear: both; text-align: center;"></p><div class="separator" style="clear: both; text-align: left;"><a href="https://lh3.googleusercontent.com/-JP0OHBtQq9k/X24g3f30MTI/AAAAAAAACz4/qzqxnmHbtLQTfUjnSQabUgY-nkfmrrhHACLcBGAsYHQ/20191007_152222.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1536" data-original-width="2048" height="300" src="https://lh3.googleusercontent.com/-JP0OHBtQq9k/X24g3f30MTI/AAAAAAAACz4/qzqxnmHbtLQTfUjnSQabUgY-nkfmrrhHACLcBGAsYHQ/w400-h300/20191007_152222.jpg" width="400" /></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><p></p><p style="clear: both; text-align: left;">To get this to fit into the smallest package possible, I put all the electronics including the emitters onto a single flexible PCB. This PCB is folded to cover 4 sides so that it can hold emitters on the front, a display on the side, switches, touch panel, laser, and charge jack on top, and a tail switch on the back.</p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: left;"><a href="https://lh3.googleusercontent.com/-cN8ALMUB6Zs/X24g5jXrW-I/AAAAAAAAC0A/79PcH8mH2nYWXxTsp9i6KhUW9RboOk6xgCLcBGAsYHQ/image.png" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1536" data-original-width="2048" height="300" src="https://lh3.googleusercontent.com/-cN8ALMUB6Zs/X24g5jXrW-I/AAAAAAAAC0A/79PcH8mH2nYWXxTsp9i6KhUW9RboOk6xgCLcBGAsYHQ/w400-h300/image.png" width="400" /></a></p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: left;">This light does all the same stuff as my other MELD lights, with the addition of the green laser, USB charging, a third switch, and of course the color display. The the display always shows mode, LED temperature, battery charge status, drive current, and a remaining runtime estimate.</p><p style="clear: both; text-align: left;"><br /></p><p style="clear: both; text-align: left;">Here’s a video with details on the build process and demos of the finished light:</p><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/yy5jY0hgzdU" width="320" youtube-src-id="yy5jY0hgzdU"></iframe></div><br /><p style="clear: both; text-align: left;"><br /></p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com0tag:blogger.com,1999:blog-3895798887768426148.post-77849548912554805892020-09-20T08:15:00.001-07:002020-09-20T08:15:09.668-07:00Cheap action cam hacked into dash cam<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-Pt0xhis4oyE/X2dtMWUwQiI/AAAAAAAACzA/E9yJ9V6Z8Gk3W-jnYce4GfjDkiWOwJQYwCLcBGAsYHQ/20200920_105404.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1518" data-original-width="2025" height="300" src="https://lh3.googleusercontent.com/-Pt0xhis4oyE/X2dtMWUwQiI/AAAAAAAACzA/E9yJ9V6Z8Gk3W-jnYce4GfjDkiWOwJQYwCLcBGAsYHQ/w400-h300/20200920_105404.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>I found this cheap GoPro clone action camera on eBay for about $20. The video resolution is clearly a blatant lie, but if you don't need very high def video it's a pretty capable device for the price. I thought it would do well as a dash cam, but it needed a few hacks first. <p></p><p>With a combination of 3D print and 3D pen (in ABS) I made a simple magnetic mount to attach it to my rearview mirror. </p><p>When the car powers up, it provides power to the camera (via micro USB), and the camera powers up by default. But it still required me to manually start the recording, and then to stop it and turn off the camera after turning the car off. I wanted to make this process completely automatic, so I opened the housing and probed some connections to find what I needed. Fortunately all the signals necessary were available on this one board on the top of the camera where the record button is:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-skioumYcnHc/X2duvxJ9pCI/AAAAAAAACzM/HLlj3ldg4KEFZlLvYoscwsBb39ZOSKILwCLcBGAsYHQ/20200920_094309.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1536" data-original-width="2048" height="300" src="https://lh3.googleusercontent.com/-skioumYcnHc/X2duvxJ9pCI/AAAAAAAACzM/HLlj3ldg4KEFZlLvYoscwsBb39ZOSKILwCLcBGAsYHQ/w400-h300/20200920_094309.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>After the scope showed that switch signals weren't scanned or multiplexed, it was easy to fake button presses just by directly connecting switch signals to GPIO lines. The added microcontroller would run from a switched 3.3V rail, so to safely sense the 5V external power, I added an N-channel FET to provide a pull-down signal when it was present. The added microcontroller is a PIC10F322 on a small breakout board:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-EqNYcoaJu-8/X2dwJ1XzoHI/AAAAAAAACzY/tRHMw--9cHU4fN47DsG_oomA07S1VKBUQCLcBGAsYHQ/20200920_100305.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1536" data-original-width="2048" height="300" src="https://lh3.googleusercontent.com/-EqNYcoaJu-8/X2dwJ1XzoHI/AAAAAAAACzY/tRHMw--9cHU4fN47DsG_oomA07S1VKBUQCLcBGAsYHQ/w400-h300/20200920_100305.jpg" width="400" /></a></div><p><br /></p>The firmware is a very simple state machine that detects a bootup due to external power, and then provides switch inputs to start recording. If the camera is started up manually instead, the hack chip does nothing so that the camera can be used normally. While recording, it just waits until external power is removed (because the car has been turned off), records for a bit longer, then stops recording and turns the camera off. <p></p><p>Here is the firmware: <a href="https://github.com/tterev3/dash-cam-controller/blob/master/dash%20cam%20controller.c">https://github.com/tterev3/dash-cam-controller/blob/master/dash%20cam%20controller.c</a></p><p>And here is a short demo video of the whole process:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Z63TLV2uCO0" width="320" youtube-src-id="Z63TLV2uCO0"></iframe></div><br /><p><br /><br /><br /></p>Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com0tag:blogger.com,1999:blog-3895798887768426148.post-70518919087210016862020-07-22T07:06:00.000-07:002020-07-22T07:06:07.383-07:00Build: 100mW green laser, adjustable with instrumentation<br />
<img border="0" height="480" src="https://1.bp.blogspot.com/-_ZvqRFvHgjg/Xxg_ekzjvVI/AAAAAAAACq4/phYmqAvKNUE4Hb7aSMGeBwey60AyS8u5gCLcBGAsYHQ/s640/thumb%2B%25282%2529.jpg" width="640" /><br />This is a 100mW green DPSS laser pointer I built that has instrumentation and safety features. It's a small form-factor laser with realtime measurement of current, voltage, power, and temperature, has a graphical RGB display, and is rechargeable via USB type C. The laser is built into a 3d-printed housing that measures 42x34x16mm. <div>
<br /></div>
<div>
It has adjustable laser output power with a linear constant-current driver and includes a password to unlock high power mode making it relatively safe.This project started when i came across my old wicked lasers pointer from many years ago, which I removed the diode and optics from. After measuring the stock driver's output current at 600mA, I started building a new linear constant-current driver that could have output current adjustable via firmware.<br /><img border="0" height="352" src="https://1.bp.blogspot.com/-kct_xH22t_Q/XxhAmJAadHI/AAAAAAAACrE/vhEr7YXuDU4b-NqIFVAklurX_tuBq4TKwCLcBGAsYHQ/s640/20200415_083310%2B%25282%2529.jpg" width="640" /><br />
<br />This is done by forming a linear constant current sink with an N-channel FET, a current sense resistor, and an opamp. The positive reference for the opamp which sets the current setpoint is generated via resistor divider from a PWM signal. Capacitors are added for negative feedback and to filter the PWM to DC. The microcontroller that runs this is a PIC18F26K40.<br /><br />Also connected to the microcontroller are two momentary switches for user input, and two thermistor-based voltage dividers for measuring laser diode and heatsink temperatures. The high sides of the thermistors are powered via an output pin so that they can be powered off in standby.<br /><br />The display is a small 160x80 pixel IPS RGB display with an ST7735 controller, which is driven via SPI from the microcontroller.<br /><br /><a href="https://1.bp.blogspot.com/-H91mKtM3b4o/XxhCSeQLzNI/AAAAAAAACr8/Bav3F3_EKdcrXkL6HRzulu5pBgZH2urkACLcBGAsYHQ/s1600/20200224_161405%2B%25282%2529.jpg"><img border="0" src="https://1.bp.blogspot.com/-H91mKtM3b4o/XxhCSeQLzNI/AAAAAAAACr8/Bav3F3_EKdcrXkL6HRzulu5pBgZH2urkACLcBGAsYHQ/s320/20200224_161405%2B%25282%2529.jpg" /></a><br /><br />Charging is done with a USB-C input jack and an LTC4054 lithium battery charger, which also provides a charge status signal to the microcontroller.<br /><br /><a href="https://1.bp.blogspot.com/-TsFBm-Mw8_4/XxhBQGWcCPI/AAAAAAAACrU/4O5a3dk4O70K8aF68KRP8ekgOGM9EzytACLcBGAsYHQ/s1600/20200219_140027.jpg"><img border="0" src="https://1.bp.blogspot.com/-TsFBm-Mw8_4/XxhBQGWcCPI/AAAAAAAACrU/4O5a3dk4O70K8aF68KRP8ekgOGM9EzytACLcBGAsYHQ/s320/20200219_140027.jpg" /></a><br /><br />The current and voltage on the lithium ion cell are monitored with an INA219 power monitor and a current sense resistor, and that device communicates via I2C.<br /><br />I built the driver on some copper clad blank pcb cut by hand and included a piece of half-millimeter copper sheet connected to the MOSFET drain to act as a heatsink, since the FET will dissipate significant heat at high current.<br /><br /><a href="https://1.bp.blogspot.com/-nxWgDvSREnE/XxhBf0Q0TFI/AAAAAAAACrc/-vaKGnsorqkBlu2XYL2E-38ico29liNngCLcBGAsYHQ/s1600/20200219_140001.jpg"><img border="0" src="https://1.bp.blogspot.com/-nxWgDvSREnE/XxhBf0Q0TFI/AAAAAAAACrc/-vaKGnsorqkBlu2XYL2E-38ico29liNngCLcBGAsYHQ/s320/20200219_140001.jpg" /></a> <a href="https://1.bp.blogspot.com/-EglW0pBzgBA/XxhBf9oaEqI/AAAAAAAACrg/NszIWkxvg3wIMUAyH-_d2837Mf28NSdyQCLcBGAsYHQ/s1600/20200219_140007.jpg"><img border="0" src="https://1.bp.blogspot.com/-EglW0pBzgBA/XxhBf9oaEqI/AAAAAAAACrg/NszIWkxvg3wIMUAyH-_d2837Mf28NSdyQCLcBGAsYHQ/s320/20200219_140007.jpg" /></a><br /><br />The battery is a 300mAh lipo with protection circuit. The display is soldered to one of my custom general-purpose display boards which is essentially a microcontroller breakout with solder pads for the FFC on the display.<br /><br /><a href="https://1.bp.blogspot.com/-abRBsNbijhw/XxhB4r3FKLI/AAAAAAAACrs/imz7S70tvLAn6OxtLLL2PdBvNCrynAazgCLcBGAsYHQ/s1600/20200219_140016.jpg"><img border="0" src="https://1.bp.blogspot.com/-abRBsNbijhw/XxhB4r3FKLI/AAAAAAAACrs/imz7S70tvLAn6OxtLLL2PdBvNCrynAazgCLcBGAsYHQ/s320/20200219_140016.jpg" /></a> <a href="https://1.bp.blogspot.com/-RqotiXd0pXA/XxhB4jBlwRI/AAAAAAAACrw/ox7RBhJIXKgRNv7ZU1ma0Chng4qXA6EbgCLcBGAsYHQ/s1600/20200219_140020.jpg"><img border="0" src="https://1.bp.blogspot.com/-RqotiXd0pXA/XxhB4jBlwRI/AAAAAAAACrw/ox7RBhJIXKgRNv7ZU1ma0Chng4qXA6EbgCLcBGAsYHQ/s320/20200219_140020.jpg" /></a><br /><br />With all the major components established I 3D-modeled all the parts and worked out a fairly compact layout. Here you can see the laser optics, driver, battery, display, USB jack, switches, and lithium protection circuit.<br /><br /><a href="https://1.bp.blogspot.com/-_vUAzWL9Rs4/XxhEOP8SzBI/AAAAAAAACsI/2iMAjDjTur82wNvr0FtsEVJcwu5S0mWjwCLcBGAsYHQ/s1600/unnamed.png"><img border="0" src="https://1.bp.blogspot.com/-_vUAzWL9Rs4/XxhEOP8SzBI/AAAAAAAACsI/2iMAjDjTur82wNvr0FtsEVJcwu5S0mWjwCLcBGAsYHQ/s320/unnamed.png" /></a><br /><br />Then I designed the housing around them. The housing is printed in 3 parts - the front is solvent-welded on after some of the components were installed, and the back is a friction fit that can be removed for access to the programming connector. The button caps are printed separately in green. <br /><br /><a href="https://1.bp.blogspot.com/-jJSTyzrah-o/XxhERP_B_iI/AAAAAAAACsM/niQ-e1Q5K6IOb37oxC5JVJEnq0R6zh7XQCLcBGAsYHQ/s1600/unnamed%2B%25281%2529.png"><img border="0" src="https://1.bp.blogspot.com/-jJSTyzrah-o/XxhERP_B_iI/AAAAAAAACsM/niQ-e1Q5K6IOb37oxC5JVJEnq0R6zh7XQCLcBGAsYHQ/s320/unnamed%2B%25281%2529.png" /></a><br /><br /><br />I built up most of the electronics on top of the battery, and then insulated everything with kapton. <br /><br /><a href="https://1.bp.blogspot.com/-muoQL6j1Lso/XxhEw-S3xII/AAAAAAAACsc/CLr-I-MtPB84xjc4lispIp7AU30SL7WSgCLcBGAsYHQ/s1600/20200219_162700.jpg"><img border="0" src="https://1.bp.blogspot.com/-muoQL6j1Lso/XxhEw-S3xII/AAAAAAAACsc/CLr-I-MtPB84xjc4lispIp7AU30SL7WSgCLcBGAsYHQ/s320/20200219_162700.jpg" /></a><br /><br /><br />The display breakout board with the INA219 went on top of that. <br /><br /><a href="https://1.bp.blogspot.com/-V9lIs9yTrb8/XxhE-YxSTSI/AAAAAAAACsk/L3wl7fcrwY8N_ox2wjQ2uf9gg8dL65KVgCLcBGAsYHQ/s1600/20200220_103217.jpg"><img border="0" src="https://1.bp.blogspot.com/-V9lIs9yTrb8/XxhE-YxSTSI/AAAAAAAACsk/L3wl7fcrwY8N_ox2wjQ2uf9gg8dL65KVgCLcBGAsYHQ/s320/20200220_103217.jpg" /></a><br /><br />Then I started installing hardware into the housing, starting with the laser optics and USB jack, then switches, and then the battery with all the rest attached to it.<br /><br /><a href="https://1.bp.blogspot.com/-AeAYn_y87Xs/XxhFUwlieJI/AAAAAAAACs8/w1BqE2H-Di0yWxdYWBKoqY3j1PbHxlp-ACLcBGAsYHQ/s1600/20200220_113021.jpg"><img border="0" src="https://1.bp.blogspot.com/-AeAYn_y87Xs/XxhFUwlieJI/AAAAAAAACs8/w1BqE2H-Di0yWxdYWBKoqY3j1PbHxlp-ACLcBGAsYHQ/s320/20200220_113021.jpg" /></a><div>
<br /><div>
I also broke out the programming connections to a small .05 female header so I could work on the firmware after it was fully assembled.</div>
<div>
<a href="https://1.bp.blogspot.com/-QCZCUUQQRqc/XxhFUrW4F2I/AAAAAAAACs4/gqvpM6CmArUq1ytoAaERPamF93zlgJ85gCLcBGAsYHQ/s1600/20200220_113016.jpg"><img border="0" src="https://1.bp.blogspot.com/-QCZCUUQQRqc/XxhFUrW4F2I/AAAAAAAACs4/gqvpM6CmArUq1ytoAaERPamF93zlgJ85gCLcBGAsYHQ/s320/20200220_113016.jpg" /></a><a href="https://1.bp.blogspot.com/-AeAYn_y87Xs/XxhFUwlieJI/AAAAAAAACs8/w1BqE2H-Di0yWxdYWBKoqY3j1PbHxlp-ACLcBGAsYHQ/s1600/20200220_113021.jpg"><br /></a><br />I designed the user interface for this so that it could easily be used as a normal laser pointer at a safe power level, by simply pressing a button from standby. This wakes up the microcontroller and it starts outputting 5mW as long as the button is held.<br /><br />At all times the display shows operating mode, labels for the actions of the two buttons, a live laser diode current readout, the laser power setting, and then the temperatures of the laser diode and heatsink, the battery voltage, and the battery charge level. After a few seconds of inactivity in safe mode, it will go back to sleep.<br /><br />For higher power, it needs to be unlocked with a password. the password is just a sequence of 5 presses of up and down - not very secure obviously with only 32 possible passwords, but this at least prevents unintended high power outputs and makes it relatively safe around kids or people who don't know what it is.<br /><br />In armed mode there's a countdown bar for when it will automatically re-lock and shut off after a period of inactivity. While armed, there is an adjustment page where you can pick any power level from 5 to 100mW. <br />The firmware monitors the temperatures of the driver heatsink and laser diode continuously and will force a cooldown by reducing the power level if they exceed 50C. The laser can be recharged with a USB-c cable, and that will wake it up to display the charge status and current. <br /><br /><br />Here is a video that demonstrates the entire UI: <br /><br /><img src="https://img1.blogblog.com/img/video_object.png" /><br /></div>
</div>
</div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-11614396620994902972020-04-17T06:47:00.001-07:002020-04-22T12:25:45.507-07:00Portable, 3D-printed digital T12 soldering iron<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/c-wk7lsOAIs/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/c-wk7lsOAIs?feature=player_embedded" width="320"></iframe></div>
<br />
I recently built this portable soldering iron that uses Hakko T12 tips and is powered from a QC2-compatible power bank via USB. It is similar in size and form factor to the TS100, which I like, but I wanted to build this to make a couple of improvements over the TS100 that would be more useful for me:<br />
<br />
<ul>
<li>use cheaper and more widely-available T12 tips</li>
<li>direct power from USB port</li>
<li>able to negotiate with QuickCharge power sources for 12V</li>
<li>impoved tip-to-handle distance</li>
</ul>
<div>
I was able to make the hardware fairly simple by using a trick to measure the thermocouple voltage from the tip. I initially planned on using an IC intended to be a thermocouple amplifier such as the MAX6675, but found them to be too slow to make the conversion. Since the heater in the T12 tips is in series with the thermocouple, the heat must be turned off while the measurement happens, meaning the measurement needs to be very quick to allow for high duty cycles on the heater. I realized that there was another chip I've used extensively that can accurately measure small voltages - the INA219, which is intended to measure voltage across a shunt resistor. </div>
<div>
<br /></div>
<div>
After a quick test to see if I could get reasonable signals from the T12 tip this way, I took some measurements and came up with a transfer function to get tip temperature from the shunt voltage reported by the INA219.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-5ikl0gt5594/XpmvpRsZDzI/AAAAAAAACi0/duyo53suFKs29uZK0cis-3vdVW430t_YQCLcBGAsYHQ/s1600/20200310_143301.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-5ikl0gt5594/XpmvpRsZDzI/AAAAAAAACi0/duyo53suFKs29uZK0cis-3vdVW430t_YQCLcBGAsYHQ/s320/20200310_143301.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-pZomw4ba8fo/XpmvpTgpk8I/AAAAAAAACi4/UeU_3LHK_IYNww0tDHRFmct8zD7gLcOiACLcBGAsYHQ/s1600/20200305_101328.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-pZomw4ba8fo/XpmvpTgpk8I/AAAAAAAACi4/UeU_3LHK_IYNww0tDHRFmct8zD7gLcOiACLcBGAsYHQ/s320/20200305_101328.jpg" width="320" /></a></div>
<div>
With that settled the schematic ended up looking like this:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-FnOhFBg5bEU/Xpmwe8GMRLI/AAAAAAAACjo/hkSjI6QqotEOHxvGI4S1g0U5bbT348yTACLcBGAsYHQ/s1600/20200417_073144.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-FnOhFBg5bEU/Xpmwe8GMRLI/AAAAAAAACjo/hkSjI6QqotEOHxvGI4S1g0U5bbT348yTACLcBGAsYHQ/s320/20200417_073144.jpg" width="320" /></a></div>
<div>
Using the INA219 to measure thermocouple voltage also gives a nice feature for free (without extra hardware) - it can also measure the input voltage to see if the negotiation for 12V has worked. </div>
<div>
<br /></div>
<div>
I got the tip holder PCB from a cheap T12 handle from Banggood and trimmed it down significantly to save space. On the back of that I attached a micro USB jack on a small breakout board. Underneath that is a USB type C jack as well, so that the iron can be powered using either type of cable. </div>
<div>
<br /></div>
<div>
In order to do the QuickCharge 12V negotiation, the data+/data- lines from the two jacks are tied together and then connected to resistor dividers that are controlled by I/O pins so that the microcontroller can selectively apply 0 and 0.6V to the lines. I learned about the QC protocol from <a href="http://blog.deconinck.info/post/2017/08/09/Turning-a-Quick-Charge-3.0-charger-into-a-variable-voltage-power-supply" target="_blank">this page</a>. </div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-QoZy6iXl0j8/XqCZ4bIkftI/AAAAAAAACks/CVpNa-zOI1QEcAm7z5cjbHoCBOzAMpQRQCLcBGAsYHQ/s1600/20200311_110737.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-QoZy6iXl0j8/XqCZ4bIkftI/AAAAAAAACks/CVpNa-zOI1QEcAm7z5cjbHoCBOzAMpQRQCLcBGAsYHQ/s320/20200311_110737.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The whole housing was 3D-printed in ABS. To make sure the handle can't get too hot and soften the plastic, I included a thermistor to measure internal temperature near the front of the handle. The firmware will force a cool down period if this gets too high. </div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
The iron also includes a tilt switch pulled from the same T12 handle that I got the PCB from. This lets the firmware know when the iron has been put down so that it can automatically go to standby and resume once picked up again. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The display is a 96x16 pixel SSD1306 OLED display connected to one of my custom boards that is a breakout for the PIC18F26K40 with solder pads and support hardware for small OLED displays. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-hZfnUMDCNB4/XpmydT2KYJI/AAAAAAAACj0/0NAslzJR3-oRbfQxPxvnXhkzBqL6e6YLwCLcBGAsYHQ/s1600/20200310_153442.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://1.bp.blogspot.com/-hZfnUMDCNB4/XpmydT2KYJI/AAAAAAAACj0/0NAslzJR3-oRbfQxPxvnXhkzBqL6e6YLwCLcBGAsYHQ/s320/20200310_153442.jpg" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The display and board are mounted in the top of the handle and then I tucked the INA219 into a free corner and wired it up with 34AWG magnet wire. </div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-yurUoqCvnuY/XqCaAn3RtmI/AAAAAAAACkw/9Cw1Wk-VvWAUOIcGWyxV8Tke101aCUk0ACLcBGAsYHQ/s1600/20200311_113151.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://1.bp.blogspot.com/-yurUoqCvnuY/XqCaAn3RtmI/AAAAAAAACkw/9Cw1Wk-VvWAUOIcGWyxV8Tke101aCUk0ACLcBGAsYHQ/s320/20200311_113151.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Two momentary switches are used to control the temperature. The UI is fairly basic but tries to implement some good automatic features - retrying the 12V negotiation until it gets >10V, automatic standby and resume, automatic cooldown if the handle gets too hot, automatic tip detection, etc. At all times the display shows input voltage, internal temperature, tip temperature, tip setpoint, and the state of the switches and tilt sensor. The remaining space is a scrolling text of the current state including how much time until automatic standby, etc. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-aoBPvIP_RK8/XqCaMqYRFuI/AAAAAAAACk4/bsBNm7I2LEI-P_OOE7guGyIAdmyT-GC6gCLcBGAsYHQ/s1600/20200312_100029%2B%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="916" data-original-width="1600" height="183" src="https://1.bp.blogspot.com/-aoBPvIP_RK8/XqCaMqYRFuI/AAAAAAAACk4/bsBNm7I2LEI-P_OOE7guGyIAdmyT-GC6gCLcBGAsYHQ/s320/20200312_100029%2B%25282%2529.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
</div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com5tag:blogger.com,1999:blog-3895798887768426148.post-62963012735034406822020-03-01T18:19:00.002-08:002020-03-01T18:19:29.336-08:00Tiny green laser in a Nitecore TubeNOTE: this is a repost of my thread on BudgetLightForum <a href="http://budgetlightforum.com/node/67143" target="_blank">here</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/kKbO5Co.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/kKbO5Co.jpg" width="320" /></a></div>
<br />
I recently discovered the new 520nm green laser diodes that don't require the frequency doubling stage that regular 532nm green lasers need, which means I could finally build one as small as I wanted. I gutted a Nitecore Tube and turned it into a 30mW rechargeable green laser pointer with some extra firmware features.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/0snrMvK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/0snrMvK.jpg" width="320" /></a></div>
<br />
Here's a video detailing the whole build:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/r829K98rroI/0.jpg" src="https://www.youtube.com/embed/r829K98rroI?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
It turned out so well that I ended up building a 450nm blue one too.Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-44032001238604786372020-03-01T18:16:00.000-08:002020-03-01T18:16:10.283-08:00Min/Max Light version 1NOTE: this is a repost of my thread on BudgetLightForum <a href="http://budgetlightforum.com/node/67804" target="_blank">here</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/3OBMdeM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/3OBMdeM.jpg" width="320" /></a></div>
<br />
<br />
<br />
I'm calling this light the Min/Max Light - minimum size, maximum functions. I used a Nitecore TIP2 as host for this and put every feature I could think of into it:<br />
<br />
* RGB colors<br />
* Cyan LASER<br />
* 365nm UV<br />
* Current and Voltage instrumentation with INA219<br />
* Temperature monitoring & control<br />
* OLED display<br />
* Touch-sensitive controls for peek mode<br />
* USB-C onboard charging<br />
<br />
For a long time I've been carrying the <a href="http://budgetlightforum.com/node/51125" target="_blank">SDmini with OLED</a> and got to a point where I couldn't stand to carry a light that didn't give me detailed battery and runtime information, but the 18650 format was often too large. I decided to build a very small EDC light that included every feature I've ever put into a flashlight in one, and in the minimum size possible. The Nitecore TIP2 was the perfect host with 500mAh cell size, onboard charging, and conveniently had two emitters side-by-side so I could remove one and add new emitter types.<br />
<br />
The most difficult part of this was the optics setup - I had to fit optics for a collimated laser and the UV LED into the space left by removing one of the XP-G emitters and corresponding TIR from the stock light. Here's the completed setup, which involved heavy modification of the plastic frame and brass heatsink, as well as some custom structures formed from copper:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/kVlsSrf.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/kVlsSrf.jpg" width="320" /></a></div>
<br />
<br />
The TIR optic itself took some work too. I needed a flat lens for the laser beam, and the plastic material wouldn't pass 365nm UV, so I carved out the TIR lens and installed a small glass window, secured in place with epoxy:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/hNgGI0p.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/hNgGI0p.jpg" width="320" /></a></div>
<br />
<br />
In the back I removed one of the two magnets and used the space to put in a USB-C jack and a charger based on the LTC4054:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/w9RPGyB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="239" src="https://i.imgur.com/w9RPGyB.jpg" width="320" /></a></div>
<br />
<br />
The laser is built as small as possible using 7mm optics from cheap red laser modules just like I did in my <a href="http://budgetlightforum.com/node/67143" target="_blank">Nitecore Tube Laser</a>, and in this case using a 505nm cyan laser diode. Even built this small, the battery had to be moved back to make room for the laser assembly. For this reason I had to separate the protection circuit and put it on the side. In this image the laser boost driver and LED drivers are also in place:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/6xBI87K.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/6xBI87K.jpg" width="240" /></a></div>
<br />
<br />
The back end also gets a programming port to update firmware without disassembly:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/F8w3gvI.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/F8w3gvI.jpg" width="320" /></a></div>
<br />
<br />
And a 3D-printed cover held on by a screw:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/KTjpIW2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/KTjpIW2.jpg" width="240" /></a></div>
<br />
<br />
After quite a bit more wiring with 34AWG magnet wire, here's all the electronics in place, with some annotations. The battery monitoring is accomplished by an INA219 power monitor and the control is a PIC18F26K40 on a custom board that includes support circuitry for the 128x32 OLED display:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/jJWNqn2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/jJWNqn2.jpg" width="320" /></a></div>
<br />
<br />
And with the display board folded down into place it is ready to be put into the housing:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/bXfYLRC.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/bXfYLRC.jpg" width="239" /></a></div>
<br />
<br />
The housing needed a window to be milled out for the display:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/SuUQe3q.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/SuUQe3q.jpg" width="320" /></a></div>
<br />
<br />
And finished with needle files:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/bBNOrv8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/bBNOrv8.jpg" width="240" /></a></div>
<br />
<br />
This light includes something I've been adding to all my lights with displays - peek mode. With this function you can tap on the the buttons (without actually pressing them) and see the battery status on the display. To do this, I add a capacitive touch sensor behind the buttons by covering the back side with copper foil tape which gets connected to the TTP223:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/QbTqrtd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/QbTqrtd.jpg" width="240" /></a></div>
<br />
<br />
Finally the internals can be slid into the housing. I also added a 0.5mm-thick plexiglas window over the display, and then program it:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/V7j13nG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/V7j13nG.jpg" width="320" /></a></div>
<br />
<br />
And power it up:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/Ck0Lm9P.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/Ck0Lm9P.jpg" width="320" /></a></div>
<br />
<br />
And here's what the UV looks like:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/cY72625.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/cY72625.jpg" width="320" /></a></div>
<br />
<br />
And a head-on view of the front. You can see the TIR for the white beam, the laser, the UV, and on the lower side of the TIR you can see where the de-domed XML-RGBW contacts the optic to get RGB light out the front:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/qOnIqvn.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/qOnIqvn.jpg" width="320" /></a></div>
<br />
<br />
I should probably do a video or something to explain more about the firmware features - there's a lot going on in this one. In short, it is 2-button MELD interface with the display showing mode, drive level, drive current, battery charge status, LED temperature, battery voltage, battery capacity remaining, and estimated runtime. While charging it shows charge status, voltage, and current. In peek mode it shows charge status, battery voltage, and a preview of the mode that will run if it is turned on.<br />
<br />
Thanks for readingEverett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com2tag:blogger.com,1999:blog-3895798887768426148.post-78157958783715325872020-03-01T18:09:00.004-08:002020-03-01T18:10:16.579-08:00Telemetry HeadlampNOTE: this is a repost of the thread I put on BudgetLightForum <a href="http://budgetlightforum.com/node/71895" target="_blank">here</a><br />
<br />
<br />
My Armytek Wizard now has a pretty unique feature for a headlamp - a packet radio to send wireless telemetry data:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/yQqCsD4jDjM/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/yQqCsD4jDjM?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
While doing long pre-dawn marathon training runs I found myself wanting runtime information from my headlamp so that I could maximize the light output for the duration that I would need it. In the past I've <a href="http://budgetlightforum.com/node/51125" target="_blank">added displays</a> <a href="http://budgetlightforum.com/node/67804" target="_blank">to lights</a> to do this, but that doesn't work on a headlamp that you can't look at while using it. That led me to build this modified Armytek Wizard that contains a small packet radio (NRF24L01+) with instrumentation (INA219) added to it so that I can remotely monitor power consumption, battery status, and predicted runtime.<br />
<br />
As a first step I disassembled the light and did some reverse engineering so I could take control of the driver. I had previously done this with an Elf C2 which used a very similar design so this step was pretty painless.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/hd2sMJQ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="490" height="640" src="https://i.imgur.com/hd2sMJQ.jpg" width="388" /></a></div>
<br />
Above is the result of my preferred method for doing this - I put a hi-res picture of the board on the computer and add annotations as I go. An interesting side note - these Armytek drivers are the only ones I've ever encountered that use a DAC output from the microcontroller to control the brightness. I am doing the same with my modified one using the PIC's internal 5-bit DAC, but I can double the range to 64 levels by turning the moon FET on or off.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/DgQQVhm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="480" src="https://i.imgur.com/DgQQVhm.jpg" width="640" /></a></div>
<br />
Next I removed the stock microcontroller and built up this development platform to get the firmware started. In the top right is an INA219 power monitor breakout from eBay, lower right is an NRF24L01+ board, and bottom left is a PIC18F26K40 on a custom breakout board. The INA219 measures both sides of a current sense resistor inserted between battery positive and the rest of the driver in order to monitor cell voltage and current. In order to get the sense resistor in, I temporarily removed the inductor and made this cut:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/t11nazf.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="300" src="https://i.imgur.com/t11nazf.jpg" width="400" /></a></div>
<br />
<br />
After getting the basic firmware implemented, it was time to make all the new hardware fit. Here's everything that's going inside the light - stock driver with uC removed, INA219, trimmed radio module (wire whip antenna instead of trace antenna) and a smaller version of my PIC microcontroller breakout:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/WXSkTMo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/WXSkTMo.jpg" width="240" /></a></div>
<br />
<br />
<br />
The first step was to mount and wire in the power monitor:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/CNXqNX3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="239" src="https://i.imgur.com/CNXqNX3.jpg" width="320" /></a></div>
<br />
In the above image you can see the current sense resistor standing on-edge to the left of the inductor, and in the center is the INA219 mounted dead-bug on top of another component.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/1o8OwmJ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="239" src="https://i.imgur.com/1o8OwmJ.jpg" width="320" /></a></div>
<br />
Next I glued my microcontroller board on top of the inductor and wired it in to power, the INA I2C connections, and the connections required to take control of the driver.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/KsFjb8h.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/KsFjb8h.jpg" width="320" /></a></div>
<br />
I wired up the radio as well. A few additional connections were also made to the driver board so that I can use the existing contacts on the bottom of the driver to allow reprogramming after the light is reassembled. You can see the details of this in the annotated driver pictures above.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/IliNGhe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/IliNGhe.jpg" width="320" /></a></div>
<br />
Then the LED, thermistor, and switch/indicator connections are made. I also insulated the radio with kapton.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/jRMLCvr.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/jRMLCvr.jpg" width="320" /></a></div>
<br />
The radio just barely fits in sitting at 45 degrees just behind the TIR optic. The antenna was wrapped around the optic as close to the window as possible since this is its only "view" out of the metal housing.<br />
<br />
<br />
<br />
With the light done I now needed a device to receive and display the data. I laid out all the components (OLED display, custom radio/microcontroller breakout board, shaker motor, lipo cell, charger and USB connector, and switches) and built up a housing around it in two pieces:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/3FtZKtW.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="468" data-original-width="461" height="320" src="https://i.imgur.com/3FtZKtW.png" width="315" /></a></div>
<br />
<br />
These were 3D-printed in ABS and I started assembling:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/UtNrOyJ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="600" height="320" src="https://i.imgur.com/UtNrOyJ.jpg" width="240" /></a></div>
<br />
<br />
And wiring:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/KWiEhIs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/KWiEhIs.jpg" width="320" /></a></div>
<br />
<br />
And after some programming and adding a wrist strap here is the result:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.imgur.com/oMCwmpD.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://i.imgur.com/oMCwmpD.jpg" width="320" /></a></div>
<br />
<br />
This control watch shows the two important data points (battery percentage and estimated remaining runtime) in large font, and above also shows the headlamp's brightness level, LED temperature, remaining milliamp-hours, instantaneous current draw, and battery voltage, as well as the battery voltage of the watch. These radios are already performing 2-way communication, so I considered adding the ability to adjust brightness from the watch, but after using it I decided this wasn't really useful. The watch is just a remote display that I can look at while using the other hand to adjust the light to make sure the brightness I pick will last the required time, and this accomplishes the goals I started with. Thanks for reading!<br />
<div>
<br /></div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-82948440236294975262016-01-04T12:26:00.000-08:002016-01-04T12:26:02.061-08:00Olight S1 reverse engineering and MELD install I finally got an S1 and tore it apart. To mod it to MELD RGBWUV I had to completely reverse engineer the stock driver - it's a great design. The video shows the process and results:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/WaqER7i6GqQ/0.jpg" src="https://www.youtube.com/embed/WaqER7i6GqQ?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com3tag:blogger.com,1999:blog-3895798887768426148.post-30344601572794321302015-07-31T14:49:00.000-07:002015-07-31T14:49:19.669-07:00MELD flashlight build videoI recently built up another <a href="https://www.youtube.com/watch?v=B09tLW9JaXI" target="_blank">MELD</a> light, this time a Solarstorm SC02. I've made these before as detailed in a BLF post <a href="http://budgetlightforum.com/node/33913" target="_blank">here</a>. This time I filmed the entire process and attempted to create an explanatory sped-up <a href="https://www.youtube.com/channel/UCiEk4xHBbz0hZNIBBpowdYQ" target="_blank">Diresta</a>-style video:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/bg5njtFVszA/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/bg5njtFVszA?feature=player_embedded" width="320"></iframe></div>
<br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com5tag:blogger.com,1999:blog-3895798887768426148.post-72110021549084679382015-06-19T14:21:00.001-07:002015-07-31T15:07:34.086-07:00Running the FF32 from Python in Windows environment<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-5kJ5FI89BC8/VYSCHChnq4I/AAAAAAAABmQ/F0B-s_Rxq_s/s1600/FF32.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="158" src="http://2.bp.blogspot.com/-5kJ5FI89BC8/VYSCHChnq4I/AAAAAAAABmQ/F0B-s_Rxq_s/s320/FF32.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
I recently discovered the <a href="http://www.flyfish-tech.com/FF32/index.php" target="_blank">Flyfish-tech FF32</a> device, which fulfills some functionality that I've wanted for a long time - easily interfacing programs on my Windows machine (Python scripts) with low-level communications (I2C, SPI, bit banging, ADC). This sort of thing can also be accomplished with FTDI chips but there's some extra go-betweens with the serial communcation, so I was very excited to find these parts. Unfortunately, the Python examples provided are meant to run under Linux, and it took me the better part of a day messing around with it to get it to operate under Windows. I'm writing this quick post as a guide for anyone else who might attempt this so they can avoid the same frustration. I've checked that this method works in Windows 7 and Windows 8 with Python 3.4.3 with the FF32 on firmware v0.5. I am a complete beginner with both Python and USB, so this may be obvious to others; it's written for the self-taught people like me who don't have a clue until they slog through hours of trial and error.<br />
<div>
<ol>
<li>Reinstall <a href="https://www.python.org/downloads/" target="_blank">Python</a> and check the box in the installer to add python.exe to the PATH variable. This is the only option in the installer that's not defaulted to yes, so I hadn't checked it the first time I installed. I'm sure there's an easier way of getting this added if you already have Python, but uninstalling and starting over was quick and easy (and makes sure you have an updated copy of Python).</li>
<li>Open the Windows command prompt (run cmd.exe) and type "python -m pip install pyusb" to install pyusb automatically. This was an adventure in itself for me just working out how to install Python modules...</li>
<li>Download <a href="http://sourceforge.net/p/libusb-win32/wiki/Home/" target="_blank">libusb-win32</a> to get a very useful utility called inf-wizard.exe, which shows up in the bin folder after extracting. </li>
<li>Plug in the FF32 and let Windows do its automatic installation stuff - it's a generic HID so it's quick and easy</li>
<li>Run inf-wizard <b>as administrator</b> (recent versions of Windows have become a real pain trying to save users from themselves...). Pick the FF32 from the list of devices. Write down the two hex values for Vendor ID and Product ID. Keep clicking through to create a .inf file and save it somewhere. On the last screen click Install Now. If it doesn't install successfully, you probably didn't run as administrator. </li>
<li>Use the Python examples from Flyfish as a <b>reference only</b> and don't even try to run them with Windows, they have to be entirely rewritten to work with pyusb. Sometime soon I'll get around to doing that and post them. </li>
<li>Write your script like this to get pyusb to work with the FF32. This is just a very quick example that I got working - there's lots to do to package the functions up nicely. Note the use of the Vendor and Product IDs that we wrote down earlier:</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ueg6eWXJWCo/VYSHMG9sp1I/AAAAAAAABmk/N-prw17zICM/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="http://4.bp.blogspot.com/-ueg6eWXJWCo/VYSHMG9sp1I/AAAAAAAABmk/N-prw17zICM/s320/Capture.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
EDIT 7/31/2015: here's my library and an example application: <a href="https://github.com/tterev3/ff32">https://github.com/tterev3/ff32</a></div>
<div>
<br /></div>
</div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-30593398791123065502015-06-14T12:43:00.000-07:002015-06-26T11:11:55.887-07:00Knock Box<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-MFxPiCMt-lM/VX3OLhEMRSI/AAAAAAAABlc/PVVJEZcqzVc/s1600/20150611_233903.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><span style="font-family: inherit;"><img border="0" height="180" src="http://3.bp.blogspot.com/-MFxPiCMt-lM/VX3OLhEMRSI/AAAAAAAABlc/PVVJEZcqzVc/s320/20150611_233903.jpg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">This project was an anniversary gift for my wife. The 5<sup>th</sup>
is traditionally a wood gift, so I had eventually settled on this concept of a
small wooden box, but it had to have something extra. I had been thinking about
secret locking mechanisms for a while and then decided that an automatic
opening would be better, especially if the box were designed so that it
couldn’t really be opened without activating the mechanism. I ordered some ¼”
pieces of walnut on eBay and then started working out the design while I waited
for them in the mail. </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="line-height: 115%;"><span style="font-family: inherit;">The first thing to work out was the actuator to
open it. I went through a lot of concepts – direct gear drive of the hinge
joint, rotary cam, cable reel and spring return – and found flaws with all of
them, finally settling on a crank arm mechanism. I have used these little gear motors
in a lot of previous projects so I had some lying around. I interfaced the
motor with a larger gear to get extra reduction and to get the long radius
needed while still making motor mounting easy. I went through a few iterations
of the motor and gear assembly until I got to one I liked. This is cut from
aluminum extrusion (actually a square tube I had, cut into an angle) and uses
#2-56 tapped holes to mount the large gear, the motor hold-down, and the limit
switch. The large gear has a nylon washer and a short aluminum bushing over the
screw so that it can turn easily.</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="line-height: 115%;"><span style="font-family: inherit;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><span style="line-height: 115%;"> </span><a href="http://1.bp.blogspot.com/-m-djzKAyyz0/VX3OBVcAY1I/AAAAAAAABks/iJIv6TtpOdc/s1600/20150607_131608.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-m-djzKAyyz0/VX3OBVcAY1I/AAAAAAAABks/iJIv6TtpOdc/s320/20150607_131608.jpg" width="180" /></a></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">I also started on the electronics, for which I planned to
use a PIC16F1824 and a HG7881 H-bridge (or maybe it’s L9110S, I’m getting these
from eBay so the sources aren’t exactly reputable). The PIC outputs two lines
to the H-bridge and gets two limit switch inputs, as well as the user input
(still undecided at this point in the project). I put together some basic code
to run the motor in one direction until one switch closes, and then go back
until the other one does. Everything was running but I was a bit concerned
about quiescent current drawn by the H-bridge during sleep, since this will
have to sit idle for many years on battery power. </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="line-height: 115%;"><span style="font-family: inherit;">Once I had that much together, I went forward
with the design of the box. I would have liked to use finger joints in the
corners but I’m seriously lacking in woodworking tools and experience, so the
corners are simply overlapped. I did the design in solidworks, which allowed me
to print out patterns for the cuts, but more importantly allowed me to work out
the mechanism measurements ahead of time. I modeled up the gear and motor
assembly and put them in place, then tweaked the length of the arm link and the
pivot location on the lid to get the right extents of lid motion. During this
process I had the great realization that with a properly designed mechanism, I
could run the motor in only one direction for both opening and closing and
ditch the H-bridge. This saves on both complexity and standby power. To accomplish
this, I tweaked the linkage design until the limits of lid motion were just
beyond where I wanted, and printed out a guide to set the lengths when I built
it. </span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-CILO5-P1aLk/VX3Nx5QPhAI/AAAAAAAABjs/K86fRh9RJ7w/s1600/20150603_102147.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://4.bp.blogspot.com/-CILO5-P1aLk/VX3Nx5QPhAI/AAAAAAAABjs/K86fRh9RJ7w/s320/20150603_102147.jpg" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzyPPS2osGTVtHZkoLuTVPhyeEU2GF4GfAaqcAmJSJz369oJZBodR5nAXW-aI495FB_kWahbS1mBNwKOBOAWw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></span></div>
<span style="font-family: inherit;"><br /></span>
<div class="MsoNormal">
<span style="font-family: inherit;">I also printed my patterns for all the wooden pieces. Once
the wood arrived in the mail, I cut them out and glued them to the walnut
pieces. </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-8M0vrOUFAIA/VX3Nw3rUD6I/AAAAAAAABjc/o_nWrwxYzoQ/s1600/20150603_173417.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://1.bp.blogspot.com/-8M0vrOUFAIA/VX3Nw3rUD6I/AAAAAAAABjc/o_nWrwxYzoQ/s320/20150603_173417.jpg" width="320" /></span></a></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">I actually ended up making a complete box (no mechanism) which I had to
reject because the wood got a bit too damaged by my handsaw and left nicks in
the finished product, but it was a good test of the design and of the finish I
planned to use (linseed oil). </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-9gwtflx7Uy0/VX3N5DhG0BI/AAAAAAAABkM/27SlUS-ehg0/s1600/20150604_083435.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://4.bp.blogspot.com/-9gwtflx7Uy0/VX3N5DhG0BI/AAAAAAAABkM/27SlUS-ehg0/s320/20150604_083435.jpg" style="cursor: move;" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">I started on the final version, switching to a hacksaw to make the cuts more gradually. </span><br />
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit; margin-left: 1em; margin-right: 1em;"><a href="http://2.bp.blogspot.com/-iMpeuLRT2BY/VX3NxKnXKTI/AAAAAAAABjg/aIYvztV9Akw/s1600/20150603_182430.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-iMpeuLRT2BY/VX3NxKnXKTI/AAAAAAAABjg/aIYvztV9Akw/s320/20150603_182430.jpg" width="180" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: inherit;">I then brought the edges up to final dimension on the belt sander. For external corners, I left some extra material so that they could be sanded flush after assembly. </span><br />
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit; margin-left: 1em; margin-right: 1em;"><a href="http://1.bp.blogspot.com/-rbO2nEgX1II/VX3N1MC1yOI/AAAAAAAABj0/rJc_03DnKJk/s1600/20150603_182949.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://1.bp.blogspot.com/-rbO2nEgX1II/VX3N1MC1yOI/AAAAAAAABj0/rJc_03DnKJk/s320/20150603_182949.jpg" width="320" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal">
<span style="font-family: inherit;">Following another lesson learned from the prototype box, I
glued this one up in two separate steps instead of all at once. I also needed
some time with the front panel off to debug the mechanism, so the first glue
step joined the bottom, sides, and back.</span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-7gzgnrGDFXw/VX3N8kh3cpI/AAAAAAAABkc/8XPcR6RO5Eg/s1600/20150604_230157.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://1.bp.blogspot.com/-7gzgnrGDFXw/VX3N8kh3cpI/AAAAAAAABkc/8XPcR6RO5Eg/s320/20150604_230157.jpg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal">
<span style="font-family: inherit;">The mechanism was finished off by adding the limit switch to
detect the open condition. It does this by contacting the protruding end of the
wire link that comes through the back side of the nylon gear. I then mounted
the mechanism inside with epoxy and two small wood screws. I then added a post
to hold the limit switch which detects the lid closing and glued that in. </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-lQEah93FArA/VX3OCBRKztI/AAAAAAAABk4/Jj7JcK8i1mE/s1600/20150608_215653.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="320" src="http://2.bp.blogspot.com/-lQEah93FArA/VX3OCBRKztI/AAAAAAAABk4/Jj7JcK8i1mE/s320/20150608_215653.jpg" width="180" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="line-height: 115%;"><span style="font-family: inherit;">From
here I moved on to completing the lid. As usual I continued to add complexity
in the middle of a project, and decided to try doing an inlay. To start this, I
sketched a heart shape and cut it out of a thin piece of cherry. I then clamped
that piece down on the center of the lid and carefully traced it with an x-acto
blade to make a score line. </span></span><br />
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-QFqw1yRKXr4/VX3N8bgZcRI/AAAAAAAABkU/DI6x2vYVdzI/s1600/20150604_230154.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="320" src="http://2.bp.blogspot.com/-QFqw1yRKXr4/VX3N8bgZcRI/AAAAAAAABkU/DI6x2vYVdzI/s320/20150604_230154.jpg" width="180" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="line-height: 115%;"><span style="font-family: inherit;">With
the inlay piece removed, I gradually cut on the score line to deepen the cut,
followed by angled cuts to remove a wedge of material around the edge of the
shape.</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-5qllsfylr_0/VX3N9o7jGnI/AAAAAAAABkk/XP8FDOF4DDQ/s1600/20150605_072049.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://2.bp.blogspot.com/-5qllsfylr_0/VX3N9o7jGnI/AAAAAAAABkk/XP8FDOF4DDQ/s320/20150605_072049.jpg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">Finally, I used a small chisel to scrape out the inside of
the shape and flatten the bottom of the pocket. The cherry inlay was then glued
in, with some saved walnut sawdust mixed into the glue in an attempt to match
the surrounding color at the glue joint. After the glue dried I sanded this
flush and the inlay was complete. </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-_xYvGRa6kVY/VX3OB_4v-OI/AAAAAAAABk0/3pdCkGJYLA8/s1600/20150606_144552.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="320" src="http://4.bp.blogspot.com/-_xYvGRa6kVY/VX3OB_4v-OI/AAAAAAAABk0/3pdCkGJYLA8/s320/20150606_144552.jpg" width="180" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="line-height: 115%;"><span style="font-family: inherit;">To
finish the lid, I drilled in the holes for the hinge pins, and added a
full-width fillet to the bottom edge in the back so the hinge could rotate. Finally,
the pivot for the wire link went on (a small brass tube held down by a block of
wood), as well as an extra block to prevent the wire slipping out of the tube
as it tended to do. The last step on the lid was to add two small holes hidden
in the back that give access to the ends of the hinge pins. This is so that
they can be popped out in case the mechanism or battery fails and get the box
open. </span></span><br />
<span style="line-height: 115%;"><span style="font-family: inherit;"><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-RpQlRUVpm3A/VX3OGpzNIfI/AAAAAAAABlE/efmYGs0P970/s1600/20150609_194225.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://2.bp.blogspot.com/-RpQlRUVpm3A/VX3OGpzNIfI/AAAAAAAABlE/efmYGs0P970/s320/20150609_194225.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<div class="MsoNormal">
<span style="font-family: inherit;">I could then complete the entire mechanism by bending the
wire link. This took a few tries to get perfect. The link is a complex part
that needs to contact the limit switch, pivot in a hole in the gear, bend out
to avoid colliding with the gear screw, and include a u-bend to serve as a
spring before finally making a 90-degree bend to go into the pivot on the lid.
The spring section is critical to allow the box to fully close: the linkage is
designed to pull the lid slightly below horizontal, at which point the u-bend
section opens up to put tension on the lid holding it firmly in place. It also
allows compliance in the case that something gets jammed so the mechanism won’t
destroy itself (the motor is geared down low enough that it has enough torque
to destroy the gear if it is completely stopped).</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: inherit;">During all this work I had been thinking about how to get
input from the user to trigger the mechanism. I wanted it to be fairly hidden,
so the options I thought of were: capacitive sense pad behind the wood (too
much standby power), wooden inlay-like button (too hard to make it look good),
or knock sensor. A knock sensor (using a piezo element) seemed like the only
reasonable option. I originally wanted it to be on the lid, as knocking on the
top of the box would be more natural to the user, but this left the problem of
how to tell it to close when the lid was up vertical. The compromise was to put
the knock sensor in the front panel and use that to trigger both opening and
closing. The sensor I used was just the piezo element removed from a buzzer, as
they can be used in reverse to convert compression into electrical signals. </span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<span style="font-family: inherit;">The first version of the front panel simply squeezed the
piezo element between the front panel and an inset brace piece behind it. The
brace had a small circle milled out so that it only contacted the inner section
of the piezo , and the inner section was planed down a bit to fit the thickness
of the piezo. I drilled holes to get the wires out and then glued these two
pieces together.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: inherit;">At
this point I finalized the firmware and could test everything with the complete
electrical system connected. It all worked, but it became clear that the knock
sensor was not nearly sensitive enough – I had to hit it quite hard to trigger,
and even then it was with the brace piece flat on the bench, not fixed at its
edges like it would be once mounted in the box. The concept I came up with to
fix it was to make a new front panel with a very large pocket milled out of it,
so that the majority of the area is very thin wood that can flex easily.</span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-MXxVbKTPkjU/VX3OIFo756I/AAAAAAAABlU/fsg3M59K5tg/s1600/20150611_212420.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://4.bp.blogspot.com/-MXxVbKTPkjU/VX3OIFo756I/AAAAAAAABlU/fsg3M59K5tg/s320/20150611_212420.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<div class="MsoNormal">
<span style="font-family: inherit;">This took a few attempts as I don’t have a mill or router,
and ultimately I had to do most of the work with a chisel. The brace piece goes
against this as before, but now there needed to be an extra pedestal piece to
raise the piezo element up to meet the front panel. This new arrangement worked
perfectly to detect knocks, and has an additional advantage that I realized too
late to use in this project but could do if I ever build another: there’s a
large hollow cavity inside the front panel which could be used to hide all the
electronics.</span></div>
<div class="MsoNormal">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: inherit;">With
the knock sensor all working and the front panel completed, I wired up the
microcontroller (dead bug style on top of the aluminum motor mount) and did a
final system test before gluing the front panel in place.</span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-BOUIxQM6QSA/VX3OHYeaBYI/AAAAAAAABlM/SHE6_D7nQLQ/s1600/20150611_220441.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://3.bp.blogspot.com/-BOUIxQM6QSA/VX3OHYeaBYI/AAAAAAAABlM/SHE6_D7nQLQ/s320/20150611_220441.jpg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: inherit;">At this point I hadn’t fully planned where to mount the
battery holder, but I got really lucky and discovered that it could sit
perfectly on top of the flat aluminum piece that clamps the motor down, and use
one of the motor clamp screws to hold it in place. Finally I glued in a small
piece of wood to divide the box so that the mechanism is kept separate from the
usable area. </span></div>
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-mzfjWIYGQXs/VX3OMYZ5ZwI/AAAAAAAABlk/xvzm-XpUovg/s1600/20150612_171848.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://2.bp.blogspot.com/-mzfjWIYGQXs/VX3OMYZ5ZwI/AAAAAAAABlk/xvzm-XpUovg/s320/20150612_171848.jpg" width="320" /></span></a></div>
<span style="font-family: inherit;"><br /></span>
<span style="line-height: 115%;"><span style="font-family: inherit;">After
some tweaking of the lid fit to get the mechanism to run smoothly, I did the
final sanding. This started on the belt sander to get all the pieces flush, and
then finished by hand on increasing grits of sandpaper. The linseed oil finish
was then applied to all outside surfaces and allowed to dry. After cleaning it
up I also lined the bottom of the pocket with a piece of felt. Once it was all
done, I did some final checks of standby current, motor run current, and a
check of the voltage drop after a few days of standby. And it’s done!</span></span><br />
<span style="line-height: 115%;"><span style="font-family: inherit;"><br /></span></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/--fV_s-K5Jz8/VX3ONd885AI/AAAAAAAABls/QHSJd4d_z10/s1600/20150612_171856.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="180" src="http://1.bp.blogspot.com/--fV_s-K5Jz8/VX3ONd885AI/AAAAAAAABls/QHSJd4d_z10/s320/20150612_171856.jpg" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: inherit;">Here's a demo:</span></div>
<div style="text-align: center;">
<span style="font-family: inherit;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dy_OZsvV5DZ7fT8V75v2FNkyo87EHqO3Bzw1S-9-3S-6s3XodeH61IR3HivVrra2xgeH22B7-5w9yOqmEcGzg' class='b-hbp-video b-uploaded' frameborder='0'></iframe></span></div>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">And here's a full Youtube video of the project:</span><br />
<span style="font-family: inherit;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/i4Dfb_OHUJs/0.jpg" src="https://www.youtube.com/embed/i4Dfb_OHUJs?feature=player_embedded" frameborder="0" allowfullscreen></iframe></span></div>
<span style="font-family: inherit;"><br /></span>
<br />
<div>
<br /></div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-70343224387323305302014-08-31T10:15:00.000-07:002014-09-01T11:38:21.398-07:00Olight S20 clone with MELD<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-X4_sG_2nC7Y/VANQEcn66mI/AAAAAAAABb4/0vokhiivnxo/s1600/20140831_122513.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-X4_sG_2nC7Y/VANQEcn66mI/AAAAAAAABb4/0vokhiivnxo/s1600/20140831_122513.jpg" height="180" width="320" /></a></div>
<br />
I wanted to try putting MELD into an 18650 light, so I looked around and found this: the <a href="http://www.fasttech.com/products/0/10005040/1669500-solarstorm-sc02-1-cree-xm-l2-t6-3-mode-580lm-cool" target="_blank">Solarstorm SC02</a>, which is a clone of the Olight S20. It's a pretty good buy at $15, better machining than I expected at that price. The firmware is awful, as is the norm, so I promptly gutted it:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-s9R6MqTfuCA/VANOoe953KI/AAAAAAAABbs/i4fSdxChN-Y/s1600/20140831_093809.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-s9R6MqTfuCA/VANOoe953KI/AAAAAAAABbs/i4fSdxChN-Y/s1600/20140831_093809.jpg" height="180" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-TaF3053rOZM/VANNuG_k2MI/AAAAAAAABas/lYXAmjv9B8Q/s1600/20140828_165834.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-TaF3053rOZM/VANNuG_k2MI/AAAAAAAABas/lYXAmjv9B8Q/s1600/20140828_165834.jpg" height="180" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
I kept the original PCB and stripped off all components except the tantalum input capacitor. This build wouldn't make sense to use MELD hardware in since it will never run on a primary cell, and it should have a higher current on white than the 1.5A that MELD3 is capable of. This one would be run only on secondary cells so I used linear regulators controlled by a PIC16F1825 running the linear version of MELD 2.13 firmware.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-J1ohgz4ylCM/VANNmQ5HU8I/AAAAAAAABak/Z9IHLBEe_C4/s1600/20140828_165904.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-J1ohgz4ylCM/VANNmQ5HU8I/AAAAAAAABak/Z9IHLBEe_C4/s1600/20140828_165904.jpg" height="180" width="320" /></a></div>
The LED board was made using the two-layer method I came up with on my <a href="http://tterev3.blogspot.com/2014/06/blackshadow-flashlight-mod.html" target="_blank">Blackshadow mod</a>, so that the white XP-L gets better thermal performance.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-lLr65USNb6g/VANNuvrjafI/AAAAAAAABaw/nchVMWuc-3c/s1600/20140828_173214.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-lLr65USNb6g/VANNuvrjafI/AAAAAAAABaw/nchVMWuc-3c/s1600/20140828_173214.jpg" height="180" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
I glued the PIC upside-down onto the stripped PCB and started wiring. The PIC needs 7 connections: 4 outputs, power, ground, and the switch input.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-lsmFBG2huIo/VANN_GFyPbI/AAAAAAAABa8/AthjTX9_dFc/s1600/20140828_180538.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-lsmFBG2huIo/VANN_GFyPbI/AAAAAAAABa8/AthjTX9_dFc/s1600/20140828_180538.jpg" height="180" width="320" /></a></div>
I then started stacking up the AMC7135 regulators. Here's the four that run the color components. They have a pair of wires that ground them together, and individual output wires that will run up to the LEDs.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-YBrEROWMOC0/VANOJox7N1I/AAAAAAAABbM/x41QEzpFW8Y/s1600/20140829_182635.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-YBrEROWMOC0/VANOJox7N1I/AAAAAAAABbM/x41QEzpFW8Y/s1600/20140829_182635.jpg" height="180" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
After those 4 were wired to the PIC, I started on the 6 that will be paralleled to run the white emitter (at 2.1 amps). I made them in two groups of 3 to share the current load between two sets of wires, and to make them physically more flexible for when everything has to be fit into the pill.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-iecW6yCHexo/VANOH7vOLFI/AAAAAAAABbE/7YCcnPl6s9c/s1600/20140829_183225.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-iecW6yCHexo/VANOH7vOLFI/AAAAAAAABbE/7YCcnPl6s9c/s1600/20140829_183225.jpg" height="180" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Here are all the regulators wired up, insulated with kapton, and the wiring bundled into two groups to pass through the holes.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-lNqO-XgpV2g/VANOY_zGzqI/AAAAAAAABbU/M8vOgneyO6k/s1600/20140829_183847.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-lNqO-XgpV2g/VANOY_zGzqI/AAAAAAAABbU/M8vOgneyO6k/s1600/20140829_183847.jpg" height="320" width="180" /></a></div>
The driver fit fine, but I was just about at the limit of how much could be fit into the cavity. Here's the LED board going on, with thermal grease under it.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kehZlUjO7D4/VANOjiEkmvI/AAAAAAAABbk/qGkzBz8OrbY/s1600/20140829_185525.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-kehZlUjO7D4/VANOjiEkmvI/AAAAAAAABbk/qGkzBz8OrbY/s1600/20140829_185525.jpg" height="180" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
And here's the result of wiring in the individual LEDs.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-UhlyLj-gZXY/VANOifspHtI/AAAAAAAABbc/vCZK-NiIeyQ/s1600/20140831_093516.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-UhlyLj-gZXY/VANOifspHtI/AAAAAAAABbc/vCZK-NiIeyQ/s1600/20140831_093516.jpg" height="180" width="320" /></a></div>
To get the spacing just right, I cut the original plastic insulator so it had room for the extra LEDs, and then used it under the reflector.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-s9R6MqTfuCA/VANOoe953KI/AAAAAAAABbs/i4fSdxChN-Y/s1600/20140831_093809.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-s9R6MqTfuCA/VANOoe953KI/AAAAAAAABbs/i4fSdxChN-Y/s1600/20140831_093809.jpg" height="180" width="320" /></a></div>
Finished product!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Here's a video that goes over the latest firmare:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/B09tLW9JaXI?feature=player_embedded' frameborder='0'></iframe></div>
And here's the config menu:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/ExLRj6Zoccg?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<span id="goog_668779056"></span><span id="goog_668779057"></span><br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com0tag:blogger.com,1999:blog-3895798887768426148.post-24016325949368361112014-08-02T11:18:00.004-07:002014-08-02T11:30:24.805-07:00MELDv3 in Fenix HL50 & Sunwayman C10R<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-F1yAmOHX30c/U90n9ZN2RvI/AAAAAAAABRE/3DWOrmGshGQ/s1600/20140716_193110.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-F1yAmOHX30c/U90n9ZN2RvI/AAAAAAAABRE/3DWOrmGshGQ/s1600/20140716_193110.jpg" height="180" width="320" /></a></div>
<br />
MELDv3 boards came in! This version brings big improvements to the SEPIC converter on the white channel, mostly in the area of thermal performance. It also makes an electrical change that allows the SEPIC to run well at much lower battery levels if the light is running on primary cells.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-V93yOde_L3Q/U90oWxV4C5I/AAAAAAAABRU/9f281j8orLE/s1600/20140707_182805.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-V93yOde_L3Q/U90oWxV4C5I/AAAAAAAABRU/9f281j8orLE/s1600/20140707_182805.jpg" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-j7b_ZprlMns/U90oTT2ZQMI/AAAAAAAABRM/-lMLdoQynAU/s1600/20140707_182817.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-j7b_ZprlMns/U90oTT2ZQMI/AAAAAAAABRM/-lMLdoQynAU/s1600/20140707_182817.jpg" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
The inductors are much bigger to better handle high current, so to avoid increasing the stack height I rearranged the daughter board so that they are both on the top side.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZAAYCZmxiLc/U90ohXCfo8I/AAAAAAAABRc/JwA7RsnGqCU/s1600/20140713_120029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ZAAYCZmxiLc/U90ohXCfo8I/AAAAAAAABRc/JwA7RsnGqCU/s1600/20140713_120029.jpg" height="180" width="320" /></a></div>
<br />
I did two projects right away with the new boards, one of which is to upgrade my new Fenix HL50 headlamp. I was very excited when this headlamp was released because single-CR123 headlamps are rare and I don't like any other battery setups, but of course the UI is terrible and needed an upgrade.<br />
<br />
As soon as I got it, I opened it up to see how much room there was. The construction is pretty good. Here you can see the stock driver with a daughter board that sits vertically:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-RqKYlvzK4Ns/U90oq3MFeXI/AAAAAAAABRk/A6E3A8bVcQM/s1600/20140716_143112.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-RqKYlvzK4Ns/U90oq3MFeXI/AAAAAAAABRk/A6E3A8bVcQM/s1600/20140716_143112.jpg" height="180" width="320" /></a></div>
<br />
I was able to fit MELDv3 by removing the inductors and free wiring them up in the vertical space.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-W0jp_mY0MVc/U90o8eam5tI/AAAAAAAABR0/qAYyL3DXrjk/s1600/20140716_184630.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-W0jp_mY0MVc/U90o8eam5tI/AAAAAAAABR0/qAYyL3DXrjk/s1600/20140716_184630.jpg" height="180" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-LZQMFcHii9c/U90o-mgVNVI/AAAAAAAABR8/AnZIVr3IjDk/s1600/20140716_190021.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-LZQMFcHii9c/U90o-mgVNVI/AAAAAAAABR8/AnZIVr3IjDk/s1600/20140716_190021.jpg" height="180" width="320" /></a></div>
<br />
My standard MELD LED board with XB-H and XQ parts fit with one edge filed down. I also had to drill out the reflector slightly to get it around the LEDs. Here's the LED board installed and wired up:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-qm2iOYZ38Xs/U90o5Ape4QI/AAAAAAAABRs/zEaCzuc8_Gk/s1600/20140716_190017.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-qm2iOYZ38Xs/U90o5Ape4QI/AAAAAAAABRs/zEaCzuc8_Gk/s1600/20140716_190017.jpg" height="180" width="320" /></a></div>
<br />
And the finished result, the perfect headlamp:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-OhQmkvg-is0/U90rWqLb2BI/AAAAAAAABSI/P3leMaS5pME/s1600/20140716_193049.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-OhQmkvg-is0/U90rWqLb2BI/AAAAAAAABSI/P3leMaS5pME/s1600/20140716_193049.jpg" height="180" width="320" /></a></div>
<br />
And here's the second project with MELDv3, a Sunwayman C10R. I really like the construction on the C10R. It has a nice big reflector so I was able to fit an XP-size LED board in it with an XP-L as the white emitter. MELDv3 went in pretty easily by epoxying a momentary switch onto the main board:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-qVK9PRhr7L8/U90tPaR03wI/AAAAAAAABSU/WNwuM-VLw0w/s1600/20140713_122254.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-qVK9PRhr7L8/U90tPaR03wI/AAAAAAAABSU/WNwuM-VLw0w/s1600/20140713_122254.jpg" height="180" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here it is with wires attached, going into the head of the light. Not shown here is a grounding ring needed to make contact with the body (this difficult grounding is my only complaint about the design of the C10R). Also shown is the MELD XP LED board with all LEDs installed and notches cut to fit the wires:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-FHbGt70LKHI/U90tqb3LUxI/AAAAAAAABSc/xzmemSLsHr8/s1600/20140713_125339.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-FHbGt70LKHI/U90tqb3LUxI/AAAAAAAABSc/xzmemSLsHr8/s1600/20140713_125339.jpg" height="180" width="320" /></a></div>
<br />
And all wired up:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ma7oq38knv8/U90tqXhwnMI/AAAAAAAABSg/rHMeZ7wzJsk/s1600/20140713_131703.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ma7oq38knv8/U90tqXhwnMI/AAAAAAAABSg/rHMeZ7wzJsk/s1600/20140713_131703.jpg" height="180" width="320" /></a></div>
<br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com0tag:blogger.com,1999:blog-3895798887768426148.post-11593028864447346042014-08-02T10:35:00.000-07:002014-08-02T10:35:14.618-07:00Nitecore EX11 with MELD.EX<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-bxExNzG7bKw/U90ZRM96VoI/AAAAAAAABPc/uvVFRJpdE7Y/s1600/20140706_182940.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-bxExNzG7bKw/U90ZRM96VoI/AAAAAAAABPc/uvVFRJpdE7Y/s1600/20140706_182940.jpg" height="297" width="320" /></a></div>
<br />
<br />
In continuing my trend of putting RGBWUV and my MELD UI in every light possible, I got a hold of the discontinued Nitecore EX11, which uses piston drive (which I love and <a href="http://tterev3.blogspot.com/2012/10/ultimate-flashlight-code.html" target="_blank">have worked with before</a>). I wanted to fit the full MELD2 driver into it, but there is just not enough room in the pill with the piston drive mechanism. I ended up designing a custom <a href="https://oshpark.com/shared_projects/BKIC28dj" target="_blank">board</a> <a href="https://oshpark.com/shared_projects/eCK7Sip2" target="_blank">stack</a> that gets rid of all the inductive converters and just uses AMC7135 regulators (1 per color channel, 3 for white). This means the light is restricted to rechargeable cells, unfortunately.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-IrL3Tm4gkf0/U90abw966lI/AAAAAAAABPk/xK-tfaeFAkI/s1600/20140706_092006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-IrL3Tm4gkf0/U90abw966lI/AAAAAAAABPk/xK-tfaeFAkI/s1600/20140706_092006.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The daughter board actually came so close to the wall of the pill that I had to notch it out to pass wires through from the main board. The entire thing is run by the same PIC16F1825 as regular MELD boards, and it runs the same firmware (with a compile option for linear lights, which makes a few slight changes).</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-hKrfA7_K1Js/U90adjn5q6I/AAAAAAAABPw/rmBbtIxF6DM/s1600/20140706_100108.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-hKrfA7_K1Js/U90adjn5q6I/AAAAAAAABPw/rmBbtIxF6DM/s1600/20140706_100108.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's the schematic for the main board:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Lu3odeciy60/U90b8nUNtLI/AAAAAAAABQw/gsvZrLwWY08/s1600/main-sch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Lu3odeciy60/U90b8nUNtLI/AAAAAAAABQw/gsvZrLwWY08/s1600/main-sch.png" height="320" width="265" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
And the daughter:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-2ewB903sZAk/U90b8bp3G4I/AAAAAAAABQs/zU7DQjjix9k/s1600/daughter-sch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-2ewB903sZAk/U90b8bp3G4I/AAAAAAAABQs/zU7DQjjix9k/s1600/daughter-sch.png" height="175" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Four connections go between main and daughter board. The main board has the positive battery contact and the contact ring for the piston. Since my total available height was very small, I intentionally aligned the regulator on the bottom of the daughter to sit above the PIC, which is shorter than the regulators on the main board. This lets them stack together into a pretty short assembly:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-k9zwruuhixw/U90adqXiqdI/AAAAAAAABP0/UCEW5fPqmxw/s1600/20140706_102624.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-k9zwruuhixw/U90adqXiqdI/AAAAAAAABP0/UCEW5fPqmxw/s1600/20140706_102624.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's the pill completed, and an XML color wired up for electrical test:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-DgfBS4fqsq4/U90anJXGwPI/AAAAAAAABQA/jnUMEiqMO3c/s1600/20140706_114826.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-DgfBS4fqsq4/U90anJXGwPI/AAAAAAAABQA/jnUMEiqMO3c/s1600/20140706_114826.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The other challenge with this light is that the reflector opening wasn't big enough to fit a MELD LED board. I didn't want to ruin it by drilling it out, so I went back to a crazy technique I've used before of mounting the color LEDs around the reflector in individual holes. This process started with wiring them up in mid-air:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xO_vhmVYPe8/U90arIL3fXI/AAAAAAAABQI/eCVwfETJqWM/s1600/20140706_165522.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xO_vhmVYPe8/U90arIL3fXI/AAAAAAAABQI/eCVwfETJqWM/s1600/20140706_165522.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I then drilled four holes evenly spaced around the reflector, about midway up. Then to reduce the depth to get the LEDs farther out, I filed down around the holes until the wall was about a millimeter thick. I carefully arranged the LEDs and the wires to get the LEDs centered in the holes, and glued them down with thermal epoxy. This was a painstaking process because I had to hold the LEDs in place while the epoxy cured, and I had to do it four separate times so that the epoxy was facing up and wouldn't drip down. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-CjNZHFEyY1U/U90argBeLII/AAAAAAAABQQ/-oA0fPMsi94/s1600/20140706_182109.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-CjNZHFEyY1U/U90argBeLII/AAAAAAAABQQ/-oA0fPMsi94/s1600/20140706_182109.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's the result:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-su4NER76mL0/U90aw2ByxaI/AAAAAAAABQc/dhwEYNlQlg8/s1600/20140706_182643.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-su4NER76mL0/U90aw2ByxaI/AAAAAAAABQc/dhwEYNlQlg8/s1600/20140706_182643.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
And the back of the driver:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-RrJQ88P1TBc/U90ayEUnfTI/AAAAAAAABQY/LIfYBf1K46o/s1600/20140706_182813.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-RrJQ88P1TBc/U90ayEUnfTI/AAAAAAAABQY/LIfYBf1K46o/s1600/20140706_182813.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
It all turned out great, although the color beam patterns are terrible, as expected. The white beam is perfect, and isn't noticeably affected by the color emitters. </div>
<br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com0tag:blogger.com,1999:blog-3895798887768426148.post-42585538859051428542014-06-19T15:45:00.001-07:002014-06-19T15:45:21.023-07:00Blackshadow flashlight mod<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-svjK-HheHk8/U6NiZWMrabI/AAAAAAAABOA/It5WP622qkA/s1600/20140619_181857_HDR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-svjK-HheHk8/U6NiZWMrabI/AAAAAAAABOA/It5WP622qkA/s1600/20140619_181857_HDR.jpg" height="240" width="320" /></a></div>
<br />
Now that my MELD drivers are up and running, I've decided it's unacceptable to have anything less than full functionality on every light, so I've been going through and modding everything to have RGBWUV. The Blackshadow Queen is one of my favorite hosts for its size/form factor and the reflector that throws better than anything else in my collection.<br />
<div>
<br /></div>
<div>
This mod uses MELD firmware so the UI matches my other lights, but because it runs on rechargeable cells only I used linear regulators instead of the full MELD driver. This also allows me to run much higher current on the white LED. </div>
<div>
<br />
To fit all the LEDs in the reflector aperture, I have my <a href="https://oshpark.com/shared_projects/4tMsLxi9" target="_blank">MELD LED boards</a>, including this <a href="https://oshpark.com/shared_projects/JAd9pidN" target="_blank">XP variant</a>. They are FR4 though, so it wasn't going to have good enough thermal conductivity for my main emitter. To solve this, I came up with this PCB sandwich arrangement. </div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-vteMVAckdy8/U6NeCaTOxUI/AAAAAAAABMQ/Cj6Lc1e2RrY/s1600/20140609_122551.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-vteMVAckdy8/U6NeCaTOxUI/AAAAAAAABMQ/Cj6Lc1e2RrY/s1600/20140609_122551.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The first step was to slice the PCB to make it thinner. The epoxy that holds the fiberglass layers together weakens when it's hot, so I set up the heat gun to get this bare PCB really hot and then sliced the top layer off with a blade. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-CvMCprhdgiI/U6NeDzOOXsI/AAAAAAAABMc/RaAFsMb7XHc/s1600/20140609_124735.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-CvMCprhdgiI/U6NeDzOOXsI/AAAAAAAABMc/RaAFsMb7XHc/s1600/20140609_124735.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Next I cut out the space for the white XP-sized part until it fit perfectly over an XP-L. After the hole was cut, I reflowed the red, green, blue, and UV emitters on to their pads. </div>
<div class="" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-qpjWbdWeqgU/U6NeOrJAWMI/AAAAAAAABMw/BEuhcJiJiac/s1600/20140610_122541.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-qpjWbdWeqgU/U6NeOrJAWMI/AAAAAAAABMw/BEuhcJiJiac/s1600/20140610_122541.jpg" height="240" width="320" /></a></div>
<br />
I then reflowed an XP-L onto a star (this happened to be a weird star that included spots for other components, I only chose it because I wanted a thicker-than-standard star). The thin PCB holding the colors was then epoxied down around the XP-L using Arctic Silver. This picture is during the electrical test after epoxy.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-sMXJF5DY6nU/U6NeDAaXwhI/AAAAAAAABMU/PqzSanJFq8I/s1600/20140609_125633.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-sMXJF5DY6nU/U6NeDAaXwhI/AAAAAAAABMU/PqzSanJFq8I/s1600/20140609_125633.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
On to the host: I disassembled everything, including punching the brass ring out and separating it from the stock driver. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VnTO3eqA0PI/U6NeJ9-8uNI/AAAAAAAABMo/pPE4t-FMzKo/s1600/20140609_130453.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-VnTO3eqA0PI/U6NeJ9-8uNI/AAAAAAAABMo/pPE4t-FMzKo/s1600/20140609_130453.jpg" height="240" width="320" /></a></div>
<br />
I reuse the the daughter board that holds 6 AMC7135 regulators for my white LED. For connections and mechanics, I reuse the main PCB, but all the components need to be stripped off first. The only one I left was the tantalum input capacitor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-8pdvPQR6HWo/U6NeO4HS75I/AAAAAAAABM0/TpdrMdVCSBE/s1600/20140610_124026.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-8pdvPQR6HWo/U6NeO4HS75I/AAAAAAAABM0/TpdrMdVCSBE/s1600/20140610_124026.jpg" height="240" width="320" /></a></div>
<br />
I wired up the LED board using 30AWG for colors and 24AWG for the white. All the solder connections need to be made as low-profile as possible, and then they are covered in kapton tape to prevent shorting against the reflector.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-sYU3HrLPqlc/U6NeSs1rl4I/AAAAAAAABNA/H6UlDMIaJQY/s1600/20140610_124756.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-sYU3HrLPqlc/U6NeSs1rl4I/AAAAAAAABNA/H6UlDMIaJQY/s1600/20140610_124756.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I then put the LED board into the head using thermal grease. There's enough trimmed off of the star to allow it to move around a bit to get perfect centering. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-4fJ0S33IpHE/U6NeaeYEZuI/AAAAAAAABNQ/Ji7DX8G-fiQ/s1600/20140610_125733.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-4fJ0S33IpHE/U6NeaeYEZuI/AAAAAAAABNQ/Ji7DX8G-fiQ/s1600/20140610_125733.jpg" height="240" width="320" /></a></div>
<br />
Here's what it looks like after the reflector and lens are assembled. It was a bit tough to center--I had to push on the back of the star through one of the wiring holes to hold it in place as I tightened down the reflector. After a few attempts I hit the center.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-0ev9oa514VU/U6NeYo9uiSI/AAAAAAAABNI/L_kynK9yhhA/s1600/20140610_184510.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-0ev9oa514VU/U6NeYo9uiSI/AAAAAAAABNI/L_kynK9yhhA/s1600/20140610_184510.jpg" height="240" width="320" /></a></div>
<br />
On to the driver. The board in the center of this picture is cut out of a PCB I salvaged from the scrap bin--the only thing it holds is the microcontroller (PIC16F1825) and a decoupling capacitor. The only reason I used it was to save me from making connections directly to the QFN-16 part. Ideally I'd use a SOIC part for this, but I didn't have any on hand at the time. The part on the right side is a 6-pin 50mil pitch female connector, which is used for programming and so is connected to the ICSP points on the microcontroller.<br />
<br />
The stock daughter board holds 6 regulators and is used to drive the white LED. Branching off of that I have 4 more AMC7135s for each of the colors, wired independently. These are wired free-form, but they have their grounds soldered to a fairly thick ground wire which keeps them mechanically stable.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Lxy7Ud2Rj9A/U6NecuVFwpI/AAAAAAAABNY/LAN5rB0XNfM/s1600/20140611_095804.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Lxy7Ud2Rj9A/U6NecuVFwpI/AAAAAAAABNY/LAN5rB0XNfM/s1600/20140611_095804.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
At this point I programmed the microcontroller so I could do full hardware tests as soon as the LEDs were wired. This required a simple harness to adapt the 1x5 0.1 header on the PICkit3 to the 2x3 0.05 header in the driver. The female connector is epoxied flush in a hole cut into the main PCB.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-iIpWb_EAAUE/U6Nej7Ai4EI/AAAAAAAABNk/oTFLDd6YHQk/s1600/20140611_121242.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-iIpWb_EAAUE/U6Nej7Ai4EI/AAAAAAAABNk/oTFLDd6YHQk/s1600/20140611_121242.jpg" height="320" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's a picture of all the electronics wired up, undergoing final electrical test. Before I stuffed everything into the cavity, I wrapped all the exposed parts in kapton tape to prevent shorts.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-kTsaItjpha0/U6NejpZnGPI/AAAAAAAABNg/BaQCras_FM8/s1600/20140611_123003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-kTsaItjpha0/U6NejpZnGPI/AAAAAAAABNg/BaQCras_FM8/s1600/20140611_123003.jpg" height="320" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's what the head looks like after the board is pressed in. The programming connector came out pretty clean, and it does't interfere with the batteries since they only contact the outer ring.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /><a href="http://4.bp.blogspot.com/-SmzBK_DxFJY/U6NelTvQRiI/AAAAAAAABNw/4B9wuArJVAA/s1600/20140617_090832.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-SmzBK_DxFJY/U6NelTvQRiI/AAAAAAAABNw/4B9wuArJVAA/s1600/20140617_090832.jpg" height="320" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Here's a final shot of all the emitters turned on at minimum. The UV isn't on; it appears green because of a neat refraction effect in the XP-L dome. This light runs the same firmware as my MELD2 drivers, but with a few options that optimize it for linear drivers. There's a full video and description of the user interface in my post about the most recent <a href="http://tterev3.blogspot.com/2014/06/meld-firmware-update.html" target="_blank">MELD firmware update</a></div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com2tag:blogger.com,1999:blog-3895798887768426148.post-1344978262101455092014-06-18T19:32:00.001-07:002014-06-18T19:39:41.813-07:00MELD firmware updateHere's a video demonstrating version 2.9 of my MELD flashlight software. A lot of improvements and features were added since the last video I put up. Below is a complete description of the UI and features.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/tq20wc7H5zs?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-6CCz7DVHy-s/U6JNYK0XCeI/AAAAAAAABMA/Jnt8DcNysws/s1600/20140618_221125.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-6CCz7DVHy-s/U6JNYK0XCeI/AAAAAAAABMA/Jnt8DcNysws/s1600/20140618_221125.jpg" height="240" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->All modes:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Turn
on and off by short click<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Mode
memory in all cases (restore last mode after turning off and on)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Ramping
by holding switch while on<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Ramping
reverses direction when initiated if it has been less than 3 seconds since the
last ramp<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Smart
momentary from off (short click latches on, long press is momentary)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Shortcut
to primary level from on by double click<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
UV is enabled, a repeated double click will shortcut to UV. From UV, a double
click will go back to primary<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->In
UV mode, press and hold will make the UV strobe while held. May help to make
fluorescing objects stand out<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Shortcut
to max by click-press<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
level is currently max, shortcut to min instead<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
primary level is set to max, shortcut to min instead<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
held down for an extended time after click press, only do momentary maximum
(restore previous brightness (or strobe/color mode) once switch is released)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Available
from off as well (double click from off to latch on in max, click press from
off to go to max in momentary mode)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
inactivity timer is enabled, jump to a low white level after 15 minutes of
inactivity<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Any
press while in the timeout state restores the previous state<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Works
from any mode (including colors and strobes) except the two red safety flashers,
the three color beacons, and any white strobes slower than 4Hz (since these
modes are likely to be used long-term without user interaction)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->State
of light is stored in EEPROM and restored upon power up, enabling use in lights
that have both a momentary switch and a power switch<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->White mode:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Ramping
adjusts brightness on logarithmic profile<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
dim to red is enabled, minimum level is replaced by dim red<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Ramping
pauses on min and max before reversing<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Strobe mode:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Accessed
by triple click<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Ramping
adjusts strobe speed continuously, ranging from 0.25-60Hz<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Triple
click while in strobe is a shortcut to stunner mode<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Color mode:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Accessed
by click-click-press<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Continuous
color mix:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Ramping
gradually fades between colors so that any color on the spectrum can be chosen<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Pauses
on solid red, green, and blue to help select them<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Low
red: low brightness solid red output. Only available if dim to red is disabled<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Stunner:
randomized strobe that uses all colors<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Auto
fade: continuously fades through all possible color mixes<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Flasher:
triple-blink safety flasher using red<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Flasher
2: higher-visibility safety flasher pattern using red<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Red
flash, green flash, blue flash: simple 0.5Hz beacons in three colors<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Police:
alternating blue and white to mimic police lights<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Fire:
simulates flickering firelight by calculating randomized output levels for a
mix of red, green, and white<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->All
low: turns on all four colors at minimum brightness so the LED can be observed
directly<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Lava
lamp: a smooth-fading randomized output mode that provides interesting
background lighting<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Lightning:
simulates lightning strikes using a mix of blue and white, with randomized time
between strikes and randomized duration and brightness of strikes<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Flourish mode:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->A
special color mode not included in the normal set<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Activated
by entering the color command (click-click-press) while already in a color mode<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Performs
a fun-looking sweep through colors that lasts about 2 seconds and returns to
standby<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Light
is stuck in this mode once activated, exited by double click or click-press
(shortcuts to white modes)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Configuration menu:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Accessed
by quadruple-click <o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Set
up options for light behavior. Click to cycle to next option, hold switch until
green LED flashes to activate item<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
all items are cycled through, the menu exits and returns to normal without
taking any action<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
1: beacon<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by single short red blink<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Enables
or disables the locator beacon (flashes red every 4 seconds while in standby to
help find the light in the dark)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
2: tactical<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by single long blink<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->When
activated, puts light into a momentary-only mode using whatever output
(including strobes and color) was active before entering the config menu<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Can
only be disabled by power cycling the light<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
3: lockout<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by quick fade from bright to dim<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->When
activated, the next time the light is turned off, it will be locked out. The
light can then only be turned on by triple-clicking the switch. <o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Used
to avoid accidental activation when the light is not in use but may have the
switch bumped inadvertently <o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
4: auto dim<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by white med > white low if currently disabled<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by white low > white med if currently enabled (the light is showing what
will happen if the menu item is activated—getting dimmer if you are about to
turn on the feature, getting brighter if you are about to turn it off)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
enabled, the light will drop to a low white level after 15 minutes of
inactivity<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
5: set primary<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by quick double blink on white (looks like the double click associated with the
primary level)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->When
activated, the primary level is changed to the brightness level that was active
before entering the config menu<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Primary
level is stored in EEPROM permanently until changed in config menu again<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Primary
can only be set to a white brightness, not color or strobe modes<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
6: loaner mode<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by a high-med-high-med-high pattern<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->When
activated, the light is locked in its current mode and brightness (including
colors and strobes), but smart momentary and latching on still function<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Simplifies
the UI to a single mode, useful for when the light needs to be lent to another
user who doesn’t need other modes and doesn’t know how to use them<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Disabled
by power cycling<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
7: dim to red<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by a quick fading pattern from bright white down to low red<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Enables
or disables the dim to red feature<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
dim to red is enabled, the low red color mode will be removed from the list<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
8: powerup<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by a quick fading pattern from dim to bright white<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Enables
or disables the feature to restore last mode upon power up<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Should
be enabled in lights with both a momentary switch and a power switch, but may
be disabled in lights with momentary only if inadvertent power interruptions
are expected<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
9: set momentary max<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by short blink then long blink on white (looks like the click-press associated
with maximum)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->When
activated, any use of momentary (holding switch from off) will output maximum
brightness instead of the last-used brightness or mode. Previous brightness or
mode is still remembered<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
10: burst mode<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by high > medium-high > medium if currently disabled<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by medium > medium-high > high if currently enabled (the light is showing
what will happen if the menu item is activated—getting dimmer if you are about
to turn on the feature, getting brighter if you are about to turn it off)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
activated, any time the light is turned on in white at a power level above 66%
current, the output will gradually reduce output until it reaches 66% over the
course of 10 seconds. This helps save power and is usually not noticeable to
the user.<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Does
not affect use in momentary mode, only when latched on<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
11: enable UV<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by blue med > blue low if currently enabled<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by blue low > blue med if currently disabled (the light is showing what will
happen if the menu item is activated—getting dimmer if you are about to turn
off the feature, getting brighter if you are about to turn it on)<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Simply
enables the UV mode. Included in the menu so that MELD can be used easily in
lights without UV hardware by disabling the feature<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
12: enable colors<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by red > green > blue pattern<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Enables
or disables all color modes<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->If
color modes are disabled, locator beacon and battery check mode will use only
the white output<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Item
13: high CRI<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Indicated
by turning on white, red, green, and blue together<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->An
experimental operating mode that mixes in a small amount of red, green, and
blue into the normal white operating mode. May improve color rendering<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Only
works well in lights with excellent color mixing<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Symbol; font-size: 10.0pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Battery check:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Accessed
by click-click-click-press<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Stays
active and continuously updates measurement as long as switch is held<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Measures
battery voltage and reports it in blinks – blue blink for values and a long
green blink for the decimal place<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.0in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 10.0pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Examples:<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Battery
is 3.2V<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Blue
flashes three times<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Green
long flashes once<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Blue
flashes two times<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->2
second wait before repeating<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 1.5in; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Battery
is 4.0V<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Blue
flashes four times<o:p></o:p></div>
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->Green
long flashes once<o:p></o:p></div>
<br />
<div class="MsoNoSpacing" style="margin-left: 2.0in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: Wingdings; font-size: 10.0pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Wingdings;">§<span style="font-family: 'Times New Roman'; font-size: 7pt;"> </span></span><!--[endif]-->2
second wait before repeating<o:p></o:p></div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com3tag:blogger.com,1999:blog-3895798887768426148.post-18563377136392242522014-06-18T18:57:00.000-07:002014-06-18T18:57:34.009-07:00Custom camp knife<div class="MsoNoSpacing">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-6Z7-A_3Tmds/U6I7bTSqUWI/AAAAAAAABJU/ndYrp2dAb5s/s1600/20140618_211002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-6Z7-A_3Tmds/U6I7bTSqUWI/AAAAAAAABJU/ndYrp2dAb5s/s1600/20140618_211002.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
With all these tiny electronics projects going on, I had
to take a break to do something with steel, power tools, and brute force. For
many years I’ve used a <a href="http://www.benchmade.com/products/140" target="_blank">Benchmade Nimravus</a> as my wilderness knife, but a few
things frustrated me about it: handle too large for my hands, uncomfortable
thumb ramp, tip too steep, and semi serrated. I decided to make one from
scratch to be exactly the way I wanted. <o:p></o:p><br />
<br /></div>
<div class="MsoNoSpacing">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Mumc_4NJeng/U6I8NUGB5fI/AAAAAAAABJc/q9JpIj5Km2E/s1600/IMG_1231.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Mumc_4NJeng/U6I8NUGB5fI/AAAAAAAABJc/q9JpIj5Km2E/s1600/IMG_1231.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
I started with sketches. The design borrows a lot from
various knife designs that I like (including the Nimravus). I drew it 1:1 scale
so I could hold my hand to the paper to design the handle to fit me. I went
through a lot of iterations until it looked right. The final design has a 4”
handle and a 4” blade, very wide flat grind, a fairly blunt tip, and slight
concavity in the lower half of the blade. I was able to be pretty aggressive
with finger notches in the handle since I knew it would fit my hand and didn’t
need to be generic. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
I wanted some parts to be recycled/repurposed materials,
but I couldn’t find anything with dimensions that would work for my blade, so I
bought 154CM steel. It will make a better knife in the end than a saw blade or
file anyway. I wanted it to be indestructible since I will use it for heavy
duty work like splitting logs, so I bought 0.125” thickness. I decided the
handle scales at least should be recycled, and I found an old Pelican case to
cut material from. I also used the stainless steel pivot pins as my handle
pins. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
When my steel arrived, I had to cut it to length since I
bought it long enough for two. After wearing out two hacksaw blades trying to
cut it and resorting to scoring and snapping, I figured the steel must have
arrived already hardened. I was too excited to take the time to make a forge
from concrete, so I just set up the outlet of my shop vac to blow into the
bottom of my charcoal grill to do heat treat. It worked well enough to get the
steel to critical temperature, then I let it air cool to soften. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-UbWPyAtNfNo/U6I8zQQXfFI/AAAAAAAABJk/7zU9AfkW8-A/s1600/IMG_1232.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-UbWPyAtNfNo/U6I8zQQXfFI/AAAAAAAABJk/7zU9AfkW8-A/s1600/IMG_1232.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
I traced my design onto the blank and started roughing
out the outline. I was very glad to have my angle grinder with a cutoff wheel
for this, as it was still tough to cut with the hacksaw after softening. I
either didn’t soften it enough, or 1/8<sup>th</sup> is just really thick, or
both. After roughing, I spent a lot of time at the bench grinder setting the
outline. After it matched my sketch, I spent a lot of time at this stage
refining the handle profile since I could actually hold it. I also made slight
tweaks to the blade edge shape. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-BRtDXRXkM24/U6I9ZfH9TKI/AAAAAAAABJw/zvcGcS6SvJ8/s1600/IMG_1235.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-BRtDXRXkM24/U6I9ZfH9TKI/AAAAAAAABJw/zvcGcS6SvJ8/s1600/IMG_1235.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZuU7DLG-GPs/U6I9fSyiI7I/AAAAAAAABKE/MzsIWRVB4RE/s1600/IMG_1236.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ZuU7DLG-GPs/U6I9fSyiI7I/AAAAAAAABKE/MzsIWRVB4RE/s1600/IMG_1236.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-3ygeVYSQRW0/U6I9dO-qJ8I/AAAAAAAABJ8/E7itrr0Nxsw/s1600/IMG_1238.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-3ygeVYSQRW0/U6I9dO-qJ8I/AAAAAAAABJ8/E7itrr0Nxsw/s1600/IMG_1238.JPG" height="240" width="320" /></a></div>
<br />
I built a filing jig using a design I saw in a few places
online. It holds a flat file at an exact angle through the whole process so you
can make a precise grind. I didn’t bother to take measurements for the angle, I
just played with it until it looked right. After the first filing session, I
could tell it was going to take way too long to remove all the material by
hand. To speed it up I went back to the bench grinder and very carefully did a
rough grind to get a big portion of the material off quickly.</div>
<div class="MsoNoSpacing">
<o:p></o:p></div>
<div class="MsoNoSpacing">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-qjtPTjZbRtA/U6I9wYHWxbI/AAAAAAAABKU/ILsmq80NSaY/s1600/IMG_1239.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-qjtPTjZbRtA/U6I9wYHWxbI/AAAAAAAABKU/ILsmq80NSaY/s1600/IMG_1239.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
Even after that, the filing took forever. After the first
couple hours I was getting worn out and had to stop. Later that night I went
out and did a 20-minute filing session about once an hour for 3 or 4 cycles,
and then the next day I finished the filing in one 2-hour session. Everything I
read online says it should have taken less time, so I probably didn’t do the
first heat treatment correctly. Towards the end I scribed some center lines
along the edge so I could make corrections when I started grinding unevenly.
Once the leading edge was down to 0.025” I decided the grind was done. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-03D_-kWJook/U6I9xekL-LI/AAAAAAAABKc/MTFCiRvoe_Y/s1600/IMG_1241.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-03D_-kWJook/U6I9xekL-LI/AAAAAAAABKc/MTFCiRvoe_Y/s1600/IMG_1241.JPG" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-6jfJAJurMgg/U6I-DP4hk5I/AAAAAAAABKk/o92tx-i97Ho/s1600/IMG_1242.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-6jfJAJurMgg/U6I-DP4hk5I/AAAAAAAABKk/o92tx-i97Ho/s1600/IMG_1242.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-UgEWDqPy284/U6I-EcPnHpI/AAAAAAAABKs/CPgftCbPE_Y/s1600/IMG_1244.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-UgEWDqPy284/U6I-EcPnHpI/AAAAAAAABKs/CPgftCbPE_Y/s1600/IMG_1244.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-XC8pLcMQ5cs/U6I-XNeiKSI/AAAAAAAABK8/Y0Y9yNIg92U/s1600/IMG_1248.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-XC8pLcMQ5cs/U6I-XNeiKSI/AAAAAAAABK8/Y0Y9yNIg92U/s1600/IMG_1248.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
After that I set the edge using the same filing jig set
to a steeper angle (eyeballed it again). I was really nervous about going too
far and ruining the edge profile, so I left more than I probably should have
before the final heat treat. It wasn’t really an issue though, since it was
such a small amount of material to remove after hardening. The last step before
heat treat was to drill holes for the handle pins. At this step too I was
reminded that I didn’t soften it enough when I broke a drill bit. I think the
fact that I was able to drill at all means it was softened to some degree,
though.'<o:p></o:p><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-P-KtW--k_u0/U6I-YXv_HBI/AAAAAAAABLE/Eqgro-mD-NQ/s1600/IMG_1254.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-P-KtW--k_u0/U6I-YXv_HBI/AAAAAAAABLE/Eqgro-mD-NQ/s1600/IMG_1254.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
For the hardening heat treatment I set up the grill forge
again, and it was easier to work this time since I only needed to get half of
the piece to critical temperature. I quenched the blade in a soda can full of
used motor oil. The motor oil left the surface darkly stained, even after
thorough cleaning. I was disappointed since I had decided to do the surface
finishing after heat treat, but I loved the look of the dark coating. I sanded
it slightly and then decided to just leave it as-is. You can still see file
marks but it feels completely smooth, plus it’s probably better if I don’t need
to worry about scratching it up when I use it. After heat treat I did the
tempering step in the oven at 400°. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
I used a hand saw to rough cut the handle scales to
shape, then drilled the holes in them. The holes were drilled slightly
undersized in both the steel and the scales, so everything held together pretty
well even before glue. I applied epoxy to both sides and then clamped the whole
thing together. After the epoxy had partially set, I cut off the excess on the
pins and ground them flush, then put the whole thing in the vise to apply more
even pressure and left it for a few hours. <o:p></o:p><br />
<br /></div>
<div class="MsoNoSpacing">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-IQk-T-cOTu4/U6I-i_kGn-I/AAAAAAAABLM/8UFtHWdduT4/s1600/IMG_1256.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-IQk-T-cOTu4/U6I-i_kGn-I/AAAAAAAABLM/8UFtHWdduT4/s1600/IMG_1256.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Wd4qQBMyebQ/U6I-qFZpOBI/AAAAAAAABLU/UNEWt17tOnM/s1600/IMG_1257.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Wd4qQBMyebQ/U6I-qFZpOBI/AAAAAAAABLU/UNEWt17tOnM/s1600/IMG_1257.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-WcVxNqCTS_w/U6I-sZ_3_ZI/AAAAAAAABLc/eapJ2TAK_Ko/s1600/IMG_1258.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-WcVxNqCTS_w/U6I-sZ_3_ZI/AAAAAAAABLc/eapJ2TAK_Ko/s1600/IMG_1258.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
I was really wishing I had a belt sander to do handle
shaping; I ended up doing all the rough shaping with a rasp and the sanding drum
on my Dremel. I did the finer detail for finger grooves with a half-round file,
and then finished everything with sandpaper. <o:p></o:p></div>
<div class="MsoNoSpacing">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-EIZQBcTRzWE/U6I-0aRFU0I/AAAAAAAABLk/S_q1zLeyCtw/s1600/IMG_1262.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-EIZQBcTRzWE/U6I-0aRFU0I/AAAAAAAABLk/S_q1zLeyCtw/s1600/IMG_1262.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Ksrd3GWYBFY/U6I-2a2ZNCI/AAAAAAAABLs/uvl87KLcRgk/s1600/IMG_1264.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Ksrd3GWYBFY/U6I-2a2ZNCI/AAAAAAAABLs/uvl87KLcRgk/s1600/IMG_1264.JPG" height="240" width="320" /></a></div>
<br /></div>
<div class="MsoNoSpacing">
I had to go back to the filing jig to set the final edge,
which wasn’t too bad. After that, I used a combination of diamond whetstone and
carbide sharpener to get a rough edge before moving on to ceramic sticks. It
took an edge nicely, we’ll see how well it holds up with use. Next up is making
a kydex sheath, and I’m thinking about trying some dye on the handle since the
color isn’t exactly what I wanted.<br />
<o:p></o:p></div>
Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com1tag:blogger.com,1999:blog-3895798887768426148.post-76647154754846904602014-04-23T17:35:00.000-07:002014-04-23T17:35:01.743-07:00MELD LED boardJust a quick update on my <a href="http://tterev3.blogspot.com/2014/04/meld-v2.html" target="_blank">MELD</a> LED boards, they came in and the results are great. The white beam is nice and centered now, plus there's room for UV.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-JVsEs6uRA2g/U1hbKmeKF1I/AAAAAAAABFc/dRkBx-9zzo4/s1600/20140423_201403_HDR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-JVsEs6uRA2g/U1hbKmeKF1I/AAAAAAAABFc/dRkBx-9zzo4/s1600/20140423_201403_HDR.jpg" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-jU7FrYoFB4A/U1hbZFJGL_I/AAAAAAAABF0/6Sn2OdjTvmg/s1600/20140423_201629_HDR.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-jU7FrYoFB4A/U1hbZFJGL_I/AAAAAAAABF0/6Sn2OdjTvmg/s1600/20140423_201629_HDR.jpg" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-uu43_5JMklw/U1hbYCadipI/AAAAAAAABFw/VhCDdHP8mvw/s1600/20140423_201528.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-uu43_5JMklw/U1hbYCadipI/AAAAAAAABFw/VhCDdHP8mvw/s1600/20140423_201528.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-NQSw_lsm-Po/U1hbVyrphHI/AAAAAAAABFo/BBrq_-Yiw_c/s1600/20140423_201513.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-NQSw_lsm-Po/U1hbVyrphHI/AAAAAAAABFo/BBrq_-Yiw_c/s1600/20140423_201513.jpg" height="240" width="320" /></a></div>
<br />
One issue I found is that I tried to make it smaller than it needed to be, so the wire pads end up being right under the reflector on the two lights I've installed it in (Olight S10, Sunwayman C10R). The fix was just to push the pads out so that there's a bigger gap where the traces can run under the reflector. I made <a href="http://oshpark.com/shared_projects/4tMsLxi9" target="_blank">that change</a>, as well as made a<a href="http://oshpark.com/shared_projects/JAd9pidN" target="_blank"> version with an XP</a> size part:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/--2j8RHeD9O4/U1hbzWputeI/AAAAAAAABF8/F2z6on3k9Sc/s1600/i+(1).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/--2j8RHeD9O4/U1hbzWputeI/AAAAAAAABF8/F2z6on3k9Sc/s1600/i+(1).png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-2zk6Wm4gMWg/U1hbzp7B6KI/AAAAAAAABGA/vDoRiJIMAlU/s1600/i.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-2zk6Wm4gMWg/U1hbzp7B6KI/AAAAAAAABGA/vDoRiJIMAlU/s1600/i.png" /></a></div>
<br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com3tag:blogger.com,1999:blog-3895798887768426148.post-75827905138885301012014-04-06T13:12:00.000-07:002014-04-06T13:19:19.781-07:00MELD v2<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-UQGK_EreEVE/U0GyaKuTRdI/AAAAAAAABEk/Niln7joh3Ig/s1600/20140405_180702.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://4.bp.blogspot.com/-UQGK_EreEVE/U0GyaKuTRdI/AAAAAAAABEk/Niln7joh3Ig/s1600/20140405_180702.jpg" height="240" width="320" /></span></a></div>
<br />
<span style="font-family: Calibri, sans-serif;">Here's the 2</span><sup style="font-family: Calibri, sans-serif;">nd</sup><span style="font-family: Calibri, sans-serif;">
version of MELD (Multicolor EDC Light Driver), first posted <a href="http://tterev3.blogspot.com/2014/04/meld-v1-boards-and-olight-s10.html" target="_blank">here</a>.
This version addresses the issues and shortcomings I had on the first
one:</span><br />
<ul>
<li><span style="font-family: Calibri, sans-serif;">converter
dropouts and flickering</span><br />
</li>
<li><span style="font-family: Calibri, sans-serif;">low current on
main (white) output</span><br />
</li>
<li><span style="font-family: Calibri, sans-serif;">no current
regulation on white</span><br />
</li>
<li><span style="font-family: Calibri, sans-serif;">requires
rechargeable cell to use UV</span><br />
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-KNQg4Ww2Vj8/U0GyarWrjMI/AAAAAAAABEw/kvWBQFGoKWU/s1600/top.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://2.bp.blogspot.com/-KNQg4Ww2Vj8/U0GyarWrjMI/AAAAAAAABEw/kvWBQFGoKWU/s1600/top.png" /></span></a></div>
<div>
<span style="font-family: Calibri, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-xS0ytRlmTpM/U0GyS2yg4FI/AAAAAAAABEA/6EQFRXJjgx4/s1600/bottom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://2.bp.blogspot.com/-xS0ytRlmTpM/U0GyS2yg4FI/AAAAAAAABEA/6EQFRXJjgx4/s1600/bottom.png" /></span></a></div>
<div>
<span style="font-family: Calibri, sans-serif; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: Calibri, sans-serif; font-size: x-small;"><br /></span></div>
<span style="font-family: Calibri, sans-serif;">To solve all of
these I made major electrical and layout changes:</span><br />
<ul>
<li><span style="font-family: Calibri, sans-serif;">CV regulator
changed to <a href="http://www.ti.com/product/tps63000" target="_blank">TPS63000 </a></span>
<br />
<ul>
<li><span style="font-family: Calibri, sans-serif;">increased
current</span><br />
</li>
<li><span style="font-family: Calibri, sans-serif;">better pin
spacing</span><br />
</li>
<li><span style="font-family: Calibri, sans-serif;">adjustable
output voltage</span><br />
</li>
</ul>
</li>
<li><span style="font-family: Calibri, sans-serif;">separate <a href="http://en.wikipedia.org/wiki/Sepic" target="_blank">SEPIC</a> converter for white channel using <a href="http://www.ti.com/product/lm3410" target="_blank">LM3410</a></span><br />
<ul>
<li><span style="font-family: Calibri, sans-serif;">output current
up to 1.5A</span><br />
</li>
<li><span style="font-family: Calibri, sans-serif;">true constant
current regulation</span><br />
</li>
</ul>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-65ta3-mZ0Rs/U0GyZSk48rI/AAAAAAAABEg/qmEQn0xsE4E/s1600/schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://1.bp.blogspot.com/-65ta3-mZ0Rs/U0GyZSk48rI/AAAAAAAABEg/qmEQn0xsE4E/s1600/schematic.png" height="185" width="320" /></span></a></div>
<br />
<br />
<span style="font-family: Calibri, sans-serif;">To make everything
fit on a 5/8” diameter board, I had to put the SEPIC converter up
on a daughter board that stacks above the main board. This allows the
main board to be used for RGBW applications without the SEPIC board
if lower currents on the white channel are acceptable. It's also
feasible to use the SEPIC board on its own in some applications. </span>
<br />
<span style="font-family: Calibri, sans-serif;"><span style="font-size: x-small;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-TZc0N5REheE/U0GyVwCoPrI/AAAAAAAABEQ/8H9XH4T_pBw/s1600/daughter+sch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://1.bp.blogspot.com/-TZc0N5REheE/U0GyVwCoPrI/AAAAAAAABEQ/8H9XH4T_pBw/s1600/daughter+sch.png" height="154" width="320" /></span></a></div>
<span style="font-family: Calibri, sans-serif;"><span style="font-size: x-small;"><br /></span></span>
<br />
<br />
<span style="font-family: Calibri, sans-serif;">The new converter
for RGBUV is a higher power part which fixed all the dropout issues
(along with forcing it into PWM mode). It also is an adjustable
output version, so I use a pair of 0402 resistors to set the feedback
voltage. This allowed me to better handle high-Vf green parts by
increasing the voltage rail to 3.5V, and it gives me the ability to
let software control the output voltage. To do this, I put an
additional resistor that connects the feedback pin to one of my
microcontroller's I/O pins. Normally the pin is kept at high
impedance, but on UV mode (which requires higher Vf for the emitter)
I turn the pin to an output and pull it low, which effectively
changes the ratio of the feedback divider and makes the converter
generate 5.0V instead of 3.5V. Since this is running from the
automatic buck/boost converter, the high-Vf UV part can be run from
any battery type at any charge level. </span>
<br />
<span style="font-family: Calibri, sans-serif;"><span style="font-size: x-small;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-smokyCnMdoI/U0GyXwEQvfI/AAAAAAAABEY/fVwhoLjhAC0/s1600/layout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://3.bp.blogspot.com/-smokyCnMdoI/U0GyXwEQvfI/AAAAAAAABEY/fVwhoLjhAC0/s1600/layout.png" height="317" width="320" /></span></a></div>
<span style="font-family: Calibri, sans-serif;"><span style="font-size: x-small;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-RKiy3F78fQY/U0GyUjNc-MI/AAAAAAAABEI/zrW2N_U-HHo/s1600/daugher+layout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://3.bp.blogspot.com/-RKiy3F78fQY/U0GyUjNc-MI/AAAAAAAABEI/zrW2N_U-HHo/s1600/daugher+layout.png" height="315" width="320" /></span></a></div>
<span style="font-family: Calibri, sans-serif;"><span style="font-size: x-small;"><br /></span></span>
<span style="font-family: Calibri, sans-serif;">This is my first
time using a SEPIC converter (or the LM3410) but it works well. Using
the <a href="http://en.wikipedia.org/wiki/Sepic" target="_blank">SEPIC architecture</a> allows me to run actual current regulation on
the white channel, with input voltage above or below LED Vf. The
tradeoff is that you need an extra inductor, but at 4x4x2mm that's
not much to worry about. The LM3410 takes a PWM dimming signal on its
enable pin, which makes things really simple since I only need one
line to control it during dimming and standby. I did have to slow
down PWM on the white channel to 488Hz to get it to work well, and I
lost some resolution on the low end that software has to compensate
for by artificially inflating PWM duty cycle (minimum is now 3/256
instead of 1/256).</span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-FbYZc9TmyIU/U0Gya6mmfHI/AAAAAAAABE4/oUfCbErFO6o/s1600/20140406_112046.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://2.bp.blogspot.com/-FbYZc9TmyIU/U0Gya6mmfHI/AAAAAAAABE4/oUfCbErFO6o/s1600/20140406_112046.jpg" height="240" width="320" /></span></a></div>
<br />
<span style="font-family: Calibri, sans-serif;">Here's a video
demonstrating use of MELD v2 in a Novatac 120P:</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/rPRKWXJtHH8?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<span style="font-family: Calibri, sans-serif;">I'm very happy with
the way these came out, I think I finally have a driver that I'm
satisfied with for the ultimate light. Here's the <a href="http://oshpark.com/shared_projects/e1nOdOdw" target="_blank">board </a>and <a href="http://oshpark.com/shared_projects/xBTPj8sl" target="_blank">daughter</a> on OSHPark. If you want the source file or Eagle files, leave a
comment. I also put together an<a href="http://oshpark.com/shared_projects/p37Vo4vw" target="_blank"> LED board</a> to cram RGBUV around a
bigger white emitter for better beam patterns, still waiting on that
one in the mail:</span><br />
<span style="font-family: Calibri, sans-serif;"><span style="font-size: x-small;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-apCGHRTSeS4/U0G0kfCk-XI/AAAAAAAABFA/-10uI5lU_Ww/s1600/led.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black;"><img border="0" src="http://3.bp.blogspot.com/-apCGHRTSeS4/U0G0kfCk-XI/AAAAAAAABFA/-10uI5lU_Ww/s1600/led.png" /></span></a></div>
<br />Everett Bradfordhttp://www.blogger.com/profile/14141252596539082504noreply@blogger.com11