Unregelmässiges PWM Signal

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 25 11 2024  16:38:11      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Unregelmässiges PWM Signal
Suche nach: pwm (3619)

    







BID = 448915

stuckima

Neu hier



Beiträge: 26
Wohnort: Schweiz, Bern
 

  


Hallo zusammen

Ich habe wieder einmal ein Problem und könnte eure Hilfe gebrauchen.
Ich habe auf einem Lochrasterprint einen ATmega48 und einen Motoren Treiber (A3952) aufgebaut. Mit diesem Aufbau steure ich über PWM einen kleinen Motor an. Funktioniert eigentlich auch nicht schlecht doch es ist mir aufgefallen das der Motor manchmal für sehr kurze Zeit schneller dreht als er sollte.
Um zu überprüfen was da genau abläuft mit dem PWM Signal nahm ich den KO hervor. Den Motor nahm ich weg da man durch die Störungen die der Motor verursacht auf dem KO nichts mehr erkennen konnte.
Schon bald konnte ich auf dem KO sehen wieso der Motor manchmal schneller dreht. Es wird von Zeit zu Zeit ein PWM Signal übersprungen das heißt das Low Signal wird mit zwei High Signalen überbrückt (Schwierig zu erklären, deshalb habe ich Bilder gemacht ). Dies ist nicht der einzige Fehler den ich feststellen konnte, ich habe auch noch gesehen das manchmal das PWM High Signal zu kurz ist (auch hier gibt es wieder ein Bild). Diese Fehler tretten sowohl direkt nach dem Controller wie auch nach dem Motoren Treiber auf.

Kann sich jemand von euch dieses "Phänomen" erklären? Oder hat jemand schon ähnliche Erfahrungen gemacht?

Einstellungen PWM:
Phase Correct
Teilverhältnis: 256 --> Arbeitsfrequenz PWM 72KHz (Oszillator 18.432MHz)
Vergleichsregister beinhaltet den Wert 900

Erklärung zum Bild:
Das zweite Signal neben dem PWM Signal ist eine Überprüfung ob ich aus meiner Software Routine "geflogen" bin.

Sollten noch Wichtige Angaben fehlen werde ich die nachliefern.

Ich bedanke mich schon mal jetzt.
Gruss Mathias

BID = 448937

stuckima

Neu hier



Beiträge: 26
Wohnort: Schweiz, Bern

 

  

Die Bilder waren leider im .tif Format. Da sich diese nicht einfach über den Browser öffnen lassen schicke ich sie jetzt noch im .png Format.







[ Diese Nachricht wurde geändert von: stuckima am  8 Aug 2007 10:44 ]

BID = 449028

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Moin,

Ich habs jetzt nicht nachgerechnet, aber eventuell ist dein Watchdog aktiv und resettet die CPU.

Sowie ich das sehe, hast du eine Routine die ein Rechteck erzeugt, als Überprüfung sozusagen. Sorge mal, debugmäßig, dafür, dass dort noch ein wdr oft ausgeführt wird. Sollte das die Ursache gewesen sein, dann sollte die PWM sauber sein. Zudem mal nachschauen, ob die Fusebits möglicherweise den Watchdog aktivieren.


Mich würde auch interessieren, wie das Programm aussieht, also nur die entsprechenden Stellen, an denen der irgendwas in OCR-Registern gemacht wird und an denen der Timer initialisiert wurde.


Wie sieht es mit der Versorgungsspannung aus? Die ist nicht so ohne, wenn man parallel dazu Motoren daraus speist.

Ich habe jetzt nicht alle Schirmbilder angesehen ob das zeitmäßig hinhaut (denn man sollte dann doch sehen können, ob es Ungereimtheiten im Rechteck unten gibt). Sollte eher ein Anfang sein

_________________

BID = 449194

stuckima

Neu hier



Beiträge: 26
Wohnort: Schweiz, Bern

Danke für die Antwort.

Hab den Watchdog überprüft und er ist nicht aktiv (Fuse Bit ist nicht gesetzt).
Ich programmiere in C also habe ich anstelle von wdr wdt_reset() genommen, dies hat aber keinen Einfluss gehabt.
Eingespiesen wird das ganze über 24V und dann über einen DCDC Wandler (TEN3-2411) werden 5V generiert.


Code :

//PWM Initialisierungs Funktion

void PWM_ON (void)
{
TCCR1A = (1<<WGM11)|(1<<WGM10); //PWM, Phase Correct, 10-bit --> Datenblatt S. 126
TCCR1A |= (1<<COM1A1); //PWM aus --> ist Zähler beim hochzählen gleich OCR1A (Vergleichsregister); PWM ein --> ist Zähler beim runterzählen gleich OCR1A; --> Datenblatt S. 125
TCCR1B = (1<<CS12); //Arbeitsfrequenz für PWM einstellen --> uC Frequenz mit 256 Teilen = 18,423 / 256 = 72Khz
}


Ich bin mir nicht sicher ob du diesen Code Teil gemeint hast. Habe aber noch den ganzen Code beigefügt.



BID = 449473

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hallo,

Wie sieht es denn mit der Versorgung aus? Blockkondensatoren vorhanden? Miss mal die Versorgungsspannung des µCs mit dem Oszi und schau nach, ob die unter einen gewissen Wert fällt. Dann kommt nämlich die Brown-out-Schaltung ins Spiel und startet den Prozessor neu.

_________________

BID = 449491

stuckima

Neu hier



Beiträge: 26
Wohnort: Schweiz, Bern

Jep Blockkondensator ist vorhanden.
Habe meinen Aufbau nach dieser "Anleitung" aufgebaut:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment

Spannung sieht wunderbar aus (leider). Keine Anzeichen von Spannungseinbrüchen oder ähnlichem.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 182397616   Heute : 4812    Gestern : 7548    Online : 774        25.11.2024    16:38
6 Besucher in den letzten 60 Sekunden        alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0297129154205