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

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


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.