ATmaga 32 Timer CTC-Mode und Faulhaber-Schrittmotor

Status
Für weitere Antworten geschlossen.

warms0

Neues Mitglied
19. Juni 2008
10
0
0
Sprachen
Hallo
ich will mit einem ATmega 32 ein Rechtecksignal erzeugen um einen Faulhaber-Schrittmotor über eine Faulhaber-Leistungsplatine zu betreiben. Das geht laut Datenblatt des Motors und der Elektronik problemlos bis zu einer Frequenz von 6000Hz. Aber leider nicht bei mir, da brummt der Motor nur noch wenn er über einer Frequenz von 60Hz betrieben wird. Was mir aber auffällt, ist, mein Signal ist kein sauberes Rechtecksignal. Siehe Anhang.
Ich stelle die Bits an den Timern0, 1, oder auch 2 so, dass folgendes erreicht wird:
Non-PWM-Mode
Toggle Port... on Comparematch
Das bedeutet doch, dass der Ausgangspin immer, wenn der Vergleichswert erreicht wird, umgeschaltet wird von low auf high oder zurück.
In der Zeit dazwischen kann doch folglich die Spannung nicht absinken oder ansteigen???
An was liegt das?
An was kann das liegen???
Das ist bei allen 3 Timern übrigens das Selbe!
Bitte, helft mir!

Danke im Voraus
Warms0
 

Anhänge

  • Mega32.png
    Mega32.png
    16,9 KB · Aufrufe: 28
Hallo Warms,

so sieht das Signal direkt am OutputCompare-Pin aus? Das ist schon seltsam. Hast du das Signal richtig an die Treiber-Platine angeschlossen?

Wenn du ToggleOnCompareMatch richtig eingestellt hast, ändert sich der logische Zustand des OutputCompare-Pins bei jedem Compare-Ereignis, das stimmt.

Kannst du einmal deine Timerkonfiguration hier in das Forum stellen, eventuell auch mal das Schaltbild, dann kann man hier vielleicht eher weiterhelfen.

Du musst auch darauf achten, dass du die maximal zulässigen Werte für Beschleunigung und Abbremsen des Motors nicht überschreitest.

Grüße,
Dirk
 
Hallo Dirk, anbei der Code in Bascom:

'Timer0, kein PWM, Toggle OC0 / PortB.3 bei Comparematch

Ddrb.3 = 1 'PinB.3 / OC0 ist Ausgang und liefert das PWM-Signal

Tccr0 = &B00011100 'Pin OC0 / PortB.3 toggeln, kein PWM
'Timerreset bei Compare, Clock/256 (8,64,256,1024)

Ocr0 = 60 'Vergleichswert an OCR0 setzen

was meinst Du dazu?

Ich glaube ich habe verstanden was du meinst,- ich muss den Motor beschleunigen (mit einer Rampe hochfahren) da ansonsten der Motor bei sofort vorgegebener hoher Geschwindigkeit eine nicht realisierbare Beschleunigung als Steuerinfo erhält. Ich glaube da dachte ich falsch,- ich war der Meinung die Leistungsstufe von Faulhaber macht automatisch eine Rampe...) Das versuche ich jetzt mal am Wochenende.

Gruß
Warms
 
Hallo Warms,

die Timer-Konfiguration scheint schon richtig zu sein:
  1. OC0-Pin (PB3) aus Ausgang gesetzt
  2. Register TCCR0:
  • Prescaler 256 (CS02=1, CS01=0, CS00=0)
  • CTC-Mode (WGM01=1, WGM00=0)
  • Toggle OC0 on Comparematch (COM01=0, COM00=1)
Hast du die Möglichkeit das Signal direkt am Pin OC0 mit Oszilloskop zu überprüfen, ohne angeschlossene Treiberplatine?!

Ich weiß nicht, ob die Leistungsendstufe die Beschleunigungs- und Bremsrampen selber erzeugt, soweit habe ich mich nicht in das Dokument reingelesen.
Ich würde einfach erst einmal mit niedrigen Frequenzen (Drehzahlen) anfangen, dort wo der Motor auch ohne Rampen läuft.

