RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#26 von Knuffel ( gelöscht ) , 07.10.2014 11:11

Hi,
also aktuell bin ich etwas überfordert mit allem. Ich hoffe mal, dass der UNO heute Nachmittag ankommt und dann werde ich mal etwas herumexperimentieren mit den Servos.

So sieht mein Sketch für die vier Servo jetzt aus:



#include <Servo.h>

int Weiche1Pin = 1; //Ausgangsbelegung
int Weiche1TasterAPin = 2;
int Weiche1TasterBPin = 3;
int Weiche1Stellung = 0;
Servo Weiche1;

int Weiche2Pin = 4;
int Weiche2TasterAPin = 5;
int Weiche2TasterBPin = 6;
int Weiche2Stellung = 0;
Servo Weiche2;

int Weiche3Pin = 7;
int Weiche3TasterAPin = 8;
int Weiche3TasterBPin = 9;
int Weiche3Stellung = 0;
Servo Weiche3;

int Weiche4Pin = 10;
int Weiche4TasterAPin = 11;
int Weiche4TasterBPin = 12;
int Weiche4Stellung = 0;
Servo Weiche4;

void setup()
{
pinMode(Weiche1TasterAPin , INPUT_PULLUP); //Taster als grundsätzlich high definieren
pinMode(Weiche1TasterBPin , INPUT_PULLUP);
Weiche1.attach(Weiche1Pin );

pinMode(Weiche2TasterAPin , INPUT_PULLUP);
pinMode(Weiche2TasterBPin , INPUT_PULLUP);
Weiche2.attach(Weiche2Pin );

pinMode(Weiche3TasterAPin , INPUT_PULLUP);
pinMode(Weiche3TasterBPin , INPUT_PULLUP);
Weiche3.attach(Weiche3Pin );

pinMode(Weiche4TasterAPin , INPUT_PULLUP);
pinMode(Weiche4TAsterBPin , INPUT_PULLUP)
Weiche4.attach(Weiche4Pin );
}

void loop()
{
int tasterStatus;

tasterStatus = digitalRead(Weiche1TasterAPin); //Taster für Weiche 1 abrufen

if (tasterStatus == 0) // durch die internen Pullups ist der Eingang standardmäßig High und wird durch drücken Low
{
Weiche1Stellung = 0; //Servoposition
}

tasterStatus = digitalRead(Weiche1TasterBPin);

if (tasterStatus == 0)
{
Weiche1Stellung = 180; //Servoposition
}

Weiche1.write(Weiche1Stellung );

tasterStatus = digitalRead(Weiche2TasterAPin); //Taster für Weiche 2 abrufen

if (tasterStatus == 0)
{
Weiche2Stellung = 0; //Servoposition
}

tasterStatus = digitalRead(Weiche2TasterBPin);

if (tasterStatus == 0)
{
Weiche2Stellung = 180; //Servoposition
}

Weiche2.write(Weiche2Stellung );

tasterStatus = digitalRead(Weiche3TasterAPin); //Taster für Weiche 3 abrufen

if (tasterStatus == 0)
{
Weiche3Stellung = 0; //Servoposition
}

tasterStatus = digitalRead(Weiche3TasterBPin);

if (tasterStatus == 0)
{
Weiche3Stellung = 180; //Servoposition
}

Weiche3.write(Weiche3Stellung );

tasterStatus = digitalRead(Weiche4TasterAPin); //Taster für Weiche 4 abrufen

if (tasterStatus == 0)
{
Weiche4Stellung = 0; //Servoposition
}

tasterStatus = digitalRead(Weiche4TasterBPin);

if (tasterStatus == 0)
{
Weiche4Stellung = 180; //Servoposition
}

Weiche4.write(Weiche4Stellung );

}

Tut mir leid, euch das ganze korrigieren zuzumuten. Kennt jemand eine C++ Einführung in diese Richtung oder sollte ich da eher mit was ganz allgemeinem anfangen. Ich meine auch, ich hätte mich damit schon mal etwas beschäftigt, denn so ein bisschen bekannt kommt es mir vor.

mir ist aber aufgefallen, dass ich in dem Sketch jetzt keine Zeile für die Dauer des Drehens habe. KAnn ich versuchen die da irgendwo reinzubasteln oder laufe ich Gefahr, mir den Uno oder den Servo zu zerschießen?
Wenn ich jetzt möchte, dass die Servos nach ausgeführter Bewegung kein Signal mehr bekommen, damit sie nicht brummen, hätte ich unter "Weiche4.write(Weiche4Stellung );" ein "Switch off Signal" oder so ähnlich geschrieben. KAnn das hinhauen?
DAnke für die ganze Hilfe,
Knuffel


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#27 von Schachtelbahner , 07.10.2014 13:30

Hallo.

Damit auskennen tue ich mich nicht habe aber gesehen, hier fehlt die Zeit zum Umlauf der Zungen, der Geschwindigkeit. Man kann die doch langsam oder schnell laufen lassen, oder sehe ich das falsch.


Grüße von Kurt
dem Schachtelbahner
aus dem Nationalpark Nahe Hunsrück
bleibt Corona negativ

Nicht vom Leben träumen, sondern Träume erleben
47 Videos auf meinem Kanal
https://www.youtube.com/results?search_q...telbahner&sm=12


 
Schachtelbahner
CityNightLine (CNL)
Beiträge: 1.834
Registriert am: 06.04.2012
Spurweite H0
Steuerung Selektrix und DCC
Stromart DC, Digital


RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#28 von Bodo , 07.10.2014 15:09

Hallo,

Zitat von Knuffel
also aktuell bin ich etwas überfordert mit allem. Ich hoffe mal, dass der UNO heute Nachmittag ankommt und dann werde ich mal etwas herumexperimentieren mit den Servos. ....


... und dann nimmst Du am besten erst mal die Beispielprogramme (Sweep/Knob), änderst da Werte und versuchst rauszubekommen, wie das ganze eigentlich funktioniert ...

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.476
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#29 von Bodo , 07.10.2014 15:16

Hallo,

Zitat von spielbahn

Zitat von Bodo
..... ich habe z.B. auf meinem "Mini-Stellpult" 10 Taster - der erste legt die 5V über 1 kOhm an A0, der zweite 2 kOhm, der dritte 3 kOhm, usw.. Über 10 KOhm ist A0 gegen GND geschaltet. Damit ergeben sich für Tester 1 ein gemessener Eingabewert von 931, für Taster 2 ein Eingabewert von 854, usw. ... Zwischen Taster 9 (513) und 10 (489) liegen allerdings nur noch ein Intervall von 24 - das ist kleiner als die 5% Toleranz der Widerstände.....


Eine lineare Abstufung der Widerstände ist nicht sinnvoll.



jetzt frage ich mich natürlich, warum Du sinngemäß genau das beim Zitieren weggelassen hast, um es noch mal zu ergänzen ? ... OK, für die 0,5 V die Widerstände auszurechnen, ist natürlich nicht verkehrt - aber dann hast Du es wieder für genau 10 Taster, und da es die Werte der Rechenlösung nicht gibt, kommen dann doch wieder andere Zahlen raus.
Ich hab´ schon mal versucht, das mit Potis zu realisieren, um "glatte" Werte rauszubekommen. Klappt aber trotzdem nicht auf den Punkt genau. Die Abfrage auf ein Intervall ist also trotzdem nötig. Und da erscheint mir das "bauen nach Gefühl und messen" praktischer als "rechnen, bauen und dann doch wieder messen" (wobei ich grundsätzlich durchaus ein Fan von "vorher rechnen" bin) ... .

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.476
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#30 von spielbahn ( gelöscht ) , 07.10.2014 16:43

Zitat von Bodo
Hallo,

Zitat von spielbahn

Zitat von Bodo
..... ich habe z.B. auf meinem "Mini-Stellpult" 10 Taster - der erste legt die 5V über 1 kOhm an A0, der zweite 2 kOhm, der dritte 3 kOhm, usw.. Über 10 KOhm ist A0 gegen GND geschaltet. Damit ergeben sich für Tester 1 ein gemessener Eingabewert von 931, für Taster 2 ein Eingabewert von 854, usw. ... Zwischen Taster 9 (513) und 10 (489) liegen allerdings nur noch ein Intervall von 24 - das ist kleiner als die 5% Toleranz der Widerstände.....


