mistähän löytyy sellaisia avr pwm ohjeita, jotka ovat teknisesti täsmällisiä ja oikeita?
Tässä on toki 1 linkki:
http://www.ermicro.com/blog/?p=1971
mutta em. linkin takana oleva aineisto EI vakuuta täsmällisyydellään!
Miksikö?
lainaus em. sivulta:
Vaverage = DutyCycle * Vcc
ja tuo kaavahan on väärin !
Tässä esimerkki, joka osoittaa kaavan vääräksi:
esim:
otetaan 115V, 1150W kuumennusvastus.
Jos ko. kuumennusvastus kytkettäisiin sellaisenaan 230V jännitteeseen, se antaisi tehoa 4*1150W = 4600W mikä johtaisi ylikuumenemiseen ja em. kuumennusvastuksen rikkoutumiseen.
(edellä on oletettu, että em. kuumennusvastuksen resistanssi olisi vakio, todellisuudessa resistanssa voi jonkin verran riippua lämpötilasta, mutta sitä ei ole näissä laskelmissa otettu huomioon, joskin se pitäisi ottaa, jos halutaan tieteellistä täsmällisyyttä !)
Jos ko. kuumennusvastusta ohjataan siten, että sille annetaan joka toinen vaihtovirran kokoaaltojakso ja joka toisen kokoaaltojakson ajaksi virta katkaistaan, tämä pudottaa keskimääräisen tehon puoleen, eli esimerkissä 4600W / 2 = 2300W, mikä on siltikin tuplasti alkuperäiseen 115V jännitteelle suunnitellun vastuksen suunnittelutehoon 1150W verrattuna !
Eli jotta saataisiin haluttu 1150W 230V jännitteellä, läpi pitäisi päästää vain joka neljäs kokoaaltojakso, eli duty cycle = 25%.
Eli oikein olisi sanoa, että 25% duty cycle 230V jännitteellä antaa saman tehon kuin 100% duty cycle 115V jännitteellä.
Mutta miksi?
No, selitys lienee näissä kahdessa elektroniikan peruskaavassa:
U = RI (ohmin laki)
ja
P = UI (tehon laki, tasajännitteellä tai silloin vaihtojännitteellä, kun kuorma on 100% resistiivinen)
näistä P = U*U / R
Eli tästä nähdään, että jännitteen kaksinkertaistaminen nelinkertaistaa tehon.
Ja jos se (tehon 4-kertaistuminen) halutaan kompensoida, tulee duty cycle asettaa = 25%.
Tuo, että resistanssin pysyessä vakiona, teho ei ole verrannollinen jännitteeseen, vaan jännitteen neliöön, pitäisi ottaa huomioon duty cycleen eli pulssisuhteeseen liittyvissä laskentakaavoissa, mitä linkatulla sivulla ei ole tehty.
Mutta atmel avr:stä keskusteltaessa, olisi tärkeää välttää myös ns. "one off" -virheet.
Eli, kun puhutaan pwm:stä, siellä (avr:ssä) on laskuri, joka laskee ylös arvoon TOP ja kun se saavutetaan, lasketaan alas arvoon BOTTOM ja laskuri vaihtaa suuntaansa ylöspäin.
Mutta sen lisäksi pwm:ssä verrataan OCR A:han (A-kanava) ja sen ylittyessä output asettuu tilaan 1 ( = 5V) ja kun se alittuu, output vaihtaa tilaan 0 ( = 0V).
Mutta näistäkin puuttuu se täsmällisyys!
Eli, kun ylitys / alitus tapahtuu, vaihtuuko tila heti vai seuraavalla kellojaksolla?
Ja jos seuraavalla kellojaksolla, minkä kellon mukaan ? Täyttä vauhtia menevän CPU-kellon vai downscaletetun timer0,1,2 -laskuria askeltavan kellon ?
Ajoituskysymykset ovat toki eri asioita kuin keskimääräisen (tehollisen) jännitteen laskentakaavat, mutta jos toinen on väärin laskettu, se ei herätä luottamusta tekstin oikeellisuuteen toisenkaan suhteen.
Tavallisen avr timerin compare match and setZero -toiminnon toimintaa tulis testattua pari vuotta sitten mutta jäi tulos kirjaamatta.
Tuo tulos siis on tärkeä tästä syystä:
jos kellon laskuri sisäisesti askeltaa 2,1,0, 2,1,0, ... (haluttu askellus)
niin pitääkö tuo automaattinen reload -arvo asettaa 1,2, vai 3 ?
Kokeilin asiaa juurikin pienellä arvolla ja sen ympärille tehdyllä softalla, joka vilkuttaa LEDiä siten, että LEDin vilkkunopeus riippuu timeristä, jolloin "one off" -virhe logiikan suunnittelussa näkyy heti vääränä LEDin vilkkutaajuutena.
On helppo erottaa 2,3 ja 4...
mutta on vaikeaa erottaa esim. 252, 253 ja 254.
(siis suhteellisesta vilkkutaajuudesta)
Nettisivujen tekijöiltä toivoisi tieteellistä täsmällisyyttä, mutta liian usein sitä ei ole, vaan asiat on "sinnepäin".
Tässä on toki 1 linkki:
http://www.ermicro.com/blog/?p=1971
mutta em. linkin takana oleva aineisto EI vakuuta täsmällisyydellään!
Miksikö?
lainaus em. sivulta:
Vaverage = DutyCycle * Vcc
ja tuo kaavahan on väärin !
Tässä esimerkki, joka osoittaa kaavan vääräksi:
esim:
otetaan 115V, 1150W kuumennusvastus.
Jos ko. kuumennusvastus kytkettäisiin sellaisenaan 230V jännitteeseen, se antaisi tehoa 4*1150W = 4600W mikä johtaisi ylikuumenemiseen ja em. kuumennusvastuksen rikkoutumiseen.
(edellä on oletettu, että em. kuumennusvastuksen resistanssi olisi vakio, todellisuudessa resistanssa voi jonkin verran riippua lämpötilasta, mutta sitä ei ole näissä laskelmissa otettu huomioon, joskin se pitäisi ottaa, jos halutaan tieteellistä täsmällisyyttä !)
Jos ko. kuumennusvastusta ohjataan siten, että sille annetaan joka toinen vaihtovirran kokoaaltojakso ja joka toisen kokoaaltojakson ajaksi virta katkaistaan, tämä pudottaa keskimääräisen tehon puoleen, eli esimerkissä 4600W / 2 = 2300W, mikä on siltikin tuplasti alkuperäiseen 115V jännitteelle suunnitellun vastuksen suunnittelutehoon 1150W verrattuna !
Eli jotta saataisiin haluttu 1150W 230V jännitteellä, läpi pitäisi päästää vain joka neljäs kokoaaltojakso, eli duty cycle = 25%.
Eli oikein olisi sanoa, että 25% duty cycle 230V jännitteellä antaa saman tehon kuin 100% duty cycle 115V jännitteellä.
Mutta miksi?
No, selitys lienee näissä kahdessa elektroniikan peruskaavassa:
U = RI (ohmin laki)
ja
P = UI (tehon laki, tasajännitteellä tai silloin vaihtojännitteellä, kun kuorma on 100% resistiivinen)
näistä P = U*U / R
Eli tästä nähdään, että jännitteen kaksinkertaistaminen nelinkertaistaa tehon.
Ja jos se (tehon 4-kertaistuminen) halutaan kompensoida, tulee duty cycle asettaa = 25%.
Tuo, että resistanssin pysyessä vakiona, teho ei ole verrannollinen jännitteeseen, vaan jännitteen neliöön, pitäisi ottaa huomioon duty cycleen eli pulssisuhteeseen liittyvissä laskentakaavoissa, mitä linkatulla sivulla ei ole tehty.
Mutta atmel avr:stä keskusteltaessa, olisi tärkeää välttää myös ns. "one off" -virheet.
Eli, kun puhutaan pwm:stä, siellä (avr:ssä) on laskuri, joka laskee ylös arvoon TOP ja kun se saavutetaan, lasketaan alas arvoon BOTTOM ja laskuri vaihtaa suuntaansa ylöspäin.
Mutta sen lisäksi pwm:ssä verrataan OCR A:han (A-kanava) ja sen ylittyessä output asettuu tilaan 1 ( = 5V) ja kun se alittuu, output vaihtaa tilaan 0 ( = 0V).
Mutta näistäkin puuttuu se täsmällisyys!
Eli, kun ylitys / alitus tapahtuu, vaihtuuko tila heti vai seuraavalla kellojaksolla?
Ja jos seuraavalla kellojaksolla, minkä kellon mukaan ? Täyttä vauhtia menevän CPU-kellon vai downscaletetun timer0,1,2 -laskuria askeltavan kellon ?
Ajoituskysymykset ovat toki eri asioita kuin keskimääräisen (tehollisen) jännitteen laskentakaavat, mutta jos toinen on väärin laskettu, se ei herätä luottamusta tekstin oikeellisuuteen toisenkaan suhteen.
Tavallisen avr timerin compare match and setZero -toiminnon toimintaa tulis testattua pari vuotta sitten mutta jäi tulos kirjaamatta.
Tuo tulos siis on tärkeä tästä syystä:
jos kellon laskuri sisäisesti askeltaa 2,1,0, 2,1,0, ... (haluttu askellus)
niin pitääkö tuo automaattinen reload -arvo asettaa 1,2, vai 3 ?
Kokeilin asiaa juurikin pienellä arvolla ja sen ympärille tehdyllä softalla, joka vilkuttaa LEDiä siten, että LEDin vilkkunopeus riippuu timeristä, jolloin "one off" -virhe logiikan suunnittelussa näkyy heti vääränä LEDin vilkkutaajuutena.
On helppo erottaa 2,3 ja 4...
mutta on vaikeaa erottaa esim. 252, 253 ja 254.
(siis suhteellisesta vilkkutaajuudesta)
Nettisivujen tekijöiltä toivoisi tieteellistä täsmällisyyttä, mutta liian usein sitä ei ole, vaan asiat on "sinnepäin".
Vastaukset 1
Vanhimmat
Meinasitko rikkoa paljonkin sähkölaitokselta laitteita? Ei sitä pwm:ää voi toteuttaa niin, että otetaan joka n:s pulssi 50Hz:sta, sehän alkaa ihan fyysisesti rynkyttämään generaattorin laakereita hajalle. Tyristoriohjauksessakin minimitaajuus on 50Hz(no tuleehan siinä harmonisia tietysti, kaikki suurempia kuin 50Hz kuitenkin). Parempi vaikka nostaa taajuus muutamaan kHz:iin ja pätkiä sillä 25%:n hyötysuhde. Tosin, häiriöiden kannalta tässä voisi olla sopiva kohta käyttää riittävän isotehoista 1:2 muuntajaa ja unohtaa pwm-kikkailu?
AVR:sta, käypä katsomassa atmelin sivuilta sopiva dokumentti, esim. attiny2313:sta , niin selviää missä tilanteissa OCR-pinni vaihtaa tilaa. Siellä se täsmällisyys asuu.