Skip to main content
../top_projects.png

Projects

Some interesting projects I've worked on so far, both professional and DIY ones. The list is not full, I put only the bigger projects here, in a chronological order, starting from the latest ones.

HAL libraries for CPU peripherals measuring the silicon die aging

Set of several low-level drivers for quite unusual CPU/MCU peripherals dedicated for measuring various parameters of silicon chips in order to determine their current 'health', speed of aging processes, safe operating conditions at a given temperature and/or supply voltage etc. A very interesting part of this project was the fact I worked only with Verilog-based models of chips (SoCs with various CPUs such as ARM Cortex, ARC and RISC-V) because the monitoring software needed to be ready before an actual silicon production phase. Thanks to this the chip manufacturers were able to measure the dies from the very beginning of their lifecycle. Another important feature of these drivers was a compatibility with MISRA rules and some other safety-related standards

In this project I was deeply involved in almost all steps of the software development process: gathering requirements, creating software architecture, writing the code of the drivers themselves, multi-platform building system, unit and integration tests, documentation and CI/CD automation.

Tools & technologies: C, CMake, Make, cmocka, Verilog and a bit of Python.

Smart-home controller for central heating systems and gas boilers

Device responsible for controlling desired indoor temperatures in houses with water-based heating systems using radiators, underfloor heating and gas boilers being a primary source of heat. The main controller unit was able to maintain temperatures in the rooms individually thanks to wireless connection to wall-mounted remote control panels, sensors, and TRVs (Thermostatic Radiator Valves). To minimize an energy consumption the device was communicating with the boiler and other parts of the system (e.g. mixing valves) to change their parameters according to the current heat demand. Users were able to change all settings and monitor heating system parameters in real time through a dedicated mobile app. The electronics was based on an ESP32 Wi-Fi SoC. It was working as a gateway to the cloud, exchanging information with Microchip's 8-bit microcontroller (communication with boiler) and a proprietary ISM-band module (for TRVs, remote panels and sensors).

In this project I've created the architecture of the whole system, designed PCBs, written software for the ESP32 chip and configured all needed cloud services. I made tools and apps required to test and provision the devices at the final production phase. I was also responsible for maintaining legal requirements like safety (related to gas-powered heating devices) and compatibility with EMC and RED directives.

Tools & technologies: C, ESP-IDF, MQTT, Python, JavaScript, AWS, KiCAD.

Overhead line disconnector controller

Special extension module for railway-grade PLCs designed to control an overhead line disconnector drive. Such kind of drives have a unique method of steering and checking their position simultaneously through a long (up to hundreds of meters) three-wire cables and special multi-tap isolation transformers. The extension unit was based on an STM32 microcontroller measuring AC currents and voltages of the disconnector motor, selecting transformer's taps via relays and communicating with the master PLC through RS485 interface. The AC current/voltage measurements taken by the module were the only way to determine the position of the motor so the algorithm had an auto-tuning mode eliminating influence of such factors as impedance of long steering cables or motor parameter's variations due to different weather conditions.

That was a very interesting project requiring a lot of simulations and measurements done before creating any electronics. I was responsible for all the research, designing electronics and writing software for the microcontroller based on FreeRTOS system.

Tools & technologies: C, FreeRTOS, STM32, Altium, LTSpice.

3kV DC energy meter for trains and traction substations

Big multi-part project with smart meters mounted in locomotives or at substations and backend and frontend software running on electricity provider's servers gathering the data from all the meters and allowing the provider to issue electricity bills to vehicles' operators. The meter itself was a two-device solution, one part responsible for measuring the energy flow was directly connected to the high voltage and the second "smart" part acting as a local storage and a gate talking with the backend on servers through GSM and with train's on-board wired interfaces. Devices were connected with each other via the fiber-optic link to provide an isolation from the high voltage because the measurement part was powered directly from the measured voltage - the small 3.3V supply was derived from 3kV using special kind of DC/DC converter.

My main task was to design the measurement part of the meter: low-power STM32 based circuit with external ADCs and op-amps shaping signals coming from high-voltage resistive dividers and current sensing shunts, and the 3kV to 3.3V power supply being an unusual mix of a fly-back converter and high-voltage current sources. Designing such a weird mix of high voltages, low power and precise analogue circuits was a very demanding process which required quite a lot of initial research, simulations, many prototypes and months of official trials needed for legal approvals. Apart from creating the electronics I've also designed the mechanical parts e.g. water-tight enclosures for mounting the meter on a train's roof.

The follow-up from this industrial project was a research I've done in my master's thesis where I created a prototype of another measurement device, based on a specialized mixed-signal microcontroller from MSP430 family. I tested it and proved that it can be used as an energy meter in multi-system locomotives powered with different kind of voltages: 1.5kV and 3kV DC, 15kV AC 16.7Hz and 25kV AC 50Hz.

Tools & technologies: C, Python, STM32, MSP430, Altium, KiCAD, LTSpice.