Posted on Leave a comment

Laser Cut Nerf Ball Shooting Lego EV3 Tank

For the final project of my 1A term in Mechatronics Engineering, we created a laser cut tank with the Lego EV3 kit (this was required) that shot Nerf balls, all to achieve a very special purpose: to remove the geese from the University of Waterloo campus.

There are lots of pictures of the tank below, and our design reports are attached as well, but I would like to highlight something here as well. Before going further, I would also like to give credit to my amazing groupmates Caleb Dueck and Lukas Wormald. This project was truly a group effort, and I could not have asked for better groupmates.

The treads are made out of laser cut 3mm MDF board. Using cutting a flexible pattern in to the wood, we were able to create a fully functioning tread. We attached both ends of the tread using 18AWG wire loops soldered through holes in the ends of the treads. The gears were made from This may not have been the best option for the treads, but it worked fairly well and was easy to do. The treads were not durable in the wet weather outside and one of them broke as it got wet and soggy.

The ball hopper mechanism was inspired by the design of paintball hoppers, and laser cut out of 3mm MDF. It worked very well at slow speeds, and was very repeatable. The top cover is attached with magnets and is removable in order to reload the hopper.

If we were given more time and resources, we would like to have made the balls fire faster and further using compressed air instead of a spring. However, the spring powered solution worked fairly well after some tuning, but would not fire as straight or as far as was originally planned for.

Using the Lego EV3 Robot kit was a requirement for this project, driven by the school, as these kits are easy to debug. If we were given more time and more freedom, we would have used an Arduino based platform instead, as this gives more expandability, power, and features.

The design report that we produced covering all the design decisions that were made is available here.

Videos of the robot in action can be found here.

Project By: Micah Black, Caleb Dueck, Lukas Wormald
Written By: Micah Black

Posted on Leave a comment

Touch Sensor Piano PCB Kits

Again, a long overdue project article, but I am slowly getting through them.
This project originally started when I made a mini piano on a 400 point breadboard with screws as the touch sensitive keys. I was looking for an easier way to make keys that are secure, but extremely easy to make and assemble. The ideal solution would have been a tool-less, solder-less version that costs almost nothing, but I have yet to find such a solution. So, I designed a PCB to the 3 components of the piano, and used very large, circular SMD pads as the touch sensitive inputs.
Making a PCB allowed for a much smaller footprint, as well as easier assembly although there is soldering involved now – for me it is easy, but for others possibly not.
I may get to the point where I offer this kit as a beginner’s electronics kit, or as soldering practice like many kits I have seen on eBay.
After a year or so of using it and watching other people use it, I would have made the touch pads bigger, and would love to figure out a way to play more than one tone at once to create a harmonic.

Project By: Micah Black
Wirtten By: Micah Black

Posted on Leave a comment

Backlit Display Boxes for Decoration

This article is long overdue – it is for a project that I completed while still in the early years of high school.
The same goes for many of the next articles and projects I will be posting.

One day, I decided it would be cool to mount the boxes of computer parts on the walls and backlight them with LED strips. The next weekend, that is exactly what I did.
I used some 1cm x 1cm wooden strips to create a square slightly smaller than the sizes of the boxes that I will be mounting. To those squares, I attached the LED strips which were different colors to match the main color of the boxes. Once mounted, this created an effect somewhat like a floating box, with the light coming from behind, and no visible shelving to hold the box up.
To mount all this to the wall I chose the non-permanent method of double sided tape in the form of 3M command strips. I did not want to damage the boxes either, in case I ever needed to return any of the parts that they originally contained, so I used adhesive backed velcro to them to the wooden frames.
Now for the power, these LED strips need 12V which is perfect, as I have a computer power supply that provides 12V for the overhead lighting as well. I stuck an extra connector and switch on the end of a pair of wires and connected that to the closest box. To attach the rest of the boxes, I soldered wires between the 12V and GND traces of the LED strips, at the closest points between the boxes.
Fast forward a few years to when I am now writing the article, I am somewhat surprised that these held up so long. The 3M command strips are just now starting to lose their stickiness. As for the lighting, it still works perfectly, but I did not use it as much as I had expected. The LEDs were too bright to wire in to the main light switch, so I left them on a separate switch and only really ever used them as a showpiece.
If I were to do this again, I would make the LEDs dimmer by driving them from 9 or 10V instead of 12, and wire them in to the main light switch so that they are not too bright.

Project By: Micah Black
Written By: Micah Black

Posted on Leave a comment

iPhone 4S Phone Battery Failure (Chinese Replacement) and some Project Thoughts

I have always been a fan of fixing my own stuff. So when my iPhone battery died, I bought a cheap Chinese replacement and a screwdriver kit from eBay to replace it myself following an iFixit guide. The process was super easy, and I had everything working again in less than 10 minutes. However, this did not come without its consequences.

A few days ago (months now), while charging my iPhone 4S – yes, its old but it works – , I heard a ‘pop’ and felt the phone expand.
I took the case off as quickly as I could, and saw that the back of the phone had popped open because the li-ion battery had swelled up – never a good sign.
Surprisingly, the phone was still on at this point, so I shut it off and tried to get the back panel off. I took out the 2 screws, but before continuing to remove the battery, decided to turn it back on and get the pictures off of it.
I wasn’t sure if the battery was going to continue expanding when I plugged it in to my computer to take this pictures off, as this would also continue charging it. In the few minutes that it would take me to get the pictures off, it would not transfer too much energy to the battery, so I decided to take the chance.
I was able to successfully remove all the important data, then unplugged the phone and removed the battery without further problems.
Let me be clear that this battery was NOT the original iPhone battery. I had replaced it about a year and a half ago, with a cheap replacement battery from eBay. I wasn’t expecting the replacement battery to last a long time, but it managed over 500 charge cycles, which is not bad for a cheap chinese battery. It is definitely much better than those ‘UltraFire’ 18650 cells out there.

I have been buying Chinese parts for years, and have never had any problems with them, when treated correctly. Batteries are one thing that I will avoid buying from China in the future.

This also speaks to a project philosophy that I have been thinking about and working on recently – If its worth doing, then its worth doing well. Chinese batteries are one of those shortcuts to completing a project, but not doing it well. Sometimes, it is worth the money to just get the right components. All the Arduinos that I use are Chinese clones of the original open source Arduino boards. They are cheaper, but they function just the same. None of the 50+ that I have personally used have ever caused any problems or dangerous situations to arise, so until the day comes when one dramatically fails (more than magic smoke), I feel completely safe using them as long as I treat them well according to the manufacturer’s specifications.

Posted on Leave a comment

3D Printer from old DVD Drives

Again, another project that I completed (I tried at least) long ago and never wrote an article for.
After seeing some projects on instructables and hackaday that used DVD stepper motors to make 3D printers and laser engravers, I decided that I would try my hand at making one.
I had lots of old DVD drives on hand from electronics recycling centers, and the electronics I purchased for under $50 from aliexpress.
I used a RAMPS 1.4 board, an Arduino Mega, and the A4988 stepper drivers for this, as they are extremely cheap, and I didn’t want to spend a fortune on this.
For the extruder, I bought one of the E3D clones, a PTFE tube for the bowden adapter, and the cheapest NEMA style stepper motor I could find – which turned out to be a bad idea, and there were no designs for filament feeders that fit this motor, and I didn’t want to spend the time to design one.
The frame was built out of MDF cut by hand, and 3D printed right angle brackets and M3 bolts and nuts. I was surprised how well the 3D printed bolts and nuts stood up, and the frame was very rigid.
As for the Y axis, I attached one DVD drive slider to the bottom of the frame. On top of the DVD reader sled, I attached a raised flat surface held up with springs and bolts (to allow for levelling). This surface was a 50x50mm piece of steel from one of the DVD drive casings. As a print bed, I think this would have worked fine, but I never got a chance to test it actually printing.
The X axis motion was again a DVD drive mounted to the vertical part of the frame. The DVD drive sled slides horizontally like a Prusa i3 would. To this drive sled, I attached the cover of a 2.5″ hard drive to give me more surface area to attach the Z-axis to.
Up and down motion for the Z-axis was achieved with another DVD drive mounted to the X-axis.
Connecting the stepper motors to the drivers required some prodding with a multimeter to figure out which pairs of wires were connected inside the 4 wire stepper from the DVD drives. Once the two pairs were figured out, they were attached to the RAMPS board, and were ready to test.
To the Z-axis, I attached the E3D clone extruder with a fan mounted on it. This choice of extruder (or maybe this would have happened with any extruder) proved to be the wrong one, as the DVD drive on the Z-axis was not powerful enough to raise the extruder.
The next part to mount was the endstops, and as I was mounting them, I realized I should have thought about this earlier. Some disassembly and custom 3D printed pieces were required to mount them, as well as a fair bit of hot glue, which I was trying to avoid.
Then the software – I opened up the Marlin configuration file and started modifying the values that I knew had to change. This was mainly the travel limits for all axes.
Once everything was mounted and wired up, the testing started. I connected the Mega to my computer, and opened up Pronterface to control the printer. Through this, I was able to determine the correct steps/mm values to plug in the Marlin. The other thing that this testing showed was that the stepper motor for the Y axis worked really well. However, the same cannot be said for the X and Z axes. The X-axis moved very slowly, and did not have smooth motion. The Z-axis, without help, did not move at all while the stepper was getting very hot. To try and fix this, I tried to add a counterweight (an 18650 cell) for the Z-axis, but that did not help at all.

