Announcement

Collapse
No announcement yet.

IDX-PRO+VDI

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

  • Originally posted by juice2839 View Post
    is the code setup to use the internal clock?
    Yes.

    Comment


    • Arduino! (And the IDX).

      If there haven't been enough guys building VDI modules for the IDX, here is another one.
      I successfully got an Arduino UNO working connected to the IDX. I could replace the audio section with the Aduino module as well as the TX section, but this is just a proof of concept thing.

      It's not all that sophisticated as I just learned a little C programming this week. The last time I did any programming was some Fortran about 30 years ago ..What the heck.. It works!
      Needs some work to get better resolution though
      Anyway, here is a short video of the Arduino in action.
      http://youtu.be/lIbAG_UFMmM


      Don

      #include <LiquidCrystal.h>
      // Connections:
      // rs (LCD pin 4) to Arduino pin 12
      // rw (LCD pin 5) to Arduino pin 11
      // enable (LCD pin 6) to Arduino pin 10
      // LCD pin 15 to Arduino pin 13
      // LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
      LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
      int backLight = 13; // pin 13 will control the backlight
      // Sensors
      int sensorPinx = A0;
      int sensorPinr = A1;
      float sensorValuex = 0;
      float sensorValuer = 0;
      float slope;
      int n = 0;
      int cursorClmn = 0;
      int numSamples = 0;
      int slopeTotals;
      int slopeAve = 0;
      int VDI = 0;


      //float VDI = 0;

      void setup()
      {
      pinMode(backLight, OUTPUT);
      digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
      lcd.begin(16,2); // columns, rows. use 16,2 for a 16x2 LCD, etc.
      lcd.clear(); // start with a blank screen
      lcd.setCursor(0,0); // set cursor to column 0, row 0 (the first row)
      lcd.print("Startup Complete"); // change this text to whatever you like. keep it clean.
      lcd.setCursor(0,1); // set cursor to column 0, row 1
      lcd.print("Ready........");
      delay (1000);
      lcd.clear();



      }

      void loop()
      {
      first:
      sensorValuex = analogRead(sensorPinx);
      sensorValuer = analogRead (sensorPinr);
      if (sensorValuex > 5) {
      if (sensorValuer > 5) {
      for (int n = 0 ; n < 100 ; n ++)
      {
      sensorValuex = analogRead(sensorPinx);
      sensorValuer = analogRead (sensorPinr);
      slope=sensorValuer / sensorValuex; // calculate X/R
      slopeTotals = slopeTotals + slope; // Accumlate slope samples

      }


      }


      }
      else {
      goto first;
      }
      slopeAve = slopeTotals/100;
      cursorClmn = (10 - slopeAve);
      tone (8 , (cursorClmn * 200), 100);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("VDI = ");
      lcd.print (cursorClmn);
      lcd.setCursor(cursorClmn,1);
      lcd.print ("*");
      delay (100);
      numSamples = 0;
      slopeTotals = 0;
      slopeAve = 0;
      slope = 0;


      }

      Comment


      • Very nice. If I may dream for a second. It would be very cool to have some digital potentiometers for the disc, gain, ETC ran by the Arduino or Pic. Also you could use a touch screen so that you could set these on screen (although buttons would be fine). Also have Modes built in. IE Coin, Relic, ETC. Also is it posible to get some sort of an acurate depth reading, say when you hit the pinpoint switch the display would show a depth bar and number? I need to read up on C a bit. The last programming I did was machine language and basic haha. I did do a tiny bit of C++ years ago, but I never really got to far past hello world. I did alot of picbasic though still have the compiler someplace.

        Comment


        • Thanks for posting that Don. Just spent a good half hour studying your code and think I have your logic figured out. Simple and it functions. Good work!

          Gave me some good ideas to try.

          Jerry

          Comment


          • need help....

            today idx tested and no good results achieved. first teamed up nothing. I pressed the point pin and it was back to hear a sound, because I was able to influence the treshhold. I waved a coin through the coil ..... not working ...... but if I hold it to the cable connector x or y, but I have a signal (?) I played a bit with the gb-regulator, and treshhold. gelegendlich I could see a 31 on the display. then suddenly smelled something burning. :-( before I could test it, was no longer heard the sound .... I think it was u9. I must take a closer look. I do not understand. I I checked the circuit board three times before :-( that done, I have measured the frequencies of the coils. were also very strange. tx-80kHz, 100kHz-rx .....

            has anyone an idea where I start looking for errors?

            king regards

            Comment


            • I'd like to try this in picbasic. I really suck at C. Can you put the math as a statement or in a simple basic? I would really appreciate it.

              Comment


              • Originally posted by Jerry View Post
                Thanks for posting that Don. Just spent a good half hour studying your code and think I have your logic figured out. Simple and it functions. Good work!

                Gave me some good ideas to try.

                Jerry
                Yea, pretty simple logic, but then again I have a simple mind. The big problem I ran into was the math using either integers or floating point numbers and they would not always come out right. I played with the arctan funtion as well but I just simplifed things a bit.

                Another thing that I played with a bit to get right was the sampling period. The numbers still come out fairly close with only one sample of each channel.

                Don

                Comment


                • Originally posted by juice2839 View Post
                  I'd like to try this in picbasic. I really suck at C. Can you put the math as a statement or in a simple basic? I would really appreciate it.
                  I can repost the code with comments for each line of code explaining what each one does. Maybe you can convert from there?
                  Attached Files

                  Comment


                  • I would appreciate that. I PM'ed you also.

                    Comment


                    • eduardo1979

                      If I was going to build the VDI, and I dont have the IDXpro
                      what type of signal would you apply to X and Y to test it ?
                      sorry for the dopey question.
                      Attached Files

                      Comment


                      • Originally posted by Schatztaucher View Post
                        today idx tested and no good results achieved. first teamed up nothing. I pressed the point pin and it was back to hear a sound, because I was able to influence the treshhold. I waved a coin through the coil ..... not working ...... but if I hold it to the cable connector x or y, but I have a signal (?) I played a bit with the gb-regulator, and treshhold. gelegendlich I could see a 31 on the display. then suddenly smelled something burning. :-( before I could test it, was no longer heard the sound .... I think it was u9. I must take a closer look. I do not understand. I I checked the circuit board three times before :-( that done, I have measured the frequencies of the coils. were also very strange. tx-80kHz, 100kHz-rx .....

                        has anyone an idea where I start looking for errors?

                        king regards

                        tx-80kHz, 100kHz-rx ..... Its a little bit high freqvency, you probably use too small capacitor paralel vith coil. List thru posts and find proper capacitance which you need to connect with coil.
                        Regards
                        Detecto

                        Comment


                        • Search head for Classic

                          Revision of SH (search head) for IDX
                          This is a continuation of my response to Mr SLopov started in post # 570.
                          SLopov, the parameters of your search head are not designed correctly. In general, the parameters of the SH should be analyzed together with TX and RX circuits because TX tank circuit is part of TX end stage and RX tank circuit is part of preamp. It follows that in order to revise the design of the SH, we must first revise design of TX and RX circuits, and then assess whether your search head is suitable for them.
                          However, there are basic requirements for tank circuits, which are valid for all metal detectors:
                          1. Low resistance of TX tank circuit, for example 1.5 ohms. If TX coil has more resistance, the TX operates with decreased power and low efficiency because a lot of battery drain is wasted in heating the coil wire.
                          2. Impedance matching of load (TX tank circuit). For example, the TX power can be increased 4 times if the coil is connected with center tap (noted below as "ct").
                          3. Large equivalent capacitance of TX tank circuit, for example 1uF. If you use a smaller capacitance, you should increase the mass of wire to get the same efficiency of TX end stage. Capacitors must be type MKP (low tan of dielectric loses) to avoid wasting electricity for dielectric heating.
                          4. Enough high resistance of RX coil. If we design RX coil with smaller resistance, the weight and the stray capacitance are unnecessarily increased . In theory, when we use a low resistance coil, the thermal noise generated in the RX input decreases. In practice, this has no noticeable effect because there are two sources generating more noise - the integrated circuit used as preamp and the resistor connected to its inverting input. For example IC NE5534 generates noise as a resistor (or a coil) having resistance 1000 ohms. Additional noise generates the 1kohm resistor R1 connected to inverting input. It increases the noise sqrt 2 =1.41 times. In this case, even a 500 ohm RX coil can not increase noticeable the generated thermal noise in input. However most important is that RX sensitivity is not limited by thermal noise but by AIR & GND signal existing in the input of preamp, which forces us to reduce its gain. Moreover, the synchronous demodulator is not so sensitive to thermal noise.
                          5. Small equivalent capacitance of RX tank circuit. This allows us to increase the number of turns, so that RX coil will generate a stronger signal.
                          6. Balance adjustment by operator. The construction of SH must allow the operator to perform outdoor fine induction balance and minimization of AIR & GND signal. Then he can increase sensitivity to maximum by increasingthe gain of preamp near to its saturation in output.
                          7. SH should have two RX coils connected in opposite direction. The advantages of this "twin loop" design are that no need of shielding and the search head can suppress the GND signal and other interfering signals generated by distant sources.
                          Below is the equivalent circuit of a SH, suitable for all TXs with driven end stage and for the self-oscillating TX circuit used in Classic family.
                          The TX used in Classic family is not correct designed. The self-biasing can not suppress amplitude modulation when the operator changes height of search coil. The design of TX in Classic will be revised in the next my post.
                          Attached Files

                          Comment


                          • Hi Friends,

                            What compiler was used to convert the file asm into vdi_02.HEX?

                            Comment


                            • I have built the VDI kit from Silverdog and have run into a problem. The PIC microcontroller does not seem to start running. Occasionally it will start if I run my hand across the bottom of the PCB. When it does start, I get a normal display for a brief time. However, within a few seconds the display will become full of block characters and then it seems to lock-up. I have checked the 5V supply and it is good. I get the feeling the internal oscillator may not be running reliably. Has anyone else had problems with this?

                              Comment


                              • The problem could be caused by the LCD or bad solder connecting wires.
                                Internal oscillator works very reliably, if the PIC programmed properly.

                                Comment

                                Working...
                                X