Below you can find a list of some of the projects I have been working/worked on.

Electrical Engineering projects

IV & CV automated curve tracer LabVIEW application

Development and testing of an IV & CV automated curve tracer application in LabVIEW.

The application has the following features:

  • Trace IV or CV (single and multiple) characteristics of electrical/electronic component.
  • Independent and dependent bias voltage sources (the second bias can be set as a function of the first one).
  • The main voltage source and the bias source(s) can be chosen among 6 different instruments (Yokogawa 7651, Keithley 6487, Keithley 6430, TTI QL-355TP, ISEG NHQ223M and CAEN DT5470P.
  • Yokogawa 7651 can also be used as a constant current source.
  • Up to 4 simultaneous current measurements and up to 2 simultaneous voltage measurements using Keithley 6485, Keithley 6487, Keithley 6430 and Agilent 34970A.
  • Capacity measurements are performed using Agilent 4263B. The parameters measured by default are Cp (equivalent parallel capacitance) and delta, however other parameters can be measured too.
  • Main functions/settings of the instruments can be set by remote (current/voltage compliance, digital filters, math, integration time, etc...).
  • External average function with a number of points specified by the user.
  • Measurements report in html format with a graph for each measured quantity.
  • Save/Load measurement configuration.
  • Measurement data can be loaded back into the application, printed and reviewed at a later stage.
  • Online operational help guide (available at https://goo.gl/FH7cPy and still under development).
  • Detailed instruction manual in pdf.

The application has been tested as follows:

  • Tracing of IV characteristics of diodes, N-JFETs and NPN transistors. Some testing was also done on high value resistors (> 100 MOhm) in order to test the current measuring capabilities of the Keithley 6430 Sub-Femtoamp Remote SourceMeter.
  • Tracing of CV characteristics of different kind of capacitors (ceramic and polyester) and tracing of the Cgs Vgs curve as Vds changes for the BF862 and 2N4416 N-JFET.

During the development of the application, the LabVIEW drivers of Keithley 6487 and Agilent 4263B available on the Instrument Driver Network were edited by correcting some small mistakes and by implementing the use of some features of the instruments which were not available originally.

Detailed examples of measurements are available at: https://goo.gl/FH7cPy.

Low and medium voltage electrical distribution lines design

This project was part of an assignment we were given during the third year. The project aims at designing: 5 low voltage transmission lines (230-400V), a medium voltage line (20kV), a power factor correction system, safety circuit breakers and switches, and distribution transfomer.

The project has been completed according to the 2016 italian regulatory framework for electrical power distribution. You can find the complete report, calculations and datasheets here.

A circuit to automate the garden lights

In order to automate my garden lights I designed a circuit and after testing the prototype I designed and ordered a PCB version of the circuit.

This project was particulary useful since I went through most of the steps in the production of a PCB, from the design of the circuit to the PCB layout, soldering and testing.

The design process and workings of the circuit is explained in this blog post while the project official page is here.

Fast Regional Train Simulation

The project aims to model a fast regional train along a segment of the railway line Milano-Genova. This is a project I was assigned during my studies.

The project is structured as follows:

  1. Simulation written in Python.
  2. Simulation data results in .csv.
  3. Report in pdf containing the traction diagrams.

The project official page is here.

DC motor control simulation in Simulink/MATLAB

A Simulink/MATLAB simulation of a control loop for a DC motor. Two control strategies have been implemented through the use of a PI regulator: linear voltage control and PWM control. You can find more about the project at its official page.

Electromagnetics Simulations with Finite Element Method Magnetics

This is a collection of simulations I made using Finite Element Method Magnetics.

The simulations also include the calculated output result and revolve mostly around basic magnetic structures and cables. More specifically:

  • C shaped ferromagnetic core with fed coil and 1 air gap
  • Simple single phase PVC cable with and without air gap
  • C shaped ferromagnetic core with fed coil and 2 air gaps
  • Four salient poles ferromagnetic structure (rotor and stator) 1
  • Four salient poles ferromagnetic structure (rotor and stator) 2
  • C shaped ferromagnetic core with permanent magnet (magnetic short circuit, air gap, permanent magnet in air)
  • Three phase cable

You can find more details at the offical project page.

Circuits simulations in LTSpiceIV

This is my personal collection of circuits simulations in LTSpiceIV. At some point in time I simulated each one of these circuits and analyzed them. Sometimes I’d simulate a circuit we studied in class, other times I tested a theory and/or my understandings of a particular circuit, some other times I’d just simulate a design I found on the internet and other times I’d simulate a circuit I tried to build.

More details are available at the official project page.

CAD drawings repository

This is a repository where I store some of my CAD drawings and 3D models. More information and the drawings are available at the official project page.


Collaborative-team projects

MilanoR blog and Quantide

I have started a collaboration with Quantide who is sponsoring MilanoR quote "a users group dedicated to bringing together area practitioners". So far these are the projects I have been working / have worked on:

  1. Writing articles about R for MilanoR. For a list of articles I wrote for MilanoR please check this page.
  2. Developed Chartconstants, an R package for calculating Shewhart quality control chart constants.
  3. Developing Qanalyst, an R package for calculating Shewhart quality control charts and plotting them. This project is still under development
  4. Developed Qcholorphyll, an R package for geographical chlorophyll analysis. The aim of Qchlorophyll is to be able to analyze satellite data, calculate summary statistics on the variables of interest, then apply machine learning techniques (both unsupervised such as kmeans and supervised such as random forest) in order to predict bloom start in the selected marine bioregion (supervised task) and group similar bioregions together (unsupervised task). Qchlorophyll provides a set of functions for changing the resolution of geographical spatial data and images, as well as a set of functions for loading data from netcdf files with different data formatting and resolution. Here you can find a short article on marine bioregions by the researcher who commissioned me the Qchlorophyll package.
  5. Translated beginner R course "Introduction to R" on Datacamp from english to italian.

For a list of the technical articles I wrote for MilanoR, please check this page.

Datascience+

I contributed to Datascience+, a multi-author project website aimed at providing different levels tutorials for R. DSP is a highly valuable resource for everyone who would like to learn R and needs to start from scratch or even R-users who would like to improve their knowledge of R. You can check my posts both at Datascience+ or R-bloggers. I have been pleaseantly surprised when I found out that three out of the four posts I wrote for DSP were among the "top 100 most read R posts in 2015" in the Rbloggers site, which I regard as one of the best reference points of the R community. Namely these posts are:

  1. "How to perform a Logistic Regression in R", 6th place.
  2. "Fitting a neural network in R; neuralnet package", 13th place.
  3. "Imputing missing data with R; MICE package", 42th place.

For a list of articles I wrote for Datascience+, please check this page.


Personal projects

The Beginner Programmer.

My personal blog The Beginner Programmer is a collection of experiments and applications of my knowledge of machine learning, programming and engineering. Whenever I read about something and find it interesting I may write some code about it and then turn it into a short article. The Beginner Programmer is listed on Rbloggers and is a regular contributor of posts to the R community. You can find the relevant posts of The Beginner Programmer listed on Rbloggers at this page, Planet Python and StatsBlogs.


Publications

Alice, M., 2014, Una introduzione alla teoria delle copule, Munich, GRIN Verlag.

As of now, only italian version is available. Available as an online reading for free at Grin or as a payed pdf or printed book copy. I also wrote some tutorials on how to start using copulas in R, the most interesting, in my opinion is this two part piece: How to fit a copula model in R part 1 and How to fit a copula model in R part 2.

Alice, M., Pejovski, D., Cristaldi, L., Remaining Useful Life Estimation of Industrial Circuit Breakers by Data-Driven Prognostic Algorithms Based on Statistical Similarity and Copula Correlation, in 16th IMEKO TC10 Conference “Testing, Diagnostics & Inspection as a comprehensive value chain for Quality & Safety”, Berlin, September 2019

This is a paper presented at 16th Imeko TC10 conference in Berlin. The paper presents two algorithms based on copulas to predict the remaining useful life of industrial circuit breakers.


Other side projects

I use side projects as a way to learn how to use a programming language or any other tool I am interested in learning. It makes the learning process more fun and has lets you immediately apply what you have just read on the manual/book.

Arduino-Comm-Class

This is a programm written in Python used for exchanging data with your Arduino Uno board. It could probably used with other Arduino boards as long as they support serial port communication with your laptop but since I own just the Uno, I tested that particular board only. If you click on the project, you can find some example of application such as the estimation of the friction coefficient of a particular surface.

Control charts Shiny App

A Shiny application to plot control charts from a given .csv file. This was one of my first projects with Shiny and R. Given a .csv file with observations of as many variables as you like, you can plot the x-bar and s charts of the grouped observations. The chart will display one variable at a time.

PID controller

This project is a Python3 implementation of a PID controller algorithm with anti-wind up. There are some examples of application. The controller can optionally return the transfer function for further in-depth analysis in the frequency domain.

Option pricing class

Since I occasionally like to apply my coding skills to quantitative finance, I decided to write a simple program for calculating the price of plain vanilla call and put option using Monte Carlo simulation and Black & Scholes formula. This program was written also in Java and C++ as a pure coding exercise. Its results are detailed in related post and are close to those provided by Google Finance. You can find a more detailed explanation in [this post](http://firsttimeprogrammer.blogspot.com/2015/08/european-option-pricing-with-python.html.