Fórum témák
» Több friss téma |
Ha már így tudod tesztelni, az enyémet nem forgatnád be 1220-ba? Elég lenne csak a várakozási részt, hogy nálad mit csinál. 9600 Baud-dal. Ha megkapja a "KAZ"-t, pl. legyen H az egyik kimenet. Az adatküldés előtt várakoztasd pár másodpercet...
6-os Flowcode-ban? 5-ösben elég a 8 MHz is. Az ábrádat csak hétvégén tudom kipróbálni...
Mivel ez egy tervezett projekt, próbapanelen raktam össze. A tápkábel volt kontakthibás, azt kicserélve működik mindegyik kontrolleren. 18F14K22 kevesebb tápfeszültséggel is beéri, gondolom azért nem fagyott le. Azért köszönöm a törődést!
A hozzászólás módosítva: Jan 30, 2016
Sziasztok. Régen jártam erre, meg elég régen foglalkoztam a témával komolyabban.
A problémám a következő, amiben segítséget, vagy iránymutatást kérnék, mit néztem el. A régi óracsoportot alakítottam át, a furat szereltről SMT-re. Lényegében kivettem pár mikrokapcsoló vezérlést, meg tápot cseréltem. Pár láb átkerült máshova, de a fő program maradt ugyan az. A jelenség az, hogy most az asztalon van még az óra, és tesztelés van: A hőmérést MCP9700as végzi a kocsin, és most tesztként a csatikba itt az asztalon bedugdostam a lábakat, és mér is rendesen, vagyis feszültséget ki írtja LCD-re, műszer szerint is jót mutat, viszont egész számot nem jól írja. Vagyis ha "Read as INT" - ként beolvasom az értékét és ki akarom íratni 1023-at ír ki. Referencia TL431 es, és 2.5V-ra beállítva. Programba +Vref és 249 van beállítva az AD tulajdonságoknál Fosc/64 el. Ugyan ezzel a beállítással ment eddig a kocsiban (Csak FRC- volt beállítva) Higanyos hőmérőhöz képest pontosan. 18F4620 as pic AN1, AN2 és AN5 van használva. AN1 en méri a hőt, AN2 benzinszintet(oda most nincs dugva semmi, csak 100nf el van lehúzva testre) AN5 ön tápot akartam mérni, feszültség osztóval de nem jött össze. 2.4-et mutat, ha VDD-t állítom referenciára akkor 4.9-et. (Ezzel még nem foglalkoztam miért, lehet a külső táp miatt, bár a test ugyan az, de lehet elválassza a két áramkört) Lényegében nem tudom miért nem mutatja jól az egészként való mérést.
Hol a program? Jól értem, hogy a "Read as Voltage" jól működik, a "Read as IINT" pedig nem?
Igen jól érted.
Read as voltage beolvas, és ki is tudom íratni, jól is mér. 0.8V körül van itt a szobában. Az alapján is számolom a hőmérsékletet. 0.1V fokonként az emelkedés. Read as Int esetén pedig 1023 amit ki ír. Hiába teszem jégre, vagy forró vízbe. Pedig elvileg változnia kellene. Nem szívesen teszem, ki a teljest, de végül is mindegy. A hozzászólás módosítva: Márc 11, 2016
Az ADC-k beállításainál a kommunikációs sebességeket kapcsold át Fosc/32, de inkább Fosc/64 -re. A kontroller 20 MHz-en jár, túl gyorsra van állítva. Nem sámli program, remélhetőleg te átlátod. Tesztelni nem tudom, nálam valamiért villog a kijelző folyamatosan.
Szia!
A változót is átállítod int-re?
Nehezen, de megvan miért villog. A kijelzőn lévő adatok frissítésénél törlöd az egész kijelzőt, majd kiírsz mindent újra. Felesleges, elég csak a megváltozott adatokat felülírni. A kijelzőt akkor érdemes törölni, ha teljesen újra akarod írni az egészet, de akkor sem feltétel, a karakteres kijelzőknél nem kell semmilyen extra lépés ahhoz, hogy a már látható karaktert felülírd.
Igen én átlátom. (Nekem nem bonyolult)
Fosc/64 el is próbáltam. Azzal is ugyan az a helyzet. Az érdekes az, hogy az előző panelon ami múlt hétig volt a kocsiban ugyan ezen beállításokkal működött. A Víz és a benzin AN1 és 2 volt csak használva, ami semmit nem változott. Lényegében csak az alkatrészek lettek SMD-re cserélve és a 3 nyáklapból lett 1. (75HC595 -ök foglaltak sok helyet. (13db) A pic maradt furat szerelt, csak a foglalat lábait kihajtogatva lett felület szerelt a foglalat. vagyis a pic is ugyan az) Én a panelon tesztelem, gépen nem is tudnám.
Ha a pic lábánál méred a feszt ott még jó? Mert lehet hajszál szakadás is a nyákon.
A lábnál, pic mellett nem mértem. Bár akkor a VOLT értéket sem mérné, nem? Ami viszont jó.
Készíts egy tesztprogramot. A PIC és az ADC beállításai legyenek azok, amelyek a valós programban, de a tesztprogram csak az ADC -vel foglalkozzon, semmi mással (persze a kijelző maradjon). Ha ott jó, akkor a programban van valami hiba.
A programban van három LCD Start() ikon. Felesleges, egy is elég az egész program elején. Start() után nem kell törölni a kijelzőt, eleve üresen indul, 0,0 pozícióban a kurzorral. A Clear() parancs (19 van belőle a programban) törli a kijelzőt és a 0,0 pozícióba állítja a kurzort, felesleges azt újra beállítani oda.
Az csak gombnyomásra írja át. Sajnos a kocsiban a refi, elektromos ablak végállás, duda és a régi táp nem szerette egymást és kilőtte az LCD kiírását, mikor esett egyet a fesz(nagyobb kondis sem oldotta meg, lehet fesz tüske is került oda ami kilőtte. Ilyenkor egy gombnyomásra újra start és törlés, majd kiírás.
De bár nem biztos elég átlátható, de csak azt írja ki újra és újra (100ms), ami változik. a konstans feliratok nem változnak.
Minden kiírás előtt törlöd a kijelzőt és újraírod az egészet. tulajdonképpen a hiba szempontjából mindegy, készíts egy tesztprogramot, amiben csak ADC érték kiírás van és LCD kezelés. Az ADC beáálításoknál a referencia feszültséget hagyd 5 V-on, te tudod, hogy 1023 az tulajdonképpen a külső referenciafesz. értéke.
Igazad van, egy próbát megér.
Van úgyis egy teszt verzió, ami a ledeket teszteli, abba bele rakom és kikapcsolom a led tesztet. Azon is gondolkoztam nem-e az a hiba, hogy a másik analóg bemenet meg nincs használva de meghívja. Vagyis lényegébe csak kondi húzza testre, de nincs bemenő jel. Azon is fix 1023-at ír ki. Vagy amásik, ami 12V os táp oldalról jövő feszültség, egy 22kOhm és 10kOhm -os osztón keresztül megy be a AN5 re. Ott sem jót ír. Vagyis semmit nem mér, pedig ha változtatom a bemeneti 14-10 V közti feszültséget, annak kellene változnia. De meg se moccan. Se akkor ha 5V os VDD referenciát, se ha 2.5 +V referenciát adok meg.
Ok, az ADC beállításnál úgy állítom be.
Holnap kipróbálom. frissítés/törlés Csak lapozás után töröl. Ha lapot váltok (10 lap van), akkor az adott ékezeteket feltölti ramba (első többirányú elágazás), a másik többirányúban LCD1 makróban (pl) törli a kijelzőt, kiír mindent, majd az elágazás alján lapozás változót egyenlővé teszi a kiíratással. A következő ciklusban mivel a kettő egyenlő, már nem töröl és nem ír ki konstans szöveget csak a változó adatokat. (és a ram feltöltést is kikerüli) (Bonyolultnak tűnik, de nem az.) (Ha lapot váltok, első körben töröl, kiír, majd, második körben csak felülírja kordinátán a szöveget/változó adatokat. Ha van ékezetes LCD akkor ki lehet hagyni a ram feltöltést, ha nincs, mint most, akkor be lehet kapcsolni. (Első LCD európai volt abban volt ékezet, a mostani kínai karakteres és nincs ékezet. Ezért van külön elágazásban a ramfeltöltés és a normál program rész. Ha elmegy a kijelző akkor, (felfelé gombbal újra indítja a kijelzőt, de következő ciklusban ha nincs gomb nyomva, akkor újra indítás nélkül fut le.)
Szia
Én nemrég szenvedtem meg egy hasonló problémával (reléket kapcsolgatok és vissza rugdostak). Minden mérő és táp vonalra tegyél párhuzamosan egy 5.1V-o zénert ami sorba van egy 22nF-es foliával. Szinte az összes zavart kiveszi.
Na megtaláltam.
Ahogy javasoltad, csináltam egy csak ADC kiírásos programot Amiben mind az INT és feszültséget jól írta ki. A nagy programban megtaláltam, hogy az Viz_INT változó beolvasása után AN1 ről, később a Bemenő feszültség AN5 nél is ugyan ebbe a változóba olvastam az értéket ami ugye nem mér és 1023 az értéke. A sorban a két változó V betűnél egymás alatt van, sanszos, hogy el kattintottam. Vissza cserélve most minden jó. Köszi a segítséget.
Sziasztok!
Következő lenne a kérdésem... mi a legegyszerűbb kommunikációs mód 2 PIC között? Adott egy 2 AN bemenetes PIC az egyikkel egy hőfokot a másikkal egy V értéket mérnék! Ezt szeretném elküldeni egy másik PIC-nek ami majd kiirja nekem egy LCD kijelzőre! Visszalapoztam a forumot és Bakmannak valami hasonló hozzászólását láttam. HA jol tippelem akkor majd valamilyen protokollal RX és TX lábon fognak kommunikálni! Illetve vane különbség hogy kábellal vagy egy 433 adó -vevő modulal kötöm össze őket?
Azért gondoltam 2 PIC re, hogy az első "leolvassa" az érzékelőket (elküldi a modulon) a màsodik PIC meg kiirja az LCD-re!
Igen, kb. az RS232 (UART) protokollt a legegyszerűbb használni. Több lehetőséged is van az adatküldéshez, de két alapeset ven. Az első esetben a mérő PIC időnként egyszerűen elküldi az adatokat a vevőnek. A második esetben a mérő PIC várja a kijelző PIC adatkérését és csak a kérés beérkezése után küldi el neki az értékeket. Utóbbi a klasszikus mester-szolga (master-slave) páros. Azt már te döntsd el, neked melyik kell.
RS 232 esetén, ha nem nagy a távolság, még TTL-RS232 illesztő sem kell. A hozzászólás módosítva: Márc 14, 2016
Evvel a nagy feladattal egy pic is röhögve elboldogul
És ha a kijelző az ablak túloldalán van?
|
Bejelentkezés
Hirdetés |