Fun with Goertzel

2»

Comments

  • cgracey wrote: »
    Rayman wrote: »
    Any chance the ADC could be used (somehow) for 100 MHz digital input for 1.8 V logic...

    It might be way too slow, but worth a try.

    There's a way to achieve this using DAC (to set threshold) and comparator though, right?

    I'm pretty sure we worked out how to do fast 1v8 interfacing. It just didn't involve the ADC
  • pedward wrote: »
    I forgot to add, if you pick a frequency that's a prime number near the multiple of 60hz, you'll never get a beat frequency.

    Good to know that.
  • That looks amazing. I am not familiar with the electrical workings or the concept behind how it works. After watching the video, it looks like it could be used as a very accurate tracking system. I have been trying to develop an electronic dartboard scoring system for steel darts (without using video). Could this work for that purpose? How accurate could it pinpoint a dart’s position? Would it be able to read multiple dart hits (three dart)?
  • ti85 wrote: »
    That looks amazing. I am not familiar with the electrical workings or the concept behind how it works. After watching the video, it looks like it could be used as a very accurate tracking system. I have been trying to develop an electronic dartboard scoring system for steel darts (without using video). Could this work for that purpose? How accurate could it pinpoint a dart’s position? Would it be able to read multiple dart hits (three dart)?

    I don't know. Hopefully!

    There's lots of work to be done to figure these things out.
  • cgracey wrote: »
    I've been expanding the streamer to handle ADC input and DAC output. So this effort is part of that.

    Just checking streamer/PWM etc, - from memory, you have a some smart pin modes with jitter/dither, where the LSB is modulated to get higher averaged apparent precision ?
    Does that also work in PWM modes ? Or, can the streamer feed a small repeating array (eg 16/32/64) to a smart pin, at 100Khz~1MHz rates ? ?
    Similar to video I guess, but in PWM domain.

    The use here is digital power controllers, that need finer control, but the 180MHz~250MHz gives 4ns granularity - which can be too coarse.
    eg you might set a 8 bit period for 256MHz -> 1MHz switching, and 32 step fractional dither allows 13 bit precision of average out. (dither still ultrasonic)
    or 9 bits from 256MHz gives 500kHz and 16 step dither also allows 13 bit precision.

    What triggered this, was this OnSemi press release
    Those FDMF3170/FDMF3172/FDMF3180 Power Modules look very well suited to connect to a P2. Analog Temperature and Current feedback signals, and 50~70A peak switching currents, for sub $2


  • Jmg, the only dithering we have now is toggling between adjacent DAC values to increase the DAC's resolution.

    Very cool idea about dithering PWM digitally. Might be too late for that, but I'll look into it. The streamer is torn apart right now and getting put back together soon. I'll consider there, too. There may be some room for some kind of dithering there. We'll see.
  • cgracey wrote: »
    Jmg, the only dithering we have now is toggling between adjacent DAC values to increase the DAC's resolution.

    Very cool idea about dithering PWM digitally. Might be too late for that, but I'll look into it. The streamer is torn apart right now and getting put back together soon. I'll consider there, too. There may be some room for some kind of dithering there. We'll see.

    What about streamer repeating some small array to the smart pin pwm ? That may give a workaround & allow users to select any dither patterns they like. (tho this does limit the total channels possible)
    I think the streamer can repeat any size/start, but when it says 'to the pins' it's less clear which aspects of the smart pins it can / cannot reach ?
  • jmg wrote: »
    cgracey wrote: »
    Jmg, the only dithering we have now is toggling between adjacent DAC values to increase the DAC's resolution.

    Very cool idea about dithering PWM digitally. Might be too late for that, but I'll look into it. The streamer is torn apart right now and getting put back together soon. I'll consider there, too. There may be some room for some kind of dithering there. We'll see.

    What about streamer repeating some small array to the smart pin pwm ? That may give a workaround & allow users to select any dither patterns they like. (tho this does limit the total channels possible)
    I think the streamer can repeat any size/start, but when it says 'to the pins' it's less clear which aspects of the smart pins it can / cannot reach ?

    The streamer talks straight to pins and DAC channels. To have it talk to smart pins would mean that you'd better not talk to smart pins in software, also, because there'd be a conflict. Neat idea though. Kind of a function multiplier.
  • cgracey wrote: »
    The streamer talks straight to pins and DAC channels. To have it talk to smart pins would mean that you'd better not talk to smart pins in software, also, because there'd be a conflict. Neat idea though. Kind of a function multiplier.

    Another approach could be to generate an interrupt on the PWM cycle end, and update the PWM settings on a per-cycle basis (SW dither). There are 256/512 etc cycles for this, time enough for a compact interrupt.
    This would need well-behaved buffering on PWM value/compare, & it's unclear if a smart pin event like PWM period done, can connect to interrupts ?
  • jmg wrote: »
    cgracey wrote: »
    The streamer talks straight to pins and DAC channels. To have it talk to smart pins would mean that you'd better not talk to smart pins in software, also, because there'd be a conflict. Neat idea though. Kind of a function multiplier.

    Another approach could be to generate an interrupt on the PWM cycle end, and update the PWM settings on a per-cycle basis (SW dither). There are 256/512 etc cycles for this, time enough for a compact interrupt.
    This would need well-behaved buffering on PWM value/compare, & it's unclear if a smart pin event like PWM period done, can connect to interrupts ?

    Yes, smart pins can generate interrupts. For that matter, you could do the dithering in software.
  • cgracey wrote: »
    pedward wrote: »
    I forgot to add, if you pick a frequency that's a prime number near the multiple of 60hz, you'll never get a beat frequency.

    Good to know that.

    It's what Segway did with the gears in their ride-on gizmo. It prevented resonant oscillations due to the gears being multiples of a common divisor. I figure the same would work with RF, since the right prime will never have a cycle that coincides with 60Hz.
  • cgracey wrote: »
    jmg wrote: »
    cgracey wrote: »
    The streamer talks straight to pins and DAC channels. To have it talk to smart pins would mean that you'd better not talk to smart pins in software, also, because there'd be a conflict. Neat idea though. Kind of a function multiplier.

    Another approach could be to generate an interrupt on the PWM cycle end, and update the PWM settings on a per-cycle basis (SW dither). There are 256/512 etc cycles for this, time enough for a compact interrupt.
    This would need well-behaved buffering on PWM value/compare, & it's unclear if a smart pin event like PWM period done, can connect to interrupts ?

    Yes, smart pins can generate interrupts. For that matter, you could do the dithering in software.

    Yes, that is what the interrupt is for (SW dither), as the dither needs to be cycle-sync'd.
  • cgraceycgracey Posts: 10,173
    edited November 7 Vote Up0Vote Down
    jmg wrote: »
    cgracey wrote: »
    jmg wrote: »
    cgracey wrote: »
    The streamer talks straight to pins and DAC channels. To have it talk to smart pins would mean that you'd better not talk to smart pins in software, also, because there'd be a conflict. Neat idea though. Kind of a function multiplier.

    Another approach could be to generate an interrupt on the PWM cycle end, and update the PWM settings on a per-cycle basis (SW dither). There are 256/512 etc cycles for this, time enough for a compact interrupt.
    This would need well-behaved buffering on PWM value/compare, & it's unclear if a smart pin event like PWM period done, can connect to interrupts ?

    Yes, smart pins can generate interrupts. For that matter, you could do the dithering in software.

    Yes, that is what the interrupt is for (SW dither), as the dither needs to be cycle-sync'd.

    Yes. The PWM output value is double-buffered, so you have a whole PWM cycle to come up with the next value.
  • Hi Chip

    Here's my Goertzel test code with VGA output and PST control.
    These are some of the phase errors i'm seeing here
    	100 kHz	~2 degrees
    	1.2 MHz	~50 degrees
    	2 MHz	~80 degrees
    	3 MHz	~100 degrees
    	4 MHz	~135 degrees
    
    P16 = Goertzel Reference signal
    P12 = Adhustable sample signal
    P8 = Goertzel in

    I have linked P8 to P12 via 270R resistor.

    Use PST to control the phase & amplitude of the sample signal.
    To start press 'enter' in PSST.
    You then need to scale the rho output by:
    Press 'x' to reset rho min/max/range values
    press '0a' to set amplitude to 0%
    press 'm' or '100a' to set amplitude to 100%

    Then '<' and '>' to adjust phase
    'd' and 'u' to adjust amplitude

    Here's a capture of PST output
    Gpertzel test 1.0 ozpropdev Nov 8th 2018
    
    PHASE   (<,>,z,{value}p) left,right,zero,value
    AMP    (u,d,m,{value}a) up,down,max,value
    
    RHO     (x) Reset RHO min/max
    
    
    LUT OFFSET  AMPLITUDE   FREQ. Hz        ADJ
           108        100     100000        100
    
     GTZ_X    GTZ_Y     RHO      THETA
    FFFD5D6C FFEC420E 0013EA05 BA96DD66
    
    RHO_MIN  RHO_MAX   RANGE
    00000017 0013F0DC 0013F0C5
    
    RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR 99
    
    TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT 262
    
    
    >0
    
    Melbourne, Australia
  • Thanks, Brian.

    I'm running long simulations now to see if higher bias in the front end results in better precision. I'm on the 2nd simulation that takes an hour now.

    I tried speeding up the front end, but to no avail. I can bias it up, though, to get more swing out of the WOTAs (wide-output transconductance amps), which should amount to increased resolving power. I'm hoping the simulation results on the current ADC design (that is being simulated now) will show 11-bit quality. If it does, that will be a good indication that I've got a hold on the current performance. The 3x-biased-up version that I simulated already showed not even a 1-count difference over two spans of 15,000 samples. I need to see higher error in the one simulating now. We'll see.
  • Hey Chip on the 'test chips' you had made, with just a pin pad or two, were any additional internal nodes exposed?
  • Tubular wrote: »
    Hey Chip on the 'test chips' you had made, with just a pin pad or two, were any additional internal nodes exposed?

    No.
  • Chip ... neat.

    Sorry for the late reply but referencing the post where you said "... No need for foil or ground, necessarily. You just need conductors to establish a field and then some pin or pins to read the field strength and phase..."

    I did something similar only on a large scale using two Propeller 1's about 50 feet from one another on the edge of a Bluff at Lake Michigan to determine the location of our cottage from the beach. (<-- Cottage not visible from the beach) Each propeller only had about a 6 inch Ariel running at two different frequencies close to a carrier frequency I was able to tune in with a digital short wave radio. The beat frequency of the two Propellers was audible on the receiver. As I walked along the beach 140 feet below the bluff with the short wave radio the audible signal was only present when I was somewhere within the two Propeller beacons with the signal strength being the strongest when I was located at the midpoint of the two beacons. If I were to look at the signal on a scope you would be able to visually see the phase shifting and signal strength as I moved from one beacon to the other.

    Expanding on this concept, if you had 4 transmitter antennas or conductors with a center receiver where only 2 adjacent conductors were energized at any given time, using a round robin approach for all pairs. Then taking the sin and cosine of each pair would provide direction while the hypotenuse (<- effectively the I Q product) would provide the relative signal strength.


    Beau Schwabe -- Submicron Forensic Engineer
    www.Kit-Start.com - bschwabe@Kit-Start.com ෴෴ www.BScircuitDesigns.com - icbeau@bscircuitdesigns.com ෴෴

  • Beau, I don't know if you realized from that demo, but there were four live phases and a single receiver. The receiver would get proportional sine on the vertical and cosine on the horizontal. The X,Y scope was showing the raw (cosine, sine) accumulator values, shifted down somewhat to get rid of the noisier bits.
  • I saw that... wasn't sure if all four phases were active. On a budget you could still do it with only two adjacent conductors active at a time. Either way take the sqrt(sin^2 + cos^2) to determine signal strength regardless of the X or Y position. The hypotenuse should give reliable Z axis information.


    Beau Schwabe -- Submicron Forensic Engineer
    www.Kit-Start.com - bschwabe@Kit-Start.com ෴෴ www.BScircuitDesigns.com - icbeau@bscircuitdesigns.com ෴෴

  • I want to set this up in a room. Call it personal local positioning.
    Do not taunt Happy Fun Ball! @opengeekorg ---> Be Excellent To One Another SKYPE = acuity_doug
    Parallax colors simplified: https://forums.parallax.com/discussion/123709/commented-graphics-demo-spin<br>
  • Use to see if the dogs get too close to the cat food and sound an alarm if they do...
  • Yeah, something like that.
    Do not taunt Happy Fun Ball! @opengeekorg ---> Be Excellent To One Another SKYPE = acuity_doug
    Parallax colors simplified: https://forums.parallax.com/discussion/123709/commented-graphics-demo-spin<br>
  • The picture looks like my desk right now!
  • "I want to set this up in a room. Call it personal local positioning. " - mount your foil pattern about a foot from the top of the ceiling.

    You can also reverse think this entire thing, and have one transmitter with multiple receiving antennas. I worked on a project with a hospital that used something like this to monitor equipment location. The receiver's were drop down PoE devices designed to look at the signal strength of a particular signal. by triangulation of the signal strength from multiple known points the position could be calculated. Fortunately I didn't need to figure out the math, I just made the PoE devices for them. I made several hundred PoE's for them, so I assume it worked well for them.


    Beau Schwabe -- Submicron Forensic Engineer
    www.Kit-Start.com - bschwabe@Kit-Start.com ෴෴ www.BScircuitDesigns.com - icbeau@bscircuitdesigns.com ෴෴

  • cgraceycgracey Posts: 10,173
    edited November 11 Vote Up0Vote Down
    Ozpropdev,

    I have an idea to reduce the phase-shift problem with the ADC during Goertzel use:

    Instead of using the ADC, configure the pin for logic input with 150k negative feedback. This will balance the pin near the threshold, so that it can easily be bumped up and down at the radio frequency.

    Use:

    WRPIN ##%0000_001011011_00_00000_0,pin
  • "I want to set this up in a room. Call it personal local positioning. " - mount your foil pattern about a foot from the top of the ceiling.

    Or wear a tinfoil hat!
  • cgracey wrote: »
    Ozpropdev,

    I have an idea to reduce the phase-shift problem with the ADC during Goertzel use:

    Instead of using the ADC, configure the pin for logic input with 150k negative feedback. This will balance the pain near the threshold, so that it can easily be bumped up and down at the radio frequency.

    Use:

    WRPIN ##%0000_001011011_00_00000_0,pin

    I'm testing this now.
    First test @ 2MHz is showing a 5 degree reduction in phase error.
    Seems to be more jitter in theta and rho values seem to be coarser now.
    Melbourne, Australia
  • ozpropdev wrote: »
    cgracey wrote: »
    Ozpropdev,

    I have an idea to reduce the phase-shift problem with the ADC during Goertzel use:

    Instead of using the ADC, configure the pin for logic input with 150k negative feedback. This will balance the pain near the threshold, so that it can easily be bumped up and down at the radio frequency.

    Use:

    WRPIN ##%0000_001011011_00_00000_0,pin

    I'm testing this now.
    First test @ 2MHz is showing a 5 degree reduction in phase error.
    Seems to be more jitter in theta and rho values seem to be coarser now.

    Makes sense. Was worth a try, though. Thanks for checking that out, OzPropDev.
  • If you get a chance Oz, can you try keeping going beyond 2MHz, up to 5MHz or so? Curious whether we can find a corner frequency.
Sign In or Register to comment.