Hallo,
Zitat Zitat von kleinfranke Beitrag anzeigen
Genau so soll es sein =)
Es soll für ein rennkart werden für ein Viertel Meilen Rennen.
Es gibt Sowas für karts aber das kostet 900 Euro
Also, du musst das Problem zuerst in zwei Teile zerlegen.
1. Der Tasten-Klapperatismus.
Du hast das Problem, dass die Tasten prellen. Das Teil schaltet nicht wirklich sauber, sondern erzeugt im Bereich von etwa 10ms eine Menge Impulse. Die Elektronik ist schnell genug um diese als einzelne Impulse zu erkennen. Das will man aber nicht. Du musst also z.B. mit Timern sicherstellen, dass dies nur als einzelner Impuls ausgewertet wird. Die Prellzeit hängt auch noch von der Tastenkonstruktion und dem Alter der Taste ab.

Vorstellen kannst du dir das bei einem Springkontakt folgendermassen:
Der Kontakt wird zuerst mit einer Feder vorgespannt und schnellt dann auf den anderen Kontakt. Dort hüpft er dann wie ein Ball mehrfach auf und ab und unterbricht dabei immer wieder den Kontakt.

Es gibt auch Schiebekontakte, wie z.B. bei Schiebeschaltern. Dabei wird der Kontakt beim Betätigen über den anderen Kontakt geschleift. Mikroskopisch ist so eine Oberfläche aber nicht Glatt, sondern ähnelt mehr den Alpen. Das ruckelt und hüpft dann eben auch.

Ein anderes Problem ist dann noch, dass die Tasten unterschiedlich lang gedrückt werden können, möglicherweise sogar länger als sie Schaltzeit des Getriebes ist. Da musst du dir auch erst einmal Gedanken machen, was in einem solchen Fall geschehen soll.

Und dann musst du noch mit Störungen rechnen. Meistens verwendet man keine Dieselmotoren, also ist da eine Zündkerze, welche mit Hochspannung betrieben wird. Der Name "Funk", für Radio usw., kommt daher, dass man in den Anfängen Funken-Sender benutzt hat, damit konnte man aber nur Morsen. Jeder Draht ist aber auch eine Antenne und die Elektronik weiss dann nicht, ob die Taste gedrückt wurde oder es ein Störsignal ist.
Das muss man dann durch entsprechende Dimensionierung und Filter-Kondensatoren unterdrücken, sonst schaltet dein Motorrad grundlos in einen anderen Gang!

Eine mögliche Lösung wäre, das ganze mit Timern auszuwerten:
a. Taste kürzer gedrückt als T1 --> Störung oder Prellen
b. Taste mindestens länger als T2 gedrückt --> Schaltvorgang auslösen.
c. Option: Taste länger als T3 gedrückt --> weiteren Schaltvorgang auslösen.
d. Taste länger als T4 gedrückt --> Dauerkontakt, Defekt, Kurzschluss

So jetzt haben wir das mal für EINE Taste.
Was ist wenn BEIDE Tasten gleichzeitig gedrückt werden?
Was ist wenn man 2x schneller Drückt als vom Getriebe ausgeführt werden kann? Wird dann der zweite Tastendruck ignoriert oder zwichen gespeichert um 2 Gänge weiter zu schalten?
Das sind aber sicher noch nicht alle Bedingen.

2. Schaltwerk
In der realen Welt bracht Bewegung immer Zeit. So ein Mikroprozesserchen verbringt die meiste Zeit sowieso nur mit auf Warten auf ein Ereignis.
Wenn du dem Servo den Befehl gibst sich um 90° zu Bewegen, musst du ihm auch entsprechend Zeit lassen dies umzusetzen. Erst dann kannst du ihm sagen, dass er wieder in die Grundposition gehen soll. Um einen Schaltvorgang auszulösen, muss sich der Servo aber in der Grundposition befinden. Mechanik hat die Eigenschaft sich je nach Temperatur unterschiedlich leicht zu bewegen, das beeinflusst aber auch die maximale Geschwindigkeit mit welcher der Servo sich bewegt. Hinzu kommt auch noch die Abhängigkeit des Servomotors von der Spannung.
Hier ist es Hilfreich, wenn man eine Rückmeldung der Servostellung hat, in deinem Fall also Grundstellung, Schaltpunkt + und Schaltpunkt -.
Dann kann man warten bis das entsprechende Signal kommt, egal wie schnell der Servo dies gerade umsetzen kann.
Zudem sollte man auch die Zeit überwachen. Kann das der Servo nicht in einer maximalen Zeitspanne erreichen, ist was defekt, klemmt etwas oder es liegt sonst ein Fehler vor.

3. Reset
Du hast ein Schrittschaltwerk vorliegen. Je nachdem wann die Spannung abgeschaltet wurde, weisst du nicht welcher Gang mechanisch eingelegt ist. Eine Möglichkeit wäre, beim Einschalten einfach mal 10 Gänge runter zu schalten, dann bist du garantiert im 1. Was ist dann aber mitten im Rennen, bei einer Störung, welche einen Kurzen Stromausfall erzeugt und somit einen Reset auslöst? Bei Tempo 150 machst du dann schnell den Abstieg über den Lenker, was zudem ungesund sein soll!
Also wäre es einfacher noch den aktuell eingelegten Gang messtechnisch zu erfassen.
Um Programm-Abstürze zu erkennen, mit welchen durch Störungen immer zu rechnen ist, sollte man noch den Watchdog-Timer aktivieren.

4. Weiteres
Wünschenswert ist sicher noch eine 7-Segmentanzeige für den gerade eingelegten Gang. Vermutlich noch besser wäre eine doppelte Anzeige, einmal für den gewählten und einmal für den gerade mechanisch eingelegten Gang.

Also, zuerst einmal viel zu Bedenken und eine Menge Papierkram, um das ganze Verhalten erst einmal festzulegen.
Dabei spielen die Programmiersprache, verwendete Hardware usw., noch gar keine Rolle.
Ganz wichtig dabei ist es auch noch daran zu denken, dass auch einmal etwas schief gehen kann (Störsignale)! OK, diese Zeit hat man dann auch später im Gipsbett, aber es zerrt sehr an den Nerven, wenn man eine Lösung hat, diese ausprobieren möchte aber ans Bett gefesselt ist.

MfG Peter(TOO)


Aber du hast ein Pflichtenheft für das weitere vorgehen.