Skip to content
Snippets Groups Projects
Commit 0883c002 authored by Robert Hartung's avatar Robert Hartung
Browse files

adds first version

parent 0d549f59
No related branches found
No related tags found
No related merge requests found
File added
images/potatoscope/titlepicture.jpg

1.53 MiB

images/potatoscope/top_v2.jpg

1.82 MiB

\documentclass[%
a4paper,%
11pt,% <10pt, 9pt>
%style=screen,
%sender=bottom,
blue,% <orange, green, violet>
%rgb, <cmyk>
%mono
]{tubsbook}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage[hidelinks]{hyperref}
\usetikzlibrary{calc,positioning,fit,shapes,backgrounds}
\usepackage{float}
\title{PotatoScope}
\subtitle{User Manual}
\author{Robert Hartung}
\logo{\includegraphics{ibr_logos/ibr_en.pdf}}
% \titlepicture{infozentrum.jpg} % TODO(rh): PotatoScope picture
\titlepicture{./images/potatoscope/titlepicture.jpg}
\newcommand{\PS}{\emph{PotatoScope}\ }
%\input{TuColors.tex}
%\newcommand*{\Size}{2.5}%
\begin{document}
\maketitle[image,logo=left]
\tableofcontents
\chapter{Introduction}
The PotatoScope is a small micro-controller based, USB-powered oscilloscope that can be used to quickly measure other microcontrollers and microcomputers. Following feature have been implemented:
\section{Features}
\begin{itemize}
\item USB powered for easy usage
\item Different operating modes
% \item Does not require a computer to store measurements (SD card)
\item External trigger signals that can be used as markers
\item Parallel measurement of voltage and current
\item Comes with a powerful Command Line Interface (CLI) and a Graphical User Interface (GUI)
\item Up to 2MHz sample rate\footnote{Live mode only}
\end{itemize}
%\section{PotatoScope}
%For power supply the micro USB port (1) should be used.
\chapter{Hardware}
This chapter gives a short introduction into the \PS's hardware.
\section{Connectors}
The \PS has several connectors and other parts that are quickly explained in this section.
\begin{minipage}{0.4\textwidth}
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=0.5]
\node[anchor=south west,inner sep=0] (A) at (0,0) {\includegraphics[width=0.75\textwidth]{./images/potatoscope/top_v2.jpg}};
\node[black,fill=white] (usbport) at (4.4,11) {1};
\draw[red,ultra thick] ($(usbport.center)-(1,1)$) rectangle ($(usbport.center)+(0.9,0.6)$);
\node[black,fill=white] (sdcard) at (8,5.2) {2};
\draw[red,ultra thick] ($(sdcard.center)-(1.6,1.5)$) rectangle ($(sdcard.center)+(1.5,1.5)$);
\node[black,fill=white] (triggermarker) at (0.8,9.8) {3};
\draw[red,ultra thick] ($(triggermarker.center)-(0.3,1)$) rectangle ($(triggermarker.center)+(0.3,1)$);
\node[black,fill=white] (enable) at (5.9,1.2) {4};
\draw[red,ultra thick] ($(enable.center)-(0.3,0.6)$) rectangle ($(enable.center)+(0.3,0.6)$);
\node[black,fill=white] (jpadc) at (3.55,2.1) {5};
\draw[red,ultra thick] ($(jpadc.center)-(0.6,0.6)$) rectangle ($(jpadc.center)+(0.6,0.6)$);
\end{tikzpicture}
\caption{General}
\end{figure}
\end{minipage}
\hfill
\begin{minipage}{0.6\textwidth}
\begin{enumerate}
\item USB 2.0 Connector
\item SD Card
\item Trigger/Marker
\item Enable
\item Jumper for ADC Channels
\end{enumerate}
\end{minipage}
\subsection{Buttons}
There are two buttons on the \PS. One is used for resetting the device, the other one labeled with 'User' is not used at the moment.
\section{Resolution}
The ADC has a resolution of 12 bit. However, the final resolution of the scope depends on the voltage dividier and shunt resistor used. In general these can be exchanged to best fit the actual need. Following versions are available:
\begin{tabular}{c|c}
Shunt & Divider \\ \hline
& \\ \hline
& \\ \hline
& \\
\end{tabular}
\chapter{Software}
The Command Line Interface (CLI) program can be downloaded online~\footnote{\url{https://gitlab.ibr.cs.tu-bs.de/potatoscope/cli}}.
To start right away, the following command starts a measurement at 10000 kHz rate (\texttt{-r}) with a limit (\texttt{-l}) of 1000 samples.
Afterwards it waits for a notification (\texttt{-n}) of the new measurement (\texttt{--index}) and automatically retrieves the measurement.
The output format is CSV (\texttt{--csv}) and the values are automatically converted to voltage and current (\texttt{--convert}).
\newline
\noindent
\textbf{WARNING: This command might require to press the reset button of the \PS after every measurement.}
\begin{verbatim}
$> potatoscope -m S -r 10000 -l 1000 -n --index --csv --convert
\end{verbatim}
\chapter{Measuring}
\begin{figure}[htb]
\tiny
\begin{tikzpicture}[node distance=0.1cm,minimum width=1cm]
% Marker
\node[draw,circle,fill=tuMediumOrange60] (trigger1) {T1};
\node[draw,circle,below=of trigger1,fill=tuMediumOrange60] (trigger2) {T2};
\node[draw,circle,below=of trigger2,fill=tuMediumOrange60] (trigger3) {T3};
\node[draw,circle,below=of trigger3,fill=tuMediumOrange60] (trigger4) {T4};
% JTAG
\node[draw,circle,right=12cm of trigger4,yshift=-1cm,white,fill=tuBlack] (gnd-20) {GND};
\node[draw,circle,below=of gnd-20,white,fill=tuBlack] (gnd-18) {GND};
\node[draw,circle,below=of gnd-18,white,fill=tuBlack] (gnd-16) {GND};
\node[draw,circle,below=of gnd-16,white,fill=tuBlack] (gnd-14) {GND};
\node[draw,circle,below=of gnd-14,white,fill=tuBlack] (gnd-12) {GND};
\node[draw,circle,below=of gnd-12,white,fill=tuBlack] (gnd-10) {GND};
\node[draw,circle,below=of gnd-10,white,fill=tuBlack] (gnd-8) {GND};
\node[draw,circle,below=of gnd-8,white,fill=tuBlack] (gnd-6) {GND};
\node[draw,circle,below=of gnd-6,white,fill=tuBlack] (gnd-4) {GND};
\node[draw,circle,below=of gnd-4,fill=tuRed] (vcc-2) {3.3V};
\node[draw,circle,right=of vcc-2,fill=tuRed] (vcc-1) {3.3V};
\node[draw,circle,right=of gnd-4,black,fill=tuMediumBlue60] (jtag-3) {!RST};
\node[draw,circle,right=of gnd-6,black,fill=tuMediumBlue60] (jtag-5) {TDI};
\node[draw,circle,right=of gnd-8,black,fill=tuMediumBlue60] (jtag-7) {TMS};
\node[draw,circle,right=of gnd-10,black,fill=tuMediumBlue60] (jtag-9) {TCK};
\node[draw,circle,right=of gnd-12,black,fill=tuGray20] (jtag-11) {NC};
\node[draw,circle,right=of gnd-14,black,fill=tuGray20] (jtag-13) {NC};
\node[draw,circle,right=of gnd-16,black,fill=tuGray20] (jtag-15) {NC};
\node[draw,circle,right=of gnd-18,black,fill=tuGray20] (jtag-17) {NC};
\node[draw,circle,right=of gnd-20,black,fill=tuGray20] (jtag-19) {NC};
% IO
\node[draw,circle,below=8cm of trigger3,fill=tuGray60] (adc3) {ADC3};
\node[draw,circle,below=of adc3,fill=tuGray60] (adc4) {ADC4};
\node[draw,circle,below=of adc4,fill=tuGray60] (tx) {TX};
\node[draw,circle,below=of tx,fill=tuGray60] (rx) {RX};
\node[draw,circle,below=1cm of rx,fill=tuYellow60] (jpvcc) {$V_{CC}$};
\node[draw,circle,right=of jpvcc,fill=tuYellow60] (jpdivider) {Div};
\node[draw,circle,below=0.5cm of jpvcc,fill=tuYellow60] (connvcc) {$V_{CC}$};
\node[draw,circle,right=of connvcc,fill=tuYellow60] (gnd2) {GND};
%\node[draw,circle,below=of connvcc,fill=tuYellow60] (out2) {OUT2};
%\node[draw,circle,right=of out2,fill=tuYellow60] (gnd3) {GND};
\node[draw,circle,below=1cm of connvcc,fill=tuYellow60] (out1) {OUT};
\node[draw,circle,right=of out1,fill=tuYellow60] (in1) {IN};
\node[left=of out1] {\normalsize$V_{INGA}$};
\node[right=of in1] {\normalsize 3,3V};
\node[left=of connvcc] {\normalsize$V_{CORE}$};
%\node[draw,circle,right=of gnd3,fill=tuYellow60] (3v3) {3,3V};
%\node[draw,circle,right=of 3v3,fill=tuYellow60] (in2) {IN2};
%\node[draw,circle,right=of in2,fill=tuYellow60] (5v) {5V};
\draw[ultra thick] (jpvcc) -- (connvcc);
\node[draw,circle,right=3cm of in1,fill=tuLightGreen] (jpu) {U};
\node[draw,circle,right=of jpu,fill=tuLightGreen] (jpi) {I};
\node[draw,circle,above=of jpu,fill=tuLightGreen] (adc1) {ADC1};
\node[draw,circle,above=of jpi,fill=tuLightGreen] (adc2) {ADC2};
\draw[ultra thick,dashed] (jpu) -- ++(-0.75cm, 0) |- (jpdivider);
\draw[ultra thick,dashed] (jpi) -- ++(0, -1cm) |- ($(in1)!0.5!(out1)+(0,-1)$) -- ($(in1)!0.5!(out1)$);
\begin{pgfonlayer}{background}
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(jpvcc) (jpdivider),fill=gray,label=left:{\normalsize Jumper 1}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(jpu) (adc1),fill=gray,label={[rotate=90,right]above:{\normalsize JP ADC1}}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(jpi) (adc2),fill=gray,label={[rotate=90,right]above:{\normalsize JP ADC2}}] {};
\end{pgfonlayer}
\end{tikzpicture}
\caption{PotatoScope V1 pin headers}
\end{figure}
\begin{figure}[htb]
\tiny
\begin{tikzpicture}[node distance=0.1cm,minimum width=1cm]
\node[draw,circle,fill=tuMediumOrange60] (trigger1) {T1};
\node[draw,circle,below=of trigger1,fill=tuMediumOrange60] (trigger2) {T2};
\node[draw,circle,below=of trigger2,fill=tuMediumOrange60] (trigger3) {T3};
\node[draw,circle,below=of trigger3,fill=tuMediumOrange60] (trigger4) {T4};
\node[draw,circle,below=0.5cm of trigger4,fill=tuMediumBlue40] (vcc) {VCC};
\node[draw,circle,below=of vcc,fill=tuMediumBlue40] (clk) {CLK};
\node[draw,circle,below=of clk,fill=tuMediumBlue40] (gnd) {GND};
\node[draw,circle,below=of gnd,fill=tuMediumBlue40] (swdio) {SWDIO};
\node[draw,circle,below=of swdio,fill=tuMediumBlue40] (nrst) {NRST};
\node[draw,circle,below=of nrst,fill=tuMediumBlue40] (tdo) {TDO};
\node[draw,circle,below=0.5cm of tdo,fill=tuGray60] (tx) {TX};
\node[draw,circle,below=of tx,fill=tuGray60] (rx) {RX};
\node[draw,circle,below=1cm of rx,fill=tuYellow60] (jpvcc) {$V_{CC}$};
\node[draw,circle,right=of jpvcc,fill=tuYellow60] (jpdivider) {Div};
\node[draw,circle,below=0.5cm of jpvcc,fill=tuYellow60] (connvcc) {$V_{CC}$};
\node[draw,circle,right=of connvcc,fill=tuYellow60] (gnd2) {GND};
\node[draw,circle,below=of connvcc,fill=tuYellow60] (out2) {OUT2};
\node[draw,circle,right=of out2,fill=tuYellow60] (gnd3) {GND};
\node[draw,circle,below=of out2,fill=tuYellow60] (out1) {OUT1};
\node[draw,circle,below=of gnd3,fill=tuYellow60] (in1) {IN1};
\node[draw,circle,right=of gnd3,fill=tuYellow60] (3v3) {3,3V};
\node[draw,circle,right=of 3v3,fill=tuYellow60] (in2) {IN2};
\node[draw,circle,right=of in2,fill=tuYellow60] (5v) {5V};
\node[draw,circle,right=0.5cm of 5v,fill=tuLightGreen] (jpu) {U};
\node[draw,circle,right=of jpu,fill=tuLightGreen] (jpi) {I};
\node[draw,circle,above=of jpu,fill=tuLightGreen] (adc1) {ADC1};
\node[draw,circle,above=of jpi,fill=tuLightGreen] (adc2) {ADC2};
\draw[ultra thick] (jpvcc) -- (connvcc);
\draw[ultra thick] (out1) -- (out2);
\draw[ultra thick] (in2) |- (in1);
\draw[ultra thick,dashed] (jpu) -- ++(-0.75cm, 0) |- (jpdivider);
\draw[ultra thick,dashed] (jpi) -- ++(0, -1cm) |- ($(in1)!0.5!(out1)+(0,-1)$) -- ($(in1)!0.5!(out1)$);
\begin{pgfonlayer}{background}
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(jpvcc) (jpdivider),fill=gray,label=left:{\normalsize Jumper 1}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,dashed,fit=(connvcc) (out2),label=left:{\normalsize Jumper 2}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(jpu) (adc1),fill=gray,label={[rotate=90,right]above:{\normalsize JP ADC1}}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(jpi) (adc2),fill=gray,label={[rotate=90,right]above:{\normalsize JP ADC2}}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(3v3) (in2),dashed,label={[rotate=90,right]above:{\normalsize Supply 3,3V}}] {};
\node[draw,rectangle,rounded corners=0.2cm,inner sep=0.05cm,fit=(5v) (in2),dashed,label={[rotate=90,right]above:{\normalsize Supply 5V}}] {};
\end{pgfonlayer}
\end{tikzpicture}
\caption{PotatoScope V2 pin headers}
\end{figure}
\section{PotatoScope V1}
This section describes how to measure different devices with the different version of the \PS.
\subsection{INGA (red, Version 1.6)}
To measure a red INGA sensor node (version 1.6) connect one of the red 3,3V pins to IN (labed with 3,3V).
Afterwards connect OUT (labeled $V_{INGA}$) to the supply voltage of the INGA.
Finally one ground pin of INGA should be connected to any of the GND pins of the \PS.
\section{PotatoScope V2}
This section gives a short introduction on how to generally measure currents and voltages with the \PS. Your \emph{Supply Voltage} should be connected to \emph{IN1}. The output \emph{OUT1} should be connected to your device's supply pin. Make sure to use on of the \emph{GND} pins to connect the grounds.
To measure the supply voltage, add both \emph{Jumper 1} and \emph{Jumper 2}. Also make sure to add \emph{JP ADC1} and \emph{JP ADC2}.
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment