Hallonpaj och 1-wire med lång bus funkar dåligt...
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Strökapacitans i kablarna känns som problemet (de där små spikarna mer eller mindre försvinner ju när slingan blir för lång).
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Vad menar du med strökapacitans? (istället för kapacitans rent generellt..)
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Jag menar bara att exakt varifrån i kablarna kapacitansen som inverkar finns inte går att säga. Det är ju inte säkert att det så att säga är kabelns specificerade kapacitans utan det kan ju av nån anledning vara så att kapacitansen blir högre på grund av nånting.
Strökapacitans för mig är lite som "kapacitans som man inte riktigt vet var den kommer ifrån men som påverkar".
Strökapacitans för mig är lite som "kapacitans som man inte riktigt vet var den kommer ifrån men som påverkar".
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Fina bilder! Dock kan det vara spikar och ringningar vi inte ser, beroende på hur mätuppkopplingen ser ut...
När vi början närma oss dessa kabellängder är vi inte långt ifrån att behöva ta hänsyn till vågutbredningen. Dessa höga drivimpedanser matchar dåligt kabelnsimpedansen, jag gissar på att den ligger runt 100ohm +-20.
Här är lite nödlösningar att prova med....
Prova att minska Rpullup, säg till 2k2 eller så. Alternativt, som kanske är bättre är att montera 4k7 i varje ända av slingan.
Värt kanske kan vara att prova även med att sätta ett 82 ohm i serie med drivstegets utgång.
När vi början närma oss dessa kabellängder är vi inte långt ifrån att behöva ta hänsyn till vågutbredningen. Dessa höga drivimpedanser matchar dåligt kabelnsimpedansen, jag gissar på att den ligger runt 100ohm +-20.
Här är lite nödlösningar att prova med....
Prova att minska Rpullup, säg till 2k2 eller så. Alternativt, som kanske är bättre är att montera 4k7 i varje ända av slingan.
Värt kanske kan vara att prova även med att sätta ett 82 ohm i serie med drivstegets utgång.
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Vi har iofs sett vanliga tvinnade par på bild vid patchpanelen, men vad för kabeltyp finns det längre ut?
1-wire är väl i grunden en bra tanke, men med tanke på sånthär strul så vore det kanske bättre att kosta på sig två par mellan "centralenhet" och en kopplingspunkt närmare en knippe sensorer. Om man kör t.ex. RS 422 så borde det med lite modifieringar gå att skicka strömförsörjningen över paret som skickar data från "centralenheten" till "kopplingspunkten".
Fast om det nu funkar med ett par separata slingor så får det väl vara som det är.
1-wire är väl i grunden en bra tanke, men med tanke på sånthär strul så vore det kanske bättre att kosta på sig två par mellan "centralenhet" och en kopplingspunkt närmare en knippe sensorer. Om man kör t.ex. RS 422 så borde det med lite modifieringar gå att skicka strömförsörjningen över paret som skickar data från "centralenheten" till "kopplingspunkten".
Fast om det nu funkar med ett par separata slingor så får det väl vara som det är.
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Har labbat lite mer ikväll, och det känns som något i owfs spökar.
Det som förbryllar är ju att det som funkar en dag helt plötsligt är helt åt h-e dan efter... som idag då två av slingorna inte funkade längre, och behövde kortas ordentligt för att få liv i igen.
Grundförutsättnigarna med kabeltyp osv finns lite tidigare, men det är i princip enbart partvinnat, antingen CAT5 eller EKKX 10x2x0,5 (mest EKKX) och givetvis separat 5V-matning.
Drivkretsarna har interna pull-up, och några externa ska inte behövas vad jag förstått. Dessutom finns det funktioner för att driva pull-up aktivt, vilket kan aktiveras med parametrar till owfs (vilket jag gjort, och verifierat att den är aktiv i programmet). Däremot tycker jag inte det verkar hända något i verkligheten, och man borde kunna se skillnad på kurvformen med/utan den.
Den interna pull-up:en i kretsen är annars ca 1-1,6k vilket ju är ganska normalt.
Men för att testa så tryckte jag in ett extern 1k pull-up, och det gjorde stor skillnad, och istället för fem grenar så räckte det nu med två.
För "skojs skull" drog jag hem källkoden, och hittade iaf referenserna till APU som funktionen kallas, men huruvida flaggan skrivs korrekt till kretsen kan jag inte direkt uttyda.
Har inte riktigt bestämt mig för hur jag ska koppla det permanent, men förmodligen blir det fyra slingor och externa pull-up:s, om det nu kan hålla sig igång några dagar så att man får något lite förtroende för funktionen...
Hade det varit viktiga mätningar så hade man nog valt mer tillförlitliga gränssnitt för kommunikationen.
/J
Det som förbryllar är ju att det som funkar en dag helt plötsligt är helt åt h-e dan efter... som idag då två av slingorna inte funkade längre, och behövde kortas ordentligt för att få liv i igen.
Grundförutsättnigarna med kabeltyp osv finns lite tidigare, men det är i princip enbart partvinnat, antingen CAT5 eller EKKX 10x2x0,5 (mest EKKX) och givetvis separat 5V-matning.
Drivkretsarna har interna pull-up, och några externa ska inte behövas vad jag förstått. Dessutom finns det funktioner för att driva pull-up aktivt, vilket kan aktiveras med parametrar till owfs (vilket jag gjort, och verifierat att den är aktiv i programmet). Däremot tycker jag inte det verkar hända något i verkligheten, och man borde kunna se skillnad på kurvformen med/utan den.
Den interna pull-up:en i kretsen är annars ca 1-1,6k vilket ju är ganska normalt.
Men för att testa så tryckte jag in ett extern 1k pull-up, och det gjorde stor skillnad, och istället för fem grenar så räckte det nu med två.
För "skojs skull" drog jag hem källkoden, och hittade iaf referenserna till APU som funktionen kallas, men huruvida flaggan skrivs korrekt till kretsen kan jag inte direkt uttyda.
Har inte riktigt bestämt mig för hur jag ska koppla det permanent, men förmodligen blir det fyra slingor och externa pull-up:s, om det nu kan hålla sig igång några dagar så att man får något lite förtroende för funktionen...
Hade det varit viktiga mätningar så hade man nog valt mer tillförlitliga gränssnitt för kommunikationen.
/J
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Det är standard att kopplingar som fungerar på labbänken - snabbt får problem med lite kabelsträcka mellan för att man inte tagit hänsyn till dom transmissionselektriska egenskaperna, det finns stora projekt med snyggt designade boxar och avancerad programvara som havererat pga. sådana 'detaljer' för att man inte i utvecklingsfasen provat med långa kablar och effekter du stöter på är liksom inte första gången bland utvecklingsfolk som främst håller på med digitallogik som utgångspunkt och helt plötsligt måste börja med det svåra 'analoga'.
En av de stora för datafolket synliga på bred front utrullade 'misstagen' i det området med massor av hålla i armar-försöken på närmast desperat nivå med kortare kabel och tätare ledare för att öka farten - är PATA-bussen till hårddiskarna - där man redan från början om man är en smula analogkunnig kunde säga 'varför göra så, varför inte ta lärdomarna från ST506-standarden på dess snabba delar samt från SCSI-bussen och att det kommer att bli problem om man försöker köra lite fortare i framtiden'... - nu har vi SATA istället som är mycket bättre genomtänkt transmissionsmässigt med seriell gränssnitt och impedansanpassat båda ändar med dataflöde på många GB/s
---
Om man tittar mellan bild 02 och 04 så ser man att den ganska smala pulsen i bild 02, når bara halvvägs i amplitud i bild 04 och når inte över tröskelvärdet för att mottagarkretsen skall se en 'etta' i rimlig tidsperiod
Av den avrunda formen på pulsen så ser man att drivförmågan på drivkretsen inte är tillräcklig gentemot totala kapacitansen på kabeln (som är kraftigt längdberoende), och är det en CAT5 så brukar det vara runt 50 pF/meter kabel om jag mins rätt
när det gäller pullup-motstånd så handlar det inte om dessa finns eller inte - det handlar om _vilka värden_ dom har om man har dom som passiv 'drivsteg' som höjer signalen (och en öppen kollektor som drar ned denna)
Karaktäristiska impedansen på CAT5 är ca 100 Ohm och skall man ha reflexfri signal vid lite kortare pulstider så skall drivningen ha en inre impedans på 100 Ohm och kabeln termineras med just 100 Ohm, vilket också gör att '1' nivån ligger på halva utspänningen på drivern i läge '1' samt samt mottagaren skall uppfatta denna spänning som just '1' med goda marginaler.
Tittar man på hur SCSI löste detta så gjorde man inte en 'perfekt lösning' men ändå tillräckligt bra för att lösa problemet och man nyttjade dåvarande TTL-logikens tröskelvärde att under 0.8 Volt var nolla och spänningar över 2 Volt var etta och fönstret mellan var odefinierat.
Då körde man öppen kollektor som drivsteg på varje inkopplad enhet och så terminerades ändarna med 330 Ohm mot jord och 220 Ohm mot VCC (5 volt) som AC-mässigt med parallellkopplingen blev ca 132 Ohm - inte så långt ifrån impedansen på en bandkabel och reflexerna av pulsningen dämpas mycket. Med asymmetriska motståndsvärdet som spänningsdelare så fick man en 'hög' nivå 3 volt vid vila vilket är mer än 2 Volt och därmed en 'etta' och sedan när man signalerade så var det öppen kollektor som jordade tråden så att signalen garanterat gick under 0.8 Volt för en 'nolla'
med andra ord dina pullup med KOhm i värdeområde är på tok för höga och blir kabellängdskänsliga och borde istället vara runt 100 Ohm - med kanske en förstärkt driver som orka sänka strömmen
---
lite överkurs...
Genom att arbeta med drivning/terminering som anpassas mot kabelns impedans så är inte kabeln 'kapacitiv längre' då den har en motsvarande induktans som kompenserar kapacitansen precis lika mycket i varje sträcka och det är detta som ger detta karaktäristiska impedans ( Z = (L/C)^0.5) - ja om kabeln var förlustfri vill säga. Den kapacitansen som man mäter upp på en kabelstump är i själva verket verkan och konsekvens av kabeländas reflex som kommer tillbaka i ett fasläge som gör att man mäter kapacitans, är kabeln hyffsat förlustfri och tillräckligt lång (dvs över en 1/4 våglängd på mätsignalen man mäter med) så börjar kabeln vara induktiv istället då reflexen från andra ändan är så försenad att det i fasläge upplevs som en induktans för att med ytterligare förlängning vid halva vågländen åter igen upplevas kapacitiv igen och det går cykliskt med längden etc.
Man har också den intressanta verkan att om man driver/mäter kabelstumpen med en driver med låg impedans (enstaka Ohm) så upplevs kabeln induktiv, mäter man med högimpediv driver så uppfattas kabeln kapacitiv och skall man räkna ut kabelns induktans/kapacitans så måste alltid mätas med drivsteg med känd impedans och används i uträkningarna.
Vid låga frekvenser så är vågens utbredning väldigt lång på kabeln och räknar man pF/m meter så blir beloppet stort samt att kabelns induktiva reaktans är liten, även om den är tillräckligt lång och förlustfri faktiskt tar ut varandra så småningom. Men har man resistans i kabeln (vilket alla kablar har vid normalare temperaturer) är verkan av kabelns resistans kraftigt påverkande då den är stor gentemot kabelns induktiva reaktans vid låga frekvensen och detta får verkan med RCRCRC... kedja istället för LCLC...-kedja vilket gör att impedansen blir komplex där högre frekvenser dämpas mera än låga frekvenser och våghastigheten går långsammare ju lägre frekvens, vilket påverkar pulsen utseende. Den resulterande komplexa impedansen med 45 grader kapacitiv fasförskjutning går från väldigt högt värde vid låga frekvenser och nedåt vid allt högre frekvenser, komplexa impedansen fasvrider sakta till helt reell impedans med ökad frekvens och där det rör sig mycket i våra ögon brukar vara runt 50 - 100 kHz till 200 kHz och i flesta fall är kablarna helt reella i impedans vid 1 MHz och högre.
Att köra pulståg i området 10 -200 kHz på lång kabel är inge bra val och det finns förklaring varför RS232 går dåligt på längre kabel vid 115200 Baud medans 9600 Baud går kanske på 10 ggr längre sträckor - jo pulstågens frekvenskomponenter befinner sig i det knöliga området där impedanserna och följdaktligen amlitud och fashastigheten ändrar väldigt mycket med frekvens och detta distorderar signalen både tidmässigt (fasläge) och amplitudmässigt medans den vandrar på kabeln. Det finns orsak varför tex RS485 går att köra på två Mbit och skall man kommunicera på lång kabel så kör man väldigt långsamt eller så kör man hyffsat fort och ser till att den sända signalens frekvensspektrum inte har några dominerande frekvenskomponenter som påverka avgörande på signalens tolkning inom intervallet 10-200 kHz vid användning av enkla nivåkännande mottagare. ASDL arbetar bara inom det området men där är terminering och mottagardelarna väldigt avancerad med väldigt många bärvågor men med liten bandbredd per bärvåg (och därmed liten inverkan av kabelns ojämnhet) jämförelse med ingång till en logiktrets eller RS485...
En av de stora för datafolket synliga på bred front utrullade 'misstagen' i det området med massor av hålla i armar-försöken på närmast desperat nivå med kortare kabel och tätare ledare för att öka farten - är PATA-bussen till hårddiskarna - där man redan från början om man är en smula analogkunnig kunde säga 'varför göra så, varför inte ta lärdomarna från ST506-standarden på dess snabba delar samt från SCSI-bussen och att det kommer att bli problem om man försöker köra lite fortare i framtiden'... - nu har vi SATA istället som är mycket bättre genomtänkt transmissionsmässigt med seriell gränssnitt och impedansanpassat båda ändar med dataflöde på många GB/s
---
Om man tittar mellan bild 02 och 04 så ser man att den ganska smala pulsen i bild 02, når bara halvvägs i amplitud i bild 04 och når inte över tröskelvärdet för att mottagarkretsen skall se en 'etta' i rimlig tidsperiod
Av den avrunda formen på pulsen så ser man att drivförmågan på drivkretsen inte är tillräcklig gentemot totala kapacitansen på kabeln (som är kraftigt längdberoende), och är det en CAT5 så brukar det vara runt 50 pF/meter kabel om jag mins rätt
när det gäller pullup-motstånd så handlar det inte om dessa finns eller inte - det handlar om _vilka värden_ dom har om man har dom som passiv 'drivsteg' som höjer signalen (och en öppen kollektor som drar ned denna)
Karaktäristiska impedansen på CAT5 är ca 100 Ohm och skall man ha reflexfri signal vid lite kortare pulstider så skall drivningen ha en inre impedans på 100 Ohm och kabeln termineras med just 100 Ohm, vilket också gör att '1' nivån ligger på halva utspänningen på drivern i läge '1' samt samt mottagaren skall uppfatta denna spänning som just '1' med goda marginaler.
Tittar man på hur SCSI löste detta så gjorde man inte en 'perfekt lösning' men ändå tillräckligt bra för att lösa problemet och man nyttjade dåvarande TTL-logikens tröskelvärde att under 0.8 Volt var nolla och spänningar över 2 Volt var etta och fönstret mellan var odefinierat.
Då körde man öppen kollektor som drivsteg på varje inkopplad enhet och så terminerades ändarna med 330 Ohm mot jord och 220 Ohm mot VCC (5 volt) som AC-mässigt med parallellkopplingen blev ca 132 Ohm - inte så långt ifrån impedansen på en bandkabel och reflexerna av pulsningen dämpas mycket. Med asymmetriska motståndsvärdet som spänningsdelare så fick man en 'hög' nivå 3 volt vid vila vilket är mer än 2 Volt och därmed en 'etta' och sedan när man signalerade så var det öppen kollektor som jordade tråden så att signalen garanterat gick under 0.8 Volt för en 'nolla'
med andra ord dina pullup med KOhm i värdeområde är på tok för höga och blir kabellängdskänsliga och borde istället vara runt 100 Ohm - med kanske en förstärkt driver som orka sänka strömmen
---
lite överkurs...
Genom att arbeta med drivning/terminering som anpassas mot kabelns impedans så är inte kabeln 'kapacitiv längre' då den har en motsvarande induktans som kompenserar kapacitansen precis lika mycket i varje sträcka och det är detta som ger detta karaktäristiska impedans ( Z = (L/C)^0.5) - ja om kabeln var förlustfri vill säga. Den kapacitansen som man mäter upp på en kabelstump är i själva verket verkan och konsekvens av kabeländas reflex som kommer tillbaka i ett fasläge som gör att man mäter kapacitans, är kabeln hyffsat förlustfri och tillräckligt lång (dvs över en 1/4 våglängd på mätsignalen man mäter med) så börjar kabeln vara induktiv istället då reflexen från andra ändan är så försenad att det i fasläge upplevs som en induktans för att med ytterligare förlängning vid halva vågländen åter igen upplevas kapacitiv igen och det går cykliskt med längden etc.
Man har också den intressanta verkan att om man driver/mäter kabelstumpen med en driver med låg impedans (enstaka Ohm) så upplevs kabeln induktiv, mäter man med högimpediv driver så uppfattas kabeln kapacitiv och skall man räkna ut kabelns induktans/kapacitans så måste alltid mätas med drivsteg med känd impedans och används i uträkningarna.
Vid låga frekvenser så är vågens utbredning väldigt lång på kabeln och räknar man pF/m meter så blir beloppet stort samt att kabelns induktiva reaktans är liten, även om den är tillräckligt lång och förlustfri faktiskt tar ut varandra så småningom. Men har man resistans i kabeln (vilket alla kablar har vid normalare temperaturer) är verkan av kabelns resistans kraftigt påverkande då den är stor gentemot kabelns induktiva reaktans vid låga frekvensen och detta får verkan med RCRCRC... kedja istället för LCLC...-kedja vilket gör att impedansen blir komplex där högre frekvenser dämpas mera än låga frekvenser och våghastigheten går långsammare ju lägre frekvens, vilket påverkar pulsen utseende. Den resulterande komplexa impedansen med 45 grader kapacitiv fasförskjutning går från väldigt högt värde vid låga frekvenser och nedåt vid allt högre frekvenser, komplexa impedansen fasvrider sakta till helt reell impedans med ökad frekvens och där det rör sig mycket i våra ögon brukar vara runt 50 - 100 kHz till 200 kHz och i flesta fall är kablarna helt reella i impedans vid 1 MHz och högre.
Att köra pulståg i området 10 -200 kHz på lång kabel är inge bra val och det finns förklaring varför RS232 går dåligt på längre kabel vid 115200 Baud medans 9600 Baud går kanske på 10 ggr längre sträckor - jo pulstågens frekvenskomponenter befinner sig i det knöliga området där impedanserna och följdaktligen amlitud och fashastigheten ändrar väldigt mycket med frekvens och detta distorderar signalen både tidmässigt (fasläge) och amplitudmässigt medans den vandrar på kabeln. Det finns orsak varför tex RS485 går att köra på två Mbit och skall man kommunicera på lång kabel så kör man väldigt långsamt eller så kör man hyffsat fort och ser till att den sända signalens frekvensspektrum inte har några dominerande frekvenskomponenter som påverka avgörande på signalens tolkning inom intervallet 10-200 kHz vid användning av enkla nivåkännande mottagare. ASDL arbetar bara inom det området men där är terminering och mottagardelarna väldigt avancerad med väldigt många bärvågor men med liten bandbredd per bärvåg (och därmed liten inverkan av kabelns ojämnhet) jämförelse med ingång till en logiktrets eller RS485...
Re: Hallonpaj och 1-wire med lång bus funkar dåligt...
Det man i princip alltså bör läsa på är hur lågohmig terminering som 1-wire-komponenterna är specade att klara, och välja närmast högre standardvärde på terminering (och antagligen helst dela upp termineringen så att den sitter i båda ändarna av en kabel).
Jag gissar att 1-wire inte orkar driva 50 ohm (100 ohm terminering i varje ände av kabeln)...
Jag gissar att 1-wire inte orkar driva 50 ohm (100 ohm terminering i varje ände av kabeln)...
