Fórum témák

» Több friss téma
Fórum » Jumperrel beállítható NYÁK azonosító
Lapozás: OK   1 / 1
(#) scheeri hozzászólása Márc 31, 2012 /
 
Sziasztok!

A következő lenne a kérdésem:
Hogyan lehet a lehető legolcsóbb, legpraktikusabb módon megoldani egy NYÁK-on a lehető legkevesebb mikrovezérlő IO lábat felhasználva egy 0-255 értéket szolgáltató azonosítót felépíteni?

Valami hasonló dolgot szeretnék, mint az Etherneten a MAC address, csak a NYÁKon beállítható végződéssel.

Egy CC111F32 (TI - 8051) mikrovezérlőm van a NYÁKon, 3,3V-tal ketyeg.
Bocs, ha túl amatőr a kérdés, csak nem régóta foglalkozom NYÁK tervezéssel és építéssel, alapvetően szoftveres vagyok.

Szíves válaszotokat előre is köszönöm!
(#) vilmosd válasza scheeri hozzászólására (») Márc 31, 2012 /
 
Ellenallaslanc (R-2R) a DIP Switchre es egy AD bemenet. Persze ha a uC nem rendelkezik ilyennel akkor bocs.
(#) reloop válasza scheeri hozzászólására (») Márc 31, 2012 /
 
(#) kyrk válasza reloop hozzászólására (») Márc 31, 2012 /
 
Mekkora felbontás kell? 0-255 minden érték kell vagy elég minden 16dik?

Ha minden érték kell akkor nem fog működni. Két okból is. Egyrészt viszonylag sok alkatrész kell (szerintem, bár ez relatív. Ha nincs 8 lábad akkor valószínű 16 alkatrész problémás lehet), másrészről annyira zajos lesz a mért jel, hogy szűrni kell és így is kétlem, hogy 1 digitre pontosan meg tudnád mérni. Ha a zajt sikerül leszűrnöd 1 digit alá, akkor is lehet benne nemlinearitás ami miatt fixen tévedni fog.

Ha csak minden 16dik kell akkor már járható a dolog. Szerintem kb 4 bit az amíg el lehet menni praktikusan. Ha ennél több kell akkor oda valami szofisztikát megoldás kell. Pl tekerentyű kijelzéssel, PC-ről beállítani.
(#) 77blsoft válasza scheeri hozzászólására (») Márc 31, 2012 /
 
Én mindíg a mikrovezezérlö epromjában tárolom a kártya címét.
(#) pici hozzászólása Márc 31, 2012 /
 
Én a bootloaderbe rakom a sorozatszámot.
Szoftver frissítéskor se változik.

De ha hardverest akarsz, akkor a legolcsóbb a sima vezeték elvágás binárisan. Azaz egy (pullup) port mind a 8 lábát lekötöd GND-re, és amelyik nem nulla, hanem 1 azt elvágod szikével. És kész a hardveres 0-255 sorozatszám.
Ennél nagyobb sorozatszámnál érdemes shifregiszteres IC-t használni.
pl 16bites ShiftReg. (54F/74F676) összesen 65535 sorazatszám lehet hardveresen (16 vezeték) és csak 4 IO lábat használ el.
Ha változtatható sorozatszámot akarsz (azonosító) akkor dip kapcsolókat teszel a vezetékekre.
(#) _vl_ válasza scheeri hozzászólására (») Márc 31, 2012 /
 
Ha elég 4-5 bitnyi információ, akkor az előzőekben emlegetett A/D-s bemenet + rajta egy ellenállásos feszültségosztó működhet. Ha kell a 8-bit, akkor ez biztosan nem fog menni, mert a legnagyobb ellenállás precizitása összemérhető lesz a legkisebb ellenállás méretével.
Minden más esetben kell minimum két vezeték.
Egy olcsó megoldás, ha párhuzamosan n db DIP-kapcsolót/tüskesor+jumpert rákötsz a chipre, itt ugye n bithez n láb fog kelleni, ami baromi fájdalmas lehet. Ha van valami busz használatban a chipen amúgy is (SPI, I2C, párhuzamos), akkor erre rá lehet kötni valami bemeneteket adó chipet (pl. Microchip 23008/23S08/23017/23S17), vagy egy külső EEPROM-ot (93xx, 24xx, 25xx), és akkor jó esetben nem kell elfoglalni egyetlen extra lábat sem. Ha nincs, akkor kell egyet csinálni. Az I2C két láb, a 93xx megúszható talán kettővel, ha fixre kötöd a CS-t.
A külső EEPROM simán lehet, hogy olcsóbb, mint egy tüskesor + a jumperek... Pl. a chipcadnél egy hete vettem 51 Ft + sarcért 93LC66-ot, de I2C-s és SPI-s is volt nekik kétszámjegyű összegért.
(#) mrobi hozzászólása Márc 31, 2012 /
 
Esetleg egy 8 bit-es párhuzamos-soros átalakítóval nem lehet megoldani? Vagy egy multiplexer?
(#) scheeri válasza reloop hozzászólására (») Márc 31, 2012 /
 
Sziazstok!

Nagyon köszönöm mindenki segítségét. reloop válasza az, amit kerestem. Szerintetek megfelelően működne? Egy ilyen DIP switches megoldásra gondoltam, amennyiben ez tényleg jól használható. I2C egyébként megy a nyákon, de nagyon fontos, hogy ezt az értéket kézzel egyszerűen, mindenféle programozás nélkül be lehessen állítani.
Előre is köszönöm a jóindulatú válaszokat!
(#) reloop válasza scheeri hozzászólására (») Márc 31, 2012 /
 
Mindössze Vilmos válaszát egészítettem ki egy ábrával. Az alkatrész pontosságon félő, elbukik a dolog.
(#) _vl_ válasza scheeri hozzászólására (») Márc 31, 2012 /
 
Össze kell rakni, ki kell próbálni. Az tuti, hogy 2-3 biten ennek mennie kell. A 4-5 bit szerintem - legfeljebb kis ellenállásválogatással - szintén menni fog. 6-7 bit felett kétségeim vannak, a 8 bitet pedig egyáltalán nem érzem reálisnak.
Az is biztosnak tűnik, hogy kalibrálni kell majd a dolgot, azaz a uc oldalon táblázatot kell csinálni hozzá (esetleg az is lehet, hogy készülékenként eljátszani vele), hogy melyik olvasott érték mit jelent.
(#) scheeri válasza _vl_ hozzászólására (») Ápr 1, 2012 /
 
Sziasztok!

Ehez a megoldáshoz mitszóltok?

Az említett Ellenállás hálózat:
Use increasing size resistor on each of the dip switch leg eg 1k on sw1, 2k on sw2 ,3.9K on sw3 ,8.2K on sw4 etc. and then add the value an read it on an analog U/C pin.

Reciprokokat összeadni:
Remember the resistor addition rule 1/R = 1/R1 + 1/R2 etc.
if for example you have sw 1 and 3 on then the value would be 1/(1/1 + 1/3.9)

Ha nincs analóg láb a mikrovezérlőn, akkor egy kondenzátor
kisülési idejét mérni:
If you dont have analog uc pin then add a capacitor on the pin and measure the time it took to discharge or charge the capacitor on a digital uc pin.

You only need 1 uc pin. - Csak egy lábra van szükség a mikrovezérlőn.
(#) lazsi válasza scheeri hozzászólására (») Ápr 3, 2012 /
 
Sziasztok!
A felvázolt rajz hátránya, hogy 1:256 arányban kellenek ellenállások. Ezt kiküszöbölendő találták ki az R-2R létrát. Itt csak kétféle ellenállás kel, és azok is 1:2 arányúak, vagyis csak egyféléből megépíthető a kétszerese is. 8 bit esetén 7 db. R és 9 db 2R ellenállás kell, de megépíthető összesen 25 db egyforma ellenállásból.
De akár ezt,akár a korábbi megoldást valósítod meg, érdemes 10 bites A/D-t felhasználva (általában a uC-kben ilyen szokott lenni) az alsó 2 bitet kerekítve már viszonylag pontos értéket kaphatsz.

Ha mégis túl zajos lesz, akkor egy másik ötlet: Az ellenállások egy (pl. 555-el felépített) multivibrátor frekvenciáját határozzák meg. (Esetleg 4 bit ellenállás, 4 bit kondenzátor, ami a frekvenciasávot állítja)
A uC periódusidőt/frekvenciát biztosan sokkal pontosabban mér...

Harmadik, még elvadultabb ötlet: 8 bites programozható osztó, ami leosztja az órajelet, és ezt méri a uC.
(#) jajistenem válasza scheeri hozzászólására (») Ápr 4, 2012 /
 
Üdv,

Van rá megoldás, előre programozott ID chip. (akár mintába is beszerezhető) Nem olcsó, de kész megoldás (kicsi és nem foglal sok IO lábat)..
Itt egy példa:
DS2502
(#) nedudgi válasza scheeri hozzászólására (») Ápr 4, 2012 /
 
A legegyszerűbb megoldás egy digitális komparátor, pl 74HC688. Innen mazsolázhatsz.
(#) vbalint válasza scheeri hozzászólására (») Ápr 4, 2012 /
 
Nem kell hozzá külön I/O vonalat használni, ha a DIP switchet egy I2C-s I/O bővítő IC-re teszed. Ilyen például a PCF8574 vagy a PCF8574A. A különbség köztük az I2C busz cím. Szerintem sokkal egyszerűbb és megbízhatóbb, mint ellenálláshálózatokkal bíbelődni. Egy ilyen IC kb. 200...300 Ft.
Következő: »»   1 / 1
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