upravljnje DC motorima ?
Moderators: pedja089, stojke369, [eDo], trax
Re: upravljnje DC motorima ?
pokusavam da skontam kroz pedja089 formu koda kako ovo treba da funkcionise , sta treba da dopunim da bi dobio cjelinu? Kako da definisem kad je TP<TZ odnosno TP>TZ? jeli i to radim kroz IF naredbe? i kako vrsim inicijalizaciju TZ?
Re: upravljnje DC motorima ?
Pa to bi trebao da skontas sam ... kao vjezba u basicu!
TZ nastavis definisati ... za svaki slijedeci ulaz "1" u TZ se pomjera za jedno mjesto tako da ce ti na kraju biti 00010000.
Sto se tice vrtenja u jednu ili drugu stranu, u tom dijelu nemas IF-a vec samo postavljas odgovarajuce portove na odgovarajuca stanja tj. na 1.
Nadam se da ti je ovo pomoglo!
TZ nastavis definisati ... za svaki slijedeci ulaz "1" u TZ se pomjera za jedno mjesto tako da ce ti na kraju biti 00010000.
Sto se tice vrtenja u jednu ili drugu stranu, u tom dijelu nemas IF-a vec samo postavljas odgovarajuce portove na odgovarajuca stanja tj. na 1.
Nadam se da ti je ovo pomoglo!
Re: upravljnje DC motorima ?
nisam jos pokusao sa bi-polar tranzistorima ali sa mosfet mozes bez problema imat 4 komada n-chan samo u tom primjeru trebaju gornja 2 imat vcc+5V na gate i nema problema.InTheStillOfTheNight wrote:Mislim @sedin ja ne kužim koja je tvoja životna nesreća
Ti kao da želiš zakomplicirati stvari koje ne mogu biti jednostavnije. Lijepo sam ti našao gotovu i isprobanu shemu koju samo trebaš precrtati i ne zamarati se sa nikakvim simulacijama i naponima... No kako vidim to je za tebe previše jednostavno... Još ti je masa ekipe napisala da se H most radi sa NPN i PNP parom tranzistora, no ti uopće ne čuješ što ti ljudi pričaju...
Re: upravljnje DC motorima ?
kod sam nadopunio a vi me ispravite kolko sam pogrijesio:
SYMBOL T1=PORTA.0 'T1 do T4 polozaji grebenastog prekidac
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
SYMBOL T4=PORTA.3
SYMBOL T11=PORTB.2 'T11 do T14 tasteri
SYMBOL T12=PORTB.3
SYMBOL T13=PORTB.4
SYMBOL T14=PORTB.5
SYMBOL PLUS=PORTB.0
SYMBOL MINUS=PORTB.1
OUTPUT PLUS
OUTPUT MINUS
TP VAR BYTE '- trenutna pozicija
TZ VAR BYTE '- zadata pozicija
Start:
TP.0=T1
TP.1=T2
TP.2=T3
TP.3=T4
TP=~TP ' invertuj tako da 1 bude taster koji je stisnut ili TP.0=~T1
IF T11 =0 THEN
TZ=%00000001
ELSEIF T12=0 THEN
TZ=%00000010
ELSEIF T13=0 THEN
TZ=%00000100
ELSEIF T14=0 THEN
TZ=%00001000
ENDIF
IF TP<TZ THEN
TP=T11 AND TZ=T12 OR TZ=T13 OR TZ=T14
ELSEIF TP<TZ then
TP=T12 and TZ=T13 or TZ=T14
ELSEIF TP<TZ then
TP=T13 and TZ=T14
endif
if TP>TZ then
TP=T14 and TZ=T13 or TZ=T12 or TZ=T11
ELSEIF TP>TZ then
TP=T13 and tz=T12 or TZ=T11
ELSEIF TP>TZ then
TP=T12 and TZ=T11
endif
IF TP<TZ THEN
HIGH PLUS 'Vrti u jednu stranu
ELSEIF TP>TZ THEN
HIGH MINUS 'vrti u drugu stranu
ELSE
'zaustavi
ENDIF
PAUSE 100
GOTO Start
SYMBOL T1=PORTA.0 'T1 do T4 polozaji grebenastog prekidac
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
SYMBOL T4=PORTA.3
SYMBOL T11=PORTB.2 'T11 do T14 tasteri
SYMBOL T12=PORTB.3
SYMBOL T13=PORTB.4
SYMBOL T14=PORTB.5
SYMBOL PLUS=PORTB.0
SYMBOL MINUS=PORTB.1
OUTPUT PLUS
OUTPUT MINUS
TP VAR BYTE '- trenutna pozicija
TZ VAR BYTE '- zadata pozicija
Start:
TP.0=T1
TP.1=T2
TP.2=T3
TP.3=T4
TP=~TP ' invertuj tako da 1 bude taster koji je stisnut ili TP.0=~T1
IF T11 =0 THEN
TZ=%00000001
ELSEIF T12=0 THEN
TZ=%00000010
ELSEIF T13=0 THEN
TZ=%00000100
ELSEIF T14=0 THEN
TZ=%00001000
ENDIF
IF TP<TZ THEN
TP=T11 AND TZ=T12 OR TZ=T13 OR TZ=T14
ELSEIF TP<TZ then
TP=T12 and TZ=T13 or TZ=T14
ELSEIF TP<TZ then
TP=T13 and TZ=T14
endif
if TP>TZ then
TP=T14 and TZ=T13 or TZ=T12 or TZ=T11
ELSEIF TP>TZ then
TP=T13 and tz=T12 or TZ=T11
ELSEIF TP>TZ then
TP=T12 and TZ=T11
endif
IF TP<TZ THEN
HIGH PLUS 'Vrti u jednu stranu
ELSEIF TP>TZ THEN
HIGH MINUS 'vrti u drugu stranu
ELSE
'zaustavi
ENDIF
PAUSE 100
GOTO Start
Re: upravljnje DC motorima ?
Zaboga @sedin kad pises kod nekog programa onda upotrijebi opciju Code daleko je preglednije i lakse za pratiti.
Code: Select all
SYMBOL T1=PORTA.0 'T1 do T4 polozaji grebenastog prekidac
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
SYMBOL T4=PORTA.3
SYMBOL T11=PORTB.2 'T11 do T14 tasteri
SYMBOL T12=PORTB.3
SYMBOL T13=PORTB.4
SYMBOL T14=PORTB.5
...
Re: upravljnje DC motorima ?
ok, ubuduce koristim Code, iskreno nisam znao
Code: Select all
SYMBOL T1=PORTA.0 'T1 do T4 polozaji grebenastog prekidac
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
SYMBOL T4=PORTA.3
SYMBOL T11=PORTB.2 'T11 do T14 tasteri
SYMBOL T12=PORTB.3
SYMBOL T13=PORTB.4
SYMBOL T14=PORTB.5
SYMBOL PLUS=PORTB.0
SYMBOL MINUS=PORTB.1
OUTPUT PLUS
OUTPUT MINUS
TP VAR BYTE '- trenutna pozicija
TZ VAR BYTE '- zadata pozicija
Start:
TP.0=T1
TP.1=T2
TP.2=T3
TP.3=T4
TP=~TP ' invertuj tako da 1 bude taster koji je stisnut ili TP.0=~T1
IF T11 =0 THEN
TZ=%00000001
ELSEIF T12=0 THEN
TZ=%00000010
ELSEIF T13=0 THEN
TZ=%00000100
ELSEIF T14=0 THEN
TZ=%00001000
ENDIF
IF TP<TZ THEN
TP=T11 AND TZ=T12 OR TZ=T13 OR TZ=T14
ELSEIF TP<TZ then
TP=T12 and TZ=T13 or TZ=T14
ELSEIF TP<TZ then
TP=T13 and TZ=T14
endif
if TP>TZ then
TP=T14 and TZ=T13 or TZ=T12 or TZ=T11
ELSEIF TP>TZ then
TP=T13 and tz=T12 or TZ=T11
ELSEIF TP>TZ then
TP=T12 and TZ=T11
endif
IF TP<TZ THEN
HIGH PLUS 'Vrti u jednu stranu
ELSEIF TP>TZ THEN
HIGH MINUS 'vrti u drugu stranu
ELSE
'zaustavi
ENDIF
PAUSE 100
GOTO Start
Re: upravljnje DC motorima ?
Pretjerao si sa ovim relacijama, procesor ne radi "ono sto ti zelis nego ono sto ti naredis". Bojim se da su moguci rezultati kod ovakvih opcija prakticno nepredvidivi. Jako je tesko pratiti sta si htio postici ovavim relacijama Pokusaj simulirati ovo na nacin da poredas 0 i 1 na portove kao da je stvaran slucaj pa da vidis sta se dobije po bulovoj algebri.
Code: Select all
TP=T14 and TZ=T13 or TZ=T12 or TZ=T11
Re: upravljnje DC motorima ?
nisam znao kako bi (na koji nacin) definisao kada je TP<TZ odnosno TP>TZ, pa sam to gledao na nacin
Code: Select all
T11<T12<T13<T14
Re: upravljnje DC motorima ?
Pa zar nije jednostavno onako kako sam ja napisao? Ako je jedno vece vrti u jednu stranu, ako je drugo vece vrti u drugu stranu, ako su isti stani.
Re: upravljnje DC motorima ?
definitivno mnogo lakse al nisam znao da je time vec definisan TP<>TZ, mislio sam da je potrebno odreditit u kojim polozjima je veci-manji ,zbunjuje me inicijalizacija TZ kako da joj dodijelim vrijednost koja se zatekne?
Re: upravljnje DC motorima ?
u sustini onako kako je pedj089 vec objavio kod je ustvari i gotovo kompletan ali je ispod naglaseno da treba inicijalizirati TZ, te je najbolje da mu se dodijeli trenutna vrijednost? kojom relacijom ?
Code: Select all
SYMBOL T1=PORTA.0 'T1 do T4 polozaji grebenastog prekidac
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
SYMBOL T4=PORTA.3
SYMBOL T11=PORTB.2 'T11 do T14 tasteri
SYMBOL T12=PORTB.3
SYMBOL T13=PORTB.4
SYMBOL T14=PORTB.5
SYMBOL PLUS=PORTB.0
SYMBOL MINUS=PORTB.1
OUTPUT PLUS
OUTPUT MINUS
TP VAR BYTE '- trenutna pozicija
TZ VAR BYTE '- zadata pozicija
Start:
TP.0=T1
TP.1=T2
TP.2=T3
TP.3=T4
TP=~TP ' invertuj tako da 1 bude taster koji je stisnut ili TP.0=~T1
IF T11 =0 THEN
TZ=%00000001
ELSEIF T12=0 THEN
TZ=%00000010
ELSEIF T13=0 THEN
TZ=%00000100
ELSEIF T14=0 THEN
TZ=%00001000
ENDIF
IF TP<TZ THEN
HIGH PLUS 'Vrti u jednu stranu
ELSEIF TP>TZ THEN
HIGH MINUS 'vrti u drugu stranu
ELSE
'zaustavi
ENDIF
PAUSE 100
GOTO Start
Re: upravljnje DC motorima ?
Pa ajd razmisli malo...
Ako si tek upalio uredjaj, i ne znas koji je zadnji taster bio stisnut, imas nekoliko mogucnosti.
Da ostanes u istom polozaju, sto znaci Tz dodelis vrednost trenutnog polozaja, sto bi znacilo pre starta stavis ovo
Druga mogucnost je da pri ukljucenju vratis sve u pocetni polozaj tj Tz=1 ili bilo koji drugi polozaj. Treca varijanta bi bila da pamtis koji je taster stisnut. Sa prvom varijantom problem moze biti ukoliko je lose mehanicki reseno pa se osovina nadje u polozaju da nije stisnut ni jedan prekidac. Druga varijanta je ko zna koje ludilo to moze izazvati ako predje preko svih polozaja, i na kraju treca varijanta je najbolja, ali zahteva pamcenje pri svakom stisnutom tasteru, i citanje pri pokretanju...
Ako si tek upalio uredjaj, i ne znas koji je zadnji taster bio stisnut, imas nekoliko mogucnosti.
Da ostanes u istom polozaju, sto znaci Tz dodelis vrednost trenutnog polozaja, sto bi znacilo pre starta stavis ovo
Code: Select all
Tz.0=T1
Tz.1=T2
Tz.2=T3
Tz.3=T4
Tz=~Tz
Re: upravljnje DC motorima ?
fala pedja089
idem da izgradim sklop do kraja a onda cu da probam kod:
idem da izgradim sklop do kraja a onda cu da probam kod:
Code: Select all
SYMBOL T1=PORTA.0 'T1 do T4 polozaji grebenastog prekidaca
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
SYMBOL T4=PORTA.3
SYMBOL T11=PORTB.2 'T11 do T14 tasteri
SYMBOL T12=PORTB.3
SYMBOL T13=PORTB.4
SYMBOL T14=PORTB.5
SYMBOL PLUS=PORTB.0
SYMBOL MINUS=PORTB.1
OUTPUT PLUS
OUTPUT MINUS
TP VAR BYTE '- trenutna pozicija
TZ VAR BYTE '- zadata pozicija
TZ.0=T1
TZ.1=T2
TZ.2=T3
TZ.3=T4
TZ=~TZ
Start:
TP.0=T1
TP.1=T2
TP.2=T3
TP.3=T4
TP=~TP ' invertuj tako da 1 bude taster koji je stisnut ili TP.0=~T1
IF T11 =0 THEN
TZ=%00000001
ELSEIF T12=0 THEN
TZ=%00000010
ELSEIF T13=0 THEN
TZ=%00000100
ELSEIF T14=0 THEN
TZ=%00001000
ENDIF
IF TP<TZ THEN
HIGH PLUS 'Vrti u jednu stranu
ELSEIF TP>TZ THEN
HIGH MINUS 'vrti u drugu stranu
ELSE
'zaustavi
ENDIF
PAUSE 100
GOTO Start
Re: upravljnje DC motorima ?
Postavi sve izlaze na poznata stanja odmah kad ih proglasis izlazom, da ne bi motor trzao na pocetku...
A i motor bi trebao da stane kad dodje u odgovarajucu poziciju.
Komentar Zaustavi ga nece zaustaviti, moras napisati komandu koja ce to da uradi...
A i motor bi trebao da stane kad dodje u odgovarajucu poziciju.
Komentar Zaustavi ga nece zaustaviti, moras napisati komandu koja ce to da uradi...
Re: upravljnje DC motorima ?
jeli dovoljno samo ?
Code: Select all
ELSE
LOW PLUS
LOW MINUS
Re: upravljnje DC motorima ?
fala na strpljenju
upravo probam da compajliram ali imam greske u labelama ELSEIF:
upravo probam da compajliram ali imam greske u labelama ELSEIF:
Code: Select all
ERROR Line 48: Syntax error. (DC upravljnje.pbp)
ERROR Line 51: Redefiniton of LABEL ELSEIF. (DC upravljnje.pbp)
ERROR Line 51: Syntax error. (DC upravljnje.pbp)
ERROR Line 54: Redefiniton of LABEL ELSEIF. (DC upravljnje.pbp)
ERROR Line 54: Syntax error. (DC upravljnje.pbp)
ERROR Line 64: Redefiniton of LABEL ELSEIF. (DC upravljnje.pbp)
ERROR Line 64: Syntax error. (DC upravljnje.pbp)
Re: upravljnje DC motorima ?
Sad sam prekopirao kod sa foruma kompajlirao i nema nikakvih problema...
Re: upravljnje DC motorima ?
Mozda ja imam problem sa samim MCS pogledat cu da instaliram neku drugu verziju
Re: upravljnje DC motorima ?
guglaj pbp 2.60 sonsivri...