Build Instructions - ASCD Nano 4x

Please Donate

This project is Open Source and free. It has taken 100’s of hours to develop. Please show you appreciation and help further this project.

Donate

Get the Components

Watch the YouTube Playlist

Please Subscribe to my YouTube channel to help this project 

Arduino Nano 4x Charger / Discharger

 

Solder Resistors, Transistors and MOSFETs

Either SMD or THT solder (not both) the 1K, 4.7K, 10K, P-Channel, N-Channel and NPN components



Solder in the Headers and DIP Socket

Solder the Nano’s two 15 pin female headers, 16x CD74HC4067 Multiplexers 8 pin and 16 pin female headers, ESP8266 adaptors 4 pin female, LCD 4 pin female and the 74HC595N Shift registers 16 pin DIP IC socket.

Note: solder all components on the silk screen side.



Solder Basic Components

Solder and install the 5.5mm DC Jack, Arduino Nano 328p, CD74HC4067 multiplexer and 74HC595N shift register.

When soldering the Arduino Nano and the Multiplexer I recommend first placing the male header pins in the female header pins then solder the component in place.



Solder the Dallas DS18B20 Temperature

First place two 3mm x 7mm x 0.8mm Insulating Washers on each Dallas Sensor (This is used to create a space off the PCB so you don’t measure the PCB temperature)

Solder the 4x Dallas Sensors on the top layer for each cell module plus the ambient sensor on the bottom layer.

Be careful not to bridge the solder joints on the TO-92 solder pads. Once soldered measure in diode mode on your multi-meter between each leg on any Dallas Sensor (they are all connected in parallel)

Solder the 5V Active Buzzer on the top layer where the + (positive) pin is facing the Arduino Nano



Solder in the Diode

Solder in the Diode under the CD74HC4067 multiplexer

It is good practice to clean the flux with isopropyl alcohol.



Test and Adjust the LCD Screen Contrast / Serial Jumpers

LCD Contrast

Connect the LCD Serial 4 pin female to a 4 pin Male -> Female Dupont Jumper wires. Make sure you connect you connect exactly:

GND -> GND

VCC -> 5V

SDA -> SDA

SCL -> SCL

Load the Arduino Sketch from github: ASCD_Nano_Test_LCD_Screen

Unplug the USB cord and use a 12V power cord in the 5.5 mm DC Jack (+ positive center / – negative outer)

Adjust the potentiometer on serial adaptor at back of the LCD Screen CC or CW until you see the text displayed.

Once you are happy with the contrast remove the Dupont Jumper wires.

Serial Jumpers

Connect 2x 2.54 mm jumpers on pins 1-2 for software serial communication with the ESP8266



PWM Fan

Components

Solder the following components:

JST 2.0 PH 2pin connector (Note: the silk screen is backwards on the PCB version 1.11)

100uF 16V Electrolytic Capacitor

BD139 NPN Transistor

Diode

Test

Load the Arduino Sketch from github: ASCD_Nano_Test_Fan

Unplug the USB cord and use a 12V power cord in the 5.5 mm DC Jack (+ positive center / – negative outer)

Plug in the 30mm Fan

The Fan should speed up then stop



Testing the MOSFETs

Testing N-Channel Resistor Discharge MOSFETs

Load the Arduino Sketch from github: ASCD_Nano_Test_Charge_Discharge_Mosfets

Unplug the USB cord and use a 12V power cord in the 5.5 mm DC Jack (+ positive center / – negative outer)

With the PCB facing the bottom layer set your multi-meter to diode / continuity mode.

Place the negative probe on a GND source and the positive probe on the 1st modules load resistors connectors right side (as shown in the images).

Your multi-meter should beep for 1 second then no beep for 1 second.

Repeat this for each module.

Testing P-Channel TP5100 Charge MOSFETs

Load the Arduino Sketch from github: ASCD_Nano_Test_Charge_Discharge_Mosfets (Same as above you can use this sketch for both tests)

Unplug the USB cord and use a 12V power cord in the 5.5 mm DC Jack (+ positive center / – negative outer)

With the PCB facing the bottom layer set your multi-meter to DC voltage mode (usually 20V range).

Place the negative probe on a GND source and the positive probe on the 1st modules TP5100 right side + positive connector (as shown in the images).

