Date   

Re: Desoldering

Arv Evans <arvid.evans@...>
 


On Wed, Jun 23, 2021 at 10:33 AM Podolsky A <mdjdmi@...> wrote:
But where do I find a working Flux Capacitor?


Re: NanoVNA and LPF?

Christopher Maness
 

He just does trial and error method in his video.  The only difference is doing it before you solder it in the board which I don’t like because the non zero chance of hosing up a trace during the desolder process.


KQ6UP 


On Wed, Jun 23, 2021 at 10:40 AM Yury Krasouski <krasoffski@...> wrote:

Tune LPF is only half of the way.

You need to tune PA output by L4 to be 50 Ohms or at least close to this value and only than it makes sense to tune LPF with nano VNA.


Re: Shortage of Si5351A

Jim Sheldon
 

In keeping with several other replies to Pierre's topic here, I group I work with uses the 5351 in several of our projects but we don't use them in near the quantity that Hans @ QRP Labs does.

When they started to become scarce, I bought a few of the last ones available from Mouser, and when that batch got close to being used up, I went looking to see if there was another source.  I don't remember but I think Arv Evans over on the BITX20 reflector mentioned that the Chinese made an equivalent device called the MS5351M.  In searching for those to see if they were suitable, I came across a website called "Chipmall" (www.chipmall.com).  I checked them out and they actually had the MS5351M in stock, showing a quantity in excess of 5000.  Turns out I had to register as a customer before I could order, but after doing that, I took a chance and ordered 30 of them.  The price was less than $1.00 USD, but their only shipping option was DHL at $30 which was pretty expensive but after doing the math, $0.77 USD each in 30 quantity - $23.10 + $30 = $53.10 total cost for 30 of them delivered.  Now, divide $53.10 by 30 and you get $1.77 each which is not really that much more expensive than paying $1.09 each + $7.50 shipping from mouser ($40.20 total for 30 and if you do the math on that, they come to $1.34 each which is only 0.43 difference.)  That was well within range of keeping our close to break even point on target with no change in actual prices of the kit, we just dropped free postage and kept the kit price the same but added shipping & handling which actually saved a bit of money on our end as USPS has raised prices on shipping several times lately.

Now, once I got the initial order of 30 in, using one of our kits as the base, and finding an actual test socket for that SOT-10 format chip on Amazon, I designed and built a test set for the 5351.  Testing the MS5351M's against the Si5351a using the exact same parameters for both, and scope checking all 3 clocks, there turned out to be no significant difference between the two.  Even the I2C address of 0x60 was the same. 

I'm posting this here so that anyone needing reasonable quantities of the 5351 chips can, if they like, obtain them at prices that aren't terribly elevated from what the Si5351a-b-gt was before the shortage.

Jim, W0EB


Re: Audio "click" during knob rotation

 

Thanks for that story, Jerry. I know exactly where you're coming from on the subject of optimization.

My story (and I'm not going to try to one-up you!) also includes assembly language programming - 8086/87. It was a machine tool control project that brought me over here to the 'States in 1982 for my employer, Gettys Mfg., who made servo motors and drives, and a strange control system called a "tracer/duplicator" which, when attached to a milling machine, would copy models into real metal by means of tracing over the model with a probe, and controlling servos to move a milling cutter over a raw metal blank. Obviously we were eventually replaced with CNC, but in our heyday our system was used extensively in the automotive industry centered around Detroit/Windsor. and throughout UK and Europe.

The project was canceled in '83 when the company was bought out, I stayed here anyway; offshoot company started by original team to continue the work; I rejoined that team in '89 I think it was, some years after I'd earned my Green Card in '85, and I got involved with the Mk II version, which is where the fun - and my story - starts.

I had to add a lot of extra features (including adding real CNC capability), so I nailed all our existing code into a C framework. To do that I had to remap the register usage and function call structure to match the method the compiler used; quite a task, but at the end of the day I could now write new C functions to be called from the assembly language code under the C framework!

But yes, there was a lot of optimization to do. Our processor complement increased from 2 x 8086/87 to 3x 286/287 on Intel Multibus I, which was not much of an improvement because of bus/shared memory access constraints. The REAL boost came when we graduated to a pair of 486DX, which had the math co-processor built in. That reduced the time for the math co-pro context switch down from some 93 processor cycles to just a handful. Given the amount of floating point math we need (two and three dimensional trig), that made a heckuva difference. I reduced our mainline interrupt loop time from 10ms down to 1.25 ms if I recall, and the beast was still begging for more work to do!

Fun times.

Was your TI DSP the Sharc? I did some work on that while I was software manager at Tech 80, up here in Minneapolis. We got bought out and things went south, but it was fun while it lasted.

--
Julian, N4JO.


Re: Desoldering

Johan Bodin
 

But where do I find a working Flux Capacitor?
Here https://www.youtube.com/watch?v=3Cerp9CMBRY ;-)


Re: Audio "click" during knob rotation

jerry@tr2.com
 

On 2021-06-23 07:01, Julian N4JO wrote:
ency) are only really achieved when the inputs are
[...] In high hit-rate situations like encoder interfaces,
the increased overhead of interrupt handler architectures actually
reduces the performance,
I once was given a project with a TI DSP. I was given the hardware,
and created the firmware system from scratch. It needed to count Ethernet
packets. At first, I architected an interrupt driven system - one interrupt
per packet.

Then I realized that there really was no "main program" for the interrupt
to interrupt, and went to a polling loop instead.

The processor was underpowered for what it had to do, and I
pulled out all the stops to get it efficient. Things like
* Writing the whole thing in DSP assembler.
* structuring "If" statements so they usually failed. ( If the processor took a
jump, it would blow the instruction queue )
* Macros instead of subroutines
* Hand-unrolling small loops
* obsessing over the 64-instruction cache
* Pushing and popping ONLY registers that were actually used, for any
particular subroutine. This one was VERY labor intensive, and resulted
in lots of big comments at the tops of subroutines. But pushes & pops were expensive.

In the end, my processor kept up with a constant blast of minimum-length packets.

- Jerry KF6VB


Re: NanoVNA and LPF?

Yury Krasouski
 

Tune LPF is only half of the way.

You need to tune PA output by L4 to be 50 Ohms or at least close to this value and only than it makes sense to tune LPF with nano VNA.


Re: NanoVNA and LPF?

howard winwood G4GPF
 

Thats how I did mine, just used some perf board and socket strips aligned with filter pins,
Surprising how easy it is and you can see the performance of the filter as you adjust.

On 23 Jun 2021, at 17:12, Christopher Maness <christopher.maness@...> wrote:

Yeah.  I think I will try to build something out of perf board with some headers for the coils.  The caps are pretty easy to desolder from the perf board.

I guess I could find the VNA instructions for sweeping a LPF on YouTube.  I have not looked for one yet.

KQ6UP 

On Wed, Jun 23, 2021 at 9:08 AM N3MNT <bob@...> wrote:
Nothing special;  I used the adapter in the link below and installed wire sockets on an old LPF board from Hans.  The simply look at the filter cut off VS frequency and adjust the windings until the knee is at the lowest frequency you are operating.  I used the sockets so I would not have to solder and remove the torroids to adjust.  This method does induce some error, but it was negligible,
https://www.ph2lb.nl/blog/index.php?page=qrp-labs-filter-adapter-for-nanovna<20210105_150516.jpg><20210105_150415.jpg>




Re: Desoldering

geoffrey pike
 

Blowing in the wind!
Geoff

On Wednesday, 23 June 2021, 17:33:05 BST, Podolsky A <mdjdmi@...> wrote:


But where do I find a working Flux Capacitor?


Re: NanoVNA and LPF?

Leland L. Bahr
 

Me thinks I will adjust my Low Pass Filters as done by Hans as you don't know all the parameters involved.

Lee, w0vt


Re: QCX-mini failure on new build

Mont Pierce KM6WT
 

On Wed, Jun 23, 2021 at 06:19 AM, Timothy Freeze wrote:
I have a couple of blue 16x2 displays from my Aurdino collection.  Should I replace the display with one of them?
 
The 2nd one, with the 16 pin header will do nicely.

BEFORE we go on, there is one possibility that should be considered...  in constructing the mini, one of the twisted tabs under the LCD that hold it together has to be bent over to avoid hitting the alignment trimmer pots...  sometimes doing this causes the LCD issues, as it has internal contacts held together by pressure...  usually it causes missing rows of dots.  But, just wanted to mention it here.  Not sure what would happen if the tab broke off, or create too much pressure...



One test I would do, but it's just because I'm crazy... 
I would hold the LCD with the 16 pin header up against the display board's LCD, with all the pins touching the corresponding display board LCD pads.  Then power on the mini.  Two display boards can work in parallel.
BE VERY CAREFUL THOUGH NOT TO SHORT PINS 1 & 2.... 
(Ok ok, bad idea... don't do this crazy stunt...)


Another alternative would be to use dupont breadboard jumpers, male-to-female, tack solder the male ends to the LCD pads on the display board, and plug the female ends onto the LCD with the 16 pin header.  Important:  you only need to do the 6 pins from each end.  The middle 4 pins are not used.  The two LCDs will work in parallel. 
        If you see same data on both, then data is corrupted (missing bits) before it gets to the LCD. 
        Could be weak or bad pins on the processor.

        If you see good data on the attached LCD, then the display board's LCD must is probably bad...


A third approach, which is probably more reliable, but a bit more complicated, is to use a small breadboard with power rails.

Plug the LCD with 16 pin header into the breadboard.
Use jumpers to attach ground and VCC to the breadboard power rails.
Use jumpers to attach the LCD D7-D4, EN, RS, pins to their corresponding header pins on main board.
then for the other pins, duplicate the circuitry from schematic onto the breadboard.
    LCD pin 16 can just be tied to ground.
    LCD pin 15 needs R48, a 560 (+/- 200ohms, value not super critical, determines brightness of backlight)
    LCD pin 1 and 5 also tied to ground.
    LCD pin 3 needs a 3.3K to ground
    LCD pin 3 also uses the wiper on 22k Pot between ground and VCC to control contrast
         you can try different values of fixed resistors between VCC and pin 3
   

This would be a lot simpler I guess if you had another mini, or a friend close by with a mini, and could swap components back and forth to identify where it's failing... 


This puzzle is a definite challenge....

You don't by chance have a Logic Analyzer?  One like this from Amazon (click here) would do.


73
km6wt


Re: Desoldering

W8DU_Arnie
 

But where do I find a working Flux Capacitor?


Re: NanoVNA and LPF?

Christopher Maness
 

Yeah.  I think I will try to build something out of perf board with some headers for the coils.  The caps are pretty easy to desolder from the perf board.

I guess I could find the VNA instructions for sweeping a LPF on YouTube.  I have not looked for one yet.

KQ6UP 

On Wed, Jun 23, 2021 at 9:08 AM N3MNT <bob@...> wrote:
Nothing special;  I used the adapter in the link below and installed wire sockets on an old LPF board from Hans.  The simply look at the filter cut off VS frequency and adjust the windings until the knee is at the lowest frequency you are operating.  I used the sockets so I would not have to solder and remove the torroids to adjust.  This method does induce some error, but it was negligible,
https://www.ph2lb.nl/blog/index.php?page=qrp-labs-filter-adapter-for-nanovna


Re: Arduino connection to ProgRock

Syd
 

That line that you are showing looks like a constructor, maybe from JAVA! That does make the serial connection.  The "monitoring serial !" text is sent from the program right into the monitor display window to show that the connection has been made. If the connection was never made, then the connection loop would gone on forever and this message would not get displayed.

When I connect power to the ProgRock the LED on the ProgRock goes on all the time, I hope that's good. I have the DIP switch #2 set to on to go into serial data mode upon power up and that looks OK.

When I enter the sketch from page 7 of the operating manual, and then compile and load the executable into the Arduino board I do get the "Monitoring serial !" message in the serial monitor window.  So it looks like the program was loaded and has made a connection to pins 10 &11! Then the program goes into the send/receive loop. If I then power up the ProgRock I get no message from the ProgRock board as you show above! I did switch the wires around going to  pins 10 & 11, and still got no message or a reply when I enter '?' and then send in the monitor window! 

Just before making this post, I had a mishap: the gnd wire to the ProgRock board broke off and I didn't notice it when I powered up the ProgRock! After doing so I saw in the serial monitoring window an infinite series of gibberish text, mostly ? marks!  So I guess, through this mishap, that I can receive serial data from the ProgRock board to the Arduino via the USB port!  Unfortunately when I rewire in the ground wire I go back to not receiving anything from the ProgRock board.
syd/wt1v


Re: NanoVNA and LPF?

N3MNT
 

Nothing special;  I used the adapter in the link below and installed wire sockets on an old LPF board from Hans.  The simply look at the filter cut off VS frequency and adjust the windings until the knee is at the lowest frequency you are operating.  I used the sockets so I would not have to solder and remove the torroids to adjust.  This method does induce some error, but it was negligible,
https://www.ph2lb.nl/blog/index.php?page=qrp-labs-filter-adapter-for-nanovna


Re: NanoVNA and LPF?

Christopher Maness
 

I also had a notion that a self calibrating text fixture is probably overkill at 14MHz.  The thing assumes that the rest of the network is purely resistive 50 Ohms in both directions.  That assumption sneaks in enough variation to probably cancel out being careful about calibrating the VNA with the test fixture included.  However the cross talk cancelation may still be of value.   I am not sure how critical that is at 14MHz though.

KQ6UP

On Wed, Jun 23, 2021 at 8:29 AM Christopher Maness <christopher.maness@...> wrote:
Would you guys mind doing a little write up on doing this?  I am not new to Smith charts and antenna analyzers and understand the working principle of the thing, but I will just be getting my first Nano VNA today in the post.

TNX de Chris KQ6UP 


Analyzing a PA

jerry@tr2.com
 

All,

I have a sudden interest in calculating transformer ratios for solid state power amplifiers. Mostly, because I have a Chinese kit linear I'd like to interface to my QRP radios.

Not sure I remember how to do this, but here goes:

* Suppose I want to deliver 100W with a power supply of 13.8V. What turns ratio do I need for the output transformer?

We have two devices in push-pull. Each device delivers 100W, but only half the time. I'll do it for one device.

I'll assume that my device can swing its output voltage to within a half volt of ground and Vdd. So its total available swing is 12.8V, or 12.8V PEAK. Assuming a sine wave, the RMS
voltage is the peak voltage divided by the square root of two,
or about 9.05V.

Here's where I get a little confused. For a single-ended amp, I would say "Peak-to-peak swing is 12.8V" - peak voltage 12.8 divided by 2, rms = peak divided by squareroot-of-two. But for a push-pull stage, each transistor delivers one ALTERNATION of the output wave. So I guess I don't have to put in that divide by two to get from peak-to-peak to peak.

So - we have a device delivering 9.05V (rms). To deliver 100W,
( for half the time ), current = voltage / power, or 50/9.05, or 5.52 Amps. And the desired load impedance would be R = E/I, or 9.05/5.52, or
about 1.6 ohms.

For the transformer, we have a center-tapped primary, with 1.6 ohms impedance on each side of the center tap, or 3.2 ohms total. So our impedance ratio is 50ohms / 3.2ohms, or 15.6. Let's call it 16. Turns ratio is the square root of impedance ratio. So that gives us a turns
ratio of 4.

Does this sound about right?

Forty years ago, I could literally do this stuff in my head...


I was just reading a footnote in my 1976 "Devices and Circuits" college textbook:

"* Most FETs have power ratings under 1 W, although a few are available with ratings as high as 10 W."

- Jerry KF6VB


Re: NanoVNA and LPF?

Christopher Maness
 

Would you guys mind doing a little write up on doing this?  I am not new to Smith charts and antenna analyzers and understand the working principle of the thing, but I will just be getting my first Nano VNA today in the post.

TNX de Chris KQ6UP 


Re: Audio "click" during knob rotation

Mont Pierce KM6WT
 

On Wed, Jun 23, 2021 at 02:55 AM, Hans Summers wrote:
2) Those who finally understood interrupts, now use interrupts for absolutely everything, and pour scorn on anyone that doesn't
 
I would add also many do not know what is ok to do during in an interrupt handler and was is NOT ok to do.  In addition, it's always advantageous to keep interrupt handler code as small as possible, doing only what is necessary.

This is kind of a pet peeve of mine from my previous long career as an embedded systems programmer.......

I know this is a long post, so let me apologize in advance...


There are two rules that I've found imperative to avoid race conditions and phantom bugs.  These rules goes for any and all types of computers, operating systems, all platforms that have multiple threads or interrupt handlers or multi-core processors that write to the same common memory at any instant and unpredictable time.

1. Never ever "write" to the same variable from two different paths of logic (i.e. interrupt, core, thread, etc).
2. Never ever "write" and invalid value to a variable that could be read by an interrupt, core, thread, etc. at the instant it contains invalid data.

The only exception to the above is possibly a boolean variable, perhaps to control flow, or indicate a status.  But always realize which process threads are allowed to write/update it, and, at any instant, what process thread may read it.

The new Pi Pico has a feature supplied that, although limited, demonstrates the two rules above.  It has a dual core processor.  Both cores can access all memory (except one) at any time.  To support safe communications between the cores, it uses two FIFOs.  For example:  Core0 can write to FIFO-0 and read FIFO-1, Core1 can write to FIFO-1 and read FIFO-0.  These FIFOs are used to safely transfer data between to two cores, and avoid race conditions.  I don't use the PICO FIFOs though, because they are small, and there's only 1 for each core.

By using the same principle as the PICO's dedicated FIFOs, race conditions and the phantom bugs they cause can be totally avoided.

For example, lets say you have a button, and a button press interrupt handler.  For simplicity, lets also assume that the button is hardware debounced, i.e. each interrupt is a valid button press.

Well behaved code would look something like this:

// global variable  
// note: uchar is more appropriate for 8-bit processors, other processors uint might be better

volatile unsigned char btn_press_count = 0;    // only int handler writes to this var
unsigned char btn_press_handled = 0;            // only main process writes to this var

void button_pressed_interrupt()
{    ++btn_press_count; }


// then somewhere in main code that processes button presses:
while (btn_press_handled != btn_press_count)   // actual counts don't matter, loop as long as they differ
{
       // do code to process button press(es)
       ....
      // to process each button do this
      ++btn_press_handled;

      // or,
      // if need to flush the button press count, do this
      btn_press_handled = btn_press_count;
}


For serial data, I often define a circular buffer with head/tail pointers.  The interrupt writes the data into the circular buffer and updates the "head" pointer.  The main process reads the circular buffer and updates the tail pointer as long as the tail pointer doesn't match the head pointer.  Overflow detection is implemented in the interrupt handler when there's no room to add anymore data to the buffer (i.e. head minus tail == -1 , no room to move the head ).


Anyways, sorry again for the long post...


73
km6wt


Re: QCX Mini LPF adjustment experiment

Christopher Maness
 

Would you mind doing a little write up on how you used the VNA and the test fixture?  I just ordered a little 20m mini and would like to do exactly what you did.

TNX Chris KQ6UP