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
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