Your multi-meter should show 12V for 1 second then a low voltage for 1 second. Repeat this for each module.



Get the Dallas DS18B20 Temperature Sensor Serials

Load the Arduino Sketch from github: ASCD_Nano_Get_DS18B20_Serials

Leave in the USB cable. Do not connect the Fan or 12V Power.

Open the Serial monitor in Arduino IDE at 115200 baud rate.

It should detect / locate 5x devices.

Heat up the 1st DS18B20 Temperature Sensor with the upper tip of your soldering iron for a short period of time.

Note: Module number are from left to right with the PCB facing upright on the top layer

It should print “Detected Battery: 1” then “Heat Up Battery Sensor: 2”

This will sequentially go through each 4 x modules until it says “Detected Ambient Sensor Completed”

It will display the Hexadecimal Serial numbers of all the DS18B20 Temperature Sensors at the bottom.

Copy the 5x Serial numbers and then paste them into “Temp_Sensor_Serials.h” within the “ASCD_Nano_1-0-0” sketch. Make sure you emit the last comma (shown in the image)

Note: If you get 99 degrees Celsius temperature reading it means that there is an error reading that sensor. Either the serial is wrong or the device is faulty.



Install and Test the TP5100 Charging Modules

Install

With a knife or some diagonal pliers cut 20x single Male 2.54 mm headers.

Place 5x Male headers per TP5100 module on the bottom layer on the PCB. I recommend putting the long side down through the hole.

Place a TP5100 module on each module and solder it in place. Use some tweezers to manipulate the Male headers if they won’t align.

On the top layer of the PCB solder the connectors as flush with the PCB as you can. (You will need to fit the plastic Battery holder on top so the less stick out the better)

Note: Make sure you connect the Charge Pin on the TP5100. It is the closest pin next to the VCC in GND above the P-Channel MOSFET

Test

Load the Arduino Sketch from github: ASCD_Nano_Test_Charge_Discharge_Mosfets (Same as above you can use this sketch for both tests)

Unplug the USB cord and use a 12V power cord in the 5.5 mm DC Jack (+ positive center / – negative outer)

All the TP5100 modules should turn on for 1 second the turn off for 1 second.



Drill DS18B20 Temperature Sensor Clearance Holes

Tools required

0.7mm Drill bit or Scribe

3mm Drill bit (optional)

6.5mm – 7mm Drill bit

Drill

Get a spare blank PCB and a 4x 18650 Battery Holder

Mount the 4x 18650 Battery Holder with the + marking facing the top of the board

Mark the hole positions with a 0.7mm Drill bit or a Scribe via the center pin on each of the TO-92 DS18B20 Temperature Sensors

Remove the 4x 18650 Battery Holder and drill a 6.5mm – 7mm hole. I recommend using a smaller drill bit first.

Test fit the 4x 18650 Battery Holder and see if the DS18B20 Temperature Sensor have sufficient clearance.

Note: Do not solder the 4x 18650 Battery Holder until all other components have been soldered.



Mount the Discharge Resistors

Mount and Solder Headers

First mount the headers. You can either use the 5.08mm Screw Terminal or JST 2.54mm Male Header.

Note: I use some blu tack to hold the header / terminal in place while soldering.

Solder them in.

Measure Ohms of Resistors (Optional)

Measure, number and log the resistance of each resistor.

I use my LCR-T4 Tester for this. You could use a quality multi-meter (this is not 100% accurate but is a good base measurement)

Edit the Arduino Sketch from github: ASCD_Nano_1-0-0 add in the amended resistor values.

Mount the Resistors

In this example I am using the 5.08mm Screw Terminals and I am staggering each wire wound resistor. Later I will add steps for aluminium clad resistors on a heat-sink.

Solder the Final Components

Solder in the 4x 18650 Battery Holder.

Note: You may need to trim some contacts down with some flush / diagonal pliers.

Solder the 6mm push button.

Mount All the Hardware

ESP01 Adapter

4x Use M2.5 stand-offs M-F or F-F

8x M2.5 Screws or 4x M2.5 screws and 4x M2.5 nuts depending if you use M-F or F-F stand-offs

Use a right angle 4pin 2.54mm connector to connect the Female to Male connectors.

Note: you may need to tin the connector to get a good connection if it is loose.

LCD

