Fórum témák

» Több friss téma
Fórum » Digitális vasútmodellezés
 
Témaindító: mspike, idő: Júl 7, 2005
Témakörök:
Lapozás: OK   14 / 40
(#) lidi válasza joko1313 hozzászólására (») Ápr 21, 2009 /
 
Off lenne a kimitépítettben ezért válaszolok itt:

Sikerült beállítani, először lassú menetben nagyon szaggatottan ment, de most már csak a nagyon lassú menetnél van némi rángatás, de az is csak egyik irányba és csak ha terheletlenül önmagában megy a mozdony. Lehet hogy még lehetne állítani rajta, de ez már így is szuper. Meg nekem csak ez a 3db egyenes vágányom van, majd még hangolgatunk rajta bátyámnál. Nála legalább egy "dilikör" van. Lefordítottam amúgy a MERG-es CV leirást magyarra, de az most nincs itt nálam, csak otthon. Ha érdekel át tudom küldeni.
(#) joko1313 válasza lidi hozzászólására (») Ápr 21, 2009 /
 
csak kiváncsiságbol kérdeztem , mert anno én is rendeltem 872es picet, hogy osszerakom a dekodert. de elotte a 16f84essel probálkoztam ,de párszor az idegeimre ment. elég gyorsan elfelejtettem a merget. azota csak zimo dekodereket vásárolok, van hangos is, meg mini . én TT ben utazom ezért számít a nagyság meg az ,hogy tudják az ABC funkciot, az automatikát is arra terveztem, hogy a dekoderek abc sek lesznek.
(#) lidi válasza joko1313 hozzászólására (») Ápr 21, 2009 /
 
őő, de ugye nem az F84 -be akartad tölteni a 872-es programját ? Amúgy van 16F84 -es, vagy 628 -asra való működő dekóderem is, de az csak próbapanelen drótokkal lett megépítve. És a drótok lettek bedugdosva a dekóder aljzatba. De működött végülis.
(#) joko1313 válasza lidi hozzászólására (») Ápr 21, 2009 /
 
na azt azért nem, ha építeni is fogok dekodert csakis a 12f629es johet számításba a nagysága végett. de azt majd a gyermekeim terepasztalára. most hanyagolnom kell, más kot le.komplett tisztítorendszert készítek a barátom kertitavához.
kapok érte egy elektromos rollert! és utána johet a tuning!!!
kicsit offra sikeredett!
(#) lidi hozzászólása Máj 15, 2009 /
 
Nem teljesen ttl, meg digitális de lenne egy kérdésem: adott egy bühler motor, H0 modellbe lett véve, ment is egy darabig, de eléggé meleg. Az normális hogy üresjáratban, kivéve a modellből 12V -on 1A -t vesz fel ?
6V -on meg kb 600mA -t. És 6V on járatva is forró lesz pár percen belül. Mindezt üresben.
(#) lidi válasza dzsolt hozzászólására (») Máj 19, 2009 /
 
Dzsolt !

Elkezdtem írni egy saját dcc dekódert, az alapokkal megvagyok, szimulátorban már megyeget. Csak odáig vagyok még meg, hogy a beérkező adatbiteket byteokba pakolgatom. C ben írtam, 16Mhz kell neki legalább, mivel a kódom nyilván nem optimális még. Nem akarok, és nem is tudok a digitoolsos dekóder babérjaira törni ne aggódj Én úgy olvasom be a biteket, hogy kb 20uS -enként mintát veszek a sinjelből. És ha megvolt a sínjelnél két váltás, akkor összeadom a minták számát. Ami ha kevesebb mint 6 akkor 1-es bit, ha több akkor meg 0. Namost ez szimulátorban működik, de a valóságban nem tudom hogy menne-e. Mert ha pl áramkimaradás van, akkor ez nyilván megzavarja a dekódert. Csak elméletben le tudnád írni hogy te hogyan döntöd el hogy most épp 0 vagy 1 -es bit jött-e be ?

(#) dzsolt válasza lidi hozzászólására (») Máj 23, 2009 /
 
Szia!
Nekem külső megszakítás lábra érkezik a dcc jel és magas prioritású rutinban kezelődik le a bit idő mérés. Igazából én teljes periódus idejét mérem, timer1 segítségével aminek alsó bájtja 1us-onként növekszik. Amikor jön egy fel (vagy lefutó) él a megszakítás lábra, akkor a kiszolgáló rutin gyorsan elmenti Timer1 értékét és törli, előkészítve ezzel a következő bitre. Ezután már csak az elmentett értéket kell vizsgálni és eldönteni milyen bit jött. Itt dől el az is, hogy a fel- vagy lefutó élt kell figyelni. Például ha a mért érték 128-180us között van akkor valószínű, hogy éppen két külömböző bit, két felénél léptél rá a sínre (pl. 1-es bit poz. félhullám és a következő 0 bit neg. félhullám). Az eremény a "dcc_ujbit" és jelzés a dcc_dekodoló rutinnak pedig a "dcc_ujbitjott" és a "dcc_bithiba" bitek. ASM-ben írtam igy néz ki:

;================== MAGAS MEGSZAKITASOK ============================
; magas megszakitasok kezelese.
; INT0IF: a DCC jel fel vagy le futo elenel jon, megmeri T1 meddig szamolt es ennek megfeleloen
; allitja be a dccujbitet, vagy a hibabitet
; ------------------------------------------------------------------

org 0x0100
MagasInt:

movwf wmenth
movff STATUS,statusmenth
; movff BSR,bsrmenth

;....................................................................
int0:
btfss INT0IF
bra kih

movff TMR1L,dcc_periodusido ; elozo INT ota eltelt ido us-ban
clrf TMR1L ; ido ujraindit
setf TMR1H

btfsc TMR1IF ; ha ido > 255us akkor hiba
bra bithibavanx

movlw dcc_1_min
cpfsgt dcc_periodusido ; ha ido < 2*52us akkor hiba
bra bithibavan

movlw dcc_1_max
cpfsgt dcc_periodusido ; ha ido < 2*64us akkor a bit '1'
bra egyesjott

movlw dcc_0_min
cpfslt dcc_periodusido ; ha ido < 2*90us akkor hiba, elvaltas kell
bra nullajott

btg INTEDG0
bra bithibavan

nullajott:
bcf dcc_ujbit
bsf dcc_ujbitjott
bra kih

egyesjott:
bsf dcc_ujbit
bsf dcc_ujbitjott
bra kih

bithibavanx:
bcf TMR1IF
bithibavan:
bsf dcc_bithiba

;....................................................................
kih:
; movff bsrmenth,BSR
bcf INT0IF
movf wmenth,w
movff statusmenth,STATUS
retfie

>>
(#) lidi válasza dzsolt hozzászólására (») Máj 23, 2009 /
 
Hmm, és ez hogyan reagál arra, ha néha 1 pillanatra kontakthiba van ?Tehát mondjuk a bit felénél van egy kis kimaradás. Akkor az a bit/packet már oda is veszett ? Azon gondolkodom, hogy lenne e értelme egy olyan megoldásnak, hogy a bemenetet 2.5V ra húzni ellenállásokkal, amit egy smidth trigger követne. Így ha kimaradás van 1 pillanatra akkor az nem tudja átváltani a bemenetet, csak ha le, vagy fel van húzva a dcc jel által.
(#) dzsolt válasza lidi hozzászólására (») Máj 23, 2009 /
 
Kontakt hibánál timer1, vagy túlcsordul, vagy 2*64us alatt van, akkor a "dcc_bithiba" 1 lesz. Ilyenkor bizony oda az egész packet. A dcc_kommunikacio rutin ezután kezdheti előről, keresni kezdi a preamble biteket. Én nem raknék több hardver elemet emiatt a dekóderbe, had legyen minél kisebb.
(#) lidi válasza dzsolt hozzászólására (») Máj 24, 2009 /
 
Érdekelne egyébként egy program, ami DCC packeteket kódol le MPLAB stimulus file-ba ?

dcc-stim.png
    
(#) dzsolt válasza lidi hozzászólására (») Máj 24, 2009 /
 
Te írtad? nem semmi. Annyira nem használom az MPLAB szimulátor részét, hogy még elképzelésem sincs arról, hogyan néz ki egy ilyen fájl, hogy használható stb. Azért kösz Zsolt.
(#) Topi válasza dzsolt hozzászólására (») Máj 24, 2009 /
 
Én egy Naked ISR-ben írtam meg C-ben AVR alá a dekódoló rutint.
De én teljesen státusz vezérelte írtam, tehát nem az itt előbb vázolt egymás utáni folyamatok módszert. Bármikor bármelyik státuszra át tudok ugrani esetleges hibánál.

1. Preamble várás,
2. Indító nulla várás
3. Bájt kezdet várás
4. Bájt várás.

Az összes csomagot egy átmeneti pufferben tárolom, és nem dobom el XOR hibánál, hanem kettő csomagot is bevárok. Ezekből keresem az egyezést és próbálom helyrehozni a hibás adatot. Kiválóan működik nagyon zavart és terhelt hálózaton is, és sokkal gyorsabban reagál is, például Railcom esetén így az eszköz.
ISR-ben meg végig mindenhol ahol globális változó kellene, inkább feláldoztam pár GPIO regisztert hogy ne legyen egy halom push-pop. Emiatt az egész és csomagfeldolgozó rutin össz mérete nem haladja meg a 150 bájtot.

Mozdony dekóderben több kódhelyet foglal el a terhelés és PI szabályzás
(#) dzsolt válasza Topi hozzászólására (») Máj 24, 2009 /
 
Na várjál, mi még csak bit érzékelésnél tartottunk . A bitek elpakolása nálam is segédbitek meg számlálók segítségével történik (már ha ezt érted státusz vezérlés alatt). Fennt van már egy ideje az oldalamon 2006 óta nem változott ez a rész, csak szeretném kipróbálni a kód beszúrást is.
  1. ;--------------------------------------------------------------------
  2. ; DCC kommunikacio. Ez a rutin a kulso megszakitasbol erkezo biteket
  3. ; ertelmezve figyeli a preambe-t, ha az megjott a tobbi bitet
  4. ; beforgatja a "dcc_adatreg"-be. Minden 8-adik adatbit utan vizsgalja
  5. ; hogy "packet end" vagy "data byte start bit" jott-e.
  6. ;--------------------------------------------------------------------
  7.  
  8. dcckommunikacio:
  9.         btfsc   dcc_bithiba
  10.         bra     dcckommhiba
  11.        
  12.         btfss   dcc_ujbitjott
  13.         return
  14.        
  15.         bcf     dcc_ujbitjott
  16.        
  17.         btfsc   preamble_volt
  18.         bra     dccbeforgat
  19.  
  20. ;.........................................
  21. ;preamble vizsgalat
  22. ;.........................................
  23.  
  24.         btfss   dcc_ujbit                       ; 0 vagy 1 jott
  25.         bra     preamblenez
  26.        
  27.         incf    dcc_bit_szamlalo,f              ; ha 1 akkor szamoljuk oket
  28.         return
  29.        
  30. preamblenez:
  31.         movlw   preamblebitszam                 ; ha 0 akkor megnezi elotte hany 1 jott
  32.         cpfsgt  dcc_bit_szamlalo
  33.         bra     preamblehiba
  34.        
  35.         bcf     longpreamble                    ; 14 db 1 akkor sima bevezeto jott
  36.  
  37. packeterkezett:
  38.         bsf     preamble_volt
  39.         clrf    dcc_bit_szamlalo
  40.         clrf    dcc_bajtszam
  41.         return
  42.  
  43.  
  44. preamblehiba:
  45.         clrf    dcc_bit_szamlalo                ; ha tobb vagy kevesebb akkor hiba     
  46.         return
  47.  
  48. ;.........................................
  49. ; bitek beforgatasa
  50. ;.........................................
  51.  
  52. dccbeforgat:
  53.         movlw   dccadatbitszam                  ; 8 bit megjott ?
  54.         cpfseq  dcc_bit_szamlalo
  55.         bra     bitbeforgatas
  56.        
  57.         clrf    dcc_bit_szamlalo                ; a kilencedik bit
  58.         btfss   dcc_ujbit                       ; "packet end" vagy "data bajt start bit" ?
  59.         bra     dccmutatonov
  60.  
  61.         bcf     preamble_volt
  62.         btfsc   packet_jott
  63.         return
  64.        
  65.         bsf     packet_jott                     ; "packet end"
  66.         movff   dcc_bajtszam,dcc_bajtszam_t
  67.         lfsr    0,dcc_shiftreg
  68.         lfsr    1,dcc_adatreg
  69.         movf    dcc_bajtszam_t,w
  70.  
  71. dccadatment:
  72.         movff   PLUSW0,POSTINC1                 ; adatok elmentese ( shiftreg-bol, adatreg-be )
  73.         decfsz  WREG,f
  74.         bra     dccadatment
  75.  
  76.         movff   PLUSW0,INDF1
  77.         return
  78.  
  79. bitbeforgatas:
  80.         btfss   dcc_ujbit
  81.         bcf     C
  82.         btfsc   dcc_ujbit
  83.         bsf     C
  84.        
  85.         rlcf    dcc_shiftreg+0,f                ; uj bit beforgatas
  86.         rlcf    dcc_shiftreg+1,f
  87.         rlcf    dcc_shiftreg+2,f
  88.         rlcf    dcc_shiftreg+3,f
  89.         rlcf    dcc_shiftreg+4,f
  90.         rlcf    dcc_shiftreg+5,f
  91.  
  92.         incf    dcc_bit_szamlalo,f
  93.         return
  94.  
  95. dccmutatonov:
  96.         incf    dcc_bajtszam,f                  ; "data bajt start bit"
  97.         movlw   max_dcc_bajtszam                ; johet kovetkezo 8 bit
  98.         cpfsgt  dcc_bajtszam
  99.         return
  100.  
  101. dcckommhiba:
  102.         bcf     dcc_bithiba                     ; bithibanal mindent torlol
  103.         bcf     preamble_volt
  104.         clrf    dcc_bit_szamlalo
  105.         clrf    dcc_bajtszam
  106.         return

Viszont szivesen látnánk a Te dekódered. Érdekelne a railcomm hardver környezete is ha nem titok.
(#) dzsolt válasza dzsolt hozzászólására (») Máj 24, 2009 /
 
Há-há megy a beszúrás. Ez se több 60 szónál. mondjuk ehhez még hozzájönek a megszakítás rutinban lévő utasítások.
Más.
Pár hete próbálkozom már a sebesség alapjel képzés átírásával, finomításával.
Feladat a követbező:
Amikor a CV3-4 (gyorsulás lassulás) értéke a minimumra van állítva, például PC-s vezés miatt, a sebesség fokozat váltása elég "keményen" történik. Ugye a PID szabályzónak ez a feladata (nem lő túl, nem is lassú), eddig rendben is van, a LENZ dekódereinél is ugyanez tapasztalható. De talán éppen ezért olyan kedvelt az ESU dekóder, mert csak ennél a gyártónál van valami trükk ami ezt az átmenetet nagyon finoman kezeli. Olyan mintha figyelmen kívül hagyná CV3-4 értékét és a sebesség fokozat változásának arányában beiktatna valami fel- vagy lefuttatást, minél nagyobb a seb. változás annál gyorsaban követi a belső alapjelével. Szóval ti ezt hogyan oldanátok meg?
(#) Topi válasza dzsolt hozzászólására (») Máj 24, 2009 /
 
ESU dekódernél én azt vettem észre, hogy egyszerű aktuális sebesség és célsebesség közötti differenciával szabályoznak.
Tehát konkrétan a lassulás-gyorsulás olyasfajta beállítás, hogy mennyivel ossza a szabályzandó különbséget.
Én is így csináltam meg, és nekem 0-ról teljes sebességre szépen nem ugrásszerűen indul, és két sebesség fokozat között is lassabban vált.

Ez abból ered ugye, hogy két sebesség fokozat között (én mindenhol 128-as fokozat rendszert használok. Akkor is, ha 14-27-28 stb a beállított. Egyszerűen egyszer számolok csak) szóval hogy a régi és az új érték között kisebb a távolság, így annak az osztott értéke is kisebb. Így látszólagos exponenciális szabályzást valósítottam meg.
Kódnyelven leírva:
aktualis_sebesseg += (uj_sebesseg-aktualis_sebesseg) / CV értéke.

Nagyon kis CV értéknél szinte ugrásszerű, nagy CV értéknél igen "óvatos". Nekem minden váltás ez alapján a rutin alapján történik.
(#) dzsolt válasza Topi hozzászólására (») Máj 24, 2009 /
 
Oké emésztem, majd írok az eredményről. Köszönöm a tippet üdv Zsolt.
(#) lidi hozzászólása Máj 25, 2009 /
 
Ma kipróbáltam a mintavevős megoldásomat. Működik, központról tudok kapcsolni már 1 funkciót. Egyelőre még csak ez van megírva. Még a dekóder címe is fixen van lekódolva. Viszont jobban tetszik dzsolt megoldása, tehát ki fogom próbálni hogy a portbemenet változását irq val detektálom. Ha jól nézem, akkor mintha Schmitt Trigger lenne a bemenete a kulső órajeles számlálóknak. Jó lenne ezt valahogy felhasználni. ( 12F683 adatlap ) Tehát nem a portváltozás irq-t figyelni, hanem valahogy valamelyik timer bemenetet felhaszálni. Erre valami ötletetek esetleg ?

SzerK: nézem az adatlapot, de nagyon úgytűnik, hogy a GP2 IO, az ST, úgyhogy jó lesz ez.
(#) dzsolt válasza lidi hozzászólására (») Máj 26, 2009 /
 
Végülis használhatod a ccp modult mondjuk capture módban. A timer1 pörög magába és amikor jön az élváltás az aktuális timer1 értéket elteszi neked. Neked annyi a dolgod, hogy az előző mintából kivond a mostani capture értéket és megvan a dcc periódusidő. Ez lehet megszakítás nélkül is pl. a CCP1IF-et figyelgetve (legalább 100us-onként rá kell nézned). A dolog hátránya, hogy elhasználtad a hardveres pwm-et. Mondjuk azt nem írtad, hogy mozdony vagy eszköz dekóder készül.
Más.
Topi!!
Jól értelmezem? Az aktuális sebességhez adod kozzá az újseb. - akt seb. / cv eredményét?
(#) lidi válasza dzsolt hozzászólására (») Máj 26, 2009 /
 
Hát igen, azt nem néztem, hogy az a PWM kimenet is. Viszont megcsináltam a portváltós irq -sat. Tetszett volna a dolog, de nem jött be, alig van packet amit dekódolni tud, folyton hiba van, pedig szimulátorban jól ment. Valamit biztos nem jól csinálok. Én a sima portváltozás irq val csináltam, nem az élfigyelőssel. (mert az élfigyelős irq az másik lábon van, és igy új nyák kéne a próbadekóderhez.)
Mozdony dekóder lesz egyébként. De ha fel kell használnom az élfigyelős lábat, akkor már csak 2 kimenet marad, ezért lehet hogy váltani kell 16F684 -re. Az még elég pici (14 pin), és van benne valami 4 kimenetes pwm. Ez ha jól látom nem 4 független kitöltési tényezőjű pwm, hanem csak kiválaszthatom hogy a 4 kimenet közül melyik legyen ugye ? Mellékelem a C forrását az irq-s bemenőjel figyelősnek, hátha észreveszitek hogy mi benne a hiba. Egyelőre maradok a mintavevős módszernél, az működni látszik úgy hogy rá van csiptetve a sínre. Majd kérdés lesz hogy milyen lesz egy igazi mozdony áramszedőin keresztül menet közben.

proba.c
    
(#) Topi válasza dzsolt hozzászólására (») Máj 26, 2009 /
 
Igen. Hozzáadom, de signed int! Tehát ha a differencia (-) annak a CV-vel osztott eredménye is negatív, így a hozzáadás kivonás lesz.
(#) dzsolt válasza Topi hozzászólására (») Máj 27, 2009 /
 
Azt kitaláltam, hogy előjeles, hiszen valahogy meg is kell állni.
Szóval begépeltem, kipróbáltam. Ahogy kell, exponenciálisan alakul a seb. alapjelem (viszonylag "hirtelen" indul és ahogy egyre közeledik a tényleges az új seb. parancshoz úgy egyre kisebb a gyorsulás (vagy lassulás). De sajnos ez így nem tetszik. Hiába nagy a cv érték, ha álló mozdonynál pl. max-ra tekerem a vezérlőt, látványosan nem egyforma a gyorsulás ami engem egy kicsit zavar.
Viszont lehet, hogy megvan a megoldás. Eddig nekem a CV3 CV4 azt határozta meg, hogy milyen időközönként lépjen 1 fokozatot a seb. alapjelem (CV3*1ms, a szabvány szerint CV3*0.896ms kéne de így egyszerűbb volt.). Ez így van most is csak most a legkisebb értéke 2 lehet. Aztán képződik még két új érték. Az egyik egy 15-ről lefelé számláló időzítő érték (első körben 15ms, következőben 14ms aztán 13ms és így 0-ig. Így látszólagos hiperbola? alapján indul a gyorsulás vagy lassulás). A másik érték pedig a seb. parancs és a tényl. seb. külömbségének negáltja szerint alakul (ha a külömbség nagyobb mint 32 akkor 0 lesz, ha pedig 0 akkor 32). Tehát CV3 vagy CV4 -hez hozzáadom e két érték közül a nagyobbat akkor szépen lekerekedik az alapjel eleje vége valahogy így:


IMG_1963.JPG
    
(#) dzsolt válasza lidi hozzászólására (») Máj 27, 2009 /
 
A híd vezérlő pwm kimenetek bekötését megnézheted a lap tetején lévő fényképező ikonra kattintva, a fórum képei között. Igy megoldott a motor szabadonfutása és csöndesebb lesz mint az ESU. Ugyanúgy a CCPR1L-be írod a kitöltési tényezőt, a P1M1 bittel tudsz irányt váltani.
Az port változás int. ugye 1 perióduson belül kétszer fog jönni. Nem ismerem a C-t de lehet, hogy ez időben már nem fér bele az int. rutinba.
(#) lidi válasza dzsolt hozzászólására (») Máj 27, 2009 /
 
Hát igen, ha külön tudjuk vezérelni a H híd ki-be kapcsolását, úgy könyebb megvalósítani a PWM et. Mint pl az L293 -ban, az "enable". A mostani teszt áramkörömben sajnos ez nincs kihasználva, valamelyik tápra midig húzva van a motor mindkét fele.
Így iránytváltani csak úgy tudok, hogy a motor egyik kivezetését megfordítom, és így emiatt a pwm kitöltését is invertálni kell. Viszont így elég csak 2 portláb a motor felé. (a pwm mindig ugyanazt a motor kivezetést szaggatja)

Az interruptba bele kell férnie, mert itt ugye max 58us -enként jöhet irq. Most meg ennél sűrűbben veszek mintát. Sikerült beszuszakolni a megszakításokat 8Mhz es belső osc biztosította időkeretbe. Még soft pwm is belefért. Igaz csak alacsony frekin, de kisérletezni most jó lesz ez. Majd még próbálkozom megérteni jobban a te módszeredet is, csak PIC18 asm -ben nem vagyok otthon, a 16 osat jobban megértem. Köszi az eddigi segítséget. Bár már én is ott tartanék, hogy hogyan finomítsam a sebesség átmeneteket Egyelőre a szerviz móddal folytatom.
(#) lidi hozzászólása Máj 31, 2009 /
 
Haladgattam a dekóderrel, már tudok CV-ket is írni olvasni. Viszont bit detektálásra lett egy újabb ötletem. Mivel a mintavevős nem tetszik annyira, ezért visszatértem a portváltós irq-sra. (illetve nem vagyok biztos benne hogy új ötlet, lehet hogy csak most értettem meg tudat alatt dzsolt leirását)

Szóval a portbemeneten csak az alacsony szintet veszem figyelembe a 0 vagy 1 bit kitalálásában. Mégpedig azért, mivel ha mérés közben kontakthiba adódik, akkor az alacsony szintnél nem okoz hibát, hiszen 0V nem esik lejebb, az 0 marad.

A dekódolást úgy kezdem el, hogy induláskor megvárok egy szoros loopban egy 0-1-0 váltást. És az 1-0 váltásnál indítom a számlálást.

Ha pedig túl rövid ideig lenne a dcc bemenet alacsonyan, akkor sem dobom el az eredményt, hanem megvárom a következő eseményt, addig számolok tovább.

A timer számlálót meg csak akkor nullázom, ha legalább 20us óta magas volt a portláb, és utána esett le 0 ra. Igy a magas félbit idejében bekövetkező kontakt hibák is szűrve vannak.

Remélem nem túl zavaros a leirásom, és megértitek.
(#) dzsolt válasza lidi hozzászólására (») Máj 31, 2009 /
 
Most láttam a parancs központod videóját. A látottak alapján inkább nekünk kellene kérdeznünk téged tényleg jó lett gratula.
Csak, hogy megzavarjalak , mi van akkor ha fordítva teszed fel a mozdonyt vagy egyszerűen fordítva kötöd be a síntápot? ugye akkor fordul a "fázis".
(#) lidi válasza dzsolt hozzászólására (») Máj 31, 2009 /
 
Köszi a dícséretet! Dekódert csinálni azért nagyobb kihívás.

Igen, fordul a fázis, de akkor is az alacsony szintet méri. Tehát nem zavarja hogy a bit melyik fele jött előbb. Most próbálgatom, de akárhogy csiptetem a sínre, működik ez.

Bár az egyik irányba feltéve mintha egy egész picit be-be villanna néha a hibás packetet jelző led mikor ki-be kapcsolom a lámpát. Ez még nem tudom mi lehet.

(#) dzsolt válasza lidi hozzászólására (») Máj 31, 2009 /
 
Jaa! Leesett, ötletes egyszerű, vedd úgy nem szóltam.
(#) lidi válasza dzsolt hozzászólására (») Máj 31, 2009 /
 
Fárasztanálak még egy picit a marhaságaimmal

Irányváltás nálad hogy van megoldva ? Mert most beüzemeltem a hardveres pwm-et. A 12F683 -nál be lehet állítani a pwm generátort, hogy a kimenete active high / vagy low legyen. Így már csak a motor másik lábát kell átkapcsolnom, és már meg is van az irányváltás. Nem kell a kitöltést kiszámolnom visszafelé úgy mintha szoftveres pwm lenne. Csak egy apró probléma akadt: az egyik irányban az 1. fokozat 0.16V, a másikban pedig csak 0.02V. Minimum sebességnek 4 van beállítva, maxnak pedig 247. Utána ha lépkedek feljebb, akkor szépen növekszik egyenletesen már. De az egyik irányban 12.16, a másikban pedig csak 12.11V a legnagyobb fokozatban. Ezt lehet hogy a H híd vezérlő okozza ? L293 jelen esetben.
(#) Topi válasza lidi hozzászólására (») Máj 31, 2009 /
 
Nem... PID vezérlő, de minimum PI hiánya.
Motor sebessége abszolút nem arányos a kitöltési tényezővel... a feszültséggel viszont igen.
(#) lidi válasza Topi hozzászólására (») Máj 31, 2009 /
 
Őő, itt nincs PID, csak simán egy kitöltési tényezőt állítok be. Még motor sincs, csak egy 12V 5W izzó van rákötve terhelésnek a motormeghajtóra. Mellékelem a kapcs rajzot, a "motor" az M1 - M2 közé van kötve. L1, L2 -re pedig a ledek.
Következő: »»   14 / 40
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem