PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm gesucht - Bargeld lacht €€



Sauerbruch
15.01.2007, 18:25
Liebe Bascom- und ATMEL-Freaks,

ich benötige einen µC, der ein PWM-Signal überwacht und erkennt, wenn sich die Pulsweite über einen bestimmten Grenzwert hinaus verändert.
Ist ganz einfach, das weiß ich auch. Aber ich kann´s halt nun mal nicht, und habe auch leider nicht in Ansätzen die Zeit, mich in diese Materie einzuarbeiten. Obwohl es extrem in den Fingern juckt - aber bis zur Rente sind´s halt noch ein paar Jahre.

Wer sich also ein paar Euronen verdienen möchte (fairer Stundenlohn!!), möge sich wegen weiterer Details doch bitte mit mir in Verbindung setzen: dheise1@gwdg.de

Gruß & Co.,

Daniel

uwegw
15.01.2007, 19:59
In welchem Frequenzbereich spielt sich das ganze ab? Bzw wie lang dauern die Impulse minmal und maximal?

Sauerbruch
15.01.2007, 20:24
Ich hab´ mal 2 Oszillogramme drangehängt, die´s eigentlich ganz gut zeigen: Es sind jeweils Serien von 7 Einzelimpulsen, HIGH zwischen 0,8 und 1,8 ms (variabel und daher auszuwerten), LOW ca. 0,5 ms. Nach jeweils 7 Impulsen kommt ca. 15ms lang HIGH (als Synchronisationsimpuls).

Daniel

uwegw
15.01.2007, 20:42
Und wie genau soll die Pulslänge bestimmt werden? Eine feste Schwelle und nen digitales Ausgangssignal, oder Ausgabe (wie?) von mehreren Zwischenwerten?

Sauerbruch
15.01.2007, 23:41
Also - ich hol´ mal etwas weiter aus 8-[
Das ganze soll eine automatische Umschaltung zwischen zwei Fernsteuerungs-Sendern werden, für sogenannten Lehrer-Schüler-Betrieb. Lehrer und Schüler haben einen Sender, aber jeweils nur einer ist aktiv, eben entweder der Schüler, oder aber (wenn´s nötig ist) der Lehrer. Gibt´s auch schon, weiß ich auch, aber eben nich automatisch sondern bisher nur so, dass der Lehrer erst einen Schalter umstellen muss, um eingreifen zu können. Das ist aus meiner Erfahrung aber viel zu träge - wenn´s schnell gehen muss, z.B. bei ´ner Windbö im Landeanflug. Das wäre so, als wenn der Fahrlehrer erst einen zweiten Zündschlüssel einstecken müsste, bevor er in seine Pedale treten kann - das wäre auch nicht so prickelnd.

Fast alle Sender haben eine Ausgangsbuchse, die u.a. einen Pin besitzt, der den Sender HF-mäßig lahmlegt, wenn er auf Masse gelegt wird. Mit 2 invertiert angesteuerten Transistoren kann man somit mit einem High- oder Low-Pegel sauber zwischen beiden Sendern hin- und herschalten, das läuft auch schon alles tadellos. Alleine was fehlt ist die "Inteligenz", die erkennt, wenn der Lehrer eingreift.

Wie die Steuerknüppel bzw. Schieberegler einer Fernsteuerung stehen, das ist in den Längen der 7 Einzelimpulse codiert (idR werden 7 Steuerfunktionen übertragen), die dementsprechend zwischen 0,8 und 1,8ms variieren. Und genau dieses Impulstelegramm wird bei fast allen Sendern als normales Digitalsignal über die gleiche Buchse ausgegeben.

Der µC müsste sich also das Signal ansehen, das der Lehrer-Sender in Neutralstellung aller Steuerknüppel abgibt, und die Impulsbreiten "lernen". Wenn er das hat, müsste er kontinuierlich die einzelnen Impulslängen der folgenden Telegramme messen, und wenn auch nur ein Impuls um einen bestimmten Betrag abweicht, einfach einen Port von 0 auf 1 setzen, der dann die 2 Transistoren ansteuert (einen davon invertiert). Geradezu ideal wäre es, wenn man die Abweichung, ab der die Schaltung reagiert, mit einem Trimmer einstellen könnte. Also z.B. einen Bereich von 0,1 - 0,5ms Abweichung von den ursprünglichen Impulslängen. Das müsste mit den eingebauten AD-Wandlern doch auch möglich sein, oder?

Ich hoffe, die Aufgabe jetzt ausreichend pärrzise beschrieben zu haben :-)

Daniel

kalledom
15.01.2007, 23:56
Hallo Daniel,
mit einem Poti am A/D-Eingang geht technisch gesehen, aber wie kontrollierst Du, was eingestellt ist ? So ein Poti hat 270 Grad Einstellbereich.
Wie wäre es mit einem LC-Display und Tastern, mit denen Werte oder Toleranzen / Grenzen festgelegt werden können, z.B. in der Art wie hier (http://www.domnick-elektronik.de/aktfas.htm) ?

Sauerbruch
16.01.2007, 02:30
Hallo Karl-Heinz,

klar überstreicht so ein Poti einen großen Bereich. Auf genaue Werte kommt es m.E. aber gar nicht so sehr an, im Gegensatz zur Fotografie. Vielmehr wäre es wichtig, dass sich der Lehrer das Poti so einstellen kann, dass der µC bei einem Knüppelausschlag umschaltet, der ihm persönlich angemessen erscheint. D.h. nicht zu empfindlich, aber auch nicht erst, wenn er alle Knüppel in Vollausschlag gebracht hat...

In diesem Zusammenhang habe ich einen Piezo-Pieper eingebaut, der ein akustisches Signal abgibt, wenn ein Eingreifen des Lehrers erkannt und die Sender entsprechend umgeschaltet werden (erhält über ein UND-Gatter ein 5kHz-Signal, wenn die Transistoren auf "Lehrer" umschalten). Damit würde der Schüler nicht nur merken, wenn er vom Lehrer "überstimmt" wird, sondern der Lehrer könnte VOR (!) gemeinsamer Inbetriebnahme den Trimmer so einstellen, dass er bei einem ihm angemessenen Knüppelauschlag das Kommando übernimmt.

Über die genaue Realisierung habe ich natürlich nur laienhafte Vorstellungen: Könnte man den vom AD-Wandler ausgegebenen Wert so verrechnen, dass als Resultat Werte zwischen 0,1 und 0,5 herauskommen, und diese dann als maximale Abweichung in ms verwenden, bei deren Überschreitung reagiert werden soll?

Daniel

kalledom
16.01.2007, 10:54
Hallo Daniel,
wenn ein Poti zwischen +5V und GND liegt und der Schleifer zum A/D-Wandler-Eingang geführt wird, dann wird aus 0...5V im µC bei einer 8 Bit-Auflösung (10 Bit geht auch, ist aber hier nicht interessant) 0...255, also 256 Stufen.
Die Zeit ist im µC ebenfalls ein Binär-Wert, meistens 8 Bit = 1 Byte (0...255). Wenn 256 Schritte nicht ausreichen, werden 16 Bit = 2 Byte (0...65.535) genommen.
Dieser 'Zeit-Wert' / Timer-Wert wird von einem internen Taktgenerator in dem durch das Programm initialisierten Intervall inkrementiert, bis es zu einem Überlauf kommt: ...254...255...0. Bei diesem Überlauf kann z.B. ein Interrupt ausgelöst werden, in dessen Interupt-Service-Routine (ISR) der Timer wieder für den nächsten Überlauf auf einen neuen Wert gesetzt wird.
Der 'Zeit-Wert' kann mit dem A/D-Wert (Poti) verknüpft werden; da gibt es die tollsten Möglichkeiten.
Mit einem Timer kann auch der Abstand zwischen zwei Impulsen gemessen werden, indem dieser beim ersten Impuls auf 0 gesetzt wird und beim zweiten Impuls der Timer-Wert ausgelesen wird. Da die Inkrement-Zeit bekannt sind, kann der Zeitabstand aus Timer-Wert * Inkrement-Zeit genau bestimmt werden.
Alle internen Takt-Zeiten werden vom Quarz des µC abgeleitet: Quarz-Frequenz/2... /4... /8.../16... sind somit quarz-genau.
Das Poti kann sicher mit einer Skala versehen werden oder man hat in etwa im Gefühl, wo es stehen sollte.
Aber, unbekannte Daten aus der Ferne einzulesen, ohne kontrollieren zu können, wie die denn aussehen, wäre mir zu 'waghalsig'.
Außerdem würde ich den µC die Daten nicht jedesmal neu 'erlernen' lassen, sondern diese 1 mal einlesen, evtl. korrigieren und im internen Eeprom ablegen; dort sind sie sicher, auch wenn die Spannung weg ist.
Macht Spaß, nicht ? Wenn das hier so weiter geht, baust Du das Ding noch selber :-)

Sauerbruch
16.01.2007, 22:47
´n Abend Kalledom,

