Tag Archives: measurement

Measuring the Icom IC-705 RF Power vs DC Input Voltage


In the summer of 2024 during a Camb-Hams trip to Friedrichshafen, I was drawn into the world of SOTA (summits on the air). A key requirement for SOTA activations is a compact, lightweight and effective station.

When I got started, I was able to use Rob M0VFC‘s Elecraft KX2 portable transceiver. However, from our third SOTA activation of the holiday I was taking my own Icom IC-705. My CW is not great, and so I was activating on SSB mainly on HF (and some FM on VHF/UHF). The IC-705 was a little easier than the internal microphone on the KX2. Rob M0VFC was kind enough to loan me use of his 3S LiPo battery, but I noted that as soon as the voltage dropped a little from full (4.2V * 3S = 12.6V), the IC-705 power was reduced considerably. This was also apparent on the KX2, but isn’t usually an issue because the SOTA pro’s use CW. Anyway, a challenge to know what I needed to do was born… I needed to understand how the IC-705’s RF output power changed as a function to the DC input voltage. I set up a simple test…

The radio specification states 13.8V ± 15%, which gives us an absolute voltage range of 11.73V (13.8V-15%) to 15.87V (13.8V+15%).

Setup & Method

The test setup was simple. My IC-705 connected to a high quality lab power-supply (Rigol DP821), accurate voltage and current readings for DC input power (two Keysight 34401A multi-meters) and a way to measure RF output power (Keysight N9010B spectrum analyser & 30dB attenuator).

The input voltage and current could be measured and adjusted in real time and the input power would be calculated for each test. The RF output power was measured at the frequency of interest.

During all testing the external battery was removed from the radio so that the battery charging current did not confuse measurement. To generate RF, the radio was set into RTTY mode at 100% power (thus creating a pure tone at full power). Each test was automated, and tested quickly to avoid heating issues in the PA.

Initial Results

I measured things at both ends of HF (160m and 10m), and on 6m, 2m and 70cm. The results were consistent with the drop of output power I had noted. More importantly for the initial results, I could see that the behaviour was consistent across all bands, so I could concentrate testing on a single band, and take more detailed steps without creating extra work.

In every test, the power above 13V was very consistent, likely due to ALC on the PA. The efficiency slowly dropped as the input voltage increased. Below 13V, the power was observed to fall.

Further Testing

After the initial testing, I started digging a bit more into what happens between 11 and 13 Volts input. Working downwards from 13V there is a clear linear drop-off until around 11.8V where the software senses the falling voltage and drops to the 5W mode. At 11.6V the radio alternates between the 5W battery limit and the higher power (about 7.5W). This 11.73V threshold that the specification mentions (13.8V-15%).

For useful purposes, we need to keep the DC IN voltage above 11.8V (and below the maximum of 15.87V).

Battery Choices

Assuming we want to keep with a modern battery technology (so, excluding NiCd and NiMH), we have two obvious choices of lithium-ion battery:

  • Lithium Polymer (LiPo) battery
  • Lithium Iron Phosphate (LiFePO4) battery

For each battery pack, there are different combinations of series (S) and parallel (P) configurations, detailed using this “S” and “P” notation. For example, you may see a “3S4P”, referring to three series sets of four parallel batteries. Parallel-ing the batteries increases current handling and overall power, and the voltage is unchanged. Series-ing the batteries increases the voltage and overall power, but the current is unchanged.

Each battery technology has a different nominal voltage (the assumed cell voltage), charged voltage (the maximum cell voltage) and the discharge voltage (the minimum cell voltage). A battery will often have a BMS (battery management system) to take care of protecting the battery from over-charging, over-discharging, balancing (keeping the voltage across series cells equal), etc., but these are out of scope for this page.


Typical Lithium Polymer (LiPo) cells have a nominal voltage of 3.7V. Fully charged, each cell is 4.2V. Fully discharged, each cell is 3.2V.

See more on LiPo cells on Wikipedia.


Typical Lithium Iron Phosphate (LFP, or more commonly LiFePO4) batteries have a nominal voltage of 3.2V. Fully charged, each cell is 3.65V. Fully discharged, each cell is 2.5V.

They have a higher cycle rating than standard LiPo batteries, meaning they can be charged and discharged more many more (>60% more) times before they start to fail.

See more on LiFePO4 cells on Wikipedia.

Why not use X?

I have tried to limit my choice to batteries that are widely known and in production. I have seen AliExpress selling Sodium-Ion batteries and other similarly novel battery technologies, but without easy access and known reliability, I didn’t include them.

See more experimental battery types on Wikipedia.

Battery Comparison

From the IC-705 testing and the specification as well our two battery choices, we can see what options are available.

Extrapolating from the two battery types above, we can see that configurations in the right kind of area are as follows:

Unfortunately, there is no ideal solution with these battery technologies. It is kind of disappointing that Icom did not consider this when designing the radio – a small design tweak to take 17V would have allowed LiPo 4S battery packs to be used. Instead, the best option is LiFePO4 4S. However, as the battery discharges, the lower voltage becomes an issue.

From the tables above it is possible to see that the only real options are LiPo 3S and LiFePO4 4S since the other combinations have the ability to supply excessive voltage (>15.87V) to the radio. Of these two, the LiFePO4 4S has a higher maximum voltage (14.6V vs LiPo 3S at 12.6V). For this reason, the LiFePO4 4S is my preferred choice. LiFePO4 has the added advantage of a higher cycle count and increased safety too, so those are further marks on the LiFePO4 scorecard.

The voltage decision is made: LiFePO4 4S. Now for the capacity of the battery…

Battery Capacity

The 4S battery fixes the pack voltage to a nominal 12.8V. For the capacity, it’s just a case of estimating how much current the radio will draw and then using this to infer the battery capacity you require in “Amp-Hours”.

The IC-705 draws around 220mA (0.22A) in receive from the external power supply at 12.8V (our nominal LiFePO4 4S voltage). If we would like the radio to run on receive for an evening, say 6 hours, we’d need a battery to run 0.22A * 6h = 1.32Ah.

In reality a SOTA activation will be around 50% transmit (at ~2.1A) and 50% receive (at ~0.22A). However, the activation will probably be quite short, perhaps 30 minutes, perhaps 2 hours. By working out the average current used during an hour, an approximate runtime can be calculated for any battery or a battery capacity specified for a given desired operating period.

The final, and perhaps most important consideration for battery capacity is weight! The typical way to expand the current capability of the battery is to parallelise cells; which in effect means doubling the number of them – in our case, doubling or 4-series-connected cells, thus creating two interconnected strings of 4 cells, totalling 8 cells. This becomes a 4S2P battery pack as we discussed earlier. The capacity is doubled. But, so is the weight!

So, what did I buy?

In the end I bought a LiFePO4 4S1P battery made from 3Ah cells. This gives me a 12.8V nominal, 3Ah battery which will run the IC-705 on receive for around 13 hours, or a mix of SSB TX and receive for around 4 hours.

Feeling Brave? Try a LiPo 4S?

Shortly after writing this, I was on a discussion online and someone told me that they had run their IC-705 on a 4S LiPo pack for years and the radio had been fine. They mentioned that it stops charging the battery when the input voltage was above 16V (already out of spec) but that they had happily used 16.8V inputs (actually in excess of 17V) with no damage to the radio.

In a moment of madness, I tried 17V input and noted that (a) the IC-705 does stop charging the internal battery, (b) the HF noise floor was quieter (likely due to the battery charger powering off) and (c) that the radio didn’t explode and still delivered 10W. The radio’s voltage readout caps at 16V on the meter display and the voltage quick menu shows “Hi Voltage” instead of a number. See the two images below showing the difference at 16.9V input (from my 4S LiPo pack).

Maybe not the best thing to do long term, but it could help get you that that much needed QSO on a wet and windy SOTA…

Characterising some VCOs for use in a GPSDO PLL

A key part of a GPS disciplined oscillator is the oscillator itself. During earlier testing I had used two Trimble 34310-T2 OCXO units and one seemed to perform much better than the other. I later read that this may be due to their aging, and that they gradually drift away from their optimal frequency – in this case, 10.000000 MHz – which in turn makes the phase-locked loop (PLL) struggle to converge the frequencies (and thus phase) of the loop. I also have a couple of IsoTemp 143-141 OCXOs, which I will measure, too.