One of the big mistakes I made while designing this was thinking of it in terms of separate items, and not worrying about attaching them until I got to that step. This caused some problems where parts would not attach together properly, and after a few hours of rigging something up, I had found a way to make it work but it was never elegant, repeatable, or sturdy enough.

Project By: Micah Black
Written By: Micah Black

Posted on Leave a comment

Simple Arduino Pong Game

Another one of those long overdue articles. I originally created this pong game 3 or 4 years ago, but it has gone through several great iterations since them.
This portable pong game has been a work in progress for many years. The components have stayed the same, but the enclosures and format have changed a fair bit.
The first version was created on a breadboard and was mostly just a proof of concept and a platform to figure out the code.
The second version was built inside a 3D printed enclosure and was a mess of wires inside.
Next version (number 3), I created on a 7x9cm perfboard and managed to keep the wiring a little bit neater, but it looked much better than previous versions with the added benefit of being more compact.
For the final version (number 4), I designed my own PCB to hold all of the components, with an easily replaceable battery holder.
As mentioned earlier, the circuit stayed the same throughout all versions (with the exception of a power LED on some). So let’s take a look at what that circuit consists of. I used an Arduino nano to control everything, a 1.8″ LCD display, 2 10K potentiometers, a switch, a TP4056 charge and protection module, an 18650 cell, and a 5V boost converter. These were wired up in logical fashion so that the 18650 cell was protected and the voltage would be stepped up to 5V for the system, and the Arduino communicated with the LCD over SPI while using the potentiometers as analog inputs to control the paddles.
For programming this, and part of the original inspiration for this project, I found an example on the Arduino website that showed 1-player pong, where the paddle could move anywhere as the ball would bounce off of it and the edges. I modified the code for this to make a 2-player version.

By far, the custom PCB version is the best because it is compact, neat, durable, and easy to wire everything up. If designing the PCB again, I would definitely use a different software than EasyEDA, as the one thing that was especially annoying was the UI. I could not figure out how to create rounded corners on the PCB, and their guides were not much help either. Since designing this board, I have figured out how to do that, but I still don’t enjoy the interface.
As for improvements on the code, there are plenty of things I would change – the main ones being a better menu, text facing the right way, and the ball not removing parts of a dividing line. When programming this, I just programmed it up to the point that it worked, and then stopped making improvements, which I somewhat regret now, but is not something I am going to go back and fix, as I have too many other projects that I am working on now.

Project By: Micah Black
Written By: Micah Black

Posted on Leave a comment

LiitoKalaa Engineer Lii500 Reliability, Accuracy, and Repeatability Test

