Fórum témák
» Több friss téma |
Mind a 10 bitet kiírattam lcd kijelzőre.Az alsó 6 bitből szinte semmit nem látok.A felső 4 bitből 3 változik,de az sem 111-ig,hanem csak 100-ig.Ez összesen 5 variáció: 100,011,010,001,000. Nagyon kevés!0-tól 5V-ig helyett 0-tól 1,5V-ig megy fel.Ja és ha nem tekergetem a potit,akkor is ugrál az alsó 3 bit, olyan másodpercenként bevillan.
Hali!
Milyen poti az, ami a tápra/földre kötve, a két véghelyzetében, nem a táp/föld értéket adja? Mekkora értékű az a poti? Az ad bemenet 10k körüli bemenőellenállását figyelembeveszed? Nézd 1-2kohm potival. vagy egyszerűen kösd az ad bemenetet tápra/földre direktben. Az ad lábra is tegyél szűrőkondit. A táp mennyire zajos? Milyen pic? Az ad konverzió értéke merre(jobbra/balra) van igazítva? Guglizz ehhez a pichez egy ad mintapéldát, esetleg az adatlapban is lehet... A hozzászólás módosítva: Feb 6, 2018
Attoól tartok, iígy nem jutunk sehova.
Valoósziínuűleg a taáppal kellene kezdeni. A potmeéter sem lehet topon. Csinaálj egy egyszeruű feszosztoót, mondjuk 22k/22k eérteékekboől. A hozzászólás módosítva: Feb 11, 2018
Moderátor által szerkesztve
Az AdcInit-ben az ADCON0 értékét rosszul állítod be (másik bemenet), de ez nem okozna problémát, mivel az AdcRead úgyis törli az egészet, habár azt nem látjuk milyen paraméterrel hívod meg. Próbaként állítsd be fixen az ADCON0 regisztert (ne paraméterezve), és úgy teszteld. Ha jobbra rendeznéd az eredményt (mint az AdcInit-ben van), a fele tologatást megspórolhatnád.
MEegeshet nekem iígy egyszeruűbb, de regiszter parameéterezeésneél binaárisan szoktam megadni az eérteékeket, koönnyebb visszakeresni mire is van beaálliítva. Naálad az ADCON0 = 0x81 ami 0b10000001 ami azt jelenti: jobbra rendezett, ref a taáp, AN0 kivaálasztva, Go/done 0, es ADC engedeélyezett. Viszont a mainban TRISC6 a bemenet ami AN8!
2., ADCON1 = 0x10 OK (00010000) vagyis TAD fOSC/8, adatlap szerint OK 4MHz oórajel eseten. Ha az AN8 amit valoóban hasznaálsz (8. lab), akkor az ADCON0 = 0b10100001; (ha ragaszkodsz a hexhez: 0xa1) A hozzászólás módosítva: Feb 7, 2018
Moderátor által szerkesztve
Sziasztok!
Újra előhoznám a léptetőmotoros projektem: Végül a PWM modullal történő meghajtás mellett döntöttem és egyelőre visszacsatolás nélkül, az impulzusokat számolva vezérlem. Az impulzusok számolása úgy történik, hogy a PWM kimetetet visszavezettem egy másik lábon az egyik Timer léptető bemenetére. Leggyorsabb sebesség esetén 20us van a STEP jelek között. A kontroller egy 18F45k22, órajele jelenleg 16MHz, belső oszcillátorról. A jelenlegi felállásban elég pontatlannak tűnik, tippem szerint az impulzus számláló kihagy pár impulzust, ezzel kapcsolatban szeretnék most segítséget kérni. Timer6 a PWM modul időalapja, Timer3 a számláló, DIR az irányt meghatározó láb állapota. Az alábbi részlettel számolom a pozíciót. Valaki tud tanácsot adni, hogy hol bukik el a dolog?
Mivel TMR3H árnyék regiszter, így csak TMR3L regiszter írásakor és olvasásakor történik a valódi regiszterrel történő adatcsere, ezért:
- olvasáskor először TMR3L-t kell kiolvasni, utána lehet csak a TMR3H-t (ezt nem jól csináltad) - íráskor először TMR3H-t kell írni, utána lehet csak TMR3L-t (ezt jól csináltad)
Amíg a regisztert tologatja, meg számolgat, addig is jöhet be jel, amit később törölsz. Amikor hasonlót programoztam, úgy oldottam meg, hogy nem töröltem, hanem mindig elmentettem az előző értéket, és a különbséggel számoltam.
Köszönöm a válaszokat.
benjami: Elkerülte ez az információ a figyelmem. Megfordítottam a kiolvasást, köszönöm...Viszont sajnos nálam valami más van elrontva, továbbra is hibázik néha. ktamas66: Igen, valami ilyesmire gondoltam én is a hibák okaként. Megnézem mi történik a javasolt módszerrel.
Szia!
Számíts ki előre egy fékezési szakaszt. Ha azt elérted, kezd el csökkenteni a frekvenciát. A motor is hálás lesz érte, ha nem hirtelen kell megállnia, és a lecsökkent sebességnél a PIC-nek is több ideje marad számolni.
Sziasztok!
30F6012A SPI kommunikációt nem sikerül életre keltenem. Master módban SCK pin-en nem látok órajelet amikor SPI2BUF -ba adatot írok, és fogalmam sincs mit csinálok rosszul. Már vagy 10 másik PIC -en elsőre megcsináltam, -igaz utoljára évekkel ezelőtt- most meg tegnap óta ezzel küzdök. SPI -t kikapcsolva, a LATG6 segítségével tudom billegtetni a pin-t. Viszont master módba SPI -t bekapcsolva ezt a lábat fel tudom húzni logikai magas szintre egy 10k -s ellenállással. (Mintha slave módban lenne). Kipróbáltam hogy SPI2CONbits.CKP = 1; esetén se húzza fel SPI modul az SCK vonalat. init:
Később:
Szia!
Van most fékezési algoritmus a kódban, valóban sokkal szebben áll meg. Sőt, ha nincs benne ez a fékezés, akkor nagy sebesség esetén túl is tud ugrani a motor egy lépésnyit.
Ezzel kapcsolatban.
Eldőlt, hogy lesz megoldva. A lapok egyéni vezérlőt kapnak DS18B20 szenzorral. Viszont lesz egy master vezérlő ami a kijelzőt és a aombokat fogja tartalmazni és valószínűleg csak az elérni kívánt hőmérsékletet adja át az egyes alvezérlőknek amikor az változtatva van. A Master és a slave-k közötti kommunikációt még nem döntöttem el, ebben kellene egy kis segítség. javaslatok, ellenvélemények, miért ne egyik és nem másik a célszerűbb. Az erek száma minél kevesebb kell legyen. Mivel a távolság a master és a legtávolabbi slave között lehet akár 5-6m is, az I2C nem valószínű, hogy működni fog. A Maxim szenzor 1-wire gondoltam ide is azt teszek. Esetleg ha 2 érrel számolok akkor lehetne CAN, vagy RS232, és akkor talán ezeket hardverra is bízhatom. Egyéb lehetőségek... A lényeg, hogy nem akarok semmi extra vezetéket mint sodort érpár és hasonlók. Sima 5 méter 1 éren vagy 2 éren működnie kell. A sebesség ugyebár nem kritikus mivel csak beállitáskor lesz adat. Mondjuk itt későbbiekben gondoltam ellenőrzésre is, akkor nagyobb sebesség kell. Hogy miért bonyolítom így? Az alegységeknek egyenként is vagy akárhányat összekapcsolva is működnie kell a Masterral. Várom a véleményeket.
5-6m nem távolság...
Nyilván olyan kommunikációt kell választani, ahol az egységekek egyesével is tudják hajtani a vonalat. Az rs232 nem ilyen, vagy trükközöl a meghajtóval... Inkább rs485 ott a vonalmeghajtók leválaszthatók a drótról. Az I2C-t egy készüléken belüüli kommunikációra találták ki, nem tudom 5-6m-en működne-e, valószinűleg komolyabb meghajtás kellene neki. Ne felejtsd el az eszközeid bemenetei/kimenetei ekkora darabszám esetén jelentős terhelést képviselhetnek a meghajtáson, számolnod kell vele. Hardveresen/szoftveresen talán a legegyszerűbb, legolcsóbb az rs485-öt megvalósitanod. A can is jó lehet, nem ismerem, nem használtam. Az 1wire-t ennyi mikrovezérlő között én nem használnám, macerás a pontos időzítések betartása mindkét oldalon.
Ha légtávolságban viszed a jelet olyan eszközök között, amik nincsenek közös földelési rendszerben, nyáron a száraz szeles időben a statikus feszültség simán ki fogja nyírni a meghajtóidat 5-6 méternél nagyobb távolságon. Az 5-6 méter légtávolság már a határ eset. Semmikor máskor semmi egyéb baj nem lesz vele, éppen csak nyáron, amikor kajak forróságban még a szél is megérkezik, na az halála az rs232-vel "okosan" számítógéphez huzalozott pénztárgépeknek is minden egyes évben. Nem viccnek van az rs485 kitalálva.
Persze tudom, mi jár a fejedben. Fogni egy invertált jelet ttl uart kimenetről, meghajtani vele nyitott kollektorokat felhúzó ellenállással, és akkor egyetlen éren viheted a soros jelet half duplexxel mondjuk 300 bauddal, mert az is bőven elég tud lenni - véges sebességű fűtőtestek vezérlésekor nem kerget a tatár. Ha rendesen egybe kötött cumóról van szó, ami erősen van földelve, és a jel csak a helyi cucchalmazon belül kell kolbászoljon, okés is lesz minden. De ha szétpakolnád azokat a radiátorokat, és vinnéd a jelet szanaszét, utólag majd ne sirdogálj, hogy miért nem szólt neked senki egy árva szót sem arról, hogy földhurok probléma is létezik a világon. Az ipari elektronikáknál például kajak erősen figyelnek a földelési szabványokra. Épp csak néha egy-egy emberi nemtörődömségi eset közbeszól az elmélethez képest alkalmazott gyakorlatban, és menetrend szerint érkezik meg a baj is utána. Ott még az rs485-öt is kiszorítja az ethernet. És nem, nem a sebesség a döntő, hanem a mindkét oldalon trafós leválasztás a kábelezéshez. A statikus feltöltődés annyira gonosz ellenfél tud lenni, hogy még az a dupla trafós leválasztás is kell a gyakorlatban. A mindenféle logikai szabványokon egyébként semmi sem múlik. Saját magad legyártotta 1 bites half duplex kommunikáció is elég lesz, ha biztosan tudod, mit csinálsz, mert akkor elég jó lehet bármi. Épp csak figyelj oda
Pipi: Igen én is hasonló szempontok szerint gondolkodtam, viszont mivel én sem csináltam még minden fajta kapcsolatot, és ha igen akkor sem ilyen körülmények között, ezért kellenek vélemények.
Pajti2: Valóban ilyesmi járt a fejemben Az egyszerűség domináns szempont A környezetről annyit, hogy a műhelyben lesz, fémlapok tehát a földelés eszenciális és még a földhukot is figyelembe veszem. .Valamint a lapok alatt fog a vezeték haladni. Összerakva kb egy 1,5x3m terület, plusz még számoltam rá 2m-t hogy a Mastert el tudjam húzni a munkafelülettől. 15-16 alegység (fűtött lap) lesz.
Most elbizonytalanítottatok.
Jelenleg egy olyan projekten dolgozom, ahol csupán egyirányú a kommunikáció, viszont egy magról indul csillagpontosan 1-Wire kommunikációval, 15-30 méter vezetékhosszokon. 1 master 1 slave 25 méteren műhelykörülmények között jól vizsgázott, de mire lehet számítani talajban vitt vezetékekkel?
Rs485-ön a vezetékpár között ott egy 130 ohm (vagy kevesebb), és a két szálon 1-1 720 ohm (vagy kevesebb) ellenállás a táp és a föld felé. Megtalálod wiki-n is. Bővebben: Link Ha valami extra töltést kap, és mondjuk fújni kezdi az elektronokat az elektron-szél, annak a töltésnek valamerre szét kell oszlania, mert az elektromotoros erő, ami munkát tud végezni, feszültséget tud generálni. Rs485 esetében a táp szűrő kondi fogja fel végül, és odáig relatíve kicsike ellenállásokon keresztül tud eljutni (kicsi feszültséget dob csak), miközben befelé szivárog a töltés valahonnét. Ha folyamatosan van levezetve, elég csak egy kicsit levezetni. Ha elszigetelve van valahol, és fel tud halmozódni, vagy túl nagy a levezető ellenállás, vagy eleve azért jön be a töltés, mert szerelgetik, és olyankor pont szét van kötögetve, na olyankor tud bajt csinálni a statikus feszültség. Bármit is kötögettél, terveztél, nézd végig a kapcsolásodat, és egészítsd ki úgy, hogy a töltés biztosan le tudjon szivárogni még karbantartások esetén is. Ha máshogy nem, egy nagyon nagy halom diódát pakolássz be, amik a táphoz képest levezetik a túl negatív / pozitív töltéseket a táp szűrő kondira. Kevésbé lesz elegáns, de a legrosszabbat segíteni tud az is kivédeni.
Sztori. Bárhol is laksz, van a közeledben valami régebbi Auchan áruház? Az én közelemben van egy, és meg tudtam figyelni a régi bevásárló kocsikat, meg az újakat. A régieken van egy darabka lánc elöl a kocsi alján középen, ami folyamatosan a földet söpri, és csilingel rajta, amikor keresztül tolom a járólapok közötti fugán. Néha szórakoztat, máskor zavar. Aztán fogtam inkább egy újabb kocsit (tudod, kevésbé rozsdás is, meg minden), és azokon nincs ott a lánc. Csörögni nem csörög, helyette _ráz_. Néztem is, mi a roseb, hogy miután elgyalogoltam vele pár métert, pakolok a kocsiba, aztán újra elindulásnál hozzáér a kezem a fém részhez is, időnként megcsíp. Csak az a kicsike levezetés, ami lánc söpri alul a talajt a régi kocsikon, és felületre le tud szórni mindig egy picike töltést, elég is ahhoz, hogy el tudjon szivárogni a statikus feszültség. De ha az a kicsike sincs ott, akkor összegyűlik, és egyszer csak megráz. Részemről visszatértem a régi rozsdásabb bevásárló kocsikra, és azóta imádom azt a kicsike csörömpölést is Az újabb kocsikat meg egye meg a fene, hogy miféle dilettánsok tervezték őket
Sziasztok!
Egy 433Mhz-es projectel bajlódok, talán tudtok segíteni! A forrás innét letölthető mikropascalban: Manchester Code Library Demo 2db 16F887 PIC-el szeretnék adatot átadni, ami vezetékkel összekötve hibátlanul működik, viszont a rádiós adót és vevőt csatlakoztatva már ákombákomokat kapok az LCD-n. Ugyan ez a hibajelenség lép fel, ha vezetékkel összekötöm a két PIC-et, és külön-külön áramforrásról indítom őket.
Tápfeszültség és a föld sínek közé dugdoss kondenzátorokat! (pl 220 uF)
A képen is látható breadboard tápegység nagyon gagyi ilyen szempontból, én a bemeneti pufferkondenzátorát is nagyobbra cseréltem.
Kipróbáltam! Sajnos semmit sem használt.
Szinkronizálási problémára gyanakszok.
Oszcilloszkóppal tudod ellenőrizni a vett jelalakot?
Akkor lehet tippelni kb. a végtelenségig.
A legegyszerubbel kell kezdeni.
Ado oldalon mondjuk 0,1,2,3,4...255-ig adni. A vevo oldalon mi jon meg, hany byte erkezik tenylegesen. Jo lenne tudni, hogy a 433-as cuccod bit vagy byte szintu. Mennyit vesz le a PIC vallarol es mit kell a PIC-nek csinalnia.
A mellékletben látható RF modulod van?
Ehhez komoly szoftveres zajszűrés kell. Ha nem kap jelet a vevőegység, a kimenetén folyamatosan ugrál a feszültség a két végpont között (0 és 5 V), véltlenszeű frekvenciákat generálva. Én eddig jutottam vele aztán félreraktam.
Milyen típust tudnál helyette ajánlani ami működik is?
Én olyat használok, amelyik eleve UART kapcsolattal rendelkezik, nem kell időt tölteni azzal, hogy egyáltalán a kommunikáció működjön. Persze kinek a pap, kinek a paplan. APC220-as modulokat merem ajánlani, nálam bizonyítottak.
Adón bemegy 10 bájt, vevőn kijön. Sőt, a modul oda-vissza képes kommunikálni a másikkal. A rendszerben lehet akárhány modul, ha a transzparens kommunikáció van kiválasztva, mindegyik modul "látja" a másik forgalmát. Így egyszerre több modulhoz lehet eljuttatni a közös adatokat. |
Bejelentkezés
Hirdetés |