Forum: Mikrocontroller und Digitale Elektronik Automatik für RC Schaltgetriebe


von Ralf R. (ciutateivissa)


Angehängte Dateien:

Lesenswert?

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

von Max D. (max_d)


Lesenswert?

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.

von Ralf R. (ciutateivissa)


Lesenswert?

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?

von Max D. (max_d)


Lesenswert?

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.

von Ralf R. (ciutateivissa)


Lesenswert?

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?

von Max D. (max_d)


Lesenswert?

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

von Lothar J. (black-bird)


Lesenswert?

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

von Alex G. (dragongamer)


Lesenswert?

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.

von ÄXl (Gast)


Lesenswert?

würde ich über den Motorstrom messen und danach entscheiden. 
Wahrscheinlich mitm  kleineni µC. Analog wäre in der Tat ne 
Herausforderung...

von Lothar J. (black-bird)


Lesenswert?

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

von Rob (Gast)


Lesenswert?

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?

von Rainer V. (a_zip)


Lesenswert?

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

von ÄXl (Gast)


Lesenswert?

je mehr Strom fließt, runterschalten.
Wenn man merkst: ist Mist, weiter optimieren.

von Ralf R. (ciutateivissa)


Lesenswert?

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.

von Lothar J. (black-bird)



Lesenswert?

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

von Ralf R. (ciutateivissa)


Lesenswert?

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

von Lothar J. (black-bird)


Lesenswert?

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

von Ralf R. (ciutateivissa)


Lesenswert?

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...

von Lothar J. (black-bird)


Lesenswert?

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

von Ralf R. (ciutateivissa)


Lesenswert?

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.

von Max D. (max_d)


Lesenswert?

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.

von Alex G. (dragongamer)


Lesenswert?

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
von derElf (Gast)


Lesenswert?

> 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

von Zuzel (Gast)


Lesenswert?

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

von Ralf R. (ciutateivissa)


Lesenswert?

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?

von Lothar J. (black-bird)


Lesenswert?

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

von Alex G. (dragongamer)


Lesenswert?

So schwer wäre das mit dem Strom nicht, weil es fertige Module gibt: 
https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout/wiring

von TomH (Gast)


Lesenswert?

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.

von Lothar J. (black-bird)


Lesenswert?

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

von S. K. (hauspapa)


Lesenswert?

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

von TomH (Gast)


Lesenswert?

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...

von ÄXl (Gast)


Lesenswert?

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!!!

von ÄXl (Gast)


Lesenswert?

kann man denn mal infos zum Getriebe bekommen? gibt es dann auch ne 
Kupplung?

von TomH (Gast)


Lesenswert?

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.

von Lothar J. (black-bird)


Lesenswert?

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

von Ralf R. (ciutateivissa)


Angehängte Dateien:

Lesenswert?

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.

von TomH (Gast)


Lesenswert?

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.

von Max D. (max_d)


Lesenswert?

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).

von Rainer V. (a_zip)


Lesenswert?

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

von TomH (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.