Pages: [1] 2 3 4   Go Down
Author Topic: Zählung von Impulsen  (Read 3053 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mahlzeit,

kann mir jemand mit dem Uno weiterhelfen?
Ich versuche vergeblich eine Funktion zu finden, die mir erlaubt innerhalb von ca. 10 ms an einem Eingang High bzw. Low Signal zu messen.
Aufgabe ist wie folgt:

Ich habe einen NE555 als astabile Kippstufe geschalten. Sprich ich bekomme am Ausgang vom NE555 einen High-Low Pegel. Ich will jetzt messen, wieviel ich von den High_Low Pegeln in diesen 10 ms habe. Das soll also in eine Schleife. Hintergrund: Ich baue einen Füllstandmesser der eben kontinuierlich messen tut.

Für hilfe wäre ich sehr dankbar...
Logged

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

Schau mal hier   -->  http://arduino.cc/it/Reference/AttachInterrupt   

und dann kannste ja über millis() noch die Zeit abfangen und Bedingungen Knüpfen... 
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du kannst aber auch die Periodendauer (oder wenn das Signal es zuläßt) die Zeit das Impulses oder der Pause messen anstatt wieviele Impulse pro Zeiteinheit kommen.
Die Zeitdauer eines Impulses oder Die Zeitdauer eine Pause kann man mit pulseIn() messen http://arduino.cc/en/Reference/PulseIn.

De 555 müßte ein Signal produzieren mit konstanter Pulsdauer aber variabler Pausenlänge.

Grüße Uwe
Logged

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

Die Dauer von High bzw. Low- Signal kann ich anhand der Widerstände verändern.

Ich muss halt zum Schluss ne Größe haben, welche ich auch verarbeiten kann.

Falls mir da jemand genau helfen kann ^^... bitte melden.
Mein English ist leider nicht so gut... weshalb ich mir da schon recht schwer tu etwas zu verstehen.


Ich glaub die Periodendauer bringt mir nicht viel. Der Sensor für die Flüssigkeit ist ja selbstgebaut (kapazitiver Sensor ... )
Somit je nach größe der Kapazität Taktet der NE555 häufiger bzw. seltener in sagen wir 10ms.
« Last Edit: January 29, 2012, 07:27:28 pm by kawa-racer » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaub die Periodendauer bringt mir nicht viel. Der Sensor für die Flüssigkeit ist ja selbstgebaut (kapazitiver Sensor ... )
Somit je nach größe der Kapazität Taktet der NE555 häufiger bzw. seltener in sagen wir 10ms.
Wenn der NE555 häufiger taktet dann ist das eine höhere Frequenz und somit kürzere Periodendauer.
Grüße Uwe
Logged

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

Um deine Idee nochmal aufzugreifen... für die Möglichkeit derMessung der Impulsdauer... da müsste dann die High Phase genauso lang sein wie die Low-Phase oder?

also momentan hat der Sensor bei vollem Füllstand eine kapazität von ca. 99 pF ... die Widerstände haben  1Megeohm und 2,5 Megaohm...
bei leeren Behälter hat der Kondensator eine Kapa von 20pF ...
Jetzt muss ich das Ganze halt in 10ms so messen und anhand von LEDs ausgeben...
also 100 % sind die 99pF ... und dann eben in 10ner Schritten runter ...

Bin mir halt noch sehr unsicher wie das jetzt am Besten zu schreibne ist ... also wie das Programm aussehen soll ...
Logged

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

So, die Schaltung wurde heut komplett vermessen.
Hab jetzt bei einem vollen Behälter ne Frequenz von fast 2kHz bei ca. 500μs (also 2000 Impulse in 1 sekunde) und bei einem leeren sinds 4 kHz bei 260μs (also 4000 Impulse in 1 Sekunde)

Deswegen brauch ich ein Zeitfenster in dem ich die Impulse messe... kann mir vll. jetzt jemand helfen ;-D
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Anstatt zu messen wieviele Impulse in einem Zeitfenster kommen messe die Periodendauer und rechne daraus die Frequenz/Kapaziät/füllstand.
Das Signal hat ein festes Puls-Pausenverhältnis oder wird nur die Länge der Pause oder des Impulses verändert?

ZeitHIGH = pulseIn(pin, HIGH, 1000); zur Messung der Impulslänge und
ZeitLOW = pulseIn(pin, LOW, 1000); zur messung der Pausenlänge

Du kannst auch beides messen und dann  summieren.

Grüße Uwe
« Last Edit: February 07, 2012, 05:48:15 pm by uwefed » Logged

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

hi also die Kapazität verändert mir die Frequenz... wenn die Kapazität größer wird, wird die Frequenz kleiner ... somit ändere ich die ganze Periodendauer...
wofür steht die 1000 bei pulsIn ?

Ich will mit 10 LEDs den Füllstand anzeigen... für die 10 Fülstände hab ich die jeweiligen Kapazitäten...
meinst du, mit deiner Möglichkeit funktioniert es besser?
« Last Edit: February 01, 2012, 04:22:51 pm by kawa-racer » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi also die Kapazität verändert mir die Frequenz... wenn die Kapazität größer wird, wird die Frequenz kleiner ... somit ändere ich die ganze Periodendauer...
wofür steht die 1000 bei pulsIn ?
... und die Periodendauer wird größer.
Die 1000 steht für Timout Zeit. Die Messung bricht nach 1000µSekunden ab.
http://arduino.cc/en/Reference/PulseIn

Quote from: kawa-racer
Ich will mit 10 LEDs den Füllstand anzeigen... für die 10 Fülstände hab ich die jeweiligen Kapazitäten...
meinst du, mit deiner Möglichkeit funktioniert es besser?
Ja, sonst hätte ich sie Dir nicht vorgeschlagen. Der Vorteil ist Du brauchst keine Interruptprogrammierung und eine Messung dauert nur 1-2 Periodendauern, also maximal 1mSekunde. Die LEDanzeige kannst Du auch direkt mit den gemessenen Zeiten errechnen zB mit einem einfachen map().
http://arduino.cc/en/Reference/Map

Grüße Uwe
 
« Last Edit: February 01, 2012, 05:13:55 pm by uwefed » Logged

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

ok ... sorry für die Fragen ^^... bin aber sehr interessiert an den ganzen Sachen.
Ist die Auswertung dann genauer oder eher ungenauer als die Messung der Impulse pro Zeitfenster?

Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Genauigkeit hängt von 2 Faktoren ab:
1) Der Genauigkeit des Taktgenerators des Microcontrollers. Mit Quarz ist der Fehler in der Größenordnung von maximal 100ppm oder 0,01%; selbst mit ungenaueren Resonator ist die Genauigkeit um 0,1%.
2) von der Länge der Meßzeit bzw dem Verhältnis Taktfrequenz zur Meßfrequenz. Bei 16Mhz zu 4kHz ist dieser Fehler vernachlässigbar.
Also der Vorteil meines Lösungsansatzes ist daß die Messung weniger Zeit braucht und daß keine Interruptroutine notwendig ist. Der Code ist einige Zeilen lang. Bei einer erwünschten Auflösung von 10 Schritten sind beide Lösungen eigentlich viel zu genau.

Grüße Uwe
Logged

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

Klingt super ^^... bräuchte dann halt nur hilfe beim erstellen des Programmes... hoffe Du/Sie können mir da doch etwas helfen.
Aber schon mal besten Dank für den Lösungsvorschlag... das Fertige Projekt werde ich dann hier vorstellen.

MfG
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sie? wer? ah ich; besser Du!
Wir helfen Dir gerne. Einige wichtige Funktionen hatte ich Dir ja berets gegeben. Ansonsten einfach Kode einfügen und fragen
Grüße Uwe
Logged

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

Hab im Forum zwar einige Sachen gefunden nur werd ich nicht daraus ganz schlau... gibts es eine Möglichkeit das Arduino Uno Rev3 mit AVR Studio zu programmieren?

MfG

Logged

Pages: [1] 2 3 4   Go Up
Jump to: