Fórum témák
» Több friss téma |
Részben. Csak Reset packettel szabad. Nem két egyforma. Csak reset packet jöhet. Semmi más. Se nem várólistázott, se nem low-level sem idle csomag nem jöhet. Csak reset!
NMRA 9.2.3 -> Packet Sequence for Command Stations/Programmers Találsz benne infót róla. Power-On-Cycle 3 vagy több Reset packet (erre engedélyezed a Service módba lépést... Magát a belépést engedélyezed) Ha jön packet long-preamble-val akkor lépsz bele, de csak ha előzőleg engedélyezve volt a service mód. (Tehát jött több mint 3 reset packet) Ezt a szervíz mód engedélyezőt célszerű számlálóként használni, egy bájtot. És akkor egyben a változó timeout is. Mert bizony timeoutolni kell az engedélyezést, nehogy összegyűljön a reset packet számláló.
De nekem rémlik valami, hogy figyelni kell hogy két egyforma packet jöjjön egymás után (gondolom akkor a kellő számú reset után) és ha ez a két legutóbbi packet egyforma, csak akkor szabad cv-ket írni.
Dzsolt: jók a képek, szépen világít, természetes a fehér színe, nem hideg.
Ja, azon része igen. Ha arra mondod.
De ott is 5 vagy több Write, és ugyan úgy 5 vagy több Verify packet kell. Vigyázz, ott sem kettő hanem öt!
Közben haladtam a fordulatszámmérő résszel. Úgy néz ki, hogy sikerült úgy beállítani a mérések idejét, hogy max sebességnél 250 -ig számol el. Ez 21Hz -es mérési időközt jelent. 36 lyuk van a tárcsán, így ha minden igaz akkor kb 8800 -at fordul ilyenkor a motor percenként. A pwm jelet kb 9 bites pontossággal tudom beállítani. Szerintetek lehet ezzel kezdeni valamit ? Vagy sűrítenem kéne még a fordulatszám méréseket ? Kéne még valami algoritmus aminek megadom a jelenlegi fordulatszámot, a cél fordulatot, a jelenlegi pwm értéket, és erre ad egy módosított pwm értéket. Jelenleg elég primitív módon van megoldva: ha kicsi a fordulatszám, akkor növeli eggyel a pwm kitöltést, ha meg nagy akkor csökkenti. Ez lassu menetnél eléggé szaggatott haladást okoz
![]()
Na jó, de ez nekem picit kínai. Maradjunk először a proporcionálisnál.
Ahol azt írja hogy Pout=K*(SP-PV) Ez nagyon jó, csak hogyan lesz ebből nekem pwm beállítási adatom. Mert ha behelyettesítem mondjuk hogy most 0 a fordulatszám, cél a 200, K = 2, akkor kiadja hogy a kimenet 400. Csakhogy mi ez a 400 ? Ennyivel kell növelnem a jelenlegi pwm kitöltésem ? Vagy ez egy % ? Tehát 400 % -al kell növelnem ? Mondjuk indulásnál mikor még 0 a pwm az érdekes lenne.
Elvagyok itt magamban. Úgy néz ki hogy sikerült implementálnom a P szabályozót. Legalábbis az erre jellemző belengéseket már produkálja. Aztán a belengés lecseng, és beáll egy sebességre. Ha megfogom picit kézzel, akkor beleerősít, és mikor elengedem akkor meg túllő a célon picit, ekkor egy pillanatra túl gyorsan megy, majd visszaáll a beállított sebességre. Jó játék
![]() A kódrészlet jelenleg így néz ki:
Hát nem semmi. Nekem beletelt pár hónapba mire elfogadhatóan kezdett működni a PID rutinom. Tudom neked sincs kész de jó úton haladsz. Elsőnek a microchip AN937 alapján kezdtem, de marha bonyolult és valamiért nem is működött. Aztán találtam az ATMEL oldalán az AVR221-es minta programot, ez alapján írtam asm-ben picpak-ra.
Köszi a bíztatást, és a doksikat, megyek is olvasni.
Itt is találsz olvasnivalót:Bővebben: Link
Sziasztok!
Egy ideje én is gondolkodom azon, hogy a régi analóg vasutamat digitalizáljam. Látom ti már 3 éve dolgoztok ezen. Igyekeztem alaposan végigfutni az eddigieket, mindenesetre elnézést ha olyat kérdeznék ami korábban le volt írva, csak átsiklottam felette: 1. Megvalósította-e valaki vezetéknélküli átvitellel a kommunikációt? 2. Milyen áramkorrel hozzátok össze az analóg jelet és a digitálisat, majd milyennel szeditek szét? Ha van kapcsolási rajz nagyon érdekelne! Egyen vagy váltó áramra teszitek a digitális jelet? A válaszokat előre is köszönöm!
Ezt is olvastad ? Na nem azért írom, hogy magam reklámozzam, de talán választ kaphatsz belőle a kérdéseidre.
helo.
Lidi nagyon szép leírást készített, én is azt ajánlom! a vezeték nélkuli kommunikácio amator szinten meg van oldva. Link az XWL kézivezérlot keresd! én is most veszodok vele. Légy szíves, és használd a nagy kezdőbetűket a mondat elején, meg a link beszúrásához a LINK gombot a hozzászólás író ablakban! Kösz: Frankye
Köszönöm az infókat. Velős anyag volt. Engem a programozás része érdekel igazán ennek az egésznek, azt látom, hogy ott megvan a szabadságom azt csinálni amit csak akarok. Az analóg áramkörök sem tűnnek túl bonyolultnak, bár az analóg világ nekem egy kicsit ingoványos talaj (sajnos).
Felmerült kérdéseim: 1. A booster valósítja meg azt, hogy az ICm által kiadott dcc jelből csinál +/- 14V -os váltóáramot, a megfelelő "szagatással", hogy a 0-ák és 1-ek detektálhatók legyenek? 2. A mozdonyban lévő dekoder áramkörét tanulmányozva, vannak ötleteim hogy működik, de inkább megkérdezem, hogy hogy lesz 5V táp az IC-mnek? Az IC a GP4-en olvassa a digitális jeleket? Oda már csak max. 5 V jut? (csatoltam a képet) Csak azért kérdezek ennyit, mert nem csak megépíteni szeretném hanem érteni is! ![]()
1: A booster nem szaggat. Legalábbis ebben az esetben nem. (az csak az új kísérleti rendszerben, amikor a mozdonyok visszafelé is kommunikálnak) A booster a bejövő 0 - 5V között ingadozó dcc jel feszültséget erősíti, a sinbe menő nagyobb ( kb 14-20V közötti nagyságú ) váltakozó polaritású jellé.
2: D6 zener korlátozza a PIC tápfeszültségét. És valóban GP4 re jön be a sínről a dcc jel egy ellenálláson keresztül. Amit a PIC portjában levő védődiódák korlátoznak 0 és 5 V közé. Ha van még kérdés írj nyugodtan. Remélem sikerül összehoznod. Majd képeket kérünk ám !
Amúgy a programozásra visszatérve: számomra egy kínszenvedés volt ez a dcc, a generálás parancsközpont része még nem is annyira, de a dekódolás... pff. Persze ha nem akarsz saját programot, csak megépíteni a mások által kreáltakat, akkor nincs vele gondod.
Ha most kezdenék sajátba, akkor lehet hogy nem dcc -t választanám. Csak azért választottam annó ezt, mert ez a modellvasutas szabvány, meg féltem, hogy lesz olyan modell amibe nem tudok saját dekódert tenni, és akkor már jó ha szabványosak vagyunk. Szóval ha ma csinálnám szerintem sima RS232 -t eresztenék a sínbe a boosteren keresztül. Hardveres uart meg már van elég sok féle picben. Egészen picit egyszerűbb lett volna a kommunikáció. Persze ez csak elmélet, nem próbáltam ki, talán majd egyszer. De mostmár marad a dcc, mert lesz egy modell már biztosan amibe nem tudok házilag dekódert rakni.
Sziasztok!
Hehe.. Én a hangos dekóder hanganyagát UART módban, 38400 baud-al, viszem át a programozó kütyüvel. Szóval működik a dolog. Hogy áll a fordulatszám szabályzásod?
Meglepő módon működik. Picit még alakítani kell a pid -en, mert max sebességre kapcsolva gyorsul-gyorsul, majd hirtelen megáll, mintha tulcsordulna valami.
Üdv!
Nekem is volt ilyen hibajelenségem a PID-nél, észrevételeim szerint az I tag csordul túl (pedig 32 bites változót használtam). Beraktam egy korlátozást neki, hogy ha elér 2 határértékig, akkor utánna nem csökkenti/növeli az értékét, azóta jó.
Letöltöttem egy-két rart a linkekről amit írtatok. A booster az világos, meg kell építeni és kész. A vezérlőhöz az allminidc.rar-t szedtem le az egyik oldalról, at áramkör tiszta, megnéztem a forráskódot is, első ránézésre azt hiszem értem. Majd még meglátom, hogy azt írom-e át, vagy nulláról írok egyet.
Kérdés: a 28 lépcsős sebességváltás elég? Én mindig 128-ban gondolkoztam. Azt persze értem, hogy poti nélkül azt elég kellemetlen gombbal léptetni. De élethű a mozdony mozgása ha csak 28 lépcső/irány van? A másik dolog, hogy a dekóder-hez a 12f629_fet.rar-t szedtem le, de ebben nem találtam forráskódot. Márpedig az nagyon érdekelne engem! Ti is ezt a dekódert használjátok, vagy másikat? Forráskódot tud nekem valaki adni? (ráadásul ebben az alkatrész listában pic12c519 van, nem 12f629...)
A 12F629 dekóderhez tudok küldeni frissebb hex -et, volt benne 2 hiba. Forrást sajnos nem, azt kérd attól aki írta.
Bár ezen még gondolkodom, mivel aki csinálta, az is mástól nyúlta a kód 90% -át, és még csak meg sem említi a forrást. Tudodmit, tojok rá, elküldöm neked, de csak este otthonról tudom. A legnagyobb hátránya ennek a dekódernek, hogy nem tud nagy frekis pwm-et, és terhelés szabályozást. Ettől függetlenül ügyes kis cucc, alacsony pwm frekit választva nem sípol a motor. 28 lépcső nem jelent gondot, mert a mozdony folyamatosan gyorsul / lassul, tehát elvileg nem ugrik a fokozatok között. Továbbá van olyan dekóder amiben van sebesség tábla, meg lehet csinálni hogy az első lépések között kisebb a táv. Tehát hogy ilyen parabolikus legyen a sebesség görbéje.
Te ezt a dekódert használod, amit az előbb feltöltöttem? Vagy egy másikat? Ha másikat, akkor küldd el nekem légyszi azt a pack-ot (rajzokkal, mindennel).
Na a sebbeséggel kapcsolatban, mostmár értem. Gyakorlatilag a 28 lépcsőhöz beállítom, hogy melyikhez milyen kitöltési tényezőt használjon, és mint tehetetlenséget beállítom a lépcsők közötti váltás gyorsaságát (folyamatos kitöltési tényező állítással, nem egy nagy lépcsővel). Milyen pwm frekit ajánlatos használni? A terhelés szabályozás az mit takar pontosan? A Marklin, Roco, Pico digitális vonatok dcc-t használnak, vagy mindegyik valami sajátot?
PWM frekiből vagy alacsony kell pl 80-200Hz, vagy magas 16kHz felett hogy ne legyen hangja. Én használtam már ezt a kis egyszer ű 12F629 -es dekódert, csináltam sajátot 12F683 -al, meg építettem MERG félét is 16F872 -vel ha jól emlékszem.
A terhelés szabályozás meg a nevéből adódik: megadsz egy sebességet, és azt mozdony a terhelés váltakozásai (pl emelkedő, kanyar) ellenére tartani igyekszik. A Marklin az valami mást használ, de a ROCO az DCC, PIKO nak is van dcc vezérlése. Ez a legelterjedtebb szerintem.
Mellékelem az eredeti, és az álltalam javítgatott forrást is. Két hiba volt benne: 1: olvasáskor nem jó CV-t ellenőrzött, 2: sebesség kalkulációban volt egy kis hiba.
Bár most belenézve nem biztos, pedig kipróbáltam mikor javítottam. Mind1, azt teszteld le, hogy mikor lépteted felfelé szépen a fokozatokat, akkor midegyikre kb ugyanannyit gyorsuljon. És ugyanígy visszafelé is. Úgy emlékszem, mikor rossz volt, akkor minden második fokozatban csak fél fokot gyorsult. A MERG féle dekóder pedig itt található: Loco decoder with feedback
Átfutottam a forráskódod. Köszönöm szépen. Úgy gondolom hasznos mankó lesz programírás közben.
Azon filózom, hogy talán a pic12f615-öt kéne használnom, lévén, hogy abban van pwm generátor (meg A/D is, még jól jöhet később). Egyébként röviden összefoglalnád, hogy milyen módszert használsz a mintavételezésre? Láttam, hogy 21us-onként vettél mintát... nem teljesen tiszta miért. A 0átmenetek között féltávon veszed? A másik, hogy mi a bevett szokás, hányszor küldi ki csomagot a Command Station? Tudsz valami adatot arra vonatkozólag, hogy kb. milyen arányban sikeres az adás?
Az a pic nem lesz jó, nincs benne eeprom a CV -knek. Ha 8 lábút akarsz akkor szerintem 12F683.
Az előbb küldött kódot nem én írtam, számomra majdnem teljesen érthetetlen a vételi mechanizmusa. Az ASM et se szeretem, ez meg ráadásul nem timer-rel biztosítja az adott időközönkénti mintavételt, hanem a kód futási idejével. És közben még soft pwm is megy. Brrrr.... Na ezért írtam magamnak C -ben sajátot. Kicsit visszaolvasol, akkor láthatod a metódust, leirtam én is, meg Dzsolt is. A command station egyfolytában küldi a csomagokat szünet nélkül. Persze ha négy mozdony van mint pl a miniDCC nél, akkor először küldi az elsőét, aztán a másodikét, majd 3. 4. és újra az elsőét. Kb 180-190 packet megy ki másodpercenként, ebből kiszámolhatod mennyi szól egy mozdonynak. Ha tiszta a vágány és jó a vételi algoritmus, akkor szerintem elég jó aránnyal veszi ( több mint 50%). De ez csak tipp. Kéne irni egy debug részt a dekóderbe, ami beleírja eepromba a hibaarányt, ami nem is rossz ötlet. Szerintem először ne sajátot építs, hanem egy beváltat. (pl MiniDCC + ez a kis egyszerű 12F es dekóder, + ShowDCC program pc ellenőrzéshez) Mert később egyszerűbb dolgod lesz ha ki kell próbálni valamit, és biztos lehetsz benne, hogy pl a command station jó jelet ad. Vagy hogy a dekóder jó. Tehát mindenképp kell egy működő teszt rendszer. Utána lehet kísérletezni kiváltani az egyes részeket sajáttal.
Ma azzal kísérleteztem, hogy hogyan lehetne javítani a korábban többek által kritizált hideg fehér ledek fényén.
Próbáltam minden féle csomagolásból kivágott színes fólia darabot elé rakni, de sehogy nem akart jó lenni. Aztán ma eszembe jutott, hogy van itthon írásvetítő fólia, arra nyomtattam egy sárgából pirosba tartó színátmenetet, 20cm széles csíkot. Egy panelre felfogattam egy smd ledet, mellé meg egy izzót. Ezután már csak házi színszűrőmmel meg kellett keresni hogy milyen színnél eggyezik meg a led színe az izzóéval. ██ Ez a fajta narancs lesz a nyerő ██ Sajnos a fényképezőm épp lemerült, de majd rakok fel képeket.
Jó, igazad van. Először kell egy működő tesztrendszer. Csütörtökön feltöltöttem, hogy mit találtam a vezérlőhöz, és mit a mozdonyhoz. Akkor, az ami abban van az jó?
A vezérlőhöz 16F628 igaz? A booster ami benne van, az is OK, ugye? A dekóderbe akkor 12F629? A rar fájlban van több hex is, melyik jó nekem? Ha nem jók azok a dolgok amiket találtam, akkor küldhetnél nekem egy packot ha van neked, amiben az általad megépített tuti jó dolgok vannak, és akkor én is azt megcsinálnám. Aztán ha megy elkezdem variálni. Olvastam, hogy C-ben írtad a progidat. Melyik frodítót használod?
Igen ,a vezérlőbe 16F628 kell, ami benne van rarban booster azt én nem építettem meg, de valószínűleg jó az is. Amit én építettam az a cikkben levő tranyós. De az IC-s az biztos jobb egyébként, meg egyszerűbb, csak az nem volt otthon.
A 12F629-es dekóderbe pedig válassz egy hex-et, ha jól emlékszem akkor a jo-smd.hex -et égettem be én is először. De használhatod azt is amit később küldtem javítgatottat. A saját cumóimat pedig Hi-Tech PIC C fordítóval szoktam fordítani.
Ok, köszönöm.
A 12F683 -al akkor terhelés-vezérlést is tudok csinálni, és van Hardware-es pwm-em is. Kösz, hogy figyelmeztettél az eeprom hiányára. Arra van valami mód, hogy ha írok C-ben egy kódrészletet, akkor megnézzem, hogy az hány órajel lesz miután lefordítja a fordító? |
Bejelentkezés
Hirdetés |