Jump to content

PIC kontrola releja za ulaz i motora za pot


stefaca

Preporučeni Komentari

gledam gde da stavim temu pa ubode ovde ali ako je na pogresnom mestu vi je prabaite :crying:

koliko sam ja protumacio uz pomoc drugih ovo je gotov projekat za kontrolu 10 releja ali 2 mozete jumperima odvojiti za kontrolu motora za pot a ostalih 8 za ulaze.

sema:

Postavljena slika

"a sta je onaj jumrep na 5V? toggle i momentary?

Toggle je da menja stanje releja pritiskom na dugme.

Jednom stisnes ode na ON drugi put ode na OFF i tako u krug.

Momentary je kao taster. Kad stisnes na daljinskom dugme rele se ukljuci i iskljuci."

u prilogu saljem i semu i tu je bas tako i napravljeno. releji 1 i 2 se stave momentary i tu se veze motor a ostali su za kontrolu ulaznih releja. dakle, ne mora se nista menjati. u prilogu je i HEX fajl za PIC pa ko voli neka pravi. nadam se da sam pomogao mojim NEZNANJEM i pokretanjem teme a ispostavilo se da je ceo projekat gotov

http://www.megaupload.com/?d=P296IP3Q

Link to comment
Podeli na ovim sajtovima

  • Odgovora 20
  • Kreirano pre
  • Zadnji odgovor pre

Aktivni članovi u ovoj temi

Neznam koliko si vican sa pisanjem softvera ali ako vec imas pic programator preporucujem ti da sam napravis kontrolu jer je softver zaista jednostavan . Postoji i alternativa bez mikrokontrolera a to su cipovi koji vrse dekodiranje RC5 koda, mislim da ih pravi philip (ST3049). Vidim da dosta ljudi ovde ima problema sa daljincem a nisu vicni u radu sa mikrokontrolerima. Bilo bi lepo kada bi se naslo neko resenje koje je bazirano na nekom dekoderu.

Link to comment
Podeli na ovim sajtovima

ja i PIC dva susedna pojma ali imam zelju da ih ucim ali nikako da nadjem neku stampanu knjigu jer i ne volim da citam sa racunara. to ne volim i mrzi me. mada citam i C jer mi treba za ispit i glava me boli vise od svega tako da trenutno nisam bas raspolozen da krenem PIC ali imam u planu

Link to comment
Podeli na ovim sajtovima

Ja sam jos kao srednjoskolac kupio knjigu PIC mikrokontroleri od ME, sjajna knjiga za pocetnjike. Ja licno ne volem PIC. Njegova prednost je to sto je mnogo rasprostranjen. Najbolje je da radis sa nekim mikrokontrolerom koji ima ICD (in circuit debugger) jer mozes da pratis kako program radi i da otklanjas greske. Koliko znam za PIC ti je najboplji CCSC kompajler koji je free ali ovo za daljinac mozes i u asembleru da pises. Dakle ako vez oces PIC nemoj 16-cu jer je beda ziva a i skup je. Ipak je vama sa smera elektronika programiranje uvek bilo bauk kao i elektronika mojim kolegama programerima ;o)))

Link to comment
Podeli na ovim sajtovima

Ipak je vama sa smera elektronika programiranje uvek bilo bauk kao i elektronika mojim kolegama programerima ;o)))

To je istina. Nikad nisam naucio da pisem programe. Uradim ceo algoritam ali to prepisati u program je teze nego kompletan sklop napraviti sa logickim kolima.PLC sam naucio programirati prosle godine jer me nuzda naterala i sad se smejem kako je lako. verovatno ce tako biti i sa PIC-om jer za par dana treba da napravim kompletan uredjaj sa PIC kontrolerom iako nikad nisam pre radio sa njim. I jos da kazem da mi pored stola stoji komplet delova za novi projekat kog sam bazirao na Atmelu, sto mi je isto u planu da naucim ove zime. Neuspeha ne sme biti jer sam stukao 185000 dinara u delove a sa specijalnim konektorima i namenskim kucistima tesko da cu negde drugde da ih potrosim.
Link to comment
Podeli na ovim sajtovima

daleko saam od programera a jos dalje od elektronicara. ovaj projekat je nesto sto se meni svidja i nesto sto mislim da je korisna naprava. e sad, modifikacije na temu su uvek tu jer ovo je samo vidjanje jednog coveka kome je tako nesto trebalo. ubacivanje enkodera, atenuatora sa relejima, displejima i sta ja znam cime vec je potreba ili ne ali o tome se pita korisnim odnosno konstruktor. ovo je lep i koristan projekat pa rekoh da ga okacim pa ako zatreba neka ga koriste