Eine lineare Abstufung der Widerstände ist nicht sinnvoll.



jetzt frage ich mich natürlich, warum Du sinngemäß genau das beim Zitieren weggelassen hast, um es noch mal zu ergänzen ? ... OK, für die 0,5 V die Widerstände auszurechnen, ist natürlich nicht verkehrt - aber dann hast Du es wieder für genau 10 Taster, und da es die Werte der Rechenlösung nicht gibt, kommen dann doch wieder andere Zahlen raus.
Ich hab´ schon mal versucht, das mit Potis zu realisieren, um "glatte" Werte rauszubekommen. Klappt aber trotzdem nicht auf den Punkt genau. Die Abfrage auf ein Intervall ist also trotzdem nötig. Und da erscheint mir das "bauen nach Gefühl und messen" praktischer als "rechnen, bauen und dann doch wieder messen" (wobei ich grundsätzlich durchaus ein Fan von "vorher rechnen" bin) ... .

Viele Grüße, Bodo



Verstehe den Einwand nicht..... (Dein zweiter Vorschlag, alle Widerstände 3-mal so groß zu wählen, löst das Problem auch nicht.)
Du hast selbst geschrieben, dass bei Deinem Vorgehen mit linearer Widerstandsabstufung Du in den Bereich der Toleranz der Widerstände gerätst - deshalb mein Vorschlag, nicht die Widerstände der Widerstandsleiter linear zu wählen sondern die Spannungsschritte. Klar erhältst Du rechnerisch Werte außerhalb der Normreihe - da nimmst Du dann halt den nächstliegenden. Und die Abfrage machst Du natürlich wie bisher auf ein Intervall und nicht "auf den Punkt". Du hast aber den Vorteil, dass die Intervalle in etwa gleich groß sind und groß genug um Toleranzen durch Temperatur etc. sicher aufzufangen.
Rechne einfach mal alle 10 Widerstände aus - ist ja nicht die Welt - und Du wirst den Unterschied zu Deiner linearen Widerstandswahl sehen.


spielbahn

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#31 von spielbahn ( gelöscht ) , 07.10.2014 16:51

@Tristan: Dein Sketch wird wahrscheinlich funktionieren, wobei die Servos jeweils ihre Position mit maximaler Geschwindigkeit anfahren. Wenn Du die Geschwindigkeit abändern willst, dann darfst Du bei Weichex.write(position) nicht sofort den Endwert eingeben, sondern musst nach und nach den Wert für position verändern.
Wenn ein Servo nicht mehr angesteuert werden soll, kannst Du es mit Weichex.detach() "abschalten".
Aber Bodo hat recht: mache Dich mal mit der Servo-Lib schlau, indem Du dort die Beispiele ausprobierst.


spielbahn

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#32 von Knuffel ( gelöscht ) , 07.10.2014 18:26

Hi,
@Bodo & Uli: keine Sorge. Ich habe mich erstmal zwei Stunden mit blinkenden LEds und dem Servo Programm befasst.

@Uli: ich bin absolut ratlos, wohin ich die beiden Sachen jetzt schreiben soll. Ich habe mich an dem fertigen Sketch orientiert, konnte das aber nicht auf den anderen übertragen. Alles, was ich geschafft habe, war eine Verzögerung. Auch das Abschalten konnte ich nicht einbauen.

Aber immerhin: Die Endposition kann ich einstellen und die ersten drei Servos lassen sich ansteuern. Beim vierten gab es eine Fehlermeldung.

Knuffel


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#33 von mgcss ( gelöscht ) , 07.10.2014 19:34

na blos gut, dass ich mich da nicht angesprochen fühlen muss

Also Uli ... hau rein


mgcss

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#34 von Knuffel ( gelöscht ) , 07.10.2014 19:45

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#35 von moppe , 07.10.2014 20:11

Zitat von Knuffel
Ich habe mich erstmal zwei Stunden mit blinkenden LEds und dem Servo Programm befasst

ICh habe das jetzt seit ungafähr einer Stunde probiert und kein Ergebnis bekommen.



Wenn ich arbeiten, kann ich in zwei Stunden dienen, was ein Switchpilot Servo kostet.
Wenn ich arbeitet mit "hobby-bausteine" schauen ich jeder Stunde als mindestens 13€ wert weil ich könnte der selber Geld dienen bei arbeiten (und Steuer bezahlen).

Ihren servo Projekt funktioniert gut nach vielleicht 40 Stunden und extra Hardware (Abschaltung von Spannung bis der einzeler servo usw) . Nach 40 Stunden Arbeit kann ich ~20 Switchpiloten kaufen. Hier sind alles bereit, mit tastereingänge und als extra ein DCC ond MM fähiges Eingang.

Spielen mit Arduinos und servos sind viel spass, aber es lohnt sich nicht für simple aufgaben wie Schuppentoren.......

Klaus


"Meine" Modellbahn:http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk
PIKO C4 "Horror Gallery": http://moppe.dk/PIKOC4.html


 
moppe
Trans Europ Express (TEE)
Beiträge: 8.764
Registriert am: 07.08.2011
Homepage: Link
Ort: Norddeusche halbinsel
Gleise Roco, PECO, Märklin/Trix, PIKO,
Spurweite H0, H0e, N, Z
Steuerung Z21, Lenz, MpC Gahler+Ringsmeier, Games on Track/Faller
Stromart AC, DC, Digital, Analog


RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#36 von Bodo , 07.10.2014 21:54

Hallo Klaus,

Zitat von moppe
Ihren servo Projekt funktioniert gut nach vielleicht 40 Stunden und extra Hardware (Abschaltung von Spannung bis der einzeler servo usw) . Nach 40 Stunden Arbeit kann ich ~20 Switchpiloten kaufen. Hier sind alles bereit, mit tastereingänge und als extra ein DCC ond MM fähiges Eingang.

Spielen mit Arduinos und servos sind viel spass, aber es lohnt sich nicht für simple aufgaben wie Schuppentoren.......


... aber auch 20 Switchpiloten schaffen (bisher) kein Nachfedern der Signalflügel .

Du hast ja teilweise Recht - aber das Programmieren macht eben auch Spaß und man muss mit einfachen Projekten anfangen, um später mehr zu machen.

Viele Grüße, Bodo

PS: Unter http://moba.noethlich.info/?page_id=333 habe ich jetzt mit der Dokumentation meines Stellwerk(er)s begonnen.


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.476
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#37 von spielbahn ( gelöscht ) , 07.10.2014 22:11

Zitat von moppe
.......Spielen mit Arduinos und servos sind viel spass, aber es lohnt sich nicht für simple aufgaben wie Schuppentoren......


Aber es lohnt sich unter dem Aspekt, etwas dazuzulernen.


spielbahn

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#38 von spielbahn ( gelöscht ) , 07.10.2014 22:28

Hallo Tristan,

ein Servo erwartet ein kontinuierliches Steuersignal - damit ist .detach() eigentlich nicht nötig. Wenn das Servo brummt, liegt es häufig am unsauberen Steuersignal. Als Maßnahme gegen das Einschaltzucken z.B. kann man lesen, dass man zuerst das Steuersignal aktivieren soll und danach erst die Stromversorgung des Servo dazuschalten soll.
Dass Du die Geschwindigkeitsregelung hinbekommen hast, ist doch ein Erfolgserlebnis.


spielbahn

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#39 von Knuffel ( gelöscht ) , 08.10.2014 18:56

Hi Uli & Klaus & Bodo & mgcss,
die Geschwindigkeit konnte ich ja leider nicht verstellen. Wäre toll, könntet ihr mir das noch mal etwas detaillierter beschreiben. Alles, was ich geschafft habe war, die Servobewegung zu verzögern. Dann fährt der Servo aber mit maximaler Geschwindigkeit dahin.
Das SIgnal abzuschalten wäre schon recht sinnvoll, da meine Servos ein billiges Plastegetriebe haben und nicht so super genau laufen. Das Anfangszucken zu unterbinden, wäre aber auch gut. Wie kann man die Stromversorgung denn extra dazuschalten? KAnn ich da ein Relais an den Uno hängen und das einprogrammieren?


Danke


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#40 von mgcss ( gelöscht ) , 08.10.2014 19:24

statt dem Relais lieber einen MOSFET.

Das langsame anfahren kann man über eine einfach Schleife Regeln. Dabei wird dann zum Beispiel nicht gleich 180 als Wert an das Servo gesendet sondern immer nur eins mehr als aktuell und dann eine kleine Verzögerung mit Delay. Das wäre die Anfänger-Variante.

Die fortgeschrittenen Version wäre ohne Delay, bei der man sich den Zeitpunkt der nächsten Erhöhung in eine Variable speichert und bei jedem Durchlauf von loop entsprechend prüft, ob eine Erhöhung erforderlich ist. Wenn ja, wird der Wert wieder um eins erhöht und fall der Entwert noch nicht erreicht wurde die Variable auf den nächsten "Erhöhungszeitpunkt" gesetzt.

Grundsätzlich sollte man versuchen ohne Delay() auszukommen, da das den Programmablauf blockiert. Ohne ist es aber etwas schwieriger und gerade für Anfänger auch etwas schwieriger zu verstehen.


mgcss

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#41 von Knuffel ( gelöscht ) , 08.10.2014 19:42

Hi mgcss,
in dem Beispielprogramm Sweep ist da eine Stelle (Z. 24-25) an der es heißt " for(pos = 0; pos <= 180; pos += 2) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree "

mit den Variablen pos += 2 kann man die drehgeschwindigkeit einstellen. Ansonsten müsste ich bei deiner Variante doch jeden einzelnen Schritt manuell eingeben und danach ein delay machen. Und wollte ich etwas ändern, müsste ich jedes Delay umschreiben.

Knuffel


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#42 von mgcss ( gelöscht ) , 08.10.2014 19:56

wieder ungetestet aus der hohlen Hand statt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 

int tasterStatus;
 
tasterStatus = digitalRead(Weiche1TasterAPin); //Taster f&#252;r Weiche 1 abrufen
 
if (tasterStatus == 0) // durch die internen Pullups ist der Eingang standardm&#228;&#223;ig High und wird durch dr&#252;cken Low
{
Weiche1Stellung = 0; //Servoposition
}
 
tasterStatus = digitalRead(Weiche1TasterBPin);
 
if (tasterStatus == 0)
{
Weiche1Stellung = 180; //Servoposition
}
 
Weiche1.write(Weiche1Stellung );
 
 



diesen Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 

int tasterStatus;
int pos;
 
tasterStatus = digitalRead(Weiche1TasterAPin); //Taster f&#252;r Weiche 1 abrufen
 
if (tasterStatus == 0) // durch die internen Pullups ist der Eingang standardm&#228;&#223;ig High und wird durch dr&#252;cken Low
{
if(Weiche1Stellung == 180) // Servo steht am andern Anschlag --&gt; zur&#252;ck drehen
{
for (pos=180; pos &gt;=0; pos -=1)
{
Weiche1.write(pos);
delay(10);
}
}
 
Weiche1Stellung = 0;
}
 
tasterStatus = digitalRead(Weiche1TasterBPin);
 
if (tasterStatus == 0)
{
if(Weiche1Stellung == 0)
{
for (pos=0; pos &lt;=180; pos +=1)
{
Weiche1.write(pos);
delay(10);
}
}
 
Weiche1Stellung = 180;
}
 
 



über den Wert von delay() kannst Du die Geschwindigkeit beeinflussen. Je höher der Wert, um so langsamer.

PS: google mal nach C++ und FOR. Damit wird eine sog. zählergesteuerte Schleife implementiert. Der Wert pos bekommt zu Beginn der Schleife einen festen Wert zugewiesen. Dann wird der Programmcode innerhalb der geschweiften klammer ausgeführt. Wenn das Ende der Schleife erreicht wurde, wird pos um den Wert verändert, der im dritten Parameter der Schleife (in Deinem Beispiel um +2) verändert. Dann wird der Code innerhalb der geschweiften Klammern erneut ausgeführt. Das ganze wird dann so oft wiederholt, bis die Bedingung im zweiten Parameter (in Deinem Beispiel pos <= 180) nicht mehr erfüllt ist. Das hat mit der Drehgeschwindigkeit also nur indirekt zu tun. Vielmehr definiert es, in wie viele Schritte die gesamte Bewegung zerlegt wird. In meinem Beispiel wird sie in 180 Teilschritte zerlegt und nach jedem Schritt wartet er 10 Millisekunden. Dann macht er den nächsten Schritt. In Deinem Beispiel würde er die Gesamtbewegung nur in 90 Teilschritte zerlegen. Wenn man in dieser Schleife mit einem delay() von 20 Milisekunden arbeiten würde, wäre er theoretisch genauso schnell oder langsam wie mein Beispiel. Alle Klarheiten beseitigt?


mgcss

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#43 von Knuffel ( gelöscht ) , 08.10.2014 20:53

Hi,
es klappt . Ich habe mir das ganze jetzt auch mal für einen zweiten Servo hineingeschrieben, und auch mit de klappt das. Das einzige, was ich noch nicht probiert habe ist, mehrere Servos auf einmal anzuhängen. Bisher habe ich nur umgesteckt.
Auch die Sachen mit dem Servosignal beim Einstecken werde ich morgen mal angucken.
vielen Dank!


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#44 von mgcss ( gelöscht ) , 08.10.2014 21:44

wobei das wie gesagt die Einsteiger-Version ist. Das Drehen dauert jetzt knapp 2 Sekunden. Während dieser Zeit reagiert das Programm nicht auf das Drücken eines anderen Buttons. Das wäre dann die Fortgeschrittenen-Version


mgcss

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#45 von Z-Welt ( gelöscht ) , 08.10.2014 23:38

Hallo Tristan,
gut das es nun bei dir funktioniert. Aber ich würde die Servos nicht gleich unter die Platte verbannen. Erst einmal die ganzen Servos mit Taster und Arduino auf der Arbeitsplatte positionieren und ausgiebig testen. Würdest du auch deinen ganzen Sketch hier einmal einstellen damit man das auch mal nachvollziehen kann, denn es wurde dir ja viel Hilfestellung hier gegeben.
MfG Georg


Z-Welt

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#46 von Knuffel ( gelöscht ) , 09.10.2014 09:29

Hi,
ich habe mich leider zu früh gefreut. Jetzt habe ich das gleiche Problem wie hier: viewtopic.php?f=7&t=114589
Ich habe das auch schon mal durchgelesen und versucht nach zu vollziehen, aber ich wüsste nicht, wo ich bei mir was ändern müsste, um das Problem zu beheben.
Auch bei dem Einschaltzucken bin ich etwas ratlos. das etwas verzögerte Zuschalten des MOSFETs dürfte ja nur einmal passieren, also nicht in dem void Loop Abschnitt. Muss ich es also in den void Setup Bereich schreiben und wenn ja, wo da?

@Georg: Alle servos zu testen mache ich noch. Ich habe mir da gleich ein paar bestellt, sodass da noch welche übrig sind. Wenn alles hinhaut, stelle ich auch den Sketch gerne hier ein. Vorher dürfte es dir ja wenig bringen, oder?

Danke


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#47 von Z-Welt ( gelöscht ) , 09.10.2014 09:51

Hallo Tristan,
so erging es mir auch oft, gerade noch war alles Top, kurz darauf kam der Flopp. Ich habe meine Servo - Steuuerung mit 2 Taster soweit im Griff. Denn ich bin in diesem Thread unterwegs.... viewtopic.php?f=7&t=114589, Ich schalte jetzt jedes Tor, jede Weiche und alles was am Arduino bzw. ATtiny hängt die Servos einzeln.
Vor Spielende wird die Anlage ja eh Spannungsfrei gemacht, und vor dem Ausschalten wird die Spannungsversorgung per Poti für alle Arduinos und ATtiny auf Null gezogen. Wird die Anlage wieder zum Spielen eingeschaltet, liegen die ARDus und ATtinys zwar an Spannung können aber nicht zucken und zicken, dann regele ich langsam auf 5 Volt hoch. Ist zwar ein Handgriff und ein Reglerwerk mehr, aber ich hab meine Ruhe. Bodo hat auch eine passable Methode vorgeschlagen. Diese werde ich in den nächsten Tagen mal testen.
MfG Georg


Z-Welt

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#48 von Knuffel ( gelöscht ) , 09.10.2014 10:32

Hi Georg,
ich hätte eigentlich gerne erst mal die programmierte Variante probiert. Allerdings habe ich jetzt andauernd eine Fehlermeldung: avrdude: stk500_getsync(): not in sync: resp=0x00
das nervt mich ziemlich, zumal ich das bei den letzten Malen durch wahlloses umstecken und Port ändern hinbekommen habe. Jetzt geht aber Garnichts mehr.
Kennt dafüür jemand eine Lösung. Ich habe auch schon gegooglet, aber der Serielle Port und das Board sind richtig eingestellt.


Knuffel

RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#49 von Bodo , 09.10.2014 12:25

Hallo,

Zitat von Knuffel
in dem Beispielprogramm Sweep ist da eine Stelle (Z. 24-25) an der es heißt " for(pos = 0; pos <= 180; pos += 2) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree "

mit den Variablen pos += 2 kann man die drehgeschwindigkeit einstellen.


auch wenn es wohl schon geklärt ist ... das ist eben nicht die Lösung.

Das Sweep-Beispiel ist

1
2
3
4
5
6
7
8
9
10
11
12
13
 
void loop() 
{
for(pos = 0; pos &lt; 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos&gt;=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
 


und da wird die Geschwindigkeit über die delay-Werte geändert (delay = Pause in Millisekunden bis zum nächsten Schritt). Wenn Du die pos-Schritte änderst, macht das Servo irgendwann einzelne Sprünge statt einer gleichmäßigen Bewegung. Aber deshalb mein Hinweis, erst mal die Beispiel-Programme ausführlich durchzuspielen, um zu verstehen, was da inhaltlich passiert.

Auf den Nachbar-Thread zum Schalten der Servo-Spannung hat Georg ja schon verwiesen - das ist für Weichen aber vermutlich gar nicht nötig (bei Formsignalen sieht´s halt blöd aus, wenn sie Zucken und empfindlicher als bei Weichen ist die Mechanik auch).

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.476
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Sevos steuern mit Mikrocontroller - Womit lernen?

#50 von mgcss ( gelöscht ) , 09.10.2014 12:39

das mit dem dem MOSFET ist doch auch kein Problem.

An den 5V des Ardino kommt ein RC Glied und ein Schmitt-Trigger. Der steuert dann den MOSFET, der die Spannung für die Servos schaltet. So bekommt man eine Einschaltverzögerung die reichen sollte, dass die Servos erst dann mit Spannung versorgt werden, wenn der Arduino läuft. Wenn man das RC Glied mit einem Poti ausstattet, kann man die Dauer der Einschaltverzögerung sogar veränderbar gestalten.

Den Arduino selbst würde ich mit sowas erst gar nicht erst belasten. Wenn die Abschaltung Anschaltung dennoch programmgesteuert erfolgen soll, würde ich ZUSÄTZLICH den Ausgang des Schmitt-Triggers noch an ein AND Gatter hängen, dessen zweiter Eingang mit ienem Pin des Arduino verbunden wird. In der Setup Routine wird der PIN dann erstmal aus Ausgang und auf LOW gesetzt. In der Loop kann man dann mit der millis() Funktion ermitteln, wie viele Milli-Sekunden seit dem Booten vergangen sind. Ist der Werte diese Funktion > als der gewünschte Einschaltzeitpunkt, dann wird der Pin auf HIGH gesetzt.


mgcss

   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz