|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 11 22, 00:36. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Arduino "plaukioja"
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 3 Pereiti prie 1, 2, 3 Toliau |
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 04, 13:36 |
|
|
|
Situacija parasta. Daromas apšvietimas su mirganciom lempom (220V 10W LED), lempos valdomos dviem išejimais tarkim A ir B, persijungimas turi būti tikslus, kadangi naudojamos ne kaitrinės o LED lemos, jei bus suvėlavimas ar paskubėjimas kurio nors kanalo persijungimo metu, bus blyksniai. Lempos apšvies skaitomą teksą, tai blyksniai labai kerta per akis.
Taigi panaudojus arduino ir parašius pačią parasčiausią mirksiuko programą, rezultatas netenkino. Lempos persijunginėjo bet su blykčiojimu. Nufilmavus su slow montion kamerą pamačiau, kad persijungimo metu, lempos šviečia visos (A ir B)kelias mili sekundes...
https://youtu.be/wlOwz6vB0Lg
int L1 = 2;
int L2 = 3;
void setup() {
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
}
void loop() {
digitalWrite(L1, 0); // ON
digitalWrite(L2, 1); // OFF
delay(400);
digitalWrite(L1, 1); // OFF
digitalWrite(L2, 0); // ON
delay(400);
}
Tuomet papildžiau programos kodą, tarp persijunginėjimų darašiau užlaikymus.
int L1 = 2;
int L2 = 3;
void setup() {
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
}
void loop() {
digitalWrite(L1, 0); //ON
digitalWrite(L2, 1); //OFF
delay(400);
digitalWrite(L1, 1); //OFF
digitalWrite(L2, 1); //OFF
delay(20);
digitalWrite(L1, 1); //OFF
digitalWrite(L2, 0); //ON
delay(400);
digitalWrite(L1, 1); //OFF
digitalWrite(L2, 1); //OFF
delay(20);
}
Rezultas pagerėjo, bet po kelių mirgsėjimo ciklų vėl sublykčioja,vėl pagerėja, vel sublykčioja, toks jausmas kad pats valdiklis plaukioja dirba nestabiliai.
https://youtu.be/QFyQ9OgHY7Y
Gal blogai kodą parašiau, kas galit pagelbėkit |
|
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 04, 13:56 |
|
|
|
Gudresni gal su programa padės, o aš galiu paguosti tik tiek, kad kai kurios geležies portų valdymas gali būti "aptarnaujamas" skirtingais laikais. Be to, buvau ir pats pakliuvęs į tokią kvailą situaciją, kad ta pati programa įrašyta į visiškai tuščią valdiklį elgėsi vienaip, o perrašyta antrą kartą į tą patį valdiklį - sukvailiojo su laikais. Turėtų būti mistika, bet gudresni žmonės viską kompiliatoriui nurašė |
|
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 04, 15:09 |
|
|
|
Keletas pasiūlymų:
1. Siekiant užtikrinti vienalaikiškumą išėjimuose reikėtų jungti visus išėjimus prie vieno porto ir nenaudoti digitalWrite()funkcijos, o rašyti tiesiai į visą portą pvz.:
2. Pasitikrink su oscilografu kaip atrodo išėjimų valdymas. Gal ten viskas ir taip gerai, o jei negerai - tvarkyk.
3. Gali būti, kad pačios lemputės užsidega ir užgesta su skirtingais užlaikymais dėl pvz. naudojamo LED draiverio veikimo, šiek tiek besiskiriančių vidinių komponentų reikšmių.
4. Gali būti, kad LED lempos sinchronizuojasi prie elektros tinklo 50Hz tinklo nulio kirtimo ir visas valdymas taip pat tada turi būti sinchronizuotas. |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 04, 17:30 |
|
|
|
tai kaip man valdyti tas lempas vadinas simistorius cia irgi netinka |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 04, 17:46 |
|
|
|
Tau netinka buitines LED lempos su savais balastais, nebent jas modifikuotumei, kad pasidarytu sinchroniskai valdomos. |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 04, 19:48 |
|
|
|
na teks atsisakyt sviesos efektu prie kuriu eitu skaityti teksta. Paliksiu nuolat svieciancias. |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 05, 20:49 |
|
|
|
Nera labai sudetinga Arduina sinchronizuoti su 50Hz tinklu.
O kame čia esmė, kam reikia mirgėjimo skaitant? |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 05, 21:25 |
|
|
|
bachurelis rašo: |
Nera labai sudetinga Arduina sinchronizuoti su 50Hz tinklu.
O kame čia esmė, kam reikia mirgėjimo skaitant? |
Na man irgi čia tūpas reikalas kažkoks,gal žmogus kitaip tiesiog nepaskaito ,o gal tiesiog nori kuo greičiau visai susip...sti akis,na čia klausimas atviras |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 06, 13:47 |
|
|
|
Enšteinas, išduok paslaptį, pamalonink liaudį
Čia tau užjūrio vėjai kalėdinę bacilą įpūtė ar šiaip eilinė geniali mintis kilo po prisilietimo prie fazės ?
Nafiga skaityti prie mirksiuko ? |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 06, 15:52 |
|
|
|
400 Hz yra dažnis nuo kurio žmogus turėtų mirgėjimo nebematyti. Spėju čia su tuo susiję? |
|
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 06, 23:15 |
|
|
|
ok matau reik detaliau padėstit mintis. Žodžiu yra picerija, klientai aptarnaujami per langeli, visas menių reklaminai plakatai ir kt. yra ant pagrindinio fasado, kurį norima apšviesti 34-iom LED lempom, kad tai nebūtų vien monotoniškas švietimas, kilo minčių padaryt jas mirksinčias, kas antra šviečia, kas antra nešviečia... Supraskit mirksėjimą kaip lempų tikslų persijungimą... reiškia lempa A užgesta tiksliai kada lempa B isijungia
https://ibb.co/0mcgrYS
jei bent kuri suveluoja ar paskuba, gauname kad kazkurią sekundes dalį abi lempos šviečia, arba abi nešviečia, kas visumoj atrodo kaip mirgėjimas su blyksėjimu. Kada lempos persijunginėja tvarkingai, tada šviesos srautas yra vienodas, šviesa sklinda tolygiai "švelniai" ir žinokit jokio skirtumo ar šviečia nuolat ar persijunginėja
Tai va man tai pavyko padaryti, pataisius programos kodą... (pirmam poste rasiau), bet tas gėris trunka tik kelis ciklus, po keliu mirksėjimu, pabėga persijunginėjimo laikai ir kelis kart sublyksi, tada vel keli persijunginėjimai sklandūs, ir vėl sublyksi ir vėl skalndus... dėl ko ir užvedžiau šitą tema, kad padaryt jog visad būtų sklandūs persijunginėjimai ) tikiuosi db aiškiau ka norėjau pasiekti
Nesu steūklas elektronikoj, o beto sudetingus dalykus daryt ir aiškintis nera daug laiko, tai nusprendžiau nebedaryti tokios galimybes kad prie persijunginėjančių lepmu eitu skaityti tekstą.
sitaip atrodys apsvietimas
https://ibb.co/CsrcCFG |
|
Paskutinį kartą redagavo Enshteinas, 2019 11 06, 23:28. Redaguota 1 kartą |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 06, 23:17 |
|
|
|
beja kaip ta sinchrinizacija valdiklio su tinklo 50Hz turėtu atrodyti ? |
|
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 07, 07:26 |
|
|
|
Gaudyk "perejima per 0".
Jei Arduino maitblokis daleidzia jo "-" sujungti su neutrale, tai faze per keleta varzu bendru nominalu ~1M gali paduoti i kazkuria laisva koja ir pasinaudoti PCINTxx veliavele.
cia tau bybliotieka ir pavyzdelis; https://github.com/neu-rah/PCINT
tik nedaryk PULLUP tam iejimui.
Kodas: |
volatile register uint8_t outb asm("r2") = 0;
volatile register uint8_t sync asm("r3") = 0;
ISR (PCINTx_vect) {
PORTx = outb;
sync = 1;
ir numeti PCINTxx veliavele;
}
void setup() {
bla bla ir nustatai PCINTxx
}
void main() {
if (sync) {
bla bla bla paskaiciavimai ~100Hz dazniu
outb = kazkas;
sync = 0;
}
}
|
P.S. kad netrukdytu TIMER0_OVF pertrauktis, stabdai ji, bet nebeveiks delay(), todel teks naudotis _delay_ms();
TCCRB0 = 0; arba TIMSK0 &= ~_BV(TOV0); |
|
Paskutinį kartą redagavo AlgisL, 2019 11 07, 10:21. Redaguota 3 kartus(ų) |
|
|
|
|
|
Arduino "plaukioja" |
Parašytas: 2019 11 07, 10:09 |
|
|
|
su arduino nedirbęs, jei komentarai //ON //OFF teisingi, tai man klausimas kodėl OFF abiem lempom padaroma su uždelsimu? Aš gal dar pabandyčiau patį junginėjimą organizuoti truputį kitaip, įjungus pirmąją, truputį palaukti prieš išjungiant kitą. Tada gal nebus mirgtelėjimo, visada kažkuri švies. Jei tikrai nulio kirtime bėda, tai 10ms pauzės turi užtekti kad įsižiebtų lempa, prieš išjungiant kitą.
digitalWrite(L1, 0); // ON
delay(10);
digitalWrite(L2, 1); // OFF
delay(400);
digitalWrite(L2, 0); // ON
delay(10);
digitalWrite(L1, 1); // OFF
delay(400); |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|