Link to comment
Podeli na ovim sajtovima

Ja ne vidim mnogo razliku izmedju pisanja programa i projektovanja digitalnog elektronskog sklopa. Sve se svodi na apstraktno razmisljanje. Eto recimo program za daljinsku komandu se svodi na uzorkovanje signala sa pina koji je vezan TSOP1736 i uporedjivanje procitane vrednosti sa predefinisanim taasterom. To se moze uvek resiti shift registrima ali je potreban klok od oko 1.77 ms (kolko se secam za RC5). Ovo resenje koje sam predlozio je "pacersko" ali vrsi posao. Drugi ,elegantniji,pristup je pomocu SPI modula koji je integralni deo MCU-a i koji je taktovan signalom iz MCU-a. Zato je bitno da se ne koristi budjavi PIC 16F84. Impulsi za SPI clock se mogu generisati pomocu brojaca tako da se svaki put kada MCU primi komandu generise interapt ,a u registru SPI modula je procitana komanda. Na osnovu ove komande treba preduzeti akciju. (uklj/isklj releja, motora ...). Po mom misljenju PIC je veoma precenjen ali ga ima svuda (marketing). Ja radim sa Freescale kontrolerima koji su nesto jeftiniji,brzi i laksi za programiranje u asembleru ali je podrska na netu nikakva (sve se placa i skupo je ko sirce). Sva sreca da smo u firmi razvili sopstveni razvojni alat (compajler i programator/dibager). Za aplikaciju kao sto je daljinac PIC 18F serije je ipak mnogo bolje resenje od 16-ce , a mislim i da je jeftiniji i ima neku vrstu dibagera pa je razvoj softvera laksi i brzi.

Link to comment
Podeli na ovim sajtovima

C definitivno, jer je C kao programski jezik na nizem nivou apstrakcije od BASICA sto je pogodno jer se radi o mikrokontroleru. Pisanje programa za mikrokontroler u visem programskom jeziku ima smisla samo ako se radi o dobrom kompajleru. Ja ne radim sa PIC-om ali moj drug koji ga koristi, programira u nekom CSC-u koji nije los. Dobar i besplatan kompajler ne postoje. Ono sto mikroelektronika ima je veoma lose uradjeno ali je i cena u skladu sa tim. Mozda ne bi bilo lose da krenes malo sa asemblerom (imas besplatan MPLAB) jer ces tako najlakse da upoznas hardver mikrokontrolera i da imas potpunu kontrolu nad njim. Za PIC ces naci more gotovih rutina,procedura i softvera koji ce ti zavrsiti posao ali njihovo koriscenje te nece naterati da sam naucis kako nesto radi jer je sve na gotovo. Zato ti savetujem da bar daljinac odradis u asembleru jer zaista nije teska aplikacija i nema neki nivo apstraktnosti (kao kad se radi na primer sa grafickim displejom i sl.). Generalno je najveci problem kod mikrokontrolera to razvojno okruzenje jer je potreban i kompajler i progrmator i dibager i simulator ... a sve to kosta i to veoma mnogo. (Codewarrior za Freescale je 5000$ ali generise kod da se use..s u gace). I ono sto je najbitnije je da za svaki problem imas resenje u vidu dijagrama toka i ili algoritma a kojim ces jezikom da pises je manje bitno, to se najjednostavnije uci...

Link to comment
Podeli na ovim sajtovima

  • 2 months later...

Moj prvi post na ovom forumu.Dokle ste stigli sa pravljenjem uredjaja za kontrolu. Prije nekoliko dana sam gledao univerzalne daljinske koji ima podrsku za Philips ali nisam siguran da je u pitanju RC5 standard, najjeftiniji je oko 50kn a ima i dosta skupljih. Ne daje mi se bezveze novac za nesto ako to ne podrzava RC5. Ako bi nasao neki koji radi 100% RC5 onda bi mogao probati neke C primjere sa neta da li rade.Jos prosle godine sam napravio neku PCB koja treba da radi kontrolu releja (autenuacija, na drugom forumu) a i odabir ulaza, zbotic mi je pomagao oko tabela za kontrolu releja ali mislim da je napravio ili nabavio drugi uredjaj, pa mu ovo vise nije zanimljivo sto se tice ucestvovanja u gradnji uredjaja. Uredjaj nisam isprobao u radu , umjesto releja LED ,jer nisam imao 8 identicnih releja ali imam nekoliko analognih multiplexera DG411 pa mogu probati sa njima.Napravljena je kontrola autenacije preko optickog enkodera (prvo moram naci gdje je PCB jer je to bilo jos prosle godine) , ovih dana mislim napraviti narudzbu iz farnella pa cu naruciti nekoliko jeftinih mehanickih enkodera a takodje bi trebao IR sensor tipa TSOP1736 ili slicnog u stvari treba mi tocna frekvencija u kHz u kojem radi RC5 jer neki rade na 36kHz pa 38kHz pretpostavljam i neke druge, ako neko zna neka kaze.Zagolicali su mi mastu graficki touch screen koji se mogu pokretati novijim PIC mikrokontrolerima za koje se mogu naci takodje biblioteke u C-u ali su za sada ti displeji su vrlo skupi pa to otpada kao prikaz ulaza i glasnoce a ujedno se moze koristiti i kao ulaz za mc.

