Dividera encoder pulser
- tecno
- Inlägg: 27248
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Dividera encoder pulser
Sen kommer ju nästa lilla problem in i bilden, varvtalet på motorn som kan gå upp till bortåt 6000-7000rpm.
Klarar man av den biffen med 74:or?
Klarar man av den biffen med 74:or?
Re: Dividera encoder pulser
Du har 4 utgångar på räkanren. De två "högsta" kan anta fyra värden. Kallar dem H och L (HÖG OCH LÅG)
räknar upp
HL - A - B
00 - 0 - 0
01 - 1 - 0
10 - 1 - 1
11 - 0 - 1
00 - 0 - 0
01 - 1 - 0
10 - 1 - 1
11 - 0 - 1
...
räknar ner:
HL - A - B
11 - 0 - 1
10 - 1 - 1
01 - 1 - 0
00 - 0 - 0
Nu ser vi att:
A får vi om vi tar H eor L
B får vi om vi tar H.
Hur räknar vi upp/ner då?
Koppla bara "A" till up/down (etta= räknar upp, nolla=ner) och "B" till "clock" (räknar på positiv flank) så ska den väl räkna rätt?
datablad 4029
EDIT: 3600x7000/60 = 420 KHz .... 2.38µS per cykel och bara 595 ns mellan fasförskjutningarna.
7400 har en fördröjning på 10 ns per grind
74S =1,5
74AS = 1,5 ns
74LS = 9 ns
74ALS = 4 ns
4000 = 20 ns
per grind! En räknare har ju en rad grindar ... så det gäller att den hinner switcha. Men hinner encodern med 7000 rpm?
räknar upp
HL - A - B
00 - 0 - 0
01 - 1 - 0
10 - 1 - 1
11 - 0 - 1
00 - 0 - 0
01 - 1 - 0
10 - 1 - 1
11 - 0 - 1
...
räknar ner:
HL - A - B
11 - 0 - 1
10 - 1 - 1
01 - 1 - 0
00 - 0 - 0
Nu ser vi att:
A får vi om vi tar H eor L
B får vi om vi tar H.
Hur räknar vi upp/ner då?
Koppla bara "A" till up/down (etta= räknar upp, nolla=ner) och "B" till "clock" (räknar på positiv flank) så ska den väl räkna rätt?
datablad 4029
EDIT: 3600x7000/60 = 420 KHz .... 2.38µS per cykel och bara 595 ns mellan fasförskjutningarna.
7400 har en fördröjning på 10 ns per grind
74S =1,5
74AS = 1,5 ns
74LS = 9 ns
74ALS = 4 ns
4000 = 20 ns
per grind! En räknare har ju en rad grindar ... så det gäller att den hinner switcha. Men hinner encodern med 7000 rpm?
- prototypen
- Inlägg: 11105
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: Dividera encoder pulser
74HC191 ska i Texas databok från 1993 klara clockning på 21 MHz vid 25 grader, så 0,5 ska nog gå bra.
men Up/Down before Clk ska vara minst 41 ns så det går nog också bra.
Kan fungera!
Till Bengt, ska jag skicka 191 istället? 74HC190 delar med 10, finns också hemma.
Protte
men Up/Down before Clk ska vara minst 41 ns så det går nog också bra.
Kan fungera!
Till Bengt, ska jag skicka 191 istället? 74HC190 delar med 10, finns också hemma.
Protte
Re: Dividera encoder pulser
jesse,
Vid en första titt så ser det ut som att det skulle fungera men vad händer när motorn/encodern bara rör sig lite grann fram och tillbaka, så lite så att bara B ändrar sig 1-0-1-0-1-0-1-0-1-0-1-0 medan A hela tiden är stabil? Då klockas ju räknaren 6 gånger upp eller ner utan att motorn egentligen har flyttat sig, eller?

/H.O
Vid en första titt så ser det ut som att det skulle fungera men vad händer när motorn/encodern bara rör sig lite grann fram och tillbaka, så lite så att bara B ändrar sig 1-0-1-0-1-0-1-0-1-0-1-0 medan A hela tiden är stabil? Då klockas ju räknaren 6 gånger upp eller ner utan att motorn egentligen har flyttat sig, eller?

/H.O
Re: Dividera encoder pulser
Japp, jag är medveten om det. Det går nog att fixa med en SR-vippa eller liknande tror jag. Fast det kanske inte är nödvändigt - beroende på hur den ska användas.
- tecno
- Inlägg: 27248
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Dividera encoder pulser
Vad sägs om att använda två 74HCT4040 och dela med 16 för att få 225ppr eller 8 för 450ppr
Denna klarar vad jag förstår upp till ca 82MHz med 4.5V matning vid 25°C så här finns det resurser med råge för klockpulser.
Hur styra upp detta som HO tar upp med stillastående = A stabil och B på flanken farande 01010101 där även clockpulsen kan fara 01010101 dvs som en klick smör i varm stekpanna eller kan den det? Ni som kan detta, hur är det med det?
http://www.scancon.dk/PDF/2RM.pdf
Denna klarar vad jag förstår upp till ca 82MHz med 4.5V matning vid 25°C så här finns det resurser med råge för klockpulser.
Hur styra upp detta som HO tar upp med stillastående = A stabil och B på flanken farande 01010101 där även clockpulsen kan fara 01010101 dvs som en klick smör i varm stekpanna eller kan den det? Ni som kan detta, hur är det med det?
http://www.scancon.dk/PDF/2RM.pdf
Re: Dividera encoder pulser
OK, det här är ett så pass intressant ämne att jag härmed utlyser en belöning på 500:- till den som kan hitta eller konstruera en lösning. (Kanske kan fler som har nytta av en sådan lösning också bidra för att "spä på" motivationen.)
Följande gäller:
** Diskreta komponenter, 74xxx, 40xx etc är OK. Inga programerbara kretsar som GAL, FPGA, uC, osv.
** Den skall dela med 16 eftersom det var vad Bengt sökte från början.
** Det skall fungera upp till 500kHz - åtminstånde. En 3600 linjers encoder har 14400 flanker/varv så vad jag menar med 500kHz är att det, med den encodern, skall fungera upp till 2083rpm. (500000/14400*60=2083.3)
** Inga "undanflykter" att det fungerar under förutsättning att.... eller så länge man inte gör si eller så - den får helt enkelt inte "missa" något så länge man inte överstiger max infrekvens.
** Det är helt OK att "sno" en design (om man hittar någon) så länge ovanstående kriterier uppfylls.
** Ingen färdig komersiell produkt (om inte schemat publiceras här).
** Schema skall publiceras här.
500 spänn och stor ödmjukhet från undertecknad till förste man eller kvinna med en fungerande lösning.
Lycka till!
/Henrik.
Följande gäller:
** Diskreta komponenter, 74xxx, 40xx etc är OK. Inga programerbara kretsar som GAL, FPGA, uC, osv.
** Den skall dela med 16 eftersom det var vad Bengt sökte från början.
** Det skall fungera upp till 500kHz - åtminstånde. En 3600 linjers encoder har 14400 flanker/varv så vad jag menar med 500kHz är att det, med den encodern, skall fungera upp till 2083rpm. (500000/14400*60=2083.3)
** Inga "undanflykter" att det fungerar under förutsättning att.... eller så länge man inte gör si eller så - den får helt enkelt inte "missa" något så länge man inte överstiger max infrekvens.
** Det är helt OK att "sno" en design (om man hittar någon) så länge ovanstående kriterier uppfylls.
** Ingen färdig komersiell produkt (om inte schemat publiceras här).
** Schema skall publiceras här.
500 spänn och stor ödmjukhet från undertecknad till förste man eller kvinna med en fungerande lösning.
Lycka till!
/Henrik.
Re: Dividera encoder pulser
Jag får erkänna att det var knepigare än jag tänkt.... men det är ju alltid kul med en utmaning och en morot
Får nog sätta mig ner och tänka ett tag.....