4x M3 Standoff 18mm Brass F-F and 8x M3 x 12mm Screws for the LCD

Fan

3D Printed case only: Thread some M4 screws the Fan screw holes add the Fan.



Upload the Arduino Nano Sketch

Before uploading the sketch check the 5V Voltage output from the Arduino’s Voltage Regulator. There are two probe points about the LCD screen.

Edit the Arduino Sketch from github: ASCD_Nano_1-0-0 Change this line in the Arduino Sketch to your voltage reading

const float referenceVoltage = 5.01;		   // 5V Output of Arduino

You can also change some other custom setting for your testing needs

const float shuntResistor[4] = {3.3, 3.3, 3.3, 3.3};
const float referenceVoltage = 5.01;		   // 5V Output of Arduino
const float defaultBatteryCutOffVoltage = 2.8;	   // Voltage that the discharge stops
const byte restTimeMinutes = 1;			   // The time in Minutes to rest the battery after charge. 0-59 are valid
const int lowMilliamps = 1000;			   // This is the value of Milli Amps that is considered low and does not get recharged because it is considered faulty
const int highMilliOhms = 500;			   // This is the value of Milli Ohms that is considered high and the battery is considered faulty
const int offsetMilliOhms = 0;			   // Offset calibration for Milli Ohms
const byte chargingTimeout = 8;			   // The timeout in Hours for charging
const byte tempThreshold = 7;			   // Warning Threshold in degrees above initial Temperature
const byte tempMaxThreshold = 20;		   // Maximum Threshold in degrees above initial Temperature - Considered Faulty
const float batteryVolatgeLeak = 0.50;		   // On the initial screen "BATTERY CHECK" observe the highest voltage of each module and set this value slightly higher
const byte moduleCount = 4;			   // Number of Modules
const byte screenTime = 4;			   // Time in Seconds (Cycles) per Active Screen
const int dischargeReadInterval = 5000;		   // Time intervals between Discharge readings. Adjust for mAh +/

Connect up the Arduino Nano to your computer and load the ASCD_Nano_1-0-0 sketch

You may need to use ATmega328P (Old boot loader) as the processor in Arduino IDE

Select the correct COM port and upload the sketch

Upload the ESP-01 Sketch

If you have not already registered your Vortex It – Battery Portal Account go to the next step.

You need to install the ESP8266 Arduino Addon in your Arduino IDE use this guide:
https://learn.sparkfun.com/tutorials/esp8266-thing…

Change the following in the ESP8266_Wifi_Client_1-0-0 Arduino Sketch

const char ssid[] = ""; -> to your WIFI routers 
SSID const char password[] = ""; -> to your WIFI routers Password
const char userHash[] = ""; -> to your UserHash (Get this from "Charger / Discharger Menu -> View" in the Vortex It Battery Portal) 
const byte CDUnitID = ; -> to your CDUnitID (Get this from "Charger / Discharger Menu -> View -> Select your Charger / Discharger" in the Vortex It Battery Portal) 

Use USB to ESP8266 ESP-01 Programmer to upload sketch ESP8266_Wifi_Client_01.ino to the ESP8266 with the switch on PROG

Setup Your Vortex It - Battery Portal Account

If you have not already register for an account go to https://portal.vortexit.co.nz

Login with your credentials

On the menu click “Chargers / Dischargers” -> “New”

Select from the drop down list “Arduino 4x C/D”

Click “New Charger / Discharger”

On the menu click “Charger / Discharger” -> “View”

Select from the drop down list “xx – Arduino 4x C/D” (where xx is the CDUnitID)

Make note of your “UserHash” and “CDUnitID”

Click “Live View Module” to view you Charger / Discharger online

Get your Vortex It - Battery Portal User Hash

Click your username on the top right of the screen -> select “User Profile”

Click the “User Hast” Tab

Copy and Paste you user name into the code



Optional - Make a 3D Printed Enclosure

If you have a 3D printer you can print an enclosure that I have designed. Feel free to make your on style of enclosure and share it:

Fusion 360

Thingiverse STL

https://www.thingiverse.com/thing:3502094



Start Testing Cells

Insert some batteries into the Cell Modules and go to the “Live View Module” page scan in your barcodes and you are off.

Check out the Facebook group for updates, information, help and discussions.
https://www.facebook.com/groups/DIYbatterychargerdischargertesters/