Pazi, ajde da krenemo u resavanje problema i da probam da ti obrazlozim malo korake.
Kupijes jedan Arduino Uno, cena kod nas oko 3000, iz kine ako narucujes ~5 dolara. Te diode pretpostavljam da imas vec, imam i ja 20ak toplo belih od 3W koje sam bas sa arduinom koristio i to bas za dimovanje pa znam i kako se ponasaju.
Sa MOSFETima nisam radio sa tim diodama, nasao sam da mi je dovoljan jedan tranzistor (treba naci to sve u kutiji a tek sam ustao) sa nekim malo jacim hfe i ~48V 6A, kuciste mu je takvo da moze cak i da se nakaci hladnjak. Verujem da ako je to izvodljivo mozes lakse da odradis nego sa MOSFETom kome treba jos jedan tranzistor da ga vozi. Pogledacu posle koje sam tacno tranzistore uzimao pa cu ti javiti.
E sad, ovako, arduino na sebi ima nekih 20 izlaza. 14 njih je radi/ne radi, 6 njih je PWM. Standardan PWM bez cackanja bilo cega u arduinu ima vrednosti 0-1024 (kapiram da ti vise i ne treba). Recimo uzmes izlaz 1 (lupio sam), i das mu vrednost 1 od 1024. On radi na ogromnoj frekvenciji, par KHz, i na svakih 1024 delova tog vremena, jednom ce da trepne, dovoljno brzo da stvara utisak kao da konstantno svetli. Zivotinje koliko god da imaju dobru percepciju, nece primetiti da to treperi. Kada vrednost podesis na 512, PWM je na 50%, i svaki drugi impuls daje struju, svaki drugi ne, LED stvara utisak da gori na 50%. E sad, arduino se napaja sa 5V, on na sebi ima pretvarac za 5V, dakle tih 12V samo ubodes u konektor na arduino, nikako direktno u PIN jer ce ti izgoreti cip. Na PWM izlaze na arduinu kacis tranzistore i dovod 12V, koji potom salju 12V dalje ka potrosacima, i verovatno neki otpornik (tu se malo eksperimentise sa unimerom, svaki tranzistor sa nekom vrstom otpornosti daje razlicite vrednosti na izlazu, najbolje da meris sa unimerom, znaci 1/1024 PWM sto je recimo 0.5mA da ti daje 20mA na izlazu tranzistora, itd, itd... nadam se da si razumeo ovaj deo. Znaci na arduino izlaz prvo otpornik pa tranzistor i eksperimentises sa PWM koliko dobijas struje na izlazu, jer tranzistori ne daju pravi linearan izlaz, ima manjih odstupanja!!! Recimo nekih 10% da ce biti, ali to je stvarno nebitno u tvom slucaju gde precizna struja ne igra ulogu! Takodje imaj u vidu da LED ne svetli bas u skladu sa strujom linearno, i tu imas odstupanja i neki koeficijent iskoriscenosti, najbolja iskoriscenost je negde na 50%, najmanji su gubici na toploti tad...
Sto se tice programiranja, uz arduino uno dobijes i USB kabl kojim ga zakacis na kompjuter, instaliras Arduino IDE, otvoris radno okruzenje, krenes da pises program. Da ti skratim na otprilike onaj deo koji ce ti biti bitan.
int led1 = 9;
int led2 = 10;
...
Ovim komandama prvo definises na kojim pinovima su ti zakacene diode da bi se posle lakse snasao. Gledaj da ih kacis na PWM izlaze kako bi ih posle kontrolisao.
int jacinaosvetljenja = 0;
Deklarises promenljivu za vrednost osvetljenja. Recimo da ona za pocetak ima vrednost 0, i da LEDovi ne rade.
E sad, arduino ima loop petlju, koja se izvrsava dok god uredjaj radi. Ovo iznad si sve deklarisao pre nje.
void loop() {
//kod koji ce se izvrsavati neprestano dok uredjaj radi...
}
Sad kad si valjda skontao ove osnove, u toj loop petlji treba dodati par komandi da bi to sve radilo. Koristice ti komanda delay(br-milisekundi) kako bi odlagala izvrsavanje dalje funkcije. Takodje ti treba funkcija analogWrite(led-br, jacinaosvetljenja) koja menja izlaz na PWMu, tj vrednost izmedju 0 i 1024, tacnije kontrolise koliko LED jako svetli
Recimo ubacis ovako u loop petlju:
void loop() {
jacinaosvetljenja = jacinaosvetljenja + 1;
analogWrite(led1, jacinaosvetljenja);
delay(100000);
}
Ovim kodom bi postigao da se na svakih 100 sekundi povecava kolicina osvetljenja na led1 izlazu za 1/1024 snage. Ovo je naravno sve "golo" i treba malo da se doradi, ali otprilike ovako resavas ceo svoj problem.
Ako ti cela prica odgovara i deluje izvodljivo, kreni u izradu, pa cemo usput da ti pomazemo svi, kad fizicki budes imao arduino bice ti mnogo lakse i sve da skapiras :)
THE ONLY EASY DAY WAS YESTERDAY