- tecno
- Inlägg: 27248
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Dividera encoder pulser
Ja järnspikar Henrik
Nu ska vi se vem som kommer upp med nåt fungerande, har mailat länken till vänner på kontinenten så det kanske kommer nåt därifrån som tävlingsbidrag.
Detta är inte så enkelt det har jag fått klart för mig efter att ha försökt lusläsa vad som finns i ämnet på nätet likväl som du Henrik har gjort detsamma.
Nu ska vi se vem som kommer upp med nåt fungerande, har mailat länken till vänner på kontinenten så det kanske kommer nåt därifrån som tävlingsbidrag.
Detta är inte så enkelt det har jag fått klart för mig efter att ha försökt lusläsa vad som finns i ämnet på nätet likväl som du Henrik har gjort detsamma.
Re: Dividera encoder pulser
Enkel match!
Jag ids inte rita schemat men man tar en räknare som kan räkna båda håll (upp/ner).
Sedan tar man ena fasen som klocksignal och den andra som upp/ner-signal, detta vill få räknaren att räkna upp eller ner beroende på insignalens "riktning".
Sedan tar man en 1-av-4 dekoder (output Q0-Q3) och ett par 2-input OR-gates, ena gaten har input från Q0 & Q1, den andra har input från Q1 & Q2.
På utgången av dessa gates är kvadratursignalen återskapad men nerdelad.
Ingången till dekodern kopplar man till 2 efter varandra följande bits på räknaren, vilka beror på vilken neddelning man vill ha.
Då ELFA ju har "uppgraderat" sin sida till att utelämna sin funktionsöversikt över vilka funktioner som finns i vilka kretsar hoppar jag över den del, det skulle vara enkelt att fixa detta med en databok i handen.
Totalt behövs alltså 4 kretsar:
2 st räknarkretsar (för att få bits nog)
1 st quad 2-input OR-gate
1 st 1-av-4 dekoder.
Jag ids inte rita schemat men man tar en räknare som kan räkna båda håll (upp/ner).
Sedan tar man ena fasen som klocksignal och den andra som upp/ner-signal, detta vill få räknaren att räkna upp eller ner beroende på insignalens "riktning".
Sedan tar man en 1-av-4 dekoder (output Q0-Q3) och ett par 2-input OR-gates, ena gaten har input från Q0 & Q1, den andra har input från Q1 & Q2.
På utgången av dessa gates är kvadratursignalen återskapad men nerdelad.
Ingången till dekodern kopplar man till 2 efter varandra följande bits på räknaren, vilka beror på vilken neddelning man vill ha.
Då ELFA ju har "uppgraderat" sin sida till att utelämna sin funktionsöversikt över vilka funktioner som finns i vilka kretsar hoppar jag över den del, det skulle vara enkelt att fixa detta med en databok i handen.
Totalt behövs alltså 4 kretsar:
2 st räknarkretsar (för att få bits nog)
1 st quad 2-input OR-gate
1 st 1-av-4 dekoder.
Re: Dividera encoder pulser
Icecap: Jag har just beskrivit den kopplingen ovan. Men den duger inte. Så det blir att tänka lite till. Jag har ritat 7 st A4-ark fulla med signalser och scheman nu, och alltid är det nåt jävelskap som sätter käppar i hjulen.. (ni ska få se foton senare när tävlingen är över eller när jag gett upp) men det måste gå... om jag bara hade tid, men måste tänka på min familj också. Får se i morgon om nån annan hunnit före mig.
God natt.
God natt.
Re: Dividera encoder pulser
Intressant, om jag fattar beskrivningen rätt så tar du A-kanalen på givaren (encodern) till Up/Down på räknaren och sedan B-kanalen till CLK, korrekt?
Uppkommer inte exakt det problem som diskuterades ett par meddelanden upp då? Dvs. om A är hög och encodern "hoppar" fram och tillbaka så att B "går" 1-0-1-0-1-0, så här:

Då klockas ju räknaren åt ett hål fast än positionen egentligen inte har ändrats?
Som sagt, jag mycket väl fattat din beskrivning fel.
Uppkommer inte exakt det problem som diskuterades ett par meddelanden upp då? Dvs. om A är hög och encodern "hoppar" fram och tillbaka så att B "går" 1-0-1-0-1-0, så här:

Då klockas ju räknaren åt ett hål fast än positionen egentligen inte har ändrats?
Som sagt, jag mycket väl fattat din beskrivning fel.
Re: Dividera encoder pulser
Jo, den möjlighet finns faktisk men just som jag kollade på det kom jag på en lösning på det också.
Egentligen är det 4 olika stadier som är viktiga:
A B
0 0 Steg 1 Gör inget
0 1 Steg 2 Räkna
1 0 Steg 3 Gör inget
1 1 Steg 4 Räkna
Man tar därför en SR-flipflop samt en 1-av-4 decoder (brukar vara 2 st i en krets).
A & B signalen kopplas in på adressingången på 1-av-4 decodern.
Q1 kopplas till R-ingången och Q3 kopplas till S-ingången.
Utgången från RS-flipfloppen används sedan som klocksignal och B som riktningssignal.
Egentligen är det 4 olika stadier som är viktiga:
A B
0 0 Steg 1 Gör inget
0 1 Steg 2 Räkna
1 0 Steg 3 Gör inget
1 1 Steg 4 Räkna
Man tar därför en SR-flipflop samt en 1-av-4 decoder (brukar vara 2 st i en krets).
A & B signalen kopplas in på adressingången på 1-av-4 decodern.
Q1 kopplas till R-ingången och Q3 kopplas till S-ingången.
Utgången från RS-flipfloppen används sedan som klocksignal och B som riktningssignal.
Re: Dividera encoder pulser
Nu har jag räknat och svettats ett bra tag, och sedan sprungit 1 km för att posta mitt svar.
Icecap: din SR-vippa kan räkna fel, tyvärr. (se nedan)
Jag har löst det på ett ganska klumpigt sätt, men jag tror det är vattentätt och med 74LS kretsar är timingen inget problem. Går antagligen att göra enklare, men vad gör man inte när det är bråttom
74LS har 9nS fördröjning per grind. Skulle det knipa finns det 74 ALS (eller nåt sånt) med 1,5 nS fördröjning.
Följande schema förklaras:
1) A och B till en 74LS139 2-4 line multiplexer som då har utgångarna 00 01 10 och 11.
2) ett antal enkla SR-vippor bestående av 2 st nor-grindar, dvs 1/2 st 74LS02.
3) några and-grindar och en or-grind. (74LS08 och LS32)
4) en 4-bitars up/down räknare 74LS169 eller motsvarande.
5) en xor-grind t.ex. 74LS86.


så såg skrivbordet ut för några timmar sedan...
EDIT: Icecap: det finns en risk att den svänger mellan 00 och 11 fram och tillbaks utan att göra ett helt varv. Då räknar din SR-vippa upp som om det vore ett helt varv. Dessutom så togglar B exakt i övergången till 00 eller 11 i vissa fall. Hur tolkas det av räknaren? SR-vippan fördröjer ju signalen en aning så klockpulsen kommer strax efter att up/down-ingången ändrat värde. Osäkert läge alltså.
Min lösning ser aningen klumpig ut som sagt, men den löser problemet (hoppas jag!) med vanliga logikkretsar, och med goda marginaler tidsmässigt. (Den ska klara upp till 5 Mhz med goda marginaler) - dock med så mycket som 11 st SR-vippor + 8 AND-grindar + 1 OR-grind + 1 XOR-grind + 1 st 2-4 multiplexer + 1 st up/down-counter!

Icecap: din SR-vippa kan räkna fel, tyvärr. (se nedan)
Jag har löst det på ett ganska klumpigt sätt, men jag tror det är vattentätt och med 74LS kretsar är timingen inget problem. Går antagligen att göra enklare, men vad gör man inte när det är bråttom

74LS har 9nS fördröjning per grind. Skulle det knipa finns det 74 ALS (eller nåt sånt) med 1,5 nS fördröjning.
Följande schema förklaras:
1) A och B till en 74LS139 2-4 line multiplexer som då har utgångarna 00 01 10 och 11.
2) ett antal enkla SR-vippor bestående av 2 st nor-grindar, dvs 1/2 st 74LS02.
3) några and-grindar och en or-grind. (74LS08 och LS32)
4) en 4-bitars up/down räknare 74LS169 eller motsvarande.
5) en xor-grind t.ex. 74LS86.


så såg skrivbordet ut för några timmar sedan...
EDIT: Icecap: det finns en risk att den svänger mellan 00 och 11 fram och tillbaks utan att göra ett helt varv. Då räknar din SR-vippa upp som om det vore ett helt varv. Dessutom så togglar B exakt i övergången till 00 eller 11 i vissa fall. Hur tolkas det av räknaren? SR-vippan fördröjer ju signalen en aning så klockpulsen kommer strax efter att up/down-ingången ändrat värde. Osäkert läge alltså.
Min lösning ser aningen klumpig ut som sagt, men den löser problemet (hoppas jag!) med vanliga logikkretsar, och med goda marginaler tidsmässigt. (Den ska klara upp till 5 Mhz med goda marginaler) - dock med så mycket som 11 st SR-vippor + 8 AND-grindar + 1 OR-grind + 1 XOR-grind + 1 st 2-4 multiplexer + 1 st up/down-counter!
Senast redigerad av jesse 30 mars 2009, 20:17:22, redigerad totalt 1 gång.
Re: Dividera encoder pulser
Imponerande, men hur tar vi reda på att det verkligen fungerar under alla omständigheter? Blir jag tvungen att plocka fram lab-plattan? 
