Compare commits

..

No commits in common. "master" and "hvamp" have entirely different histories.

8 changed files with 30 additions and 308 deletions

View File

@ -17,10 +17,9 @@
- [Sinara 5108 Sampler](./hw/sampler.md)
- [Sinara 6302 Grabber](./hw/grabber.md)
- [Sinara 7210 Clocker](./hw/clocker.md)
- [Sinara 8452 DSP Stabilizer / Sinara 4459 Pounder](./hw/stabilizer_pounder.md)
- [Sinara 8452 DSP Stabilizer](./hw/stabilizer.md)
- [Sinara 9805 RF Power Amplifier Booster](./hw/booster.md)
- [Sinara 8451 Thermostat](./hw/thermostat.md)
- [Sinara 8453 Thermostat EEM](./hw/thermostat_eem.md)
- [Sinara 2245 LVDS DIO](./hw/lvds_dio.md)
- [Software/Support](./sw_sup/software_support.md)
- [Starting with ARTIQ](./sw_sup/artiq_start.md)

View File

@ -8,42 +8,33 @@
### Flashing
Download the latest [booster firmware](https://github.com/quartiq/booster/releases/latest/download/booster-release.bin).
#### Easier way
Switch the booster into DFU mode by either inputting ``platform dfu`` in the serial console, or by turning it on while pressing the DFU button with a thin rod of some sort.
Then you can use ``dfu-util``:
Download and unpack the [booster firmware](../extra/booster/booster0.5.0.tar.xz), and then:
```shell
nix-shell -p dfu-util
dfu-util -a 0 -s 0x08000000:leave --download booster-release.bin
dfu-util -a 0 -s 0x08000000:leave --download booster0.5.0.bin
```
#### Building from source (optional)
#### Build from source on Fedora 38
There is no Nix Flake support to make things easier, so you need to set up rust and cargo manually.
Start with cloning the booster repository and opening a new shell with dfu-util (for flashing) and rustup
(for building).
```shell
nix-shell -p dfu-util rustup
```
Set up the toolchain, this should be done only once:
Creating proper Nix shell for updated Rust is quite troublesome, so the faster way is actually to use any
classic Linux distribution:
```shell
git clone https://github.com/quartiq/booster.git # download sources
sudo dnf install clang dfu-util
cd booster/
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # install Rust, we need rustup
rustup target add thumbv7em-none-eabihf
cargo install cargo-binutils
rustup component add llvm-tools-preview
rustup update
rustup default stable
```
Building:
```shell
cargo build --release
cargo objcopy --release -- -O binary booster-release.bin
cargo objcopy --release -- -O binary booster.bin
# enter dfu mode by either serial terminal or
# press `DFU Bootloader` button while rebooting
dfu-util -a 0 -s 0x08000000:leave --download booster.bin
```
#### For version before September 2023 on NixOS
@ -63,27 +54,14 @@ cargo objcopy --release -- -O binary booster.bin
dfu-util -a 0 -s 0x08000000:leave --download booster.bin
```
### Clearing settings
In case someone sets some setting wrongly, or updates the firmware and suddenly there's an incompatibility, you may find (firmware, not yourself) in a state of panic, where it will not allow you to change the settings back.
1. Get into DFU mode (described above), probably with jumper method.
2. Use dfu-util to clear the flash completely:
```shell
dfu-util -a 0 -s 0x08000000:mass-erase:force:leave
```
3. Reflash the target firmware.
### Basic setup via USB
1. `nix-shell -p cutecom mosquitto appimage-run`
2. Create mosquitto config `mosquitto.conf`, or use the one from Stabilizer repo:
2. Create mosquitto config `mosquitto.conf` with your bound address:
```text
%allow_anonymous true
listener 1883
bind_address 192.168.1.123
allow_anonymous true
```
3. `mosquitto -c mosquitto.conf -d`
@ -91,24 +69,7 @@ In case someone sets some setting wrongly, or updates the firmware and suddenly
5. Connect to the Booster via `/dev/ttyACMX` port, baud 9600, switch from LF to CR on newer version
6. Send `help` command to check if it works
7. Enter commands (change details if necessary):
```shell
set /broker "192.168.1.123"
set /ip "192.168.1.79/24"
store /broker
store /ip
# apply changes and wait until it fully rebooted
platform reboot
```
Older version:
```shell
write broker "192.168.1.123"
write ip "192.168.1.75"
# apply changes and wait until it fully rebooted
reset
```
Oldest version:
```shell
write broker-address 192.168.1.123
# only if you need static IP address
@ -119,8 +80,17 @@ In case someone sets some setting wrongly, or updates the firmware and suddenly
reset
```
8. Check if the Booster connects to your broker.
9. If you don't have it yet, download [MQTT Explorer](https://github.com/thomasnordquist/MQTT-Explorer/releases)
Newer version:
```shell
write broker "192.168.1.123"
write ip "192.168.1.75"
# apply changes and wait until it fully rebooted
reset
```
8. Check the Booster connects to your broker.
9. Download AppImage from [MQTT Explorer](https://mqtt-explorer.com/)
10. Run it with `appimage-run /path/to/MQTT-Explorer-XXX.AppImage`
11. Connect to your MQTT broker
12. Restart booster to receive settings
@ -181,25 +151,3 @@ extrapolate them for all channels._
13. Do steps 1-10 for every channel
_Note: default setting values are usually the same across channels, so you can extrapolate them for all channels._
## Troubleshooting
### Fans running constantly
If firmware is not running, the fans will be running at all times. There will also be no LED lights. It may be also the firmware doesn't have the chance to switch the fans off before a panic, so clearing settings may also help.
### Fans running high, slowing and high again in a loop
Possibly the firmware is panicking and rebooting. Try clearing the settings.
### No USB console available
There was a bug that causes [USB not to work on Windows](https://github.com/quartiq/booster/pull/166) in older firmware. Updating the firmware should be fine.
### Booster will not connect to MQTT
You may need to supply the IP address, if the device cannot get one from DHCP.
### Overload light is on even after interlock reset
Make sure you set the output interlock threshold high enough for your intended load, but also keep in mind that it cannot be not more than 47dBm. Similarly, reflected power threshold is at 30dBm, so if the input is high enough and output is not connected, it will also trip the lock.

View File

@ -133,46 +133,3 @@ Configure Stabilizer:
Now, disconnect the USB and connect the Ethernet cable to the Stabilizer, as both won't fit at the same time.
Stabilizer should connect to moquitto automatically, and you should see the MQTT settings pop up in the MQTT Explorer.
If the IP address is not set, Stabilizer will try to use DHCP to get an address.
## Installing the Pounder
Remember that the Pounder is not fully supported in official QUARTIQ release; use the firmware from Hydra.
Use ESD precautions; ensure that power is off (both barrel jack and PoE) before installing or removing the card.
There are no guides for the Pounder connector. Line up the connectors with the pins and gently push in.
SMA connectors should line up with the ones from Stabilizer; no pins should be visible from the sides of the Pounder; it's more obvious if the Pounder has the front panel already installed.
## Testing the Pounder
### With serial only
You need to have the Stabilizer powered on and connected through USB. Ethernet is not necessary.
Input the following sequence of commands into the shell, assuming Stabilizer serial interface is visible at /dev/ttyACM0:
```
stty 115200 -F /dev/ttyACM0
echo 'set /dual_iir/pounder/out_channel/0/dds/frequency 20e6' > /dev/ttyACM0
echo 'set /dual_iir/pounder/out_channel/0/dds/amplitude 1' > /dev/ttyACM0
echo 'set /dual_iir/pounder/out_channel/0/attenuation 16' > /dev/ttyACM0
echo 'set /dual_iir/pounder/out_channel/1/dds/frequency 30e6' > /dev/ttyACM0
echo 'set /dual_iir/pounder/out_channel/1/dds/amplitude 1' > /dev/ttyACM0
echo 'set /dual_iir/pounder/out_channel/1/attenuation 16' > /dev/ttyACM0
```
You can copy them all and input at once.
Observe a sine wave with frequency of 20MHz on channel 0 output, and 30MHz on channel 1 output.
### With MQTT (slower)
For this method, you need to set up MQTT and have the Stabilizer connected with Ethernet.
1. Set up the MQTT as described above.
2. Using Mosquitto and MQTT Explorer, set the pounder ``out_channel`` parameters:
* Frequency: 20e6 (20MHz)
* Amplitude: 1.0
![Pounder MQTT settings](../img/pounder_mqtt.png)
3. Repeat the procedure for the other channel.
4. Observe a sine wave of given frequency with an oscilloscope in the output channel.

View File

@ -1,181 +0,0 @@
# Sinara 8453 Thermostat EEM
* [Wiki](https://github.com/sinara-hw/Thermostat_EEM/wiki)
* [Firmware](https://github.com/quartiq/thermostat-eem/tree/main)
EEM is used for power only, and it can be alternatively powered by 12V barrel jack or PoE.
## JSON
Not present in the JSON.
### Building
There is no Nix Flake support to make things easier, so you need to set up rust and cargo manually.
Start with cloning the thermostat-eem repository and opening a new shell with dfu-util (for flashing) and rustup
(for building).
```shell
nix-shell -p dfu-util rustup
```
Set up the toolchain, this should be done only once:
```shell
rustup target add thumbv7em-none-eabihf
cargo install cargo-binutils
rustup component add llvm-tools-preview
rustup update
rustup default stable
```
Building:
```shell
cargo build --release
cargo objcopy --release --bin thermostat-eem -- -O thermostat-eem.bin
```
## Flashing
Once you have the binary, you can now flash it.
1. Without firmware on the device or with older firmware (without USB serial console),
you need to use the jumper method:
1. Have the Thermostat EEM disconnected from power.
2. Use a jumper of some sort to short BOOT pins on the board.
3. Turn on the power.
4. You can remove the jumper after few seconds.
2. With newer firmware with USB serial console:
1. Connect the Thermostat EEM to power.
2. Connect USB cable to the Thermostat EEM.
3. Ensure you have `pyserial` module either with `nix-shell -p python312Packages.pyserial` for NixOS users
or using `pip install pyserial` if you are using venv.
4. Run `python -m serial /dev/ttyACM0` to connect the serial port using `pyserial`.
5. Input `platform dfu` in the console.
3. Once the device is now in DFU mode, flash the device with the following command (needs `nix-shell -p dfu-util`):
```shell
dfu-util -a 0 -s 0x08000000:leave -R -D thermostat-eem.bin
```
4. Look for "File downloaded successfully".
### Clearing settings
In case someone sets some setting wrongly, or updates the firmware and suddenly there's an incompatibility,
you may find (firmware, not yourself) in a state of panic, where it will not allow you to change the settings back.
1. Get into DFU mode (described above), probably with jumper method.
2. Use dfu-util to clear the flash completely:
```shell
dfu-util -a 0 -s 0x08000000:mass-erase:force:leave
```
3. Reflash the target firmware.
## Testing
### Setting up MQTT
MQTT is the only way to access the SENS and TEC pins telemetry for testing .
On PC side:
1. Get IP address of your machine, e.g. with ``ip a``. Make note of it, that's the broker address.
2. Get mosquitto, e.g. with ``nix-shell -p mosquitto``.
3. Create a mosquitto config files by running ``echo -e "allow_anonymous true\nlistener 1883" > mosquitto.conf``
3. Run mosquitto with the config ``mosquitto -c mosquitto.conf``
4. If you don't have it yet, download [MQTT Explorer](https://github.com/thomasnordquist/MQTT-Explorer/releases).
5. Call ``nix-shell -p appimage-run``, then ``appimage-run MQTT-Explorer-0.4.0-beta6.AppImage``.
6. Connect to the MQTT broker under your own IP address.
Configure Thermostat EEM:
1. Ensure that the [firmware](#Building) has been flashed onto the Thermostat EEM
2. Connect the Thermostat EEM to power.
3. Connect USB cable to the Thermostat EEM.
4. Run ``cutecom`` or your favorite terminal emulator, connect to ``/dev/ttyACM0``.
5. Change the broker setting with: ``set /net/broker "<ip of your machine>"``.
6. Store the setting with ``store /net/broker``.
7. (Optional) Set the IP address of the Thermostat EEM by following steps 4 and 5, but with ``/net/ip`` setting instead.
8. Reboot with ``platform reboot``.
Now, disconnect the USB and connect the Ethernet cable to the Thermostat EEM, as both won't fit at the same time.
Thermostat EEM should connect to moquitto automatically, and you should see the MQTT settings pop up in the MQTT Explorer.
If the IP address is not set, Thermostat EEM will try to use DHCP to get an address.
### SENS pins testing
1. Power off the Thermostat EEM
2. Connect the breakout board to Thermostat EEM
3. Connect two 10k Ohm resistor to SENS0 & SENS1
![resistor for sens pin](../img/thermostat_eem_resistor.jpg)
4. Power the Thermostat EEM and access the `telemetry/statistics` on MQTT Explorer
5. Check the mean temperature is around 25C for SENS0 & SENS1
```json
{
...
"statistics": [
// SENS0 & SENS1
[
{
"mean": 25.180674,
"ptp": 0.00029182434,
"std": 0.000053144646
},
{
"mean": 25.042572,
"ptp": 0.00029182434,
"std": 0.00005036032
},
null,
null
],
// SENS2 & SENS3
[
{
"mean": -273.15,
"ptp": 0,
"std": 0
},
{
"mean": -273.15,
"ptp": 0,
"std": 0
},
null,
null
],
...
],
...
}
```
6. Repeat 3-5 for other SENS pins
### TEC pins testing
1. Power off the Thermostat EEM
2. Connect the breakout board to Thermostat EEM
3. Power the Thermostat EEM and set `output/0/state` parameter to `On` using MQTT explorer
![mqtt setup](../img/thermostat_eem_mqtt.png)
4. Check that TEC0 pins have voltages as described in `telemetry/monitor/output_voltage`
```json
{
"monitor": {
...
"output_voltage": [
-1.1107178, // TEC0
-1.638794, // TEC1
-1.762146, // TEC2
-1.1976318 // TEC3
],
...
},
...
}
```
5. Repeat 3-4 for other TEC pins

View File

@ -50,7 +50,6 @@ Urukul 4412 has higher frequency resolution (47 bit against 32 at Urukul 4410),
* SU-Servo
* Synchronization
* RAM
## Testing

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 KiB