loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

um 180° phasenverschobene PWM

 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> BASCOM
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Wolfgang



Anmeldungsdatum: 06.10.2008
Beiträge: 14

BeitragVerfasst am: Di 03.Aug 2010 15:16:32    Titel: um 180° phasenverschobene PWM Bauteile finden Antworten mit Zitat

Hallo,
für einen kleinen gegentakt Wandler benötige ich eine PWM mit zwei Ausgängen welche zueinander um 180° phasenverschoben ist.Hierfür möchte ich den Mega8 benutzen,genauer die beiden OCR (Compare) Register des Timer 1.Beide Ausgänge (OCR1a/OCR1b) dürfen niemals gleichzeitig HI Pegel führen sollen aber in ihrer Pulsbreite gemeinsam regelbar sein und da setzt mein Problem an.Ich bekomme es nur hin,daß beide OCR Ausgänge immer zeitgleich HI oder Lo Pegel haben.Meine Frage:gibt es da eine spezielle Timerconfiguration die das ermöglicht oder muß man das per "Hand" machen? Wer kann helfen?

Gruß
Wolfgang
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektron



Anmeldungsdatum: 16.03.2008
Beiträge: 1049

BeitragVerfasst am: Di 03.Aug 2010 15:47:57    Titel: Bauteile finden Antworten mit Zitat

Ganz langsam^^

Also du hast ein PWM Signal mit einer bestimmten Frequenz an 2 Ausgängen liegen, richtig? Und Du willst, dass der zweite Ausgang immer low ist, wenn der erste high und andersherum?

Was genau hast Du damit vor?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Wolfgang



Anmeldungsdatum: 06.10.2008
Beiträge: 14

BeitragVerfasst am: Di 03.Aug 2010 16:21:45    Titel: Bauteile finden Antworten mit Zitat

Elektron hat folgendes geschrieben:

Also du hast ein PWM Signal mit einer bestimmten Frequenz an 2 Ausgängen liegen, richtig? Und Du willst, dass der zweite Ausgang immer low ist, wenn der erste high und andersherum?

Was genau hast Du damit vor?


Exakt,so sollte es sein Very Happy .Hast du eine Idee wie ich die beiden OCR Register dazu bekomme damit sie das machen? Damit möchte ich einen Vollbrückenwandler samt Treiber ansteuern.

Gruß
Wolfgang
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Di 03.Aug 2010 18:48:31    Titel: Bauteile finden Antworten mit Zitat

Vollbrückenwandler?

Müsstest du dann nicht sicherheitshalber sogar noch eine winzige Pause zwischendrin haben? Du hast ja auch bei Elektronik noch eine minimale Schaltverzögerung - da können ja theoretisch sogar noch Leiterbahnkapazitäten sich auswirken?

Gruß Rainer

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Di 03.Aug 2010 20:05:14    Titel: Bauteile finden Antworten mit Zitat

moin

Vollbrücke ? wieviel Kilowatt willste denn da drüber schaufeln Wink oder soll es eine Motoransteuerung werden?
Für Motorsteuerung verweise ich auf www.roboternetz.de und auf die entsprechenden Motorsteuerungen.

Da das Thema nicht gerade trivial ist ,schau dir mal die Seite :

http://schmidt-walter.eit.h-da.de/smps/vgw_hilfe.html

an und rück mal mit ein paar Infos raus wie zBsp.
was will ich erreichen,wie groß ist...
Schaltfrequenz
Ein/Ausgangsspannung
Strom/Leistung
vorhandene Komponenten
usw.

Infos findet man auch in den Datenblättern der Treiber IC und auf den Herstellerseiten . zBsp. IR2110 kostet 1,20 und hat alles drinn (auch Totzeit) was du brauchst.


mfg

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolfgang



Anmeldungsdatum: 06.10.2008
Beiträge: 14

BeitragVerfasst am: Di 03.Aug 2010 21:26:28    Titel: Bauteile finden Antworten mit Zitat

Hallo Rainer,

pcprofi hat folgendes geschrieben:
Vollbrückenwandler?

Müsstest du dann nicht sicherheitshalber sogar noch eine winzige Pause zwischendrin haben? Du hast ja auch bei Elektronik noch eine minimale Schaltverzögerung - da können ja theoretisch sogar noch Leiterbahnkapazitäten sich auswirken?

Gruß Rainer


ich weiß das du auch schon mal in diese Richtung geforscht hast,man kann das hier diesem Forum entnehmen Very Happy .Eine Pause brauche ich vom Controller her nicht fordern da ich die einfach den Halbbrückentreibern (IR2184) überlasse.Diese kreieren die automatisch.Somit reicht es mir wenn der Controller ein einfaches gegentakt Signal liefert.Mit clear up / clear down ist es allerdings nicht getan...

@Bella,welch Melodie.............. Wink ,nun,der letzte Wandler hat etwas mehr als 4kw "rübergeschaufelt" und macht das noch (sonst hätte ich keinen Strom und könnte hier nicht schreiben Very Happy ),allerdings ohne Mikrocontroller sondern mit einfachen Schaltregler IC´s (zumindest für die Gleichspannungserzeugung @325V) .Die Schaltfrequenz würde ich mit knapp 32kHz belegen wollen,was so ein Mega8 im 8Bit PWM Betrieb so halt schafft.Eingangsspannung ist bei mir 24V,Ausgangsspannung eben besagte 325V DC.Leistung soll er erstmal so um die 100W haben,damit ich das Programm perfektionieren kann.Vorhandene Komponenten,welche meinst du da jetzt genau? Also Messmittel und etwa 20 Jahre Erfahrung im Wandlerbau sind vorhanden.Mit Mikrokontrollern allerdings beschäftige ich mich erst seit kurzem.

Ich vermute aber,eine gegentakt PWM Ausgabe geht mit Controller wohl nicht so einfach.Es sollte so sein wie es ein TL494 oder SG3525 macht nur eine Totzeit braucht nicht vorhanden sein.Das übernehmen die Halbbrückentreiber.


Gruß
Wolfgang
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektron



Anmeldungsdatum: 16.03.2008
Beiträge: 1049

BeitragVerfasst am: Di 03.Aug 2010 22:31:22    Titel: Bauteile finden Antworten mit Zitat

Ich kenne mich auf deinem Gebiet nicht aus, deswegen nicht schlagen wenn ich dich falsch verstanden habe. Wenn du ein etwa 32 kHz Signal auf zwei Pins erzeugen willst, wobei beide Pins zu einer gewissen Zeit im entgegengerichtet ihrem Wert sind, dann kannst du ruhig händisch die Pins mit Verzögerungen in einer Schleife ein- und ausschalten. Das ist natürlich nicht elegant oder sowas (falls mir jetzt jemand kommt, dass mache man ja so nicht), aber es ist schnell gemacht und funktioniert. Ärgerlich ist nur, dass du die Umschaltzeit eines Pins von der Periodendauer abziehen musst, die Grenze ist also erreicht wenn die doppelte Umschaltzeit (du musst ja zwei Pins schalten) gleich der Periodendauer ist, die du maximal haben willst.

Was ich sicher sagen kann, ist, dass man damit locker den Audiobereich abdecken kann. Weil ich die Umschaltzeiten ignoriert hatte klang es etwas schief, aber wie groß der Fehler wirklich war kann ich nicht sagen. Ausmessen würde ich sagen. Wenn der AtMega bei der geforderten Frequenz aus dem letzten Loch pfeifft könnte man das ja besser angehen, aber vermutlich schmiert der sich bei 32kHz nebenbei noch ein Brötchen Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Mi 04.Aug 2010 00:06:41    Titel: Bauteile finden Antworten mit Zitat

moin

der schmiert sie nicht nur,er belegt sie auch gleich Wink

;Timer1 Hardware PWM ****

sollte es evtl. machen - hab jetzt nix zum testen da
aber ruhig mal das Datenblatt konsultieren und nicht vergessen die Portbits für OCR!A+OCR!B vorher auf Ausgang zu schalten .

Die Bedeutung der reg. kannst du dem Datenblatt entnehmen.

****EDIT:
Da es so nicht ging hab ich das jetzt gelöscht und kann nun mal eine
funktionfähige 8bit Hardware PWM mit 180° Phase vorstellen ,allerdings nur in assembler aber das dürfte für die BASCOM Freaks ja kein Problem sein die paar Werte in die entsprechenden Register zu bekommen.

Code:



.include "m8def.inc"

; hier geht das Programm los
.cseg
.org 0



RESET:    ldi r16, high(RAMEND); Main program start
      out SPH,r16 ; Set Stack Pointer to top of RAM
       ldi r16, low(RAMEND)
       out SPL,r16
       sei ; Enable interrupts

      ldi r16,0b00000110   ;Port b1 + b2  auf ausg.
      out DDRB,r16


   ldi r16,0x00
   out TCCR1B ,r16  ;= 0x00; //stop
    ldi r16,0xFF
   ldi r17,0x60
   out TCNT1H ,r16  ;= 0xFF
   out TCNT1L ,r17  ;= 0x60     // Timerstartwert
   ldi r16,0x00
   ldi r17,0xA0
   out OCR1AH ,r16 ;= 0x00;
   out OCR1AL ,r17 ;= 0xA0;     // PWM-Wert A
    ldi r16,0x00
   ldi r17,0xA0
   out OCR1BH ,r16 ;= 0x00;
    out OCR1BL,r17  ;= 0xA0;     // PWM-Wert B
    ldi r16,0xB1
   out TCCR1A,r16  ;= 0xB1; (0b10110001)   (1<<COM1A1 | 1<<COM1B1 | 1<<COM1B0 | 1<<WGM10)
    ldi r16,0x01
   out TCCR1B,r16  ;= 0x01; //start Timer (1<<CS10)


loop: rjmp loop



zum testen in AVRStudio unter Debug option den Takt auf 16Mhz stellen
dann muss man bei Autostep nicht solange warten bis man was sieht .
Viel Spass damit

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolfgang



Anmeldungsdatum: 06.10.2008
Beiträge: 14

BeitragVerfasst am: Fr 06.Aug 2010 13:48:47    Titel: Bauteile finden Antworten mit Zitat

Hallo Bella,
erstmal vielen lieben Dank für deine Tipps Very Happy .
Ok,ASM ist nun so gar nicht mein Ding und selbst in Bascom bin ich noch Anfänger (sonst würde ich ja wissen wie man`s macht Wink ) daher frage ich mal in die Runde ob es hier im Forum jemanden gibt und der dazu noch so freundlich wäre mir das ins Bascom zu übersetzen?

viele Grüße
Wolfgang
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BellaD



Anmeldungsdatum: 03.12.2006
Beiträge: 1708
Wohnort: Klinik der misshandelten Kuscheltiere

BeitragVerfasst am: Fr 06.Aug 2010 23:45:30    Titel: Bauteile finden Antworten mit Zitat

moin

zum experimentieren :
http://www.rn-wissen.de/index.php/Bascom_und_PWM

Ansonsten kann Bascom auch assembler ,nur ist die Schreibweise etwas anders (siehe Bascom Hilfe).


Code:

'--------------------------------------------------------------
'            mega8.bas
'    mega8 sample file
'--------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000
'the internal oscillator of 8 Mhz was choosen in the fusebits

Config Portb = Output

$asm

        ldi r16,$6                                          'Port b1 + b2  auf ausg.
      !out DDRB,r16


   ldi r16,$00
   !Out Tccr1b , R16                                        ';= 0x00; //stop
    ldi r16,$00
   ldi r17,$60
   !Out Tcnt1h , R16                                        ' ;= 0xFF
   !Out Tcnt1l , R17                                        ';= 0x60     // Timerstartwert
   ldi r16,$00
   ldi r17,$80
   !Out Ocr1ah , R16                                        ';= 0x00;
   !Out Ocr1al , R17                                        ';= 0x80;     // PWM-Wert A    50/50
   ldi r16,$00
   ldi r17,$80
   !Out Ocr1bh , R16                                        ';= 0x00;
    !Out Ocr1bl , R17                                       ';= 0x80;     // PWM-Wert B    50/50
    ldi r16,$B1
   !Out Tccr1a , R16                                        ';= 0xB1; (0b10110001)   (1<<COM1A1 | 1<<COM1B1 | 1<<COM1B0 | 1<<WGM10)
    ldi r16,$01
   !Out Tccr1b , R16                                        ';= 0x01; //start Timer (1<<CS10)

$end Asm

Do

Loop

End

_________________
Eine Weiterverbreitung ohne ausdrückliche Genehmigung ist untersagt. Für Schäden, lehnen wir jegliche Haftung ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolfgang



Anmeldungsdatum: 06.10.2008
Beiträge: 14

BeitragVerfasst am: Mo 16.Aug 2010 18:50:11    Titel: Bauteile finden Antworten mit Zitat

Hallo Bella,
leider bin ich jetzt erst dazu gekommen deinen Code zu testen und leider nein,das ist es nicht.Dein Code invertiert nur einen PWM Kanal so wie es Bascom mit Compare A Pwm = Clear Up / Compare B Pwm = Clear Down machen würde.Weitergehend habe ich mir weiter Gedanken gemacht und festgestellt,....

ok,ab hier edit.
So muß es ausehen:

Code:

'-------------------------------------------------------------------------------
'
'                               Gegentakt PWM
'
'-------------------------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 60
$swstack = 40
$framesize = 80



Config Portb.1 = Output
Config Portb.2 = Output
Config Portc.3 = Input


Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , _
Compare A Pwm = Clear Down , Compare B Pwm = Clear Up
Enable Timer1


Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc


Dim Wert As Word
Dim Pwm As Byte


Do

Wert = Getadc(3)


      If Wert < 512 Or Pwm <= 0 Then
      Pwm = Pwm + 1
      End If

      If Wert > 512 Or Pwm => 126 Then
      Pwm = Pwm - 1
      End If


Pwm1a = Pwm
Pwm1b = 255 - Pwm



Loop
End
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anzeige






Verfasst am: Heute 00:01:06    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> BASCOM Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1220526
©opyright by Markus Vohburger 2005 All Rights reserved