kein Zweifel - jedesmal, wenn ich in diesem Forum schmökere, nehme ich wieder mein Experimentierboard in die Hand, weil ich wirklich gerne erste "Gehversuche" mit ATMELS machen möchte. Aber ich krieg´ noch nichmal eine Kommunikation zwischen all diesen verwirrenden Programmen und dem Board zusammen, und hab´schon dermaßen viel Zeit reingesteckt, dass ich mir erstmal keinen anderen Rat weiß, als hier um Hilfe zu suchen.

Ein festes Einspeichern der Ruhe-Impulslängen scheint mir aber aus folgendem Grunde problematisch: Die "Ruhelage" ist nämlich von Modell zu Modell z.T. erheblich unterschiedlich. Manche Modelle haben z.B. unsymmetrische Ausschläge, also z.B. 25% nach oben, 75% nach unten, bei manchen ist die Mittellage aber genau bei 50%. Das muss individuell am Sender eingestellt werden, und daher ist es sinnvoll, wenn der µC die jeweilige Ruhelage erst lernt. Manchmal muss man sie sogar während des Fluges verändern: Wenn z.B. der Tank leergeflogen ist, wird der Flieger "schwanzlastig", und der Nullpunkt des Höhenruders muss ein wenig in Richtung abwärts verstellt werden.

Aber wahrscheinlich interessiert das hier fast keinen, ist ja auch ein BASCOM-Forum. Ich will ja nur in aller Bescheidenheit anmerken, dass ich nach etwa 30 Jahren Flugmodellbau schon zumindestens vage Vorstellungen darüber habe, welche "features" ein gutes L-S-Kabel unbedingt braucht.

Trotzdem schon mal danke für Deine Ideen & Gedanken, bin gespannt, wie´s weitergeht!!

Daniel

Schokohoernl
16.01.2007, 22:52
Nabend Sauerbruch!

haste meine PN gelesen?

Mal so btw: Soll der µC auch von alleine dem Schüler wieder den Flieger überlassen oder soll das über nen kleinen Knopf beim Lehrersender gehen? Also wenn der Lehrer es für geeignet hält, übergibt er mit nem Knopfdruck dem Schüler die Steuerung und wenn der Lehrer eingreift, springt sie automatisch zurück. Oder soll wenn der Lehrer für 5 Sekunden nichts bewegt die Steuerung automatisch dem Schüler übergeben werden?

MfG

Schoko

P.s.: PN nicht vergessen ;-)

kalledom
16.01.2007, 23:15
Hallo Daniel,
das Problem mit dem schwanzlastigen Flieger und dem veränderten Nullpunkt habe ich jetzt verstanden. Da ich überhaupt keine Ahnung von Flugzeugen habe, auch noch nie geflogen bin und nur gelegentlich mal einen fliegen lasse, habe ich die ganze Sache nur von der µC-Seite her gesehen, da ich bereits viele Steuerungen aufgebaut habe, wo viele Parameter gesetzt / verändert werden können / müssen und bei denen es ohne Anzeige und Kontrolle einfach nicht geht, und sei es 'nur' über die serielle Schnittstelle mit einem PC.
Du hast natürlich die Flug(zeug)erfahrung und -Kenntnis und kannst wesentlich besser sagen, was erforderlich und was überflüssig ist.
Ohne LC-Anzeige wird die 'Kiste' natürlich auch wesentlich kleiner.
Wenn Du gar nicht mehr weiter kommen solltest und Dir Hilfe versagt bleibt, kannst Du Dich ja gerne bei mir melden.

Sauerbruch
16.01.2007, 23:38
@ Kalledom:

Jau - vielen Dank für das nette Angebot! Wenn ich mir die Schaltung auf Deinem Link so ansehe, schätze ich schon, dass mein Problemchen für Dich keine größere Hürde wäre :-) Bei Bedarf wende ich mich gerne an Dich!

@ Schoko:

Die PN habe ich gerade entdeckt (*Blick senk...) - und schon beantwortet! Was die Zeitabläufe anbetrifft, denke ich, das Modell "Fahrschule" ist bewährt und daher die optimale Lösung: Wenn der Lehrer in die Eisen tritt, hat er die alleinige Kontrolle. Aber sobald er loslässt, ist der Schüler sofort wieder dran, ohne Zeitverzögerung. Ich denke, der Schüler muss möglichst alles selber machen, außer eben, der Lehrer steuert gegen. Hin- und herschalten stelle ich mir 1. vollautomatisch und 2. ohne Zeitverzögerung vor..

Daniel

kalledom
16.01.2007, 23:49
@Sauerbruch
Ohne LC-Anzeige habe ich da noch was ganz Kleines: hier (http://www.domnick-elektronik.de/aktdzm.htm) .