"Best-practice" för koppling mellan digitala kretsar?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Klas-Kenny
Inlägg: 11988
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

"Best-practice" för koppling mellan digitala kretsar?

Inlägg av Klas-Kenny »

Sitter och ritar på ett schema som innehåller bland annat en PIC och några logikkretsar. I mitt ritande slog mig en tanke, hur gör man egentligen på bästa sätt för att koppla emellan dessa?

Tänker främst på att undvika störningskänslighet (ska sitta borstade motorer mm. i närheten) och minska felrisker?

Tänkte mig Pull-down på utgångarna ifrån PIC'en för att vara säker på att inte få flytande ingångar innan PIC'en hunnit initiera utgångar och så, men vad mer bör man göra?

De signaler det handlar om är främst PWM på några kHz och sen några lågfrekventa signaler (max 10Hz eller så). Bör man montera några kondensatorer på signalledningarna? Kanske något seriemotstånd?
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9288
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av AndersG »

Frågan är litet för bred för att man skall kunna ge ett egentligt svar. Låt sunda förnuftet råda...
Användarvisningsbild
Klas-Kenny
Inlägg: 11988
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Klas-Kenny »

Jo, jag tänkte mest på lite allmänna tips, vad man bör tänka på, tumregler osv. :)

Några specifika svar som "En sådan där, och en sådan där så blir det perfekt!" hade jag inte riktigt räknat med :P
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9288
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av AndersG »

Det beror som sagt vad på.... Om du tex skall mäta en långsamt varierande likspänning är en RC-filtrering inte helt fel tex.
Användarvisningsbild
Klas-Kenny
Inlägg: 11988
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Klas-Kenny »

Fast nu handlade det inte om några analoga signaler, utan enbart digitalt mellan µC och logikkretsar...

Och de flesta känner ju mycket väl till att dessa ingångar (CMOS) är väldigt känsliga och kan reagera på det mesta, det vill jag undvika så mycket som möjligt.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av blueint »

Undvik parallella ledningar, avkoppla alla kretsars elförsörjning, jordplan, ev kan man tillgripa filtrering om signalens frekvensinnehåll är känt.
Användarvisningsbild
Argtomte
Inlägg: 243
Blev medlem: 7 april 2008, 22:49:49
Ort: Linköping
Kontakt:

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Argtomte »

Eventuell känslighet hos CMOS kommer väl mest utav den höga inimpedansen om en ingång är oansluten. Har du en lågimpediv drivare (PIC-utgångar) som driver ingångarna så får du inte den effekten. Fast de kanske är känsliga på andra sätt än det också?

Vill du ha riktigt säkert mot störningar kanske det kan vara bra att köra på ett fyralagerskort så att du får ordentliga matningsplan?
Användarvisningsbild
Klas-Kenny
Inlägg: 11988
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Klas-Kenny »

Nu börjar det likna något :)

Argtomte: Så höga krav att 4lagerskort med matningsplan krävs har jag absolut inte. Men bra tips ändå :)
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av xxargs »

Obruten jordplan!, obruten jordplan!! - upprepar igen - obruten jordplan!!!.

Detta innebär extra möda då du måste designa som om det vore enkelsidigt kort förutom att alla jordpunkter går mot jordplanet om du caddar för endast 2 lager.

Köper du korttillverkningen så är det minst 3-lagers med så få isolerade vior-hål som möjligt genom jordplanet och inte lagda så tätt att det blir isolerade linjer i jordplanet.

På så sätt får man en kontrollerad återledare på varje dataledare (som virtuellt skapas under varje dataledare i jordplanet mha. statisk och magnetisk koppling) vilket gör att kopplingen mot grannledarna är mindre med mindre överhörning då det annars utan återledare (eller åteledare gör en stor omväg) så försöker respektive ledare magnetiskt och statisk göra sina grannledare till återledare så gott det nu går och man får överhörning.

det är också därför man aldrig får göra en skåra i jordplanet där dataledare går över.

