PI etsimen erottelukyvystä

C- Scope, Garrett, Minelab, Viking, Whites, Fisher, Tesoro, Bounty Hunter ja muut metallinilmaisin merkit. Kerro kokemuksista, kirjoita arvio. Oletko hankkimassa uutta laitetta. Motion vai non-motion ilmaisin? Kaikkea metallinpaljastimista.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

PI etsimen erottelukyvystä

Viesti Kirjoittaja Maverick »

Alla pari mielenkiintoista kuvaa...


PI etsimen sykli:

Kuva


Piikistä alkava mielenkiintoinen osuus ilman esinettä:

Kuva


Mielenkiintoinen osuus rautaesineen kanssa:

Kuva



Mielenkiintoinen osuus alumiiniesineen kanssa:


Kuva


Eroa siis löytyy. Nyt vain sopivaa ilmaisinta virittämään.
Vitae pars historia est.
Avatar
Keseppa
Kunniajäsen
Viestit: 2951
Liittynyt: 18 Joulu 2008, 12:20
Paikkakunta: Kokkola

Viesti Kirjoittaja Keseppa »

Kyllähän sitä eroa löytyy ja tuon eron kans aika moni pähkäilee.

Ongelma taitaakin olla se että tuo ero ei ole hirveen vakio. Laitteen säädöt vaikuttaa, syvyys maassa, maaperän laatu, lämpötilakin kuulema jonkun verran komponenttien kautta. Varmaankin on vielä muitakin muuttujia. Jos ja kun saat nuo kaikki muuttujat hallintaan ilmaisimessa niin homman pitäisi onnistua. Helppoa se ei ole mutta ei mahdotontakaan tämän päivän tekniikalla. Varmaan ois hyvä käyttää jonkinlaista oppivaa/opetettavaa järjestelmää.

Tuollanen laite kun tulisi mahdolliseksi niin ei tarvisi enää muuta laitetta harkittakkaan :D

Jos oikein muistan ja ymmärrän niin se on tuo vaimenemiskulma (vaimeneminen suhteessa aikaan) mikä ois helpoiten tunnistettavissa. Jos tuosta sais jonkun toisenki tunnistettavam muuttujan niin eikös tunnistaminen sillon helpottuis ja varmistuis. Ihan näin maallikkona ajatellen.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Luin että eräissä konstruktioissa on analysoitu myös työpulssia, eli tuota alaspäin olevaa kanttiaaltoa. Myös siinä pitäisi näkyä eroa metalliesineen läheisyydessä. Se on itseasiassa väistämätöntäkin sillä silloin kohdekappaleeseen indusoituu energiaa.

Tämähän voisi ratkaista maahäiriöongelmat, eikö? Jokin osa työjaksostahan indusoituu myös mustan hiekan tai muun reagoivan häiriölähteen hyväksi ja sen pitäisi näkyä poikkeamana häiriöttömään työpulssiin nähden. Tästä voisi laskea korjauskertoimen varsinaista analyysijaksoa varten.

En saanut skoopilla kyseistä vaikutusta näkyviin sillä huomasin, että Surfmaster ei pysy tahdissa, vaan ajastinpiiri heiluu noin hertsin verran edestakaisin. Skooppikuva on lyhyellä aikavälillä pelkkää sotkua. Tähän täytyy saada tarkempi värähtelijä.

Lisäksi aiemmissa etsimissä on keskitytty saamaan flyback pulssi kuoletettua mahdollisimman äkkiä jotta päästään ottamaan mittaus. Tähän mietin jotain aivan muuta jonka sattumalta keksin kesken mittauksien. Saa nähdä kunhan tulee se mikrokontrolleri ja opin ohjelmoimaan sen.
Vitae pars historia est.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Arduino saapui ja onpas se hauska :D

Muutaman rivin koodilla saa luettua analogiatulosta 0-5 voltin signaalia haluamallaan näytteenottotaajudella ja kaiutettua sen sarjaporttiin digitaaliarvona 0-1024. Tulokset voi siis lukea millä tahansa serial ohjelmalla, joko paketin mukana tulevalla tai sitten vaikkapa PuTTYllä.

Tämän kapine vaikuttaa todella monikäyttöiseltä. Harmi etten ole aiemmin tullut tutustuneeksi näihin.
Vitae pars historia est.
MK
Metallinetsijä
Viestit: 159
Liittynyt: 29 Huhti 2009, 22:45

Viesti Kirjoittaja MK »

Tässä jotain maverickille siitä open sourcesta. Tämän on ensimmäisen version viimeisiä softaversiota, kai.. Tämä on tehty nimenomaan Bounty huntereiden digitaalisen väylän lukemiseen.

Olisi tuon silloin voinut tehdä sivistyneemminkin, mutta tässä brutaali lähestymistapa suoraan paljastimen sielunelämään...

EDIT: Näinköhän tuosta saa mitään selvää :)

// NOPEUS 43478,26 HZ, mutta jos pulssinleveys onkin hieman vähemmän, nopeus voisi olla 44000HZ.

// BITTIJONOSTA ARVOT 1-7 OVAT SENSITIVITY SAMOIN 29 BITTI
// PERUSTILA:
// 0 0 1 0 0 0 0 000000000000000 0001 000000100 I=34, sen2, BATTERY GOOD
// 011111101101101 0100 001000100 , SEN2, BATTERY FULL
// 111100101001000 0010 000000100 , SEN2, BATTERY LOW
// 0 0 1 0 0 0 0 000000000000000 1000 000000100 , SEN2, BATTERY R
// 000000000000000 0001 000000100 = perus, ei mitään ruudussa
// 0 0 1 0 0 0 0 111011101101111 0001 000000100 == 00 ??
// ------------- --------------- ---- ---------
// Sensitivity ACCU


// TÄMÄ Versio toimii hyvin, yli sadan ID:t pitää korjata, samoin lisätä raudat jne.
// VIELÄ LISÄTTÄVÄÄ:
// SENSITIVITY : Näytölle ja ääni siihen
// BATTERY ALERT: Eli kun varaustaso laskee niin siitä äänellä ilmoitus, ja ruudulle.
// BATTERY FULL (bootissa esim)
// BATTERY LOW
// BATTERY DEPLETED
// Pitää tunnistaa myös shutdown.

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
// INT RS = 8, INT RW=11, ENABLE=9, data pins 4 5 6 7

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

volatile int DLENState = 0;
volatile int BITTIJONO[34];
volatile int BITTIJONO2[34];
volatile int kakkosbitit=0;
volatile int i=0;
volatile int ii=0;
volatile int a=0;
volatile int sen2,sen3,sen4,sen5,sen6,sen7,sen8;
volatile int lcd1,lcd2,lcd3,lcd4,lcd5,lcd6,lcd7,lcd8,lcd9,lcd10,lcd11,lcd12,lcd13,lcd14,lcd31,lcd30,lcd29,lcdsata;
volatile int raudanarvo,rauta1,rauta2,rauta3,rauta4,rauta5,rauta6,rauta7,rauta8,rauta9,rauta10,rauta11,rauta12;
volatile int arvo,kymmenet,ykkoset;
volatile int pass=0;
volatile int boot=0;
volatile int arvoMin = 300; // minimum sensor value
volatile int arvoMax = 0; // maximum sensor value
volatile int avr=0;
volatile int erotus=0;
volatile int arvo2=0;
volatile int rejectiron=0;
volatile int rejectiron2=0;
volatile int depth=0;
volatile int depth2=0;
volatile int depth4=0;
volatile int depth6=0;
volatile int depth8=0;
volatile int depth10=0;

void setup()
{
Serial.begin(43480); // SERIAL SPEED

pinMode(3, INPUT); // SET PIN TO INPUT DATA ENABLE
pinMode(2, INPUT); // SET PIN TO INPUT clock
pinMode(12, INPUT); // SET PIN TO INPUT
pinMode(10, INPUT); // SWITCH INPUT (reject iron)
digitalWrite(10, HIGH); // Switch input pullup HIGH

attachInterrupt(0, pincheck , FALLING); // Interrupt 0 is on DIGITAL PIN 2! (CLOCK)
attachInterrupt(1, dataenable, RISING); // Interrupt 1 is on DIGITAL PIN 3 (DATA ENABLE)

lcd.begin(16, 2); // set up the LCD's number of rows and columns:
lcd.print("-SYSTEM BOOTING-");
lcd.setCursor(0,1);
lcd.print(" -Please wait-");
delay(2800);
tone(11,350,100); // output tone andWait for system to stabilize
lcd.clear();
}

void lcdinit() // Print basic settings on the screen
{
lcd.setCursor(0,0);
lcd.print("Hi:");
lcd.setCursor(0,1);
lcd.print("Lo:");
lcd.setCursor(12,0);
lcd.print("|AVR");
lcd.setCursor(12,1);
lcd.print("|");
lcd.setCursor(7,0);
lcd.print("| ID ");
lcd.setCursor(7,1);
lcd.print("|");
}

void keskiar() // Checks minimum and max value and calc average between those.
{
if (raudanarvo==0){

if (arvo2!=arvo){++pass;}

if (arvo > arvoMax) // record the maximum sensor value
{
arvoMax = arvo;
}

if (arvo < arvoMin) // record the minimum sensor value
{
arvoMin = arvo;
}

arvo2=arvo; //arvo2 voisi laittaa arrayhin ja tehdä siitä isomman averagen kuin pelkästä min ja maksista.
avr=(arvoMin+arvoMax) / 2 ; // Calc the average
erotus=(arvoMax-arvoMin); // -> If erotus = high (over 15) target is propably trash

lcd.setCursor(3,0);lcd.print(arvoMax);
lcd.setCursor(3,1);lcd.print(arvoMin);
lcd.setCursor(9,1);lcd.print(arvo);
lcd.setCursor(13,1);lcd.print(avr);
delay(140);

if (pass>=3) // Check the min/max during a four time "pass"
{
pass=0;
arvoMax=0;
arvoMin=300;
lcd.clear();

if (erotus>=0 && erotus<15) // If erotus<15 take a guess which material the target might be.
{
arvaus();
}

if (erotus>=16) // If erotus>=16, target is propably trash, or new target
{
lcd.clear();
lcd.setCursor(0,0);lcd.print("NEW TARGET/RUST");
lcd.setCursor(0,1);lcd.print(" TRY AGAIN!");
delay (900);
lcd.clear();
lcdinit();
}
}}}


void arvaus() // Guess list of material.
{
if (raudanarvo==0){ // IF target is NOT iron -> proceed

lcd.clear();
lcd.setCursor(0,0);

if (avr>0 && avr<10) {
lcd.print(" FOIL ");
}
if (avr>=10 && avr<=19) {
lcd.print("NICKEL / 10P ");
}
if (avr>=19 && avr<=24) {
lcd.print("GOLD/NICKEL/LEAD");
}
if (avr>=25 && avr<27) {
lcd.print(" NICKEL/GOLD");
}
if (avr>=27 && avr<30) {
lcd.print(" 1MK / PULLTAB");
}
if (avr>=30 && avr<35) {
lcd.print("SILVER/LEAD");
}

if (avr>=35 && avr<=40) {
lcd.print("ALUM/BRASS 10P");
}

if (avr>40 && avr<56) {
lcd.print("BRASS/Al-CAP/2E");
}

if (avr>=56 && avr<=60) {
lcd.print("BRASS/0.1-1 EURO");
}

if (avr>60 && avr<=65) {
lcd.print(" 20 CENT/1 EURO");
}

if (avr>=66 && avr<77) {
lcd.print("COPPER/50C/5MK");
}

if (avr>=77 && avr<80) {
lcd.print("COPPER / SILVER");
}

if (avr>=80 && avr<=85) {
lcd.print("COPPER/5P/SILVER");
}

if (avr>85 && avr<=90) {
lcd.print("SILVER / COPPER");
}

if (avr>90 && avr<95) {
lcd.print("SILVER/COPPER");
}

if (avr>=95 && avr<100) {
lcd.print("SILVER/CU-5P OLD");
}

if (avr>=100 && avr<=105) {
lcd.print("SILVER-CU 1MK");
}

if (avr>105 && avr<=110) {
lcd.print("SILVER/COPPER");
}

if (avr>110 && avr<=120) {
lcd.print("SILVER/COPPER");
}
if (avr>120 && avr<=130) {
lcd.print("SILVER/COPPER");
}

if (avr>130 && avr<=140) {
lcd.print("SILVER/COPPER");
}

if (avr>140 && avr<=160) {
lcd.print("SILVER/COPPER");
}

if (erotus<6 && avr>18 && avr<36) {lcd.setCursor(0,1);lcd.print("GOOD ID,AU-RING?");tone(11,arvo+50,80);delay(1400);}

if (erotus<6 && erotus>=3 && avr>55) {lcd.setCursor(0,1);lcd.print("SOLID ID, COIN?");tone(11,arvo+50,80);delay(1400);}

if (erotus<=3 && avr>55 && avr<80) {lcd.setCursor(0,1);lcd.print("ALKON KORKKI...?");tone(11,arvo+50,80);delay(1400);}

lcd.setCursor(0,1);
lcd.print("A:");
lcd.print(avr);
lcd.print(" D:");lcd.print(depth);lcd.print(" CM ");
tone(11,arvo+60,80);
delay(1800);

erotus=0;
arvo=0;
avr=0;
depth=0;



lcd.clear();
lcdinit();
}}



void bitit() // THis reads the bits from the data lines, these come from interrupt routines.
{
sen2=BITTIJONO[2];
sen3=BITTIJONO[3];
sen4=BITTIJONO[4];
sen5=BITTIJONO[5];
sen6=BITTIJONO[6];
sen7=BITTIJONO[1];
sen8=BITTIJONO[28];

lcd1=BITTIJONO[8];
lcd2=BITTIJONO[7];
lcd3=BITTIJONO[9];
lcd4=BITTIJONO[18];
lcd5=BITTIJONO[19];
lcd6=BITTIJONO[20];
lcd7=BITTIJONO[10];
lcd8=BITTIJONO[12];
lcd9=BITTIJONO[11];
lcd10=BITTIJONO[13];
lcd11=BITTIJONO[14];
lcd12=BITTIJONO[15];
lcd13=BITTIJONO[16];
lcd14=BITTIJONO[21];
lcd31=BITTIJONO[31];
lcd30=BITTIJONO[30];
lcd29=BITTIJONO[29];
lcdsata=BITTIJONO[17];

rauta1=BITTIJONO[10];
rauta2=BITTIJONO[11];
rauta3=BITTIJONO[13];
rauta4=BITTIJONO[14];
rauta5=BITTIJONO[15];
rauta6=BITTIJONO[17];
rauta7=BITTIJONO[18];
rauta8=BITTIJONO[28];
rauta9=BITTIJONO[31];
rauta10=BITTIJONO[32];
rauta11=BITTIJONO[12];
rauta12=BITTIJONO[16];

depth2=BITTIJONO2[17];
depth4=BITTIJONO2[18];
depth6=BITTIJONO2[19];
depth8=BITTIJONO2[20];
depth10=BITTIJONO2[21];

// ---------- TÄSSÄ VÄLISSÄ ON NORMAALI SERIAL PRINT TERMINAALIA VARTEN -----------

for(int u = 0; u < 34; u++){Serial.print(BITTIJONO,BIN);}
Serial.print(" ");
for(int uu = 0; uu < 34; uu++){Serial.print(BITTIJONO2[uu],BIN);}

Serial.print("noiron ");rejectiron=digitalRead(10);
// Serial.print(rejectiron);
if (rejectiron == HIGH) {Serial.print("HIGH");}
if (rejectiron == LOW) {Serial.print("LOW");}

// ---------------------------------------------------------------------------------

if (lcd1==0 && lcd2==0 && lcd3==1 && lcd4==0 && lcd5 ==0 && lcd6==1 && lcd7==0){ kymmenet=10;}
if (lcd1==1 && lcd2==0 && lcd3==1 && lcd4==1 && lcd5 ==1 && lcd6==0 && lcd7==1){ kymmenet=20;}
if (lcd1==1 && lcd2==0 && lcd3==1 && lcd4==0 && lcd5 ==1 && lcd6==1 && lcd7==1){ kymmenet=30;}
if (lcd1==0 && lcd2==1 && lcd3==1 && lcd4==0 && lcd5 ==0 && lcd6==1 && lcd7==1){ kymmenet=40;}
if (lcd1==1 && lcd2==1 && lcd3==0 && lcd4==0 && lcd5 ==1 && lcd6==1 && lcd7==1){ kymmenet=50;}
if (lcd1==1 && lcd2==1 && lcd3==0 && lcd4==1 && lcd5 ==1 && lcd6==1 && lcd7==1){ kymmenet=60;}
if (lcd1==1 && lcd2==0 && lcd3==1 && lcd4==0 && lcd5 ==0 && lcd6==1 && lcd7==0){ kymmenet=70;}
if (lcd1==1 && lcd2==1 && lcd3==1 && lcd4==1 && lcd5 ==1 && lcd6==1 && lcd7==1){ kymmenet=80;}
if (lcd1==1 && lcd2==1 && lcd3==1 && lcd4==0 && lcd5 ==1 && lcd6==1 && lcd7==1){ kymmenet=90;}
if (lcd1==1 && lcd2==1 && lcd3==1 && lcd4==1 && lcd5 ==0 && lcd6==1 && lcd7==1){ kymmenet=0;} // ei toimi vielä ??
if (lcd31==1 && lcdsata==1) { kymmenet=100;} // Ei toimi vielä?? Lisää myös nollat!

if (lcd8==0 && lcd9==0 && lcd10==1 && lcd11==0 && lcd12==1 && lcd13==0 && lcd14==0){ ykkoset=1;}
if (lcd8==1 && lcd10==1 && lcd11==1 && lcd13==1 && lcd14==1){ ykkoset=2;}
if (lcd8==1 && lcd10==1 && lcd11==1 && lcd12==1 && lcd13==1 && lcd9 == 0 && lcd14 ==0){ ykkoset=3;}
if (lcd9==1 && lcd10==1 && lcd11==1 && lcd12==1 && lcd14==0 && lcd13==0 && lcd8==0){ ykkoset=4;}
if (lcd8==1 && lcd9==1 && lcd11==1 && lcd12==1 && lcd13==1 && lcd10==0 && lcd14==0){ ykkoset=5;}
if (lcd8==1 && lcd9==1 && lcd11==1 && lcd12==1 && lcd13==1 && lcd14==1 && lcd10==0){ ykkoset=6;}
if (lcd8==1 && lcd10==1 && lcd11==0 && lcd12==1 && lcd9==0 && lcd14==0 && lcd13==0){ ykkoset=7;}
if (lcd8==1 && lcd9==1 && lcd10==1 && lcd11==1 && lcd12==1 && lcd13==1 && lcd14==1){ ykkoset=8;}
if (lcd8==1 && lcd9==1 && lcd10==1 && lcd11==1 && lcd12==1 && lcd13==1 && lcd14==0){ ykkoset=9;}
if (lcd8==1 && lcd9==1 && lcd10==1 && lcd11==0 && lcd12==1 && lcd13==1 && lcd14==1){ ykkoset=0;}

if (rauta1==1 && rauta2==0 && rauta3==1 && rauta4==0 && rauta5 ==1 && rauta6==1 && rauta7==1 && 1 && rauta9==1 && rauta10==1){ raudanarvo=1;}
if (rauta1==1 && rauta2==0 && rauta3==1 && rauta4==1 && rauta5 ==0 && rauta6==1 && rauta7==1 && rauta9==1 && rauta10==1 && rauta11==1 && rauta12==1){ raudanarvo=2;}
if (rauta1==1 && rauta2==0 && rauta3==1 && rauta4==1 && rauta5 ==1 && rauta6==1 && rauta7==1 && rauta9==1 && rauta10==1 && rauta11==1 && rauta12==1){ raudanarvo=3;}
if (rauta1==1 && rauta2==1 && rauta3==1 && rauta4==1 && rauta5 ==1 && rauta6==1 && rauta7==1 && rauta9==1 && rauta10==1){ raudanarvo=4;}

if (depth2==1 && depth4==0 && depth6==0 && depth8==0 && depth10==0){depth=5;depth2=0;}
if (depth2==0 && depth4==1 && depth6==0 && depth8==0 && depth10==0){depth=12;depth4=0;}
if (depth2==0 && depth4==0 && depth6==1 && depth8==0 && depth10==0){depth=18;depth6=0;}
if (depth2==0 && depth4==0 && depth6==0 && depth8==1 && depth10==0){depth=22;depth8=0;}
if (depth2==0 && depth4==0 && depth6==0 && depth8==0 && depth10==1){depth=27;depth10=0;}

arvo=kymmenet+ykkoset;
Serial.println(" ");
lcd.clear();
lcdinit();
}

void rauta()
{
if (rejectiron==LOW){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("IRON");
lcd.setCursor(5,0);
lcd.print(raudanarvo);
lcd.print(" DEPTH: ");
lcd.print(depth);

if (raudanarvo==1){
lcd.setCursor(0,1);lcd.print(" VERY SMALL");}
if (raudanarvo==2){
lcd.setCursor(0,1);lcd.print(" SMALL");}
if (raudanarvo==3){
lcd.setCursor(0,1);lcd.print(" MEDIUM");}
if (raudanarvo==4){
lcd.setCursor(0,1);lcd.print(" LARGE");}
tone(11,100,70);
delay (300);

}
raudanarvo=0;
}

void reject(){
if (rejectiron2!=rejectiron){
lcd.clear();
lcd.setCursor(0,0);

if (rejectiron==HIGH){
lcd.print("REJECTING");}

if (rejectiron==LOW){
lcd.setCursor(0,0);
lcd.print("ACCEPTING");}

lcd.setCursor(0,1);
lcd.print("IRON");
delay(2500);

}
rejectiron2=rejectiron;
}


void loop()
{
rejectiron==digitalRead(10);
reject();
if (boot==0){lcdinit();boot=1;arvo=0;}
if (i=34){bitit();}

if (raudanarvo>0){rauta();}
if (arvo>0){keskiar();}

}




//___________________________________________________________________________________________________
// -----------------------ÄLÄ PUUTU NÄIHIN TÄMÄN VIIVAN ALLA OLEVIIN --------------------------------



void pincheck()
{
if (DLENState==1)
{
BITTIJONO = digitalRead(12); // Luetaan DATA portista arvo, portin numero siis 12
++i;
if (i == 34) {i=0; DLENState=0;kakkosbitit=1;}
}

if (kakkosbitit==1)
{
BITTIJONO2[ii] = digitalRead(12);
++ii;
if (ii == 34) {ii=0; kakkosbitit=0;}
}
}

void dataenable()
{
DLENState=1;
}
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Kiitokset.

Katohan sehän puhuu samaa kieltä :)

void setup()
{


Mikä lienee Huntereiden kelataajuus? Tyypillisestihän näytteenottotaajuus on 2x se.

Miksi serial speed on valittu tuollaiseksi? 57600 olisi "vakio"?
Vitae pars historia est.
MK
Metallinetsijä
Viestit: 159
Liittynyt: 29 Huhti 2009, 22:45

Viesti Kirjoittaja MK »

Tuo serial speed haistelee suoraan tuolta RISC prosessorilta lähtevää omaa väylää. Time Rangerissä kun on oma PIC.

Meni jokunen tovi selvittää mitä dataa siellä kulkee. Ja miten.

Oskilloskoopilla katsottuna tuo bittinopeus siellä on, pulssinleveydestä mitattuna. Tuo on joku niiden oma standardi ja 48 bitin dekoodauksessa kesti oma tovi...

EDIT: Sinänsä sillä ei olisi tässä tapauksessa ollut mitään väliä koska tuo väylän lukeminen hoidetaan noilla keskeytyksillä..mutta tuo on kuitenkin se nopeus millä siellä tavaraa kulkee, data, data enable ja clock.
Alkuun luulin että siellä menee ainoastaan 24 bittiä, mutta myöhempi tutkimus selvitti että siellä menee 2x 24 bitin jonoa ja joista niitä jälkimmäistä 24 ei millään tavalla käytetä hyväksi tehdasversiossa. Käsittääkseni Fisherin F5 on rakennettu tämän tekniikan päälle....Time ranger poistui markkinoilta...F5 tuli kauppoihin, yhteneväisyydet ovat aika selviä, F5:ssa on paljon karkkipaperia...

Arduino siis pystyy lukemaan ainakin 57600 bit/s streamia ja vieläpä analysoimaan sitä. "suht" virheettömästi.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Got it.

Oli hiukan monipuolisempi kuin nuo tähän mennessä testailemani harjoitukset. Siitä sekoilu.

Tätä koodia suurempi ponnistus tosiaan lieni tuon syötteen selvittely. Voisin kuvitella että jäisi itseltä tekemättä. Hienoa reverse engineeringiä.
Vitae pars historia est.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Ruokahalu kasvaa syödessä ja mikrokontrolleri-parka taitaa jäädä jo hampaisiin... Erinomainen laite jota tulen käyttämään usein, mutta juuri nyt tarvitaan isompaa jakaria.

Onko kokemuksia DSP -piireistä? Kuinka helposti omaksuttavissa ja kuka tekee parhaat?
Vitae pars historia est.
MK
Metallinetsijä
Viestit: 159
Liittynyt: 29 Huhti 2009, 22:45

Viesti Kirjoittaja MK »

Itse ehkä lähtisin tuota lähestymään kunnon ad muuntimella ja PC:lle joku softa millä siitä saatua signaalia voi käsitellä.. ??
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Niinpä.. Vääntö pc:ssä ainakin riittäisi. Paljonko mahtaa olla äänikortin muuntimen resoluutio? 8 bittiä? Mistä saisi esim 16 bittisen muuntimen väyläliitännällä?

Toisaalta tuo olisi kiva ottaa joskus mukaankin joten siksi dsp kiinnostaisi. Lisäksi mikäli oikein ymmärrän on se niin tehokas laite että tulee eteen joka tapauksessa.
Vitae pars historia est.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

Tässä lienee yksi kandidaatti:

http://www.analog.com/en/analog-to-digi ... oduct.html

Pitää tutkia noiden ad muuntimien sielunelämää vielä vähän lisää, niitä on jos jonkinlaisia. Ja myös liitettävyyttä muihin esim niihin dsp piireihin.
Vitae pars historia est.
Avatar
Maverick
Raavas Tonkija
Viestit: 988
Liittynyt: 02 Heinä 2009, 14:08
Paikkakunta: Helsinki
Viesti:

Viesti Kirjoittaja Maverick »

16 bittinen adc 1Msps otolla tilattu, seuraa tekee pienihäiriöinen opari jolla saa skaalattua jännitteen muuntimelle sopiviin rajoihin.

Tästä tulee vielä hauskaa :)
Vitae pars historia est.
Vastaa Viestiin