feat(website): Adds control loops
@ -6,10 +6,11 @@ sort_by = "weight"
|
|||||||
Experiment control
|
Experiment control
|
||||||
- ARTIQ
|
- ARTIQ
|
||||||
- Sinara core
|
- Sinara core
|
||||||
|
- Control loops
|
||||||
|
|
||||||
Gateware
|
Gateware
|
||||||
- Migen
|
- Migen
|
||||||
|
|
||||||
Software
|
Software
|
||||||
- Solvespace
|
- SolveSpace
|
||||||
- Smoltcp
|
- Smoltcp
|
||||||
|
107
content/experiment-control/control-loops.md
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
+++
|
||||||
|
title = "Control loops"
|
||||||
|
weight = 3
|
||||||
|
template = "page-hero.html"
|
||||||
|
+++
|
||||||
|
|
||||||
|
|
||||||
|
{% textimg(src="images/stabilizer@2x.png", alt="", bodyleft=true, customcss="row d-flex align-items-center mb-4 pb-2", shadow=false, md=true) %}
|
||||||
|
|
||||||
|
##### Stabilizer
|
||||||
|
|
||||||
|
The stabilizer module is a CPU-based dual-channel fast servo. It can be controlled by Kasli or work stand-alone with Power-over-Ethernet (PoE) supply.
|
||||||
|
|
||||||
|
- 400MHz STM32H743ZIT6
|
||||||
|
- dual 16bit ADC with x2, x5, x10 PGA (2MS/s)
|
||||||
|
- 16bit AD5542A DAC (1µs settling time)
|
||||||
|
- PoE supply
|
||||||
|
- 10/100Base-T Ethernet
|
||||||
|
- connectors for optional analog front-end (AFE) module
|
||||||
|
- IDC connectors for IDC-BNC extension for digital IO and aux analog inputs and outputs
|
||||||
|
|
||||||
|
It can be used as a general-purpose PID controller. Several AFE extensions are under development including high current power supply for magnets.
|
||||||
|
|
||||||
|
<a href="https://github.com/sinara-hw/stabilizer/wiki" target="_blank" rel="noopener noreferrer">More information</a>
|
||||||
|
|
||||||
|
{% end %}
|
||||||
|
|
||||||
|
|
||||||
|
{% centerp(safe=true) %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-12 mt-0 mt-md-5">
|
||||||
|
<p class="m-0">
|
||||||
|
The <a href="https://github.com/quartiq/stabilizer" target="_blank" rel="noopener noreferrer">standard open source firmware</a> that comes with the board has the following features:
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% end %}
|
||||||
|
|
||||||
|
{{ centercontent(customcss="row d-flex align-items-center", md=true, src="images/_standard-open-source-firmware@2x.png", alt="") }}
|
||||||
|
|
||||||
|
{% layoutlr1(customcss="row d-flex align-items-center mt-4 mb-5 pt-2 pb-2") %}
|
||||||
|
|
||||||
|
<div class="col-12 col-md-3">
|
||||||
|
<ul>
|
||||||
|
<li>dual channel</li>
|
||||||
|
<li>SPI ADC</li>
|
||||||
|
<li>SPI DAC</li>
|
||||||
|
<li>fixed AFE gains</li>
|
||||||
|
<li>500 kHz rate, timed</li>
|
||||||
|
<li>< 2 µs latency, unmatched</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-5">
|
||||||
|
<ul>
|
||||||
|
<li>f32 IIR math</li>
|
||||||
|
<li>generic biquad (second order) IIR filter</li>
|
||||||
|
<li>anti-windup</li>
|
||||||
|
<li>derivative kick avoidance</li>
|
||||||
|
<li>configurable output limits</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-4 mt-4 mt-md-0">
|
||||||
|
<p>
|
||||||
|
To purchase this controller, email sales@m-***s.hk. We also offer firmware customizations and development of new features. Note that features that are not implemented in the open source code above (e.g. control from Kasli) are not supported unless purchased separately.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% end %}
|
||||||
|
|
||||||
|
|
||||||
|
{% textimg(src="images/Thermostat@2x.png", alt="", customcss="", bodyleft=false, shadow=false, md=true) %}
|
||||||
|
|
||||||
|
##### Thermostat
|
||||||
|
|
||||||
|
This module is a 2-channel temperature controller EEM based on the Maxim MAX1968 driver, capable of driving 6W into a TEC or resistive heater. The sensor interface is based on AD7172 ADC.
|
||||||
|
|
||||||
|
Preliminary specifications:
|
||||||
|
|
||||||
|
- Channel count: 2
|
||||||
|
- Sensor: 10k NTC thermistor
|
||||||
|
- Load (heater/TEC) drive: up to 8W (+-2A with 4V compliance)
|
||||||
|
- Form factor: 3U module or stand-alone AL enclosure (Hammond 1455C1202).
|
||||||
|
- Output connectors: Sensor and load connect via either terminal block connector on the front panel or via internal 100mil pin-header.
|
||||||
|
- Programming interface: Ethernet accessible via RJ45 connector on the front panel
|
||||||
|
- Power supply: +12V DC (1.5A max) supplied either by a front-panel barrel connector, via 100mils Zotino connector, or PoE (up to 30W).
|
||||||
|
- STM32 MCU
|
||||||
|
|
||||||
|
This module is still in development and is not currently available.
|
||||||
|
|
||||||
|
{% end %}
|
||||||
|
|
||||||
|
|
||||||
|
{% textimg(alt="", customcss="", bodyleft=true, shadow=false, md=true) %}
|
||||||
|
|
||||||
|
##### SU-Servo
|
||||||
|
|
||||||
|
With the SU-Servo feature of ARTIQ, the AD9910 variant of Urukul (which has fine amplitude control) can be used in combination with the Sampler ADC to form a laser intensity servo. In this application, the Urukul card drives AOMs and photodiodes are connected to Sampler to monitor laser intensities. When ordering your system, specify that you want SU-Servo integrated into the gateware.
|
||||||
|
|
||||||
|
See the <a href="/experiment-control/sinara-core/">Sinara Core</a> page for the relevant devices (Kasli, Sampler and Urukul).
|
||||||
|
|
||||||
|
{% end %}
|
@ -1,4 +1,4 @@
|
|||||||
+++
|
+++
|
||||||
title = "Solvespace"
|
title = "SolveSpace"
|
||||||
weight = 1
|
weight = 1
|
||||||
+++
|
+++
|
||||||
|
BIN
static/images/Thermostat.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
static/images/Thermostat@2x.png
Executable file
After Width: | Height: | Size: 61 KiB |
BIN
static/images/_standard-open-source-firmware.png
Normal file
After Width: | Height: | Size: 170 KiB |
BIN
static/images/_standard-open-source-firmware@2x.png
Executable file
After Width: | Height: | Size: 251 KiB |
BIN
static/images/side.png
Normal file
After Width: | Height: | Size: 276 KiB |
BIN
static/images/side@2x.png
Executable file
After Width: | Height: | Size: 95 KiB |
BIN
static/images/stabilizer.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
static/images/stabilizer@2x.png
Executable file
After Width: | Height: | Size: 72 KiB |
@ -1,4 +1,4 @@
|
|||||||
<div class="row d-flex align-items-center mt-5 mb-5 pt-3 pb-3">
|
<div class="{% if customcss %}{{ customcss }}{% else %}row d-flex align-items-center mt-5 mb-5 pt-3 pb-3{% endif %}">
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
<div class="text-center mt-3">
|
<div class="text-center mt-3">
|
||||||
{{ body }}
|
{% if safe %}
|
||||||
|
{{ body | safe}}
|
||||||
|
{% else %}
|
||||||
|
{{ body }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
@ -1,4 +1,4 @@
|
|||||||
<div class="row">
|
<div class="{% if customcss %}{{ customcss }}{% else %}row{% endif %}">
|
||||||
|
|
||||||
{{ body | safe }}
|
{{ body | safe }}
|
||||||
|
|
||||||
|
@ -20,7 +20,9 @@
|
|||||||
|
|
||||||
<div class="card {% if shadow %}shadow{% endif %}">
|
<div class="card {% if shadow %}shadow{% endif %}">
|
||||||
|
|
||||||
|
{% if src %}
|
||||||
<img src="{{ get_url(path=src, cachebust=true) }}" alt="{{ alt }}" width="100%" class="card-img-top img-fluid">
|
<img src="{{ get_url(path=src, cachebust=true) }}" alt="{{ alt }}" width="100%" class="card-img-top img-fluid">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -32,7 +34,9 @@
|
|||||||
|
|
||||||
<div class="card {% if shadow %}shadow{% endif %}">
|
<div class="card {% if shadow %}shadow{% endif %}">
|
||||||
|
|
||||||
|
{% if src %}
|
||||||
<img src="{{ get_url(path=src, cachebust=true) }}" alt="{{ alt }}" width="100%" class="card-img-top img-fluid">
|
<img src="{{ get_url(path=src, cachebust=true) }}" alt="{{ alt }}" width="100%" class="card-img-top img-fluid">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|