Closed hartytp closed 6 years ago
Can you remind me how the interlock works at the moment, please (maybe add a note to the wiki)? IIRC, we agreed that:
Is that correct?
IIRC, we agreed that the set-point for (2) would be adjustable from firmware (e.g. to prevent damage to a sensitive load such as an optical modulator). Has this been implemented? If so, what is the command to change the set-point?
Will all settings be saved to non-volatile memory? If not, can we have an option to save all settings, please?
My concern here is that if I have a sensitive load like an AOM, I may want to use the interlock to ensure that the amplifier can never drive too much power into the load and damage it. If the interlock settings are stored in volatile memory then it would be easy for a short power glitch to clear them without the user realising. This is prevented by having a means of saving them to non-volatile memory.
One final request ;)
I'm planning to make some measurements on P1dB and third-order intercept on Thursday or Friday, and would be interested to play around with this then while I have the equipment set up if that's possible?
@gkasprow I'd like to test the FW/interlock later this week. Can you give me any feedback on the questions above?
Thanks!
@wizath please respond to @hartytp AFAIK at the moment the processor does not measure the current nor compensate the voltage because according to Maciej this is not necessary. There is only over-current protection implemented for every RF module supply rail.
AFAIK at the moment the processor does not measure the current nor compensate the voltage because according to Maciej this is not necessary. There is only over-current protection implemented for every RF module supply rail.
Thanks for clarifying.
If possible, I'd definitely like a way of adjusting the bias current to play around with getting higher power efficiency at lower P1dB.
It is possible, but can also kill the output MOSFET :)
You mean if the bias current is set too high? Can we make sure that the FW only allows the users to program it to values within a safe range?
Anyway, I'm okay if this particular function is a "use at your own risk" one (MOSFETS are cheap anyway).
Yes, but the FW would have to monitor the supply current to be 100% sure
@gkasprow Okay, well playing around with biasing is the lowest item on my to do list. If you can sort the other things out then I'll be happy.
In the long-term, adjusting the biasing is something I'm keen on to improve the power efficiency for lower output powers (0.5W-2W), so I'd like to find some way to do this in the FW. But, we can do that later on.
ping @wizath I'm ready to play with the firmware/interlock whenever you can give me some feedback on the above questions. Thanks!
ENABLE/DISABEL controls the biasing for the power FET. The pre-amp circuitry remains powered all the time START/STOP control the input switch (ANDed with the INTERLOCK status)
In current version there is single button to power the channel LDO's, amp will start running after enabling power, because of (past) issue of protection circuit.
The current and voltage measurement are measuring the bias voltage and current for the power FET (why are there two per channel?) ADC on each channel gather information about: 30V current, negative voltage current and 5V current.
What are the commands to measure the power (input, output forwards and output reverse) power for each channel?
Measurement are displayed on VUART interface in 1s intervals. Optionally you can use SCIPI commands listed in Booster's wiki page.
Also, I need a way of finding the MAC address of booster (our department does MAC address whitelisting). How can I do that? Can I do that via the UART (e.g. by sending it a request, or if it prints out a boot message)?
You can type ifconfig
to check MAC address
IIRC, we agreed that the set-point for (2) would be adjustable from firmware (e.g. to prevent damage to a sensitive load such as an optical modulator). Has this been implemented? If so, what is the command to change the set-point?
At this time, value is fixed within software, we could add single command to change DAC voltage for specified channel.
Will all settings be saved to non-volatile memory? If not, can we have an option to save all settings, please?
This hardware revision is not equipped with any kind of EEPROM memory, but AFAIK @gkasprow added the storage for next rev.
@wizath Thanks for the feedback. Following up from your answer:
*IDN?
type command that prints a device identification string, complete with HW and FW revisions?CHANnel:ENABle
do? Does this turn on the LDOs + FET biasing?CHANnel: START
do? Does this clear the interlock?CHANnel:MEASure:VOLTage?
do? (The description on the wiki at the moment is confusing)CHANnel:MEASure:CURRent?
do? (The description on the wiki at the moment is confusing)I want to test the interlock next, but need answers to (3) (4) and (11) before I can do that.
Is the list of commands on the Wiki up to date? Are all commands listed there currently implemented in the firmware, and are all commands in the firmware listed there?
Yes, they are up-to-date
Please can you add a *IDN? type command that prints a device identification string, complete with HW and FW revisions?
If I recall correctly it's implemented
Is the input protection circuit implemented in the current firmware? If not, please can I have a version of the firmware with it implemented (the hardware issue is now fixed on my boards)? Please can you clarify exactly what interlock is implemented in both HW and FW. (input power? reverse output power? output power? amplifier temperature? etc)
At this moment the ONOFF is shorted to 3.3V so any protection won't work. There is one hardware protection circuit (DAC) and I can implement a SW one, but need to know the voltage thresholds to disable the AMP.
what does CHANnel:ENABle do? Does this turn on the LDOs + FET biasing?
Enables power for selected channel
what does CHANnel: START do? Does this clear the interlock?
Enables ONOFF signal for selected chanel
what does CHANnel:MEASure:VOLTage? do? (The description on the wiki at the moment is confusing) Dumps the channel voltage measurements from forward and reverse power measurements
what does CHANnel:MEASure:CURRent? do? (The description on the wiki at the moment is confusing)
Dumps the channel ADC values for current measurements. These commands were implemented at early stage and weren't really consulted with anyone.
What exactly do the two buttons on the front panel do at the moment?
The first one just enables the power and since ONOFF signal is shorted to VCC so it's starting automagically. The fix is in comment here https://github.com/sinara-hw/sinara/issues/460#issuecomment-383871185 When I will get back working module I'll change the behaviour (1st will enable all channels and 2nd clear errors?)
In the next firmware version (when will this be ready?), please could you add a command to set the FET bias voltage. Please add some basic checking to this command to ensure the the FET voltage can only be set within a sensible range that is unlikely to cause damage.
I want to fix this fan ghosting and several other small issues, I think that will go around next week. Also, could you specify what commands would you like to get from this SCIPI interface and I'll prepare them for you.
@wizath Thank you for the response.
Before I reply to your questions, I'd like to confirm with @gkasprow how the interlock is supposed to work. @gkasprow is this correct:
Is that all correct? Are there any other interlocks that I've missed? Or, is that the complete list?
I know we've talked about this a few times before, but I wasn't sure if we reached a conclusion. Let's finalise this once and for all and I will write it up on the Wiki.
@gkasprow I know this is discussed in https://github.com/sinara-hw/sinara/issues/460#issuecomment-387895107, but I would really appreciate it if you could have a look at my post above and give me feedback. Is what I said there correct? Is there anything I'm missing?
@gkasprow What I want to get clear on first is what our long term plans are here (i.e. not necessarily what has been implemented in the current firmware/hardware).
Also, what is our plan for the bias current/voltage? Will we use feedback to control the current? Or, just run this open loop?
ping @gkasprow
ping @gkasprow Please can you confirm what the interlock/biasing plans are? Once you do that, we can finalize a specification for what the firmware must do, and @wizath can start work on the next version.
I'm keen to get this done asap, because I can't test the interlock until it's done.
@gkasprow ping!
Please can you confirm how the interlock and biasing are supposed to work so that we can finalise the plans for booster. I'd really like to agree on the specification for the firmware before I leave on Wednesday morning.
There are following interlocks:
So maybe such bias stabilisation should be made on request ?
Thanks @gkasprow!
each module has a DAC that sets a thresholds for input power and reflected output power.
Is that correct? Looking at the schematics, it seems the it is the input and output forward power that are interlocked in hw. The ret detector Q/Q_n outputs are nc atm.
each current that supplies each module module is monitored by fast ADC that has digital thresholds and can generate alert when current is exceeded. This happens without software intervention. Each output is routed to the CPU. At the moment we did not implement firmware to react on such event.
This seems worth implementing, doesn't it? Shouldn't the behaviour be to shut the RF switch and disable the regulators for the channel in case of an over current situation?
There are temperature sensors placed inside of the PA module. They are read by the firmware.
Should we place a software protection here that disables any channel whose temperature exceeds the safe maximum?
There is possibility of implementing bias current stabilisation, but this needs some kind of PID regulator. The CPU has all information needed. User should not be surprising by changing bias current in random way during experiment. One can discover new physics in this way :)
:) indeed
This is my fear with this kind of feedback loop. Passive stability is obviously better. The question is just how good the passive stability is, and whether active stabilisation of the bias current is necessary. Looking at the bias voltage/current plot for the FET we're using, it seems that it is quite sensitive. So, my concern is that we may see large power changes at the amplifier gets hot.
If the DAC that controls the bias current has a decent resolution and proper filtering on its outputs, I wouldn't expect it to add significant noise to the RF output.
each module has a DAC that sets a thresholds for input power and reflected output power.
By the way, if you don't think we need reverse power interlock then it's okay with me to leave it out. So long as the amplifier can handle full reverse power, I think the current situation is okay. I just want to make sure that I understand the design decisions.
Look here https://github.com/sinara-hw/Booster/releases/download/v1.1_rc1/PA_8CH_CTRL.PDF The IC5 is the DAC that sets the threshold value for the detectors that are sensing input and reflected power on the bottom board.
@gkasprow I think there are two questions here:
So, assuming that the amplifier can handle full reverse power, it seems that the current PA schematic -- which has input and output forwards power interlocks -- is the correct way to do it. But, please let me know what you think of my comments above.
I'm a bit surprised that the module has only the FWD power monitoring realised in HW. I will clarify it with Maciej. I've just looked at the Tomasz design and it is done in the same way. The original idea was to have this protection realised in the firmware so we will probably have to do it now. Since it is constant threshold protection and we care mainly about thermal effects of handling full reflected power by the output amplifier, implementation in firmware will be easy. Delay of a few tens of ms won't kill the output stage.
I'm a bit surprised that the module has only the FWD power monitoring realised in HW. I will clarify it with Maciej.
As I said above, I think that hardware interlocks on the input and output forwards power are more important than the output reverse power, so I'm happy with the current situation so long as you and Maciej are -- although, please make sure that the labelling on the various PCBs is consistent.
Since it is constant threshold protection and we care mainly about thermal effects of handling full reflected power by the output amplifier, implementation in firmware will be easy
Is it thermal protection or over voltage protection? I know that in some cases, reverse power can kill amps very quickly by creating large voltages at the FET output. In this case, the protection needs to trigger quickly. Anyway, not sure what the damage mechanism is in this amplifier, and I'm happy to do what you and Maciej think is best.
The original idea was to have this protection realised in the firmware so we will probably have to do it now.
Sounds good. However, don't bother implementing this unless you think it's necessary. e.g. if the damage mechanism is thermal, will the thermal overload protection you've implemented be enough? Also, if the amplifier can take full reverse power anyway, we don't need an interlock on this, since it's safe by design!
Given the above discussion, here is my summary/proposal for the interlock and firmware interface. Anyone involved/interested in this project (particularly Greg/Maciej/Tomek) should feel free to comment.
Interlocks
If any of these interlocks trip, the input switch is shut off (input disconnected) and the power FET bias current/voltage is shut off.
Firmware commands to follow...
Firmware commands
OK
or an error string.*IDN?
returns an ID string, including the hardware and software revision numbersINTerlock:INPut <channel> <power>
max input power in dBm, e.g. INT:INP 0 -5
to set the input power interlock threshold for channel 0 to -5dBm. If the threshold is above a hard-coded (please document what the threshold is) maximum, an error is returned and the threshold is not adjusted.
INTerlock:INPut? <channel>
returns the input power interlock threshold for a given channel in dBm. INTerlock:OUTput <channel> <power>' max output power in dBm e.g. 'INT:OUT 0 33
to set the output power interlock threshold for channel 0 to 33dBm. If the threshold is above a hard-coded (please document what this max is) maximum, an error is returned and the threshold is not adjusted.INTerlock:OUTput? <channel>
returns the output forward power interlock thresholdINTerlock:REVerse <channel> <power>' max output reverse power in dBm e.g. 'INT:REV 0 33
to set the output reverse power interlock threshold for channel 0 to 33dBm. If the threshold is above a hard-coded (please document what this max is) maximum, an error is returned and the threshold is not adjusted.INTerlock:REVerse? <channel>
returns the output reverse power interlock thresholdINTerlock:STAtus? [ALL]|<channel>' returns the interlock status (
1or
0`) for either 1 channel or for all channels (and-ed together).INTerlock:CLEar [ALL]|<channel>
resets the interlock for either a given channel or for all channelsMEAsure:TEMperature? <channel>
returns the temperature for a given channel in CMEAsure:CURrent? <channel>
returns the bias current for a given channel in ampsMEAsure:VOLtage? <channel>
returns the bias voltage for a given channel in voltsMEAsure:INPut? <channel>
returns the input power for a given channelMEAsure:OUTput? <channel>
returns the forward output power for a given channelMEAsure:REVerse? <channel>
returns the output reverse power for a given channelCHAnnel:ENAble [ALL]|<channel> <enabled>
enables/disables (1
or 0
) the power FET bias current/voltage for a given channel or for all channelsCHAnnel:ENAble? [ALL]|<channel>
returns 1
if the bias for a given channel is enabled or 0
if it is disabled. If ALL
(default) then it returns the status for all channels anded togetherCHAnnel:BIAS? <channel>
returns the bias voltage for a given channelCHAnnel:BIAS <channel>
sets the bias voltage for a given channel. If this is outside the safe range (hard-coded into the firmware) then an error is returned and the bias setting is not changed. Note that there is additional protection when changing the bias voltage since the firmware interlock continuously monitors the bias current.@wizath @gkasprow Please feel free to make suggestions for how this should be changed. Also, please feel free to change my notation if I haven't used standard SCPI notation, or to suggest better ways of doing any of this!
Please make sure to document things like the safe range for the bias voltage etc.
Edit/later additions to the above:
Front panel buttons
INTERLOCK:CLEAR
CHANNEL:ENABLE 1
or CHANNEL:ENABLE 0
)@gkasprow @wizath and others, please offer feedback on this. Once we finalise this all, I'll post it to the Wiki. Thanks!
I talked with Tomasz and he says that the hardware interlock was on the reflected power! He simply swapped outputs on his coupler and did not modify schematics because he does not know how to use Altium. And Maciej simply duplicated the error. So we have to switch the coupler outputs in next revision. We can also swap them in current revision.
He simply swapped outputs on his coupler and did not modify schematics because he does not know how to use Altium. And Maciej simply duplicated the error.
:(
So we have to switch the coupler outputs in next revision. We can also swap them in current revision.
You mean switching them so that the hardware interlock applies to the forward power, and not to the reverse power?
Yes, please can you do that: switch the coupler outputs in both the current prototypes (so that we can test them) and in the next revision so that the input power and output forwards power are hardware interlocked.
Other than that, do you agree with everything I posted above?
(@hartytp: This explains my confusion, resp. the reason I asked you about the hardware interlocks a couple of weeks back. Agreed that input/output forward power hardware interlocks are the way to go, together with whatever we need to do on the reverse power to tolerate infinite opens/shorts on the outputs.)
A the moment we have HW interlocks on the input power and the output power. Original intention was to make it on the reflected power. So we leave it as it is?
In that case, yes, please leave it as it is.
Please can you double check that you are happy the descriptions I posted above for the interlock/firmware/button functions. And double check that things are implemented that way in the HW/FW.
Also, before we finalise the next revision, please make sure that all schematics are updated and consistent.
Thanks!
@gkasprow are there any other things we should be able to query from the firmware for diagnostic purposes? All ADCs that we have in the hardware should be readable via the ethernet interface for debugging.
@hartytp this looks like a complete list. At the moment we don't have non volatile memory on the main board - only small ID chips on the modules.
@gkasprow thanks for confirming. I'll copy that to the Wiki at some point in the next few days when I have time.
When will @wizath have time to implement that? I'd ideally like someone to test out Booster with the complete firmware before we order the next hardware revision.
At the moment we don't have non volatile memory on the main board - only small ID chips on the modules.
I think that non-volatile storage of the interlock settings is essential. Otherwise, they can't be relied on to protect sensitive loads. So, we have two options:
Let me know which one you want to do.
Dead bug is OK, we have free CPU pins.
Cool, let's do that.
What's the current status of the firmware that's loaded onto Booster at the moment? Should the instructions on the Wiki all work at the moment?
To check I understand things:
Also, I need a way of finding the MAC address of booster (our department does MAC address whitelisting). How can I do that? Can I do that via the UART (e.g. by sending it a request, or if it prints out a boot message)?