Show Posts
Pages: 1 ... 68 69 [70] 71 72 ... 219
1036  International / Deutsch / Re: Encoder gesucht on: March 20, 2014, 06:23:13 pm
ich hatte hier schon einmal einen Thread eröffnet, wo du mir mit dem Sketch geholfen hattest. (Ist nicht der einzige Thread den ich gerade durchgeblättert habe)
Das Problem war aber immer, dass diese nicht so genau liefen wie erwünscht.

Welcher Thread war das?

Meine Hardware für dieses Projekt ist ein Pro Mini, ALPS Drehencoder (falls ich keinen besseren finden sollte) sowie ein 1.8" Serial Display. Bei der loop kann es sehr gut vorkommen, dass diese nicht immer innerhalb von 1-2ms durchlaufen ist. Muss ich aber im Test mal messen.

Um mit "Polling des Drehgebers in der Loop" bei starkem Prellen gut klarzukommen, sollte die Loop niemals länger als 2ms für einen Durchlauf benötigen, wenn keine Impulse verlorengehen sollten.

Ansonsten: Auswertung in Timer-Interrupts.

Mit dem Taster des Encoders möchte ich 6 Säulen durchschalten (Werte für R, G, B, etc.) und mit dem Encoder selber die Werte hoch und runter regeln. Sobald der Taster erneut gedrückt wird, schalte ich eine Säule weiter und schicke, wenn Daten sich verändert, an den Arduino mit den WS2812B.

Das hört sich doch eigentlich so an, als wenn Du einen Timer-Interrupt für die Drehgeber-Auswertung noch frei haben könntest?

Sind die WS2812B  am selben Arduino angeschlossen wie der Drehgeber? Während die WS2812B LED-Controller angesteuert werden, sollen dann aber wohl hoffentlich keine Drehgeber-Impulse gezählt werden? Die Ansteuerung der WS2812B blockieren nämlich alle Abläufe auf dem Controller: Loop UND sogar Interrupts. Das meinst Du hoffentlich nicht, dass die Drehgeber nicht ausgewertet werden, während die Ansteuerung der LEDs erfolgt?

Ansonsten ist das harmlos. Mal angenommen, Du hast einen Drehgeber, der 20 Impulse pro Umdrehung abgibt, macht 80 Codewechsel pro Umdrehung, und Du drehst ihn mit einer Drehzahl von höchstens 2 Umdrehungen pro Sekunde. Dann wären das maximal 160 Codewechsel pro Sekunde (gültige, ohne Prellen), also
1000 ms / 160 = 6,25 ms pro Codewechsel.

Das Prellen zwischen den Codewechseln dauert praktisch nie länger als 1 ms, so dass abzüglich Prellzeit nach einem Codewechsel der richtige Code für mehr als 6,25ms-1ms= 5,25ms ansteht. Mit 500 Timer-Interrupts (alle 2ms) oder 1000 Timer-Interrupts pro Sekunde (je 1 pro ms) lassen sich selbst so stark prellende Drehgeber extrem sauber auswerten.

Wenn die Auswertelogik stimmt.

Bei der Ansteuerung von WS2812B  LED-Controllern mußt Du allerdings berücksichtigen, dass der Controller komplett blockiert wird, während er die LEDs ansteuert. Der Controller kann in dieser Zeit nicht senden, nichts empfangen, nichts zählen und nichts anderes verarbeiten als die WS2812B-Ansteuerung und die Interrupts sind blockiert, bis die letzte LED angesteuert wurde.
1037  International / Deutsch / Re: Encoder gesucht on: March 20, 2014, 05:48:35 pm
gibt es eine gute und nicht alzu kostspielige alternative zu den ALPS Drehencodern? Ich habe von diesen Encodern einige sehr günstig bei ebay geschossen. Problem aber, diese Prellen sehr stark auch bei software Entprellung mittels Greycode (war ein Sketch von Jurs). Das Problem ist, dass die Übergänge sehr hart sind, soll heißen, wenn ich in den nächsten Punkt nicht einraste, fällt dieser leicht zurück und gibt ein neues Signal aus.

Drehgeber mit einem Arduino-Sketch auszuwerten ist normalerweise überhaupt kein Thema.
Und bis zu einer gewissen maximalen (ziemlich hohen) Zählrate spielt es überhaupt keine Rolle, ob es sich um billige stark prellende oder teure und wenig prellende Drehgeber handelt. Für alle normalen Anwendungsfälle tun es die billigen stark prellenden bei entsprechender sachdienlicher Auswertelogik genau so gut wie teure.

Allerdings darf man es nicht so machen wie es im Arduino-Playground beschrieben wird:
http://playground.arduino.cc/Main/RotaryEncoders

Auf der Seite steht zur Drehgeberauswertung nur ziemlich schlecht funktionierender Quatsch.
Praktisch unbrauchbarer Quatsch, der um so schlechter funktioniert, je stärker die Drehgeber prellen.

Wenn Du mit einem von mir hier geposteten Sketch ein Problem mit Drehgebern hast, gibt mal nähere Hinweise! Zu Drehgebern habe ich hier im Forum bisher sehr wenig gepostet, eigentlich kann ich mich nur an einen Spezialfall erinnern, bei dem es um eine Spindel ging, die immer abwechselnd und vorhersehbar eine Drehphase und eine Stillstandsphase hatte, und da ging es darum, Drehphasen und Stillstandsphasen zu unterscheiden, in Drehphasen die Impulse zu zählen und in Drehpausen die Zahl der gezählten Impulse anzuzeigen. Das hatte ich direkt in der loop gemacht. Diese Auswertung durch Polling in der loop-Funktion ist allerdings für Programme, bei denen die loop-Funktion auch mal länger als 1 bis 2 ms laufen kann, auch nicht der Weisheit letzter Schluß. Das Polling von Drehgebern eignet sich nur für Programme mit sehr schnelllaufender loop.

Für allgemeine Programme mit teils langsam laufender loop-Funktion muss die Auswertung von Drehgebern über regelmäßige Timer-Interrupts erfolgen. Ich kann mich nicht erinnern, dazu schon mal einen Beispielcode gepostet zu haben.
1038  International / Deutsch / Re: Arduino Mega 2560 nach verwendung des Watchdog Timers nicht mehr beschreibbar on: March 20, 2014, 02:11:16 pm
Was hast Du genau gemacht?
Nicht nur "mit dem Watchdog-Timer" gespielt (z.B. für den Sleepmode), sondern "einen Watchdog-Reset programmiert"?

-Funktioniert das auch mit einem Mega 2560?

Bevor Du irgendwas kompliziertes anfängst, das auf möglicherweise veralteten/uralten Informationen aus dem Internet beruht, würde ich eher mal ausprobieren, ob der aktuelle MEGA-Bootloader nicht bereits entsprechend fehlerbereinigt ist, ohne dass Du selbst einen eigenen Bootloader-Quellcode zu einem Bootloader-Executable kompilieren brauchst. Das ist nämlich nicht so ganz trivial.

In jedem Fall benötigst Du einen ISP-Programmer.
Notfalls einen zweiten "Arduino as ISP" mit entsprechendem Sketch und entsprechender Hardware-Verkabelung.

Also mal die Arduino Version 1.0.5 installieren
Dann mit dem ISP den aktuellen "Bootloader neu installieren".

Ist der Fehler dann weg und der MEGA funktioniert wieder? ==> Glückwunsch!

Wenn der Fehler auch mit einem aktuellen MEGA-Bootloader nicht beseitigt werden kann:
Schreibe Dir einen kurzen eigenen Sketch, der sofort im setup() den Watchdog deaktiviert und lade diesen Sketch mit dem ISP-Programmer hoch!

Und danach wie folgt verfahren:
Wenn Du mit Bootloader und nur noch ohne Watchdog-Timer programmieren möchtest, danach wieder einen Bootloader installieren.

Und wenn Du immer noch mit Watchdog-Reset experimentieren möchtest: Lasse den Bootloader weg und lade alle Sketche NUR MIT ISP!

Einen Bootloader installiert zu haben und gleichzeitig Watchdog-Reset nutzen zu wollen, ist nicht wirklich sinnvoll. Das machst Du besser auf einem System ohne Bootloader, auf das der Sketch mit einem ISP hochgeladen wird.
1039  International / Deutsch / Re: Poblem mit V-Plotter und GRBL on: March 20, 2014, 05:40:02 am
Nachdem ich gestern die Berechnung der Länge a0 hergeleitet habe, zwischen Seilpunkt B und dem Koordinatenursprung 0, folgt heute nun die Berechnung der Längen a und b in Abhängigkeit von den rechtwinkligen Koordinaten x und y.

Einfach zwei weitere Striche in der Zeichnung hinzugefügt und die Punkte E und F dazugemalt, und schon haben wir zwei neue rechtwinklige Dreiecke, mit denen wir rechnen können.

Dreieck BEC und Dreieck CFA

Zuerst zum Dreieck BEC und dessen Seiten:
Strecke BE = yB-y (erste kurze Seite)
Strecke EC = xB+x (zweite kurze Seite)
Strecke BC = a    (die gesuchte Seillänge a als lange Seite)

Pythagoras zum Dreieck BEC:
a2 = (xB+x)2 + (yB-y)2

Seillänge a:
a = sqrt((xB+x)2 + (yB-y)2)  ==> "a-Formel"


Danach das Dreieck CFA und dessen Seiten
Strecke CF = xA-x  (erste kurze Seite)
Strecke FA = yA-y  (zweite kurze Seite)
Strecke AC = b  (die gesuchte Seillänge b als lange Seite)

Pythagoras dazu:

b2 = (xA-x)2 + (yA-y)2

Seillänge b:
b= sqrt((xA-x)2 + (yA-y)2)       ==> "b-Formel"

Für die Veränderung der Länge a-a0 definiere ich die Variable "da" ("da" für "Delta a"):
da = a-a0

Für die Veränderung der Länge b-b0 definiere ich die Variable "db" ("db" für "Delta b"):
db = b-b0

Die Werte a und b werden wie in diesem Beitrag beschrieben berechnet, die Werte a0 und b0 wie im Beitrag gestern beschrieben. Differenz bilden und man hat die Werte da und db, die man anstelle von x und y zum Verstellen verwenden muss.

Das ganze noch in eine Arduino-Funktion "calc_ab"  gegossen und die Koordinaten der Seilrollen als Konstanten definiert:

Code:
// V-Plotter calculations by 'jurs' for German Arduino Forum
// Details: http://forum.arduino.cc/index.php?topic=226277.0

#define XB 500.0
#define XA XB
#define YB 600.0
#define YA YB

void calc_ab(float x, float y, float &da, float &db)
{
  // db = b - b0
  db= sqrt((XA-x)*(XA-x) + (YA-y)*(YA-y)) - sqrt(YA*YA+XA*XA);
  // da = a - a0
  da= sqrt((XB+x)*(XB+x) + (YB-y)*(YB-y)) - sqrt(YB*YB+XB*XB);
}

void plotPunkt(float x, float y)
{
  float da, db;
  calc_ab(x,y,da,db);
  Serial.print("x=");Serial.println(x);
  Serial.print("y=");Serial.println(y);
  Serial.print("da=");Serial.println(da);
  Serial.print("db=");Serial.println(db);
  Serial.println();
}


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  float x,y;
  plotPunkt(-100,-100);
  plotPunkt(100,-100);
  plotPunkt(100,100);
  plotPunkt(-100,100);
}

void loop() {
}

Und schon kann man aus rechtwinkligen x-y-Plotterwerten die schiefwinkligen V-Plotterwerte da und db errechnen und die Umrechnungsfunktion in einem Sketch verwenden.
1040  International / Deutsch / Re: aussprung aus Loop und rückkehr on: March 19, 2014, 04:05:00 pm
Anfängerfrage.
ich möchte loop in einer if bedingunge verlassen und in eine andere void springen. Klappt auch prima. nur wenn die aufgerufene void zu Ende ist gibt es keinen Rücksprung wieder zum loop.

Dass ein Programm mit der nächsten Zeile fortsetzt, nachdem eine andere Funktion aufgerufen wurde, ist Standard.

Wenn die Funktion nach der Abarbeitung nicht wieder zurückspringt, hat Deine Funktion womöglich eine "Endlosschleife" eingebaut und wird nie beendet. Oder das Programm dreht aus anderen Gründen durch.
1041  International / Deutsch / Re: Poblem mit V-Plotter und GRBL on: March 19, 2014, 03:10:37 pm
Das würde ja bedeuten, das ich dann wirklich für jeden einzelnen Punkt, der angefahren wird, die Koordinaten ändern müsst?!

Ja, mindestens. Wenn nicht noch mehr.
Eventuell musst Du sogar noch zusätzliche Stützpunkte zwischen den vorhandenen Punkten interpolieren und hinzufügen.
Nur am Koordinatenursprung (0|0) muss nicht umgerechnet werden, da sind die Werte identisch gleich mit 0.

Im einzelnen; Ein V-Plotter ändert genau so zwei Werte wie ein XY-Plotter,
Beim XY-Plotter sind es der Rechtswert X und der Hochwert Y.
Beim V-Plotter nenne ich die Seillängenänderung mal da und db (für "Delta a" und "Delta b").

Die Koordinatensysteme kannst Du übereinanderlegen, so dass in der Bildmitte am Koordinatenursprung (und nur dort!) gilt
x = y = da = db = 0

D.h. die xy-Koordinate am Koordinatenursprung entspricht C(0|0) und die da/db-Koordinate ebenfalls.

Es gibt also zwei Werte, die jeweils in den Plus- und den Minusbereich gefahren werden, soweit ist es mit XY- und V-Plotter gleich. Nicht gleich ist allerdings die Linearität: Beim XY-Plotter liegen zwischen C1(100|100) und C2(100|200) exakt 0mm Differenz in x-Richtung und 100 mm in y-Richtung, und das ist zwischen C2(100|200) und C3(100|300) genau so der Fall.

Beim V-Plotter sind die Seildifferenzen da und db zwischen den Punkten C1 und C2 bzw. C2 und C3 NICHT dieselben. Der Plotter hat nichtlineare Achsen. Wenn Du zwischen C1 und C2 mit einem XY-Plotter eine Linie plottest, ist es eine gerade Strecke.  Aber machst Du das mit dem V-Plotter, dann werden es zwischen den Punkten jeweils leicht gekrümmte Parabelabschnitte.

D.h. wenn Du mit dem V-Plotter zwei weit entfernte Punkte anfährst und beide Stellmotoren linear verfährst, wird es auf dem V-Plotter eine Kurve und keine Gerade. Je weiter zwei Punkte auseinander liegen, desto krummer wird es.

Aber zurück zur Ausgangsfrage, wie und wo Du es im Programm einbauen kannst. Ich sehe da zwei Möglichkeiten:
1. Möglichkeit: Umrechnen nach dem Einlesen der Daten
2. Möglichkeit: Umrechnen der Datei mit vorherigem Erzeugen einer umgerechneten Datei

Das mußt Du sehen, wie es besser passt. Wenn Du zum Steuern eine Library verwendest, müßtest Du Dir heraussuchen, wo die X- und Y-Werte eingelesen werden und könntest diese dann nach dem Einlesen direkt umrechnen. So dass die Library dann zwar X und Y Werte einliest, aber da und db Seilwerte plottet.

Die andere Möglichkeit wäre, die Datei vorab zu verarbeiten: Vorhandene Datei einlesen, X- und Y-Werte umrechnen und umgerechnete Werte in eine andere Datei (z.B. mit anderer Dateiendung) zurückschreiben. Die verabeitende Library braucht dann nicht geändert zu werden, man füttert sie einfach mit der vorher umgerechneten Datei.


1042  International / Deutsch / Re: Poblem mit V-Plotter und GRBL on: March 19, 2014, 12:12:31 pm
Soweit verstanden und alles klar smiley .

OK, dann weiter.

Damit wir im Bereich Realschul-Mathematik bleiben lasse ich Vektoren weg und rechne alles mit rechtwinklingen Dreiecken und dem Satz des Pythagoras. Dieser besagt grob:
In einem rechtwinkligen Dreieck ist das Quadrat der längsten Seite gleich der Summe der Quadrate der beiden kürzeren Seiten. Mathematisch oft geschrieben als a2+b2=c2

Nun zum nächsten Bild. Deine Seilpunkte A und B haben im Koordinatensystem eigene Koordinaten
A(xA|yA)
B(-xB|yB)

Wenn Du den Plotter symmetrisch aufgebaut hast, dann sind die Längen der Koordinaten bei beiden Punkten gleich, also
xA = xB
und
yA = yB
Auch wenn diese Werte bei Dir wohl gleich sind, bezeichne ich sie mal unterschiedlich, damit es immer klar ist, wo ich wann mit welchem Wert rechne.

Wenn der Plotter in Nulllage ist, also Plotpunkt x=0 und y=0, dann liegt der Plotpunkt C genau im Koordinatenursprung. Das Seil zwischen dem Koordinatenursprung und Punkt B habe dann die Länge a0.

Mit Hilfe des rechtwinkligen Dreiecks BDO und des Pythagoras läßt sich die Länge a0 ausrechnen. Für das Dreieck BDO gilt nämlich:
yB2+xB2 = a02
bzw. aufgelöst nach a0:
a0 = sqrt(yB2+xB2 )
(mit "sqrt" = Quadratwurzelfunktion)
Auf der rechten Seite des Gleichheitszeichens stehen nur bekannte Werte, die sich aus den Abmessungen Deines Plotters ergeben.

Unter der Voraussetzung eines symmetrischen Aufbaus wäre die Seillänge b0 (habe ich im Bild nicht eingezeichnet), exakt genau so groß wie a0.

Und zum Plotten mußt Du dann zu jedem Plotpunkt C(x|y) herausbekommen:
Wieviel Seil muß an jeder Seite zugegeben oder eingeholt werden, damit der Plotter den Punkt C(x|y) anfährt?

Im Bild habe ist außer der Seillänge in Nulllage a0 auch die Seillänge "a" eingetragen, die sich an Punkt C ergibt.

Diesen Wert a werde ich dann im nächsten Beitrag ausrechnen.
Die Differenz a-a0 wäre dann der umgerechnete Wert, um den das Seil verstellt werden muß.
(Fortsetzung folgt voraussichtlich morgen)
1043  International / Deutsch / Re: Barometischer Luftdruck- Tendenz dazu on: March 19, 2014, 08:34:09 am
ich habe hier einmal Millis() gefummelt.
Das soll funktionieren? An 24Std/360Tg?

Nein.
Die Intervallabfrage funktioniert 24/360 wenn Du Timestamp "unsigned long" deklarierst;
Code:
unsigned long Timestamp = 0;

Und diese Abfrage ist überflüssiger Ballast:
Code:
if (Timestamp)

Dieser Ausdruck ist immer true, wenn Timestamp ungleich Null ist.

Die Abfrage kannst Du Dir sparen, weil Du ja bereits im Codeblock für "if (millis() - Timestamp > intervall)" drin bist, und dieser Codeblock wird nur dann ausgeführt, wenn das Intervall abgelaufen ist.
1044  International / Deutsch / Re: Öl Temperatur messen, welcher Öltemperaturgeber? (KFZ) on: March 19, 2014, 08:25:55 am
EDIT: So sieht es auf dem LCD nun aus:

Na bravo, das sieht ja schon mal ganz gut aus!

Allerdings hat die Anzeigeroutine bei Dir noch zwei Probleme:
1. Problem: Temperaturen über 100 °C.
2, Problem: Fallende Werte mit sinkender Stellenanzahl z.B. von 100.00 auf 99.99 oder 10.00 auf 9.99.

Mal angenommen, die Öltemperatur ändere sich von 99.98 auf 100.03 und wieder auf 99,98.
Dann passiert auf Deiner Anzeige das (und ich behalte mal die merkwürdige Einheit "C°" statt "°C" bei):

Code:
Temperatur: 99.98C°
Temperatur: 100.03°
Temperatur: 99.983°

Beim Überschreiten von 100 wird das C überschrieben und beim anschließenden Unterschreiten von 100 bleibt die zuletzt angezeigte Hundertstel-Stelle des Werts als plötzlich erscheinende dritte Nachkommastelle stehen.

Dein Code sieht mir so aus als wenn Du das genau so programmiert hast, aber das dürfte wahrscheinlich nicht ganz so beabsichtigt sein.
1045  International / Deutsch / Re: Öl Temperatur messen, welcher Öltemperaturgeber? (KFZ) on: March 19, 2014, 06:27:28 am
EDIT: Habe den Ratschlag befolgt, und über Serial.printIn den Wert ausgegeben: Er gleicht mit dem Wert vom LCD.  smiley-roll

Ah ja, dann liegt's am Wert.

Kurz mal geschaut, das hier ist natürlich Nonstop Nonsens:
Code:
int analogPinA2 = A2;
  int MesswertTemperaturSpannung = analogRead (analogPinA2);
  int aValue=analogRead(MesswertTemperaturSpannung); 

Die Funktion analogRead braucht einen Analog-Pin als Parameter und nicht einen anderen analogRead-Messwert!

Ersetze den geposteten Codeabschnitt mal durch
Code:
  int aValue=analogRead(A2); 

Die Variable "MesswertTemperaturSpannung" wird in Deinem Sketch offenbar überhaupt nicht benötigt.
1046  International / Deutsch / Re: Poblem mit V-Plotter und GRBL on: March 19, 2014, 05:36:39 am
es ist ein Problem in so fern, das ich n normalen Realschul Abschluss habe.

Ja, in der Realschul-Mathematik kommt Vektorrechnung nicht vor.

Aber in der Geometrie kommt dran:
- x-y-Koordinatensystem
- Dreiecke
- Satz des Pythagoras
Viel mehr braucht es kaum.

Hab ich das denn richtig verstanden, das ich die Berechnung für jede Koordinate neu
Vornehmen muss?

Ja. Die rechtwinkligen Koordinaten x und y für jeden einzelnen anzufahrenden Plotpunkt müssen in entsprechende Seillängenwerte a und b umgerechnet werden.

Ich zeige mal, wie ich mir die Kinematik Deines V-Plotters vorstelle und bezeichne mal ein paar Punkte und Strecken.
Punkte immer mit Großbuchstaben, Strecken mit Kleinbuchstaben. Dazu habe ich mal eine Skizze gemacht und hänge sie dran.

Du mußt jeden Punkt C(x|y) anfahren, indem Du an den Seilpunkten entweder Seil zugibst (a oder b wird länger) oder Seil einholst (a oder b wird kürzer). Die Seillängen, die Du jeweils nachgeben oder einholen mußt, sind nicht identisch mit den x und y Werten im Koordinatensystem.

Soweit verstanden und die Skizze klar?

1047  International / Deutsch / Re: Öl Temperatur messen, welcher Öltemperaturgeber? (KFZ) on: March 19, 2014, 05:21:05 am
  lcd.setCursor(0, 9);

Cursor auf LCD-Zeilenindex 9 setzen würde ein 10-zeiliges LCD erfordern.
Was da wohl passiert, wenn man nur ein zweizeiliges LCD hat und den Cursor außerhalb des Gültigkeitsbereichs setzen möchte?

Wenn Du herausbekommen möchtest, ob das Problem mit der LCD-Anzeige oder mit der Messung zu tun hat, initialisiere doch mal Serial und lasse Dir die beiden Werte für Druck und Temperatur parallel auch über Serial ausgeben.

Dann siehst Du, ob das Problem schon bei den Werten auftritt, oder erst dann, wenn die Werte auf dem LCD angezeigt werden sollen.
1048  International / Deutsch / Re: OT : Volt begrenzen on: March 18, 2014, 03:15:18 pm
Die LED´s die ich verwende sind folgende: LED 10W
...
Voltage:10W       9-12V

Oh, oh.

Das sind nackte LED-Emitter mit einer Vorwärtsspannung zwischen 9 und 12 Volt.

Das heißt NICHT, dass die an 12 Volt Betriebsspannung betrieben werden dürfen.

Die müssen - wie hier schon erwähnt - mit einer Konstantstromqelle betrieben werden.
Die 10W-Emitter mit einer 1000 mA Konstantstromquelle, die für die Vorwärtsspannung geeignet ist.

Und MIT KÜHLUNG VON DER ERSTEN SEKUNDE AN!

10 Watt brauchen einen dicken, fetten Kühlkörper, wo die LED mit Wärmeleitkleber aufgeklebt werden muss.
Bevor man sie überhaupt einschalten darf. Und wenn einschalten, dann NIE mit einer Spannungsquelle, sondern immer nur mit Konstantstromquelle.
1049  International / Deutsch / Re: Poblem mit V-Plotter und GRBL on: March 18, 2014, 02:29:04 pm
Kann man das denn irgendwie berechnen, oder gibts dafür ne Software?

Ich sagen mal: ja, das kann man berechnen!
Software mußt Du vermutlich selbst schreiben.
Wenn Du nichts fertiges für V-Plotter findest.
Die Umrechnung selbst ist keine Raketenwissenschaft.

Mal angenommen, der Punkt B sei der linke obere Seilpunkt und A der rechte obere Seilpunkt Deines Plotters und C der Punkt, an dem sich der Plotterstift befindet. Dann kannst Du Dir ein Koordinatensystem darübergelegt denken mit dem Koordinatenursprung 0, und für jeden beliebigen zu plottenden Punkt C kannst Du Dir die Seitenlängen a und b des Seildreiecks ausrechnen.

Wie lang die Seillängen a und b zu jedem Punkt C mit den Koordinaten x,y sein müssen, kannst Du mit Vektorsubstraktion ermitteln. Es seien die Vektoren (eigentlich würde der Strich darüber gehören, das unterstützt die Forensoftware nicht, deshalb unterstreiche ich die Vektoren zwischen zwei Punkten mal.
0A Vektor vom Koordinatenursprung 0 zum Seilpunkt A
0B Vektor vom Koordinatenursprung 0 zum Seilpunkt B
0C Vektor vom Koordinatenursprung 0 zum Plotpunkt C

Seite a: BC = OB-OC vom resultierenden Vektor den Betrag bilden: Seillänge a

Seite b: AC = OA-OC vom resultierenden Vektor den Betrag bilden: Seillänge b

Also um aus Koordinaten x und y die Seillängen a und b auszurechnen, ist jeweils eine Vektorsubstraktion notwendig und eine Berechnung des Vektorbetrags. Dafür braucht man zum Ausrechnen nicht mehr als die vier Grundrechenarten und die Quadratwurzel. Vektorrechnung ist allerdings Mathematikthema der gymnasialen Oberstufe. Ist das ein Problem?

Wenn Du Dir einmalig ausgerechnet hast, wie groß die Seillängen für den Plotpunkt am Koordinatenursprung O sind, kannst Du diesen Wert für Deine Stepmotoren als Nullpunkt setzen, von dem dann Plus oder Minus geplottet wird. Und ob der Steppermotor dann rechtwinklige x- und y-Koordinaten ansteppt oder mit V-Winkel a- und b-Seillängen einstellt, ist der Hardware dann egal. Nur muß eben von rechtwinkligen x-y-Koordinaten auf nicht-rechtwinklige a-b-Seillängen umgerechnet werden, sonst erfolgt die Ausgabe verzerrt.



1050  International / Deutsch / Re: Atmega328P Standalone mit LiPo on: March 18, 2014, 01:24:17 pm
Aber den Reset Pin floaten lassen ist sicher auch nicht gut.

Der Reset-Pin an den AVRs floatet nicht, er hat eine sehr schwache interne PullUp-Schaltung. Laut:
http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_application-note_avr042.pdf
dort steht:
The reset line has an internal pull-up resistor, but if the environment is noisy it can be insufficient and reset can
therefore occur sporadically.


Also für "noisy environment" braucht man was zusätzlich als PullUp.
Ansonsten aber evtl. auch nicht.
Empfohlen wird für allgemeine Anwendungsfälle wohl immer ein 4.7K PullUp extern anzuschließen.
Ein Arduino-Board, an dem ein aktives USB-Kabel hängt, ist immer zugleich "noisy Environment", das geht gar nicht anders.
Aber zwingend notwendig unter allen Umständen ist das nicht, weil Reset an den AVRs im Prinzip nicht floatend ist.

Andererseits: Ob ein Gerät im Standby jetzt 0,1µA, 1µA oder 2µA Strom zieht, macht den Kohl nicht fett. Damit liegt man in jedem Fall weit unterhalb der Selbstentladung von Alkaline-Zellen.  Und andere Hardware im Standby wird möglicherweise viel mehr Strom ziehen als der Atmega-Controller.
Pages: 1 ... 68 69 [70] 71 72 ... 219