Year In Industry – Review

I started my year in industry on the 25th July 2018 as a junior engineer at Buckman Hardy Associates.  I have been so intrigued at work, I did not have time to keep updating the blog. However I have been keeping multiple logbooks at work (software and general). 

Through out this post I will be reminiscing my experience at BHA. 

Week 1 – 25 June 2018

I started off the week with soldering practice with pulse analyzer PCB for AWR. We had 2 meetings that week both with Yeshko regarding EV testing equipment and CAT II -> CAT III RCD testers. I also started learning how to used proteus 8 PCB design and layout software to learn the software i redesign a schematic and did the board layout for it. I also did some CAD work to verify the holes on a cad drawing were correctly spaced out. To learn the software I designed a simple 3D box using 2D shapes and screw holes to go along with it.  The PCB for pulse analyzer needs a case to be mounted on. However the LEDs to be mounted on the PCB were very difficult. Therefore i made a JIG so when placing the LEDs they are nice and straight. On Friday i started on pH meter assembly which is all SMD parts 0805 and 0603.

Week2 – 2 July 2018

This week we had a gcse student doing his placement week. His name was Ian. Most of the week was taken up by EDT pH meter assembly i had to assemble 3 boards. This was long and tedious process, since there were lots of components to solder some being very small. Problems encountered: the display connector footprint was incorrect meaning the connector did not properly fit onto the PCB, resulted in weak connection between the connector and the pads. As a result one of the tracks came off. This was not a big issue since i was able to fix the problem. The track that came off was supposed to go to ground. I took a jumper from the pin to a ground point which i located using the PCB diagram. On Friday i was assigned some research to see what microcontrollers and development kits that’s available on the market for prototyping and MCU that can be used on future projects.

Week 3 – 9 July 2018

I was the only one working on Monday, since both Alan and Will was on holiday and mike was away for that day only. I started working with the FAB (Factory adjustment box) which is a device to calibrate other device. Assembly to the FAB was simpler compared to EDT pH meter because all the components were through holes and i didn’t really encounter any major problem other than Alan forgetting to tell me where the case for the FAB box is. I still had to do all the cable wiring and building the box something i was not confident doing since the procedure was not too clear at the time and i decided to wait for them to come back from holiday before going ahead. Therefore i instead continued my research survey. This process was much harder than i first anticipated. There is major difference from an university and hobbits microcontroller boards to an industrial MCU boards. Where as we only focus on the application layer of the protocol. Designing software using the API, here it’s much lower level programming. Something i am not too familiar with. A lot of the stuff i taken granted when using API is custom done here. Resulting in much longer development cost. I finished all the set work that i can do by Friday so Mike asked me if i can fix mantis for BHA. Mantis is software that manages bugs in code, currently the software partially works, however the email are not sent or received via the software. This software was setup by a previous intern student. It turned out to be a simple problem however it took few hours to find because I needed to understand how Mantis works once i did i found the problem. The problem was the email account and password used a gateway is not longer valid after the student finished their year in industry.  I run a test by changing to my email and it worked.

Week 4 – 16 Jul 2018

Everyone was back from holiday, i started getting used to DISCO board by STM32 by playing round with it on Mbed. Since i have used Mbed at university was somewhat familiar with the system. However STM32 DISCO uses high end Arm cortex H7 CPU running at 216MHZ. I wanted to setup and use the dev board using CubeMX and Eclipse (AC6 compiler) however i encountered various problems and after hours of troubleshooting from home and at work. I was not successful. I started making 9 more sets of Pulse analyzer. This was little bit difficult since some components were missing. Also some parts for the EDT were missing which has arrived this week i put them in and now it’s ready for testing by Alan. I continued with building the FAB mostly wiring and case fitting. Did encounter a single problem where the front panel holes were not aligned with the case holes. However this was likely due to tolerance issues in manufacturing the case and not the front panel layout error.

Week 5 – 23 Jul 2018

The FAB box was mostly done just few more power resistors which were out of stock. They were to arrive later in the week. I started of the week with data analysis. Yeshko, wanted to make one of their device which was previously made by BHA, more accurate. Some test of the device was performed by Alan to measure its accuracy and changes on software which can improve its accuracy and reliability. My role was to decode the raw data from the log file and extrapolate the relevant information. I ran some statistical analysis such as Mean, Median, outlier detection and Standard deviation and mean error.  Current proposed plan was to 13% of the highest value and 13% of the lowest value so the standard deviation is smaller. However the data showed the true reading will be affect negatively since real data is being removed since the values are not outliers.  

There is a meeting on Thursday with Buckley’s (HVDC Unified). I spend few days analysing the specification and PowerPoint trying to understand what they wanted and how the project will work. There were lots of aspects i did not understand and i spend some time researching how it worked. E.g Fir tree commonly known as voltage multiplier. DC to DC using Capacitors and Diode.

 With Will’s help I started the calibration procedure of the FAB box. There were some hiccups due to unsoldered header connection. Then i had to adjust the resistor values so they are within 0.1% of the required value. Difference caused by tolerance of the component. If the resistor value is higher than the required value then resistor will be put in parallel to bring the resistance down. The required parallel resistor is calculated using 1/Rt = 1/R1 + 1/R2. If the value is too small then i added difference in series.

Week 6 – 30th Jul 2018

Monday most of the day was spent working on the PA2 getting the new CPU board working. Also the pH meters were powered up and tested if they are working. Alan uploaded the current version of the. The morning of Tuesday was spent finishing off the PA2. I started on the Barbara assembly. However there were some components that were missing that had to be ordered in. Most of Tuesday was spent continuing with the Barbara DNO assembly. Some time was spent CAN bus cpu hunting and PA2 change log. Alan is planning to redesign the stepper motor circuit design for smoother micro stepping. I started researching how stepper motors work. On Friday morning Alan and i sat down and went to the modification that has to be made to the existing Barbara loop main loop to support the Barbara DNO loop.

Week 7 – 6th August

Most of Monday was spend learning basic electronics components more a review of electrical components and how they work e.g resistor, capacitors, inductors, relationship between inductors and current etc. I also started reviewing C programming language, getting used to the syntax of C again. I spend an hour looking at the ADC code for Boston project, however I didn’t not understand much.

Not much really happened on Tuesday, I setup a new trello board for my personal use and fixed DEWII project board. This was partially completed by a gcse placement student. I spend the day troubleshooting and fixing some of the problems. One of the issue was a wrong resistor was fitted (100K) this meant the voltage at the gate of the mosfet was less than the gate activation voltage, this meant the mosfet never turned on. This problem was identified and solved using by probing a multimeter at different points and comparing to expected voltage.

Wednesday, Thursday and Friday I was the only one working on these days. Alan has set me some work to get on with. Wednesday was spent researching: Current Choppers, Stepper Motors, and some admin work – Emails. Thursday and Friday was spent building Pulse Analyzer stock.

Week 8 – 13th August

This week was very spicy, very software focused and a lot has been accomplished. On Monday I was told I need to write some software to operate a new ADC over SSP0 (SPI) the new adc is ADS8866, which is quite different compared to the old ADC. Not much was accomplished on Monday, since reading through lpc1763 manual and ad8866 datasheet, and trying to understand what exactly I am supposed to do. On Tuesday I rewrote the code in more of a simpler way so it’s very easy to understand.  However we decided to minimise the code we have to write by modifying the hardware. DIN of the ADC was soldered to DVDD – just a solder bridge since it’d the neighbouring pin. This meant DIN is always HIGH. As required by the 3 wire mode connection timing characteristics.  Wednesday was spend troubleshoot the ADC driver and trying to find out why it was not working. I got out the 4 channel oscilloscope, set it up so it is triggered on the rising later falling edge.  I was able to show the waveform on the oscilloscope however it was still not working. I then changed which edge the data is being read. CLK IDLE High, DOut at falling edge. I ended up trying all the combination. Then Alan started looking at the hardware and we located a fault where the output voltage of an opamp is incorrect and the input of the adc was receiving full-scale deflection value. I took out R30 which made the input of the adc open and then used a bench power supply with common ground to supply the input voltage, this acted as a controlled to see the output waveform.

The oscilloscope DOUT showed the correct value however the it was not displaying the correct value on the serial monitor.  At the same time Mike started questioning why the DOUT of the ADC was only 2.13V Peak to Peak, something must be pulling the pin down. I started investigating the code then the board itself. And I found when the DIN modification was made on the DNO board it was not corrected on the main board. After fixing this very simple issue the adc is working correctly.

Thursday I started programming the onboard, relay having some knowledge of the port register control from programming the ADC it was a rather simple process.  Nevertheless it did end up taking the whole day since some other changes were made. Mike noted out the resistor pulling the transistor low that controls the relay is too high. Since the LPC1763 pin is current source 100uA. The new resistor value is 5K rather than 100K. The reply was very simple to control and can be toggled using the same function call and a current status of the device is shown in Windisp.  I also made some changes where the ADC16_ADS8866 is sampled at 500ms and displayed on Windisp for Will to use for his testing.

Friday was a mess of confusion, as I tried to understand what I need to do. After mike explained how Loop testing works and the software stack that goes with it it became little bit easier to understand. The code is quite complex. I made some changes where the loop testing sample is now using the ADC16_ADS8866 driver whereas previously it was using the ADC12 which is built-in.

Software Log files BARBARA DNO– week 8


– I commented out all instances of adc16_sample() function uses through out the program.

Added logfile.txt.

Added DNO_DEV.txt copyied layoyt from PH meter Project. Some infomation needs to be updated for this project.

Since this project is forked from kt63 i need rename the files from KT63 to Barbara DNO


– I finished the ADS8866 device driver (ADC16_ADS8866.cpp) following adc16 as a guidline

– Windisp command has been added to retrive a single reading from ADS8866 ADC.

– Some hardware changes were made on digital board

     DIN -> DVDD

– R30 has been desoldered and INPUT ot ADC is controlled manually using a DC power supply.

There was some hardware issue.


– host_dl400 has been modified, now adc is sampled every 500ms -> DATA send to WinDisp

– ghost_bust_relay.cpp , ghost_bust_relay.h created

– The RELAY_GB can be controlled. A toggle function has been added to windsip to control the relay.


– async.cpp has been updated to work with adc16_ADS8866

– adc12 and mcp3208 h files are commented out of async and any instances  of

adc12 and mcp3208 has been commented out. The code compiles /builds with no errors & warnings 

Masum Ahmed