Grüße,
Dirk
 
HalloDirk,
ich habe seit ein paar Tagen ein Computer-Oszilloskop. Mit der Messerei bin ich mir aber nicht sicher. Stimmen denn die Werte die ich messe, wenn ich die Sonde direkt an den Pin des Controllers halte - oder fällt dann die Spannung ab weil der Strom zum PC fließst?
Das Diagramm in meinem ersten Beitrag ist übrigens direkt am Pin abgegriffen!
Entschuldige falls ich hier ein paar dähmliche Fragen stelle, aber Vorlesung E-Technik ist 35 Jahre her...
Gruß
Warms0
 
Hallo Warms,

ich glaube du misst nur den Weckselanteil, du musst den Messeingang auf DC stellen. Wiederhole die Messung nochmal, ich vermute, dass dein Programm richtig läuft, zumindest die Einstellung des Timers wird stimmen.

Wenn das Signal dann richtig aussieht, würde ich als nächsten Schritt eine kleine Frequenz einstellen und dann prüfen wie der Motor sich verhält.

Entschuldige falls ich hier ein paar dähmliche Fragen stelle...

... dämliche Fragen gibts doch garnicht :D

Grüße,
Dirk
 
Hallo Dirk,
ich hab den Controller nun mal aus der Platine herausgenommen und gemessen. Dann passt alles. Ich glaube dass in meiner Anschlussmethode (ein selbstentwickelter Entwurf über SprintLayout) etwas nicht stimmt. Werde mal alles prüfen. Als Anhang sende ich das Layout als PDF. Vielleicht entdeckst Du etwas.
Gruß Wilhelm
Ps: es scheint nicht nur der dämlich zu sein, der nämlich mit "h" schreibt, sondern auch der, der dämlich mit "h" schreibt. Entschuldige den Orthographiefehler.
 

Anhänge

  • Platine.pdf
    27,8 KB · Aufrufe: 28
Hallo Wilhelm,

kurze Einmischung: Ich finde, wir sollten uns nicht für Schreibfehler entschuldigen. Wer dämlich mit "h" schreibt, hat vielleichjt "schnell mal etwas geschrieben". Ich übersehe schon mal Großschreibung; das macht mir gar nichts.

Apropo: Ich bleibe bei der alten Rechtschreibregelung. Es ist mir zu dämlich, z. Bsp. Stop mit zwei "p" zu schreiben. Und aufwendig bleibt, wie es ist., diensthabender bleibt zusammen, usw.

Kein neuer Thread, nur eine kurze Bemerkung.

Grüsse und schönes Wochende,

Michael
 
Hallo Wilhelm,

ich kann soweit keinen Fehler an deiner Platine feststellen, kann jetzt natürlich nicht sagen, ob ein Fehler beim Anschluß an die Motortreiber-Platine vorliegt.
Ich würde einfach erst einmal direkt am AVR messen, also Motortreiber-Platine nicht anschließen. Dort solltest du am Pin PB3 (OC0) ein Rechtecksignal messen. Ist das Rechtecksignal messbar, dann gleich die Frequenz überprüfen, die ist ja abhängig vom Inhalt des Registers OCR0.

Im Forum haben wir ein kleines Tool zur Berechnung der Compare-Werte eines Timers, vielleicht hilft dir das bei der Überprüfung der Frequenz etwas weiter: AVR-Timer-Calculator

Grüße,
Dirk
 
Hallo Dirk,

ich habe zwar lange nichts mehr hören lassen, das Problem besteht aber weiterhin. Ich habe mittlerweile ein sauberes Rechtecksignal und trotzdem ist bei 600Hz Schluss. Beschleunigen, Rame, usw... bringt alles nichts. Ich habe nun einen neuen Beitrag hierzu angelegt. Vielleicht schaust Du da mal rein!
Gruß Warms0
 
Status
Für weitere Antworten geschlossen.

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)