APRS repeater PIC16F876A-val

Az interneten már évek óta keringenek különböző leírások, melyek egyetlen PIC16F88-as processzorral működnek és nem szükséges hozzájuk modem IC. Az 1200 Bd-os modemek az utóbbi időben ritkák mint a fehér holló és az áruk is ennek megfelelő. Ez a tény vezérelt, hogy kipróbáljam ezt a fajta TNC-t. Mivel kicsit maximalista vagyok, ezért a föllelhető legbonyolultabb verzióval kezdtem. Sajnos nem volt a fiókomban MCP6023-as műveleti erősitő, ezért az első próbálkozásaimat úgy végeztem, hogy a hangfrekvenciás szűrőt áthidaltam, és az nélkül próbáltam ki a berendezést. Rögtön az első kisérletek jól sikerültek. A lehangoló az volt, amikor betettem az erősitőt és a szűrővel sem lett jobb az eredmény.Akkor jöttem rá, hogy az eredmény inkább függ a rádió deemfázisától mint a szűrőtől, ezért következő lépésként épitettem egy mimimalisztikus változatot. Ez a processzoron kívül csak 3 tranzistort egy stabilizátort és néhány passzív alkatrészt tartalmaz. Ennek a változatnak a szépsége az egyszerűségében rejlik. Egyetlen dolog zavart rajta - de az nagyon, hogy gyakorlaltilag a processzornak nem maradt üres lába (ami annak köszönhető, hogy az analóg komparátorok bekötése nagyon szerencsétlenül van megoldva), ezért minden paraméterét csak újraprogramozással lehetett megváltoztatni. Igaz, hogy körmönfont módon utólag még egy hőmérőt is hozzákapcsoltak, de ez más téma. Ezért aztán úgy döntöttem, hogy épitek egy olyan változatot, ahol több lábú processzor fog működni, igy marad eleg láb a konfigurálásra. Ennek alapján született meg az alábbi változat.
Természetesen nem én fedeztem föl a spanyolviaszt, ez a program csak adaptációja az eredeti programnak, ezért az eredeti leirás többé-kevésbé érvényes erre is.
A DS18S20 eredetileg Celzius fokokban mér ezért a Farenheitben kiirt érték kevesbé pontos, de itt európában ez nem jelent különösebb gondot. GPS vevőt kapcsolva a TNC-hez a pozició a BEACON paranccsal beállitott időközönként kerül adásra. Ez az időköz minimum 1 perc.
Mivel ennek a processzornak 28 lába van, ezért a lapon van 6 darab konfigurációs átkötés, melyeknek a funkciói a következők:

                    P1,P2 - a soros port sebességének a meghatározása
                    P3      - teszt - ha rövidre van zárva, nem ellerőrzi a CRC-t
                    P4      - GPS mód
                    P5      - bemenet alacsony impedanciás
                    P6      - +5V a GPS vevőnek
                    P7      - PTT a mikrofon bemeneten keresztül (kézi rádiók)

A lapon talalható 4 csatlakozó - soros port, rádió, tápfeszültség, hőmérő.
A csatlakozók bekötése:
Soros port:
                    2 - TxD
                    3 - RxD
                    4 - +5V
                    5 - GND
                    9 - +5V
Rádió:
                   1 - Audio be
                   2 - GND
                   3 - Audio ki
                   4 - PTT
                   5 - +12V be (megtáplálás)
Táp:
                   Külső érintkező - GND
                   Belső érintkező - +8V -tól  +12,8V -ig
Hőmérő:
                   1 - GND
                   2 - DQ
                   3 - +5V

Az állapotok kijelzésére 6 LED dióda van a lapon. Ezek funkciói a következők:
                   D5      - PTT
                   D6      - bekapcsolva
                   D7      - DCD
                   D8      - GPS mód
                   D9      - Converse mód
                   D10    - tartalék

A soros port sebességének beállitása:
                P1             P2
                ü                ü                   4800 Bd
                ü                r                    9600 Bd
                r                 ü                 19200 Bd
                r                 r                 38400 Bd
ü - üres,     r - rövidzár
Ajánlom, hogy állitsunk minél nagyobb sebességet a soros porton, mivel a processzor egyszerre csak egy perifériával tud foglalkozni. Ezáltal ha túl lassú a komunikáció a soros porton, nincs elég ideje, hogy nagy forgalom mellet minden csomagot dekódoljon. Nálam a soros port sebessége 38400-ra van állitva, így még sűrű forgalom mellet sem veszítek csomagokat. Természetesen még ettől is jobb megoldás, ha a monitorozást a MON OFF paranccsal kikapcsoljuk. Amikor átjátszóként használjuk a berendezést, amúgy sem szükseges, hogy mindent kiküldjön a soros portra. Erre csak akkor lehet szükség, ha valami miatt bele akarunk hallgatni a forgalomba. Ha még aprólekosabban akarjuk látni, hogy mi történik a csatornán, akkor a TRace paranccsal étkapcsolhatjuk a megjelenitést. Ilyenkor az adatok nem ASCII, hanem Hexadecimális formában jelennek meg.
A készülék gyakorlatilag semmilyen beállitást nem igényel, az egyedüli állitható alkatrész a potencióméter, amivel a kimenő jel szintjét lehet beállitani. A készüléket vagy külön tápegységről vagy a rádió csatlakozóján keresztül a rádióból lehet megtáplálni. Ha nincs hozzákötve GPS vevő, akkor a fogyasztása elhanyagolható.
Mivel a processzornak van elég kivezetése, ezért az eredeti 4 bites D/A átalakitót fölturbóztam 5 bitesre. Igy a generált szinusz jel kétszer finomabb felbontású.


  A beültetett lap - mérete 75x88 mm

a NYÁK lap (valódi méret 75x88 mm):


Program:

TNC firmware

A TNC konfigurálása

Bekapcsolás után, ha a rövidzárak és a terminál program is helyesen vannak beállitva, akkor az alábbi szöveget kell látnunk:

MODEMLESS TNC V 2.32
MODIFIED BY OM3BC FOR 16F876A
Type HELP for Info

cmd >

Irjuk be a HELP parancsot, és a megjelenő segitség alapján probáljuk meg beállitani a TNC-t. Ha beirjuk a DISP parancsot, akkor megjelenik az éppen aktuállis beállítások listája. Nálam ez van beállítva:

cmd >disp
Filter ON
ECHO ON
TEMPerature C
TXDELAY 35
GPS $GPRMC
TRace OFF
MONitor ALL
DIGIpeater ON
BEACON On EVERY 15
UNPROTO APE232-0 V WIDE1-1 V WIDE2-2
MYCALL OM3BC-1
MYALIAS FIL1
BTEXT !4815.91NS01949.21E#PHG32304/A=000577 APRS Repeater with PIC16F876A http://www.om3bc.com

OK
cmd >

Az egyes parancsok rövid ismertetése:
Filter - szűri a soros portra menő adatokat, és csak a nyomtatható karaktereket engedi át.
ECHO - ezzel a paranccsal határozhatjuk meg, hogy a TNC a terminálról jövő karaktereket vissza küldje vagy nem
TEMP - a hőmérséklet megjelenitése celziusban vagy farenheitben
TXDELAY - n x 10ms, ez a paraméter szabja meg, mennyi idő teljen el az adásra kapcsolás és az első karakter kiküldése között
GPS - ha egy GPS vevő van hozzákapcsolva a TNC-hez, ezzel a paranccsal határozzuk meg hogy melyik GPS információ kerül adásra a BTEXT-ben
TRace - Tesztelési célokra a TNC a vett szöveget atalakitja hexadecimális formára és ezt küldi ki a soros portra
MONitor - a rádión vett adatok megjelenjenek a soros porton, vagy nem
DIGIpeater - a digipeater funkció ki illetve bekapcsolása
BEACON EVERY - az azonositó adásának gyakorisága percekben
UNPROTO - az APRS szabályoknak megfelelő 6 karakterből álló cim. Ebben az esetben APE - mivel PIC processzor van használva, plusz a program verzió száma
MYALIAS - bármilyen 6 karakternél nem hosszabb azonositó
MYCALL - saját hivójel
BTEXT - bármilyen 100 karakternél nem hosszabb szöveg. Termeszetesen ha az APRS-ben alkalmazott kódokat akarunk küldeni, akkor be kell tartani az ide tartozó előirásokat. A hőmérsékletekre a következő szabályok érvényesek: minden hőmérsékletre vonatkozó parancs a \ (visszatörtvonal) jellel kezdődik. Utánna t paranccsal elküldhetjük az aktuális hőmérsékletet. Az l paranccsal a legkisebb, mig a h paranccsal a legmagasabb hőmérsékletet küldhetjük. Az s parancs mondja meg, hogy az l vagy h paranccsal küldött érték hány mért adat közül a legkisebb vagy legnagyobb. Ha ez a szám eléri a 99-et akkor az adatok nullázódnak és a folyamat kezdődik elölről. Az a parancs használata esetén a hőmérséklet az APRS formában lesz elküldve.
A végén irjuk be hogy PERM, mert csak ezzel a paranccsal kerülnek a beállitott paraméterek elmentésre. Ellenkező esetben kikapcsoláskor a beírt paraméterek elvesznek (kivétel a BTEXT, mivel ez a RAM szűkös volta miatt azonnal az EPROMba kerül).

Búcsúzóul:

Mivel az eredeti konstrukcióban nagyon sok hiányosságot találtam, ezeket igyekeztem kijavítani. E miatt a fönt írt mondat miszerint az eredeti leírás többé-kevésbé erre is igaz, abból most már a többé nem, inkább csak a kevésbé igaz. Teljesen át kellett dolgozni a DIGIPEATER részét a programnak, mivel kiderült, hogy az eredeti berendezésben ez a rész még csak köszönő viszonyban sincs az APRS specifikációban megadott követelményekkel. A további teszteknél kiderült, hogy van még mit javitani a programon. A végen az eredeti programnak csak a magja maradt meg, a többi része át lett irva. Nem tudom, hogy az eredetileg TNC-nek deklarált berendezés mennyire felelt meg a TNC követelményeinek, de most mint APRS DIGIPEATER, már egeszen jól működik.
A program egészen biztosan nem hibátlan (Hurphy törvénye itt is érvényes, miszerint tökéletes program nem létezik, ha mégis találkozol eggyel, azt biztosan nem te írtad.), viszont folyamatosan fejlődik. Ha valaki úgy gondolja, hogy észrevételeivel segítheti a munkámat, akkor az észrevételeit írja meg az e-mail címemre, amit a honlapon megtalál.
Az eredeti leirás is eléggé szűkszavú, ezért ha valakinek közelebbi kérdése lenne arra is szivesen válaszolok - ha tudok.........(én sem vagyok a témában mindentudó).
Az építéshez sok sikert!