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
Etwas weniger als halbe Quarzfrequenz. Den 555 schnupft ein Tiny locker frequenzmässig.
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.
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...
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.
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.
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
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
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"
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
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
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.
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
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.
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
Basti schrieb: > Wenns 'n Problem gibt schnei' ich hier einfach nochmal rein ^^ Ja, bis Weihnachten sollte es nicht dauern ;-)
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
Ja. Schutzwiderstand 1k. Und Schutzdioden direkt am Controller. Aber eher wegen Statik von aussen.
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?
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.