Alla in och utgångar bör ha någon form av lågpassfilter, helst LC-filter även om RC-filter är bättre än inget för att dämpa dom höga frekvenskomponenterna som snabba flanker alltid genererar inne i processorn och driverkretsarna utåt så att man inte får ut dessa på anslutande kabel och det strålar RF och man får bekymmer med dom senare EMC-testerna. Med 'alla' utgångar så inkluderar det också strömförsörjning, test och kommunikationsanslutningar så fort det dras på kabel utanför kortet eller har höga uppstick på kretskortet som agerar som antenner. Man får inte missa en enda sladdstump.

LP-filter på ledarna är också viktigt för att RF-strålning utifrån från tex mobiltelefon inte skall gå in och störa även om signalen i sig inte bär på några RF-störningar inneifrån. prutt-ljudet i billiga datorförstärkaren och högtalaren från GMSK-moduleringen från nallen är ju ganska välbekant och beror just på att det inte finns lågpass filtrering på ingångar utan signal utifrån når någon punkt där det LF-detekteras via någon diod och det förstärks och går ut som ljud i högtalaren.
Senast redigerad av xxargs 15 januari 2012, 18:59:49, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43289
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av sodjan »

> Tänkte mig Pull-down på utgångarna ifrån PIC'en för att vara säker på att inte
> få flytande ingångar innan PIC'en hunnit initiera utgångar och så,

Det finns två problem som du undviker med det. Det ena är att PIC'en inte får
flytande/öppna ingånger. Det andra (och ofta värre) är att inte några externa
drivkretsar får odefinierade signaler. Det kan t.ex vara drivkretsar till motorer,
relän eller liknande som man inte vill att de ska gå "on" utan kontroll.

D.v.s, för att generallisera, vad händer med *resten* av kretsen när processorn
befinner sig i "reset" ? Och samma fråga under tiden som processorn befinner sig
under ICSP, men vill ju inte att programmeringssignalerna ställer till något.

På samma sätt är det (eller kan vara) viktigt att man sätter PORTx registren
*först* och sedan sätter pinnar till utgångar via TRISx registren för att
undvika "glitches" på pinnarna som kan störa inkopplad elektronik. D.v.s så
att alla prylar är "off" innan de faktiskt ska användas.
Användarvisningsbild
Klas-Kenny
Inlägg: 11988
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Klas-Kenny »

"Det andra (och ofta värre) är att inte några externa
drivkretsar får odefinierade signaler. Det kan t.ex vara drivkretsar till motorer,
relän eller liknande som man inte vill att de ska gå "on" utan kontroll."

Det är det som var den största tanken i mitt fall. Har några olika logik-kopplingar ut ifrån PIC'en, var av två är motorstyrning.

Finns ingen anledning att gömma mig, det som byggs är en "mini-sumo-robot". Och med tanke på att de ska stå stilla de första sekunderna ifrån start så vore det ju himla tråkigt om några konstigheter får den att susa iväg med en gång :wacko:

Programmering bör inte vara några större problem, jag har gott om I/O på processorn i fråga så jag låter programmeringspinnarna användas enbart till programmering för att slippa risk för problem där.

Förresten, under tiden man programmerar en PIC, hur beter sig egentligen övriga I/O då?
Jag tycker mig ha sett diverse flimrande saker under tiden jag programmerat processorer med ICSP på olika konstruktioner...

Att sätta PORTx innan TRISx var ett väldigt bra tips, det har jag aldrig tänkt på förut!
Användarvisningsbild
Icecap
Inlägg: 26799
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Icecap »

Jag ser inte problemet i det hela. Om det är kretsar på samma mönsterkort och det inte är monsterstort är det bara att koppla ihop dom. Är det så att det finns störningar som kan utlösas av dessa signaler ska man analysera dom och se om det finns ett sätt att isolera dom från styrningen.

