source: firmware/FSC/doc/FSC_for_me.tex@ 20115

Last change on this file since 20115 was 10668, checked in by neise, 14 years ago
File size: 15.2 KB
Line 
1\documentclass[a4paper]{article}
2
3\setlength{\topmargin}{0mm} %1 inch is always there!
4\setlength{\oddsidemargin}{0mm} %1 inch is always there!
5\setlength{\evensidemargin}{0mm} %1 inch is always there!
6
7\setlength{\textwidth}{16cm}
8\setlength{\textheight}{25cm}
9
10
11\setlength{\headheight}{0mm}
12\setlength{\headsep}{0mm}
13
14
15
16%um die deutschen Umlaute eingeben zu können
17% müssen diese 3 Pakete eingebunden werden.
18% welches der Pakete was macht, weiss ich nicht.
19\usepackage[T1]{fontenc}
20\usepackage[latin1]{inputenc}
21%\usepackage{ngerman} % nur wenn z.B. 'Inhaltsverzeichnis' auch deutsch sein soll.
22
23\usepackage{graphicx} % for pictures
24\usepackage{float} % for figures with english descriptions
25
26\restylefloat{figure} % can nor force it with H
27\restylefloat{table} % can nor force it with H
28
29\title{FSC - facts about the board}
30\author{D. Neise}
31\date{07.02.2011}
32
33\begin{document}
34
35%title page contains TOC
36\maketitle
37\tableofcontents
38%\newpage
39
40%\listoffigures
41%\listoftables
42
43\section{Basic Facts and Purpose}
44% no pictures in SVN repos ... no space.
45%\emph{picture here - 3D model of FSC}
46
47This document presents electronic facts and figures of FACTs FSC board. FSC stands for {\bf F}act {\bf S}low {\bf C}ontrol. The name is a bit misleading, since the boards sole purpose is to monitor slowly changing parameters, such as:
48\begin{itemize}
49 \item up to 64 temperatures (RTD sensors, e.g. Pt1000 or Pt100),
50 \item up to 4 humidities (designed for Honeywell HIH-40xx family),
51 \item the DC levels of all 36 FACT low voltage supply channels,
52 \item the current consumption on each LV-channel (actually a dc-voltage\footnote{see FLV specs for further details}).
53\end{itemize}
54
55FSC uses an 8MHz ATmega32L micro controller(MCU) to readout the muxed 24bit sigma delta ADC (AD7719) which is connected to the RTDs. In addition the ATmegas internal 10bit ADC is used to monitor the humidity, LV-voltages and LV-currents.
56The muxers on FSC belong to analog devices ADG77xx family, and are controlled by the MCU.
57The User has access to FSC via Ethernet Interface, provided by WIZNETs W5100, the younger brother of W5300, which is used on FACTs FAD boards.
58
59AD7719 and W5100 communicate with the MCU via an SPI bus, which results in the fact, that a lot of user interaction might slow down temperature measurement or vice versa. Additionally the user should be aware, that sigma delta ADCs have a prolonged settling time, when muxed. Redout of all 64 temperature channels takes about 13s, while one single channel might be readout with at a rate of 10Hz. In addition FSC runs a 32bit timer, counting miliseconds since timer init. The timer is initialized to zero, when FSC is powered. User may synchronize FSCs timer to Unix time.
60
61\subsection{Measuring}
62\label{sec_measuring}
63[This piece should not be published]
64FSC knows two measurement modes ({\bf note:} \emph{free running} mode will not be implemented in the first firmware version).
65The second mode is \emph{free running}. In free running mode FSC measures all activated sensors and stores their value and time tuples. Once all sensors were measured, FSC returns a measurement telegram. Additionally one can tell FSC how often it should start a measurement cycle.
66
67
68The first is \emph{on demand}. When FSC measures on demand, user may send a command telling FSC, what to measure. FSC will measure it and return the result, right after the measurement was finished. It is possible to tell FSC to measure several sensors at a time.
69Users may issue an 'activate' command (see table \ref{tbl_FSC_CMDS}), to specify which channel should be measured during the next measurement phase. In case one is not sure which channel was activated beforehand users may issue a 'status' command, to gather information about FSCs current status. When ever the user completed the channel activation process the 'measure' commands may be issued. Since the high resolution ADC AD7719 used for resistance measurement and the 10bit ADC used for voltage measurement run independently on different time scales, different 'measure' commands are defined. 'measure resistances' will start a measurement possibly taking some seconds, while 'measure voltages' will be ready almost instantaneosly.
70Since a measurement might take some time, FSC generates an answer, once the 'measure' command received, informing the user about the command reception. The results are then submitted in a single message to the user, which is called a telegram.
71During a 'measure resistance' FSC is not checking for incoming commands. So incoming commands will pile up in W5100 input FIFO. Which means, sending a lot of on demand commands will delay FSCs reaction to the following commannds consecutivly.
72
73\subsubsection{RTD switching}
74FSCs high resolution ADC AD7719 only bears one single input channel. So the RTDs are beeing multiplexed during the resistance measurement. This multplexing includes the RTDs current supply of about $400\,{\mu}A$. In case the RTDs are near to FACTs G-APD signal lines, low frequency crosstalk might be induced due to these switching processes.
75In case of FACT there might be two families of RTDs. About 30 pieces will be mounted next to the G-APDs, while a smaller number of sensors will be mounted in the electronics compartement, where this kind of noise will not contribute much.
76
77
78\subsection{The Telegram}
79As previously outlined the results of a measurement will be submitted in a single message called telegram. The format of this telegram is given in table (\ref{tbl_telegram}). Despite the fact that the measurement of several RTDs might take several seconds, the storage and transmission of the time of each temperature measurement is regarded as too much overhead, hence the time of the last measurement taken for a telegram is submitted within. Subsequent all activated sensor measurement results are beeing transmitted. A result always consists of a sensor ID and the actual data. Detailed information about the composition of the sensor ID can be found in table (\ref{tdl_sensor_id}). The data might be either 3 byte in case of an RTD or 2 byte in case of all other sensors. For detailed information of sensor data see section \ref{sec_sensor_data}.
80\begin{table}[htpb]
81\begin{tabular}{|l|l|l|}
82\hline
83address & mnemonic & description \\
84\hline
85byte 0 & 0x00 & special telegram header \\
86byte 1..2 & length & length of telegram in byte \\
87byte 3...6 & time & time, when measurement was finished.\\
88byte 7 & sensor ID 0 & \\
89byte 8..x & data 0 & data field is eigther 2 or 3 byte wide. \\
90 & & depending of sensor type. \\
91\hline
92byte ... & ... & sensor IDs and data until end.\\
93\hline
94\end{tabular}
95\caption{composition of FSC telegram}
96\label{tbl_telegram}
97\end{table}
98
99\begin{table}[htpb]
100\begin{tabular}{|l|l|l|}
101\hline
102ID bits & meaning \\
103\hline
10400pp.psss & temperatur sensor no. sss on port ppp \\
10501vv.vvvv & voltage sensor no. vvvvvv (between 0..35) \\
10610cc.cccc & current sensor no. cccccc (between 0..35)\\
1071100.0hhh & humidity sensor no. hhh \\
1081110.00aa & accelerometer channel no. aa (x, y or z) \\
109&\\
110... & to be completed \\
111\hline
112\end{tabular}
113\caption{composition of the sensor ID - ad exemplum}
114\label{tdl_sensor_id}
115\end{table}
116
117\subsection{Sensor Data}
118\label{sec_sensor_data}
119FSC supports many different sensors. The first type is any resistive sensor, such as RTDs. The second type is any sensor outputting a voltage between 0VDC and 4.096VDC. In order to keep the firmware independent from the sensors and to keep it as simple as possible, the measured data is treated as less as possible before beeing output.
120
121Since the resistance measurement is perfomed in a ratiometric manner, the resistance is measured as a 24bit fraction of an onboard fix reference resistor of $\mathrm{R_{ref}} \approx 6.25 \mathrm{k\Omega}$ (see table \ref{tbl_REG_overview}). The value of $\mathrm{R_{ref}}$ is not stored as a constant value, so the user should measure its value once and submit it to the FSC. In case no value is submitted, $\mathrm{R_{ref}} = 6.25\,k\Omega$ is assumed.
122FSC does not multiply the measured fraction with the reference resistance. Hence the resistance is unknown on FSC and cannot be transformed into a temperature. Similarly the current of the low voltage supply channels, which is converted into a voltage level and measured by FSC is not beeing treated in any way by the MCU but directly transmitted to the user via ethernet.
123The format of each sensor data is given in table \ref{tbl_sensor_data_format}.
124\begin{table}[htpb]
125\begin{tabular}{|l|l|l|l|l|l|}
126\hline
127sensor name & actual physical value & resolution & width & format & unit \\
128\hline
129temperature & resistance &24 or 16 bit & 24 & unsigned int & fraction of $\mathrm{R_{ref}}$ \\
130humidity & voltage & 10 bit & 16 & unsigned int & V \\
131voltage & voltage & 10 bit & 16 & unsigned int & V \\
132current & voltage & 10 bit & 16 & unsigned int & V \\
133accelerometer & acceleration & 24 bit & 24 & signed int & $\mathrm{mg} \approx 9.81 \frac{\mathrm{mm}}{\mathrm{s^2}}$ \\
134\hline
135\end{tabular}
136\caption{sensor data format}
137\label{tbl_sensor_data_format}
138\end{table}
139
140
141
142
143\section{Ethernet Interface}
144FSC runs as a TCP/IP server, this means after W5100 was initialized, FSC will listen on a Port, but will not attempt to connect to any server. Since W5100 does not support DHCP, FSC has a fix IP\footnote{see FACT Elogbook / doc}. The Port is defined as 5000.
145For simplicity of firmware coding, the UI is non human readable. Table (\ref{tbl_FSC_CMDS}) shows which commands are defined (so far).
146Some commands need parameters others don't. Table (\ref{tbl_FSC_CMD_PACKAGE}) shows how a message containing a command is defined.
147Since TCP/IP packages on the ethernet might be delayed up to minutes timescale it is handy to identify command packages by a (nearly-)unique ID instead of its time only. So when the user receives an answer of the FSC, it is possible to relate it to a specific command.
148Generally FSC copies the package ID of a given command package into its answer.
149
150The following commands are defined:
151\begin{table}[htpb]
152\begin{tabular}{|l|l|l|}
153\hline
154command & function & description \\
155\hline
1560x00 & -reserved- & -reserved- \\
1570x01 & status & returns entire FSC registers. see table (\ref{tbl_REG_overview}) \\
1580x02 & write reg(U8 addr, U8 data) & write data to register address \\
1590x03 & read reg(U8 addr) & return only specified register \\
1600x?? & measure active R-channels & see see \ref{sec_measuring} \\
1610x?? & measure active V-channels & see ... \\
1620x?? & measure all active channels & see ... \\
1630x?? & set timer(U32 data) & set internal timer \\
1640x?? & start timer & start timer after setting. see \ref{sec_time_register}\\
1650x?? & stop timer & stop timer before setting. \\
1660x?? & FR mode & start free running mode \\
167&&\\
168... & ... & to be completed \\
169&& \\
1700xFF & reset & reset all internal registers and peripherals \\
171\hline
172\end{tabular}
173\caption{FSC commands}
174\label{tbl_FSC_CMDS}
175\end{table}
176
177\begin{table}[htpb]
178\begin{tabular}{|l|l|l|}
179\hline
180address & mnemonic & description \\
181\hline
182byte 0 & command & see table\ref{tbl_FSC_CMDS}\\
183byte 1 & package ID & (nearly-)unique package identifier \\
184byte 2 & length & length of data section - if apropriate\\
185byte 3..1k & data & parameters for command - if apropriate\\
186\hline
187\end{tabular}
188\caption{composition of FSC commands}
189\label{tbl_FSC_CMD_PACKAGE}
190\end{table}
191
192FSC answers with a short acknowledgement to any command. An acknowledgement contains the command in the first byte and the (nearly-)unique package ID of the command package in the second byte.
193\begin{table}[htpb]
194\begin{tabular}{|l|l|l|}
195\hline
196address & mnemonic & description \\
197\hline
198byte 0 & command & command, which caused this acknowledgement \\
199byte 1 & package ID & package ID of the command package \\
200\hline
201\end{tabular}
202\caption{composition of FSCs acknowledgement}
203\label{tbl_FSC_ACK}
204\end{table}
205
206If the user issued a measurement command, a telegram is beeing send whenever the measurement is done. In case of free running mode even several telegrams will be submitted. In order to distinguish a telegram from a command acknowledgement, the first byte is always 0x00, see table (\ref{tbl_telegram}).
207
208%\newpage
209\subsection{FSC Registers}
210Table \ref{tbl_REG_overview} shows an overview of the FSC registers. Most registers may be read and written. Only the first two registers are readonly. Detailed descriptions of the register contents (will) follow. All registers are 8bit wide.
211\begin{table}[htpb]
212\begin{tabular}{|l|l|l|}
213\hline
214{\bf address} & {\bf name} & {\bf description } \\
215\hline
2160x00 & status3 & status register. TBR \\
2170x01 & status2 & see \ref{sec_status_register} \\
2180x02 & status1 & \\
2190x03 & status0 & \\
2200x02 & time\_s3 & current time in secondsMSB\\
2210x03 & time\_s2 & see \ref{sec_time_register}\\
2220x04 & time\_s1 & \\
2230x05 & time\_s0 & current time in seconds LSB\\
2240x08 & time\_ms1 & current time, fraction of miliseconds MSB\\
2250x09 & time\_ms0 & -the same- LSB\\
2260x0A & FRperiod1 & time in seconds between two free running measurements MSB\\
2270x0B & FRperiod0 & -the same- LSB\\
2280x0C & RREF1 & reference resistor value in ohms (MSB) \\
2290x0D & RREF0 & reference resistor value in ohms (LSB) \\
2300x10 & TempEn7 & \\
2310x11 & TempEn6 & \\
2320x12 & TempEn5 & \\
2330x13 & TempEn4 & \\
2340x14 & TempEn3 & \\
2350x15 & TempEn2 & \\
2360x16 & TempEn1 & \\
2370x17 & TempEn0 & bitmap defining which channel \\
2380x18 & HumiEn0 & is activated\\
2390x19 & AcceEn0 & \\
2400x1a & VoltEn4 & \\
2410x1b & VoltEn3 & \\
2420x1c & VoltEn2 & \\
2430x1d & VoltEn1 & \\
2440x1e & VoltEn0 & \\
2450x1f & CurrEn4 & \\
2460x20 & CurrEn3 & \\
2470x21 & CurrEn2 & \\
2480x22 & CurrEn1 & \\
2490x23 & CurrEn0 & \\
2500x30 & TempDone7 & \\
2510x31 & TempDone6 & \\
2520x32 & TempDone5 & \\
2530x33 & TempDone4 & \\
2540x34 & TempDone3 & \\
2550x35 & TempDone2 & \\
2560x36 & TempDone1 & \\
2570x37 & TempDone0 & bitmap defining which channel \\
2580x38 & HumiDone0 & is already measured\\
2590x39 & AcceDone0 & \\
2600x3A & VoltDone4 & \\
2610x3B & VoltDone3 & \\
2620x3C & VoltDone2 & \\
2630x3D & VoltDone1 & \\
2640x3E & VoltDone0 & \\
2650x3F & CurrDone4 & \\
2660x40 & CurrDone3 & \\
2670x41 & CurrDone2 & \\
2680x42 & CurrDone1 & \\
2690x43 & CurrDone0 & \\
270... & ... & to be completed \\
271 \hline
272\end{tabular}
273\caption{FSC registers}
274\label{tbl_REG_overview}
275\end{table}
276
277\subsubsection{Status Registers}
278\label{sec_status_register}
279
280
281\subsubsection{Time Registers}
282\label{sec_time_register}
283Here the current time is stored. Four registers are used to store the current time in seconds, so the current unix time might be
284transfered to FSC after power up. Additionaly two registers store the current time in milisenconds. This register cannot be set by the user.
285When the user wants to synchronize FSC to the current time, first the timer should be stopped by issuing the 'stop timer' command. Then the Time Registers should be written and finally the 'start timer' command should be sent, causing the milisecond registers to be reset as well.
286
287\subsubsection{The Enable Registers}
288\label{sec_enable_registers}
289Most probably not every input channel will be connected to a sensor. In order not to measure unconnected channels, the user may define, which sensor is active, by writing to the registers, TempEnx, HumiEnx, AcceEnx, VoltEnx and CurrEnx the apropriate bitpattern.
290
291\subsubsection{Free Running Period Register}
292\label{sec_fr_period_register}
293
294\subsubsection{Ideas for more registers}
295\label{sec_register_ideas}
296
297%\appendix
298\end{document}
Note: See TracBrowser for help on using the repository browser.