Ovdje pročitajte kako se registrirati na forum.

PWM signal, princip rada?

Tehnička podrška za Croduino 8-bitne pločice: Basic, Basic2, NOVA, miniNOVA, Damba, ETA
Odgovorite
domagoj#3811
Hobist
Hobist
Postovi: 66
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

PWM signal, princip rada?

Post Postao/la domagoj#3811 » ned vel 03, 2019 10:35 am

Pozdrav ljudi!
Pitanje koje imam se konkretno odnosi na Basic2, Dambu, Novu, ali i generalno na Arduino kompatibilne pločice. Dakle, pitanje glasi:
Kako konkretno radi PWM signal?
Pri tome ne mislim na to kako signal izgleda, već me zanima u kojem trenutku počinje genriranje signala nakon što se izvrši analogWrite i što se događa sa signalom koji je aktivan u trenutku pozivanja analogWrite-a. Evo malog primjera da vidite na što ciljam.
Ako u setup-u napišemo analogWrite(pin9, 128) izaz će biti 50% HIGH i 50% LOW unutar jednog ciklusa i signal će se generirati vječno.
Sada tu istu naredbu stavimo u loop i uz pretpostavku da se program izvršava brže od trajanja onih 50% kada je izlaz HIGH, što će biti sa signalom kada program ponovo prozove analogWrite a još nije završio trenutni ciklus? Hoće li se prekinuti trenutni analogWrite i započeti s novim ili će se pričekati dok ciklus ne završi pa tek onda krenuti s novim?
Pretpostavljam da će pričekati jer kad ne bi čekao tada bi u ovakvoj situaciji izaz bio uvijek na 100% jer bi prozivanje analogWrite naredbe išlo brže neko što jedan ciklus završi, a kako svaki put ide ispočetka nikad ne stigne do onog LOW dijela. Druga pretpostavka, vrijeme trajanja jednog ciklusa PWM signala je kraće od vremena između dvije analogWrite naredbe pa će se preklapanje dogoditi na jednom ciklusu što ne predstavlja problem. A možda nije ni jedna ni druga pretpostavka.
Što mislite?
Pozdrav, Domagoj
Avatar
haluzanpavao#8902
Novak
Novak
Postovi: 22
Pridružen/a: sri lip 13, 2018 12:19 pm

Re: PWM signal, princip rada?

Post Postao/la haluzanpavao#8902 » ned vel 03, 2019 4:05 pm

Poštovanje kolega;
Ja si do sada nisam razbijao glavu oko pwm starta i završetka, bilo mi je važno da radi u omjeru koji mu kažem.
Ali u principu je tvoje pitanje na mjestu, pa sam malo pogledao okolo po webu i našao bar ove dvije interesantne lokacije - bošure .
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM

http://ww1.microchip.com/downloads/en/D ... asheet.pdf

Ja ne govorim engleski pa baš ne razumijem sve čak ni uz pomoč googla :)
Ali vjerujem da bi tebi moglo pomoći.
Lijepi pozdrav i puno sreče u novim saznanjima :)
domagoj#3811
Hobist
Hobist
Postovi: 66
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

Re: PWM signal, princip rada?

Post Postao/la domagoj#3811 » ned vel 03, 2019 4:38 pm

Super, hvala. S užitkom ću si pogledati. U pravilu ni ja ne bi razbijao glavu, ali sam primjetio da kada spojim npr. ventilator (230 VAC) preko SSR-a i vozim ga s PWM signalom, kada je u pitanju Croduino Basic2, onda ventilator recimo da ima trzaje u radu pri konstantnom PWM-u, a kada isti ventilator i isti SSR spojim preko PLC-a, onda se vrti glatko. Zaključio sam da ima neke veze s PWM signalom jer u oba slučaja sva ostala oprema je ista. U slučaju PLC-a PWM ciklus traje 10ms što bi rekao da je i sporo, ali svejedno radi glatko. Ako se dobro sjećam, SSR koji imam i ne može preklapati brže od 10ms pa mi je takav ciklus ok, ali ne znam kako protumačiti zašto ventilator trokira na kraćem ciklusu. Barem mislim da je kraći, odnosno da je frekvencija PWM-a kod Croduina/Arduina veća od 100Hz.
Avatar
haluzanpavao#8902
Novak
Novak
Postovi: 22
Pridružen/a: sri lip 13, 2018 12:19 pm

Re: PWM signal, princip rada?

Post Postao/la haluzanpavao#8902 » ned vel 03, 2019 6:34 pm

Štima to što govoriš, na arduinu OS. se koristi par interapt radnji kao što su pogledati dali netko komunicira na serialu, pa je tu I2C bus i vurica pa kaj ja znam kaj su libovi donesli sa sobom. I tako svakih 20 milisec. Za vrijeme rada subrurina koje su vezane za interapt nesmiju biti prekidane (ili zbog tajminga koji je u sinhronim komunikacijama jako bitan, a još bitnija stvar su u ograničenom mem prostoro retutn adresa samo 256 bajtova(128 ret addr)) za vrijeme zabranjenih interapata PWM NE RADI !!! To se na skopu lijepo vidi.
Nadam se da sam malo pomogao u razumijevanju problematike.
Pozdrav
domagoj#3811
Hobist
Hobist
Postovi: 66
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

Re: PWM signal, princip rada?

Post Postao/la domagoj#3811 » ned vel 03, 2019 6:57 pm

O da, ako PWM radi preko interrupt rutine koju dijeli s ostalima, sve je jasno. Nisam znao za ovih 20ms, a to sve objašnjava. Thanks!
domagoj#3811
Hobist
Hobist
Postovi: 66
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

Re: PWM signal, princip rada?

Post Postao/la domagoj#3811 » uto vel 05, 2019 3:20 pm

Evo ja sam malo čačkao i došao do zaključka da ipak nije problem u PWM signalu. Naime, na tom istom primjerku Dambe sam napravio RGB lanternu i nisam primjetio bilo kakvu anomaliju dok sam određivao parametre PWM signala. Dapače, išao sam od vrlo malih pa do visokih vrijednosti i ledica se ponašala očekivano. Detalj koji mi je pobudio sumnju je da sam sve vrijednosti PWM-a određivao programski. U primjeru s ventilatorom vrijednost PWM-a je preslikana vrijednost analognog ulaza jer je na njemu potenciometar. Sklop zapravno ne može biti jednostavniji. :D Kako na Dambi ne mogu koristiti serial monitor, ne mogu znati koje vrijednosti očitavam na alanlognom ulazu pa ne znam jel sve štima. I taj problem sam riješio tako da sam program prvo napisao za Basic2, sve provjerio i onda ga prebacio na Dambu. Ali, ipak ima jedan detalj koji će možda i drugima biti od koristi. Naime, kada se pogleda shema Dambe, onda se vidi da je na pinovie D5 i A0 spojen RST. Za D5 sam znao i s Davidom sam pričao o tome, trebao bi poseban programer ako želim koristiti taj pin. Inače je D5 uvijek HIGH. I onda si mislim, ako D5 ne mogu koristiti, možda je ista stvar i s A0, i on je spojen na RST. I bingo. Prebacim na A1 i sve radi kako treba.
Kao i uvijek, rješenje je jednostavnije od očekivanog, samo put do njega obično nije jednostavan (što je isto očekivano).
Dakle, na Dambi nemojte koristiti pinove D5 i A0. Ako ih želite koristiti trebat će poseban programer koji će moći resetirati Dambu. Do toga još nisam došao jer mi nije trebalo. Ali kad saznam, javim.
Odgovorite