Aus einem Funkempfänger kommt im Ruhezustand ein Impulssignal 3,65V Tastgrad ~33% f~7Hz. Wenn ein Taste des Senders betätigt wird, kommt ein wechselndes Bitmuster f=2kHz mit 20ms Pause am ende. Wenn dieses Signal ( Taste gedrückt ) anliegt, möchte ich ein High-Pegel (TTL) am Ausgang des uC haben. Meine Idee wäre so ne Art "Frequenzschalter" der ab ca. 1,5kHz durchschaltet und einen 30ms "Nachlauf" für die Pause hat. Hat jemand en Programmvorschlag? Mit welchen µC könnte man sowas machen?? ATtiny15L wäre vom Aufbau (2 Timer) und Bauform (DIL 8) ideal! Gruß Dennis
Das Bitmuster ( 2x das Gleiche ) Da es sich um einen Wechelcodesender handelt, können einige Bit´s variieren! Dies ist jedoch nicht von Bedeutung, da die Gesamtlänge und die Bitanzahl gleich bleibt.
Im einfachsten Fall ganz ohne Controller: Hochpass mit einer Eckfrequenz von 1 kHz und ein Gleichrichter hintendran.
Schon berechnet und ausprobiert! Geht nicht a)wegen der 40ms-Pause am Ende des Bitmusters, b)wegen aufeinander folgenden "0" im Muster ( ...10100100...), c) Signal bricht bei zu "großer" Belastung zusammen( Impedanzwandler geht auch nicht ). Ein weiteres pro uC ist, auf der Platine ist Ub=5V schon vorhanden. Klar, würde bestimmt irgendwie gehn, jedoch mit einer größeren Anzahl von Bauteilen.
Dennis, Bei der relativ kleinen Signalfrequenz sehe ich da keine Probleme. Ich würde das mit einem Tiny15 im Timer-Interupt pollen und entsprechend auswerten. Ich persönlich mache sowas immer für IR-Fernbedienungen, die dann also im Hintergrund abgefragt werden. Das klappt tadellos sogar mit höheren Signalraten, als Du sie hast. Jochen Müller
Danke Jochen, hättest du evt. en Musterprogramm, von dem ich etwas lernen könnte? Gruß Dennis
lass mich raten, du willst ein IC mit der Bezeichnung 2262 oder 2260 nachbauen bzw benutzen?
Meinst du PT`s? Remote Control Encoder? Ne, will einfach nur ne kleine TTL-Schaltung ansteuern, wenn eine Taste gedrückt/gehalten wird.
jo genau die meinte ich... ich verstehe jetzt nicht mehr genau wo du was ansteuern willst? Wenn am Sender eine Taste gedrückt wird, soll am empfänger ein Highpegel anliegen? oder soll dieser Highpegel im sender einen uC ansteuen? erläuter mal bitte genauer.
Wenn ich am Sender eine Taste drücke/halte, wird vom Sender aus dieses Bitmuster gesendet. Dieses kommt am Empfänger an. Ob dieses Muster ( wie schon gesagt, variieren einzelne Bits ) am Ausgangspin des Empfängers anliegt, möchte ich mittels uC anfragen. Wenn ja, möchte ich einen HIGH-Pegel am Ausgang des uC, welchen ich dann in einer TTL-Schaltung weiter verarbeite. Vom Prinzip her: Taste gedrückt/gehalten > LED an Keine Taste gedrückt > LED aus
Vom Tiny15 konnte ich jetzt auf die Schnelle kein Datenblatt bei Atmel finden. Der hat doch sicherlich auch einen Input Capture (ICP) auf einem Timer? Wenn ja, dann ist das doch einfach: Input Capture auf fallende Flanke und jeweils mit dem Timer die Zeit von einer fallenden Flanke zur nächsten feststellen. Liegt sie unter einem Grenzwert, dann liegt die schnelle Schwingung an -> Ausgang schalten. Liegt sie 2, 3, 4, ..., 10 mal in Folge über den Grenzwert, dann ist die schnelle Schwingung weg -> Ausgang in die andere Richtung schalten. Fettich.
Hab noch nicht so viel Praxis mit uC. Ich will nicht, dass mir jemand ein fertiges Programm für mein Problem liefrt, jedoch wäre es super, wenn jemand ein Referenzprojekt hätte. Ich finde für meine Wünsche einfach kein passenden bzw. ansatzweise passneden Quellcode...
Ich wurschtel mich seit 3 Tagen durchs AVR-Tutorial... Dein Vorschlag ist duch ne Impulsbreitenmessung?
wo kommen denn die impulse raus? aus einem IC oder nicht? das sieht schon sehr nach einem PT impuls aus? wundert mich ein wenig. Vielleicht kannst du die Schaltung mal grob hochladen?
Das ganze ist für mein Auto... Wenn ich am Handsender eine Taste drücke, erzeugt die "Blackbox" nach dem Empfänger einen schliess- bzw. öffnen- Impuls von 0,5 sec. Ich möchte, wenn ich AUF bzw. ZU gedrückt halte meine Fenster AUF bzw. ZU steuern. +---------------+ AUF-Impuls _____I___+-------+ I + & + I + +---+--- AUF-Signal zum eFH Dauersignal_________+ + +-------+ +---------------+ ZU-Impuls _____I___+-------+ I + & + I + +---+--- ZU-Signal zum eFH Dauersignal_________+ + +-------+ Um dies zu realisieren, greife ich das Bitmuster zwischen 433MHz-Empfänger und "Blackbox" ab und führe es auf meinen uC. Zusätzlich greife ich die AUF- bzw. ZU-Impulse am Ausgang der "Blackbox" ab. Wenn ich recht überlege, kann mein uC eigentlich alles erledigen... 3 Eingänge und 2 Ausgänge hat er ja. Fehlt nur noch das Programm! Dann kann ich die TTL-Schaltung weg lassen.
Dennis Hoh wrote:
Na ja. Mit dem Datenblatt kommst du nicht sehr weit. Das ist so,
als ob du einen BWM reparieren willst und dazu die Hochglanzbroschüre
vom Autohändler benutzt.
> Dein Vorschlag ist duch ne Impulsbreitenmessung?
Genau darauf läuft es hinaus.
Und am einfachsten geht das mit einem Timer, der Input Capture
unterstützt.
Timer so konfigurieren (Prescaler), dass die erwarteten Impulsbreite
schön unterscheidbare Werte liefern.
Den ICP auf fallende Flanke konfigurieren
ICP beim Timer freischalten
Einen Interrupt Handler für das ICP Event installieren.
Im Eventhandler den momentanen Timer-Zählwert vom vorhergehenden
subtrahieren (damit hat man dann ein Mass für die Impulsbreite)
und für die Hauptschleife bereitstellen. Zusätzlich für die
Hauptschleife noch ein Flag setzen, dass eine Messung vorliegt.
In der Hauptschleife däumchen drehen, bis das Flag anzeigt,
dass ein Messwert vorliegt.
Ist der Messwert kleiner als eine Schranke, dann Output auf Low setzen.
Ist er größer, dann einen Zähler um 1 hochzählen, wenn der Zähler
nicht sowieso schon größer als 10 war. Erreicht der Zähler 10,
dann den Output auf High setzen.
Das wars so ungefähr in groben Zügen.
Problem könnte jetzt nur sein, wenn der Tiny kein ICP auf einem
seiner Timer unterstützt. Dann müsste man das feststellen der
Impulsbreite per Polling eines Eingangspins machen.
Meinem derzeitigen Kenntnisstand nach, unterstützt der Tiny15L kein ICP. Kann man nicht sowas machen: pos. Flanke auf Zähler "Z" > nach Zeit x Zähler "Z" auslesen > wenn "Z" kleiner y passiert nix, wenn größer y Ausgang HIGH > nach jedem auslesen "Z" löschen Könnte mich auch mit nem Tiny2313 anfreunden... Damit kann man ja sicher all meine Wünsche realisieren...
Dennis Hoh wrote: > Meinem derzeitigen Kenntnisstand nach, unterstützt der Tiny15L kein ICP. > > Kann man nicht sowas machen: > > pos. Flanke auf Zähler "Z" > nach Zeit x Zähler "Z" auslesen > wenn "Z" > kleiner y passiert nix, wenn größer y Ausgang HIGH > nach jedem auslesen > "Z" löschen Wenn du kein ICP hast, yep das ist in etwa das was man machen würde wenn man kein ICP hat. Nur eine kleine Anmerkung: "passiert nix" Das kann so natürlich nicht gehen, denn irgend eine Logik muss den Ausgang ja auch wieder auf LOW zurückbringen. In deiner groben Übersicht geht der Ausgang einmal auf HIGH aber dann nie wieder auf LOW zurück. (Gefällt mir: Jetzt fängst du an am Problem zu arbeiten)
Karl heinz Buchegger wrote:
> (Gefällt mir: Jetzt fängst du an am Problem zu arbeiten)
Danke für dein Lob!
Klar, wenn "Z" kleiner y Ausgang LOW
Werd mal ein Code zusammen basten, und auf euer Urteil warten...
So, Code hab ich noch net angefangen, jedoch folgenen Plan: Ausgelegt für Tiny15L 1,6 MHz Der kürzeste Impuls, welcher erfasst werden muss, ist ca. 400µs lang. Also denk ich net, das ich da ein zeitkritisches Problem bekomm. Der Impuls geht auf PB2, ausgewertet wird die fallende Flanke auf T0. T0 wird nach 10ms-delay ausgelesen nach R17 und gelöscht. R17 mit R18(konst. 5) verglichen. Wenn (R17 >= R18), R19 eins addieren, R17 löschen. Wenn (R19 = R18) wird PB0 HIGH, und R19 gelöscht. T1 wird auf 60ms ausgelegt und von (R19 = R18) zurückgesetzt. Wenn 60ms abgelaufen sind, wird PB0 wieder LOW. Könnte das funktionieren?
Früher hat man solche Trivial-Aufgaben mit einem nachtriggerbaren Monoflop erledigt, da musste nix programmiert werden.
Dennis Hoh wrote: > Schon berechnet und ausprobiert! > ... > ... c) Signal bricht > bei zu "großer" Belastung zusammen( Impedanzwandler geht auch nicht ). Diese Antwort passt auch hierzu... Hab nicht herraus gefunden, warum es nicht geht. 74HCT123 mit dem hab ichs versucht.
Tach, mein Problem hat sich gelöst... Naja, vorerst mal. Eben is mir beim Messen der Frequenz etwas aufgefallen. Es ist doch kein Wechselcode! Somit ist diese Sache fürs Auto erstmal gestorben. Werd mir sicherlich nix mit statischem Code einbaun. Kannich ja gleich die Fenster offen lassen... Danke erst ma soweit...
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.