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
- - - Aktualisiert - - -
Hier mal eine Adresse
http://me-shifter.com/?page_id=21
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
- - - Aktualisiert - - -
Hier mal eine Adresse
http://me-shifter.com/?page_id=21
Für den Code braucht es erst mal die Startbedingungen.
Beim Einschalten sollte wohl sinnvollerweise der erste Gang eingelegt sein.
Also muß sichergestellt werden, daß das Steuersignal entsprechend ansteht bevor der Servo mit Strom versorgt wird.
Dementsprechend muß auch die Merker Variable für den Gang vorbelegt werden.
Dann kommt die Abfrage der Tasten, Idealerweise per Interrupt und ISR.
Damit wird die Merker Variable inkrementiert/dekrementiert.
Entsprechend dem Wert derselben dann die Position angefahren.
Spätestens wenn man jetzt einfach ausschaltet ohne zurück in den ersten Gang zu schalten, kommt man mit einem RC-Servo beim nächsten Einschalten, Probleme.
Du wirst also mehr als 2 Taster benötigen, denn neben den Tasten zum Steuern mußt Du auch noch wissen wo Das Servohorn steht (1. Gang, zwichen 1. und 2., 2. Gang, zwichen 2. und 3., 3. Gang).
Im ungünstigsten Fall gibt es sonst einen Getriebschaden.
Hallo,
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.
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Hallo kleinfranke,
Du brauchst mir keine PN oder Mails zu senden.
Das hier ist ein Forum,
https://de.wikipedia.org/wiki/Forum_(Kultur)
hier kann man seine Fragen posten.
Einen Schaltplan hast du immer noch nicht gepostet, ich hatte Dir ein PDF Verlinkt und noch die Seitenzahlen angegeben, wo Du das zur Not einfach abzeichnen kannst.
Dann hast Du (nicht nur von mir) diverse Fragen erhalten was unter welchen Bedingungen passieren soll.
und ich hatte Dich aufgefordert Deinen Programmablauf einfach mal als Text zu beschreiben. Das dann in konkreten Code zu fassen ist zwar auch keine Kleinigkeit, aber wir hier im Forum sehen dann das Du Dich damit befasst und wo Deine Schwächen sind.
Privat biete ich hier Hilfe zu Selbsthilfe.
Beruflich biete ich Entwichklungs- und Ingenieurleistungen an.
Da sollte dann von Dir aber eine ordentliche Angebotsanfrage mit Pflichten-/Lastenheft kommen, dann kann ich das meinem Vertrieb geben und du bekämst ein konkretes, bepreistes Angebot von meiner Firma.
Ich habe täglich mit Kunden zu tun die den Ferrari zum Preis vom Fiat Panda haben wollen.
Und auch hier kommen immer wieder welche die Nichts tun wollen und gerne ein Projekt für lau entwickelt bekommen möchten.
Von daher, hier noch mal der Post von oberallgeier, denn ich halte es genauso.
Nur mal zur Info - Ein paar Grundlagen.
So ein Servo wird mit Impulsen auf der Impulsleitung angesteuert.
Die Impulslänge liegt dabei zwischen 1 und 2ms. Alle 20ms wird so ein Impuls an das Servo ausgegeben.
Ich mach das in "C" mit einem Timer der mir den Impuls und die Pause über Comparematch Interrupts generiert.
Arduino hab ich nicht, dort könnte es eine fertige Library geben.
Die gewünschte Impulslänge musst du so lange ausgeben, bis das Servo die Lage auch erreichen kann ( wurde weiter vorher schon angesprochen ).
Das mit dem Entprellen der Tasten wurde auch schon angesprochen.
Ich mach das meistens so, das ich bei einer Änderung nach 10...100ms "nachsehe" ob die Taste noch gedrückt ist.
Ist das der Fall, wird dies als Tastendruck akzeptiert. Das gleiche passiert auch beim Loslassen der Taste.
Hat das Getriebe nich auch nen Schalter der bei Neutral geschlossen ist ? Den könnte man abfragen.
Die relativ große Zeitspanne der Wartezeit ist von der Qualität der Taster abhängig und deshalb u.U. experimentell zu ermitteln.
Ein weiteres Problem hast Du anscheinend noch nicht auf dem Schirm und zwar das Kuppeln.
Ich denke mal, das bei jedem Schaltvorgang die Kupplung betätigt werden muß.
Ist das Gefährt schon mal in Fahrt kann man die Kupplung wohl reinknallen.
Beim Anfahren wirst Du dabei wohl den Motor abwürgen.
Also wirst du drehzahlabhängig eine Einkuppelkurve anlegen müssen um erstmal vom Fleck zu kommen.
Ich seh das so, das Du einen Drehzahlsensor, einen Geschwindigkeitssensor, 2 Taster, evtl. 1 bis 2 Anzeigen und 2 bis 3 Servos bedienen musst.
Im Prinzip kein Problem, das Hauptproblem seh ich da in der Entwicklung der " Kennfelder " um möglichst schnell voran zu kommen.
Das dürfte wohl die meiste Zeit verschlingen.
Lesezeichen