Accurately testing 18650 li-ion cells is a very important step in the process of re-using cells from laptop battery packs, or designing a new battery pack in order to create matched modules and maintain a minimum amount of balancing current to keep the modules balanced.
During my first term at the University of Waterloo, I joined Midnight Sun, the solar car student design team and am working on designing a new battery pack for the next car, MSXIV (Midnight Sun 14). During this process, we are looking to accurately test every single cells that we putting in to the car in order to determine their capacity and internal resistance. This will allow us to create perfectly matched packs if the testing is completed accurately.
New cells are being used in this car, and the tests must be able to distinguish cells that fall within the manufacturer’s specified tolerance ranges for the cells. That means that the testing method that is chosen must be accurate to 10mAh for the capacity and ideally less than 1mOhm for the internal resistance.
And so started my journey of figuring out how to test all the cells in a timely manner while not spending tens of thousands of dollars on proper commercial testing equipment.
Starting with, one of the cheapest and most popular cell testers on the market, the LiitoKalaa Engineer Lii500.
I have 9 such testers, part of my cell testing station, and used 9 different cells to test each one, one slot at a time.
Each module was tested with one cell in the same slot multiple times to determine the repeatability of a measurement in the same slot, then the cell was moved to a different slot to see how the measurements compared.
The results can be seen on this spreadsheet, and were somewhat surprising. For tests of the same cell in the same slot, the values did not vary too much, within a range of 20mAh. However, when the cell was moved to test different slots, results were changed to a spread of almost 100mAh for some testers, with the average spread between the 4 slots around 50mAh.
Given these results, these testers are unsuitable for determining small differences in capacity between a batch of new cells, but for testing cells from laptop pulls they are perfectly acceptable. Keep in mind though, that the results will be within a range of around 50mAh from the value that they show.

Test Conducted By: Micah Black
Written By: Micah Black

Posted on Leave a comment

Block Sorting Robotic Arm

For the past few years through the robotics club at my school, I have participated in the IEEE Arduino Challenges. These are complex design and programming challenges that will test the skills of the participants – high school students. In previous years, I have done the IBM LRT Detour challenge which involves line following, obstacle avoidance, and maze solving algorithms, as well as the Green Arm Challenge to detect, identify, and sort colored blocks.
This was my second year of the Green Arm Challenge, and through the last few competitions, I have learned so much – an introduction to graph theory with maze solving algorithms, fusion 360 assemblies, and especially time management (it helps to have a working robot on competition day!).
Now on to the competition. The goal of the competition is to detect, identify, and sort 3D printed coloured blocks, picking them up from one area, and placing them in other areas based on their color. The complete rules are available here. The recommended hardware (according to IEEE) is on that page as well, but of course I made some of my own adjustments.
As with most open-source hardware, there are always some modifications required. So let’s go over what I did:


Arm and Servos: The base platform is a MeArm – an open-source 4DOF robotic arm made by phenoptix. All the instructions and the laser cutting files are available on their instructables page here. The original one was purchased from robotshop as a complete kit for way more than what I would be willing to spend. After assembling it according to their instructable, the acrylic on acrylic rotation points were sticking a fair bit, so we tried putting nylon washers between the joints. Unfortunately, that did not solve the problem. It could have been because the bolts were too tight and threading directly into the acrylic, but if loosened, the robot would be too unstable. To fix all those problems, I downloaded the dxf files from their instructables page, removed the self-threading screw holes (as bolts and nylock nuts will be used), strengthened a few of the parts, and used the laser cutter at the Imagine Space in the Nepean Centrepointe Library to cut everything out of 3mm MDF. This arm was used in the first year of the Green Arm Challenge, but the next year I redesigned it again because it was still pretty flimsy. This time it used bigger servos (MG995) for the main rotation points (shoulder and elbow) because the smaller SG90 servos were a little too slow and not precise enough to make the new laser time of flight sensor worth it. I also modified the base of the robot to include a teflon rod in a circle around the base rotation to eliminate wobble of the whole robot by providing extra support at the front and back of the robot, while not sacrificing any speed or accuracy. In fact, it actually increased the accuracy of the height and distance of the robot because the wobbling was eliminated.


Claw Modifications: As for the claw, some modifications were required for this as well. The original acrylic and MG90S servo claws had the same rotation problems as earlier – they would get stuck. With the laser cut MDF wood version, it would not grip hard enough (this would also have been a problem with the acrylic version, had it not been getting stuck). Blocks would often swing out of the claw because there were only 2 points of contact on the block, and blocks would also often be dropped because it was not gripping hard enough.The way that this claw works is also not the best – the servo gets sent to a specific position, and in order to grip hard enough, the servo has the be trying to reach a position that it cannot reach because of the block it is gripping, and ends up grinding the servo gears and heats it up – obviously not ideal. So, I added some current limiting to the servo in order to avoid grinding the gears and heating up, but with this method the servo does not grip as hard. So, I also redesigned the claw to have 6 points of contact on the blocks rather than the original 2. I also put elastics between the contact points, in order to provide some extra grip on the block. Once the servo angles for opening and closing the claw were properly calibrated, a block was never dropped or swung out again.

Ultrasonic Distance sensor: To find the blocks, we had to use some sort of distance sensor. The first year, that sensor was an HC-SR04 ultrasonic sensor. Obviously not ideal, but that’s what we had to work with. Ultrasonic sensors are not ideal to be detecting the blocks the 45 degree ‘loading dock’ area, as their detection cone is around 30 degrees wide. So, any blocks it sees could be anywhere within a 30 degree angle. To try and fiw this, we ‘swept’ across the area, measuring the distance at each degree and found the lowest distance. Then we went to the angle that the lowest distance was found at and took off a loosely guessed 5 degrees to account for sensor error as it is sweeping across (it will see the block before it is actually in front of it). However, this method proved to be unreliable. Some other methods that we tried were desoldering the ultrasonic transducers from the board, and mounting the transmitter under the claw, pointing at a 45 degree angle upwards, and the receiver above the claw, so that the sound from the transmitter will reflect off the block only when it is in front of the claw. With this, we would have to sweep across the area, but also move the claw further from the base to detect the blocks that are further away. Unfortunately, mounting the ultrasonic transducers in this location made it so that the claw could not be lowered enough to grab the blocks. The transmitter would hit the platform before the claw was low enough to grab the block. Another method we tried was attaching circular cylinders to the front of the transducers in the original location (at the base of the robot), in order to direct the sound waves coming out of the sensor. While this method worked very well for objects further away (greater than 30cm probably), it does not work for close objects, as the reflected sound waves must be coming back parallel and a few cm displaced in order to be detected, but instead come back almost right into the first transducer. Long story short, the HC-SR04 ultrasonic sensor is not suitable for this application.

VL6180X and VL53L0X ToF distance sensors: A much better suited sensor to detecting blocks at smaller distances is the VL53L0X or VL6180X Time of Flight laser distance sensor. These are ideal mainly because they use light beams instead of ultrasonic sound waves to detect objects. As a result, these have a very small detection cone (it is just a beam of light), and will only detect an object when it is actually in front of it. These sensors are also made for the range that we are using them in. The VL53L0X has a distance of 3-200mm with an accuracy of 1mm so at first, this is the sensor that we went with as the maximum distance was perfect, and we were looking for the highest accuracy possible. When testing it however, this sensor was wildly inaccurate (off by 1-2cm) at distances longer than about 13 or 14 cm, getting worse as the distance grew closer to 200mm. After paying an outrageous amount for a VL6180X from amazon (instead of my usual Aliexpress orders – this one had a deadline), we were much more satisfied with the results. The VL6180X is made for distances from 30-2000mm, with a slightly coarser accuracy than the VL53L0X. This sensor matched exactly what we needed, and worked perfectly during testing.


TCS3200 TCS230 Color Sensor and mounts: These color sensors are the bog-standard color sensors in the Arduino community because they are so cheap. The one main problem with them is that they are very sensitive to external light. If any of the lighting conditions in the room change, they likely have to be recalibrated. The other problem that this creates is a very limited and precise range. I was able to get mine working in a roughly 0.5 – 1.5cm range. On the pcb they are mounted on, come 4 5mm white LEDs to illuminate the object. As the sensor gets closer to the object the accuracy increases, and these LEDs were getting in the way. So, they were removed from the board and mounted above the sensor. To get the most accuracy and consistency as possible, the sensor was mounted as close as possible to the blocks – in the crevice where the claw closes, using a custom 3D printed mount. This took a few revisions in order to get the optimal distance, and light positions. In the first revisions, the 4x5mm LEDs were mounted above the claw servo, but in the final version, a 1W LED with constant current driver made from 10W power resistors (what I had on hand) and some transistors to allow the Arduino to control it. This higher power LED was chosen to provide more light in general, as well as more directed light. This way, the small deviances in the distance from the sensor will matter less, because there is still enough light getting to the sensor.

Power Considerations (especially with sensor shield): To power all this, and keep the wiring manageable, a Sensor Shield for the Arduino Uno was used. In order to run the servos at the maximum possible speed, they were driven from 6V. Unfortunately, this created some complications with the Servo Shield. The external power terminal block was connected directly to 5V, and was routed around the board as 5V, including into the Arduino’s 5V pin. Driving this external block with 6V would clearly create some problems. So, some PCB traces were cut and re-attached with jumper wires in other places in order to route the terminal block input to the Arduino’s VIN pin, as this pin is regulated. From the terminal block, the 6V goes to the servo/sensor headers on the shield. The 5V pin on the Arduino was connected to all other devices on the shield – I2C, SPI, and other breakout pins. Now that the servos, and only the servos, were powered with 6V, we also have to take into account the current draw. With the larger MG995 servos having a max current draw of 2 or 3A, this robot can draw up to 8A under full load. However, that will never happen as the movement, claw grabbing, and light pulsing never never happen all at once. Also, the large servos will never draw their max current as moving a small robotic arm is not problem for them. As a power source, we went with a Li-ion battery custom-made from recycled laptop batteries (either 2S2P or 3S2P depending on which one was used) because there were tons readily available. To get the voltage down to 6V, a 5A 75W buck converter was used. We could have gone with a much beefier 9A module, but given that the large current draws for this robot are never sustained, and 5A buck converter is adequate. The 6V was fed directly in to the sensor shield’s external power terminal, and the Arduino was powered through the VIN pin.


Control Library: The last main part of the build was programming – which was a fairly interesting problem. We needed to figure out a way to translate a given height, distance and angle of the claw in order to travel to a specific point and grab a block. There is an arduino library called mearm IK by yorkhackerspace on Github that works very well to control the meArm in 3D space, however I did not really like the way that you had to use it and the calibration instructions were not well documented. So I decided to make my own algorithm to control the height, distance and angle of the claw. This height, distance, angle option was chosen because block distance is a distance, height off the ground is also a distance, and the field was a semi-circle – so an angle for that makes sense. The angle of the base is controlled via a servo, which makes that part real easy. A bit of calibration to determine the maximum and minimum angles for each 45 degree area (which is not really 45 degrees on the servo) was everything required. Now for the height and distance, this was a little more complicated. After drawing out a large scale version of the robot, and some careful analysis, I noticed that the angles of the servo arms can be computed based on a cosine law. The 2 links having the same angle made this calculation a little easier as well, because we have an isosceles triangle. If I can find the messy drawings I made, I will include them here. Converting this to the servo angles proved to be a little more difficult. We had to map the angle based off of an imaginary bar parallel to the ground at the height of rotation of the servos. Slowing down the servos was also a major consideration. If the servos have too much jerk, then the block is more likely to fall out of the claw while it is moving. To limit the jerk while still maintaining maximum speed, an algorithm that found the distance to the start and end points of the servos, then slowed the movement of the servo down as it was just starting to move and as it approaches the end of its movement was implemented. In theory, this would have worked, but it seemed that the movement commands were getting ahead of the servo and as a result the decelaration as it approached the end point never happened. In the end, all the servo movements were slowed down because that was fast enough for our purposes. The first year, I put all this code to calculate the angles in the main program, and suffered through the endless amounts of scrolling. The second time around, I was a little smarter about it. I created my own library to with all the control code in it, which made the main program much neater and easier to understand.

Final Results: When the day of the competition came, we were fairly confident, having a functional robot that worked most of the time. We had even had extra time to program it to not place blocks down on top of each other if multiple blocks of the same color were gathered. After a bit of tuning to the proper layout of the field (different places to put the green and blue colored blocks), the robot was able to reliably find, retrieve, and sort the colored blocks.

Posted on Leave a comment

50W Solar Panel As Cheap As Possible

A few months ago, I found a 100W solar panel kit on kijiji for $50. I had previously built a smaller solar panel to see if tabbing cells myself was actually viable. Quite a few cells were broken in the process, but I got the hang of it and managed to build a small panel, so I decided to try a bigger one.


