Forum: Mikrocontroller und Digitale Elektronik ATMega ATTiny - Max. messbare Frequenz?


von Basti (Gast)


Lesenswert?

Guten Abend,

hat jemand von euch zufällig einen Schätz-, Erfahrungs- oder Rechenwert 
da, was mit Bascom so direkt mesbar wäre? Einfach NE555 Signal auf uC. 
Wie hoch könnte man da ca. messen auch wenn die Programmierung nicht 
perfekt ist?

Gruß Basti

von Hannes (Gast)


Lesenswert?

Etwas weniger als halbe Quarzfrequenz.

Den 555 schnupft ein Tiny locker frequenzmässig.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> Wie hoch könnte man da ca. messen auch wenn die Programmierung nicht
> perfekt ist?

Messen? Mit welcher Auflösung?

Hannes schrieb:
> Etwas weniger als halbe Quarzfrequenz.

Das wäre dann nicht messen, sondern reagieren. Aber was willst Du dann 
machen? Ein Signal, was mit 8Mhz daherkommt, wenn der AVR mit 16Mhz 
läuft, ist nicht weiter auswertbar, wenn es dauerhaft anliegt.

von Basti (Gast)


Lesenswert?

naja, wie genau würde es denn gehen? Bei 16MHz Quarz kann man da schon 
vom MHz Bereich sprechen um das ganze auswertbar aufzunehmen, oder 
befinden wir uns eher im 2-3 stelligen KHz Bereich?

Gruß Basti

PS: Soll Kapazitiven Füllstansmesser auswerten... 2 Kabel in Zisterne, 
welche die NE555 Frequenz bestimmen. Das ganze soll dann von nem kleinen 
Tiny umgerechnet werden...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> Bei 16MHz Quarz kann man da schon
> vom MHz Bereich sprechen um das ganze auswertbar aufzunehmen, oder
> befinden wir uns eher im 2-3 stelligen KHz Bereich?

Eher 2...3-stelliger kHz-Bereich. Allerdings kann man auch einzelne 
kurze Pulse recht genau erfassen, wenn man weiß, wann sie auftreten.

Basti schrieb:
> PS: Soll Kapazitiven Füllstansmesser auswerten...

Das kann der Controller doch alleine und ohne 555er. Einfach Portpin 
über schmale Pulse aufladen, an dem die Kabel hängen und Timer starten. 
Warten, bis der Pinstatus kippt, dann Timerwert lesen. Hierbei hat man 
dann auch die erforderliche Auflösung. Weil man die Frequenz und Dauer 
der Lade/Entladepulse selber bestimmen kann, ist man sehr flexibel. 
Siehe qTouch-Prinzip.

von Karl H. (kbuchegg)


Lesenswert?

Basti schrieb:

> PS: Soll Kapazitiven Füllstansmesser auswerten... 2 Kabel in Zisterne,
> welche die NE555 Frequenz bestimmen. Das ganze soll dann von nem kleinen
> Tiny umgerechnet werden...

Und da kommst du in die 300-stelligen kHz?
Mit Verlaub, aber das glaub ich nicht.

Wenn du deinen Wasserstand in 100 oder 200 Abstufungen ermitteln kannst, 
dann langt das doch locker. Kein Mensch muss wissen, wenn der 
Wasserstand um einen Atomdurchmesser gefallen ist.

von Peter D. (peda)


Lesenswert?

Basti schrieb:
> PS: Soll Kapazitiven Füllstansmesser auswerten... 2 Kabel in Zisterne,
> welche die NE555 Frequenz bestimmen. Das ganze soll dann von nem kleinen
> Tiny umgerechnet werden...

ATtiny ist o.k., aber was zum Geier hat der NE555 dabei verloren?

Der ATtiny hat einen Komparatoreingang, entweder RC-Glied 
Ladezeitmessung oder Ladungspumpe ala QTouch.


Peter

von Basti (Gast)


Lesenswert?

Hi,

http://weimars.dyndns.org/weimars/index.php/hobby/homematic
habe mir das ganze an follgendem abgeschaut. Dort wird es so gemacht.
"Kondi" im Wasser bestimmt Frequenz, welche mit dem uC ausgewertet wird.


Knut Ballhause schrieb:
> Das kann der Controller doch alleine und ohne 555er. Einfach Portpin
> über schmale Pulse aufladen, an dem die Kabel hängen und Timer starten.
> Warten, bis der Pinstatus kippt, dann Timerwert lesen. Hierbei hat man
> dann auch die erforderliche Auflösung. Weil man die Frequenz und Dauer
> der Lade/Entladepulse selber bestimmen kann, ist man sehr flexibel.
> Siehe qTouch-Prinzip.

Das verstehe ich leider nicht so ganz?


Karl Heinz Buchegger schrieb:
> Und da kommst du in die 300-stelligen kHz?
> Mit Verlaub, aber das glaub ich nicht.
>
> Wenn du deinen Wasserstand in 100 oder 200 Abstufungen ermitteln kannst,
> dann langt das doch locker. Kein Mensch muss wissen, wenn der
> Wasserstand um einen Atomdurchmesser gefallen ist.

Diese Frequenz hat nicht direkt was damit zu tun wie weit das ganze 
unterteilt ist, sondern ist eben abhängig vom Wasserstand - "Kondi am 
NE"
welche dann mit dem uC ausgwertet wird.


Danke schon mal für Eure Mühen
Evtl. kommen wir ja zusammen auf eine sinnvole Möglichkeit ^^

Gruß Basti

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> Das verstehe ich leider nicht so ganz?

Ist doch ganz einfach: Der Controller macht, was der NE555 auch macht, 
nämlich einen Kondensator laden und entladen und die Zeit mit einem 
Timer messen. Nur dass er dabei viel flexibler ist, da Pulsbreite und 
-Frequenz, mit der der Kondensator geladen wird, zur Laufzeit auf beste 
Auflösung angepasst werden können. Der Kondensator ist das Kabel. Mit 
sehr schmalen Pulsen wird das Kabel aufgeladen und dabei der Pinstatus 
gelesen. Die Anzahl der Pulse bis zum Kippen des Portpins ist direkt 
proportional zur Kabelkapazität. Dann wird das Kabel wieder entladen und 
der Vorgang beginnt erneut. Etwas komplexer ist das qTouch-Verfahren, wo 
mit einem weiteren Kondensator gearbeitet wird. Siehe hier: 
Beitrag "qtouch - sekt oder selters"

von Willy (Gast)


Lesenswert?

Wenn Du nicht selber programmieren willst, gib es eine 2,50 Euro Lösung. 
Ein einzelner ATtiny2313 + Quarz + ein paar Cs liefern Dir präzise 
Ergebnisse bis ca. 1MHz.
http://www.mino-elektronik.de/fmeter/fmeter.htm

von Basti (Gast)


Lesenswert?

Willy schrieb:
> Wenn Du nicht selber programmieren willst, gib es eine 2,50 Euro Lösung.
> Ein einzelner ATtiny2313 + Quarz + ein paar Cs liefern Dir präzise
> Ergebnisse bis ca. 1MHz.

DOch genau das ist der Grund zu bauen ;) Sicherlich will ich selber 
Programmieren. :) Aber trotzdem Danke für den Link


Knut Ballhause schrieb:
> Ist doch ganz einfach: Der Controller macht, was der NE555 auch macht,
> nämlich einen Kondensator laden und entladen und die Zeit mit einem
> Timer messen. Nur dass er dabei viel flexibler ist, da Pulsbreite und
> -Frequenz, mit der der Kondensator geladen wird, zur Laufzeit auf beste
> Auflösung angepasst werden können. Der Kondensator ist das Kabel. Mit
> sehr schmalen Pulsen wird das Kabel aufgeladen und dabei der Pinstatus
> gelesen. Die Anzahl der Pulse bis zum Kippen des Portpins ist direkt
> proportional zur Kabelkapazität. Dann wird das Kabel wieder entladen und
> der Vorgang beginnt erneut.

http://www.forum64.de/wbb3/board65-neue-hardware/board289-diverses/board191-aktuelle-mikrokontroller/36805-mit-avr-kapazit-ten-messen/#post462088
In diesem Beitrag wird darüber gesprochen den C über einen R aufzuladen 
und mit dem ADC zu mesen wann er seine 70% geladen hat. Dann wird daraus 
der C errechnet. Ist dieses Prinzip denn Sinnvoll?

Oder sollte tatsächlich wie du schreibst der C gepulst geladen werden?
 - Wie sollten die Pulse aussehen? (Länge, Frequenz, usw.)
 - Wie errechnet sich dann aus der Pulszahl bei Portkippen der C?


Gruß und Vielen Dank schonmal
Basti

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> In diesem Beitrag wird darüber gesprochen den C über einen R aufzuladen
> und mit dem ADC zu mesen wann er seine 70% geladen hat. Dann wird daraus
> der C errechnet. Ist dieses Prinzip denn Sinnvoll?

Machbar.

Basti schrieb:
> Oder sollte tatsächlich wie du schreibst der C gepulst geladen werden?
>  - Wie sollten die Pulse aussehen? (Länge, Frequenz, usw.)

Ich habe das mal (bevor ich das ähnliche qTouch verwendet habe) so 
gemacht:
Das Kabel liegt zwischen Portpin und Masse. Der Portpin wird außerhalb 
der Meßroutine auf Ausgang:Low geschaltet und das Kabel somit entladen. 
In der Meßroutine wird der Portpin auf Ausgang:High geschaltet und 
unmittelbar danach auf Eingang. Dann wird der Pinstatus gelesen. Ist er 
Low, wird ein Zähler inkrementiert und ein neuer Puls Ausgang:High -> 
Eingang gegeben. Dies wird solange wiederholt, bis der Port erstmalig 
High gelesen wird. Der Zählerstand gibt den Kapazitätswert wieder. Am 
besten funktioniert das mit Controllern, bei denen man die PullUps 
komplett abschalten kann. Dann spart man sich das ständige Umschalten 
des Portregisters beim Wechsel von Ausgang:High auf Eingang. Die 
Messroutine sollte nicht von Interrupten unterbrochen werden. Zur 
Vermeidung eines LockUps sollte man den Pulszähler begrenzen. Durch 
einfügen von "NOP" Instuktionen kann man die Puls/Mess-Zeiten variieren 
und an die Gegebenheiten anpassen. Dem verwendeten Portpin sollte man 
einen Schutzwiderstand von 1kOhm und zusätzliche Schutzdioden 
spendieren, wenn die Zuleitung zum Meßkabel länger ist oder die Gefahr 
besteht, das statische Entladungen eingekoppelt werden können.

von Basti (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Ich habe das mal (bevor ich das ähnliche qTouch verwendet habe) so
> gemacht:
> Das Kabel liegt zwischen Portpin und Masse. Der Portpin wird außerhalb
> der Meßroutine auf Ausgang:Low geschaltet und das Kabel somit entladen.
> In der Meßroutine wird der Portpin auf Ausgang:High geschaltet und
> unmittelbar danach auf Eingang. Dann wird der Pinstatus gelesen. Ist er
> Low, wird ein Zähler inkrementiert und ein neuer Puls Ausgang:High ->
> Eingang gegeben. Dies wird solange wiederholt, bis der Port erstmalig
> High gelesen wird. Der Zählerstand gibt den Kapazitätswert wieder. Am
> besten funktioniert das mit Controllern, bei denen man die PullUps
> komplett abschalten kann. Dann spart man sich das ständige Umschalten
> des Portregisters beim Wechsel von Ausgang:High auf Eingang. Die
> Messroutine sollte nicht von Interrupten unterbrochen werden. Zur
> Vermeidung eines LockUps sollte man den Pulszähler begrenzen. Durch
> einfügen von "NOP" Instuktionen kann man die Puls/Mess-Zeiten variieren
> und an die Gegebenheiten anpassen. Dem verwendeten Portpin sollte man
> einen Schutzwiderstand von 1kOhm und zusätzliche Schutzdioden
> spendieren, wenn die Zuleitung zum Meßkabel länger ist oder die Gefahr
> besteht, das statische Entladungen eingekoppelt werden können.

Vielen Dank für die gute Funktionsbeschreibung. Prinzip habe ich 
verstanden.
Allerdings verstehe ich immer noch nicht wie lang die Pulse genau sein 
sollen, und vorallem was der Zählerstand genau wiedergibt... Der wird ja 
kaum in pF oder nF zählen oder? :D
Evtl sollte ich noch inzufügen das ich mit Bascom programmiere.

Gruß Basti

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> Allerdings verstehe ich immer noch nicht wie lang die Pulse genau sein
> sollen,

So kurz wie möglich, je kürzer, desto höher die Messauflösung. In ASM 
optimal und taktgenau machbar.

Basti schrieb:
> und vorallem was der Zählerstand genau wiedergibt...

Eine zur Kapazität proportionale Größe. Wie Du diese interpretierst, ist 
Deine Sache. Du willst ja nicht wissen, wie viele pF Dein Meßkabel hat, 
sondern wie voll Deine Tonne ist ;-).

Basti schrieb:
> Evtl sollte ich noch inzufügen das ich mit Bascom programmiere.

Lieber nicht ;-). Bin mir sicher, das geht damit auch.

von Basti (Gast)


