Announcement

Collapse
No announcement yet.

Arduino Nano PI Main Discussion

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

  • Click image for larger version  Name:	IMG_20240208_185627937.jpg Views:	0 Size:	545.2 KB ID:	420001Here is what my unit looks like. Also, I managed 40cm with my gold ring.
    The case is a waterproof clam-shell with an over-center clamp, and an o-ring seal.
    The handle is a cutdown walking stick ... just perfect ..
    Attached Files

    Comment


    • Nice. Mine is still bare bones awaiting the time and energy to actually test with the assortment of coils I've built or acquired.

      Comment


      • Originally posted by Teleno View Post

        The way to generate precise pulses is to configure a timer to drive a PWM output.
        I've added a sketch that applies this more precise timing method.

        https://www.geotech1.com/forums/foru...ming-precision

        Comment


        • Originally posted by Gunghouk View Post
          1 = 1/16 Mhz = 62.5 nS so multiply those offset values by 62.5nS to give uS.
          So I did the calculations, why the such precise timing? I don't see the need?
          word TxOnOffset = -40; // TX-on pulse width offset (2.5us)
          word MainDelayOffset = -36; // Main sample pulse delay offset (2.25us)
          word MainSampleOffset = -41; // Main sample pulse width offset (2.56us)
          word EfeDelayOffset = -118; // EFE pulse delay offset (7.38us)
          word EfeSampleOffset = -42; // EFE pulse width offset (2.63us)
          word TxPeriodOffset = -241; // TX period offset (15.1us)​

          Comment


          • Originally posted by SaltyDog View Post

            So I did the calculations, why the such precise timing? I don't see the need?
            You can make very precise calculations but at the end of the day if you toggle the pin by software (bit-banging with digitalWrite()), especially inside an interrupt, you have to add the latencies which are not constant. The actual pulses will vary in timing from one period to the other, depending on which instruction is being interrupted. These vatiations are called jitter, and result in higher noise and loss of sensitivity.

            You want to control the pulses by hardware with the precision of the crystal clock, which is not a problem because Atmega328P has the right peripheral to do the job.

            Why not take andvantage of it? It also results in cleaner code and you don't have to mess wth offsets.

            But I'm not forcing you, just giving you a choice for FREE. No thanks!

            Comment


            • Originally posted by Teleno View Post

              You can make very precise calculations but at the end of the day if you toggle the pin by software (bit-banging with digitalWrite()), especially inside an interrupt, you have to add the latencies which are not constant. The actual pulses will vary in timing from one period to the other, depending on which instruction is being interrupted. These vatiations are called jitter, and result in higher noise and loss of sensitivity.

              You want to control the pulses by hardware with the precision of the crystal clock, which is not a problem because Atmega328P has the right peripheral to do the job.

              Why not take andvantage of it? It also results in cleaner code and you don't have to mess wth offsets.

              But I'm not forcing you, just giving you a choice for FREE. No thanks!
              I was asking a question of Gunghouk, different discussion, try not to be so sensitive ..

              Comment


              • Originally posted by SaltyDog View Post

                I was asking a question of Gunghouk, different discussion, try not to be so sensitive ..
                To answer your question the aim was to standardise the software loop time and ISR times to allow the ISR to complete without interrupting itself thus causing jitter. Most of the ISR time was spent bit banging the outputs, hence fast digital write instead. While attempting that it became obvious that other sections of code were adding to loop time, such as floating point maths in the pulse timing routine. So in for a penny.... I eliminated conditional statements as stated in the comments and used integer variables wherever possible. As stated by Teleno it is not about absolute accuracy but more about consistancy in pulse timing by hardware (preferred) and/or software.

                Comment


                • Originally posted by Gunghouk View Post

                  To answer your question the aim was to standardise the software loop time and ISR times to allow the ISR to complete without interrupting itself thus causing jitter. Most of the ISR time was spent bit banging the outputs, hence fast digital write instead. While attempting that it became obvious that other sections of code were adding to loop time, such as floating point maths in the pulse timing routine. So in for a penny.... I eliminated conditional statements as stated in the comments and used integer variables wherever possible. As stated by Teleno it is not about absolute accuracy but more about consistancy in pulse timing by hardware (preferred) and/or software.
                  Perfect, thanks ...

                  Comment


                  • Qiaozhi Hi George, just letting you know that with the code from Teleno on https://www.geotech1.com/forums/foru...ge4#post420147 thread, I have been able to get a degree of discrimination for gold .. the method is:

                    Set the delay to where it is most sensitive for gold. REDUCE the delay to where gold does not respond, but other metals still respond. By just these two delay settings, you can tell if you have gold or not, even "just" discriminates against pull tabs I had my wife do a blind test with various samples of target, and I was able to pick the gold out every time.

                    I could not achieve that with your existing code, so feel it is a worthwhile improvement to the project.

                    Comment


                    • Originally posted by SaltyDog View Post
                      Qiaozhi Hi George, just letting you know that with the code from Teleno on https://www.geotech1.com/forums/foru...ge4#post420147 thread, I have been able to get a degree of discrimination for gold .. the method is:

                      Set the delay to where it is most sensitive for gold. REDUCE the delay to where gold does not respond, but other metals still respond. By just these two delay settings, you can tell if you have gold or not, even "just" discriminates against pull tabs I had my wife do a blind test with various samples of target, and I was able to pick the gold out every time.

                      I could not achieve that with your existing code, so feel it is a worthwhile improvement to the project.
                      So you tried the frequency/amplitude modulation. How did it go?

                      Comment


                      • Originally posted by Teleno View Post

                        So you tried the frequency/amplitude modulation. How did it go?
                        No, just with your release prior to that.

                        Comment


                        • Originally posted by SaltyDog View Post

                          No, just with your release prior to that.
                          I asked cause you linked to the sketch that also does the f modulation. Anyway the timing is just the same.

                          Comment


                          • Originally posted by Teleno View Post

                            I asked cause you linked to the sketch that also does the f modulation. Anyway the timing is just the same.
                            Yep, sorry, should have linked earlier on. I will try the freq modulation post wedding and update your thread then, no time now. I have also ordered an OLED for the delay display.

                            Comment


                            • Originally posted by SaltyDog View Post
                              Qiaozhi Hi George, just letting you know that with the code from Teleno on https://www.geotech1.com/forums/foru...ge4#post420147 thread, I have been able to get a degree of discrimination for gold .. the method is:

                              Set the delay to where it is most sensitive for gold. REDUCE the delay to where gold does not respond, but other metals still respond. By just these two delay settings, you can tell if you have gold or not, even "just" discriminates against pull tabs I had my wife do a blind test with various samples of target, and I was able to pick the gold out every time.

                              I could not achieve that with your existing code, so feel it is a worthwhile improvement to the project.
                              Here's the sketch SaltyDog was refering to.

                              https://www.geotech1.com/forums/file...etch?id=420111

                              Nano pins 8 and 10 need to be swapped like this

                              https://www.geotech1.com/forums/foru...069#post420069

                              The one he linked that also does f modulation requires an extra mod as explained in the post.

                              Comment


                              • Click image for larger version

Name:	image.png
Views:	429
Size:	32.3 KB
ID:	420284

                                Comment

                                Working...
                                X