Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
#41
(12-25-2014, 11:31 AM)gigabyte091 Wrote: @mikikg,

zanima me kako promjeniti PWM frekvenciju na Attiny MCU, točnije Attiny84.

Htio bih ju podić na 32500 ili više Hz za potrebe step-down pretvarača.

...
Kako se to ručno može podesiti ?
...

E sad još jedno važno pitanje, koji tajmer bi na Attiny84 utjecao na funkcije delay() i ostale ?

Tek sad sam upao na forum pa da napisem koju ako ti je jos aktuelno ovo, prosle godine mi je trebao brzi pwm iz atmega, uz malo trikova koje se daju naci na netu stvar radi. Ima opcija 62.5Khz na 1pinu pwm, sto bi bilo odlicno za neki drajver, ili ako ti treba 2 izlazni u kontra fazi, stim sto mozes softverski da podesavas nezavisno pwm na oba izlaza , meni je to bilo zanimljivo za varijantu STEP-DOWN pretvaraca gde sam umesto donje diode koristio mosfet cime se drasticno smanjuju gubici na vecim strujama jer nema diode na kojoj bi disipirala toplota kada "gura" prema kalemu. Znaci stepdown sa 2 mosfeta na izlazu u kontrafazi, i plus softversko podesavanje koliko ce donji mosfet da vodi kada gornji miruje. Stvar odlicno funkcionise i sto je najbitnije proba radjena sa 12v ulaz, 5v 5Amp izlaz bez ikakvih hladnjaka , jedva primetno da se ista greje, da ne kazem hladno. Kada se setuju tajmeri na ovaj nacin za fast pwm obrati paznju da funkcija DELAY ne radi tacno, za 1sekundu trebas upisati priblizno delay(62000); ako se ne varam, da ne probavam sad posto mi nije na stolu vise uredjaj.


Code:
//******arduino pwm 5 i 6 u kontrafazi*******//
// TEST program //
#define OCR0A pin6
#define OCR0B pin5
#define OCR2A pin11
#define OCR2B pin3
int led = 13;

void setup(){
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(led, OUTPUT);    

//biranje moda > single 62Khz ili dual u kontrafazi na 31Khz.
//TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM01) | _BV(WGM00); //62KHz fast pwm
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00); //31KHz phase shift
TCCR0B = _BV(CS00) ; //set prescaler to 1

   //TCCR0A |= (1 << COM0A1);>  // set none-inverting mode
       //TCCR0A |= (1 << COM0A0); //pin6  invert mode
       TCCR0A |= (1 << COM0B0);   //pin5  invert mode

   // set none-inverting mode

}
int k;
void loop(){

OCR0A = 50;
OCR0B = 100;  // 255 - vrednost

k++;
if(k==95) { k=0; };
  OCR0A=k;

 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(5000);               // wait for a second
 digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
 delay(5000);

}

Da ne objasnjavam delove, radi se o test setupu sa fiksnim pwm na jednom izlazu i promenljivim na drugom jer sam testirao ponasanje stepdown i performansi u zavisnosti od toga koliko utice vreme vodjenja tranzistora koji je na masi na iskoriscenje.
Evo i slikice test setupa :
http://www.electronicproducts.com/images...ug2009.gif
Reply


Messages In This Thread
RE: Arduino - tutorijali, pitanja, primjeri i projekti - by ddanijel - 04-12-2015, 09:28 PM

Forum Jump:


Users browsing this thread: 18 Guest(s)