1
0
Fork 0

feat(website): Adds control loops

This commit is contained in:
sovanna 2019-07-09 18:46:27 +02:00
parent e0862f523c
commit 36d0ff4d95
15 changed files with 121 additions and 5 deletions

View File

@ -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

View 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 %}

View File

@ -1,4 +1,4 @@
+++ +++
title = "Solvespace" title = "SolveSpace"
weight = 1 weight = 1
+++ +++

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
static/images/Thermostat@2x.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

BIN
static/images/side.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
static/images/side@2x.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
static/images/stabilizer@2x.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -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">

View File

@ -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>

View File

@ -1,4 +1,4 @@
<div class="row"> <div class="{% if customcss %}{{ customcss }}{% else %}row{% endif %}">
{{ body | safe }} {{ body | safe }}

View File

@ -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>