Fórum témák
» Több friss téma |
Én a MikroC-t használom. Abban fordítottam le ezt a programot. Proteus-ban szimuláltam és nagyon remekül működött. Azért is írtam ide a kódot, mert tudom, hogy működik.
Bonca
Úgy emlékszem, hogy nálad csak az LCD-t vezérlő lábakat kellett volna átkonfigurálni a forrásban, mert a kész PCB-hez kellett a program. Gondoltam, ha már érdeklődsz a dolog iránt, ezt simán el tudod végezni.
Bonca
Na abban nekem is lefordul. Ehhez viszont kellene egy kapcsolási rajz. Van ötletem, hogyan kellene kötni, de egyszerűbb, ha elküldöd azt is.
Köszi, Ádám.
A rajzot nem tartottam meg, de a kódból visszafejtve a kapcsolási rajz így néz ki:
- a PIC-LCD közötti kapcsolatot az "Lcd pinout settings" részből ki lehet olvasni; - az LCD D3...D0, VSS és R/W lábai a GND-re mennek; - a PIC RB0/INT lábára mennek a külső impulzusok; - külső felhúzó ellenállás nem kell; - külső oszcillátor nem kell; - az MCLR lábra kell egy felhúzó ellenállás. Talán accaboj fórumtársunknak még megvan a rajz. Bonca
Ez így van, érdekel, csak mivel nem tudok programozni, ezért nincs is befejezve. Nem tudnád átírni? Egyébként nincs befejezve a program mert nem a fordulatot írja ki.
Megvan a kapcsolás, felteszem.
Igazából innen már nem is kell tudni programozni. A két felfutó (vagy lefutó) él között eltelt Timer0 értékből ki lehet számolni az eltelt időt, abból pedig a frekvenciát... akarom mondani a fordulatszámot
A kommentben leírtam, hogyan lehet ezt kiszámolni. Bonca
Megnéztem, és nekem annó más programot küldtél.
Ez az! Ezt akartam kérdezni. Amit küldtem, az még valahol a levelezésünk felénél volt. A legvégén eljutottunk oda, hogy mindent úgy ír ki, ahogy kell, csak az LCD lábak sorrendjét kellet megváltoztatni. Ez volt az, amit szerettem volna tőled látni.
Holnap feltúrom a másik gépemet, remélem, megtalálom. A végleges változat periódusidőt és frekvenciát is számol és kijelez ezen az elven. Bonca
A végleges verzió nekem nincs meg, csak az amit feltettem. Kértelek hogy ird meg, de a beszélgetés valahogy félbe maradt, szóval nem jutottunk el a működő verzióig.
Egy 18F2520-ra írtam meg végül, szándékosan nem arra a mikrovezérlőre, amire neked szükséged volt. Őszintén szólva nem láttam akaratot, és nem akartam helyetted megcsinálni a tervedet. A 16F84A-ra ez alapján át lehet írni.
Itt van 3 kép alacsony fordulatszámról, magas fordulatszámról és alapjáratról. 300 f/p alatt csak ----- jelet ír ki a kijelzőre. A fordulatszámon kívül kiírja még a Timer0 értékét két impulzus között. Értelemszerűen minél nagyobb a fordulatszám, annál kevesebb értékkel telik meg a Timer0.
Bonca
Teszek ide még képeket, amelyeken látszik, hogy a jelgenerátor frekvenciája*60 adja ki a fordulatszámot.
Annyi "hiba" van a kódban, hogy amíg a Timer0 értékével babrálok, az is időbe telik, és ezt az ofszetet nem adom hozzá a pontos számításokhoz. Innen jön az eltérés a jelgenerátor és a kijelzett fordulatszám között. Bonca
A 234375-ös konstans úgy jött ki, hogy a Timer0 értéke 256us-onként nő eggyel (4MHz-es órajel negyede jut a Timer0-ra 256-os osztóval). A fordulatszám a frekvencia 60-szorosa. 60/0,000.256=234375.
Bonca
Na, ami forrást elsőnek írtad sikerült működésre bírnom egy 16f628án. A titok nyitja a while törzsének a kikommentezése illetve egy kis delay a program elején, hogy a pic csak a kijelző után induljon. Most megpróbálkozom a legutóbb adott forrásodat belegyúrni.
Tegnap este kicsit elmerültem az LCD működésében és azon kaptam magamat, hogy 8 ellenállással és 8 vezetékkel írogatok a kijelzőre de legalább egészen értem már. Köszönöm az eddigieket. Ádám.
Ne ezt a kitartást értékelem, ilyenkor szívesen segítek! Ami kapcsolási rajzokat ide feltöltöttem, pont ugyanúgy vannak nekem megépítve, és hibátlanul működnek.
A programoknak igazából az elvén van a hangsúly, a különféle regiszter nevek mikrovezérlőnként nyilván eltérhetnek. De a program működésének az elve ugyanaz. Ezen a problémán csak az adatlap ide vonatkozó részének elolvasása jelenti, és a Microchip véleményen szerint jól áttekinthető adatlapokat ír. Bonca
Igen, tegnap feltűnt, hogy van némi eltérés a két mikrocsip között. Bankok-timerek-regiszterek-lábak, stb... így inkább megpróbálom előbb felfogni, hogy mit is csinál a kód, aztán megpróbálom 16f628-ra átírni. Azt halkan megjegyzem, hogy még csak most kezdtem el "pikkelni", az eddigi legkomolyabb program, amit magamtól megírtam, az a led villogtatás volt különböző lábakon. Viszont a Timereket így is meg úgy is meg kell tanulnom használni, mivel későbbi projektjeimnek nélkülözhetetlen részét képezik. De ez már offtopic
Egy buta offtopic kérdésem azért csak lenne, ha szabad.
Tehát, az interrupt függvényt nem kell meghívogatni a main függvényen belül, hogy az lefusson? Vagy ez picnél nem így működik?
Nem kell meghívni. Ha bármilyen regiszterekben beállított megszakítás történik, "belép" a megszakítás rutinba.
Bonca
Értem már, köszi
Ha valakit érdekel esetleg, időközben találtam egy ilyet is: Bővebben: Link Pöc-röff indult.
Na, alakul mint púpos gyerek a prés alatt. Gyúrtam a két forrásodból egyet és egy PIC16F628A-n működik. Van még mit csiszolni rajta, de már ez is nagy előrelépés. A kódot ha kipofoztam, akkor természetesen megosztom.
Amit még változtatni kell rajta: Növelni a pontosságán(jelenleg kb 100 fordulat pontos) Ha nem kap jelet, akkor a fordulatszám legyen 0 Egyéni karakter bevitele("á") A pontosság egyébként nem biztos, hogy a program hibája, ugyanis egy 555-ös IC-vel hajtom meg és sima mezei passzív alkatrészekkel, ami közelítőleg jó, de közel sem pontos. Jobb híján majd bedobom az autóba és összehasonlítom az értékét a bent lévővel. Köszönöm az eddigi segítségedet! Ádám.
A pontosságát úgy tudod javítani, hogy megnézed a megszakítás rutin futásidejét, és órajelre visszaszámolva ezzel az értékkel "ofszeteled" a TMR0L és TMR0H nullázását. Így igen pontosan be tudod állítani a két lefutó él közötti időmérést.
Bonca
Jelenleg így néz ki a forrás:
TMR0H és TMR0L-t nem találtam a doksiban (PIC16F628A) A megszakítás rutin idejét hogyan lenne célszerű megmérni? Egyébként jó irányba haladok, vagy csak merő véletlen, hogy kb azt írja ki, amit elvárnék tőle?
Mivel a 16F628A-nak a Timer0 modulja csak 8 bites, ezért ott nincs TMR0L és TMR0H regiszterpár, csak egyszerűen TMR0. A Timer1 modul viszont tud 16 bites módban menni.
A megszakítás rutin idejét a megépített áramkör debug módjában (ICD), szimulátorban (pl. Proteus) vagy a fejlesztő rendszerrel (MikroC-nél Run > Start Debugger) lehet megmérni. Mondanám még az oszcilloszkópot, de annál biztosan nem tudsz annyira pontosan mérni. Bonca
Sziasztok!
Az után érdeklődnék, hogy van nekem egy robogóm, és szeretnék ráfaragni egy fordulatszámmérőt! Mérő órám van nekem, 12V-os 12000ig számozva! Két vezetéke van! Hogyan tudnék neki valami jeladót csinálni a főtengelyre? valami tippet tudtok adni?
Hellotok!
Segítségetek kellene. Haver vett a Nissan Almera-ba fordulatszámmérős órát, valaki bekötötte neki de alapjáraton valami 300 at mutat de valamikor 400 rpm Holott 900 nak kéne lenni. Menet közbe szerintem jót mutat de azért megcáfolnám. Trafóra lett kötve. Úgy van hogy fekete,fehér,kék(vastag),fehér-fekete,fehér kábelek vannak. A kék vastaghoz lett rákötve. Nem tudom jó-e, vagy valami dióda kéne elé vagy nem tudom.
Sziasztok! A minap kész lettem havernak a simójához a fordszámmérővel.(ezzel) a stabilizáláshoz 7805-öt használok. A problémám az volt hogy az utolsó 10 led világított folyamatosan. A hiba az volt hogy az átkötést (jumpert) vezetékdarabbal kötöttem össze és még az ic lábához is hozzáért. ezt kijavítottam + a 22k-s ellenállást kicseréltem 2k2-re mert több máshonnan vett rajzon mindkét ic-n az volt. most a ledsor megy, de az 555-része valamiért nagyon érzékeny, mert ha hozzányúlok alulról akor világít az összes led. Forrasztottam rá a bemenetére vezetéket és ha már a műanyag részét megfogom már valamennyi led világít. Esetleg tudnátok segíteni? Köszönöm.
Hello!
Nem oly nagy csoda, hiszen az 555 bemenetén 10Mohm van. Ekkora bementi ellenállással minden zavart összeszed. Nem tudom valakinek is működi-e korrekt módon ez a kapacitív csatolásos bemenet. Árnyékolt kábel illene hozzá, de én inkább a trafóról ilyen bementi fokozattal próbálkoznék. üdv! proli007
Köszi! Esetleg egy finom hangoló trimmert be lehetne illszteni valahova? a 7-es lábat nem kell összekötni a 6-ossal? Esetleg a tranyós változata (ez??) miben különbözik a tiédtől? Bocsi a h..lye kérdésekért . Köszönöm a válaszod !
Hello!
-Felesleges bonyolítani (már ha a trimmert az 555-nél gondoltad.) A gyújtásnál a trafó primerén egy 12V-os négyszögjel van, ráülve kb. 400V-os tüskével. Ezt kel jelformálni és ezzel vezérelni a következő fokozatot. - A tranyós és az IC-s fokozat között funkcionálisan nincs különbség, csak az IC határozottabb jelet ad, és a bementi zavarszűrést is korrektebben lehet kialakítani. - Az 555 7-es lábát nem kell sehova bekötni, mert itt az 555 egy hiszterézises komparátorként működik. üdv! proli007
Köszönöm a válaszod. Közben megépítettem és egy 10 cm hosszú vezetéknél nem mutat fals értéket se ha hozzányúlok vagy ilyenek ez a probléma megszűnt. Esetleg mivel tudnám kipróbálni hogy működik-e sajnos jelgenerátorom nincs a simó sincs itt arra gondoltam hogy egy kismotor segítségével "nyomkodnék" egy gombot gyorsan. Ezt is megvalósítottam de mindig maxra felmegy a fordulatszám, szerintem a motor indukciója miatt lehet.
|
Bejelentkezés
Hirdetés |