Hallo, ich habe ein Problem im Bereich RC Modellbau, es geht um ferngesteuerte LKW Modelle mit 2- oder 3 Ganggetriebe. Ich habe in einer Zeitschrift ein Schaltung (samt Beschreibung) gefunden, die es ermöglichen soll ein Automatikgetriebe zu simulieren. Will heißen, wenn die Drehzahl des Antriebsmotors (12 Volt) einen gewissen Wert übersteigt, wird ein Servo betätigt, dass den nächsten Gang einlegt. Fällt die Drehzahl unter einen gewissen Wert, wird das Servo in die andere Richtung betätigt, also heruntergeschalten. Ich habe die Schaltung nachgebaut, aber sie funktioniert nicht so, wie sie soll. Die Messpunkte habe ich mir mit dem Oszilloskop angesehen und eingestellt, trotzdem kriege ich das Servo nicht zum schalten. Ich bin jetzt aber auch schon etwas aus der Übung und baue seit längerem keine eigenen Schaltungen mehr. Nun habe ich mir überlegt, dass das Thema eigentlich auch mit einem Microcontroller zu lösen sein müsste - nur da kenne ich mich gar nicht aus. Kann mir vielleicht jemand auf die analog aufgebaute Schaltung Input geben oder mir den Weg über eine Microcontroller-gesteuerte Schaltung zeigen? Ließe sich das evtl. auch mit einem Arduino lösen? Vielen Dank für Eure Hilfe! VG, Ralf
Das ist mit einem uC sicher relativ leicht umzusetzen. In der Praxis dürfte der Effekt aber relativ enttäuschend sein. Alles was die Schaltung macht ist ja beim Gasgeben hochzuschalten. Wenn du schon einen uC bemühen willst, dann würde ich ein "echtes" Automatikgetriebe simulieren und anhand der Drehzahl hochschalten. Diese müsste man dann zwar irgendwo abnehmen, aber da sollte sich ja ein Punkt finden.
Das Hochschalten funktioniert an sich mit einem Schwellwert, d.h. es wird nicht sofort beim Gasgeben hochgeschalten, sondern erst, wenn eine gewisse Drehzahl erreicht wird. Die analoge Schaltung erkennt es dadurch, dass das Signal vom Fahrtregler des Motors ausgewertet wird. Erst wenn dieser Wert eine gewisse Größe erreicht, soll das Schaltservo den nächsten Gang einlegen. Genau so beim Herunterschalten, das erfolgt auch nicht sofort beim Gas wegnehmen, sondern erst unterhalb einer gewissen Gasstellung (= Drehzahl). Wenn man das mit uC realisiert, könnte man wahrscheinlich auch die Drehzahl während des Schaltvorgangs absenken, oder?
Die schaltung wertet die Signalen ZUM regler aus. Wenn der User länger stark gas gibt schaltet sie hoch. Für die Motordrehzahl interessiert sie sich garnicht.
Das mag schon so sein - aber im Modell ist die Stellung des Gebers gleichbedeutend mit einem bestimmten Signal. Und dieses Signal entspricht genau einer bestimmten Drehzahl. Abgesehen davon, gibt´s schon Vorschläge?
Erzeugt dieser Geber evtl garkeine "servokonforme" Signale? Wenn der Geber wirklich Geschwindigkeit misst, dann ist das vlt eher mit x Pulsen pro Umdrehung gelöst. Allgemeiner Ansatz mit uC: Eingangspuls ausmessen (mit timer-capture) -> intern entscheiden welcher Gang passt -> Signal an den schaltservo (mit timer compare) erzeugen
Da sind nur 2 Monoflops in der Schaltug, die bei Unter- oder Überschreitung einer Pulsdauer (ist identisch mit der Knüppelstellung am Sender) hoch- oder runterschalten (abhängig von der vorherigen Schaltstellung). Die Drehzahl des Motors ist aber nicht nur vom eingestellten Spannungswert (nichts anderes macht der Fahrt"regler" mit der Vorgabe der Pulsbreite), sondern auch von der Belastung abhängig. Der Motorstrom ist ein Maß für die Belastung (das Drehmoment). Der Strom oder das Drehmoment werden aber hier nicht gemessen. Es wird einfach angenommen, dass der Motor kräftig genug für das Modell ist und es nur zu kleinen Drehzahländerungen kommt, die ignoriert werden können. Geht ja, unter den angenommenen Randbedingungen. Blackbird
Richtig. Wenn somit das Fahrzeug gegen ein Hinderniss fährt oder einer schwere Last zieht und die Räder nicht durchdrehen, wird das Sysyt3m trotzdem in den höchsten Gang schalten wenn der Nutzer Vollgas gibt. Das könnte man mit einem uC in der Tat deutlich besser lösen. Man braucht nur einen richtigen Drehgeber. Am einfachsten lässt sich sowas mit einem Magneten und einem Hallsensor machen. Einen Servo mittels Arduino zu steuern, ist recht trivial.
würde ich über den Motorstrom messen und danach entscheiden. Wahrscheinlich mitm kleineni µC. Analog wäre in der Tat ne Herausforderung...
Drehzahl und Motorstrom sind proportional zueinander für EINE Spannung (damit ist auch das Drehmoment und die Leistung bekannt). Für einen bekannten (vermessenen) Motor reicht also die Kenntnis des Motorstromes oder die der Drehzahl, die Spannung wird vom Fahrtsteller vorgegeben. Jetzt kann man für mehrere Spannungen einzeln die Grenzen des optimalen Bereiches des Motorstromes festlegen und mit diesem "Kennlienenfeld" die Schaltpunkte mit Hyserese ermitteln. Ist eine schöne Aufgabe für einen kleinen Controller. Blackbird
Lothar J. schrieb: > Drehzahl und Motorstrom sind proportional zueinander für EINE > Spannung > (damit ist auch das Drehmoment und die Leistung bekannt). Für einen > bekannten (vermessenen) Motor reicht also die Kenntnis des Motorstromes > oder die der Drehzahl, die Spannung wird vom Fahrtsteller vorgegeben. > Jetzt kann man für mehrere Spannungen einzeln die Grenzen des optimalen > Bereiches des Motorstromes festlegen und mit diesem "Kennlienenfeld" die > Schaltpunkte mit Hyserese ermitteln. > Ist eine schöne Aufgabe für einen kleinen Controller. > > Blackbird Verstehe ich nicht ganz, würdest Du also bei hohem Motorstrom (Motor blockiert oder zugmaschine zieht an) hoch- oder herunterschalten? Ich würde das alles alleine über die Drehzahl regulieren. Zudem müsste man die Motorleistung auch beim Wechsel in den nächsten Gang reduzieren, oder? Sonst gibt es doch bestimmt direkt Spähne im Getriebe wenn das hoch drehende Motorritzel auf das langsam drehende Antriebsritzel trifft (quasi wie damals mit dem Zwischengas). Oder braucht man sich bei dem Getriebe keine Gedanken mehr zu machen?
Rob schrieb: > Ich würde das alles alleine über die Drehzahl regulieren. Zudem müsste > man die Motorleistung auch beim Wechsel in den nächsten Gang reduzieren, > oder? Sonst gibt es doch bestimmt direkt Spähne im Getriebe wenn das > hoch drehende Motorritzel auf das langsam drehende Antriebsritzel trifft > (quasi wie damals mit dem Zwischengas). Oder braucht man sich bei dem > Getriebe keine Gedanken mehr zu machen? Hallo, ich denke man braucht auch noch die Info, in welchem Gang man gerade ist, bzw. die Drehzahl des Motors und die Drehzahl der Räder. Ich denke, dass wird man sich analog nicht mehr antun wollen! Vielleicht bekommt man ja auch noch ein paar Informationen über das Getriebe... Gruß Rainer
je mehr Strom fließt, runterschalten. Wenn man merkst: ist Mist, weiter optimieren.
Die Drehzahl des Motors zu ermitteln sollte in einem Modell im Maßstab 1:14 kein Problem darstellen. Das ließe sich durchaus über einen Sensor an der Motorwelle oder an der Eingangswelle im Getriebe schon lösen. Die Belastung des Motors (Stromaufnahme) sollte ebenso leicht zu messen sein. Interessant finde ich den Gedanken, dass ein uC den Schaltvorgang so steuert, dass der Motor während des Schaltvorgangs weniger Drehzahl hat. Da müsste man tatsächlich das Signal zum Fahrtregler, dass ja in der analogen Schaltung einfach durchgeschliffen wird, auch entsprechend verändern. Im Prinzip muss also der Fahrtregler Impulse bekommen, die eine deutlich schmälere Impulsbreite haben.
Hallo Rob, Bei steigendem Motorstrom wird die nächst höhere Übersetzung geschaltet. Damit steigt die Drehzahl wieder und der Motorstrom sinkt. Die Werte für den Motorstrom, bei denen geschaltet werden soll, entnimmt man den Drehzahl-Strom-Leistungs-Wirkungsgrad-Kurven (*) des Motors. Diese Werte sind aber für jede Motorspannung anders. Deshalb schrieb ich auch "Kennlinienenfeld". (*) Bei den Modellfliegern findet man solche Motor-Diagramme, in denen auf der x-Achse der Strom und auf der Y-Achse neben der Leistung auch noch die Drehzahl und der Wirkungsgrad eingezeichnet sind. Blackbird
Hallo Blackbird, diese Motor-Kennlinien sind für die Motoren in RC Trucks praktisch nicht zu bekommen. Daher mein Vorschlag, die Daten wie Stromaufnahme direkt am Motor abzunehmen. VG, Ralf
Jeden E-Motor kann man doch "vermessen" und die notwendigen Daten hinreichend genau ermitteln: Innenwiderstand, Leerlaufdrehzahl und ein paar Daten (Strom, Spannung, Drehzahl) unter mehreren verschiedenen Belastungen. Der Rest ist rechnen und Kurvenzeichnen (in Excel z.B.). Blackbird
Das glaube ich ja alles. Allerdings müsste man das für jeden Motor separat machen und ich denke, die Lösung mit den Sensoren wäre wohl einfacher zu realisieren...
Da haben wir uns missverstanden: Sensoren für Strom und/oder Drehzahl und Spannung sind immer notwendig. Die Frage ist doch, wann, bei welchen Werten, die von den Sensoren kommen, wird geschaltet. Pi mal Daumen? Zwei feste Stromwere für alle Motorspannungen? Bei kleinen Motorspannungen ist der Wirkungsgrad unterirdisch und der Motor bleibt sogar vorher stehen - bei höheren Motorspannungen verschenkt man Leistung. Deshalb der Blick ins Diagram. Um die Schaltpunkte (-Ströme) zu bestimmen. Blackbird
Ja, das macht Sinn. Jetzt müsste man sich noch überlegen, wie man das alles umsetzt. Die analoge Schaltung war sicher unbefriedigend, aber das konnte ich noch einigermaßen verstehen. Bei uC oder auch Arduino-basiert kann ich nicht wirklich mithalten.
Also ein guter Anfang ist die Raddrehzahl des Fahrzeugs zu messen (mit einem nachgerüsteten Sensor). Damit kannst du die einfachste Variante machen indem du sagst: 0-x km/h -> 1. Gang x-y km/h -> 2. Gang y-z km?h -> 3. Gang Danach kannst du Sachen hinzufügen wie eine Hysterese beim schalten und ein runterschalten beim heftigen gasgeben (kick-down). Wenn dir dann immernoch langweilig ist, dann kann der uC auch zum schalten das Gas wegnehmen oder sogar (über eine angebaute H-Brücke) den Motor selbst steuern und so z.B. auch beim Schalten die Drehzahlen synchronisieren.
Also mit diesem Projekt in die uC Programmierung einzusteigen ist keine gute Idee. Auch mit Arduino ist das erstmal zu hoch! Versuch erst mal eine LED zum Blinken zu bringen (dazu gibt es viele tutorials). Dann finde raus wie du mit einem Hallsensor einen Magneten detektierst (auch dazu gibt es tutorials). Dann kannst du langsam dazu hin gehen und aus widerkehrenden Pulsen des Hall-Sensors, eine Rate/Sekunde zu berechnen. Wenn dann der Magnet auf einem Rad ist, entslricht diese Rate, den Umdrehungen pro Sekunde. Dann mit Servo ansteuerung anfangen...
:
Bearbeitet durch User
> Also mit diesem Projekt in die uC Programmierung einzusteigen ist keine
gute Idee.
Da muss ich dir widersprechen, das Projekt eignet sich hervorragend um
mit Arduino anzufangen.
Schritt 1: Servo ansteuern
Dazu gibt es haufenweise Tutorials und eine fix fertige Bibliothek. Das
sollte von Null weg in ein bis zwei Stunden erledigt sein.
Schritt 2: Drehzahl von Hallsensor einlesen
Dafür gibt es wahrscheinlich keine fertige Lösung, ist allerdings auch
nicht schwer die Anzahl der Impulse in einer Sekunde zu Zählen.
Elektronik Grundwissen scheint ja vorhanden zu sein um den Sensor
anzuschließen.
Die Ausgabe auf die Konsole der Arduino IDE ist auch durch fertige
Libraries abgedeckt.
Schritt 3: Entscheidung
Anhand der vorherigen Drehzahl entscheiden ob Hoch oder Runtergeschalten
werden soll und die Entscheidung über die Konsole ausgeben. Bonuspunkte
wenn ein gleitender Mittelwert zur Filterung sowie eine Hysterese
verwendet wird um unnötige Schaltvorgänge zu reduzieren.
Schritt 4: Kombination
Nun die Entscheidungslogik aus Schritt 3 mit der Erfahrung aus Schritt 1
kombinieren. An diesem Punkt sollte die Arduino version bereits
funktionieren.
Schritt 5: Verbesserung
Wenns funktioniert kann man jetzt noch die ganzen "Komfortfunktionen"
wie Kickdown, usw. einbauen.
LG
derElf
Hallo "Da muss ich dir widersprechen, das Projekt eignet sich hervorragend um mit Arduino anzufangen." Ich würde es eher umgekehrt formulieren: "Das Arduinouniversum, also eben ausdrücklich auch die IDE mit ihren ganzen vorgefertigten Bibliotheken und den Megabytes an Beispielcode im Netz, ist hervorragend geeignet um mit den Projekt anzufangen". Wobei ich aber, selbst wenn ich es so formuliere, sehr starke Zweifel habe ob es sich tatsächlich "hervorragend" als Einsteigerprojekt eignet. Entsprechende Rückfragen und Probleme werden bei so einen Vorgehen und einen doch schon recht anspruchsvollen Projekt garantiert sein, und es werden viele "dumme" (gibt es eigentlich nicht, aber...) Fragen kommen welche dann entsprechend kommentiert werden und dann auch keine wirkliche Hilfe erfolgt (erfolgen kann...). In der ersten Klasse (Grundschule) wird ja auch nicht mit Integralrechnung begonnen (Auch mit schönen Bildchen, netten Kindgerechten Beispielen und vorgekauten Lösungen, hier -etwas ketzerisch gesagt- vergleichbar den "Arduinouniversum", würde das nicht funktionieren) Nein so ein Projekt ist ganz bestimmt kein geeigneter Einstieg in die µC Welt und die Programmierung - selbst wenn man nur Arduino als Gesamtpaket nutzt (Was hier, meiner Meinung durchaus zurecht, meist sehr kritisch angesehen wird, zumindest so wie es leider oft in Büchern und im Netzt "vermittelt" wird). Ein geeignetes Einsteigerprojekt ist das auf jeden Fall nun nicht, es sei den es liegt sehr viel theoretisches Wissen, in der Mathematik, in der Informatik und auch in der E-Technik vor - aber dann würde der TO auch nicht nachfragen und würde eventuell noch einige Stufen höher "einsteigen" (Anfahrkurven, den besten Schaltpunk aus Drehmoment und Drehzahl wählen usw. - also irgendwas was man wohl im E-Technik oder Mechatronik Studium macht). Zuzel
Ich denke, jetzt muss ich mal ein wenig über mich selber schreiben und über meine Einschätzung: - Elektronik Grundkenntnisse sind da, ich kann einfache Schaltungen bauen, auch wenn ich mich schon eine ganze Zeit nicht mehr aktiv damit beschäftigt habe. Meine erste Erfahrungen habe ich mit 14 Jahren gesammelt, heute bin ich 40 Jahre älter ;-) - Der Umgang mit Arduino ist mir auch nicht ganz unbekannt, ich verwende sie hauptsächlich zur Steuerung meiner 3D Drucker. ABER: Dort arbeite ich hauptsächlich mit vorgefertigten Sketches, die ich nur mehr geringfügig anpassen muss. Sensoren einzubinden sollte aber funktionieren. -In der uC Technik habe ich kein wissen, das Thema ist bei mir völlig spurlos vorbeigegangen. Ich denke, das könnte ich selber nicht bewältigen. Hilft das weiter?
Das hilft schon sehr viel weiter. Trotzdem eine kleine Warnung: der Teufel steckt, wie immer, im Detail. Das heißt, so schnell wirst Du zu keiner funktionierenden Lösung kommen, weil immer neue Probleme, auch "regelungstechnische" auftreten werden. Mit Arduino ein Servosignal einlesen und auswerten, vielleicht auch auf einem 2x16 LCD anzeigen, ein Servosignal aus einer Potenziometerstellung erzeugen - das sind so kleine Dinge, die Du schon machen kannst. Sensoren für die Drehzahl, egal ob Hallsensor, Lichtschranke oder Reedkontakt, das Einlesen in den Controller und die Anzeige ist auch nicht verkehrt. Und bitte nicht nur eine Drehzahl, die vom Motor oder die nach dem Vorgetriebe und die vom Abtrieb nach dem Schaltgetriebe oder die Raddrehzahl gleichzeitig. Den Motorstrom messen erfordert schon etwas mehr Elektronik und die (analogen) Messwerte müssen auch noch gemittelt, "geglättet" (und auch mal angezeigt) werden. Wenn Du diese Dinge mit dem Arduino kannst, ist der "Rest" dann kein Problem mehr, denn jetzt kennst Du Dein Modell und sein Fahrverhalten von einer ganz anderen Seite und kannst Dir die Funktion der Schaltautomatik sehr gut vorstellen. Blackbird
So schwer wäre das mit dem Strom nicht, weil es fertige Module gibt: https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout/wiring
Wow, ein Thread der mich so richtig interessiert, und ist zwei Tage an mir vorbeigegangen... Frei nach dem Motto "es wurde schon alles gesagt, aber noch nicht von jedem" mein Senf. 1. Die ganz oben vorgestellte Schaltung muß uralt sein. Ich kann mich erinnern, einen Artikel in einer Modellbauzeitschrift gesehen zu haben, in der das ganze mit einer C-Control 1 gemacht wurde, also ebenfalls schon uralt, aber bereits mit Microcontroller. 2. Ich finde das Projekt ebenfalls sehr gut für den "Einstieg in" bzw. besser die "Bearbeitung mit" der Arduino-Umgebung. Natürlich muß man bei den Einsteigersachen wie "LED blinken lassen" vorbeikommen, aber das kann ja nicht ernstlich als ein Projekt gelten, mit dem man sich dann zufrieden zurücklehnt und sagt: Jetzt kann ich Arduino. Nein, gleich danach will man was sinnvolleres machen und dann ist das hier genau richtig. 3. Ich habe selbst, mehr oder weniger als erstes Arduino-Projekt, etwas ganz ähnliches gemacht: Die Steuerung für ein Kinderfahrzeug. Die verarbeitet die Signale eines Fernsteuerempfängers, steuert einen Fahrtregler und einen Servo sowie mehrere andere Motor-Endstufen mit Richtung und PWM. Ich kann hier super helfen. Vielleicht nicht mit der super-orthodoxen Programmiermethode, aber es funktioniert. Fazit: Ralf, pack es an, schnapp dir einen Arduino Nano und die IDE, stell hier Deine Fragen oder direkt an mich. PS. Hier ein paar erste Ideen und Hinweise, auch wenn sie vielleicht verwirren. 1. Idee: Motordrehzahl erfassen ist schon gut, aber noch schöner wäre Motordrehzahl UND Getriebe-Ausgangsdrehzahl. Dann könnte der Microcontroller auch noch für eine Synchronisierung sorgen. 2. Hinweis für später: Das Erfassen eines oder mehrerer Servosignale mit pulseIn() und das Ausgeben von Servosignalen mit der Servo-Bibliothek vertragen sich nicht so gut. Ich habe einfach die Hauptschleife mit den Servoimpulsen des Empfängers synchronisiert und die Ausgabe der Servosignale mit händischem Bitbanging realisiert.
Naja, etwas mehr Elektronik oder I2C - den Aufwand muss jeder selber abschätzen. Je nach Wissen und Vorlieben ;) Das ist ja das Schöne am 'programmierenden Elektroniker': er kann die einzelnen Funktion in Hardware gießen oder aber in Software realisieren. Je nach Laune, Gusto, Bauelementeverfügbarkeit, Zeit, Geld oder Wissen ... Blackbird
Ralf R. schrieb: > Ich habe die Schaltung nachgebaut, aber sie funktioniert nicht so, wie > sie soll. Die Messpunkte habe ich mir mit dem Oszilloskop angesehen und > eingestellt, trotzdem kriege ich das Servo nicht zum schalten.... > ...Kann mir vielleicht jemand auf die analog aufgebaute Schaltung Input > geben Mal zurück zum Ursprungsproblem: Da du die Analogschaltung nun schon aufgebaut hast: Was funktioniert daran denn nicht wie beschrieben bzw. nicht so wie du es dir vorstellt? Zeigen die LEDs den gewählten Gang an und nur das Servo macht nichts oder erkennt er die Gänge garnicht? Mit uC neu lösen kann man das ja immernoch. viel Erfolg hauspapa
Jetzt sehe ich erst, der Artikel ist von 2018! Verrückt. Diese Zeitschriften müssen händeringend auf der Suche nach Inhalten sein, mit denen sie die Lücken zwischen den Anzeigen füllen. Da könnte ich ja auch meine Schaltungen mit CD4001 beschreiben, die ich 1998 für meine Trucks gebastelt habe. Dieselben Funktionen, die hier ein paar DIL-ICs auf die Fläche einer Postkarte verteilt erledigen, bekommt ein Arduino Nano auf 18x45mm hin. Mit einem Trägerboard mit ein paar Steckern und Info-LEDs meinetwegen 40x45mm. Natürlich können wir die schon aufgebaute Schaltung noch debuggen, aber das Ziel sollte schon die Microcontroller-Lösung sein. In einem 1:14er Truck ist auch nicht unendlich Platz...
TomH schrieb: > Jetzt sehe ich erst, der Artikel ist von 2018! Verrückt. ups: gut erkannt! ich dachte, das wäre was aus den 80ern. Krass!!!
kann man denn mal infos zum Getriebe bekommen? gibt es dann auch ne Kupplung?
Ich weiß nicht was Ralf konkret für ein Getriebe hat, aber Kupplung wie beim Verbrenner-Kfz gibt es definitiv nicht. Meistens geht aber der Schaltvorgang zumindest über Klauenkupplungen, d.h. es werden nicht die Verzahnungen der Zahnräder ineinandergeschoben oder getrennt, sondern eben so Schiebestücke mit sehr groben Verzahnungen. Das ganze ist recht robust, auch weil bei den Modellen keine großen Massen und Massenträgheiten an den prinzipiell überdimensionierten Getrieben hängen. Man müßte schon mutwillig beim Schaltvorgang Vollgas geben, um den Schaltvorgang unmöglich zu machen oder gar etwas kaputt zu bekommen. Aber wie Ralf schon schreibt, "schöner" und flutschiger wäre es, wenn die Steuerelektronik beim Schalten noch etwas Gas wegnimmt. Das ist auch ein Hauptmanko der sehr schlicht gehaltenen Digitalelektronik ohne Microcontroller: Hochgeschalten wird, wenn am Motor über 2/3 Gas anliegen. Und die 2/3 Gas liegen auch während des kurzen Leerlaufs beim Schaltvorgang an.
Hallo Ralf, Motordaten gehören nun mal zum Motor dazu. Es ist ein Bauelement und dafür gibt es Daten vom Hersteller. Dass die Modellbauverkäufer, besonders die, die Zubehör für Trucks verkaufen, meistens so gut wie alle Daten unterschlagen, empfinde ich persönlich als Frechheit und es dient nur der Abzocke mit Hilfe von Fehlkäufen. Bei www.pollin.de, die Motoren aus überzähligen oder Restbeständen verkaufen, gibt es zu fast jeden Motor ein Produktdatenblatt. Da gibt es z. B. einen Motor JOHNSON HC677LG mit 2 Kugellagern für 10V und ca. 50W Leistung. Also einem "Truck Puller" sehr ähnlich. Und es gibt ein Produktdatenblatt als PDF dazu, in dem nicht nur alle Daten, sondern auch das Motordiagramm, so wie ich es gepostet hatte, enthalten ist. Mit diesen Daten kann man ganz bequem den Antrieb eines Modells berechnen oder auch die Schaltpunkte eines Automatikgetriebes festlegen ohne den Moter vermessen zu müssen. Und das Beste daran: 1,50 € kostet dieser Motor. Neu. Blackbird
Vielen Dank für den ganzen Input und regen Zuspruch! Ich versuche mal zu antworten: - Die Schaltung aus der Zeitschrift ist mit Sicherheit aus den 80ern, wurde halt mal wieder aus der Schublade gezogen und nochmal veröffentlicht. - @ hauspapa: Die alte Schaltung zu debuggen hat wirklich keine Priorität, aber nachdem ich die Bauteile und Platinen für insgesamt 5 Stück habe, würde ich gerne wenigsten eine zu funktionieren bringen. - Um das verhalten der Schaltung hier nochmal zu beschreiben, muss ich den Versuchsaufbau mit dem Empfänger, dem Fahrtregler, dem Motor und dem Servo nochmal aufbauen - das kann ich am Wochenende tun. - Ich denke, ich würde mich eher für die Arduino Steuerung entscheiden, weil ich da zumindest etwas Basiswissen habe. Allerdings werde ich da auch Hilfe brauchen, denn sonst wird die Lösung 2 Jahre brauchen. - Eingangs- und Ausgangsdrehzahl des Getriebes zu messen ist zumindest vom Platzbedarf her möglich. - Ein Bild eines solchen Getriebes habe ich jetzt hochgeladen. - @ Blackbird: Danke für den Tip mit dem Motor, werde mir mal welche bestellen.
Blitzsauberes Bild von einem Tamiya-Getriebe, danke. Das ist auch exakt deins? Um mal ein paar Ideen zum Einbau der Drehzahlsensoren zu wälzen... Am ersten Zahnrad nach dem Motorritzel könnte man schön einen kleinen Magnet integrieren, und den Hallsensor irgendwo unterhalb des Motors auf das Lagerschild / die Aluplatte, an der der Motor angeschraubt ist. Am Getriebeausgang könnte man ein verändertes Gelenkstück anbringen. Zwei Millimeter länger vielleicht und eine dazuintegrierte Scheibe, oder auch einfach nur größerer Durchmesser und auf der gegenüberliegenden Seite von der Madenschraube eine Vertiefung und Magnet da rein. Ein Problemchen, auf das ich jetzt noch keine Antwort weiß, sind die geringen Umdrehungszahlen. Da wird Drehzahlmessung durch Impulsezählen keine Chance haben. Die Wiederholschleife im Microcontroller wird ja wahrscheinlich mit 50Hz laufen. Sprich alle 20ms schauen, was so die Drehzahlen sind. Und in diesen 20ms hat ein mit 3000U/min laufender Motor gerade eine Umdrehung gemacht! Also entweder hochauflösende Drehgeber (teuer, aufwendiger zu montieren) oder nur 1 Puls pro Umdrehung, dafür Zeitmessung zwischen den Pulsen. Für diese Zeitmessung ist die in der Arduino-Sprache mitgelieferte pulseIn() Funktion nicht geeignet. Erstens mißt sie die Zeit eines Pulses und nicht die Zeit zwischen zwei Pulsen, zweitens würde sie viel zu lange dauern. Die Drehzahlen liegen ja deutlich unter 3000U/min. Riecht nach sowas wie Interruptroutine und eigener Timerbenutzung, damit kenne ich mich jetzt auch noch nicht aus.
Die Motordrehzahl muss man nicht direkt messen. Während das Getriebe "eingekuppelt" ist ergibt sie sich (durch die Übersetzung) automatisch aus der Raddrehzahl. Im "ausgekuppelten" Zustand (hier wohl als "zwischen den Gängen" zu interpretieren) ist sie annähernd proportional zur Spannung am Motor (die Trägheit des Ankers kann man erstmal ignorieren). Die loop() von arduino läuft AFAIK (ich bin eher avr-libc fan) so schnell ab wie der user sie programmiert hat. Nach jedem Durchlauf springt die Ausführung einfach sofort (abzüglich der üblichen push+pop Orgien des Compilers?) wieder an den Anfang. Drehzahl kann man leicht mit einem Timer + capture-interrupt messen und dem Hauptprogramm bereitstellen. Wer das weiterentwickeln will macht einen Mittelwert drüber für stabilere Werte. Bei diesem Getriebe würde ich zwei identische Magnete an die beiden Seiten des Kardan-Abtriebs kleben und die gemessene Frequenz einfach halbieren (bzw. direkt die doppelte Frequenz als Schaltpunkte definieren).
Hallo, danke für das Getriebebild. Ist in der Tat ein schönes Teil. Ich würde trotzdem davon absehen, etwas in das Getriebe einzubauen. Die Drehzahl der Räder kann man irgenwo hinter dem Getriebe mit einer Gabellichtschranke und einer gelochten Scheibe o. ä. ermitteln. Es gibt da jede Menge Variationen und Bauvorschläge und man kann alles selbst herstellen. Mit dieser Drehzahl, der Stellung des "Gashebels" und mit dem Motorstrom sollte man das Getriebe ausreichend genau steuern können. Die Feinheiten wie Zwischengas usw. wird man dann sowieso am konkreten Modell austüfteln müssen. In der Arduino-Welt kenne ich mich nicht aus und kann dir da leider keine Tips geben. Viel Spass beim Basteln und viel Erfolg! Gruß Rainer
@Max D. Ja die loop läuft frei und normalerweise viel schneller, je nach dem, was in der loop abzuarbeiten ist. Nach meiner bescheidenen Erfahrung war es aber gut, die Erfassung des hereinkommenden RC-Pulses einfach mit
1 | pulseIn(Inputpin); |
zu machen. Diese Funktion wartet auf den RC-Impuls, und damit ist die loop automatisch auf die 20ms Wiederholrate des RC-Impulses synchronisiert. Der RC-Impuls dauert ja nur ca. max. 2ms, danach hat man fast 18ms Zeit für alles mögliche. Z.B. einen RC-Impuls mit der schlichten Sequenz
1 | digitalWrite(Servopin, HIGH); |
2 | delayMicroseconds(Pulslaenge - 5); |
3 | digitalWrite(Servopin, LOW); |
auszugeben.
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.