PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bräuchte Hilfe! Servo über 2 Taster 3 Positionen anfahren lassen. Mit Arduino



kleinfranke
29.10.2016, 19:03
hey Leute

ich bräuchte Hilfe :confused: bin Anfänger mit Arduino.

ich würde gerne ein Servo über 2 Taster steuern

1ter Taster fährt von 90 grad auf 1 grad und wieder auf 90 grad

2ter Taster fährt von 90 grad auf 180 grad und wieder auf 90 grad

leider weis ich kein Schaltplan und auch nicht welchen Code ich eingeben muss =)

würde mich über eine Antwort freuen

oberallgeier
30.10.2016, 09:00
Willkommen im Forum.

.. ich bräuchte Hilfe .. würde mich über eine Antwort freuenDas klingt danach, dass man das Projekt für Dich erledigen soll. Irgendwo in den Beiträgen von radbruch steht dazu etwas und wird auch von PICture in dessen Signatur zitiert: Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch)

Mehr bräuchte man nicht dazu zu schreiben. Ich setze eins drauf und empfehle Dir mal mit den ersten Schritten am Arduino anzufangen - darüber hättest Du bei ein wenig eigener Motivation selbst stolpern können
Erklärung was der arduino ist (http://rn-wissen.de/wiki/index.php?title=Arduino)
Erste Schritte mit demselben (http://wiki.ardumower.de/index.php?title=Arduino_erste_Schritte)
Wenn Du dann die ersten grundlegenden Schritte selbst erledigt hast und den arduino zu einer minimalen Funktion gebracht hast - z.B. ne Leuchtdiode blinken lassen - dann wird Dir auf entsprechende Fragen sicher weitergeholfen. Aber selbst das müsste nicht sein, weil hier, im RNWissen, die Ansteuerung von Servos ja ziemlich gut erklärt ist.

Übrigens - klick mal =>hier<= (http://lmgtfy.com/?iie=1&q=roboternetz+arduino+erste+Schritte)

i_make_it
30.10.2016, 10:52
bin Anfänger mit Arduino.
Die Aussage ist ja eine andere wie "ich möchte mit Arduino anfangen".
Also hast Du demnach ja schon angefangen.

Welches Board hast Du denn?



ich würde gerne ein Servo über 2 Taster steuern


Jetzt stell ich mich mal absichtlich dumm.
Was meinst Du mit Servo?
https://de.wikipedia.org/wiki/Servo
Einen Modellbau RC-Servo oder einen Servomotor?
https://de.wikipedia.org/wiki/Servomotor

"über 2 Taster Steuern"
Schau doch mal hier:
http://www.marc-schaffer.ch/data/Arduino101.pdf
Auf Seite 25 und 26, da findest Du die Arten auf die man Schalter/Taster an Arduinos anschließen kannst.
Und auf Seite 45/46 wie man ein RC-Servo anschließt.
Damit sollte es Dir möglich sein einen Schaltplan zu zeichnen.

Wenn Du das geschafft hast, kann man sich den mal ansehen.
In der Zwichenzeit könntest Du auch mal zusammenschreiben, wie der Programmablauf so aussehen soll.
Diese Beschreibung in Code umzusetzen ist dann der letzte Schritt.

kleinfranke
30.10.2016, 15:37
natürlich hab ich mich damit schon etwas beschäftigt
habe auch schon mal was gezeichnet

beim code versteh ich leider nur Bahnhof :(

es ist ein rc servo ein großes
und habe ein arduino mega 2560 R3

i_make_it
30.10.2016, 17:44
Was ich sehe ist ein Verdrahtungsplan, kein Schaltplan.
Was nicht zu erkennen ist, sind die Taster öffner oder Schließer?
Sind die Taster High oder Low schaltend?

Da davon der Stromverbrauch und auch der Code für die Tasterauswertung abhängt, fehlt da also die entscheidente Information.
Ich verweise nochmal auf Seite 25 und 26 des von mir verlinkten pdf.

Die Pins 7,6 und 5 dürften OK sein.

Zum Code:



1ter Taster fährt von 90 grad auf 1 grad und wieder auf 90 grad




2ter Taster fährt von 90 grad auf 180 grad und wieder auf 90 grad


Frage: was soll passieren wenn der RC-Servo auf 1 (0) Grad steht und man drückt Taster 2?
Frage: was soll passieren wenn eine Taste gedrückt wird wärend grade die letzte Bewegung ausgeführt wird?

Ansonsten überlege mal, Ein Taster ist kein Schalter, speichert als selbst keinen Zustand.
Wenn der selbe Taster also einmal das Anfahren von Position 90° und einmal von 180° auslösen soll und selbst nicht merken kann welche Auswahl mit dem letzten Tastendruck getroffen wurde und auch nicht welche der Stellungen im Moment anliegt, wie würdest Du das machen?

kleinfranke
30.10.2016, 18:13
puhhh also

ich würde gerne ein taster nehmen der 2 anschlüsse hat also beim drücken kreis schliesen
das was ich im bild habe hab ich nur mal so genommen was ich so in büchern gesehen habe

das rc servo soll für eine Motorrad Schaltung benutzt werden z.b 1 taster gang runterschalten Position 90 auf 0 grad wenn taster 2 gedrückt wird soll ein gang hochgeschaltet werden 90 auf 180 grad

ich bin etwas überfragt
sehr lieb das sie helfen

i_make_it
30.10.2016, 19:20
Dann würde ich die Taster ähnlich wie bei einer Tiptronik auswerten.
Ein Taster für Plus und einer für Minus.
Also Taster 1 schaltet nur hoch und Taster 2 nur runter.
Kennt man ja auch von der Fernbedienung für den Fernseher bei Programm und Lautstärke.

Stichworte wären: Merker Variable, Inkrementieren/Dekrementieren
https://de.wikipedia.org/wiki/Inkrement_und_Dekrement.

Von der Umsetzung her, glaube ich allerdings nicht das ein RC-Servo für eine Motorad Schaltung geeigent ist.
Von der rechtlichen Seite her sollte Dir klar sein, das Du so eine Änderung zugelassen bekommen mußt falls Du am öffentlichen Straßenverkehr teilnehmen willst.
Sonst erlischt die Zulassung. Spätestens bei einem Unfall wird garantiert das Argument kommen das Du durch diese Veränderung nicht rechtzeitig Schalten konntest.
Und die Bauartbedingte Zulassung wie sie z.B. eine Firma für die Umrüstung von KFZ für Behinderte durchführen lässt, dürfte alleine wegen den Kosten nicht möglich sein.

kleinfranke
30.10.2016, 20:08
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

i_make_it
30.10.2016, 21:35
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.

kleinfranke
30.10.2016, 22:33
Hätten Sie mal zeit es telefonisch zu besprechen ?

- - - Aktualisiert - - -

So hätte ich es gedacht

Peter(TOO)
31.10.2016, 00:34
Hallo,

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.

i_make_it
02.11.2016, 11:27
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.


Willkommen im Forum.
Das klingt danach, dass man das Projekt für Dich erledigen soll. Irgendwo in den Beiträgen von radbruch steht dazu etwas und wird auch von PICture in dessen Signatur zitiert: Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch)

Mehr bräuchte man nicht dazu zu schreiben. Ich setze eins drauf und empfehle Dir mal mit den ersten Schritten am Arduino anzufangen - darüber hättest Du bei ein wenig eigener Motivation selbst stolpern können
Erklärung was der arduino ist
Erste Schritte mit demselben
Wenn Du dann die ersten grundlegenden Schritte selbst erledigt hast und den arduino zu einer minimalen Funktion gebracht hast - z.B. ne Leuchtdiode blinken lassen - dann wird Dir auf entsprechende Fragen sicher weitergeholfen. Aber selbst das müsste nicht sein, weil hier, im RNWissen, die Ansteuerung von Servos ja ziemlich gut erklärt ist.

Übrigens - klick mal =>hier<=

wkrug
04.11.2016, 20:26
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.