Pages: [1]   Go Down
Author Topic: Eingangspegel eines Impulses (zum Teil) im undefinierten Bereich  (Read 1255 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo allerseits!

Ich möchte mit einem Arduino Mega incl. TFT-Touchscreen einen Impulszähler basteln. Dieser soll Impulse eines Durchflussmessers (Open-Collector-Schaltung; magnetisch induktiv; klick' mich für mehr Infos) via Digital-Input zählen und mir aller 1 Sekunde die n Impulse durch (millis()%1000) teilen und anzeigen.

In der Theorie auf dem Steckbrett funktioniert alles wunderbar, jedoch am Durchflussmesser nicht. Eine Untersuchung mit einem Oszi ergab, dass der LOW-Pegel des Durchflussmessers bei ~3,4 V liegt, der HIGH-Pegel an der Betriebsspannung (hier 5 V). Nun habe ich das Problem dass der Interrupt weder bei RISING, FALLING, LOW noch bei CHANGE auslöst, gerade weil das LOW des Durchflussmessers nicht LOW genug für den Arduino ist.

Da ich in Elektronik noch relativ neu bin: Wie muss ich an das Problem herangehen? Einen Analog-Eingang würde ich nur ungern nehmen wollen.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 111
Posts: 5242
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie gross hast Du denn Deinen Pull-Up gewählt? Ein LOW bei 3V4 scheint mit etwas gar neben den Gleisen.
Logged

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe mich an den vom Hersteller Vorgeschlagenen von 2,2k gehalten. Ich habe ihn versuchsweise etwas erhöht, aber damit manipuliere ich ja nur den HIGH-Pegel.
Logged

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Problem an sich hat sich jetzt geklärt; habe bauartgleichen Messer genommen, LOW bei 0V, HIGH bei Betriebsspannung. Der Messer scheint wohl mal ohne einen Pull-Up angeschlossen worden zu sein.

Aber die Frage an sich ist trotzdem interessant... Wie könnte man eingehende Pegel manipulieren um sie für einen Digital-Eingang besser lesbar zu machen?
« Last Edit: October 25, 2012, 05:31:01 am by pxlbrnd » Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 271
Posts: 21879
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Aber die Frage an sich ist trotzdem interessant... Wie könnte man eingehende Pegel manipulieren um sie für einen Digital-Eingang besser lesbar zu machen?
Mit einem Operationsverstärker in Komparatorschaltung oder besser als Komparator mit Hysterese.
Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

GOOGLE MAL nach Schmitt-Trigger
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 271
Posts: 21879
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

GOOGLE MAL nach Schmitt-Trigger
TTL Schmitttrigger haben fixe Schaltpegel. Du mußt den Schmitttrigger mit einem Operationsverstärker bauen.
Grüße Uwe
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 194
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo @pxlbrnd,

ich kann es mir nicht vorstellen, dass das nicht funktioniert. Der Hersteller gibt einen Wert von 1-2,2k an, aber dies muss ja nicht der Wert bei 5V sein. Normalerweise schaltet der Hallsensor sauber durch und zieht das Signal nach 0V. Es sei denn, du hast tatsächlich einen "falschen" Widerstandswert eingesetzt. Ich würde diesen sogar als Versuch verdoppeln. Ich schätze das dein Widerstand zu klein bemessen ist (nach dem Motto: wer viel misst, misst Mist) :-))
Einen OP oder Sonstiges wirst du nicht brauchen.

Gruß Gerd
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo pxlbrnd,

Ich stehe gerade vor einem ähnlichen Problem. Hättest du die Möglichkeit deinen Sketch zu sharen? Ich würde gerne den BIOTech DFM-Opto Typ 01 Gase 1-30l/min einsetzen.
Schöne Grüße!
Logged

Germany
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@COOL:
Es funktioniert ja jetzt. smiley
Der Durchflussmesser hat wohl was abbekommen. Bei einem anderen gleicher Bauart funktioniert alles prima.

@aegidos
Ich weiß leider nicht ob man den Code auch bei deinem Sensor einsetzen kann.
Code:
unsigned long Pulszaehler = 0;
unsigned long Pulszaehlergesamt = 0;
const int SignalPin = 21;
void PRINT() {
  Serial.print("Durchflussmenge [l/h]:\t");
  Serial.print((Pulszaehler)*3.60); // 1 Impuls pro ml pro Sekunde; 3.6 ml/s = 1 l/h
  Serial.print("\t\tGesamtzahl Impulse bisher:\t\t");
  Serial.println(Pulszaehlergesamt);
  Serial.print("Laufzeit [h:m:s]:\t\t\t"); // ab hier fancy Laufzeit anzeigen
  Serial.print(millis()/3600000);
  Serial.print(":");
  Serial.print((millis()/60000)%60);
  Serial.print(":"); 
  Serial.print((millis()/1000)%60);
 }
   
void setup(void) {
  Serial.begin(115200);
  attachInterrupt(2, PULS, CHANGE); //Interrupt-Pin2 = Pin21 auf Arduino Mega
  pinMode(SignalPin,INPUT);
}

void loop(void) {
  if (millis()%1000 == 0){
  PRINT();
  Pulszaehler=0;
  }
}
 
void PULS(){
  if(digitalRead(SignalPin) == HIGH){
  Pulszaehler++;
  Pulszaehlergesamt++;
  }
}
(den TFT-Code habe ich mal weggeschnitten; den kann ich dir bei Bedarf schicken.)
Logged

Pages: [1]   Go Up
Jump to: