Forum: Mikrocontroller und Digitale Elektronik Durchflussmesser am Atmega8


von Patrick (Gast)


Lesenswert?

Hallo,

Ich habe diesen Sensor:
http://www.conrad.at/ce/de/product/150391/Durchflussmesser-Flow-Meter-FCH-m-POM-LC-001-35-lmin-BIO-TECH-eK-FCH-m-POM-LC-mit-Duese-1-mm-001-10-lmin

an einem Atmega8 angeschlossen (PD4) um die Impulse zu zählen per 
Counter aber ich komme nicht auf den Fehler drauf...

1) ist es normal das ich am PD4(T0) +4,9V messe ?
2) Wenn ich den PD4 gägen masse schalte dann zählt er soll auch so sein.

Den Sensor habe ich versucht mit 5V bzw. 12V zu betreiben ohne
bei 5V  -> zählt er überhaupt nicht (ob Wasserfliesßt oder nicht ist 
egal)
bei 12V -> zählt er immer (ob Wasserfliesßt oder nicht ist egal)

ich habe auch einen Widerstand verwendet von 1,6kOhm wie in der 
Anleitung beschrieben, macht jedoch keinen unterschied.

Das ist mein Code (zum Testen)...

#define F_CPU 16000000UL
#include <avr/io.h>
#include "lcd-routines.h"
#include <stdlib.h>
#include <util/delay.h>
#include <avr/interrupt.h>

int main(void)
{
    LCD_DDR = 0x0FF;
    lcd_init();


    DDRD &= ~(1 << DDD4);     // Clear the PD4 pin
    // PD0 is now an input
    PORTD |= (1 << PORTD4);   // turn On the Pull-up
    // PD4 is now an input with pull-up enabled


    //TCCR0 |= (1 << CS02) | (1 << CS01);
    // Turn on the counter, Clock fall Rise

    TCCR0 |= (1 << CS02) | (1 << CS01) | (1 << CS00);
    // Turn on the counter, Clock on Rise


    sei();


    while (1)
    {
        // we can read the value of TCNT0 hurray !!
        lcd_setcursor(0, 0);
        char Buffer[50];
        itoa(TCNT0, Buffer, 10 );
        lcd_string(Buffer);
    }
}

von Max M. (jens2001)


Lesenswert?

Patrick schrieb:
> Wenn ich den PD4 gägen masse schalte dann zählt er soll auch so sein.

Ohne Kommentar.

von Patrick (Gast)


Lesenswert?

ja das hab ich zum Testen gemacht, daher ich mir nicht sicher war ob vl. 
der atmega was abbekommen hat oder das Programm falsch ist...

von grundschüler (Gast)


Lesenswert?

du musst die impulse je Zeiteinheit messen:

1. Impulszähler auf Null
2. Timer starten
3. Impulse zählen
4. Timer stoppen und gezählte Impulse auswerten

von Patrick (Gast)


Lesenswert?

So wie ich das im Code mache (per external clock) müsste ich doch 
impulse bekommen, weshalb soll ich da etwas zeitlich zählen ?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mach dir mal eine LED mit 1k gegen +5V mit an den Ausgangspin des 
Sensors (das kannst du auch gleich als Pullup mitverwenden) und schau, 
ob da was rauskommt, denn ein Oszi wirst du nicht haben. Ich denke mal, 
das du evtl. was an den Anschlüssen des Sensors verwurschtelt haben 
könntest, denn wenn Tippen gegen Masse läuft, sollte der Sensor ja auch 
tun.
Oder Klaus hat dir was kaputtes geschickt.

Patrick schrieb:
> char Buffer[50];

Schön ist das so mitten im Code nicht. Setzt das doch einfach als 
global.

von Patrick (Gast)


Lesenswert?

Oszi hab ich jetzt nicht, aber wenns mit einer led auch gehen sollte 
Probier ichs ...

Das beim T0 obwohl er als Eingang gesetzt ist +5V anliegen finde ich 
auch eigenartig

von M. K. (sylaina)


Lesenswert?

Patrick schrieb:
> Oszi hab ich jetzt nicht

Solltest du dir beschaffen, ein Oszi kann mehr als aufschlussreich sein 
bei der Fehlersuche ;)

von Wolfgang (Gast)


Lesenswert?

Patrick schrieb:
> Das beim T0 obwohl er als Eingang gesetzt ist +5V anliegen finde ich
> auch eigenartig

Was dachtest du denn, welche Auswirkung die Aktivierung des internen 
Pull-Up hat?

von Patrick (Gast)


Lesenswert?

Der sensor liefert bei der signal leitung ca. 5V und beim einem impuls 
zieht er ihn gegenmasse aber mein T0 liefert auch 5V wegen des 
aktivierten pullups funktioniert das so eigentlich ? eigentlich müsste 
das zählen der impulse per polling auch funktionieren oder nicht (wär ja 
einfacher aber nicht so schön) ?

von STK500-Besitzer (Gast)


Lesenswert?

Patrick schrieb:
> mein T0 liefert auch 5V wegen des
> aktivierten pullups funktioniert das so eigentlich ?

Ja.

von Patrick (Gast)


Lesenswert?

Ich hab das jetzt mit der led versucht.

Sensor versorgt mit 14V 1,6kOhm pullup widerstand vom sensor
Led vorwiderstand 1kOhm..

Wenn ich den sensor leicht bewege dann flakert die led.

Wenn ich das so an den T0 hänge zählt er aber einfach drauf los....

Hat jemand noch eine idee ?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Patrick schrieb:
> Hat jemand noch eine idee ?

Du lässt aber schon den internen Pullup aktiviert, oder? Die LED zieht 
das ganze nicht auf 5V hoch, sondern nur auf etwa 3,5V und das ist bei 
5V am MC im 'wackeligen' Bereich, sprich, nicht ganz high und auch nicht 
low.

Dem Sensor und dem MC musst du unbedingt Abblockkondensatoren verpassen, 
wie in jeder Schaltung, die CMOS involviert.

von Patrick (Gast)


Lesenswert?

ja der interne Pullup ist aktiviert, gemessen hab ich am T0 4,99V.

Ich werde Kondensatoren dazu hängen aber meine vermutung liegt eher 
daran das der Sensor ca 2V liefert (hab ich so gemessen beim versuch mit 
der LED) und er mir die Spannung zu wenig
runterzieht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.