Stránka 1 z 1

Hallova sonda

Napsal: 05 kvě 2019, 19:00
od Queb
Zdravím, snažím se připojit arduino a Hallovu sondu(https://www.gme.cz/data/attachments/dsh.533-442.1.pdf). Problém mám v tom, že sonda detekuje magnet cca v 1/3 případů. Proto bych se chtěl zeptat, jestli je nějaká možnost, jak měření zpřesnit.

Kód: Vybrat vše

const int hallSensor = 2;

void setup() {
  Serial.begin(115200);
  pinMode(hallSensor,INPUT);
  digitalWrite(hallSensor,HIGH);
  
}

void loop() {
  if(digitalRead(hallSensor)== LOW){
    Serial.println("ON");
  }else{
    Serial.println("OFF");
  }
  delay(100);
}

Re: Hallova sonda

Napsal: 05 kvě 2019, 20:02
od jankop
Nezmiňuješ se, jak rychle potřebuješ magnet detekovat, ani nevím, jestli máš senzor správně zapojený.
V každém případě tvůj program nemůže dost dobře fungovat, protože většinu času je blokován příkazem delay(). Vhodné by bylo použít přerušení.
Netuším, k čemu to má sloužit, ale na vyzkoušení třeba velmi jednoduše bez přerušení takhle:

Kód: Vybrat vše

const int hallSensor = 2;

void setup() {
  Serial.begin(115200);
  pinMode(hallSensor, INPUT);
  digitalWrite(hallSensor, HIGH);
  Serial.println("Start");
}

void loop() {
  if (digitalRead(hallSensor) == LOW) {
    Serial.println("ON");
    Serial.flush ();
  } else {
    Serial.println("OFF");
    Serial.flush ();
  }
}
Tenhle prográmek čte senzor ASAP.

Re: Hallova sonda

Napsal: 06 kvě 2019, 23:38
od Queb
Senzor je zapojený takto
01.PNG
a chtěl bych měřit počet otáček za minutu kolečka pro výpočet rychlosti.

Re: Hallova sonda

Napsal: 07 kvě 2019, 07:13
od pavel1tu
Tuto sondu co jsi použil neznám,
nevím jak velké otáčky chceš snímat,
řešil jsem toto (také nefunkci) u měření otáček u amarérské "kaplanky" (turbíny) na Sázavě,
na 5V sonda dost špatně reagovala při vyšších otáčkách - podle osciloskopu + dost velké rušení na těch 5V.

po předělání na 24V + oddělení optočlenem + stíněný kabel (na místě) - se to hodně zlepšilo - funguje už rok a něco :-)

PS: už na stole to při 5V nad 40Hz docela nestíhalo.

Re: Hallova sonda

Napsal: 07 kvě 2019, 07:27
od jankop
V prvé řadě bys měl s ohledem na napájení sondy použít 5V Arduino a za druhé je potřeba dát na výstup sondy externí pullup rezistor cca 4K7.
Pak vyzkoušej

Kód: Vybrat vše

const int hallSensor = 2;
bool FlagMag = false;

void setup() {
  Serial.begin(115200);
  pinMode(hallSensor, INPUT_PULLUP);
  Serial.println("Start");
}

void loop() {
  if (digitalRead(hallSensor) == LOW && !FlagMag) {
    Serial.println("ON");
    //Serial.flush ();
    FlagMag = true;
  }
  if (digitalRead(hallSensor) == HIGH && FlagMag) {
    Serial.println("OFF");
    //Serial.flush ();
    FlagMag = false;
  }
}
a můžeme se bavit o dalším, když ovšem ještě zmíníš, o jaké otáčky se řádově jedná.

Re: Hallova sonda

Napsal: 07 kvě 2019, 12:59
od Queb
Otáčky počítám, že se nedostanou nad 2 tisíce. Sonda je napájená přes 5V a myslel jsem, že by stačilo použít interní rezistor arduina.

Re: Hallova sonda

Napsal: 07 kvě 2019, 16:47
od jankop
Interní PullUp rezistor Arduina je o řád větší než doporučený výrobcem pro Hall sondu.

Re: Hallova sonda

Napsal: 15 kvě 2019, 19:16
od Thalorn
Ahoj, mám také problém s Hallovo sondou, chci rozsvítit diodu vždy, když přiblížím magnet a po oddálení by měla zhasnout. Dioda se mi rozsvítí, ale aby zhasla, musím magnet otočit a přiblížit se druhým pólem. Senzor používám TLE4935L s rezistorem 4K7 a arduino je mega2560.

Kód: Vybrat vše

const byte ledPin = 13;
const byte hePin = 2;
volatile byte stav = LOW;


void setup() {
 pinMode(ledPin, OUTPUT);
 pinMode(hePin, INPUT);
 attachInterrupt(digitalPinToInterrupt(hePin),blik,CHANGE);
}

void loop() {
  digitalWrite(ledPin, stav);
  delay(1);

}
void blik (){
  stav = !stav;
}

Re: Hallova sonda

Napsal: 15 kvě 2019, 19:42
od jankop
Máš bipolární typ Hallovy sondy. Jednou polaritou mag. pole sepne, druhou polaritou mag. pole vypne. S tím programově nelze nic dělat.
Jedině u ní použít malý pomocný magnet, který by ji vypínal.
Kup si tuhle, ta je unipolární
https://www.gme.cz/tle4905l