In einem anderen Thread http://www.mikrocontroller.net/forum/read-1-83948.html#84679 habe ich schon angekündigt, meine Frage in einem separaten Thread zu stellen, was ich jetzt machen möchte. Wer, wie ich, die Threads hier verfolgt, weiß ja mittlerweile, dass ich einen Fahrregler(so einen ganz kleinen) mit einem Mega8 gebaut habe. Der funktionierte bisher auch immer ohne Beanstandungen. Nur jetzt bei 'nem kumpel von mir tanzt er etwas "aus der Reihe". Nachdem nun Störeinflüsse weitgehend eliminiert worden sind, stellt sich heraus, dass mein statisch angelegter regellbereich, also die Motorkennlinie, nicht mit den Bedürnissen seiner Computerfernsteueranlage gerecht wird.*lufthol* Konkret: Ich müsste neben dem Mittelabgleich auch den Max- und den Minimalwert erfassen und als eckpunkte für meine Kennlinienberechnung verwenden. Hat jemand sowas schon mal gemacht? Nach dem Start ermittel ich die Neutralstellung des Knüppels , was mit den ersten 32 Paketen mache, die einfliegen (durchschnitt berechnen: aufaddieren und 6xrechts schieben). Wie bringe ich die Kiste jetzt dazu, in den SETUP-Mode zu gehen (den ich ja vorher nicht brauchte), ohne einen Knopf drücken zu müssen. Minimale Impulsbreite und maximale Impulsbreite abzulegen ist auch klar. dann rechnen wie o~o. (Max-Min)/Fahrstufen(z.B.128) = kleinste schrittweite zwischen den Fahrstufen. motorpower 100% = MAX = 255 (8bit PWM) motorpower 0% = (MAX-MIN)/2 = 0 motorpower -100% = MIN = 255 ich gehe von einer linearen verteilung aus... nun linear verteilen ;-(( und im SRAM ablegen und bereithalten ;-)) man hätte eben früher einsehen sollen, das es was bringt, sich für Mathe zu interessieren. Aber abgesehen von meiner kleinen mathematische Schwäche bleibt noch ernsthaft die Frage für mich, wann ich die SETUP-Routine als beendet ansehen soll, bzw. den SETUP-Mode beende, ohne einen Knopf oder so drücken zu müssen. Herzlichen Dank Mathemuffel Axel
Hallo Mathemuffel; :grins: Ich habe es so gemacht: Wird der Regler gestartet, dann wird im EEPROM geprüft, ob an einer bestimmten Stelle der Wert 0x00 steht. Ist das der Fall, dann werden die Eckdaten aus dem EEPROM geladen. Ist das nicht der Fall, dann geht der Regler ins Setup. Hier habe ich drei LED´s (die benutze ich im Betrieb als "Statusanzeige") solange die LED blink, hat ma Zeit den erforderlichen Wert am Sender einzustellen. Wenn die entsprechende LED an ist, wird gemessen. Danach blinkt die nächste LED und so weiter, bis alle Werte eingelesen sind. Mitlerweile, habe ich aber eine Setuptaste eingebaut und übernehme die Werte auf Tastendruck. Ich war es einfach leid immer solange zu warten bis der µC der Meinung war er könnte mal einen Wert einlesen. GRUSS INGO PS: Ich habe einen PIC benutzt --SORRY --
man könnte mit einem 16bit timer einfach die impulse ausmessen. legt in einem bereich der mitte die mittelstellung fest und mach bei jedem reboot ein einlesen der maximalwerte. den erfasst man indem man die maximalen 5 aufeinanderfollgenden signale oberhalb eines bestimmten bereiches wählt. die liegen dann irgendwo (von den Zahlenwerten her) und es wird eine Tabelle im Ram errechnet. den PWM läst man dann die werte der Tabelle ausgeben und ist somit ohne tasten und warten programmierbar. hab mir aber bislang nur gedanken drüber gemacht. selbst programmiert habe ich (ausschließlich für meine Fernstrg) nur im trockenen und das mit festen werten. den ersten fahrtenregler, den ich gemacht habe hatte noch keine fehlererkennung und dergleichen. was natürlich in der böschung endete... im mom lasse ich einen sw-pwm mit rund 180 schritten laufen, der die vom timer gemessenen signale ausgibt (ohne mittelstellung) all zu weit bin ich also noch nicht, aber zum lampe dimmen reicht´s schon...
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.