ahoi!
ich hab ein kleines Problem, das ich mit mikrokontroller oder, besser,
mit analoger Schaltung loesen will:
Ein 433Mhz Empfaenger soll von einem Arduino ausgewertet werden, problem
dabei ist: dieser soll soviel und solange wie moeglich im standby
verharren. Leider verursacht der Empfaenger staendige Interrupts im
Arduino, wohl verursacht durch einen Empfindlichkeitsanstieg beim
Empfang von Signalen oder so...whatever, diese "Glitches" oder Noise
wecken den Arduino und dass soll nicht passieren. Nun ueberlege ich
krampfhaft, was ich dagegen tun kann, komme aber auf keinen gruenen
Zweig. Nen RC-Glied? eine Art Timerschaltung mit NE555? Irgendeine
logische Verknupefung von einem Taktsignal mit dem Ausgang des
Empfaengers?
IM Endeffekt is folgendes verhalten gefragt: ignoriere kurzes Noise
vollstaendig. aktiviere den Interrupt-Eingang fuer eine gewisse Zeit,
wenn eine Praeambel von gewisser dauer empfangen wird(-xmal solang wie
nen seeehr kurzer Noise)
Jemand eine Idee?
Gruesse,
randaley
Ich kenne das konkrete HF Modul nicht. Im allgemeinen ist es jedoch so,
dass PLL basierte Funkempfänger lautes Rauschen empfangen, wenn der
Sender inaktiv ist.
Deswegen macht es wenig Sinn, den Ausgang des Empfänger direkt mit dem
Interrupt-Eingang des Mikrocontrollers zu verbinden.
Bevor wir uns hier clevere Lösungen ausdenken, beantworte erstmal
folgende Fragen:
- Wie hoch ist die Stromaufnahme des Empfängers?
- Wie hoch ist die Stromaufnahme des Mikrocontrollers?
- Wie viel Rauschen (pulse pro Sekunde) gibt der Empfänger in der Zeit
aus, wo die Schaltung eigentlich inaktiv sein soll?
Ahoi!
Zu den Fragen:
- Wie hoch ist die Stromaufnahme des Empfängers?
0,3mA
Wie hoch ist die Stromaufnahme des Mikrocontrollers?
Arduino pro mini, untertaktet auf 1Mhz ca. 1mA, im sleep natuerlich bei
weitem weniger.
Wie viel Rauschen (pulse pro Sekunde) gibt der Empfänger in der Zeit
aus, wo die Schaltung eigentlich inaktiv sein soll?
Ich hab die Pulse leider nicht gezählt, mir nur einmal visualisiert - es
sind zu viele;) sagen wir, der Arduino wird 10mal in der Sekunde unnötig
aufgeweckt...
Tiefpass hab ich als Idee anliegen, aber noch nicht ausprobiert...
grüsse,
randalay
Das verhältnis der Stromaufnahmen legt nache, den Mikrocontroller
möglichst schlafen zu legen. Das lohnt sich ganz sicher.
10 Interrupts pro Sekunde sind fast gar nichts. Wenn du das Programm
geschickt schreibst, werden sich selbst 100 Interrupts pro Sekunde nur
marginal auf die Stromaufnahme auswirken. Du musst einfach dafür sorgen,
dass Störsignale schnell erkannt werden, so dass der Mikrocontroller
sich schnell wieder schlafen legen kann.
Du könntest auch eine externe CMOS Schaltung vorsehen, die den
Mikrcoontroller nur dann aufweckt, wenn ein gültiges Signal empfangen
wird. Das kann möglicherweise eine simple Timerschaltung sein, die das
Präambel erkennt.
Allenfalls sollte man das Signal mal mit dem Oszilloskop anschauen, und
mit dem gewuenschten Signal vergleichen, bevor man irgendwelche
Massnahmen trifft.
randaley schrieb:> Ein 433Mhz Empfaenger soll von einem Arduino ausgewertet werden, problem> dabei ist: dieser soll soviel und solange wie moeglich im standby> verharren. Leider verursacht der Empfaenger staendige Interrupts im> Arduino
Dazu gibt es verschiedene Lösungsansätze, ich skizziere mal zwei davon:
- Den Empfänger für eine definierte Zeit an- und abschalten, zum
Beispiel 100ms an und 500ms aus. Wenn in den 100ms irgendeine sinnvolle
Bitfolge erkannt wird, dann weiter an lassen und decodieren. Das
funktioniert aber nur wenn das Sendesignal ausreichend lang ist bzw.
wiederholt wird und wenn das Rauschen des Empfängers nicht zuviel
Pseudosignal produziert.
- Den Empfänger mit einer Squelch-Schaltung ergänzen, d.h. der
NF-Ausgang wird nur bei anliegendem HF-Signal freigeschalten. Diese
Methode funktioniert wiederum nur, wenn nicht zuviel Stör-HF in der Luft
ist.
Dein Problem hat schon ganze Horden von Ingenieuren beschäftigt und ist
immer wieder aktuell.
Sinnvoll ist es, gleich von vorneherein auf minimale Stromaufnahme der
beteiligten Komponenten zu achten, was Du ja anscheinend getan hast.
randaley schrieb:> wohl verursacht durch einen Empfindlichkeitsanstieg beim Empfang von> Signalen oder so
Geraten? Gemessen?
> IM Endeffekt is folgendes verhalten gefragt: ignoriere kurzes Noise> vollstaendig. aktiviere den Interrupt-Eingang fuer eine gewisse Zeit,> wenn eine Praeambel von gewisser dauer empfangen wird(-xmal solang wie> nen seeehr kurzer Noise)
Zahlen? Was ist "kurz", was "lang"?
Jetzt Nicht schrieb:> sollte man das Signal mal mit dem Oszilloskop anschauen
Damit das Ratespiel mal wenigstens Hand und Fuß bekommt.
Man sollte doch, bevor man etwas bekämpfen will, wissen, was man
bekämpfen will...
Ahoi nochmals,
@Lothar: 1. recherchiert, 2.kurz oder lang in relation zueinander ist
erstmal ausreichend;) dimensionierung kommt, sobald ich einen
Loesungsansatz verfolge.
@Micha: den ersten Ansatz verfolge ich zusaetzlich, um weiter Strom zu
sparen. Den zweiten Ansatz schaue ich mir genauer an, da ich (seit
heute) sowieso eine Loesung mit NE555 bzw einem LOWCurrent Derivat als
zweiten Loesungsansatz verfolgen moechte.
Danke erstmal fuer die Hilfe! Ich werd mich entweder mit neuem Problem
oder meiner verwendeten Loesung zurueckmelden!:)
Gruesse,
randaley
Lothar Miller schrieb:> Man sollte doch, bevor man etwas bekämpfen will, wissen, was man> bekämpfen will...
Oder man weiß auf was man reagieren will, dann baut man sich ein Tor,
dass nur das durch lässt, was man empfangen will.