Link to comment
Podeli na ovim sajtovima

dobro je sto u temi pisu ljudi koji znaju sta i kako radi. e sad, neko mozda smesno pitanje: lakse li je raditi PIC u C-u ili BASIC-u?

Apsolutno nebitno ako je program dobro napisan.Nisam nesto upoznat sa BASIC za pic i mislim da je nesto viseg nivoa od C pa je mozda lakse pisati program, C pravi kraci kod sa kojim ce raditi mikrokontroler ali ako uzmes u obzir da to ne mora nista znaciti jer je u vecini slucajeva mikrokontroler i vise nego je potrebno brz pa u medjuvremenu ceka da se nesto desi da bi nesto odradio. Ako mikrokontroler ne moze da "vrti" dovoljno brzo program, uzmes brzi mikrokontroler barem to nije problem sada, cak cijene najnovijih 16 bitnih i 32 bitnih se ne razlikuju puno od 8 bitnih , a i u nekom uredjaju koji se pravi u nekoliko primjeraka razlika u cijeni od 0,5E ili 1E ne znaci mnogo.
Link to comment
Podeli na ovim sajtovima

Mislim da većina ako ne i svi univerzalni daljinci koji su kod nas u prodaji rade sa RC5. Ja sam koristio URC22B-10 koji ima gomilu kombinacija za različite uređaje. Najvažnije je da znaš koji kod ti daje pojedina tipka, bar od onih tipki koje misliš da koristiš. Također imaš i adresu uređaja koja se na nekim daljinskim može mijenjati npr. TV1, TV2, VCR,... Najjednostavnije ti je da napraviš programčić koji će ti očitavati kod i ispisati na displeju. Ja radim sa atmelima i bascom-avr i ovo sa RC5 je dosta jednostavno. Funkcija za čitanje izgleda ovako: Getrc5(Address , Command).

Postavljena slika

Mislio sam napraviti nešto i za motorizirani potenciometar ali ne znam ni kako radi niti imam ijedan da probam a sada nemam ni vremena.

Link to comment
Podeli na ovim sajtovima

Apsolutno nebitno ako je program dobro napisan.Nisam nesto upoznat sa BASIC za pic i mislim da je nesto viseg nivoa od C pa je mozda lakse pisati program, C pravi kraci kod sa kojim ce raditi mikrokontroler ali ako uzmes u obzir da to ne mora nista znaciti jer je u vecini slucajeva mikrokontroler i vise nego je potrebno brz pa u medjuvremenu ceka da se nesto desi da bi nesto odradio. Ako mikrokontroler ne moze da "vrti" dovoljno brzo program, uzmes brzi mikrokontroler barem to nije problem sada, cak cijene najnovijih 16 bitnih i 32 bitnih se ne razlikuju puno od 8 bitnih , a i u nekom uredjaju koji se pravi u nekoliko primjeraka razlika u cijeni od 0,5E ili 1E ne znaci mnogo.

Za motorizovani pot nije neki problem napravis H mostom i preko PWM pogonis na jednu ili drugu stranu, krajnje polozaje odredjus tako da mjeris struju na otporu koji je na H mostu, ako pot dodje do krajnjeg polozaja ako nema neki mikroprekidac imas veci pad napona na tom otporu i gasis pogon odnosno dozvoljavas da pokrece pot u suprotnu stranu.Pozeljno je samo da mc ima hardverski PWM izlaz.RC5 je vec rijesena u basic , u C ja moram da je napisem od nule nepostoje biblioteke za to , moguce jedino u mikro C.
Link to comment
Podeli na ovim sajtovima

motorizovani pot nije potrebno pogoniti PWM signalom jer vec ima ugradjen reduktor. Za H most preporucujem ic kolo L293.

Nije potreban PWM ako se pot dovoljno sporo okrece, ali za neke moras da tipkas naprjed nazad da bi dobio glasnocu koju zelis. L293 je OK, osim cjene, ako hoce jeftinije ima na netu dosta primjera , tranzistori + neko TTL ili CMOS kolo. "Komfor" rada sa potom zavisi od samog motorizovanog pota ali i od programskih mogucnosti programera a takodje i mikrokontrolera :hammer: .
Link to comment
Podeli na ovim sajtovima

RC5 je vec rijesena u basic , u C ja moram da je napisem od nule nepostoje biblioteke za to , moguce jedino u mikro C.
Ovo radi ne moras da pises :coffee: CCS C//****************************************************************************//// IR receiver INT //// ////****************************************************************************//#int_EXTvoid EXT_isr(void) // RB0{ get_RC5();}//****************************************************************************//// IR receiver receive RC5 //// ////****************************************************************************//int1 get_RC5(void){ int16 tmp,t; int i; int1 inp; set_timer1(0); while(IR_STATUS==1); t=get_timer1(); if ((t<800) || (t>1600)) return 0; // no RC5 code, abort decoding for (i=0;i<13;i++) { inp=IR_STATUS; set_timer1(0); while (IR_STATUS==inp) { t=get_timer1(); if (t>1600) return 0; // no RC5 code, abort decoding } tmp<<=1; if (inp==0) tmp++; set_timer1(0); while (get_timer1()<1440); // a simple delay would work here as well } tmp=tmp | 0x3000; tmp=tmp & 0x37ff; // cut off togglebit Ir_data = tmp-0x3000; rc5.state = 1; disable_interrupts(INT_EXT); return 1;}void main(){ setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); // pic18f4550 clock 20mhz ext_int_edge(H_TO_L); enable_interrupts(INT_EXT); enable_interrupts(GLOBAL); rc5.state = 0;}
Link to comment
Podeli na ovim sajtovima

RC5 je vec rijesena u basic , u C ja moram da je napisem od nule nepostoje biblioteke za to , moguce jedino u mikro C.
Ovo radi ne moras da pises :coffee: CCS C//****************************************************************************//// IR receiver INT //// ////****************************************************************************//#int_EXTvoid EXT_isr(void) // RB0{ get_RC5();}//****************************************************************************//// IR receiver receive RC5 //// ////****************************************************************************//int1 get_RC5(void){ int16 tmp,t; int i; int1 inp; set_timer1(0); while(IR_STATUS==1); t=get_timer1(); if ((t<800) || (t>1600)) return 0; // no RC5 code, abort decoding for (i=0;i<13;i++) { inp=IR_STATUS; set_timer1(0); while (IR_STATUS==inp) { t=get_timer1(); if (t>1600) return 0; // no RC5 code, abort decoding } tmp<<=1; if (inp==0) tmp++; set_timer1(0); while (get_timer1()<1440); // a simple delay would work here as well } tmp=tmp | 0x3000; tmp=tmp & 0x37ff; // cut off togglebit Ir_data = tmp-0x3000; rc5.state = 1; disable_interrupts(INT_EXT); return 1;}void main(){ setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); // pic18f4550 clock 20mhz ext_int_edge(H_TO_L); enable_interrupts(INT_EXT); enable_interrupts(GLOBAL); rc5.state = 0;}
Ovo je dosta jednostavnije od onog primera sto sam ja nasao, jedino sto ovaj kod trebam malo preraditi u C koji koristim. Ne svidja mi se da su citav kod za RC5 strpali u interapt rutinu(poziv funkcije), pokusacu da izbacim iz interapt rutine kod koji nije toliko vremenski kritican, jer zbog pokretanja 7 segmentnih displeja mi se interapt vrti na oko 2ms a koliko vidim taj RC5 je dosta spor pa nebi trebalo biti problema.
Link to comment
Podeli na ovim sajtovima

Kreiraj nalog ili se prijavi da daš komentar

Potrebno je da budeš član DiyAudio.rs-a da bi ostavio komentar

Kreiraj nalog

Prijavite se za novi nalog na DiyAudio.rs zajednici. Jednostavno je!

Registruj novi nalog

Prijavi se

Već imaš nalog? Prijavi se ovde

Prijavi se odmah
  • Članovi koji sada čitaju   0 članova

    • Nema registrovanih članova koji gledaju ovu stranicu
×
×
  • Kreiraj novo...