- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 25

Thema: YACCBOA - YetAnotherCameraControlerBasedOnArduino

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106
    Okay... ich habe min. 10 mal die Antwort hier verworfen.

    Was mich stört, ist das eine menge Lib. aufgerufen werden, die für mich scheinbar der Plattform Arduino als Entwicklungsumgebung abhängig sind.
    Korregiere mich, wenn das nicht stimmt.

    Ich würde immer noch einfach den 16Bit Timer im Hintergrund mitlaufen lassen und ihn als Zeitgeber nehmen.
    Aber ich weiß jetzt nicht, ob Arduino einen so tief in die Hardware des µC rein läst. Sprich ob du einfach das CS11-Bit im TCCR1B Register auf High setzten kannst und das TCNT1 Register einfach auslesen kann, ohne eine aufwendige Funktion zu benutzen.

    Sprich so:
    Code:
    unsigned int auslesen;
    TCCR1B|=(1<<CS11);
    auslesen=TCNT1;
    Die Anweisungen dauern jeweils meine ich max. 4 Takte.

    Daher meine Grundlegende Frage: Kannst du direkt, ohne irgendwelche Funktionen, auf die Register zugreifen?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo,

    schickes Gerät, gefällt mir sehr gut. Wollte auf deine PM antworten, aber dein Postfach ist voll.

    @Jimmybot Beim Arduino läuft bereits der Timer im Hintergrund im Interrupt als Zeitgeber. Da würde ich nicht dran herum schrauben.

    Das Problem liegt vermutlich eher an den Variablen Typen. Millis() und micros() geben 'unsigned long' zurück, du verwendest 'int' (das sind beim Arduino 16Bit Werte). Das kann zu Überläufen und ungeahnten Problemen führen.

    Bei meinen Tests habe ich nur schnöde delay() Aufrufe verwendet, will aber auch später millis() verwenden. Brauche ich aber erst wenn ich mehrere Ventile verwende.
    Kann meinen Code aber gerne hier posten, falls gewünscht.

    LG Peter

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106
    Zitat Zitat von m.a.r.v.i.n Beitrag anzeigen

    @Jimmybot Beim Arduino läuft bereits der Timer im Hintergrund im Interrupt als Zeitgeber. Da würde ich nicht dran herum schrauben.
    Wieder was dazu gelernt. Danke für den Hinweis.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Danke für die Antwort. Timer sind, wie schon erwähnt, durch die Arduino IDE zum Teil belegt. Gibt Wege diese freizulegen und zu nutzen. Aber da bin ich noch nicht fit genug für.

    Der Hinweis mit den Datentypen ist berechtigt. Hab ich ganz vergessen. Werde ich mir morgen mal Gedanken drüber machen.

    PS: Postfach ist wieder frei
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Zwei Fehler die zu seltsamen Verhalten führten. Zuerst habe ich in der for-Schleife für das Öffnen der Ventile durch ständiges Testen und Ändern nur noch Schwachsinn stehen gehabt. Etwas Schlaf und ein frisches Auge haben dies behoben. Dazu habe ich jetzt die Variablen für millis() als unsigned long initialisiert. Ich hab den Überlauf etwas unterschätzt. Hatte nur im Kopf, dass millis(); nach 49 Tagen überläuft. Ich hab dabei aber ignoriert, dass meine Variablen als Integer schon schneller überlaufen.

    Jetzt machen die Ventile was sie sollen. Nur die Wassertropfen muss ich noch bändigen.

    Als nächstes steht etwas Optimierung auf dem Plan. Der Code ist kaum kommentiert, ein paar Funktionen lassen sich vereinfachen oder auslagern um sie an mehreren Stelen zu nutzen. Zur Zeit sind 18.740 Bytes (von einem Maximum von 30.720 Bytes) in Gebrauch. Und ein paar Funktionen sollen noch implementiert werden
    Geändert von Arkon (09.01.2014 um 06:30 Uhr)
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Nachdem der Code endlich arbeitet wie er soll muss ich die Physik noch ein wenig verbiegen. Ich habe oberhalb eines Wasserbeckens drei Magnetventile (Kettenöler) angebracht, über die ich Flüssigkeiten Tropfenweise fallen lasse. Ziel ist es, einen ersten Tropfen fallen zu lassen und dessen, vom Becken aufsteigende Säule, mit einem zweiten Tropfen zu treffen.

    Mein Problem ist, dass ich den zweiten Tropfen, aus einem anderen Ventil, nicht über die Säule bekomme sondern immer einen seitlichen Versatz habe. Ich habe die beiden Ventile (mitte und rechts, siehe nächstes Bild) schon so weit zusammen geschoben, dass der Tropfen aus dem mittleren Ventil fast am rechten Ventil hängen bleibt.

    Ich könnte die Vorratsbehälter etwas unter Druck setzen, um die Tropfen stärker zu beschleunigen. Allerdings müsste ich dafür noch Ventile dran basteln, die Behälter verschließen (wodurch das Reinigen/Ausspülen/Trocknen erschwert wird) und müsste permanent die Ventile nachstellen, da der Druck nach jedem Tropfen etwas sinkt. Die elegantere Variante wäre dann wahrscheinlich ein gemeinsamer Druckbehälter für alle Flüssigkeitsreservoirs und einen Druckregler, der den Druck konstant hält. Aber das ist mir eigentlich zu viel Bau- und Kostenaufwand.

    Jemand ne Idee wie man das Problem lösen könnte?
    Geändert von Arkon (22.01.2014 um 09:30 Uhr) Grund: Anhänge entfernt, da nicht mehr verfügbar
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo Arkon,

    die Anhänge aus deinem letzten Post lassen sich nicht öffnen. Aber ich denke ich habe dein Problem verstanden. Einfachste Möglichkeit, die Vorratsbehälter unter Druck zu setzen, wären Luftballons, die man aufgeblasen über die Behälter stülpt. Die richtige Einstellung zu finden wird aber in jedem Fall eine Herausforderung.

    Ich konnte mich mit solchen Problemen bisher gar nicht befassen, da mir schlicht die Zeit fehlt. Bin schon bei der nächsten Baustelle. Gerne können wir wieder eine Skype Session abhalten.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen