Skip to content

Latest commit

 

History

History
40 lines (31 loc) · 2.03 KB

README.md

File metadata and controls

40 lines (31 loc) · 2.03 KB

AutoVCO

ML-Driven Adaptive Voltage Controlled Oscillator

Through this project, a VCO will be able to adjust its output frequency and account for minor changes in temperature and input voltage.

Initial Analysis

Temperature Independent Ideal Frequency

image Let $V(t)$ be the voltage across capacitor $C_1$ with positive towards $V_2$. As $Q_1$ is assumed to be in the saturation region, current flows from $V_2$ to ground via resistor $R_1$ and capacitor $C_1$

$V(t) = V_{\infty} + [V_o - V_{\infty}]e^{-\frac{t}{RC}}$

On solving this, we get $f = \frac{1}{T} = \frac{1}{2RCln(1 + \frac{V_i}{V_c})}$ where $V_i, V_c$ are the input and control voltages respectively.

Data Analysis

Data was collected by simulating the circuit in MicroCap 12, with capacitance temperature coefficients optimized using Hooke's algorithm.

Temperature Dependence

2D plot

Temperature (Celsius) on the x axis and output frequency (Hz) on the y axis

Temperature and Voltage Dependence

3D plot

Temperature (Celsius) and control voltage (volts) on the horizontal plane, and output frequency (Hz) on the vertical axis

Neural Network

Using these data points, we trained a neural network using Tensorflow.

  • 3 hidden layers, 10 neurons each
  • RELU activation function
  • 500 epochs

This data was converted to a cpp header file for use inside Arduino IDE using tinymlgen.

Hardware implementation

We built the VCO circuit on a PCB, connected to an ESP32 loaded with the trained neural network. We then verified that the frequency is, indeed, self adaptive by heating the circuit upto 45 degrees Celsius.

Teammates