Konzept: magische Uhr (wo ist meine Familie grade?)

Begonnen von Rince, 10 März 2016, 10:47:02

Vorheriges Thema - Nächstes Thema

Rince

Ist nicht so wichtig, das geht zur Not zum nachrüsten :)

Einigen wir uns zunächst auf eine Version der IDE und Pf@nne´s Basic?



Schaust du dir bitte folgende Tutorials an:

https://learn.adafruit.com/multi-tasking-the-arduino-part-1
http://www.roboternetz.de/community/threads/65187-Tutorial-Erstellen-einer-Arduino-Bibliothek

Ich möchte letztlich eine Bibliothek haben, die den Servo auf die passende Uhrzeit stellt.



Was muss sie können?
Den jeweiligen Servo ansteuern
Aus der Uhrzeit den Winkel berechnen (0-180°)
Den alten Winkel gespeichert haben
Die Differenz alter / neuer Winkel berechnen, um die Geschwindigkeit des Zeigers und das Übersteuern zu bestimmen (wenn der Zeiger von 9 Uhr auf 10 Uhr fährt, wird er langsamer sein, als wenn er von 9 Uhr auf 3 Uhr fährt; dementsprechend sollte das Überschwingen natürlich jeweils unterschiedlich sein)


Worauf müssen wir uns noch einigen?
Auf die Kalibrierung der Servos / Zeiger, damit die Winkelberechnung für alle Servos immer gleich bleibt.

Vorschlag:
Einbau der Servos in Mittelstellung (90° = 1,5ms Impuls)
Dann fixieren der Zeiger an der jeweiligen Welle auf 12 Uhr

Das bedeutet, dass wir (ohne Zahnräder) von 9 Uhr bis 3 Uhr über 12 Uhr fahren können
Mit der Zahnradübersetzung von 40:20 dementsprechend von kurz nach 6 Uhr bis kurz vor 6 Uhr, wieder über 12 Uhr natürlich
Mit Übersetzung von 50:20 auch etwas über 6 Uhr jeweils in der anderen Richtung hinaus...

Ist das so für dich ok?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

Hallo Rince

Ich habe mit Arduinos noch keine Erfahrung da verlasse ich mich ganz auf dich :P
Aber dein Konzept klingt ganz gut 8)

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Rince

#32
War heute mal basteln.
Ich denke ich habe einen Weg gefunden, die Zahnräder ordentlich am Servo zu befestigen.

Diese grünen Zahnräder sind in der Fläche deutlich dünner als außen und innen. Ich habe daher innen auf einer Seite mit nem Dreml diese "Wulst" weggefräst. Jetzt liegen die Zahnräder sauber auf den Servohörnern auf. Kleben und schrauben muss ich noch, dann ist das fertig.

Damit kann ich endlich die Höhe messen und die Breite des Uhrwerks berechnen :)

Edit sagt:
3,7cm ist der SG90 mit Servohorn und dem grünen Zahnrad (mit weggedremeltem Wulst) hoch.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#33
Änderungen:

4mm Abstand ist zu viel. Das muss weniger werden.
Idee:
Über die kleinen Zahnräder (ca. 2cm Durchmesser) kommt jeweils 1 Scheibe (sowas wie ne MiniCD) mit 3-4cm Durchmesser
=> die verhindert, dass das große Zahnrad versehentlich ein falsches kleines Zahnrad erwischt, weil es schlicht nicht mehr eiern kann.

Damit verringert sich die Höhe unserer Konstruktion kräftig. Knappe 3mm/Zeiger


Der Rest des Postings ist eher als Memo to self zu lesen

Hätte ich in Mathe mal besser aufgepasst  :o

Unser Servo hat theoretisch 0-180°

180° * 2,5 = 450°
450° - 360° = 90°

90° / 2 = 45° Überschwingen von links und rechts

Jetzt stellt sich ein Gedankenblitz ein :)

Ich rechne die UhrZeiten schon um, nicht die Winkel.

1 Uhr wird zu 7 Uhr etc...

Jetzt muss ich nur noch berücksichtigen, dass der Nullpunkt vom Servo nicht bei 6 Uhr ist, sondern bei 4:30 Uhr liegt.

Winkel = (NeueUhrZeit * 30) + 30
Dieses Ergebnis teilen wir nun noch durch 2,5.

Kann das so funktionieren?

pulslength = map (Winkel, 0, 180, SERVOMIN, SERVOMAX)


Theorie:
SERVOMIN und SERVOMAX sind die Pulsweiten, bei denen der Servo nicht gegen sein Endpunkte donnert.
Wenn er also auf 180° fahren soll, könnte es sein, dass er 2ms gar nicht verträgt. Das klingt dann recht unschön und macht den Servo kaputt.

Die Reserve links/rechts beträgt durch die 2,5:1 Übersetzung 18° statt 0° und 162° statt 180. (45° / 2,5 = 18°)
Kommt noch das Überschwingen dazu. 1h entspricht 12°.
Bleiben also übrig 6° und 174° als maximale Positionen, die vom Servo in dem Programm angefordert werden.

Kan man da davon ausgehen, dass diese Parameter von jedem Servo eingehalten werden? Dann muss man nicht erst "seine" Servos kalibrieren.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)