-
        

Ergebnis 1 bis 6 von 6

Thema: Monoflop - beide Flanken triggern

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2006
    Ort
    Baden
    Alter
    34
    Beiträge
    102

    Monoflop - beide Flanken triggern

    Anzeige

    Hallo zusammen,

    ich entwickle gerade eine Steuerung für meine CNC-Fräse. Ich habe 3 Platinen mit einer Kombination von L297 und L6203. Diese möchte ich nun ansteuern. Wie bekannt sein dürfte macht der Schrittmotor bei steigender Flanke am Clock-Eingang des L297 einen Schritt.

    Nun könnte ich ja auf diese Art programmieren:
    PortA.1 = 1
    'kurze Pause
    PortA.1 = 0
    usw.

    Da es aber etwas geschickter ist einfach zu schreiben
    Toggle PortA.1
    würde ich das gerne so machen.
    Dann macht er aber nur bei jedem zweiten mal einen Schritt. Deshalb würde ich gerne ein Monoflop zwischenschalten, das auf beide Flanken reagiert und dann einen Impuls von wenigen µS generiert (sowohl bei steigender als auch bei fallender Flanke)
    Momentan habe ich das so gelöst wie im Anhang zu sehen. Da ich allerdings 3 Achsen habe brauche ich dann 3 ICs, 6 Widerstände und 6 Kondensatoren. Ziemlich viel Aufwand. Ich bekomms auf meiner Leiterplatte nicht mehr unter

    Weiß einer von euch eine einfachere Lösung?

    Ich habe schon überlegt einfach beide Eingänge zu verbinden, dann bräuchte ich nur 2 ICs, 3 Widerstände und 3 Kondensatoren, aber im Datenblatt (hier zu finden) steht auf Seite 6 in der Funktionstagelle leider kein "X" bei dem jeweils anderen Eingang (Ich hoffe man versteht was ich meine). Daher weiß ich nicht, wie der IC dann reagieren würde.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken monoflop_760.jpg  

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Das verstehe ich nicht wirklich:
    Da es aber etwas geschickter ist einfach zu schreiben
    Toggle PortA.1
    würde ich das gerne so machen.
    Da es aber enormen Hardwareaufwand bedeutet würde ich es nicht so machen?

    Dann macht er aber nur bei jedem zweiten mal einen Schritt.
    Man könnte zweimal hintereinander togglen.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2006
    Ort
    Baden
    Alter
    34
    Beiträge
    102
    Denkansatz von mir (keine Ahnung ob so korrekt):
    Ich betreibe den AVR mit 16Mhz. Dann bin ich bei Taktzeiten von wenigen Nanosekunden. Wenn ich also ohne Pause zwei mal Toggle hintereinander, ist der Impuls wahrscheinlich zu kurz. Genauso beim manuellen umschalten. Der IC L297 braucht laut Datenblatt minimum eine Taktlänge von 0,5µs. Da ich ungern an Grenzen gehe wären meiner Meinung nach 2-3µS perfekt (bei den Taktraten von den Motoren um 1kHz auch locker möglich.

    Die Programmierung möchte ich mit Bascom machen und die einzelnen Takte per Timerinterrupt. Daher sollte die Interruptroutine möglichst kurz sein. Wenn ich da dann eine Pause einbaue ("waitus"), wird die CPU damit ja blockiert und könnte in dieser Zeit schon andere Dinge tun (Sachen auf LCD anzeigen, Schritte vorberechnen, Daten von SD-Karte holen usw.) Der AVR hat sowieso schon genug zu tun, da möchte ich nicht auch noch eine Zwangspause einprogrammieren. Wenn das ganze extern geschieht haben die Pulse immer die richtige Länge und das Programmieren wird einfacher.

    Mir schwebt da eine Art FIFO buffer vor das von der CPU gefüllt wird und von der interruptroutine abgearbeitet wird, damit die Takte schön gleichmässig sind.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2006
    Ort
    Dortmund
    Alter
    30
    Beiträge
    379
    hmm was hälste denn davon einfach nen Tiny13 o.ä. dafür zu benutzen. Ist zwar eigentlich verschwendung aber dafür wohl ein sehr geringer hardwareaufwand. Gibts ja auch in SMD also denke ich mal wär das die Platzsparendste Variante. Wenn du den internen Takt nimmst kommst du allein mit dem Bauteil aus und brauchst keine externe beschaltung mehr (mal abgesehen von nem Abblocker).

  5. #5
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.367
    Ganz früher hat man so etwas mit einem EXOR Gatter gemacht, Signal an beide Eingänge, einer über Tiefpass.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2006
    Ort
    Baden
    Alter
    34
    Beiträge
    102
    @oZe
    Du hast recht, das ist eigentlich die einfachste lösung. Bin ich noch garnicht drauf gekommen. Einen Tiny25 hab ich sowieso schon auf der Platine noch mit drauf. Dann werdens halt zwei. Wenn ich das mit Interrupts machen möchte, muss der dannn bei beiden Flanken auslösen. In der Bascom-Hilfe steht aber bei "CONFIG INTx": "CHANGE to generate an interrupt on the change of the edge. Not all microprocessors support CHANGE."
    Weiß jemand ob das beim Tiny25 geht oder weiß wer einen anderen 8-pinner bei dem das sicher geht? Ansonsten mach ich es halt über die Hauptschleife

Berechtigungen

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