Lesenswert?

Oke, Vielen Dank für die vielen Infos.
Dann werd ich mich die Tage mal ransetzen und schaun ob sich das was 
vernünftiges zusammen frickeln lässt.

Wenns 'n Problem gibt schnei' ich hier einfach nochmal rein ^^

Danke, Basti

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> Wenns 'n Problem gibt schnei' ich hier einfach nochmal rein ^^

Ja, bis Weihnachten sollte es nicht dauern ;-)

von Basti (Gast)


Lesenswert?

Noch einer letzter kleiner Zwischenruf ;)
Zwischen Portpin und C nen R? Größe?
Oder ist der Strom bei solchen kurzen Pulsen vernachläsigbar?

Gruß Basti

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja. Schutzwiderstand 1k. Und Schutzdioden direkt am Controller. Aber 
eher wegen Statik von aussen.

von Basti (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Und Schutzdioden direkt am Controller.

WIe gepolt? wie soll denn dann da Einmal als Aus- und einmal als Eingang 
gemessen werden? Sperrt doch dann in eine Richtung? Oder hab ich da 
jetzt was falsch verstanden?

von Basti (Gast)


Lesenswert?

Hab das ganze nun mal zusammengeschustert...
1
While Pind.4 = 0
2
  Incr Zahl
3
  Portd.4 = 1
4
  Waitus 5
5
Wend

Mal nen Teiler errechnet für 100nF

100nF KerKo -> 100nF gemessen
1uF Elko -> 872 nF gemessen
10uF Elko -> 9327 nF gemessen

Näherungstechnisch schon verblüffend genau für diesen verhunzten Code :D
Wie weit liese sich das noch steigern? Evtl. jemand ne Idee wie man das 
schöner programmieren kann? Weis nicht so genau wie ich das lösen 
sollte.
Mein Problem ist vorallem wie ich das mit als Eingang configen machen 
soll. SO ist er ja für die Abfrage automatisch kurz ein Eingang, reicht 
das schon so? Oder muss ich da manuell evtl. noch ein wenig nachhelfen?

Bei direkter "Config #### = INPUT" zur Laufzeit kommen Minus Zahlen raus 
:D (Natürlich dann zum Pulsen wieder per Hand auf OUTPUT und dann wieder 
als IN)

Gruß Basti

von Basti (Gast)


Lesenswert?

Basti schrieb:
> Knut Ballhause schrieb:
>> Und Schutzdioden direkt am Controller.
>
> WIe gepolt? wie soll denn dann da Einmal als Aus- und einmal als Eingang
> gemessen werden? Sperrt doch dann in eine Richtung? Oder hab ich da
> jetzt was falsch verstanden?

Würde mich noch über eine kurz erläuterung dieses Absatzes freuen, ich 
gerade dabei bin ein Layout zu entwerfen.

Die Software funktioniert bis jetzt relativ gut und ich komm auf 
Genauigkeiten von ca 0,5% - 2% was mir für die Füllstandsmessung eines 
5700l Tanks vollkommen ausreicht.
Hab gleich eine Software mit Menue geschrieben, welche automatische 
Eich- und Abgleich Funktionen bereit hält. Komfirtabler gehts glaub ich 
kaum noch ;)

Gruß und Danke nochmal für alles...
Basti

von Ulrich (Gast)


Lesenswert?

Der Füllstandssensor wird sich eher im Wertebereich 200 pF bis 300 pF 
bewegen. Da könnte es mit der Auflösung also noch etwas schlechter 
werden. Für kurze Zeiten sollte man auch besser einen Timer nutzen - es 
muss ja nicht gleich die ICP-Funktion sein, auch das einfache Auslesen 
in Software hilft schon. So ist man dann auch unabhängig von der 
Optimierung des Compilers.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Basti schrieb:
> Würde mich noch über eine kurz erläuterung dieses Absatzes freuen, ich
> gerade dabei bin ein Layout zu entwerfen.

Diode1: Kathode an Vcc, Anode an Controllerpin, Diode2: Kathode an 
Controllerpin, Anode an Masse. Diese beiden Dioden leiten Spannungen, 
die größer als die Betriebsspannungen + Flussspannung sind, zur 
Betriebsspannung ab. Vorzugsweise sollte man hier Schottky-Dioden mit 
geringer Kapazität einsetzen. Die im Controller vorhandenen Dioden 
vertragen nur 1mA und leiten erst bei etwa 0.5V, deshalb bei längeren 
Leitungen externe Dioden vorsehen.

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.