Home

Priyesh Mahajan | Embedded Software Engineer

Results-driven Embedded Systems Engineer with 2.9 years of experience bridging hardware and software for automotive and industrial applications.

Priyesh Mahajan - Embedded Software Engineer

Core Competencies & Technical Skills

Proficient in the full product development lifecycle from schematic capture to production release.

Firmware

  • Embedded C/C++
  • RTOS
  • I2C
  • SPI
  • UART

Microcontrollers

  • TI C2000
  • STM32
  • ARM Cortex-M

Hardware Design

  • KiCad
  • Altium
  • PCB Design
  • Signal Integrity

Motor Control

  • BLDC
  • PWM
  • Trapezoidal Commutation

Validation

  • Oscilloscope
  • Logic Analyzer
  • EMI/EMC
  • CE/RoHS

Professional Experience

Track record of cross-functional collaboration to deliver robust, production-ready embedded solutions.

Embedded Software Engineer

L&T Technology Services Sep 2023 - Present
  • Designed/validated PCB schematics
  • Led board bring-up and HW/SW integration
  • Developed real-time firmware for BLDC motor control on TI C2000
  • Maintained strict EMI/EMC compliance documentation

 Motor Control Implementation Overview

The setup is a closed-loop test environment of simulated inputs and collected outputs of a DUT in order to evaluate developed Motor tool firmware.

Origin of  Problem

The current state of automated testing Previous setup is encumbered by years of scope creep. This leads to poor test velocity which impacts product software deliverables.

Proposed Solution

Collect the "cream of the crop" from Previous setup and simplify the automated testing use cases around expected products including batteries and motor controllers. Pivot the existing PSS architecture away from labjack and a redis backend to instead utilize a logic analyzer such as Saleae Pro 16 to collect data.

Why does setup use PyTest?

setup utilized python and pytest for test script writing. It makes the development of new tests more simple then the previous process in the PSS framework. Almost the entire setup codebase is written in python so utilizing it for test scripts as well allows for maximum compatibility.

About PyTest

pytest is a powerful and widely-used testing framework for Python that simplifies the process of writing, organizing, and running automated tests. Designed to be easy to use and highly extensible, pytest allows developers to create simple unit tests as well as complex functional testing suites with minimal code. By supporting features such as test discovery, detailed assertions, and a rich ecosystem of plugins, pytest enables teams to efficiently manage testing.

CSVController Data Analysis

CSVController is designed for the collection, combination, and analysis of data from Nexus-relevant CSV files, including digital, analog, analyzer, and JLink sources. It provides a unified DataFrame indexed by elapsed time and supports a variety of querying and verification operations for time-series channel data.

controller.py
# Initializing a CSV Controller controller = CSVController(output_folder="path/to/output") # Retrieving data within a specific time range df = controller.get_data_in_time_range( start_elap=0.0, end_elap=10.0, channels=['Digital 0'] ) # Verifying hold conditions is_hold = controller.verify_hold( expected_value="1", hold_time=0.04, channel="OVERSPEED", start_elap=0.025, deltaT=0.5 )

PWM Verification in setup

As part of step stopping usage of debug variables in the test scripts, we have implemented the methods to replace same piece of code. Below are the methods and logic behind each of it respectively for PWM logic alignment.

Motor Start Logic

Whenever wiper (based on active high = wiper is inactive at ~0 or negative volts or active low = wiper is inactive for ~3 volts) is applied, read the PWM-UL, VL & WL column to see the commuting that means values will either 1 or 0 for at least 20 samples (rows). From the time stamp we see this commutation, that is motor start time.

Wiper Applied Verification

Check if wiper pin/channel is set to desired voltage (as per active high and active low configurations) to ensure proper signal application before proceeding with motor commutation checks.