forked from sinara-hw/assembly
94 lines
3.7 KiB
Markdown
94 lines
3.7 KiB
Markdown
|
# 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`
|
||
|
2. Install and run `cutecom`: `nix-shell -p cutecom`
|
||
|
3. Create mosquitto config `mosquitto.conf` with your bound address:
|
||
|
```
|
||
|
bind_address 192.168.1.123
|
||
|
allow_anonymous true
|
||
|
```
|
||
|
4. `mosquitto -c mosquitto.conf -d`
|
||
|
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
|
||
|
|
||
|
## 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/`
|
||
|
7. 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`
|
||
|
8. Use [online calculator](https://www.analog.com/en/design-center/interactive-design-tools/dbconvert.html) for Volts to dBm conversion
|
||
|
9. Using [booster_template](../extra/booster_template.ods) fill in `y0`, `y1`, `m`, `c`, values using instructions below
|
||
|
10. Update settings with the adjusted values
|
||
|
11. Save settings with `python -m booster --broker 192.168.1.123 --prefix dt/sinara/booster/xx-xx-xx-xx-xx-xx --channel N save`
|
||
|
12. Reboot and check settings are applied
|
||
|
|
||
|
### 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
|
||
|
3. Measure it's RMS, convert to dBm, put it to the measured cell
|
||
|
4. Get the output value from telemetry (see booster template for exact path)
|
||
|
5. Disconnect the Booster's output
|
||
|
6. Get the reflected value from telemetry
|
||
|
7. Do steps 1-6 for second Urukul's output
|
||
|
8. Fill in `slope` and `offset` from settings for output and reflected curves
|
||
|
9. Do steps 1-8 for every channel
|
||
|
|
||
|
_Note: default setting values are usually the same across channels, so you can extrapolate them for all channels._
|
||
|
|