2023-04-06 16:43:52 +08:00
|
|
|
# Sinara 9805 RF Power Amplifier "Booster"
|
|
|
|
|
|
|
|
* [Firmware](https://github.com/quartiq/booster)
|
|
|
|
* [Documentation](https://quartiq.de/booster/)
|
|
|
|
* [Wiki](https://github.com/sinara-hw/Booster/wiki)
|
|
|
|
|
|
|
|
## Firmware
|
|
|
|
|
|
|
|
### Flashing
|
|
|
|
|
|
|
|
```shell
|
|
|
|
git clone git@github.com:quartiq/booster.git
|
|
|
|
cd booster
|
|
|
|
nix-shell -p rustup cargo rustc dfu-util
|
|
|
|
cargo install cargo-binutils
|
|
|
|
rustup component add llvm-tools-preview
|
|
|
|
cargo build --release
|
|
|
|
cargo objcopy -- -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
|
|
|
|
```
|
|
|
|
|
|
|
|
### Basic setup via USB
|
|
|
|
|
|
|
|
1. `nix-shell -p cutecom mosquitto appimage-run`
|
2023-04-19 12:42:43 +08:00
|
|
|
2. Create mosquitto config `mosquitto.conf` with your bound address:
|
2023-04-06 16:43:52 +08:00
|
|
|
```
|
|
|
|
bind_address 192.168.1.123
|
|
|
|
allow_anonymous true
|
|
|
|
```
|
2023-04-19 12:42:43 +08:00
|
|
|
3. `mosquitto -c mosquitto.conf -d`
|
|
|
|
4. Run `cutecom`
|
2023-04-06 16:43:52 +08:00
|
|
|
5. Connect to the Booster via `/dev/ttyACMX` port, baud 9600
|
|
|
|
6. Send `help` command to check if it works
|
|
|
|
7. Enter commands (change details if necessary):
|
|
|
|
```shell
|
|
|
|
write broker-address 192.168.1.123
|
|
|
|
# only if you need static IP address
|
|
|
|
write gateway 192.168.1.1
|
|
|
|
write ip-address 192.168.1.142
|
|
|
|
write netmask 255.255.255.0
|
|
|
|
# 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
|
2023-04-19 12:42:43 +08:00
|
|
|
12. Restart booster to receive settings
|
2023-04-06 16:43:52 +08:00
|
|
|
|
|
|
|
## Calibration
|
|
|
|
|
|
|
|
1. Assemble Kasli with one Urukul, build and flash firmware for it with [booster.json](../extra/booster.json)
|
|
|
|
2. Run [dds_for_booster.py](../extra/dds_for_booster.py) experiment once
|
|
|
|
3. Attach parallel 50 Ohm load to the oscilloscope, as shown on the picture: ![](../img/50ohm_parallel_load.jpg),
|
|
|
|
4. Configure oscilloscope for 1M Ohm impedance
|
|
|
|
5. Attach attenuator to the Urukul's RF2
|
|
|
|
6. `cd py/`
|
2023-04-11 17:41:57 +08:00
|
|
|
7. You may also need to download or install python's `gmqtt` and `miniconf`
|
|
|
|
8. Enable channels: `python -m booster --broker 192.168.1.123 --prefix dt/sinara/booster/xx-xx-xx-xx-xx-xx --channel N tune=0.1`
|
|
|
|
9. Use [online calculator](https://www.analog.com/en/design-center/interactive-design-tools/dbconvert.html) for Volts to dBm conversion
|
|
|
|
10. Using [booster_template](../extra/booster_template.ods) fill in `y0`, `y1`, `m`, `c`, values using instructions below
|
|
|
|
11. Update settings with the adjusted values
|
|
|
|
12. Save settings with `python -m booster --broker 192.168.1.123 --prefix dt/sinara/booster/xx-xx-xx-xx-xx-xx --channel N save`
|
|
|
|
13. Reboot and check settings are applied
|
2023-04-06 16:43:52 +08:00
|
|
|
|
|
|
|
### Input power
|
|
|
|
|
|
|
|
1. Connect Urukul's output (see booster template for exact ports) to the oscilloscope with load
|
|
|
|
2. Measure it's RMS, convert to dBm, put it to the measured cell
|
|
|
|
3. Connect Urukul's output to the Booster's input
|
|
|
|
4. Get the input value from telemetry (see booster template for exact path)
|
|
|
|
5. Do steps 1-4 for second Urukul's output
|
|
|
|
6. Fill in `slope` and `offset` from settings
|
|
|
|
7. Do steps 1-6 for every channel
|
|
|
|
|
|
|
|
_Note: default setting and Urukul's measured values are usually the same across channels, so you can
|
|
|
|
extrapolate them for all channels._
|
|
|
|
|
|
|
|
|
|
|
|
### Output and reflected power
|
|
|
|
|
|
|
|
1. Connect Urukul's output (see booster template for exact ports) to the Booster's input
|
|
|
|
2. Connect Booster's output to the oscilloscope with load
|
2023-04-11 17:41:57 +08:00
|
|
|
3. Raise channel's `output_interlock_threshold` to 40
|
|
|
|
4. Turn channel's state to `Enabled`
|
|
|
|
5. Measure it's RMS, convert to dBm, put it to the measured cell
|
|
|
|
6. Get the output value from telemetry (see booster template for exact path)
|
|
|
|
7. Disconnect the Booster's output
|
|
|
|
8. Get the reflected value from telemetry
|
|
|
|
9. Do steps 1-6 for second Urukul's output
|
|
|
|
10. Fill in `slope` and `offset` from settings for output and reflected curves
|
|
|
|
11. Set channel's `output_interlock_threshold` to 0
|
|
|
|
12. Turn channel's state to `Off`
|
|
|
|
13. Do steps 1-10 for every channel
|
2023-04-06 16:43:52 +08:00
|
|
|
|
|
|
|
_Note: default setting values are usually the same across channels, so you can extrapolate them for all channels._
|
|
|
|
|