The bigger cells were thicker and easier to work with, but it still took a few broken cells to get used to them. A few broken cells means that I could not build a 100W panel, but after building a 50W panel I’m glad I didn’t have the option of a bigger one – it would have been too big.
I made this panel as cheaply as possible, and used some fairly unconventional and not necessarily recommended methods of framing and protecting the cells. Let’s go over the frame first. As you have probably guessed from the pictures, the outer frame is not made from the industry-standard aluminum, but 4 pieces of 1×3 that I got for under $5 at the hardware store. For the backing of the panel, all that’s needed is a solid material that is preferably as light as possible. I went with some rigid foam insulation, as it fit the requirements fairly well. Usually, EVA sheets are used for this, but that certainly did not fit the ‘cheap’ requirement. I used only about $4 of rigid foam insulation.


To cover and protect the cells, a piece of glass, acrylic, or epoxy resin are commonly used but again far from the ‘cheap’ requirement. I found a few posts on solar power forums using clear spray paint to protect the cells. This is certainly less durable than the traditional methods, but works for my purposes. I would not leave this out in the rain or in heavy wind, but on those days, there is usually not much sun anyways. The other thing I had to consider was the amount of light that gets through to the cells, which I tested by spraying 1 of my small cells with a generous layer of spray paint. I measured the short circuit current of that cell and an un-coated cell, and found about a 10% reduction in output current. The open circuit voltage did not change. I believe the commercial methods get about 2% drop in power.

Now to go through tabbing the cells. This is definitely the most tedious process of building this panel. As mentioned earlier, this is a skill completely different than soldering 2 wires together. The general process is to put flux on the cell, then lay the tabbing wire across the pads, and drag your soldering iron along the whole length of the cell. The tabbing wires should be just shorter than the length of 2 cells, so that when you connect them in series, there is no risk of shorting a cell and losing power. Once 36 cells are tabbed along the front, I laid them out in 4 strips of 9 cells that I will wire all in series later to get an 18V open-circuit panel. Each cell produces roughly 0.5V, 36 in series gives 18V. This is the recommended configuration for charging a 12V battery bank, as when a load is placed on the panel, the voltage will drop.


After finishing tabbing all the strings, I laid them down on top of each other (big mistake) and did not have time to come back to them for a few weeks. When I finally got back to them, some of the had stuck together where the solder joints were, and I broke 2 or 3 cells trying to free them. After laying the 4 strips out on the foam backboard, I passed the main positive and negative wires through to the back side, wired the rest of the cells up in series with some bus wire, and added a 20A anti-backfeed diode to prevent the batteries draining in to the panels.
When spraying on the clear spray paint, one of the brands I tried started reacting with the rigid foam insulation and melted the top layer of it. If you were wondering why the back and front of the insulation look so different, that’s why.


Testing it revealed an open circuit voltage of roughly 17V, and a short circuit current of 3.5A. Total cost of the project was around $60. For a 50W panel, I’d say that’s not too bad.
This panel will be used to charge my DIY Powerwall once I get a boost converter figured out, as the Constant Current on the 1500W one I bought does not work. With a solar panel this is not a problem, but charging from mains I do not want to draw too much current from any power supply that I use.
If I were to make my own solar panel again, I would not put a strict price constraint of the cheapest possible panel on myself, and would go for an epoxy resin cover instead of the spray paint. This would be much more durable, and thus I would use it much more.

Written By: Micah Black

Project By: Micah Black

Posted on Leave a comment

Testing TC4056 Modules – Fake TP4056 Clones

I recently bought 150 TP4056 charge and protection boards to make a bunch more Eco-Charge power banks. Once I received them, I noticed that the ICs they were using were another type of TP4056 clone that I had not seen before – the TC4056. I had previously used and tested 4056E chips without issue, but I wanted to test these as well just to make sure.
My giant 18650 testing station is ideal for testing, because it has slots that perfectly fit the voltage and datalogger that I made earlier. The problem is that all the chips on it are of the 4056E variety, so I got my hot air rework station and went to work. I first practiced on a few of the boards that I had destroyed, so that I could get a hang of desoldering ICs with a connection on the bottom of them as well. Once I got the hang of it (it takes longer to melt the solder than on small passive components), I removed the 4056E from one of the board currently in the testing station, and replaced it with a TC4056 from one of the new boards.
After letting it cool down, I plugged in the datalogger and charged up a cell. The graph can be seen below, and is perfectly acceptable for charging 18650s. Like the 4056E chips, this one got quite warm as well, so I left the small heatsink on it as I had done with all the 4056Es in my testing station.

Project By: Micah Black

Written By: Micah Black