The PLL compares the incoming phase of a reference frequency (here, derived from GPS timings) and the oscillator we’re ‘disciplining’. The loop can work in many ways, but, a common technique is to use digital signals from a phase-frequency detector though an analogue loop filter to generate some kind of voltage control voltage. This voltage is then fed back to the control pin of the oscillator, and the frequency changes accordingly. My post on using a Lattice FPGA development board to create a phase-frequency detector can be found in my Experiments with Phase-Frequency Detectors post.

My first task was to characterise the relationship between frequency and control voltage. For this task, I used a networked spectrum analyser in frequency counter mode and power supply, writing a simple Python3 script to twiddle the control voltage and record the corresponding frequency. I settled on taking an average of 5 readings at each voltage, with the control voltage swept at 100mV intervals through the specified VCO range. I repeated this for each of the oscillators I was hoping to use.

The IsoTemp 143-141 units have a much wider tuning range when compared to the Trimble 34310-T2 modules. In practice this means that the Trimble devices will have greater frequency resolution since they cover a smaller tuning range for the same control voltage range.

Another practical aside is that the IsoTemp 143-141 is a single-ovened oscillator whereas the Trimble 34310-T2 is a double-ovened module. This means that the Trimble unit is much less prone to external thermal variation. However, the IsoTemp unit as a larger tuning range, which will help the PLL keep in lock when there are large temperature variations.

The nominal 10 MHz frequency is found at the following tune voltage for each unit:

OCXO UnitApprox. Tuning Voltage (V)Measured Frequency (Hz)
34310-T2 Old1.9010000000.03
34310-T2 New3.7010000000.04
143-141 #12.1010000000.18
143-141 #22.009999999.78

It is clear from this that “34310-T2 New” is skewed to a higher voltage than the older Trimble unit.

I also observed the warmup time for each of the oscillator modules and the frequency of oscillation without any control voltage applied. Each unit was correctly orientated, supplied with the correct supply voltage as per the datasheet , and without any extra thermal insulation. The room temperature was 21C.

OCXO UnitApproximate Oven Warmup Time (m)Power Requirements (W)Natural Frequency (Hz)
34310-T2 Old~4 (sharp cut off)Max: 8.60
Norm: 2.08
(ΔF: 0.88 Hz)
34310-T2 New~4 (sharp cut off)Max: 8.62
Norm: 2.00
(ΔF: -3.20 Hz)
143-141 #1~5 (more gradual)Max: 2.63
Norm: 1.03
(ΔF: -0.99 Hz)
143-141 #2~5(more gradual)Max: 2.61
Norm: 1.10
(ΔF: -0.13 Hz)

An example of the data captured during the warmup is given below for the Trimble units below:

34310-T2 Old:

34310-T2 New

It is clear to see both Trimble units behave similarly, taking a similar time to warm up at around 4 minutes. The same data was obtained for both IsoTemp modules:

143-141 #1 – I suspect the first point at -1250 Hz is caused by measurement error and can be disregarded. This brings the unit inline with how #2 (below) responds

143-141 #2

The next thing I would like to measure is the phase noise of both of the oscillator units. I have been playing around with scripting the measurement of phase noise of a signal using a spectrum analyser in clever ways. I am able to produce the following graphs. It is important to note that these graphs are not accurate!

A snippet from the IsoTemp 143 datasheet shows these measurements to be considerably distant from the expected results – again confirmation that the above graphs are not accurate.

For now, these are the best I am capable of producing. The numerical values are not absolute, although they should be comparable to those measured on a real noise analyser. However, they’re valid for an optician style “better-or-worse” comparison. I think it is fair to draw the conclusion that the phase noise of the Trimble unit is “better” than that of the IsoTemp unit. It is also worth noting that the output from the IsoTemp unit measured +13.5dBm (square wave), whereas the Trimble unit output only +5.3dBm (sine wave). This extra power required a slightly higher minimum attenuation in order to keep the spectrum analyser happy.

I also took the opportunity to look at the harmonic content for both types of oscillator. First the Trimble unit:

As expected, the IsoTemp produced high levels of odd-harmonics, which is to be expected given the square-wave output:

It seems that both the Trimble and IsoTemp parts are viable in the circuit I have been thinking of. The Trimble has a much more gentle Hz/Volt curve and as a result a smaller adjustment tolerance. Conversely the IsoTemp parts are considerably lower power (6W less, in fact, at peak), and also run at half the power (1W vs 2W) when at temperature.

Air Particulate Sensor


Around a year ago a colleague mentioned to me the Luftdaten project (en: air data project). It is a sort of citizen science project which measures and records particulate matter in the air. They also have a newer project concerning acoustic noise levels (build notes for this in German here), but I’ll be concentrating on particulate matter here. Often the sensors are combined to collect data on airborne particulate levels, acoustic noise, temperature, humidity and air pressure to name a few. The images below show 24h graphs for some of the measured parameters from various sensors around Europe.

I have long had a fondness for collecting data and the Luftdaten project has plenty! Their website features an interactive map of the world where they plot measurements taken.

The particulates detected include dust, dirt, soot, smoke, and liquid droplets emitted into the air which are small enough to be suspended in the atmosphere. Airborne particulates may be a complex mixture of organic and inorganic substances. The type of sensor used does not differentiate between the particle types, it just gives a measure of how many are present.


I purchased all of the parts cheaply from AliExpress (no affiliation). You’ll find the same parts on eBay, BangGood, etc., so use what you prefer.

The particulate matter sensor is a Nova SDS011 PM sensor (datasheet), which can be purchased for around £14.

You’ll probably also want a DHT22 temperature & humidity sensor (datasheet) which will cost around £2.

Finally a NodeMCU V3 is required. This is a module based on the ESP8622 WiFi chip, which includes a USB-UART interface, some voltage regulators, etc. In a later step, we’ll program this with the Luftdaten code.

A short length of plastic pipe can help to draw air into the SDS011 sensor. The datasheet for the SDS011 suggests an inside diameter of 6mm and outside diameter of 8mm.

The photo below shows my assembled parts! You’ll notice int he bottom right of the image that I have an Influencair V1.2 PCB. Influencair are a spin-off group of Luftdaten based in Belgium. CivicLabsBelgium produced PCBs for project participants to use and made the PCB Gerber Files available here. You can send these off for manufacture using any PCB service you like (for example, in no order JLCPCB, PCBWay, DirtyPCBs, Elecrow, and so on).

Build notes & Programming

The build process is explained thoroughly on the Luftdaten website under the construction manual page. As I won’t be able to do a better job of explaining this, I suggest you go ahead and read their documentation. Below shows the parts mounted on my Influencair V1.2 PCB. I used 3mm screws to hold everything together.

Programming, Configuration & Registering

The default programming proceedure requires setting up the ESP8622 in the Arduino software environment, but Piotr Dobrowolski has created a very useful tool: airrohr-firmware-flasher for the Luftdaten project. I used the Linux variant of the program the NodeMCU in one click, but Windows and macOS versions exist too! Be sure to find the “releases” button on GitHub to download the pre-compiled ready-to-use binaries!

With the NodeMCU connected to the PC with a USB cable, I selected “latest_en.bin” from the version list (en being English), and pressed Upload. As you can see from the figure below, it took just over 8 seconds and it was done!

Power cycling the board resulted in a WiFi device being created by the newly created sensor! I connected my mobile phone to “airRohr-11189671” and was greeted with the following screen.

I tapped on my house WiFi “SmartLAN”, entered my super-secret passkey and we were away! The device power cycled and was then visible from the flasher once again.

From this, I was able to see the sensor was assigned an IP address on my network, and double-clicking on the entry whisked me off to my default web browser viewing the sensor’s internal webpages.

There are many configuration options, but the defaults were suitable for my hardware configuration. There are options for OLED and LCD screens, extra/different sensors and many other configurations which are out of the scope of this article. However you can click “Current Data” to see the sensors latest measurement data. The image below was taken with the sensor indoors.

The final thing to do is to create an account on the Luftdaten project website so your sensor can contribute measurements. There are already a reasonable number of sensors in the UK contributing data to Luftdaten. You can create your account and submit your sensor data here: https://meine.luftdaten.info

I have positioned my sensor in the garden shed with a short section of plastic pipe poking outside of the shed where the wind blows. I live near a busy roundabout and buy a petrol filling station, so it will be interesting to compare my measurements with other local sensor readings.