Problem vid generering av sinusvåg från PWM, PIC12F617
Postat: 22 september 2010, 16:30:34
Hej!
Jag försöker bygga en sinusvåggenerator mha PIC12F617. Tanken är att skapa en PWM signal där duty motsvaras av aktuell amplitud i sinusvågen och sedan lågpassfiltera med ett RC-filter (R i serie, C parallellt med last). Min tanke var att skapa en sinusvåg med 1Hz och PWM frekvens på 64Hz. Jag har en look-up tabell med 64 värden (0-2pi) som jag således matar in en efter en och byter alltså duty efter varje period. Den biten fungerar ok vad jag kan se på oscilloskopet, dvs 0-100-0% duty osv. Problemet kommer när jag filtrerar signalen. Jag använder C=10uF, R=1k vilket enl. mina beräkningar (f=1/(2piRC)) borde ge en brytfrekvens på ~15Hz. Signalen som jag får ut (efter RC-filtret) ser ut som någon grotesk böjd sågtand som stegvis går up och ner med uppskattningsvis 1Hz. Min tanke är att filtret är fel utformat, kanske ligger för nära PWM frekvensen?
Ett litet bekymmer är att jag inte kan öka PWM frekvensen så mycket. Har skrivet en SW PWM rutin i Hi-tech C men den är rätt seg, kan nog bara komma upp i kanske 200Hz. HW PWM är ju ett alternativ men jag är lite osäker på hur jag skall få till sinusvågen till rätt frekvens då.
Några tips eller idéer eller tänker jag galet?
Jag försöker bygga en sinusvåggenerator mha PIC12F617. Tanken är att skapa en PWM signal där duty motsvaras av aktuell amplitud i sinusvågen och sedan lågpassfiltera med ett RC-filter (R i serie, C parallellt med last). Min tanke var att skapa en sinusvåg med 1Hz och PWM frekvens på 64Hz. Jag har en look-up tabell med 64 värden (0-2pi) som jag således matar in en efter en och byter alltså duty efter varje period. Den biten fungerar ok vad jag kan se på oscilloskopet, dvs 0-100-0% duty osv. Problemet kommer när jag filtrerar signalen. Jag använder C=10uF, R=1k vilket enl. mina beräkningar (f=1/(2piRC)) borde ge en brytfrekvens på ~15Hz. Signalen som jag får ut (efter RC-filtret) ser ut som någon grotesk böjd sågtand som stegvis går up och ner med uppskattningsvis 1Hz. Min tanke är att filtret är fel utformat, kanske ligger för nära PWM frekvensen?
Ett litet bekymmer är att jag inte kan öka PWM frekvensen så mycket. Har skrivet en SW PWM rutin i Hi-tech C men den är rätt seg, kan nog bara komma upp i kanske 200Hz. HW PWM är ju ett alternativ men jag är lite osäker på hur jag skall få till sinusvågen till rätt frekvens då.
Några tips eller idéer eller tänker jag galet?