Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   832 / 1319
(#) watt válasza icserny hozzászólására (») Nov 9, 2010 /
 
Idézet:
„A nagyobb sebességnek (a dspic33 sorozat pl. 40 MIPS-re képes) a microstepping módban azért van szerepe, mert a névlegesnél nagyobb feszültséggel kell járatni a motort, s közben ADC-vel figyelni a felfutó áramot, ami 1-3 PWM periódus alatt elérheti megengedett értéket, tehát gyorsan kell reagálni.”

Kiegészíteném, hogy ekkor a dsPIC figyeli az áramokat is, nincs szükség pl. az i6205 meghajtóra, amiben ez a funkció analog benne van, csak a kitöltésekre kell koncentrálni.
(#) icserny válasza icserny hozzászólására (») Nov 9, 2010 /
 
Az AN1307 talán túl komplikált első olvasásra (nekem az!), ezért érdemes talán az AN906 alkalmazási mintapéldával (Stepper Motor Control Using the PIC16F684) kezdeni az olvasást.
(#) icserny válasza watt hozzászólására (») Nov 9, 2010 /
 
Most akkor i6205 vagy L6205 a szóbanforgás tárgya?
(#) messer válasza icserny hozzászólására (») Nov 9, 2010 /
 
Nekem is bonyolult ezért fordultam hozzátok, hogy ki kellene találni valamit.
(#) messer válasza icserny hozzászólására (») Nov 9, 2010 /
 
L6205
(#) messer válasza watt hozzászólására (») Nov 9, 2010 /
 
Nagyon örülök, hogy foglalkozol a témával. Van egy motor nálam amin sajnos nem tudom a pontos típust leolvasni.Ami biztos, hogy 24V.ot fog kapni, és 400mA a max áram ami folyhat rajta. A lényeg az lenne hogy bele jöjjek A dsPIC pwm hardverének állítgatásába, mivel még soha sem dolgoztam dsP-el. AN1307 elsőre nagyon megijesztett. Tehát nagyon jó volna nekem c-ben egy minta program ami picit már forgatja a mocit- az, hogy melyik láb hova megy az nem lényeg, és az Ena-bemenetek nincsenek használva az L6205-ben. (kész nyákkal kell megvalósítani egy ismerősöm cnc-vezérlője)
(#) watt válasza messer hozzászólására (») Nov 9, 2010 /
 
Minta programom nincs, de nem túl nehéz a PWM-et belőni. Ha jól olvasom, csak ez jelentene gondot?
Amit a PWM-en be kell állítani, az az, hogy milyen legyen a periódusidő, és milyen módban működjön, esetleg a dead time-ot, ha szükséges(ezt most hirtelen nem tudom kell-e, nem hiszem...).
A kitöltés beállítása csak egy regiszter(PWMx duty cycle) feltöltése a megfelelő számmal.
A korábban linkelt doksi 3. oldalán a 15-1: ábrán jól át lehet tekinteni, milyen regisztereket kell számba venni.
A 15-2:-es ábrán láthatóak az időzítésben szerepet kapó egységek. Érdemes összevetni a beállító regiszterekben található bitnevekkel.
Szerintem itt a Free Running mód kéne, 16KHz körüli alapfrekit belőni, és programból vezérelni a 4 Duty Cycle regisztert.
A 19. oldalon van a Free Running mód priódusidő kiszámításának módja.
Végig kéne ezt nyálazni, és kipróbálni a PIC-ben, vagy MPLAB szimulátorban, ha nincs PIC-ed még.
(#) messer válasza watt hozzászólására (») Nov 9, 2010 /
 
Van PIC sőt panelban van már, de melyik doksira gondolsz?
(#) messer válasza watt hozzászólására (») Nov 9, 2010 /
 
Hogy bonyolódjon a dolog úgy kell megírnom, hogy közben a pic-nek figyelni kell egy soros komonikáciot.
(#) watt válasza messer hozzászólására (») Nov 9, 2010 /
 
Neked csatoltam legutóbb...
A soros port elfér mindemellett. Sejtettem, hogy a vezérlő adatok PC-ről jönnek...
De első körben 1 PWM kimenetet fel kell élesszél az eddigiek fényében, utána jöhet a többi. Van mivel mérd a PWM frekit? Ha nincs, vedd fel hangkártyával, és elemezd valami hangszerkesztővel, a frekit látni kell így is. Esetleg valami PC-s szkóp is megfelel. Gondolom a bemenetre tudod illeszteni az 5V-os jelet egy osztóval...
(#) messer válasza watt hozzászólására (») Nov 9, 2010 /
 
Van egy tárolós oscilloscope-om. Ezeknél a pic-eknél meg lehet azt is csinálni, hogy a pwm jelet bármelyik kimenetre rá tudom irányítani? Vagy csak fixen a pwm lábakon tud kijönni?
(#) icserny válasza messer hozzászólására (») Nov 9, 2010 /
 
Az adatlap elolvasását nem fogod tudni megúszni...
(#) watt válasza messer hozzászólására (») Nov 9, 2010 /
 
Icsernynek maximálisan igaza van! Egyébként nem lehet, de erre magad is könnyen rájöhettél volna akár a rajzok alapján az ajánlott doksiban, vagy az adatlapból, már az első oldalakon, ahol a PIC lábkiosztása van, nem beszélve a lábak részletezésénél, illetve a PWM modul résznél...
(#) messer válasza watt hozzászólására (») Nov 9, 2010 /
 
Rögtön gondoltam, de egyszerűbb itt kérdezni mint lapozgatni, vagy nem?? Ahogy tanácsoltad életet lehelek a pwm-kimenetekre, aztán remélem segítetek a Sinus táblázatosításában, még soha sem csináltam ilyesmit.
(#) icserny válasza messer hozzászólására (») Nov 9, 2010 /
 
Idézet:
„egyszerűbb itt kérdezni mint lapozgatni, vagy nem??”
Nem! A topik arra való, hogyha elolvastad, de nem érted, vagy nem elegendő az információ, akkor legyen hol megkérdezni.
(#) potyo válasza messer hozzászólására (») Nov 9, 2010 /
 
És gondolod, hogy mi itt fejből tudunk mindent és arra várunk, hogy valaki kérdezzen és mi mondhassuk? Fel kell, hogy világosítsalak, hogy a helyzet korántsem ez, hanem nekünk is bele kell nézni az adatlapba, csak mi megtanultuk használni az adatlapot, nem a sültgalambot vártuk a szánkba.
(#) watt válasza potyo hozzászólására (») Nov 9, 2010 /
 
Ebben nagyon tévedsz! Én mind a 128ezer féle PIC adatlapját, valamint az összes erratát fejből ismerem, bármit kérdezhetsz, álmomból is megy!
(#) trudnai válasza messer hozzászólására (») Nov 9, 2010 /
 
Idézet:
„egyszerűbb itt kérdezni mint lapozgatni, vagy nem??”


Oooh, tokeletesen igazad van! Teljes mertekben egyetertek, nagysagrendekkel egyszerubb! Csakhogy:

  1. 1. Nem biztos, hogy olyan informaciot kapsz ami hasznos is, mert:
  2.     a. Aki valaszol nem biztos, hogy ertette amit kerdezel
  3.     b. Aki valaszol nem biztos, hogy volt ideje foglalkozni a kerdeseddel
  4.     c. Aki valaszol lehet hibazik
  5. 2. Annak nem egyszerubb, aki valaszol, mert:
  6.     a. Neki ugyanugy adatlapot kell bongesznie
  7.     b. Neki meg meg is kell ertenie mit kerdezel
  8.     c. Neki meg idot is kell szakitania a sajatjabol, hogy Neked segithessen!
  9. 3. Minden egyes problemanal varnod kell a valaszra, emiatt:
  10.     a. Csak lassan tanulsz
  11.     b. A projected is lassan halad
  12.     c. A turelmed is lehet elfogy
  13.     d. A valaszolok turelme is lehet elfogy ha latjak egyaltalan nem vagy hajlando a kotelezo hazifeladatot elvegezni
  14.  
  15. 4. Amiben viszont szivesen segitenek itt az emberek:
  16.     a. Ha nem erted mit ert az adatlap az alatt, hogy X vagy Y
  17.     b. Ha nem mukodik a program, pedig "mindent ugy csinaltal ahogy az adatlap eloirja"
  18.     c. Ha nem tudod mire kell rakeress a google-ben es kell egy kis loket...
(#) messer válasza icserny hozzászólására (») Nov 9, 2010 /
 
Hééé nem kell ám nekem esni tisztában vagyok a szabályokkal, és azzal is, hogy böngésznem kell az adatlapot.
(#) dinokal válasza messer hozzászólására (») Nov 9, 2010 /
 
Szia! Léptetőmotor vezérléséhez 1 db PWM is elég, az elképzelhetetlen hogy a tekercseket más más kitöltési tényezővel vezéreled egyszerre. Ha az előírt feszültséggel hajtod meg, a PWM abszolút felesleges. A lépőmociknál akkor használják, ha jócskán az előírt feszültség fölött hajtod meg. Ekkor nagyobb a nyomatéka, kisebb motorral nagyobb erőt tudsz kifejteni, viszont az áramerősség a PWM miatt csökken, ezért bírja a nagyobb feszültséget. Ezt PIC nélkül a legegyszerűbb megcsinálni. A PIC szerepe akkor jön képbe amikor a motor megállt. Ilyenkor is teljes feszültség alatt van az adott tekercs, viszont nem kell feszültséget csökkenteni, nem melegszik túl, egyszerűen a PWM kitöltési tényezőjét kisebbre veszed, kevesebb az áramterhelés. Ilyenkor a PIC nagyon jó dolog! Megspórolsz egy csomó plusz alkatrészt, kevesebb az áramköri hibalehetőség(a hibákat majd egy rossz programozással beviszed magad ), egyszerűbb a kapcsolás. Nézd meg ezt a motorokról:Bővebben: LÉPTETOMOTOROK
(#) dinokal válasza messer hozzászólására (») Nov 9, 2010 /
 
Sinus táblázatot rengeteget találsz a googliban! Pic vonatkozásában keress rá a hanggenerátoroknál! A Pic kimenő jelét táblázatból olvassák ki.
(#) messer válasza dinokal hozzászólására (») Nov 9, 2010 /
 
Már leírtam, hogy miért kell pwm, nézd csak valami ilyesmit szeretnék megoldani. A tekercsekre sinusosan emelkedő majd csökkenő feszültség jut így nagyon halk és egyenletes járása lenne a motornak.
(#) watt válasza messer hozzászólására (») Nov 9, 2010 /
 
Valóban leírtad, megértettük, válaszoltunk, most rajtad a sor, várjuk az eredményeket! (az ívet pedig viseld bölcsen!)
(#) Ideiglenes válasza szaffo555 hozzászólására (») Nov 9, 2010 / 1
 
Meg tudod-e mondani, hogy hány programlépés ( belső órajel ) telik el, mire a megszakítási eseménytől ( komparálási egyezés ) eljut a vezérlés a timer1 nullázásáig ( tehát a timer1 0-ról indul el )? Mindig ugyanannyi lépés fog eltelni? Ha a két kérdés közül akár az egyik megválaszolásában már bizonytalan vagy, akkor magad is tudod, hogy miért jobb az a megoldás, amit korábban javasoltak neked. Segítségül: Letiltod egy bizonyos művelet ( EEPROM írás ) miatt a megszakításokat.
A korábban javasolt megoldásban mindig ugyanannyi és előre meghatározható belső óraütés történik két megszakítási esemény kiváltása között, függetlenül attól ( nem teljesen igaz ), hogy a vezérlés mikor is ér oda a megszakítás kiszolgáló részhez. A timer1 szabadon fut, nincs semmivel sem befolyásolva. Mindig a komparálási értéket tolod magad előtt. A számításigény két 16 bites szám összeadása úgy, hogy a felső átvitellel nem kell foglalkoznod, és éppen ez adja a modulo 65536-os osztást. Az eredmény alsó és felső bájtját pedig bemásolod a CCPRxL és H regiszterekbe. Tehát semmi bonyolult nincs benne. Egyszerű az egész és pontos, következetes eredményt ad.
(#) szaffo555 válasza Ideiglenes hozzászólására (») Nov 10, 2010 /
 
A komparálási szint elérése után a Timer1 nullázásáig csupán néhány ciklus telik el, mert már a megszakítási ciklus elején tervezem a nullázást.
Ezután persze ujraindul a Timer1, de a következő megszakításig bőven elférek azzal a néhány programlépéssel, amit tervezek. (portra küldenék ki egy adatot) Ebből gondolom, hogy pontos és hibátlan lesz az időzítés.
Amit Te javasolsz, az is tetszene, de továbbra is erőforrás igényesebbnek tartom, mert ott van a 16 bites számok összeadása, majd az eredmény CCPRx L-H regiszterekbe írása. Ráadásul, ha működés közben akarnám módosítani az ismétlődési időt, akkor növelésnél összeadást kell használnom, csökkentésnél pedig kivonást. Ennek értékét pedig mindig a korábbi értékhez képest kellene figyelembevenni.
Például 5 usec ról megyek 10 usec ra az +5, majd váltok 8 usec ra az -2, de ha közvetlenül álltam volna át az +3 lett volna. (Most a leírt értékek csak példák, ilyen időzítéseket nem tudok az adott órajellel csinálni)
Igaz csak egyszer kell kiszámolni a fenti értéket, de bonyolítja a kódot. Ezzel szemben a reset megoldással nincs ilyen gondom, mert tudom a maximális és minimális sebességhez tartozó ismétlődési időt, és ha közbenső érték kell akkor előre definiált táblázatból feltöltöm a CCPRx regisztereket.
Lehet rosszul látom a dolgokat, de nekem továbbra is egyszerűbb a resetes megoldás.
Ellenben ha nincs igazam, megköszönném, ha megcáfolnátok.
(#) messer hozzászólása Nov 10, 2010 /
 
Ismét zaklatnálak titeket, van egy dolog amit nem értek az asm-ben itt találjátok a forrást. movlw high ModeSelectTable ; jump to the current mode MPlab-ban nézve a 97. sorban található ami az én értelmezésemben azt jelenti, hogy a w-be mozgatja a high ModeSelectTable értékét, viszont sehol nem találom azt hogy létre lett volna hozva ilyen nevű regiszter, vagy érték lenne neki adva. El tudnátok nekem mondani, hogy van ez a dolog?
(#) Hp41C válasza messer hozzászólására (») Nov 10, 2010 /
 
Szia!

Ott van alatta kb. 8 sorral... A részlet egy kiszámított ugrás előkészítése, a táblázat a program memóriában van.
(#) messer válasza Hp41C hozzászólására (») Nov 10, 2010 /
 
Ezt nem nagyon értem el tudnád mondani részletesen?
(#) Hp41C válasza messer hozzászólására (») Nov 10, 2010 /
 
Szia!

Kiszámított ugrás magyarázata a 16F684 adatlapjában a 17. oldalon a 2.3.1 "MODIFYING PCL" fejezetben van.

A lényeg: Az egész program számláló nem érhető el a pic-ben, csak az alsó 8 bitje a PCL regiszterben. Ha a PCL regisztert módosítjuk, a felső bitek (..8) a PCLATH regiszterből töltödnek át a program számláló felső részébe, az alsó része a PCL módosított értéke lesz. A program futása ettől a címtől folytatódik.
(#) messer válasza Hp41C hozzászólására (») Nov 10, 2010 /
 
Szia megnézem mert így kicsit kínai....
Következő: »»   832 / 1319
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