Modifiering av Kenwood ts-430
Postat: 29 december 2018, 11:13:44
Det här projektet kom till för att det alltid är intressant att förändra och förbättra saker. Första rundan blir bara digitalt krafs, hoppas sedan kunna förbättre mottagarens ingång med bättre filter, första blandare och kanske ett roofingfilter värt namnet. Men det är mycket svårare och tveksamt om det blir av.
Med dräglig dokumentation i servicemanualen såg det överkomligt ut att byta MCU. Ingenting behövde göras som är svårt att återstäla. Bara lyfta befintlig MCU i 40-pin DIL och montera en sockel. Test med originalet verifierade att allt återmonterats korrekt.
Till ny MCU valdes PIC18. De nya "midrange" har vissa instruktioner som tyvärr -18 saknar, men tillgängligheten av alla viktiga SFR's utan banking fällde avgörandet. Valet föll på den färska k42-serien. Den har vektoriserad interrupt och i viss mån flyttbar pintilldelning.
Den nya MCU'n behöver givetvis en adapter. Valde med viss tvekan (är ju invalid) en TQFP48 för att få plats mellan pinnraderna på en DIL-40. Flera pinnar på originalet föll ifrån, så det var lätt att få pinnarna att räcka till. Fysisk placering fick styra pintilldelning mer än önskvärt, blaffan kring vior tvingade fram detta. Hur som helst blev det drägligt.
Radion har två chip de kallar IO-expanders. Ansluts till MCU'n med 4+1 pinne och Chip Select. Det härke med diskreta trissor som omger CS skulle visa sig skapa visst besvär, mer om det senare. Den ena expandern driver en muxad 7-seg. display, den andra PLL m.m. Även ett 256x4 RAM med batteribackup.
Adapterkort beställdes och krets anskaffades (Tack till de här på forumet som hjälpte till). Monteringen gick över förväntan. Var svårt att lägga chipet rätt, det ville fastna med pinnarna mellan padsen. Efter några timmar satt den i klämm på dräglig placering och släplödningen är enhandsgöra så det gick snabbt och lätt. Övrigt var drägligt att placera och löda. Kortet blev rätt förutom ett ingångsval och en pull-up. Lätt fixat. Fyra trådar för att flasha MCU'n drogs ut genom kylhålen i locket.
Vid programmeringen behövs det något som indikerar resultatet. Började därför med displyen, som drivs dynamiskt av MCU'n. Den släcks i hårdvara när PLL "släpper". Ett pålödat motstånd avlägsnade denna funktioon. Finns även två LED direkt på utgångspinnar, tackar tillverkaren för dessa.
Display och frekvensratt kom snabbt igång. Nu var det dags att sätta PLL på önskad frekvens. Databladet på denna är svagt. Saknas riktig spec av timing och torftig funktionsbeskrivning. Efter en halv dags desperation upptäcktes en liten figur med bladets enda tid. In med fördröjning och det funkade!
Funktionen visade sig vara enkel, men uj vad uselt beskriven. En delare med /4+1 prescaler och "swallow counter".
Det finns två sådana PLL. En i 10kHz steg, den andra 100kkHz (4x25). Efter delning och blandning fås steg på 10Hz och 10kHz. En tredje PLL i 500kHz steg ger utgående Lo direkt från sin VCO. Finns mycket blandningar med 2:nd Lo och BFO. Detta ger exakt frekvens så länge referensen stämmer, även om övriga kristaller skulle driva lite. Denna tredje PLL var enkel. /3+1 prescaler och en väldokumenterad Motorolakrets.
Bestämde att använda binärformat för frekvensen. Kompakt och är enklast vid räknande för delningstal till de olika PLL. Efter en stunds programmering var det dags att prova. PLL fungerade som det var tänkt, men displayen fladdrade vilt. Allt såg rätt ut även efter femtioelfte genomläsningen. Total svart magi, eller var det något i interrupthanteringen jag inte begripit?
Till slut visade det sig vara mycket enkelt. Det finns en diskret transistor med pull-up som inverterare för chip select. Ultralångsam så båda I/O-expanders selectades och data för PLL gick även till displayen. In med fördröjning och det funkade OK.
Nu till ingångarna för bl.a. bandval och trafiksätt. Dessa går via två 8-1 data selectors som måste pollas. Adressering via I/O-expander och svar på en ingångspinne. Här visade sig schemat inte stämma. Bild på kortet var OK, men otydlig. Testprogram löste det och allt var OK så långt.
Därefter avläsning av två vridomkopplare och lite annat krafs. Dessa har egen 4-bit ingång, diodmatris och muxade i två grupper. Muxning genom den omtalade chip select och ytterligare en diskret transistor. Den ena funkade direkt, den andra inte. Mer fördröjning och det funkade OK.
Denna långsamhet skulle givetvis mätas upp med scope så rätta tider kan sättas, men som enhänt invalid vill jag inte jonglera med två prober och strömmen på. Tappar säkert en, som med min otur gör en dunderkortis så +5 blir +12 eller något annat motsvarande destruktivt...
Det batteribackupade RAM har jag ännu inte försökt använda, men skall göra för att lagra inställningar när strömmen stängs av. Batteriet skall först ersättas av en supercap. Tiden vid frånslag räcker inte för processorns NVRAM som kräver 5ms för varje byte.
Har kommit så långt med programmet att frekvens/trafiksätt lagras för varje band och progressiv steglängd på frekvensratten. Detta blev bra, men pjoller i högtalaren då frekvensen ändras i stora steg. Skulle kanske vara görbart att svepa i små steg och låta rattens vinkelhastighet styra hur fort den sveper.
Ett misslyckande. Skulle ha gjort adaptern så en supercap kunde ge ström till MCU när radion är avstängd. Med 100nA och 3V att sjunka skulle en 1F supercap hålla kvar allting nästan ett helt år. I varje fall några månader med hänsyn till läckströmmar, toleranser och skrytmån. Kanske blir en ny adapter så småningom. Vill i så fall verkligen få med allt som det är rimligt att förbättra, så tar det så sakteliga med det.
Med dräglig dokumentation i servicemanualen såg det överkomligt ut att byta MCU. Ingenting behövde göras som är svårt att återstäla. Bara lyfta befintlig MCU i 40-pin DIL och montera en sockel. Test med originalet verifierade att allt återmonterats korrekt.
Till ny MCU valdes PIC18. De nya "midrange" har vissa instruktioner som tyvärr -18 saknar, men tillgängligheten av alla viktiga SFR's utan banking fällde avgörandet. Valet föll på den färska k42-serien. Den har vektoriserad interrupt och i viss mån flyttbar pintilldelning.
Den nya MCU'n behöver givetvis en adapter. Valde med viss tvekan (är ju invalid) en TQFP48 för att få plats mellan pinnraderna på en DIL-40. Flera pinnar på originalet föll ifrån, så det var lätt att få pinnarna att räcka till. Fysisk placering fick styra pintilldelning mer än önskvärt, blaffan kring vior tvingade fram detta. Hur som helst blev det drägligt.
Radion har två chip de kallar IO-expanders. Ansluts till MCU'n med 4+1 pinne och Chip Select. Det härke med diskreta trissor som omger CS skulle visa sig skapa visst besvär, mer om det senare. Den ena expandern driver en muxad 7-seg. display, den andra PLL m.m. Även ett 256x4 RAM med batteribackup.
Adapterkort beställdes och krets anskaffades (Tack till de här på forumet som hjälpte till). Monteringen gick över förväntan. Var svårt att lägga chipet rätt, det ville fastna med pinnarna mellan padsen. Efter några timmar satt den i klämm på dräglig placering och släplödningen är enhandsgöra så det gick snabbt och lätt. Övrigt var drägligt att placera och löda. Kortet blev rätt förutom ett ingångsval och en pull-up. Lätt fixat. Fyra trådar för att flasha MCU'n drogs ut genom kylhålen i locket.
Vid programmeringen behövs det något som indikerar resultatet. Började därför med displyen, som drivs dynamiskt av MCU'n. Den släcks i hårdvara när PLL "släpper". Ett pålödat motstånd avlägsnade denna funktioon. Finns även två LED direkt på utgångspinnar, tackar tillverkaren för dessa.
Display och frekvensratt kom snabbt igång. Nu var det dags att sätta PLL på önskad frekvens. Databladet på denna är svagt. Saknas riktig spec av timing och torftig funktionsbeskrivning. Efter en halv dags desperation upptäcktes en liten figur med bladets enda tid. In med fördröjning och det funkade!
Funktionen visade sig vara enkel, men uj vad uselt beskriven. En delare med /4+1 prescaler och "swallow counter".
Det finns två sådana PLL. En i 10kHz steg, den andra 100kkHz (4x25). Efter delning och blandning fås steg på 10Hz och 10kHz. En tredje PLL i 500kHz steg ger utgående Lo direkt från sin VCO. Finns mycket blandningar med 2:nd Lo och BFO. Detta ger exakt frekvens så länge referensen stämmer, även om övriga kristaller skulle driva lite. Denna tredje PLL var enkel. /3+1 prescaler och en väldokumenterad Motorolakrets.
Bestämde att använda binärformat för frekvensen. Kompakt och är enklast vid räknande för delningstal till de olika PLL. Efter en stunds programmering var det dags att prova. PLL fungerade som det var tänkt, men displayen fladdrade vilt. Allt såg rätt ut även efter femtioelfte genomläsningen. Total svart magi, eller var det något i interrupthanteringen jag inte begripit?
Till slut visade det sig vara mycket enkelt. Det finns en diskret transistor med pull-up som inverterare för chip select. Ultralångsam så båda I/O-expanders selectades och data för PLL gick även till displayen. In med fördröjning och det funkade OK.
Nu till ingångarna för bl.a. bandval och trafiksätt. Dessa går via två 8-1 data selectors som måste pollas. Adressering via I/O-expander och svar på en ingångspinne. Här visade sig schemat inte stämma. Bild på kortet var OK, men otydlig. Testprogram löste det och allt var OK så långt.
Därefter avläsning av två vridomkopplare och lite annat krafs. Dessa har egen 4-bit ingång, diodmatris och muxade i två grupper. Muxning genom den omtalade chip select och ytterligare en diskret transistor. Den ena funkade direkt, den andra inte. Mer fördröjning och det funkade OK.
Denna långsamhet skulle givetvis mätas upp med scope så rätta tider kan sättas, men som enhänt invalid vill jag inte jonglera med två prober och strömmen på. Tappar säkert en, som med min otur gör en dunderkortis så +5 blir +12 eller något annat motsvarande destruktivt...
Det batteribackupade RAM har jag ännu inte försökt använda, men skall göra för att lagra inställningar när strömmen stängs av. Batteriet skall först ersättas av en supercap. Tiden vid frånslag räcker inte för processorns NVRAM som kräver 5ms för varje byte.
Har kommit så långt med programmet att frekvens/trafiksätt lagras för varje band och progressiv steglängd på frekvensratten. Detta blev bra, men pjoller i högtalaren då frekvensen ändras i stora steg. Skulle kanske vara görbart att svepa i små steg och låta rattens vinkelhastighet styra hur fort den sveper.
Ett misslyckande. Skulle ha gjort adaptern så en supercap kunde ge ström till MCU när radion är avstängd. Med 100nA och 3V att sjunka skulle en 1F supercap hålla kvar allting nästan ett helt år. I varje fall några månader med hänsyn till läckströmmar, toleranser och skrytmån. Kanske blir en ny adapter så småningom. Vill i så fall verkligen få med allt som det är rimligt att förbättra, så tar det så sakteliga med det.