Jag har t.ex. just designad ett system som ska matas med fordons-el och som har kraftutgångar med transistorer. Där har jag gjort en "direkt" matning till kraftstegen (via en säkring bara) medan mikroprocessordelen drivs med en switch-regulator som pallar upp till 100V in. Det finns drossel mellan + in och + till regulatorn liksom det finns en mellan GND in och GND till processorn, det finns kondensatorer till att avkoppla och mönsterkortet är uppdelat i två sektioner med var sin groundplane.

Sedan är det en del pillande med att dra ledare rätt så att det finns ett "styvt" GP men vid frekvenser på ett par kHz är det ju inte så sjukt svårt att få det skapligt direkt.

En mycket viktig sak är att ha pull-down/pull-up på utgångar så att de är inaktiva under reset, grejen med att skriva portens värde först och sedan sätta den till utgång har jag använd en hel del år, just för att undvika roliga situationer.

Det är ganska sällan att medium-hastighet signaler som skickas mellan kretsar ställer till det, det är oftast för att man blandar in kraftelektronik nära dessa signaler som det går fel. Alltså är det knappast några standard sätt att göra det hela på - men det finns "standard" sätt att säkra mot störningar så att de inte ger problem på samma mönsterkort.

Ska man upp på mer än två lager på mönsterkortet måste det vara kännbart höga frekvenser eller känsliga signaler (kanske µC med låg driftspänning) eller att det blir så kompakt att man inte får plats annars. Jag har aldrig varit över två lager och har likaväl klarat alla EMC-tester i första försök, iaf. med den delen jag har ritat. En gång blev det fel pga. en inköpt nätdel som störde ut på inkommande 230Vac...
Användarvisningsbild
4kTRB
Inlägg: 21647
Blev medlem: 16 augusti 2009, 19:04:48

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av 4kTRB »

Tillverkarna brukar ha bra info.
Beror på vilken logik du ska koppla in dig på hur du ska designa.
http://www.elektronicaforum.nl/download.php?id=4787
http://www.fairchildsemi.com/an/AN/AN-314.pdf
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9288
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av AndersG »

Beror på vilken logik du ska koppla in dig på hur du ska designa.
Precis, därför är det litat svårt att svara generellt, annat än jordplan etc. Alla logikfamiljer har sina egenheter tex.

Ett tips till OP är att lägga upp schemat och layouten här så kan vi kommentera.
Användarvisningsbild
Klas-Kenny
Inlägg: 11988
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: "Best-practice" för koppling mellan digitala kretsar?

Inlägg av Klas-Kenny »

Nu tror jag mig fått klart den delen av schemat tråden främst handlar om så jag kan visa upp...
Schema.JPG
Om någon undrar, och inte orkar klura ut vad logiken är för, så är det till för att med enbart en PWM-utgång och en styr-utgång ifrån PIC'en kunna styra Si9986 till att köra motorn åt båda håll. Så logiken får alltså PWM'en att gå till antingen IN(a) eller IN(b) på Si9986, beroende på styrsignalen :)

Vad tror ni, någonting dumt, eller som kan/bör förbättras?
Förutom att schemat är något rörigt ritat på sina ställen, orkar inte fixa till det just nu :)

Exakt tillverkare/modell på logikkretsarna har jag inte bestämt, några rekommendationer?

Det enda jag funderar på är efter optokopplarna, är det tillräckligt att driva på detta viset? Två utav signalerna är PWM på några kHz (exakt frekvens har jag inte bestämt ännu) och de andra två kommer vara max säg 10Hz (väldigt sällan ens så mycket, tror jag).
Borde man kanske sätta en schmitt-trigger emellan, för att driva Si9986'orna lite bättre?

Och jag ska montera RC-snubbers över motorerna, de är bara inte inritade i schemat för att jag inte vill ha med dem i layouten sen..

Tillägg: Och JA, där är avkoppling på PIC'en, men kondensatorerna (en 100nF på varje ingång) är ritade vid Vss så de syns inte på bilden.. :)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar