- LiFePO4 Speicher Test         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 39

Thema: Winkelsensor, Poti oder Lichtschranke?

  1. #21
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Anzeige

    Powerstation Test
    Hi BlooD,

    wer lesen kann ist klar im Vorteil.
    Die 15° - Teilung der Aufgabenbeschreibung habe ich einfach mal so ignoriert (überlesen).

    Ich sehe zwei Lösungsmöglichkeiten für Dein Problem.

    a) Schau Dir doch noch mal mein Posting vom 15.08. um 15:43h an. Dort habe ich eine Prozedur beschrieben, die ich selbst mit Erfolg in einer echten Anlage implementiert habe (der Siphongschälzentrifuge). Dieser Algorithmus beinhaltet auch die Erkennung von Zwischenpositionen. Wenn die Zwischenpositionen bekannt sind kann die Steuerung besser auf die Situation reagieren.

    b) Versuch den Motor doch einfach mal eine Position vor dem Ziel auszuschalten. Ich halte diese Version allerdings für ziemlich primitiv, da es keine aktive Positionskorrektur gibt.
    Für Deine weiteren Überlegungen gebe ich Dir zu bedenken, das ein Motor nur mit Verzögerung anläuft und abbremst. Dies kann man auch ausnutzen. Wenn Du den Motor vor Erreichen der Position ausschaltest und auf der Zielposition einen kurzen Impuls in die Gegenrichtung gibst, besteht die Möglichkeit das Ziel besser zu treffen.

    Aber Vorsicht !!! - Das Umschalten in die Gegenrichtung darf nicht zu schnell erfolgen, da der Motor sonst beschädigt werden könnte.

    Da fällt mir noch ein :
    Wieviel wird die Position verfehlt. Ist es nur eine weitere Rasterposition, nur ein paar Winkelgrade oder mehrere Positionen ??

    Grüße Klaus
    Eine verrückte Idee ist besser als keine

  2. #22
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    43
    Beiträge
    170
    Danke nochmals für deine Antwort, ich hab mir das auch schon überlegt, mit dem zählen der Zwischenpositionen, jedoch bin ich immer noch der Meinung, das mein Mikrocontroller manchmal nicht mitkommt:

    Wenn ich den Motor anschalte, beim Referenzpunkt 0 setze und immer bis 24 Zählen lasse funktioniert das - wie ich oben schon gesagt hab. Da habe ich auch zwei Zähler laufen lassen, einmal die Positionen und einmal die nicht-Positionen.
    Will ich aber zwischen den Positionen anhalten oder umdrehen scheint dieser Vorgang so viel zeit zu brauchen, das manchmal eine Position übersehen wird.

    Zu b)
    Der Motor läuft nicht immer genau gleich schwer; deshalb wäre es wieder sehr schwer zu sagen, wieweit er denn jetzt gefahren ist...

    Zu deiner Frage: manchmal wird eine position übersehen (mehr eigentlich nicht), aber kleine Winkelabweichungen habe ich immer.

    Je mehr ich drüber nachdenke, bin ich immer mehr davon überzeugt, diese Zähl- und Positionieraufgabe für den Motor einem ATMega8 o.ä. zu geben, der kommt wenigstens sicher mit und der bisherige Mikrocontroller könnte die anderen Aufgaben erledigen, z.B. das Benutzermenü und die, die nicht zeitkritisch sind. Da könnte ich mich dann von dem Relais verabschieden und den Motor mit PWM ansteuern?!
    Dann könnte ich wenigstens auch langsamer anfahren und abbremsen, was sicherlich auch Motorschonender ist.
    Wäre das nicht sinnvoll?

    Jetzt kanns sein, das ich vom eigentlichen Thema abschweife:
    Ich hab noch keine Ahnung von AVR's oder PIC's, es gibt sicherlich viele Forenthemen darüber, aber falls mir einer ne kurze Antwort geben könnte, wäre das super.
    Wie lange braucht ein normalsterblicher, bis er sowas Programmiert hat? In Assembler wäre wohl am besten? (Und davon hab ich auch noch keine Ahnung)

  3. #23
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Hi BlooD,

    Welchen uC und welchen Compiler verwendest Du ?
    Kannst Du mal das Listing posten ? Wenn es zu lang ist, schicke es mir einfach per Mail.

    Hast Du die Möglichkeit Interrupteingänge zu verwenden ?
    Wenn die Positionsbestimmung mit einem Interrupt berechnet wird, könnte dies die Belastung des uC verringern.

    Wie kommst Du darauf, das der uC Impulse verschluckt ? Hast Du dafür Beweise oder ist es nur ein Gefühl ?

    Die Aufgaben auf verschiedene uC zu verteilen ist eine Möglichkeit. Es kommt halt nur das Problem hinzu, das die Prozessoren mit einander kommunizieren müssen. Dies könnte man mit RS232, RS485, I2C o.ä. realisieren.

    Für die AVR's gibt es mehrere Compiler für Basic (Bascom-AVR), Pascal (Embeddet Pascal), C (Win-AVR), Assembler usw. Der Basic - Compiler Bascom-AVR ist sehr einfach in der Bedienung und hat einen Simulator. In Deinen Beiträgen habe ich gesehen, daß Du Dir noch genügend Fantasie und Spieltrieb bewahrt hast (ist sehr wichtig !!!) um die Programmierung ohne Probleme erlernen zu können.
    Wenn Du keine Vorkenntnisse zum Thema Programmieren hast, würde ich von Assembler abraten. Assembler ist zwar sehr schnell, geht jedoch sehr tief in die Hardware hinein.

    Basic kann als typische Anfängersprache jeder lernen. Selbst einem Normalsterblichen ist es vergönnt sich so weit herunterzudenken . C hat meiner Meinung nach zu bescheidene Zeichenketten-Routinen. Pascal habe ich bisher nur mit Delphi benutzt.

    Grüße Klaus
    Eine verrückte Idee ist besser als keine

  4. #24
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    43
    Beiträge
    170
    Hi Klaus.

    Ich verwende jControl. Infos dazu unter http://www.jcontrol.org

    Der Controller wird mit Java programmiert (Compiler in der IDE enthalten) und da dieser noch nebenher sachen machen muss, danke ich einfach das dieser Impulse verschluckt.
    Bisher war das nur ein Gefühl, aber ich habe vorhin gelesen, das der A/D-Wandler nur alle 16ms abgefragt wird, das kann natürlich auch negativ dazu beitragen, deshalb will ich aus dem analogen wert jetzt auch ein digitales machen (wie du auch schon gesagt hast).

    Da ich mich eben wie schon gesagt vom Relais verabschieden will werd ich die nächste Woche probieren mich in ATMEL's einzuarbeiten und damit auch mittels PWM und über MOSFETs den Motor steuern.

    Kommunikation soll über I2C laufen, da ich die RS232 schon anders Verwende. Der ATMega8 dann als Slave.

    Wegen dem Quelltext:
    Ich hab die Tage so viel dran geändert, ich weiß schon gar nicht mehr, wie es denn am besten funktioniert hat. Wenn ich jetzt nen Code posten würde, wär das wahrscheinlich nicht hilfreich...

  5. #25
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Hi BlooD,

    der jControl sieht richtig interessant aus. Was mich besonders angesprochen hat ist der niedrige Preis für einen kompletten Controller incl. Grafikdisplay und allen Schnittstellen die man so braucht. Dies sind gute Vorraussetzungen für einen Masterprozessor.

    Zurück zum Impulsproblem :
    16ms kann schon ziemlich knapp werden. Die Positionserkennung funktioniert nämlich nur dann, wenn die Positonsbohrung mindestens 32ms unter der Lichtschranke bleibt (doppelte Wandlerzeit). Und das werden dann ziemlich lange Löcher.
    -> QED : Mit dem ADW kann es nicht korrekt funktionieren. Schade.

    Selbst mit einem Atmel wirst Du auf digitale Signale umsteigen (hast Du ja schon angesprochen) und mit Sicherheit einen Interrupteingang verwenden müssen. Alles andere wird zu langsam sein.

    JControl als Master und einen Atmel als Slave solten Dein Problem lösen können.

    Für den Bascom-AVR-Compiler gibt es eine Demoversion, die vom Netz heruntergeladen werden kann. Mit der Demoversion kann leider nur maximal 2kB Programmcode erzeugt werden. ( http://www.mcselec.com/download_avr.htm ) Eine Vollverson kostet 80 - 100€.

    Grüße Klaus
    Eine verrückte Idee ist besser als keine

  6. #26
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    43
    Beiträge
    170
    Hi Klaus,

    stimmt, das sind ja 32ms, dann ists ja noch schlimmer :-/

    Nun, ich fand das jControl eben auch günstig, und praktisch, da ich eh Java lernen muss.

    Wenn du das günstig nennst, dann schau mal bei ELV:

    Controller 79,95: http://www.elv.de/shopping/ArtikelDe...%2DPC&Menue=Ja

    Evaluation-Board 13,95:
    http://www.elv.de/shopping/ArtikelDe...%2DPC&Menue=Ja

    vor allem das Evaluation-Board ist für den Preis unschlagbar - und es scheint baugleich zu sein.

    Ich hab heute morgen die Eingänge digital abgefragt, nochmal mit dem JControl. Allerdings nur über einen einfachen Spannungsteiler, ein bisschen scheint es besser zu sein, aber es reicht noch nicht.
    Reicht das so als digitale Lösung, oder sollte man mit sowas nochmal über einen extra Transistor oder so gehen?

    Ich hab nun auch mal Sachen für den ATMega8 bestellt
    2kb Programmcode sollten doch für dieses Problem reichen?!?
    Wahrscheinlich werd ichs zuerst mal in Basic probieren, das hab ich schonmal beim C-Control I gemacht, auch wenns anders ist, immer noch besser als gleich Assembler.

  7. #27
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Hi BlooD,

    Ob nur ein Spannungsteiler oder eine Transistorschaltung verwendet wird hat keinen nennenswerten Einfluss auf die Signallaufzeit. Die Durchlaufzeiten dürften kaum messbar sein. Ein Spannungsteiler verringert die Ausgangsspannung. Mit einer Transistorschaltung kann die Ausgangsspannung vergrößert werden.

    TTL - Signale sind in den Spannungen definiert.
    Spannungen kleiner 0.8 V gelten als Low; Spannungen > 2.0 Volt als High. ( http://de.wikipedia.org/wiki/Transis...ansistor-Logik ) Kann es sein, daß Du in den undefinierten Bereich (0.8 bis 2.0V) geraten bist ??

    Die Boards werde ich mal im Auge behalten. Bin im Moment etwas knapp, jedoch immer auf der Suche nach vernünftigen Lösungen.

    2kB sind ein Haufen Holz. Damit kann man schon etwas anfangen. Mein erster Computer war ein Sinclair SX mit 1kB RAM. Die Gigabytes von heute sind nur ein Effekt der Multimediafähigkeit moderner PC's. In einem meiner Betriebe läuft eine sicherheitsgerichtete Steuerung von HIMA mit ca. 30 EA's und einem Programmcode der nur 23kB groß ist.
    Die SPS von Erdmann ( http://www.edmund-erdmann.com/v2/de/index.php ) läuft mit einem Z80-Prozessor (8Bit Datenbus, 16Bit Adressbus -> 64kB Ram pro Datenbank) und wird noch heute eingesetzt.

    Grüße Klaus
    Eine verrückte Idee ist besser als keine

  8. #28
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    43
    Beiträge
    170
    Hi Klaus,

    dann werde ich Spannungsteiler nehmen, das dachte ich mir so:
    ein 1k-Widerstand und ein Poti mit 10k in Reihe als Pulldown verwenden, dann kann ich das später immer noch einstellen.

    Scheint so, als würde der JControl sich nicht ganz an TTL halten?!
    Ich hab in meinem Versuch gestern die Eingänge digital und analog abgefragt, da schaltete der Eingang bei ca. 140 (~2,7V) Digital auf HIGH und bei ca. 103 (~2,0V) wieder auf LOW.

    Zusätzlich schreibt einer der Entwickler im jControl-Forum noch:
    VIL (Input low level voltage) = max. 0.3xVcc = 1.5V
    VIH (Input high level voltage) = min. 0.7xVcc = 3.5V
    Vhys (Schmitt trigger voltage hysteresis) = 400mV
    Ich bekomme für "da-ist-kein-Loch" den Wert 3, für "Da-ist-ein-Loch" bis zu 242, das sollte doch eigentlich gut machbar sein.

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Hi BlooD,

    kein Loch = 3; Loch = 242 ?
    Das klingt mir doch wieder nach einem Analogeingang. Hab' gerade in der Doku gelesen, das der jControl nur Analog-, PWM- oder Busleitungen hat. Das bestärkt meine Befürchtung, das der Contoller bei Deiner Aufgabenstellung nur als Komunikationsprozessor verwendet werden kann.

    Die Zuordnungen der Spannungen zum ADW-Wert ergibt eine Quantisierung von ca. 19.3 mV/Digit. Demnach entspricht der Wert 3 ca. 58mV und die 242 ca. 4.7V. Bei dem Versuch war der Poti auf 100% (=10k) eingestellt, korrekt ??

    Die Grafikroutinen sind ziemlich rechenaufwendig. Hast Du mal versucht, auf optische Routinen soweit wie möglich zu verzichten ? Das wird allerdings keinen Einfluss auf die AD-Wandlerzeit von 16ms haben.

    Wenn dies alles nicht hilft, bleibt Dir nur noch der Weg über einen Co-Prozessor wie Du es schon vorher angesprochen hast.

    Grüße Klaus
    Eine verrückte Idee ist besser als keine

  10. #30
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.05.2004
    Alter
    43
    Beiträge
    170
    Hi Klaus,
    ich sagte ja, ich hab es gleichzeitig digital und analog abgefragt.
    Die Analogwerte habe ich nur zusätzlich nochmal kontrolliert, hab mich vielleicht flasch ausgedrückt.
    Kein Loch=3 (Digital auf LOW (false) schaltete er bei kleiner 109)
    Loch = 242 (Digital auf HIGH (true) schaltet er bei größer 140)

    ja der Poti war auf 10k eingestellt.

    Ich habs auch schon ohne Grafikroutinen probiert und ohne serielle Schnittstelle usw. brachte alles nix, ist einfach zu ungenau und zu unsicher.
    Ich machs jetzt definitiv über einen Co-Prozessor, vorallem weil ich ein schönes grafisches Menü möchte.

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests