"Best practice" för drivning av skivspelare?
"Best practice" för drivning av skivspelare?
Hej,
Jag går och funderar på hur man bäst bygger drivningen till en skivspelare. Jag tänker mig en rem/gummibands-driven spelare där själva skivan är ca 300 mm i diameter. Drivhjulet på motorn är ca 10-20 mm i diameter.
Skivan ska gå att köra i traditionella 33,3 rpm och 45 rpm. Vilket innebär ett motorvarvtal i storleksordningen 500 - 1000 rpm.
Varvtalet ska både vara jämt och hålla det teoretiskt korrekta varvtalet mycket exakt.
Jag vill att lösningen ska vara enkel och robust. Jag har tänkt ut följande två angreppssätt.
1. Open-loop
- 48 stegs 2-fas stegmotor.
- 1/8 microsteppad för jämn och tyst gång.
- Allegro A4988 stegmotordrivare eller liknande, triggad av en astabil 555-krets.
- Frekvens på 555 trimmas in med 10-varvig trimpot.
- Valbart varvtal genom att man har två olika trimpotar till 555:an som man kan switcha mellan med en vippbrytare.
2. Closed-loop
- PWM:ad DC-motor.
- Reflexdetektor och strobe-matta monterad under den drivna skivan för att mäta varvtalet.
- PIC 12F638 som kollar hastigheten och regelerar PWM-signalen till motorn via en PI-algoritm.
- De valbara varvtalen styrs i mjukvaran genom signal från en vippbrytare.
Någon som har någon kommentar till dessa alternativ? Finns det andra, bättre, möjligheter? Vad är best practice helt enkelt?
Jag går och funderar på hur man bäst bygger drivningen till en skivspelare. Jag tänker mig en rem/gummibands-driven spelare där själva skivan är ca 300 mm i diameter. Drivhjulet på motorn är ca 10-20 mm i diameter.
Skivan ska gå att köra i traditionella 33,3 rpm och 45 rpm. Vilket innebär ett motorvarvtal i storleksordningen 500 - 1000 rpm.
Varvtalet ska både vara jämt och hålla det teoretiskt korrekta varvtalet mycket exakt.
Jag vill att lösningen ska vara enkel och robust. Jag har tänkt ut följande två angreppssätt.
1. Open-loop
- 48 stegs 2-fas stegmotor.
- 1/8 microsteppad för jämn och tyst gång.
- Allegro A4988 stegmotordrivare eller liknande, triggad av en astabil 555-krets.
- Frekvens på 555 trimmas in med 10-varvig trimpot.
- Valbart varvtal genom att man har två olika trimpotar till 555:an som man kan switcha mellan med en vippbrytare.
2. Closed-loop
- PWM:ad DC-motor.
- Reflexdetektor och strobe-matta monterad under den drivna skivan för att mäta varvtalet.
- PIC 12F638 som kollar hastigheten och regelerar PWM-signalen till motorn via en PI-algoritm.
- De valbara varvtalen styrs i mjukvaran genom signal från en vippbrytare.
Någon som har någon kommentar till dessa alternativ? Finns det andra, bättre, möjligheter? Vad är best practice helt enkelt?
Re: "Best practice" för drivning av skivspelare?
2 , men med linjärreglering, en dcmotor som man pwm ger störningar som sannolikt plockas upp av pickuppen
man kan faslåsa den relativt enkelt med en 4046
ha en encoder med hög upplöning, och sedan köra relativt hög frekvens på pll så blir det bra reglering
man kan faslåsa den relativt enkelt med en 4046
ha en encoder med hög upplöning, och sedan köra relativt hög frekvens på pll så blir det bra reglering
Re: "Best practice" för drivning av skivspelare?
tecno skrev:#2 alla dar i veckan.
Tack för inputen!grym skrev:2 , men med linjärreglering, en dcmotor som man pwm ger störningar som sannolikt plockas upp av pickuppen
man kan faslåsa den relativt enkelt med en 4046
ha en encoder med hög upplöning, och sedan köra relativt hög frekvens på pll så blir det bra reglering
PLL - "Phase-locked loop" var ett nytt koncept för mig men efter lite googling så ser jag nu att detta är precis vad jag letar efter.
Hittade en app note från TI på ämnet http://www.ti.com/lit/an/slua085/slua085.pdf
Nu har jag ännu bara skummat innehållet i dokumentet, men är det rätt uppfattat att metoden förutsätter att man använder en borstlös dc motor/synkronmotor?The precise control of motor speed is a critical function in today’s disc drives. Other data storage equipment, including 9 track tape drives, precision recording equipment, and optical disc systems also require motor speed control. As the storage density requirements increase for these media, so does the precision required in controlling the speed of the media past the read/write mechanism. One of the best methods for achieving speed control of a motor is to employ a phase locked loop.
Re: "Best practice" för drivning av skivspelare?
Vill du ha precision går en 555 bort!
Det går ganska bra att göra en PLL med en µC och driver man µC'n med ett kristall blir noggrannheten ganska OK.
Det går ganska bra att göra en PLL med en µC och driver man µC'n med ett kristall blir noggrannheten ganska OK.
Re: "Best practice" för drivning av skivspelare?
Så rätta mig om jag fel; principen är för PLL med VCO:
4046-kretsen har som input en referens-frekvens och en encoder-frekvens (från skivan i detta fallet). 4046 jämför fasen på de två frekvenserna, om fasen från encodern halkar efter referensen så ökas utspänningen till motorn tills signalerna är i fas igen. Har jag fattat det någorlunda hyffsat?
4046-kretsen har som input en referens-frekvens och en encoder-frekvens (från skivan i detta fallet). 4046 jämför fasen på de två frekvenserna, om fasen från encodern halkar efter referensen så ökas utspänningen till motorn tills signalerna är i fas igen. Har jag fattat det någorlunda hyffsat?
Icecap: Menar du att man kan använda en mikrokontroller för att generera själva referens-frekvensen?Icecap skrev:Det går ganska bra att göra en PLL med en µC och driver man µC'n med ett kristall blir noggrannheten ganska OK.
Re: "Best practice" för drivning av skivspelare?
vilken motor man behöver ha beror på hur man driver den
finns ett sätt till jag skulle kunna tänka mig
att ha en stegmotor eller synkronmotor, sedan driva den med rätt frekvens för att få rätt varvtal
nackdelen är ju då att man om man vill ha det enkelt elektriskt så kan man behöva finjustera utväxlingen mekaniskt
ex svarva drivhjulet på motorn till rätt storlek
med dagens borstlösa motorer finns det ju massor att välja på, och drivningen på ett fast varvtal är om man hamnar rätt på frkvens inte såå svår
finns ju synkrona motorer för 50hz, då kan man göra en konstgjord 50hz som är stabil nog, men nätets 50hz är stabil nuförtiden
finns ett sätt till jag skulle kunna tänka mig
att ha en stegmotor eller synkronmotor, sedan driva den med rätt frekvens för att få rätt varvtal
nackdelen är ju då att man om man vill ha det enkelt elektriskt så kan man behöva finjustera utväxlingen mekaniskt
ex svarva drivhjulet på motorn till rätt storlek
med dagens borstlösa motorer finns det ju massor att välja på, och drivningen på ett fast varvtal är om man hamnar rätt på frkvens inte såå svår
finns ju synkrona motorer för 50hz, då kan man göra en konstgjord 50hz som är stabil nog, men nätets 50hz är stabil nuförtiden
Re: "Best practice" för drivning av skivspelare?
gustavn: uppfattningen av funktionen är rätt.
Och ja, det går utmärkt att låta en µC skapa referensfrekvensen så länge man ser till att pulserna passar så att det kan gå "jämt ut" med vilka frekvenser µC'n kan skapa. men väljer man en modern µC (t.ex. någon PIC med inbyggd PLL för kristallen) kan µC'n köra på t.ex. 64MHz och då kan man träffa snart sagt vilken frekvens som helst med mycket litet fel.
Och ja, det går utmärkt att låta en µC skapa referensfrekvensen så länge man ser till att pulserna passar så att det kan gå "jämt ut" med vilka frekvenser µC'n kan skapa. men väljer man en modern µC (t.ex. någon PIC med inbyggd PLL för kristallen) kan µC'n köra på t.ex. 64MHz och då kan man träffa snart sagt vilken frekvens som helst med mycket litet fel.
Re: "Best practice" för drivning av skivspelare?
Varför inte köra #2 och linjärregulator istället för pwm. Då blir du av med massa brus från pwm. Antar att skivspelaren är nätansluten och elda lite effekt gör inget
Re: "Best practice" för drivning av skivspelare?
Nu har jag slängt ihop en snabb skiss på hur jag tror man skulle kunna lösa detta med en PLL. Se schema nedan.
Det känns onödigt att sätta dit en mikrocontroller bara för att genrerera en fyrkantsvåg. Jag har räknat fram att jag behöver 200Hz och 270Hz för 33,3 rpm respektive 45 rpm. Nån som har någon smart/enkel/robust ide?
Lästips för den intresserade: En mycket intressant uppsats/analys av DC-motor styrning med PLL.
http://te.ugm.ac.id/~bsutopo/isnu1.pdf
Det jag inte riktigt har kommit fram till är hur referens-signalen ska genereras i den färdiga lösningen.Det känns onödigt att sätta dit en mikrocontroller bara för att genrerera en fyrkantsvåg. Jag har räknat fram att jag behöver 200Hz och 270Hz för 33,3 rpm respektive 45 rpm. Nån som har någon smart/enkel/robust ide?
Lästips för den intresserade: En mycket intressant uppsats/analys av DC-motor styrning med PLL.
http://te.ugm.ac.id/~bsutopo/isnu1.pdf
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: "Best practice" för drivning av skivspelare?
"Jag har räknat fram att jag behöver 200Hz och 270Hz för 33,3 rpm respektive 45 rpm. Nån som har någon smart/enkel/robust ide?"
Javisst, en kristalloscillator med neddelarkretsar i logikform (blir nog 3-5 kretsar) - eller en µC som gör det hela i en enda krets.
Javisst, en kristalloscillator med neddelarkretsar i logikform (blir nog 3-5 kretsar) - eller en µC som gör det hela i en enda krets.
Re: "Best practice" för drivning av skivspelare?
bara till att börja räkna baklänges och försöka hitta kristaller som passar
sista delningsteget ska vara /2 för att få 50%dute cycle
2 är lätt att dela med, 10 med
3 5 6 7 9 kan man om man delar med 2 efter det , 4040 och 4017
sista delningsteget ska vara /2 för att få 50%dute cycle
2 är lätt att dela med, 10 med
3 5 6 7 9 kan man om man delar med 2 efter det , 4040 och 4017
Re: "Best practice" för drivning av skivspelare?
Låter helt klart smidigare att köra µC om man annars måste använda flera kretsar föra att uppnå samma sak.Icecap skrev:eller en µC som gör det hela i en enda krets.
Är det görbart att skapa hela PLL-funktionen i mjukvaran också? Eller är det smidigare/bättre att köra den separata kretsen CD4046 för det? Vad är fördelarna nackdelarna? Finns det skillnader i t.ex precision/noggrannhet?
Re: "Best practice" för drivning av skivspelare?
Har lekt en del med 4046 och den är inte bättre än en µC - men rätt utförd inte heller sämre. Men gör man ett bra program är det ingen vinst i att använda en µC + 4046 kontra "bara" en µC - så varför komplicera i onödan?
Grejen är att det enklaste att bygga är en µC - programmet kan sedan förbättras och trimmas utan att ta fram lödkolven. Många vil kanske påstå att jag bara kan lösa funktioner med µC men sanningen är att det är det enklaste sätt om man kan programmera.
Det som verkligen har betydelse för noggrannheten är pulserna som kommer från tallriken, de ska alltså vara exakt placerat - eller bara en enda per varv. Annars får man sensorjitter. Även det kan man kompensera vid att få två olika pulser från tallriken:
A: X pulser per varv.
B: En puls per varv.
Då kan man låta programmet kalibrera sig själv och kompensera för brist på precision på B-pulserna mha. A-pulsen. När kalibreringen är klar får man dels en snabb feedback på belastningsändringar och dels en hög noggrannhet.
Men programmet blir en aning komplicerat och man ska ha en µC med lite muskler i, mest i form av exekveringshastighet.
Grejen är att det enklaste att bygga är en µC - programmet kan sedan förbättras och trimmas utan att ta fram lödkolven. Många vil kanske påstå att jag bara kan lösa funktioner med µC men sanningen är att det är det enklaste sätt om man kan programmera.
Det som verkligen har betydelse för noggrannheten är pulserna som kommer från tallriken, de ska alltså vara exakt placerat - eller bara en enda per varv. Annars får man sensorjitter. Även det kan man kompensera vid att få två olika pulser från tallriken:
A: X pulser per varv.
B: En puls per varv.
Då kan man låta programmet kalibrera sig själv och kompensera för brist på precision på B-pulserna mha. A-pulsen. När kalibreringen är klar får man dels en snabb feedback på belastningsändringar och dels en hög noggrannhet.
Men programmet blir en aning komplicerat och man ska ha en µC med lite muskler i, mest i form av exekveringshastighet.
Re: "Best practice" för drivning av skivspelare?
Tack för tips och råd Icecap! Jag har bestämt mig nu för att köra styrningen helt i mikrokontrollern. Jag har hållit på en del med PIC-µC för några år sedan och har en hel del kretsarna liggande i lådorna så det passar bra.
Hittade denna fullkomligt eminenta sidan för att generera C-kod för att ställa in timern på en PIC mikrokontroller. Räknade snabbt fram att med Timer1 kan jag uppnå 200.00 Hz och 270.04 Hz med 8 MHz oscillatorfrekvens. Så det är ju toppen
http://eng-serve.com/pic/pic_timer.html
Har inte helt funderat ut hur jag ska utforma algoritmen för att köra PLL i mjukvaran. Men det löser sig nog när jag börjar labba lite med en test-uppställning.
Hittade denna fullkomligt eminenta sidan för att generera C-kod för att ställa in timern på en PIC mikrokontroller. Räknade snabbt fram att med Timer1 kan jag uppnå 200.00 Hz och 270.04 Hz med 8 MHz oscillatorfrekvens. Så det är ju toppen
http://eng-serve.com/pic/pic_timer.html
Har inte helt funderat ut hur jag ska utforma algoritmen för att köra PLL i mjukvaran. Men det löser sig nog när jag börjar labba lite med en test-uppställning.