Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   677 / 1320
(#) mikol hozzászólása Feb 17, 2010 /
 
Sziasztok!

Ezt a fordulatszám mérőt szeretném megépíteni:

http://www.walktronics.de/html/led-drehzahlmesser.html

A kérdésem az lenne, hogy a programot át lehet e úgy variálni, hogy ne 8000 ig mérjen hanem 10-12.000-ig?

Mindenki segítségét előre is köszönöm!

Mikol
(#) watt válasza mikol hozzászólására (») Feb 17, 2010 /
 
Ha tudsz programozni, természetesen át lehet.
Egyébként egy elavult PIC van az áramkörben, ami sokkal drágább, mint egy újabb modell, valamint kevesebb, mint fele ennyi lábbal(6+6=12láb=>36LED) is meg lehetne oldani az egészet(talán 18lábú PIC is elég lenne), belső oszcival is, de ezt csak a szépérzékem miatt említem meg...
(#) mikol válasza watt hozzászólására (») Feb 17, 2010 /
 
Az a probléma, hogy a programozást még csak most kezdtem tanulni, így magamtól nem tudom megírni.
Valójában elég akár 20 led is, nem akarom túlbonyolítani.

Ha valaki unatkozik és rá szán egy kis időt akkor megköszönném ha segítene.

Köszi!

Mikol
(#) steev hozzászólása Feb 17, 2010 /
 
Sziasztok

LCD szeretnék éleszteni. Az adat lábak (8db) a pic portjain össze vissza vannak, mert csak így tudtam elrendezni. Hogy tudnám ezt összehozni egy tömbbe, C30-ban?

Próbáltam már többféle struktúrával de nem sikerült elérnem a célom. Eddig ezzel prőbáltam, de így nem jó:
  1. extern unsigned int GLCD_DATA_TRIS __attribute__((__sfr__));
  2. typedef struct  {
  3.         unsigned TRISB12 :1;
  4.         unsigned TRISD0 :1;
  5.         unsigned TRISD1 :1;
  6.         unsigned TRISF0 :1;
  7.         unsigned TRISF1 :1;
  8.         unsigned TRISF4 :1;
  9.         unsigned TRISF5 :1;
  10.         unsigned TRISF2 :1;
  11.         unsigned        :8;
  12. } ;


Nincs valakinek ötlete?
(#) potyo válasza steev hozzászólására (») Feb 17, 2010 / 1
 
Ilyet tudtommal nem lehet csinálni, egyesével kell a biteket beállítani.
(#) bottila hozzászólása Feb 17, 2010 /
 
Sziasztok!
Valahol olvastam, hogy hogyan kell az Mplab nyomkövetőjét analóg bemenetekhez, vagy időzített dolgokhoz használni, de most nem találom. Aki tudja segítsen már nekem legyen szíves, hogy merre keressem!
(#) Hp41C válasza mikol hozzászólására (») Feb 17, 2010 /
 
Szia!

Az egész program nagyon egyszerű... A (programmal kiegészítet) TMR0 időzítő által nyújtott kapuidő alatt beérkező gyújtás impulzusokat számolja. A számlálás egy 4 memória rekeszből álló shift regiszterben történő léptetéssel van megoldva. Gyakorlatilag a bitek közvetlenül a led-eket vezérlik.

A TMR0 a belső órajelet 16-tal osztva használja (195. sor). A TMR0 túlcsordulása 20000000/4/16/256 = 1220,703125 frekvenciával következik be, ami 8,192 ms időalapot jelent. A programban a 60. sorban egy további számlálót tölt fel kezdőértékkel: 0x92 = 146. Ez a számláló már 11.9603 ms -onként nullázódik.
Egy gyújtásimpulzusra egyet léptet a shiftregiszter, és 32 ledet hajt meg. Ahhoz, hogy a 32. led (is) kigyulladjon 32 impulzusnak kell beérkezni a 11.9603 ms, azaz 267-nek 1 másodperc alatt - 16053-nak egy perc alatt...

A program egy kis számolással - programozói tudás nélkül is - átállítható más fordulatszám tartományra:

Ha a tartományt szeretnénk módosítani, a számítást visszafelé végezzük, es a 60. sorban a movlw 0x92 sort kell a kiszámolt értékre módosítani (max. 256 lehet).

Szia
(#) watt válasza steev hozzászólására (») Feb 17, 2010 / 1
 
Készíts egy rutint, és abban egyenként állítsd be a szükséges lábakat és hívogasd meg paraméterekkel. Úgy tudom másképp nem lehet.
(#) steev válasza watt hozzászólására (») Feb 17, 2010 /
 
Köszi mindkettőtöknek a választ, ezt akartam elkerülni, de nem fog menni.
Köszi
(#) mikol válasza Hp41C hozzászólására (») Feb 17, 2010 /
 
Köszönöm szépen a segítséget! Elsőre kicsit sok volt , de átolvasom még párszor és megpróbálkozom vele!

Még egyszer köszönöm!

Üdv:
Mikol
(#) potyo válasza steev hozzászólására (») Feb 17, 2010 /
 
Ha lehetne is, akkor is a fordító lecserélné az egyenkénti lábállításra, mivel a lábak a kontrollerben fixek, így a firmware-nek kell igazodnia hozzá.

Fejlesztési ötlet a microchip felé: kell rakni a PIC-be egy mátrixot, amivel kézzel ki tudjuk választani, hogy melyik láb hol menjen ki és be
(#) vicsys válasza potyo hozzászólására (») Feb 17, 2010 /
 
De jó is lenne, néha... :sóhajtó szmájli:
(#) steev válasza potyo hozzászólására (») Feb 17, 2010 /
 
Én még arra gondoltam, hogy a port címére írnám az adatot közvetlenül....lehet olyat?
(#) watt válasza potyo hozzászólására (») Feb 17, 2010 /
 
A vicc az, hogy ezt nem is lenne nehéz megcsinálni!
(#) watt válasza steev hozzászólására (») Feb 17, 2010 /
 
Persze, van asm betétre lehetőség(BSF, BCF). De ez nem változtat semmit szerintem, mert úgy is arra fordul le...
(#) mikol válasza Hp41C hozzászólására (») Feb 17, 2010 /
 
Nah, gyorsan átrágtam magam rajta. Akkor ha jól értem a 32 impulzus fix, annyit kell maximum kipörgés mellett a "kiszámolt idő" alatt számoltatni a pic-el (ha a pic ez idő alatt pont 32 impulzust érzékel akkor gyullad ki a 32. led is) .

Szóval ha a 8000RPM a határ akkor 11,9603ms alatt kell 32 impulzus. Így ha a 8000/11,9603=668,8795432 arányszámmal számolok, akkor 12000/668,8795432=17,94045ms jön ki. Így a maximális azaz 12000RPM álláshoz 17,94045ms-ra van szükség a 32 impulzus beérkezéséig.

Ha jól számoltam akkor ezt hogy írom a programba a 0x92 helyére?
Milyen formába?

Köszi!

Mikol
(#) smrtln hozzászólása Feb 17, 2010 /
 
Sziasztok!

Egy olyan kérdésem lenne, hogy van egy PIC16F877-m és PICKIT2-m. Ha az _LVP_ON engedélyezem akkor nem kell MCLR/VPP 12v a programozáshoz, hanem elég neki 5v is?
Jól gondolom?

smrtln
(#) Hp41C válasza smrtln hozzászólására (») Feb 17, 2010 /
 
Szia!

Igen, az RB3 - PGM jelet a PicKit2 AUX kivezetésére kell kötni. Az RB3 kivezetést a normális futtatás alatt alacsony szintten kell tartani.

Szia
(#) smrtln válasza Hp41C hozzászólására (») Feb 17, 2010 /
 
Szia!

Rendben és még annyi lenne a kérdésem, hogy akkor elég ha rákötöm a PICKIT2-re a PIC RB3-as lábát, úgy-e a PICKIT2 adja neki a megfelelő feszültséget a PIC-nek. És közben ráköthettem az 5v-ot az RB3-as lábra egy külső tápról vagy nem miközben programozom vagy utána kössem rá a külső tápot mikor befejezte a programozást?

smrtln
(#) Hp41C válasza smrtln hozzászólására (») Feb 17, 2010 /
 
Szia!

A PicKit2 -re mind a 6 vezetéknek el kell mennie, a MCLR a reset funkció miatt kell. Az RB3 -at a PicKit2 fogja magasra kapcsolni a programozás alatt. Az áramkörben nem kell rá 5V-ot adni, inkább egy ellenállással a földet.

Szia
(#) vaszil29 hozzászólása Feb 17, 2010 /
 
sziasztok!
érdeklődnék, hogy tud -e valaki PIC16F87-hez vezérlő programot?!
assemblis hex file amit bekéne égetni.
CNC 3.2 unipoláris vezérlőhöz kéne a chip programja.

a progim megvan (WinPic)
a beégető is készen 16-illetve 40 lábú "Pic"-hez
szóval már csak a hex cod hiányzik.

a válaszokat és a segítséget előre is köszönöm.
üdv szabi.

(ezt szeretném beüzemelni)
(#) Hp41C válasza mikol hozzászólására (») Feb 17, 2010 /
 
Szia!

A TMR0 átfordulás frekvenciája 20000000/4/16/256 = 1220.703125 , a perióusideje 819.2 us. Ezt a 146 -os számláló 119.6032 ms-re növeli (Valamit elböködtem azon a Windows kalkulátoron - most másikon számolok, ami nem veszt el gombnyomást). Ez alatt az idő alatt jön be 32 impulzus. 32 imp./119.6 ms = 267.5514 imp./s = 16053 imp/perc. Ha 8000/perc lenne a kigyújtott 32. led, akkor pont kétszer akkora idő kellene.

Ellenőrzés:
Használjunk 292-as számlálót. A kapuidő így 239.2064 ms. Ez alatt jön be 32 impulzus: 32 imp./239.2064 ms = 133 imp./s = 8026.541 imp./perc

Probléma: A 292 nem fér el egy bájton. ..
Megoldás:
- A program módosítása 2 bájtos számlálásra ...
- A maximális 256 használata:
Ekkor a kapuidő 209.7152 ms. 32 imp./209.7152ms = 152.5879 imp./sec = 9155.2773 imp/perc.
- Használjunk nagyobb előosztót a TMR0-nál:
Ha az előosztó 32 - már nem is kell mást módosítani. A TMR0 kapuideje 1.6384 ms -re nő, a számláló marad 146-os. 32 imp./239.2064ms = 133 imp/s = 8026.541 imp./perc. A módosítást a 199. sorban lehet elvégezni: A movlw b'00000011' helyett movlw b'00000100' kell.

Az értékeket 1 impulzus/fordulat feltételezésével számoltam ... Ha két impulzus/fordulat a bemenőjel, akkor nem is kell módosítani semmit sem...


Szia

Fordulat.asm
    
(#) smrtln válasza Hp41C hozzászólására (») Feb 17, 2010 /
 
Szia!

Akkor programozás során is ráköthettem a földre az RB3-as lábat az ellenállással miközben a PICKIT2-re rá van kötve és mekkora legyen az ellenállás 10K ohm-os elég?
És a PIC működése során is kell az ellenállás a földdel együtt amikor már nincs rajta a PICKIT2-n vagy nem?

smrtln
(#) Hp41C válasza smrtln hozzászólására (») Feb 17, 2010 /
 
Szia!

A föld felé menő ellenállásnak mindig ott kell lennie, hiszen ezzel biztosíthatod a normális működés alatt az alacsony szinetet (nem lép be programozási módba). A PicKit2 az ellenállásra ki fogja adni a magas szintet programozáskor. Az a 10k jó lesz.

Szia
(#) mikol válasza Hp41C hozzászólására (») Feb 17, 2010 /
 
Hát akkor én nagyon rosszat számoltam. :S
A jövő héten összerakom , beégetem és ki is próbálom!

A segítségedet pedig köszönöm szépen, nagyon rendes vagy! Ha tudom meghálálom!

Üdv:
Mikol
(#) smrtln válasza Hp41C hozzászólására (») Feb 17, 2010 /
 
Szia!

Rendben köszi szépen a segítséget, mindent megtudtam amit akartam, majd ha elakadok megint valamiben akkor majd írok.

smrtln
(#) smrtln hozzászólása Feb 17, 2010 /
 
Sziasztok!

Azt szeretném megkérdezni, hogy van egy PIC16F877-m és ennek a típusnak két-két VDD és VSS lába van, elég ha az egyik oldal kötöm be vagy mind a kettőt be kell kötni?

smrtln
(#) icserny válasza smrtln hozzászólására (») Feb 17, 2010 /
 
Mindegyiket be kell kötni, sőt, illet mindegyiket külön-külön ellátni egy-egy 100 nF-os kondenzátorral.
(#) potyo válasza smrtln hozzászólására (») Feb 17, 2010 /
 
Ugyanez a kérdés felmerül 2-3 heti rendszerességgel: Link
(#) trudnai válasza potyo hozzászólására (») Feb 17, 2010 /
 
Na jo, de valamilyen okbol kifolyolag kerdest irni egyszerubb, mint a keresot hasznalni
Következő: »»   677 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem