Stránka 1 z 3
Arduino - Zapojení Hallového Senzoru
Napsal: 17 kvě 2017, 22:06
od janpav
Ahoj, koupil jsem tento modul (Hallův Senzor Magnetický Indukční Snímač Arduino Modul).
http://robotstore.cz/obchod/arduino/halluv-senzor-magneticky-indukcni-snimac-arduino-modul/
Jenže nemůžu najít kam se zapojuje třetí PIN (S) zda do analogového nebo digitálního vstupu. Poradí někdo? Děkuji
Napsal: 17 kvě 2017, 22:14
od hakamusai
Dva jsou napájení a třetí signál.Jakej je tam hall? Určitě digitální.
Napsal: 17 kvě 2017, 22:23
od misocko
hall je digital
pichni ho kam chces , aj analogove vstupy sa daju pouzit ako digitalne vstupy, dokonca aj ako digitalne vystupy
inac v datasheete ktory Ty nemozes najst , a nachadza sa na stranke ktoru si prilozil (nasiel som behom asi 10sec) je pichnuty do pinu 3

Napsal: 17 kvě 2017, 22:28
od janpav
hakamusai píše:Dva jsou napájení a třetí signál.Jakej je tam hall? Určitě digitální.
Děkuji za informaci.
Tady jsem našel kód
https://github.com/animeshshastry/motor-rpm-measurement-using-hall-effect-sensor/blob/master/hall3.ino
problém je v tom, že je to pro analog.
Kód: Vybrat vše
//this code measures the difference between two rising edges of the digitalised signal coming from hall sensor and then prints the rpm.
//pin A0 is the signal pin
int refsig=200;//for converting the analog signal coming from hall sensor to digital through arduino code
int val;//the digital value of the incoming analog signals
int prev_val=0;
unsigned long t,cur_t;//time variables
void setup()
{
Serial.begin(115200);
pinMode(A0,INPUT);
}
void loop()//Measure RPM
{
int sig=analogRead(A0);//read raw value of hall sensor
if(sig>refsig) val=HIGH;//convert it to digital 0,1 form
else val=LOW;
if(prev_val==0 && val==1) {//check for rising edge
cur_t=micros();
Serial.println(1000000*60/(cur_t-t));//print the rpm
t=micros();
}
prev_val=val;
}
Našel by se prosím někdo kdo by mi to opravil pro můj digitální modul? Moc děkuji.
PS: Jak mám v kódu poznat, že se to má připojit na analog nebo digital vstup? Vždy je tam jen číslo. Tím nemyslím tento kód. Díky
Napsal: 18 kvě 2017, 01:09
od janpav
misocko píše:hall je digital
pichni ho kam chces , aj analogove vstupy sa daju pouzit ako digitalne vstupy, dokonca aj ako digitalne vystupy
inac v datasheete ktory Ty nemozes najst , a nachadza sa na stranke ktoru si prilozil (nasiel som behom asi 10sec) je pichnuty do pinu 3

Myslíš tohle?
int inputPin = 3; // Connect sensor to input pin 3
jenže tam už není uvedeno zda je to PIN Analog nebo Digital
Napsal: 18 kvě 2017, 05:59
od Cowley
Vzdyt je u tveho odkazu jak schema tak vzorovy program. Maji to pripojene na pin 3, tzn. Digitalni vstup.
Napsal: 18 kvě 2017, 11:37
od janpav
Špatně jsem se díval, je to opravdu tak jak říkáš, díky a omlouvám se.
Zapojení tedy znám ale co ten kód. Ani ten co je v tom manuálu nefunguje, i když nepřiložím magnet, led dioda stále bliká, poslal jsem data na serial.print jako 0 = normal stav a 1 = detekce magnetu. Výsledek není jen 000000000000000 ale jsou tam i jedničky 0000000000110000111110000000111111111111111 a magnet jsem vůbec nepřiložil

Napsal: 18 kvě 2017, 12:09
od Cowley
Kod vypada v poradku, zkus si propojkou propojit vstup 3 nejprve s GND a nasimulovat jeden stav, potom si propojkou mezi vstupem 3 a +5V nasimuluj druhy stav.
Napsal: 18 kvě 2017, 13:33
od janpav
Cowley píše:Kod vypada v poradku, zkus si propojkou propojit vstup 3 nejprve s GND a nasimulovat jeden stav, potom si propojkou mezi vstupem 3 a +5V nasimuluj druhy stav.
Jen pro upřesnění ať něco neodpálím, zcela odpojím ten Hall modul a v
- Arduinu na digitální vstup č.3 připojím GND a spustím kód
a potom
- Arduinu na digitální vstup č.3 připojím +5V a spustím kód
Pochopil jsem to dobře? Díky
Napsal: 18 kvě 2017, 13:36
od pocitujlasku
a mas ten ten pin ako input pull_up? inak ti lieta vo vzduchu a meria blbosti
Napsal: 18 kvě 2017, 13:40
od janpav
Omlouvám se ale nerozumím otázce, můžeš mi to prosím trochu přiblížit? Začínám
Kód mám takto
Kód: Vybrat vše
int inputPin = 3;
int val = 0;
void setup()
{
pinMode(inputPin, INPUT);
Serial.begin ( 9600 ) ;
}
void loop()
{
val = digitalRead(inputPin);
if (val == HIGH)
{
Serial.print(HIGH);
} else {
Serial.print(LOW);
}
}
Napsal: 18 kvě 2017, 13:43
od Cowley
Odpoj hall, nahraj tam kod podle prvniho odkazu .
Arduino nech pripojene na USB od PC a
propojkou ze vstupu 3 nejprve prijpoj GND (to je jeden stav) a potom ji odpoj a spoj vstup 3 na plus 5V.
Tak jak bude v Arduino bezet program, bude bud trvale svitit nebo bude trvale zhasla LED na zakladni desce Arduino, ktera je interne zapojena jako vystup 13. (U desky UNO, Mega)
Napsal: 18 kvě 2017, 13:45
od Cowley
Pocitujlasku: ja myslim, ze neni treba. Vypada to, ze ma vlastni odpor na desce.
I program pro Arduino jej nevyzaduje.
Ale muze to vyzkouset.
Bud zapojenim vnejsiho rezistoru mezi vstup 3 a plus 5V nebo predefinovanim vstupu na INPUT_PULLUP
Napsal: 18 kvě 2017, 13:55
od janpav
Cowley píše:Odpoj hall, nahraj tam kod podle prvniho odkazu .
Arduino nech pripojene na USB od PC a
propojkou ze vstupu 3 nejprve prijpoj GND (to je jeden stav) a potom ji odpoj a spoj vstup 3 na plus 5V.
Tak jak bude v Arduino bezet program, bude bud trvale svitit nebo bude trvale zhasla LED na zakladni desce Arduino, ktera je interne zapojena jako vystup 13. (U desky UNO, Mega)
Díky moc. Tady jsou výsledky
Výsledek s modulem
1100111100011100011110001110001110001111000
Výsledek bez modulu pin 3 => GND
0000000000000000000000000000000000000000000
Výsledek bez modulu pin 3 => +5V
1111111111111111111111111111111111111111111
Vyplívá z toho, že je modul vadný?
Napsal: 18 kvě 2017, 13:59
od Cowley
Nadefinuj vstup 3 v programu namisto INPUT jako INPUT_PULLUP.
Nahraj tam program a vrat tam cidlo.