Announcement

Collapse
No announcement yet.

Announcement

Collapse
No announcement yet.

Modified sketch for improved timing precision.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Spectrum
    replied
    Originally posted by Spectrum View Post

    Pls help

    Arduino: 1.6.8 (Windows 7), Board: "Arduino Nano, ATmega328" 2 3 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void setup()': 4 5 Arduino_PI_Teleno:132: error: redefinition of 'void setup()' 6 7 void setup() { 8 9 ^ 10 11 Arduino_PI_Teleno:1: error: 'void setup()' previously defined here 12 13 14 15 ^ 16 17 Arduino_PI_Teleno:141: error: 'tiny4koled_init_128x32br' was not declared in this scope 18 19 oled.begin(width, height, sizeof(tiny4koled_init_128x32br), tiny4koled_init_128x32br); 20 21 ^ 22 23 Arduino_PI_Teleno:144: error: 'class SSD1306Device' has no member named 'setSpacing' 24 25 oled.setSpacing(1); 26 27 ^ 28 29 Arduino_PI_Teleno:146: error: 'class SSD1306Device' has no member named 'setSpacing' 30 31 oled.setSpacing(smallFont->spacing + 1); 32 33 ^ 34 35 Arduino_PI_Teleno:146: error: 'const struct DCfont' has no member named 'spacing' 36 37 oled.setSpacing(smallFont->spacing + 1); 38 39 ^ 40 41 Arduino_PI_Teleno:156: error: 'class SSD1306Device' has no member named 'setSpacing' 42 43 oled.setSpacing(1); 44 45 ^ 46 47 Arduino_PI_Teleno:158: error: 'class SSD1306Device' has no member named 'setSpacing' 48 49 oled.setSpacing(largeFont->spacing + 1); 50 51 ^ 52 53 Arduino_PI_Teleno:158: error: 'const struct DCfont' has no member named 'spacing' 54 55 oled.setSpacing(largeFont->spacing + 1); 56 57 ^ 58 59 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void loop()': 60 61 Arduino_PI_Teleno:272: error: redefinition of 'void loop()' 62 63 void loop() { 64 65 ^ 66 67 Arduino_PI_Teleno:6: error: 'void loop()' previously defined here 68 69 * 3 - OLED interface to visulaize the delay 70 71 ^ 72 73 exit status 1 74 redefinition of 'void setup()' 75 76 This report would have more information with 77 "Show verbose output during compilation" 78 option enabled in File -> Preferences. 79​
    Solved

    Leave a comment:


  • Spectrum
    replied
    Originally posted by SaltyDog View Post

    Hi, I have just added the display and can now report the following findings:

    1. <= 20uS no targets found.
    2. 25uS all target metals found
    3. 70..75 uS Gold target disappears but other metals still found, Aluminium pull-tabs faint ...

    I can also report a session down at the beach scored one gold ring and "no" rubbish dug. As I hunted at 25uS, then confirmed target at 75uS.
    So I am a happy man.

    Different coils and dampening may give different numbers for you. But the above discrimination is possible.
    Pls help

    Arduino: 1.6.8 (Windows 7), Board: "Arduino Nano, ATmega328" 2 3 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void setup()': 4 5 Arduino_PI_Teleno:132: error: redefinition of 'void setup()' 6 7 void setup() { 8 9 ^ 10 11 Arduino_PI_Teleno:1: error: 'void setup()' previously defined here 12 13 14 15 ^ 16 17 Arduino_PI_Teleno:141: error: 'tiny4koled_init_128x32br' was not declared in this scope 18 19 oled.begin(width, height, sizeof(tiny4koled_init_128x32br), tiny4koled_init_128x32br); 20 21 ^ 22 23 Arduino_PI_Teleno:144: error: 'class SSD1306Device' has no member named 'setSpacing' 24 25 oled.setSpacing(1); 26 27 ^ 28 29 Arduino_PI_Teleno:146: error: 'class SSD1306Device' has no member named 'setSpacing' 30 31 oled.setSpacing(smallFont->spacing + 1); 32 33 ^ 34 35 Arduino_PI_Teleno:146: error: 'const struct DCfont' has no member named 'spacing' 36 37 oled.setSpacing(smallFont->spacing + 1); 38 39 ^ 40 41 Arduino_PI_Teleno:156: error: 'class SSD1306Device' has no member named 'setSpacing' 42 43 oled.setSpacing(1); 44 45 ^ 46 47 Arduino_PI_Teleno:158: error: 'class SSD1306Device' has no member named 'setSpacing' 48 49 oled.setSpacing(largeFont->spacing + 1); 50 51 ^ 52 53 Arduino_PI_Teleno:158: error: 'const struct DCfont' has no member named 'spacing' 54 55 oled.setSpacing(largeFont->spacing + 1); 56 57 ^ 58 59 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void loop()': 60 61 Arduino_PI_Teleno:272: error: redefinition of 'void loop()' 62 63 void loop() { 64 65 ^ 66 67 Arduino_PI_Teleno:6: error: 'void loop()' previously defined here 68 69 * 3 - OLED interface to visulaize the delay 70 71 ^ 72 73 exit status 1 74 redefinition of 'void setup()' 75 76 This report would have more information with 77 "Show verbose output during compilation" 78 option enabled in File -> Preferences. 79​

    Leave a comment:


  • Spectrum
    replied
    Originally posted by SaltyDog View Post

    Left your share at the beach ... too heavy to post
    Pls help

    Arduino: 1.6.8 (Windows 7), Board: "Arduino Nano, ATmega328" 2 3 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void setup()': 4 5 Arduino_PI_Teleno:132: error: redefinition of 'void setup()' 6 7 void setup() { 8 9 ^ 10 11 Arduino_PI_Teleno:1: error: 'void setup()' previously defined here 12 13 14 15 ^ 16 17 Arduino_PI_Teleno:141: error: 'tiny4koled_init_128x32br' was not declared in this scope 18 19 oled.begin(width, height, sizeof(tiny4koled_init_128x32br), tiny4koled_init_128x32br); 20 21 ^ 22 23 Arduino_PI_Teleno:144: error: 'class SSD1306Device' has no member named 'setSpacing' 24 25 oled.setSpacing(1); 26 27 ^ 28 29 Arduino_PI_Teleno:146: error: 'class SSD1306Device' has no member named 'setSpacing' 30 31 oled.setSpacing(smallFont->spacing + 1); 32 33 ^ 34 35 Arduino_PI_Teleno:146: error: 'const struct DCfont' has no member named 'spacing' 36 37 oled.setSpacing(smallFont->spacing + 1); 38 39 ^ 40 41 Arduino_PI_Teleno:156: error: 'class SSD1306Device' has no member named 'setSpacing' 42 43 oled.setSpacing(1); 44 45 ^ 46 47 Arduino_PI_Teleno:158: error: 'class SSD1306Device' has no member named 'setSpacing' 48 49 oled.setSpacing(largeFont->spacing + 1); 50 51 ^ 52 53 Arduino_PI_Teleno:158: error: 'const struct DCfont' has no member named 'spacing' 54 55 oled.setSpacing(largeFont->spacing + 1); 56 57 ^ 58 59 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void loop()': 60 61 Arduino_PI_Teleno:272: error: redefinition of 'void loop()' 62 63 void loop() { 64 65 ^ 66 67 Arduino_PI_Teleno:6: error: 'void loop()' previously defined here 68 69 * 3 - OLED interface to visulaize the delay 70 71 ^ 72 73 exit status 1 74 redefinition of 'void setup()' 75 76 This report would have more information with 77 "Show verbose output during compilation" 78 option enabled in File -> Preferences. 79​

    Leave a comment:


  • Spectrum
    replied
    Originally posted by Teleno View Post

    Gain-BW-product of the NE5534 is 10Mhz. At 1000 gain the BW is a mere 10KHz. My 61 y.o. eardrums do better than that..
    Pls help
    Arduino: 1.6.8 (Windows 7), Board: "Arduino Nano, ATmega328" 2 3 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void setup()': 4 5 Arduino_PI_Teleno:132: error: redefinition of 'void setup()' 6 7 void setup() { 8 9 ^ 10 11 Arduino_PI_Teleno:1: error: 'void setup()' previously defined here 12 13 14 15 ^ 16 17 Arduino_PI_Teleno:141: error: 'tiny4koled_init_128x32br' was not declared in this scope 18 19 oled.begin(width, height, sizeof(tiny4koled_init_128x32br), tiny4koled_init_128x32br); 20 21 ^ 22 23 Arduino_PI_Teleno:144: error: 'class SSD1306Device' has no member named 'setSpacing' 24 25 oled.setSpacing(1); 26 27 ^ 28 29 Arduino_PI_Teleno:146: error: 'class SSD1306Device' has no member named 'setSpacing' 30 31 oled.setSpacing(smallFont->spacing + 1); 32 33 ^ 34 35 Arduino_PI_Teleno:146: error: 'const struct DCfont' has no member named 'spacing' 36 37 oled.setSpacing(smallFont->spacing + 1); 38 39 ^ 40 41 Arduino_PI_Teleno:156: error: 'class SSD1306Device' has no member named 'setSpacing' 42 43 oled.setSpacing(1); 44 45 ^ 46 47 Arduino_PI_Teleno:158: error: 'class SSD1306Device' has no member named 'setSpacing' 48 49 oled.setSpacing(largeFont->spacing + 1); 50 51 ^ 52 53 Arduino_PI_Teleno:158: error: 'const struct DCfont' has no member named 'spacing' 54 55 oled.setSpacing(largeFont->spacing + 1); 56 57 ^ 58 59 C:\Users\pc\AppData\Local\Temp\untitled28901596.tm p\sketch_oct30a\Arduino_PI_Teleno.ino: In function 'void loop()': 60 61 Arduino_PI_Teleno:272: error: redefinition of 'void loop()' 62 63 void loop() { 64 65 ^ 66 67 Arduino_PI_Teleno:6: error: 'void loop()' previously defined here 68 69 * 3 - OLED interface to visulaize the delay 70 71 ^ 72 73 exit status 1 74 redefinition of 'void setup()' 75 76 This report would have more information with 77 "Show verbose output during compilation" 78 option enabled in File -> Preferences. 79​

    Leave a comment:


  • Spectrum
    replied
    Redefinition of void setup

    Leave a comment:


  • SaltyDog
    replied
    I can confirm the NE5534 is fast enough. Just for interest, I swapped out my slowish coil (20uS) for a 160uH spider-wieve coil, and now
    I can detect small gold at 200mm with sample delay set to 5uS .. and that is without optimising the damping R

    Leave a comment:


  • Carl-NC
    replied
    C6-R13 slightly reduces EFE but it is the differential sampling of the demod that does most of the cancellation. Personally, I don't include the high pass filter as I don't find it to be all that useful. On the preamp, I've found that single stage vs two stage depends on the exact opamp being used. For some opamps, single stage is more optimal, for other opamps two stage is faster. Ferinstance, a long overvoltage recovery time may make a 2-stage preamp too slow.

    Leave a comment:


  • Tinkerer
    replied
    2 Stage with the ADA4807 works well for the preamp.

    Leave a comment:


  • Teleno
    replied
    Originally posted by SaltyDog View Post
    The op-amp has a very good gain/bandwidth product, and can easily do 1000 gain with little noise, so why not?
    Gain-BW-product of the NE5534 is 10Mhz. At 1000 gain the BW is a mere 10KHz. My 61 y.o. eardrums do better than that..

    Leave a comment:


  • Teleno
    replied
    Originally posted by SaltyDog View Post

    Theory is one thing, where are all your results from field testing ...
    The current design works very well. The op-amp has a very good gain/bandwidth product, and can easily do 1000 gain with little noise, so why not?
    I have tried in the past lot's of dual op-amp designs and they have all performed worse than the single high gain solution.
    Again theory is one thing, but you have to actually do the field testing ..
    I'm talking from the field experience of my own design, this full digital signal processing PI with a 17-gain fast preamp. Less than 5us sampling delay,

    https://www.geotech1.com/forums/foru...-added-bonuses







    I had done the Minipulse Plus before with the same kind of RC removed.

    It doesnt make sense in theory, it doesn't make sense in the field either (as expected).

    Leave a comment:


  • SaltyDog
    replied
    Originally posted by Teleno View Post

    Glad it worked for you. I appreciate your feedback but where's my share of the bounty?
    Left your share at the beach ... too heavy to post

    Leave a comment:


  • SaltyDog
    replied
    Originally posted by Teleno View Post

    To get rid of the EF component you wat till the target signal has vanished (that's what the long efeSample delay is for), sample it and subtract it from the (signal +EF) early component.

    The differentiator is in the way. I would say the whole analog part is crappy, starting with the huge gain of the first op amp that kills any bandwidth.
    Theory is one thing, where are all your results from field testing ...
    The current design works very well. The op-amp has a very good gain/bandwidth product, and can easily do 1000 gain with little noise, so why not?
    I have tried in the past lot's of dual op-amp designs and they have all performed worse than the single high gain solution.
    Again theory is one thing, but you have to actually do the field testing ..

    Leave a comment:


  • Teleno
    replied
    Originally posted by SaltyDog View Post

    Hi, I have just added the display and can now report the following findings:

    1. <= 20uS no targets found.
    2. 25uS all target metals found
    3. 70..75 uS Gold target disappears but other metals still found, Aluminium pull-tabs faint ...

    I can also report a session down at the beach scored one gold ring and "no" rubbish dug. As I hunted at 25uS, then confirmed target at 75uS.
    So I am a happy man.

    Different coils and dampening may give different numbers for you. But the above discrimination is possible.
    Glad it worked for you. I appreciate your feedback but where's my share of the bounty?

    Leave a comment:


  • Teleno
    replied
    Originally posted by SaltyDog View Post

    I don't think that will work. C6/R13 is a differentiator, and is a required high pass filter(Freq >34 Hz),
    It also performs the task of getting rid of the DC component for the EFE stage.

    In the field the EFE compensation must work, as I am not seeing any ground effect.
    It's nor a ground effect, it's the voltage induced by the earth's magnetic field as you swing the coi.

    EF is a DC offset within a period. If you pass it through an RC differentiator you get a decaying exponential. Just do the simulation.

    Top: no differentiator. Bottom with differentiator.

    Click image for larger version

Name:	Schermopname (371).png
Views:	219
Size:	149.5 KB
ID:	420546


    To get rid of the EF component you wat till the target signal has vanished (that's what the long efeSample delay is for), sample it and subtract it from the (signal +EF) early component.

    The differentiator is in the way. I would say the whole analog part is crappy, starting with the huge gain of the first op amp that kills any bandwidth.

    Leave a comment:


  • SaltyDog
    replied
    Originally posted by Teleno View Post
    Now correct me if I'm wrong but C6 and R13 between TP6 and the input of the analog switches are totally wrong.

    C6/R13 turn the EF signal (which is constant within one period) into a decaying exponential. After efeSampleDelay the signal being subtracted at the differential integrator is not the EF signal level that's riding on the main sample, but a decayed version at a lower level, breaking the EF compensation scheme.

    In MOD3 (see /doc folder in the sketch distribution) I suggest removing C6 and shorting its pads, and removing R13. Then adjust the offset at TP6.
    I don't think that will work. C6/R13 is a differentiator, and is a required high pass filter(Freq >34 Hz),
    It also performs the task of getting rid of the DC component for the EFE stage.

    In the field the EFE compensation must work, as I am not seeing any ground effect.

    Leave a comment:

Working...
X