Fórum témák
» Több friss téma |
Köszönöm
![]() ![]()
C ben lenne kérdésem. Az alábbi egy gyári példakódból való:
1. A fenti kódban először képezünk egy fractional típusú p_real mutatót. Nem értem miért kell a fenti módon megadni a tömböt, hiszen nevének egyszerű leírása is már az első elemére mutatna. Miért kell megadni a 0. -indexet, és a real elemet? 2. A fractional ugyan 16 bites de Q1.15 típusú, és így én elsőre inkább az Int típust választottam volna, a mutató egyesével való léptetése ezzel gyorsabb (egyszerűbb) mint a fractionálé. A példa programban lévő fractcomplex *p_cmpx = &sigCmpx[0]; sor használata érthető számomra, csak azért tettem bele azt is, hogy így lenne nekem logikus a fenti sor is, igaz a [0] index felesleges. De nyilván én értem rosszul, ezért kérnék egy kis segítséget a témában. A hozzászólás módosítva: Márc 19, 2017
A tápot nem tudtam megnézni, talán holnap, de most kipróbáltam ceruzaelemről és úgy is simán be lehet állítani úgy a potit, hogy két érték között ugrál 1-2mp-ként. Most még mindig úgy olvasom be az adc-t, hogy csak a felső 6 bitet használom fel, tehát az alsó 4 eldobása is kevés, pedig kb. 0,078V-ként következik az új érték.
A táp zavarforrása kizárva, mert elemről is ugyan ez. Külső zaj pedig csak a számítógép, de attól is 1-1,5m-re van, más nincs. Esetleg még a poticserét kipróbálnám, vagy többfordulatú poti kellene. Azt is próbáltam korábban, hogy 100nF kondi a poti csúszka és a + táp illetve egy másik kondi a csúszka és a föld közé. Semmilyen hatása nem volt. Még ez a hiszterézises megoldást esetleg kipróbálom, de kb. ennyi.
18F4431, 40Mhz, 10K poti. Esetleg 1K potival próbáljam meg?
PORTA=0; TRISA=0XFF; //ALL INPUT ANSEL0=0b00000001; //AN0 ANALOG OTHERS DIGITAL ANSEL1=0X00; ADCHS=0X00; ADCON0=0X00; //SINGLE CHANNEL ADCON1=0X00; ADCON2=0b00110010; //32Tosc 12TAD ADCON3=0b11000000; //ADC INTERRUPT DISABLED A hozzászólás módosítva: Márc 19, 2017
Teljesen mindegy hány bitet dobsz el, mindig lesz olyan eset, amikor pont a két érték határán lesz. Hiszterézissel viszont könnyen meg fogod tudni oldani ezt a problémát. Sima potméteres osztónál szerintem felesleges a VREF-ekkel bajlódni (VCC/VSS a legjobb), mert az A/D érték így nem függ a tápfeszültségtől, csak az osztási aránytól.
Max. ellenállás a fesz.forrása és az analóg láb között 2,5 kOhm, legalábbis az adatlap szerint. Egyébként éppen a digitális technika adottságai miatt benjaminak igaza van, mindegy, hány bitet dobsz el.
Szia
0,078 V ugrálás egy digitális környezetben szerintem nem rossz. Gondolj bele, hogy a potit be tudod állítani úgy is, hogy stabil értéked legyen, tehát az "ablak" ahol ugrál ennél is kisebb. Ha ez zavar, három lehetőséged is van: 1) ha a mért érték az első mért értéktől egy lépésnyire (2 vagy 4 lépés, mikor hogyan szeretnéd) eltér, akkor eldobod az új értéket. Ha pedig masszívan eltér (20-30 mérés) akkor átveszed új értéknek. (Ez kb. az átlagolás.) 2) digitális potmétert használsz. 3) a már említett hiszterézis.
A tápon levő zavar nem csak a tápból keletkezik. Ha pl. van egy ledes kijelződ, az amikor 1-et mutat más a terhelése, mint amikor 8-at. Ez minimálisan visszahat a tápra. Ha meg ez pl. multiplex, vagy egyéb portokat kapcsolgatsz (PWM) ezek ugyanúgy.
A hiszterézis részt megcsináltam, szimulációban működik, de még nem próbáltam a "zajos környezetben". Ami kicsit aggaszt, hogy tényleg meghalt a pic.
Simán csak programot írtam rá és utána már furán működik. Az LCD-t nem tudja elindítani próbál rá írni látszik, de ilyen hülyeségek jelennek meg és a ledek sem világítanak egyfolytában csak felvillannak egy kicsit. A gombok nyomkodására is próbál reagálni csak nem igazán jól, mintha haldokolna vagy hibás lenne a program. Próbáltam visszaírni már működő korábbi verziójú programot, de semmi javulás. Korábban mindig úgy programoztam, hogy le volt véve minden róla, de az LCD kijelző csatlakozóját az utolsó 6-7 programozásnál már nem húztam le, így az bekapcsolgatott az írás közben. Az utolsó programírásnál is simán ráírta a programot, de azután már nem akart megfelelően működni. Tápegység nem volt rajta soha íráskor. Fogyasztó is csak az LCD kijelző és 2db led. A pickit2 programozó felismeri a picet, tud is rá írni programot hiba nélkül, csak a pic nem teszi a dolgát. Van egy tartalék amit ha felprogramozok működik ugyan abban a panelban, szóval biztos, hogy pic hiba. Annyi igaz, hogy már elég sokszor írtam rá progit, talán 1000 környékén is járhattam, de azért nem hiszem, hogy ennyit bírt. A hozzászólás módosítva: Márc 20, 2017
Üdv!
Néha előfordul, hogy elhaláloznak csak úgy egyről a kettőre. A rajta lógó perifériák nem befolyásolják, én mindig rajta hagyok mindent és nem volt vele még gondom. Talán akkor fordulhat elő, ha nagyobb fesz jut vissza rá valahogy, de ilyet nekem még csak elkóborolt vezeték okozott. Olyan viszont már volt, hogy a fiókban csücsülve, antisztatikus szivacsba nyomva ment tönkre egy 16F877A. Akartam használni, erre nem ismeri fel semmi. Összedrótoztam egy dugdosós panelon és akkor vettem észre, hogy kegyetlenül melegszik. A táp része lett zárlatos, de, hogy mitől, azt nem tudom. Ez a járulékos veszteség. ![]()
Úgy néz ki mégsem halt meg. Egy más projektnél használtam már ilyen típust. Annál a projektnél is furcsa módon a D port megától meghalt szépen kapcsolgattam a gombokat egyszer még világítottak a ledek aztán már nem.
Most rátöltöttem az akkor használt programot és lőn csoda működik, a kib***ott D portot kivéve. Megint a D port szállt el egy teljesen más nyákban szóval még tervezési hiba sem lehet. Komolyan mondom amit a microchip csinál az már szégyen. Szinte ugyan az a probléma. Ezért volt szar a kijelzés, mert az LCD enable vagy rs a D portra van kötve és persze a ledek is. ADC működik, PWM működik. Komolyan olyan ideges vagyok ..... A hozzászólás módosítva: Márc 20, 2017
Sziasztok!
PIC mikrokontrollerek között szeretnék authentikálni és ehhez kérem a segítségeteket, ugyanis rég volt már, hogy tanultam a mikrovezérlőkről a suliban. A kapcsolás kész és bekötni még csak sikerül is, de a működés és programozás megtervezésével bajban vagyok. A tervezett mc típus egy PIC12F509. Az első PIC-be felprogramozzuk a programmal ami kiküldi a lehető leghosszabb bitsort amivel a memóriája még dolgozni tud. A hossz azért fontos, hogy a kódot ne lehessen gyorsan brute crackelni. Amíg az első PIC áram alatt van folyamatosan küldi a kimenetén a kódot. A másik PIC értelemszerűen ugyanazt a kódot várja a bemenetén, hasonlítja és validálja. Egy másik, jelen esetben kimenetre használt lábán pedig folyamatos magas jelet ad egy cmos switchnek (amíg a feltételek teljesülnek) ami zárja a kapukat. Egy összehasonlító függvényt még meg tudnék írni C-ben, viszont a mikrovezérlők programozásával bajban vagyok. Tudtok segíteni? Mire kellene odafigyelnem a működés megtervezése közben? Előre is köszi! Manu
Szia!
Ha jól értelmezem soraidat, akkor egy olyan kódzárat szeretnél létrehozni, ami két PIC közötti kommunikáció (kódátvitel) folyamatos meglétén alapul. Ha a sejtésem jó, én ezt úgy oldanám meg, hogy az egyik PIC-et beépíteném egy sztereó jack dugóba. A dugó csatlakoztatásakor kapja meg a PIC a tápot, a harmadik láb pedig az adatvonal egy 1-Wire kommunikációhoz. A dugóban lévő eszköz a slave. A master eszköz folyamatosan küldi a slave felé az ébresztő jelet, amíg nem kap választ. Utána kérdezi le a kódot. Ha jó a kód, kapcsol. A kapcsolás egy rövid időzítőt indít, ami, ha lejár, visszazár. Közben újra és újra lekérdezi a kódot, és amíg a kód érkezik és jó, addig minden körben újraindítja az időzítőt. Viszont én erre a célra inkább a PIC10F320 vagy 322-es mc használnám mindkét oldalra.
Esetleg annyi még, hogy érdemes egy hibalehetőséget is berakni pl. 3 hibás olvasás után zár, nehogy egy esetleges adattévesztés gondot okozzon, de ez a szám az átvitel minőségétől függ!
Idézet: „Ha a sejtésem jó, én ezt úgy oldanám meg, hogy az egyik PIC-et beépíteném egy sztereó jack dugóba. A dugó csatlakoztatásakor kapja meg a PIC a tápot, a harmadik láb pedig az adatvonal egy 1-Wire kommunikációhoz.” A Jack dugó a csatlakoztatásnál és a szétcsatlakoztatásnál rövid ideig hibásan kapcsolja a jeleket, esetlegesen rövidre is zárhatja azokat. Könnyel okozhat táp - föld zárlatot. Miért nem egy RFID tag lesz a kontrollerből: Bővebben: Link ? Hamár 1-Wire a kommunikáció, minek az első kontroller? Minden 1-Wire eszköz egy 64 bites egyedi azonosítóval rendelkezik. A hozzászólás módosítva: Márc 21, 2017
Szerintem itt "User error" lesz! Olyan nem létezik, hogy egy HW hiba a programmal vándorol az IC-k között. Milyen típusú PIC-ről van szó?
18F4431. Nem a programmal vándorol teljesen más program és teljesen más környezetben. A korábbi hiba úgy 2 éve volt egy másik projektnél ráadásul azt nem is itthon csináltam. Akkor teljesen meghalt a D port.
A mostani pic saját, még nem teszteltem le külön a D portot, majd erre is sor kerül. Nem gondolnám, hogy a programírás során lett vele valami és félig hibás program került bele. A hozzászólás módosítva: Márc 21, 2017
Érdekes. A D porton van még egyéb periféria is, ráadásul konfigurálható. CONFIG bitek rendben vannak? A port írására, olvasására a LATx regisztert használod?
Fura, én még nem tudtam kinyírni egy egész portot. Még túlfesszel is csak egy-egy I/O-t sikerült.
Inkább kontaktosan oldanám meg RFID helyett két mikrovezérlővel. A 1-wire jó ötlet, kulcsra gondolsz? Minél egyszerűbb megoldást kevés áramköri elemmel és stabil kommunikációt szeretnék, ezért gondoltam a két PIC-re. Nem jack dugóval csatlakozom, hanem d-sub/soros. Mi a véleményed?
Idézet: Régen kitalták már ezt, iButton néven keress rá! Például: IButton az E-Bay kínálatában „A 1-wire jó ötlet, kulcsra gondolsz?”
Sziasztok!
Inkább itt kérdezek, mert a mátrixos topikok AVR-es megoldásokat tartalmaznak. Nem boldogulok a 74HC595 vezérlésével assembly-ben. Adott egy 8x48-as LED mátrix. Az oszlopokat (katódok) 6 darab 595-ös hajtja meg, természetesen ULN2803-as array-n keresztül. A sorokat (közös anód) a 16F628A kimenetei vezérlik, meghajtó tranzisztorokon át. Az a lényeg, hogy az oszlopok (595-ös IC-k kimenetei) egyszerre legyenek aktívak és csak a sorokat léptetjük egymás után. Ezzel elérhető, hogy minden LED az idő 1/8-ban világítson. Sehol sem találtam egy olyan egyszerű példát, hogy mondjuk két számot kiküldök az 595-re és azokat kijelzem. Ebből már ki tudnám fejleszteni a program többi részét, ha látnám az 595 SPI vezérlését. Ha tudna valaki segíteni, azt előre is köszönöm! A PIC akár más típus is lehet, ha a program nem használ speciális funkciókat (tehát könnyű átírni 628-ra).
Valami bitbang-os megoldásra gondoltál? Bővebben: Link
Itt található egy egyszerű példa. Ebben ugyan reléket vezérelnek, de a program szempontjából mindegy, hogy mikett kapcsoltatsz a kimeneten... Ha három 595 van sorbakötve, akkor értelemszerűen 24 bitet kell kiküldeni, mielőtt az összekötött SRLAT lábakat magasba emeled az adatok bekapuzásához (a shift regiszterből ekkor íródik át az adatregiszterbe az adat).
Köszönöm válaszodat! Ez a BitBang elsőre kicsit bonyolultnak tűnik, de azért át fogom nézni részletesen
![]()
Köszönöm szépen válaszodat! Ez valóban egyszerűnek tűnik. Amint lesz időm, beillesztem egy teljes programba és kipróbálom
![]()
Sziasztok!
Hardver jellegű kérdésem lenne. Kell építenem egy olyan eszközt, ami egy villanymotort (230V) kapcsol egy előre beállított időközönként. A program megírása nem gond. Minél kisebb kivitelben kellene elkészíteni. Az volna a legjobb, ha egy 100x100mm-es kemény falú kötődobozban elférne. A motor kapcsolására kérnék valami ötletet. Gondolkoztam a szilárdtest relén, de sajnos nem tudom biztosítani, hogy a fázist szakítsa meg, mert dugvilla lesz az eszközön. Illetve hogy lehetne megoldani a tápellátást minél kisebb kivitelben? Előre is köszönöm a válaszokat!
Szerintem nem ebben a topicban kellene villanymotor hajtáson filozni, de pár tippet persze adhatunk. A fázis megszakítására egyik lehetőség, hogy mind a két vonalat megszakítod. Vannak több kétutas kapcsolót tartalmazó relék is. A több utas kapcsolók arra jók, hogy miután a motor táp mindkét oldalán leválasztottad a hálózati feszt, rá tudj kapcsolni a motor kapcsaira egy ellenállást, ami gondoskodik a motor tekercsek energiájának a levezetéséről. Rövidre zárni éppenséggel nem tanácsos, inkább egy sok wattos 3..5 ohmos ellenállás a célszerű. Élettartam ápolási okokból csinálnak olyat: a külső ellenállás levezet valamennyi hőt, ami egyébként a motor belsejében a tekercseket fűtené szimpla rövidzárnál. A táplálással nem tudom, miért problémázol. Odavezetékezed villanyszerelő csokikon vagy akárhogyan a 230-at. Mi mást kellene ott "megoldani"? Nem különösebben érthető az a problémád.
Ha nem túl nagy teljesítményű a motor akkor simán relével is megoldható. Vannak párszáz forintért 5V/230V-10A relék, ha elég ekkora áram.
Nem ismerem az SSR-eket, de egy adatlapot megnézve én nem láttam arra vonatkozó előárt, hogy csak a fázist szakíthatja meg (ha jól értettem a problémádat). A hozzászólás módosítva: Márc 22, 2017
Sziasztok! Pic kommunikációról szeretnék kérdezni két külön szériájú jószág között: lehetséges-e (én nem láttam problémáját, egyébként egy "fő" 16f628-ra menne egy/több pic10/12) egyáltalán; különböző órajellel, azonos baud rateval lehet e hajtani őket UART-tal; valamint mikor javasoltok ISP-t és/vagy I2P-t UART helyett?
Tegnap volt kezemben egy 15 kW-os háromfázisú relé, léteznek, opto-triac ki is hajtja egy pic lábról A hozzászólás módosítva: Márc 23, 2017
|
Bejelentkezés
Hirdetés |