INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Flow - Sensor
16.01.2016, 19:48
Beitrag #1
Flow - Sensor
Hallo,
ich habe von einem Bekannten einiges an Material bekommen, weil er nichts mehr davon braucht. Unter anderem ist dieses Teil dabei:
Flow-Sensor

Der Anschluss ist ganz einfach:
Rot = VCC (5V)
Schwarz = GND
Gelb = Data (zu Testzwecken an PIN2)

Angaben zu dem Teil habe ich folgende gefunden:
Frequency: F=4.8 * Q (L / Min) error: ± 2% voltage: 3.5-24VDC, current can not exceed 10mA, 450 output pulses/liters,
F=constant * units of flow (L / min) * time (seconds).
Flow range: 1-60L/min
Maximum current: 15 mA (DC 5V)

Dazu meine Frage: ist meine Annahme richtig, dass der Flow-Sensor 450 Pulse / Liter schickt, die ich dann ganz einfach am Pin2 abgreifen kann und mir so die durchgeflossenen Liter errechnen kann?

Im Internet habe ich folgenden Sketch gefunden und dort die 7.5 durch die 4.8 ersetzt:

Code:
#include "LiquidCrystal.h"
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// which pin to use for reading the sensor? can use any pin!
#define FLOWSENSORPIN 2

// count how many pulses!
volatile uint16_t pulses = 0;

// track the state of the pulse pin
volatile uint8_t lastflowpinstate;

// you can try to keep time of how long it is between pulses
volatile uint32_t lastflowratetimer = 0;

// and use that to calculate a flow rate
volatile float flowrate;

// Interrupt is called once a millisecond, looks for any pulses from the sensor!
SIGNAL(TIMER0_COMPA_vect) {
  uint8_t x = digitalRead(FLOWSENSORPIN);
  
  if (x == lastflowpinstate)
  {
    lastflowratetimer++;
    return; // nothing changed!
  }
  
  if (x == HIGH)
  {
    //low to high transition!
    pulses++;
  }
  lastflowpinstate = x;
  flowrate = 1000.0;
  flowrate /= lastflowratetimer;  // in hertz
  lastflowratetimer = 0;
}

void useInterrupt(boolean v) {
  if (v) {
    // Timer0 is already used for millis() - we'll just interrupt somewhere
    // in the middle and call the "Compare A" function above
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
  } else {
    // do not call the interrupt function COMPA anymore
    TIMSK0 &= ~_BV(OCIE0A);
  }
}

void setup() {
   Serial.begin(9600);
   Serial.print("Flow sensor test!");
   lcd.begin(16, 2);
  
   pinMode(FLOWSENSORPIN, INPUT);
   digitalWrite(FLOWSENSORPIN, HIGH);
   lastflowpinstate = digitalRead(FLOWSENSORPIN);
   useInterrupt(true);
}

void loop()                     // run over and over again
{
  lcd.setCursor(0, 0);
  lcd.print("Pulses:"); lcd.print(pulses, DEC);
  lcd.print(" Hz:");
  lcd.print(flowrate);
  //lcd.print(flowrate);
  Serial.print("Freq: "); Serial.println(flowrate);
  Serial.print("Pulses: "); Serial.println(pulses, DEC);
  
  // if a plastic sensor use the following calculation
  // Sensor Frequency (Hz) = 4.8 * Q (Liters/min)
  // Liters = Q * time elapsed (seconds) / 60 (seconds/minute)
  // Liters = (Frequency (Pulses/second) / 4.8) * time elapsed (seconds) / 60
  // Liters = Pulses / (4.8 * 60)
  float liters = pulses;
  liters /= 4.8;
  liters /= 60.0;

/*
  // if a brass sensor use the following calculation
  float liters = pulses;
  liters /= 8.1;
  liters -= 6;
  liters /= 60.0;
*/
  Serial.print(liters); Serial.println(" Liters");
  lcd.setCursor(0, 1);
  lcd.print(liters); lcd.print(" Liters        ");

  delay(100);
}

da ich aktuell nicht die Möglichkeiten habe, das zu verifizieren wollte ich mal nachfragen, ob das so passt und bin schon sehr auf Eure Meinungen gespannt.

Vielen Dank, Claus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Touch Sensor als EIN-AUS Schalter HDT 15 593 23.04.2017 16:24
Letzter Beitrag: HDT
  Optische Maus als Sensor? Binatone 9 1.468 07.04.2017 13:55
Letzter Beitrag: Binatone
  Doppel Hall Sensor? Binatone 2 367 03.01.2017 06:50
Letzter Beitrag: Binatone
  Details zu Laser Sensor WS87005 Franz54 1 383 13.12.2016 18:04
Letzter Beitrag: Tommy56
  Gyroskop/Kompass Sensor AlphaRay 9 821 10.10.2016 14:41
Letzter Beitrag: AlphaRay
  Kippwinkel/Neigungswinkel Sensor? Binatone 14 1.047 04.09.2016 15:27
Letzter Beitrag: Bitklopfer
  PIR Sensor auslesen / einsetzen go4sea 6 897 28.04.2016 17:11
Letzter Beitrag: hotsystems
  Multi functional Expansion Board Sensor Shield Astropikus 5 1.086 03.03.2016 22:32
Letzter Beitrag: hotsystems
  Bosch MAP Sensor auslesen Roman 4 1.250 12.02.2016 23:02
Letzter Beitrag: Roman
  Waschbecken Automatisierung Sensor ? Haustechno 8 1.671 05.08.2015 19:29
Letzter Beitrag: Haustechno

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste