Fórum témák
» Több friss téma |
Még annyit hogy az ilyen eszközökben/vezetékekben tthonvagyunk stb. mert az Édesapám műszerész. Csak a PIC sajnos egy külön tészta.
Az adatlapján ez van:
step angle (1-2 phase): 5,625°/64 Ez egy impulzust jelent, vagy azt, amikor minden tekercsen végigment egyszer az áram. Ja, és úgy értelmezendő, hogy 64 lépés = 5,625°? Egyébként meg ez nem oldja meg a programozásbeli gondomat. Arra valami magyarázat?
OK. Programozni tudsz? (alapelvekkel tisztaban vagy?)
Ez azt jelenti, hogy 64 lépés egy körülfordulás, egy lépés 5,625° (360/64=5,625). Mondjuk úgy, hogy ha pl. 5 kivezetéses a motor (1 közös, 4 tekercs) és egyszerre egy tekercset hajtasz meg, akkor az egy lépés. A rendes meghajtás persze bonyolultabb (és erősebb), H híddal szokták csinálni.
A programmmal kapcsolatban sajnos valaki másnak kell segíteni, ha nem életbevágó, akkor már nem használok assemblyt, és a tudásom is kopott.
A hbám nem fog kiderülni. Hazaérve szészedtem megint 4szer és összeraktam 4szer, aztán egyszercsak működött. A lényeg hogy működik.
Viszont fölsöleges volt azt hiszem az egész. Amikor a PICbe vezettem a 11-szeresére csökkentett jelet, akkor ha ezt elkezdte mérni, akkor a PIC (eddig jól működő) másik két ADC bemenete megbolondult. Elkezdte ki-be kapcsolgatni a páka fűtését. De csak akkor ha ez a bizonyos táp ADC működött (egy IF-fel elválasztottam, hogy ne figyelje folyton, csak ha kérem). Az ilyen "egyik hat a másikra" hibákat utálom, így ennek a TÁPnak nem lesz digitális kijelzése és kész! Azért köszönöm a segítséget! Más: Viszont az LCD kijelző (16x2) valamiért nem egyenletes képet mutat. Ha a potival beállítom, úgy, hogy nekem jól olvasható legyen, akkor az első sor szép, de a második sor vége már nehezen olvasható. Olyan a második sor vége, mintha az első sor eleje akkor, ha a potit visszább tekerném. Ez mitől lehet? Idézet: Azért remélem nem gondolod, hogy több millió eladott PIC belső felépítése okozza ezt és nem a Te hibádból ered ?! ( Az, hogy nem akarsz vele küzdeni/megoldani, az már a Te dolgod!) „Az ilyen "egyik hat a másikra" hibákat utálom, így ennek a TÁPnak nem lesz digitális kijelzése és kész!” A hozzászólás módosítva: Ápr 10, 2013
Az LCD-hez nem tudok hozzászólni. Ahogy mondtam, gyanús, hogy az ADC bemenete valójában kimenet, magas szintre állítva. Ha ezt elkezdjük másfele húzni, simán megbolondulhat a többi bemenet. Ezt okozhatja programhiba, megszakításban rossz címre ugrás, MOVLB hiba (nagyon csúnya dolgokat szokott csinálni, ha valahol kifelejtjük). Valamikor én egy nagyot szívtam egy atmelen azzal, hogy ha az összes adresult regiszter nem olvastam ki, a második mérésre már rosszul működött. Nem tudom, itt ilyen lehet-e, a PIC AD-jére már nem emlékszem.
Na igen itt jönnek a gondok. Nem, programozni nem tudok és az alapelvekkel sem vagyok tisztában.
OK, akkor a BASIC-et ajanlom kezdetnek.
Azzal viszonylag konnyen elsajatithatod a programozas alapjait, egyszeru, gyorsan sikerelmenyt ad. A tobbi programnyelv is hasonlo, csak mashogy hivjak az egyes utasitasokat. Szinten nagyon sokat lehet tanulni a kommentelt peldaprogramokbol. A PIC-nel szerintem akkor nem lesz neked nehez az aramkorbe valo beillesztese. Ha szabad javasolni, akkor a 18F-es sorozattal kezdd majd. A PIC-nel az a nehez, hogy : - jol kell az aramkorbe illeszteni - helyesen kell megadni a konfigbiteket - a programnak is mukodnie kell benne
Értem.Köszönöm a választ.
Nem, nem erre gondoltam. Volt itt korábban egy 2 hónapig tartó problémám a motorok működtetésével és nem lett meg az igazi oka. Ebbe nem akartam belemenni újra. Erre gondoltam, hogy ez egyik dolog hat a másikra (amikor bekapcsolom össze-vissza hibás, amikor nem kapcsolom be minden klafa), miközben elvileg nem kellene neki. Meg van a megoldása biztos és az oka is, de igy nem könnyű megtalálni (mint a kontakt hiba a PCben ) Llajti: Köszi az ötéetet, megnézem, hátha ilyesmi hiba van, de nem gondolnám. Valakinek van ötelete miért más az LCD két sora? Mintha külön poti állás tartozna hozzá...
Nem akarom szétoffolni a témát, de ilyen LCD hibáról még nem hallottam soha sem. Szerintem nem is LCD hiba lesz, hanem valami szoftver téma. Az is lehet, hogy folyamatosan írod/törlöd a második sort és csak "csupán" gyorsan villog, vagy valami. Le kell ellenőrizni valamilyen statikus szöveggel, amit csak egyszer íratsz ki, ol. induláskor.
Üdv.
Most kezdtem el a PIC programozást, és 2 számot szeretnék összeadni. AVR-t programoztam assemblybe, viszont ott csak leírom h ldi r16,0x01 akkor az 1 et betölti az r16ba. Picnél hogy tudok ilyen változót létrehozni? Azt tudom hogy a létrehozott változó értékét bemozgatom a workbe, majd összeadom a workot egy konstansal, az eredmény a workbe képződik,vagy a regiszterbe. Segítséget előre is köszönöm.
Minden PIC adatlapban megtalalhato az Instruction set summary. Ott le van reszletesen irva.
Egyebkent: movlw konstans movwf tar1 (ilyenkor a W erteke modosul, ertelemszeruen) Elofordulhat, hogy ker egy .ACCESS-t vagy ,BANK-ot is a tar1 utan, attol fuggoen, hogy a gyorsram vagy a bank altal cimzett felso 4 bitu tarhelyre akarod tenni. Ez is le van irva az adatlapban. Ha csak a valtozora van szukseged, ertekadas nelkul, akkor vagy a cblock-ba teszed a tobbi koze, vagy direktben megadod, hogy pl. tar1 equ 0x12 - ekkor a hex12-es cimre kerul majd, illeve igy hivatkozik majd ra.
Értem,köszönöm. Akkor ki kell választanom a memória címet, ahová létreakarom hozni a változót. És akkor ezt a memory organization-nél tudom megnézni hogy melyik címre kerülhet a változó? Vagy hová kell definiálni?
Igy van.
Az access ram-ban kb 5f-tol visszafele (a regisztereknel meg tudod nezni, melyik az utolso, azokat FF-tol visszafele szamozzak) Ha bankolt, akkor meg szinte barhova (persze, ha fizikailag letezik az a memoriacim). Arra vigyazz, hogy ez PIC-fuggo, tehat mindig az adott tipus adatlapja a mervado.
Hello!
Na csak felhúztam magam azon amit írtál (úgy értem felszívtam magam, hogy "na azért is megnézem"; nem sértődés, vagy ilyesmi...), és nem adom fel, legalább is utána nézek a dolognak. Ennek kapcsán pár gyors teszt kapcsán egy PIC-et meg is sütöttem, mert a fesz osztót elfelejtettem, így a PIC kapott 23Vot, amit nem tudott megmérni a szegény -1 db PIC De a következő érdekességre jöttem rá. Van 2 aktív ADC. Az egyik a kívánt hőfokot érzékeli, a másik a valós hőfokot a pákáról. Mindkettő a kapott feszültséget integerben olvassa be, amit aztán beszorzok, hogy megkapjam a hőfokot. Ezek hasonlítja össze és be-vagy éppen ki kapcsolja a páka fűtését. ez eddig kiválóan működik is. Ha berakok egy harmadik ADC-t is ami integerben olvassa be az értéket, működik minden. (nem is kötök rá semmit, csak a programban kapcsolom be!!!) Viszont, ha azt állítom be, hogy feszültségként és lebegőpontosban kapjam meg az értéket a harmadiktól, akkor megbolondítja a másik ADC-t. Az eddig jól működő integeres ADC értéke úgy 1-2 másodpercenként leesik nullára, majd visszajön. Mindezt elég rendszertelenül teszi. Ötlet esetleg, hogy miért van ez? Hallott már valaki ilyesmiről? korni.papp: Én javaslom neked a Flowcode-ot. Ha dobsz rám egy üzit segítek némi leírással az induláshoz. Én is ezt használom (szégyen, nem szégyen... pedig tudok programozni is) A hozzászólás módosítva: Ápr 11, 2013
Lehet későn szólok hozzá de szoktak tenni időzítést két AD olvasás közé. Nekem is volt olyan esetem, hogy két potenciométert vittem be, és, mivel túl hamar átváltottam az egyik AD csatornáról a másikra, úgy viselkedett, mintha valamilyen összefüggésben lenne az azelőttivel.
tegyél be egy időzítést (10us) a két mérés közé.
Sziasztok!
Kis segítséget szeretnék kérni. Az alábbi kódot használom, nyomógombbal tejesen jól működik. Viszont egy rezgésérzékelőt szeretnék indításként rákötni. Megoldható lenne hogy az alvó állapotból csak bizonyos számú impulzus után ébredjen a bemenet? Tulajdonképpen az érzékenységet szeretném állítani.
Akkor ez megint nem stimmel.
Nekem a 64 lépés kb. 12 fok. Ez egyébként unipoláris motor. Ehhez nem kell H híd. Viszont az lehet, hogy a fél lépes móddal lesz 64 lépésből 5,625 fok, és akkor annak a felbontását adták meg. Ezt még kipróbálom.
Volt egy hasonló projektem. Mivel az interruptra azonnal ébred, úgy tudtam megoldani a dolgot, hogy sleep előtt a legkisebb belső órajelre állítottam, ébredéskor fut egy kis rutin, ami számolta az impulzusokat megadott ideg, ha a küszöbértéknél kisebb volt -> visszaalvás, ha nagyobb ->kvarc-ra váltás és a rendes program indítása. A PIC-ek között vannak kifejezetten low power-esek is, ezeknek az áramfelvétele uA-es nagyságrendbe esik sleep és alacsonr rc órajel esetén, így simán lehet elemről is használni, de a normál, nem low poweresek is nagyon keveset fogyasztanak.
Megadod a motor pontos típusát?
Valami nagyon nem stimmel, 12 fok nagyon kevésnek tűnik, azt jelentené, hogy 1920 lépéses, illetve = 0,1875°/lépéses a motor, márpedig ilyen állat nincs!
Kipróbáltam a fél lépéses üzemmódban. Valóban az jött ki, hogy a 4088-adik impulzusra ért körbe. Teljes lépésben ez 2044.
28BYJ-48 a motor.
Óóó, értem már.
Stride Angle 5.625° /64 Speed Variation Ratio 1/64 Tehát a motor 1 lépése 5,625°, de van benne egy 1/64-es áttétel
Hogy biztos legyek benne ,a PIC még a környéken sincs? Nem egy kimeneti magasra programozott pic láb van az osztó kimenetén? Ezt méred szorgalmasan..
A hozzászólás módosítva: Ápr 11, 2013
Biztos hogy az a hiba. Ha az osztó bemenetén 1,5V van akkor nem lehet az osztó kimenetén 4,5V.
Akkor itt még a Flowcode is eltolhatja. Érdemes lenne megnézni a legenerált kódot.
Ez egy jó ötlet, sok mindent megmagyarázna, ha ez lenne a hiba. Közvetlenül egymás után van a 3 ADC mérés, és lehet hogy nem tudja kezelni ha nincs szünet.
Kösz, ezt azonnal kipróbálom, amint lesz lehetőségem! Erre gondolhattam volna magamtól is! Llajti: kösz, ezt néztem már, sztem rendben van. Összhasonlítva azzal a 2 ADC résszel ami működik és azzal ami nem, nem találok különbséget. proba: Az osztó hibát megtaláltam találtam egy lógó GND kábelt, amit visszatettem a helyére és működik is. A hibát nem tudom mi okozta, de most működik. SZét is szedtem, össze is raktam, és jó. Most azt csinálom, hogy a PICre nincs semmi rákötve, csak a programba írom be a 3dik ADC-t és már ott elkezd hülyén működni. Szóval nem is kell bekötni a mérendő forrást. |
Bejelentkezés
Hirdetés |