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
  Gyroskop/Kompass Sensor AlphaRay 9 417 10.10.2016 14:41
Letzter Beitrag: AlphaRay
  Kippwinkel/Neigungswinkel Sensor? Binatone 14 637 04.09.2016 15:27
Letzter Beitrag: Bitklopfer
  PIR Sensor auslesen / einsetzen go4sea 6 551 28.04.2016 17:11
Letzter Beitrag: hotsystems
  Multi functional Expansion Board Sensor Shield Astropikus 5 789 03.03.2016 22:32
Letzter Beitrag: hotsystems
  Bosch MAP Sensor auslesen Roman 4 915 12.02.2016 23:02
Letzter Beitrag: Roman
  Optische Maus als Sensor? Binatone 4 873 20.11.2015 18:26
Letzter Beitrag: Binatone
  Waschbecken Automatisierung Sensor ? Haustechno 8 1.461 05.08.2015 19:29
Letzter Beitrag: Haustechno
  Sensor an Arduino über IP abfragen/steuern kubinek 5 2.630 03.08.2015 21:14
Letzter Beitrag: Haustechno
  Empfehlung gesucht für I2C-GPS-Sensor, auch für Google Maps HaWe 19 2.229 27.07.2015 14:29
Letzter Beitrag: DaniDD
  mit arduino touch sensor kontrollieren farewell 5 1.971 22.07.2015 09:43
Letzter Beitrag: Logonhel2

Gehe zu:


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