Vom folosi un senzor magnetic Hall pentru a face un numarator de impulsuri. Pentru realizarea montajului vom utiliza un modul dedicat. Acest modul ne ofera 2 iesiri, una analogica si una digitala.

    Pretul unui astfel de modul este de 9 lei si se poate achizitiona de aici.

   In cazul de fata vom folosi doar iersirea digitala, aceasta oferind un semnal HIGH la detectia campului magnetic.

    Numarul de impulsuri citit de catre senzor va fi afisat pe un display LCD 2004 care va fi conectat conform acestui articol.

    Iesirea digitala a modulului este conectata la pinul digital 2.

    Modulul se alimenteaza cu o tensiune de +5V si este cel din fotografia e mai jos:

    Sketchul folosit este urmatorul:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
int intrare = 2;
int stare = 0;
int contor = 0;
int permit = 1;

void setup() {
  pinMode(intrare, INPUT);
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Numarator cu senzor");
  lcd.setCursor(0, 1);
  lcd.print("magnetic Hall");
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();
}

void loop() {
  stare = digitalRead(intrare); 
  if (stare == HIGH) {
    if (permit == 1) {
    contor = contor+1;
    permit = 0;
    }
  } else { 
    permit = 1; 
  }
  lcd.setCursor(0, 0);
  lcd.print("Contor:");
  lcd.setCursor(0, 1);
  lcd.print(contor);
  if (permit == 0) {
    lcd.setCursor(0, 2);
    lcd.print("Impuls detectat");
  } else {
    lcd.setCursor(0, 2);
    lcd.print("               ");
  }
  lcd.setCursor(0, 3);
  lcd.print("electronicstore.ro");
}

    Dupa ce verificam montajul si ne asiguram ca functioneaza in parametri vom imbunatati functionalitatea prin adaugarea unui buton de resetare.

    Acest buton va avea un rezistor PULL-UP e 10KiloOhmi si va fi conectat la pinul D3.

    Sketchul moificat este mai jos:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
int intrare = 2;
int buton = 3;
int stare;
int contor = 0;
int permit = 1;
int stareButon = 1;  
int ultimaStareButon = 1;
unsigned long ultimulDebounceTime = 0;
unsigned long intarziereDebounce = 100;
int citireButon;

void setup() {
  pinMode(intrare, INPUT);
  pinMode(buton, INPUT);
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Numarator cu senzor");
  lcd.setCursor(0, 1);
  lcd.print("magnetic Hall");
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();
}

void loop() {
  int citireButon = digitalRead(buton);
   if (citireButon != ultimaStareButon) {
    ultimulDebounceTime = millis();
  }
  if ((millis() - ultimulDebounceTime) > intarziereDebounce) {
    if (citireButon != stareButon) {
      stareButon = citireButon;
      if (stareButon == 0) {
        contor = 0;
        lcd.setCursor(0, 1);
        lcd.print("0                   ");
         lcd.setCursor(0, 2);
         lcd.print("Contor resetat!");
         delay(500);
      } 
    }
  }
 ultimaStareButon = citireButon; 


  stare = digitalRead(intrare); 
  if (stare == HIGH) {
    if (permit == 1) {
    contor = contor+1;
    permit = 0;
    }
  } else { 
    permit = 1; 
  }
  lcd.setCursor(0, 0);
  lcd.print("Contor:");
  lcd.setCursor(0, 1);
  lcd.print(contor);
  if (permit == 0) {
    lcd.setCursor(0, 2);
    lcd.print("Impuls detectat");
  } else {
    lcd.setCursor(0, 2);
    lcd.print("               ");
  }
  lcd.setCursor(0, 3);
  lcd.print("electronicstore.ro");
}

     Un filmulet cu montajul din acest articol este mai jos:

 

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.