Arduino - Zapojení Hallového Senzoru

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

Arduino - Zapojení Hallového Senzoru

#1 Příspěvek od janpav »

Ahoj, koupil jsem tento modul (Hallův Senzor Magnetický Indukční Snímač Arduino Modul).
http://robotstore.cz/obchod/arduino/hal ... ino-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

hakamusai
Příspěvky: 943
Registrován: 17 dub 2007, 02:00

#2 Příspěvek od hakamusai »

Dva jsou napájení a třetí signál.Jakej je tam hall? Určitě digitální.

Uživatelský avatar
misocko
Příspěvky: 1250
Registrován: 26 čer 2009, 02:00
Bydliště: Hlohovec (Sk)

#3 Příspěvek 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

Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

#4 Příspěvek 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 ... /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

Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

#5 Příspěvek 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

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#6 Příspěvek od Cowley »

Vzdyt je u tveho odkazu jak schema tak vzorovy program. Maji to pripojene na pin 3, tzn. Digitalni vstup.

Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

#7 Příspěvek 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 :-(

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#8 Příspěvek 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.

Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

#9 Příspěvek 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

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#10 Příspěvek od pocitujlasku »

a mas ten ten pin ako input pull_up? inak ti lieta vo vzduchu a meria blbosti
No vidis, a tak si sa bal

Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

#11 Příspěvek 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);
     }
}
Naposledy upravil(a) janpav dne 18 kvě 2017, 13:44, celkem upraveno 1 x.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#12 Příspěvek 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)

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#13 Příspěvek 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

Uživatelský avatar
janpav
Příspěvky: 82
Registrován: 04 kvě 2017, 02:00

#14 Příspěvek 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ý?

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#15 Příspěvek od Cowley »

Nadefinuj vstup 3 v programu namisto INPUT jako INPUT_PULLUP.
Nahraj tam program a vrat tam cidlo.

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“