Docu
This commit is contained in:
parent
f6f01b0510
commit
cb3c989683
@ -38,6 +38,7 @@ subprocess.call('doxygen Doxyfile.in', shell=True)
|
|||||||
extensions = [
|
extensions = [
|
||||||
'sphinx_rtd_theme',
|
'sphinx_rtd_theme',
|
||||||
'sphinx.ext.autodoc',
|
'sphinx.ext.autodoc',
|
||||||
|
'sphinx.ext.todo',
|
||||||
'sphinxcontrib.blockdiag',
|
'sphinxcontrib.blockdiag',
|
||||||
'breathe'
|
'breathe'
|
||||||
]
|
]
|
||||||
@ -74,3 +75,5 @@ breathe_default_members = ('members', 'undoc-members')
|
|||||||
|
|
||||||
blockdiag_html_image_format = 'SVG'
|
blockdiag_html_image_format = 'SVG'
|
||||||
blockdiag_latex_image_format = 'PDF'
|
blockdiag_latex_image_format = 'PDF'
|
||||||
|
|
||||||
|
todo_include_todos = True
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
.. _api:
|
.. _api:
|
||||||
|
|
||||||
Firmware Code Documentation
|
Important Code APIs
|
||||||
===========================
|
===================
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
.. _firmware:
|
.. _firmware:
|
||||||
|
|
||||||
Reflow Controller Firmware Internals
|
Reflow Controller Firmware
|
||||||
====================================
|
==========================
|
||||||
|
|
||||||
This chapter describes the internals of the reflow controller's firmware.
|
This chapter describes the reflow controller's firmware.
|
||||||
This is in most cases not intended to be a code documentation but an overview over the functional
|
This is in most cases not intended to be a code documentation but an overview over the functional
|
||||||
mechanisms and the behavior.
|
mechanisms and the behavior. For a detailed code documentation see the doxygen output.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
@ -24,7 +24,7 @@ The following block diagram shows the processing chain of the temperature signal
|
|||||||
ADC2RES [label= "Val -> Ohm", description="`Conversion from ADC value to resistance in Ohms <ADC Value to Ohm_>`_"]
|
ADC2RES [label= "Val -> Ohm", description="`Conversion from ADC value to resistance in Ohms <ADC Value to Ohm_>`_"]
|
||||||
MAVG [label="MAVG Filter", description="`Exponential Moving Average Filter`_"];
|
MAVG [label="MAVG Filter", description="`Exponential Moving Average Filter`_"];
|
||||||
RAW_HF [label="HF", shape = endpoint, description="High Frequency raw value reading"];
|
RAW_HF [label="HF", shape = endpoint, description="High Frequency raw value reading"];
|
||||||
PT1000 [label = "LF", shape = endpoint, description="Low Frequency PT1000 resistance value"]
|
PT1000 [label = "LF", shape = endpoint, description="Low Frequency PT1000 resistance value (see: `MAVG Filter <Exponential Moving Average Filter_>`_)"]
|
||||||
RAW_STREAM [label = "Stream", shape = endpoint, description="Raw value streaming"];
|
RAW_STREAM [label = "Stream", shape = endpoint, description="Raw value streaming"];
|
||||||
|
|
||||||
ADC -> WATCHDOG;
|
ADC -> WATCHDOG;
|
||||||
@ -106,3 +106,86 @@ and can be changed in code using
|
|||||||
After initial startup and after each change of the filter constant, the filter will set the :ref:`safety_flags_adc_unstable` flag for a defined sample count of:
|
After initial startup and after each change of the filter constant, the filter will set the :ref:`safety_flags_adc_unstable` flag for a defined sample count of:
|
||||||
|
|
||||||
.. doxygendefine:: ADC_FILTER_STARTUP_CYCLES
|
.. doxygendefine:: ADC_FILTER_STARTUP_CYCLES
|
||||||
|
|
||||||
|
The moving average filter's output signal is the Low Frequency (LF) PT1000 resistance signal used for internal PT1000 measurements.
|
||||||
|
|
||||||
|
Reading and Converting the PT1000 Value
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
Calibration
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
The functions
|
||||||
|
|
||||||
|
.. doxygenfunction:: adc_pt1000_set_resistance_calibration
|
||||||
|
:outline:
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
.. doxygenfunction:: adc_pt1000_get_resistance_calibration
|
||||||
|
:outline:
|
||||||
|
|
||||||
|
are used to set the reistance calibration internally. For a guide on how to calibrate the deivce, see the usage page.
|
||||||
|
|
||||||
|
.. todo:: Add link here
|
||||||
|
|
||||||
|
The calibration is calculated the following way:
|
||||||
|
|
||||||
|
.. blockdiag::
|
||||||
|
:desctable:
|
||||||
|
|
||||||
|
blockdiag {
|
||||||
|
orientation = portrait;
|
||||||
|
|
||||||
|
LF [label="LF", shape=beginpoint, description="Low Frequency PT1000 Value"];
|
||||||
|
SENS [label="Sens", description="Sensitivity Correction :math:`\sigma`"];
|
||||||
|
OFFSET [label="Offset", description="Offset Correction :math:`O`"];
|
||||||
|
OUT [shape=endpoint, description="Corrected Value"];
|
||||||
|
|
||||||
|
LF -> SENS -> OFFSET -> OUT
|
||||||
|
}
|
||||||
|
|
||||||
|
The final calibrated PT1000 resistance is calculated as:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
R_{PT1000_{corr}} = R_{PT1000_{LF}} \cdot (1 + \sigma) + O
|
||||||
|
|
||||||
|
The default values, if no calibration is loaded / executed, are:
|
||||||
|
|
||||||
|
============== =========
|
||||||
|
:math:`\sigma` :math:`O`
|
||||||
|
============== =========
|
||||||
|
0 1
|
||||||
|
============== =========
|
||||||
|
|
||||||
|
Get Calibration Corrected Value
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The PT1000 value is available through the following function.
|
||||||
|
If a calibration is set, it is applied.
|
||||||
|
|
||||||
|
.. doxygenfunction:: adc_pt1000_get_current_resistance
|
||||||
|
|
||||||
|
Converting the Value
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The valid range for conversion is between
|
||||||
|
|
||||||
|
.. doxygendefine:: TEMP_CONVERSION_MIN_RES
|
||||||
|
:outline:
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
.. doxygendefine:: TEMP_CONVERSION_MAX_RES
|
||||||
|
:outline:
|
||||||
|
|
||||||
|
By default, the valid range is:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
1000~\Omega \le R_{PT1000} \le 2200~\Omega
|
||||||
|
|
||||||
|
.. doxygenfunction:: temp_converter_convert_resistance_to_temp
|
||||||
|
|
||||||
|
The cvonversion function is based on a lookup table with linear interpolation between the data points.
|
||||||
|
The lookuptable is stored as a header file and can, if necessary, be recreated using the `create-temp-lookup-table.py` script.
|
||||||
|
|
||||||
|
@ -138,15 +138,13 @@ void adc_pt1000_set_resistance_calibration(float offset, float sensitivity_devia
|
|||||||
void adc_pt1000_get_resistance_calibration(float *offset, float *sensitivity_deviation, bool *active);
|
void adc_pt1000_get_resistance_calibration(float *offset, float *sensitivity_deviation, bool *active);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the current reistance value
|
* @brief Get the current resistance value
|
||||||
*
|
*
|
||||||
* If the reistance calibration is enabled, this function applies the calculations of the raw resistance reading and
|
* If the resistance calibration is enabled, this function applies the calculations of the raw resistance reading and
|
||||||
* returns the corrected value.
|
* returns the corrected value.
|
||||||
*
|
*
|
||||||
* If an ADC error is set, the status is negative. The status is 2 during the first measurements with a given filter setting. Technically, the resistance value is
|
* If an ADC error is set, the status is negative. The status is 2 during the first measurements with a given filter setting. Technically, the resistance value is
|
||||||
* correct but the filter is not stable yet.
|
* correct but the filter is not stable yet.
|
||||||
* Use adc_pt1000_check_error to check the error and reinitialize the ADC.
|
|
||||||
*
|
|
||||||
*
|
*
|
||||||
* @param[out] resistance Resistance output in Ohms
|
* @param[out] resistance Resistance output in Ohms
|
||||||
* @return Status
|
* @return Status
|
||||||
|
Loading…
Reference in New Issue
Block a user