![]() |
3 years ago | |
---|---|---|
.gitattributes | 3 years ago | |
.gitignore | 3 years ago | |
20201224_135747.jpg | 3 years ago | |
Makefile | 3 years ago | |
README.md | 3 years ago | |
arduino-sketch.ino | 3 years ago | |
scope.grc | 3 years ago | |
serial_source_block.py | 3 years ago |
V_in - V_out = I_in * R_in
V_ref - V_out = I_ref * R_ref
V_out = (I_in + I_ref) * R_gnd
I_in = (V_in - V_out) / R_in
I_ref = (V_ref - V_out) / R_ref
V_out / R_gnd = I_in + I_ref =
= (V_in - V_out) / R_in + (V_ref - V_out) / R_ref
(V_in - V_out) / R_in = V_out / R_gnd - (V_ref - V_out) / R_ref
V_in - V_out = (V_out / R_gnd - (V_ref - V_out) / R_ref) * R_in
V_in = (V_out / R_gnd - (V_ref - V_out) / R_ref) * R_in + V_out =
= V_out * (1 + R_in / R_gnd + R_in / R_ref) - V_ref * R_in / R_ref
for V_out=0
:
V_in = -V_ref * R_in / R_ref
for V_out=Vref
:
V_in = V_ref * R_in / R_gnd + V_ref
rgco: Multichannel Arduino Oscilloscope
The 16MHz Arduino clock is too fast for the ADC to operate properly, therefore it needs to be prescaled. Prescale factors of 1 (no prescale) to 128 can be selected. By default, the Arduino IDE sets the prescale to 128, resulting in an ADC-clock period of 128/16MHz=8 microseconds, and thus a sampling period of
13*8=104
microseconds. Many tests have shown reducing the prescale to 16 results in only a slight loss of precision, while even faster clocks result in garbage.The Arduino ADC can be operated in single acquisition or free running mode. The standard analogRead() function does a single acquisition and returns the value when the ADC is ready. […], it is also possible to use a loop and poll for the ADIF flag which indicates that the ADC reading is complete, […]
By default, the ADC configuration of the Arduino gives samples every 116µs. So here the ADC is configured with additional lines of code to get samples faster than 85µs by setting the prescaler to 16. With this, you get ADC conversion every 20µs, […]