|
|
| Témaindító: mokus, idő: Nov 11, 2007 |
|
|
|
|
|
Sziasztok!
Szeretnék egy DS1821+PIC12F675 digitális hőmérő párost csatlakoztatni RS-485 bus-hoz. Ebből a párosításból legalább 3-at párhuzamosan kötnék a bus-ra. A hőmérő párok egymástól távolabb vannak elhelyezve és a bus végén egy PIC- el szeretném kijelezni a hőmérsékleteket.
Ehhez tudnátok adni tanácsot főleg a PIC illesztése kellene. (Flowcodeban csinálom a programot).
Előre is köszi a segítségeteket.
Üdv: attis71 |
|
|
Kedves hozzáértők...
Tapasztalta már azt valaki hogy a Flowcode-ban az LCD-re kiküldött karakter helyett egy másik jeleni meg
(esetemben az A helyett egy c kis farkincával) .
Ha számot küldök ki az megjelenik rendesen, és ha binárisan PrintASCII vel akkor szintén jól ... ??? A PrintString rosszul küldi ki a karakter kódját...?
Mit ronthattam el? |
» A fájlok letöltéséhez be kell jelentkezned! «
|
|
|
| Nézd meg a programosat másik kijelzővel , ha az jól dolgozik akkor a kijelzőben az A helyén a kukacos .. betű van a karaktertáblában . |
|
|
Szia! Ha jól értem neked 2 vagy több pic csatlakozásához kellene segítség.. Használd a flowcode vnet opciót, ezzel lehet tesztelni több pic adatforgalmát, működőképességét.
Bővebben: Link
Bővebben: video |
|
|
Köszi ez volt a megoldás...
Utánnaolvasok hogy mi is ez... |
|
|
Üdv a hozzáértőknek!
Nem tudom, mit nem csinálok jól, de nem akar hex-be fordítani a flowcode.
Ha a példák közül előveszek egyet, akkor azt gond nélkül fordítja.
Ha én csinálok bármit is, akkor hibával megáll a fordítás.
Mellékeltem egy primitív ábrát, ezt sem hajlandó lefordítani.
Mit csinálok nemjól?
v4.2.3.58 van telepítve. |
» A fájlok letöltéséhez be kell jelentkezned! «
|
|
|
| Nem tudom kipróbálni mert nincs fent a gépemen de az ékezetes betű nem gond neki? próbáld meg ékezetes betű nélkül elmenteni. |
|
|
| Nálam lefordul ékezetes betű nélkül.Ékezetessel nem... |
|
|
Próbáltam ékezet nélkül és most az asm-nél áll meg.
Feltettem a 4.3.7.63-at és azzal se megy. |
|
|
| Nincs hosszú elérési utad? |
|
|
Ossza már be magának.....
Másik meghajtón van.
Hogy dögöljön meg a lova a feltalálójának!
Betettem a főkönyvtárába és méltóztatik dolgozni. |
|
|
| Nem kezdődhet számmal a fájlnév, és nem lehet benne ékezetes karakter, ajánlott rövid elérési utakat tartani. |
|
|
OK, ezen túl vagyok, csak kissé nemtetsző a programtól, de ez van.
Másik kérdésem.
Hogy tudok pwm-et csinálni olyan pic-be, amiben eredetileg nincs?
12F675-ben nincs, de van egy olyan motor fordulatszám szabályzóm, ami ezzel van megépítve és pwm a kimenete.
Azt hogy csinálja? |
|
|
| Tettszik nemtettszik ez van, talán nincs is olyan programozó felület ami megeszi a magyar ékezetes betűket, a számmal kezdődő fájlnévbe a C fordító gabalyodik bele(Flowcode egy C fordító). PWM (ccp) ha nincs csinálni kell, vagy főprogramba deelay-el, vagy ha szeretnéd másra is használni a mikrovezérlőt akkor timer megszakítással érdemes. |
|
|
Csináltam egy pwm-et.
Működik is élesben is, csak a pwm frekit nem tudom, hogy hogyan tudnám befojásolni, mert keveslem.
Csak 180Hz körül van és 5ms körüli a periódus idő.
Ezt szeretném feljebb tornászni, csak nem tudom, hogy hogy kéne.
Segítség kéne. |
» A fájlok letöltéséhez be kell jelentkezned! «
|
|
|
Sziasztok!
Szeretnék fordulatszám mérőt készíteni, utána olvastam a fórumon belül, de egyszerűen nem értem a lelki világát. És sajnos nem vagyok képes úgy alkalmazni valamit, hogy nem értem működését! Elagyarázná nekem valaki, hogy az RB0 bemeneten mondjuk felfutóélre számlálok akkor honnan szerzem a ref frekit? Értem én, hogy vannak belső oszcillátorok, de hogy működnek?
Előre is köszönet. |
|
|
Ne bonyolítsd.
A fordulatszám az egységnyi idő alatti körbe fordulás.
1/min vagyis x fordulat 1 perc alatt.
Neked kell egy időzítő ami számlál. Ez fogja az időt adni. Az RB0 bemeneten pedig a jelek jönnek.
Az alap órajelet pedig a kvartz adja.
Vagyis TMR0-t beállítod valamekkora frekvenciára.
Ebbe teszel egy számlálót, amivel beállítható hogy hány milisec-ig számoljon.
Ez idő alatt bejön valamennyi jel. Ezt iratod ki az LCD-n.
Azt kell csak kiszámolni, hogy 1 fordulat alatt mennyi jeled jön be és 1 percen belül mekkora a mérési idő.
Vagyis ha 30 fogas jeladód van és 100milisec a mérési idő akkor
jelek száma * 10 * (60sec / 30fog)= RPM
A 10 az elején=az 1másodpercben a 100ms 10szer van meg.
Így az Lcd-t 100ms onként frissíted. kiíratod a fordulat számot és a végén kinullázod a TMR számlálóját.
Így működik nekem is a kocsiban az óra csoport, mind a sebesség és mind a fordulatszám mérő. |
|
|
| Valami ilyesmi fordult meg a fejemben nekem is, csak a tmr0 paraméterezése még nem tiszta. Valamint a tmr0 párhuzamosan fut a főprogrammal ugye? Mert 100msec nekem sok idő a kiesésre, viszont a fordulatszám meg fontos paraméter lenne. |
|
|
Igen megszakításban használva a "háttérben" fut.
Mit akarsz mérni? Hol használod? |
|
|
| Egy komplex mérőrendszer csinálok amely ráadásul usb van összekötve egy géppel. Majdnem mindent megoldottam, csak a fordulatszámmérés van vissza. Az idő az usb kommunikáció miatt fontos, hogy az adatokat a megfelelő felbontásban kapjam meg. 2 minta/sec a minimum. |
|
|
Ha úgy érted a mintát, hogy a fordulatszámot kimérje akkor a 100ms-os mérés az 10 minta /mp
Nálam a futása a programnak:
- Főprogramban elindítja az LCD-t
- Ez után hív egy tmr0 makrót, amit 20Mhz-es kvarcnál 1220 hz re állítottam. Ebbe tettem egy számlálót ami 122ig számol. Vagyis ez a 100ms-os idő.
Amikor a számláló eléri a 122-t akkor az LCDfrissítés nevű változó = 1-el.
- Ez után másik makró amiben az RB0-t kezeli. Itt az RPM változóhoz hozzá ad 1et vagyis RPM=RPM+1
- Ez után jön egy végtelen cikus amin belül van egy feltételes elágazás.
- Ha az LCDfissítés változó = 1 akkor írja ki a ....
- RPMKiírás = RPM * 20 vagyis (RPM * 10* (60/30)) vagyis (RPM * 10 * 2)
- Ezt kiírja az LCDre (nekem kerekíti 100ra mert nekem nem kell pontosabban, egyébként a 20-as szorzás miatt 20asával lépked)
- Ez után az LCD és a Timer változó = 0
Ezt a ciklust ismétli lényegében.
Vagyis 100ms onként kiírja a fordulatszámot.
(és még kis millió dolgot csinál: méri a sebességet, meg tett Km-t, benzin szintet, víz hőfokot, vezérli a ledeket, stb..)
Ha egyesével kell a mérés akkor 60 fog kell a jeladóhoz, hogy a 60as szorzást / osztást ki lehessen hagyni. lásd a képlet .... jel *10*(60/60) vagyis RPMkiírás = RPM * 10
A mérési pontosság nagyon sokban függ a bejövő jelek számától 1 fordulaton belül.
PL kocsinál a trafóról csak 2 jel jön be fordulatonként. Gyakorlatban viszont a jel tüskék miatt, ez 4 jel lesz. Viszont nagyon nagy léptében számol lásd képlet.
RPMkiírás = RPM * 10 * (60/4)
Vissza számolva, nagyokat ugrik fordulatszám változáskor.
Ezt lehet kompenzálni az idővel. Ha neked elég 4 minta akkor elég 250ms onként mérni viszont ott a 10 helyére 4-et kell tenni a képletben mert 250ms 4szer van meg az 1 másodpercben.
Ezzel lehet játszani. |
|
|
Ez lemaradt a végéről.
Azért fontos az 1 fordulatra eső jelek száma minél nagyobb legyen, mert annál kisebb lehet a mérési idő, ezzel annál pontosabb lesz a mérés is.
Pl ha 1 jel jön be fordulatonként akkor alacsony fordulaton rövid mérési idő alatt nem jön be jel így nem mér semmit. Ugyan akkor magasabb fordulaton is mérhetetlen lesz.
Példák az én mérési időmmel és jeladómmal.
Képlet: RPMkiiras=RPM * (10*(60/30))
Ha 10 jel jön be 100ms alatt akkor
RPMkiiras = 10* 20 = 200
Ha 11 jel jön ben 100ms alatt
RPMkiiras = 11* 20 = 220
Ha 12 jel jön be
RPMkiiras = 12* 20 = 240
Viszont ha 4 jel jön be 1 fordulat alatt akkor 100 ms alatti mérésnél: RPMkiiras = RPM * 10*(60/4) =
RPM * 150
Vagyis ha 5 jel jön be akkor RPMki= 5*150 = 750
Ha 6 jel jön be akkor 6*150 = 900
(150es lépték)
Ha növelem az időt 250ms-ra mert kevés a jel:
Akkor a képlet RPMkiiras=RPM * 4 *(60/4) = RPM * 60
Ha 5 jel jön be akkor 5*60 = 300
Ha 6 jel jön be akkor 6*60 = 360
(60as lépték)
Ha 60 jel jön be fordulatonként és 100ms a mérési idő akkor (10es lépték)
Remélem érthetően tudtam leírni ami a fejembe van  |
|
|
| Köszönöm a válaszod! A fordulatszámmérés fizikájában otthon vagyok és a mérési elvekben is, csak a picen belüli feldolgozás jelent, jelentett problémát, de most amíg itt elcsevegtünk összedobtam egy programot és úgy néz ki, hogy működni fog. Köszönöm az infókat. Egyébként infravörös, fényreflexió elvén működő fodulatszámmérést csinálok. |
|
|
| Egyébként nem tudod milyen grafikus kijelző kompatibilis a flowcode-dal. Mármint amihez kehet használni a beépített macro-cat. |
|
|
| Ez még Flowcode3-hoz volt, azóta kijött pár változat,4-es változatból a 4.3.7.63 (javasolt), és a 4.5.18.74(gazdaságos változat tele van bug-al) ezzel párhuzamosan kijött az 5.0.0.0-ös verzió ez a legfrissebb teljesen átdolgozott program. |
|
|
Hali!
Nekem igazából a labview-os mintapéldákra lenne szükségem. Elképzelésem sincs még, hogy hozom össze a pic-et a Labview-val USB keresztűl. A kijelzős kérdésemre nem tudsz választ adni? Láttam, hogy te már élesztettél fel grafikus kijelzőt. Van itthon néhány szines nokia lcd-m amik spi buszosak, de semmi infót nem találok a neten róluk. Ha szerzek sima mezei lcd-t(meghajtó nélküli) és ráteszem az mcp23s17 ic-t akkor menni fog a dolog? Van még igény arra, hogy többen összedobnátok egy 10 licenszes pro változatra? Mert én is szívesen beszálnék. |
|
|
| Hát a 10 felhasználós flow ra már ezek szerint 2 en vagyunk |
|
|