7.1 Kanaals Microcontroller Gestuurde Volumeregelaar
Moderators: Barry2001, Beheerdersteam
Juul,
In deze situatie zou ik gewoon de caps aan de ingang plaatsen, de ingangscapaciteit is bekend, de belasting van je uitgang is niet steeds bekent. Verder is de DC offset bijzonder klein en dus niet de moeite om deze moete verwijderen.
De gain instellingen die ik gebruikte waren 0 tot -80, met stapjes van 1dB, meer dan voldoende, en boven de -10dB ben ikzelf nog nooit geraakt dus nog overschot genoeg ( al hangt dit natuurlijk van amp en speakers af )
Groetjes
Rudy
In deze situatie zou ik gewoon de caps aan de ingang plaatsen, de ingangscapaciteit is bekend, de belasting van je uitgang is niet steeds bekent. Verder is de DC offset bijzonder klein en dus niet de moeite om deze moete verwijderen.
De gain instellingen die ik gebruikte waren 0 tot -80, met stapjes van 1dB, meer dan voldoende, en boven de -10dB ben ikzelf nog nooit geraakt dus nog overschot genoeg ( al hangt dit natuurlijk van amp en speakers af )
Groetjes
Rudy
Uit eigen ervaring: met een encoder met slechts en beperkt aantal stappen per omwenteling draai je je een ongeluk met slechts 0.5dB per stap.Rudy schreef:Juul,
In deze situatie zou ik gewoon de caps aan de ingang plaatsen, de ingangscapaciteit is bekend, de belasting van je uitgang is niet steeds bekent. Verder is de DC offset bijzonder klein en dus niet de moeite om deze moete verwijderen.
De gain instellingen die ik gebruikte waren 0 tot -80, met stapjes van 1dB, meer dan voldoende, en boven de -10dB ben ikzelf nog nooit geraakt dus nog overschot genoeg ( al hangt dit natuurlijk van amp en speakers af )
Groetjes
Rudy
Jaja, er is nog steeds vooruitgang! 
En om dit topic toch wat levend te houden wat piccies:
[img]/Menu.JPG[/img]
[img]/FrontMaster.JPG[/img]
[img]/Mute.JPG[/img]
Alleen de dB waardes kloppen nog niet.
Nu de andere kanalen werkend maken en de puntjes op de i zetten bij de software.
Wat betreft het bereik, 0 tot -80dB vinden jullie een mooie waarde? Maar dan maak je geen gebruik van de versterking van de chipjes.
Ik maak het zo, dat je elk kanaal apart kan regelen en met de master alles tegelijk omhoog kan schroeven, miss kan ik hier mooi het versterkende gedeelte in kwijt 0...+xdB.
En een filmpje:
/V ... gelaar.AVI
Hier heb ik zelf aan de potmeters gedraaid en aan het mute knopje gezeten uiteraard
Het kanaal waarvan je het volume veranderd, die wordt afgebeelt.
En om dit topic toch wat levend te houden wat piccies:
[img]/Menu.JPG[/img]
[img]/FrontMaster.JPG[/img]
[img]/Mute.JPG[/img]
Alleen de dB waardes kloppen nog niet.
Nu de andere kanalen werkend maken en de puntjes op de i zetten bij de software.
Wat betreft het bereik, 0 tot -80dB vinden jullie een mooie waarde? Maar dan maak je geen gebruik van de versterking van de chipjes.
Ik maak het zo, dat je elk kanaal apart kan regelen en met de master alles tegelijk omhoog kan schroeven, miss kan ik hier mooi het versterkende gedeelte in kwijt 0...+xdB.
En een filmpje:
/V ... gelaar.AVI
Hier heb ik zelf aan de potmeters gedraaid en aan het mute knopje gezeten uiteraard
Het kanaal waarvan je het volume veranderd, die wordt afgebeelt.
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:42, 1 keer totaal gewijzigd.
Heel sjiek JuuL. Ben deze topic al een tijdje in de gaten aan het houden en ben eens benieuwd hoe het gaat zijn als em volledig af is.
Ondertussen ben ik ook van plan een voorversterker te gaan maken met een PGA2311 IC in. Een beetje gebaseerd op de voorversterker van elektuur die er een tijdje geleden is gepubliceerd, maar dan wel met afstandsbediening in. Keep up the good work!!
Geert
Ondertussen ben ik ook van plan een voorversterker te gaan maken met een PGA2311 IC in. Een beetje gebaseerd op de voorversterker van elektuur die er een tijdje geleden is gepubliceerd, maar dan wel met afstandsbediening in. Keep up the good work!!
Geert
Dankje Geert!
Een afstandssbediening heb ik hier niet nodig, maar als het verder weg stond zou het een hele mooie toevoeging zijn!
Ben benieuwt hoe je dat gaat aanpakken, laat je wat zien als je bent begonnen?
En verder, welke microcontroller ga je gebruiken?
Nog een kleine update dan:
[img]/Printplaat.JPG[/img]
Alleen de voeding moet nog worden gemaakt.
De input condensatoren pasten nog maar net met wat gefriemel, ik was deze vergeten bij het maken van de printplaat...
Ook zie je enkele pinnen voor 12V aansluiting, dit is om eventueel later mijn versterkers ermee aan en uit te laten gaan.
(Thx to Rudy voor het idee
)
[img]/MasterFront.JPG[/img]
Het volume balkje heb ik wat mooier gemaakt en de dB waardes kloppen nu.
Ook werkt het schrijven en lezen van/naar de EEPROM. Dit stelde niet zoveel voor en was in no time gedaan.
Ik ben van het plan van 6 potmeters afgestapt, omdat dit gewoon op allerlei plekken steeds problemen zou geven. Of het streepje van de potmeters staat niet goed, of het volume zou overspringen als je tussen de kanalen wisselt.
Ik ga 1 Rotary Encoder gebruiken waarmee je het volume regelt en voor elk kanaal een drukknop, zodat je toch nog snel en makkelijk het volume kan veranderen.
Het menu hiervoor is grotendeels klaar, eigenlijk kan ik pas verder als ik de knopjes en rotary encoder heb.
Ik heb van Daniel begrepen (beetje spieken mag wel he
) dat http://www.voti.nl een goede leverancier hiervoor is 
Een afstandssbediening heb ik hier niet nodig, maar als het verder weg stond zou het een hele mooie toevoeging zijn!
Ben benieuwt hoe je dat gaat aanpakken, laat je wat zien als je bent begonnen?
En verder, welke microcontroller ga je gebruiken?
Nog een kleine update dan:
[img]/Printplaat.JPG[/img]
Alleen de voeding moet nog worden gemaakt.
De input condensatoren pasten nog maar net met wat gefriemel, ik was deze vergeten bij het maken van de printplaat...
Ook zie je enkele pinnen voor 12V aansluiting, dit is om eventueel later mijn versterkers ermee aan en uit te laten gaan.
(Thx to Rudy voor het idee
[img]/MasterFront.JPG[/img]
Het volume balkje heb ik wat mooier gemaakt en de dB waardes kloppen nu.
Ook werkt het schrijven en lezen van/naar de EEPROM. Dit stelde niet zoveel voor en was in no time gedaan.
Ik ben van het plan van 6 potmeters afgestapt, omdat dit gewoon op allerlei plekken steeds problemen zou geven. Of het streepje van de potmeters staat niet goed, of het volume zou overspringen als je tussen de kanalen wisselt.
Ik ga 1 Rotary Encoder gebruiken waarmee je het volume regelt en voor elk kanaal een drukknop, zodat je toch nog snel en makkelijk het volume kan veranderen.
Het menu hiervoor is grotendeels klaar, eigenlijk kan ik pas verder als ik de knopjes en rotary encoder heb.
Ik heb van Daniel begrepen (beetje spieken mag wel he
Laatst gewijzigd door JuuL op di 05 nov 2019, 16:12, 2 keer totaal gewijzigd.
Zal hier ook een topic beginnen. Nu zal het allemaal wel zijn tijd vragen, want zit in mijn laatste jaar van mijn studie's en dat betekent dat ik een eindwerk moet gaan maken waar er veel tijd in kruipt (moet een datatransmissie systeem gaan maken om sensorgegevens van een modelvliegtuigje door te sturen naar de grond).JuuL schreef:Dankje Geert!
Een afstandssbediening heb ik hier niet nodig, maar als het verder weg stond zou het een hele mooie toevoeging zijn!
Ben benieuwt hoe je dat gaat aanpakken, laat je wat zien als je bent begonnen?
En verder, welke microcontroller ga je gebruiken?
Ook zit ik nog met het probleem dat mijn elektronica leverancier hier in de buurt onlangs gestopt is, en ik weet niet hoe het in Nederland is, maar in Belgie zijn die dun bevolkt, dus moet ik nu veel via internet zien te bestellen, wat ook wel zijn tijd inneemt. Heb wel al het een en ander bestel. Oa de PGA2311PA IC, een heleboel relais(voor ingangselectie), displaytje, ringkerntje voor de voeding, spanningsregelaar, etc... Als microcontroller ga ik een AT89S8252 van de 8051 architectuur gaan gebruiken. Waarom? wel dat is voorlopig de enige die ik zelf kan gaan programmeren, en heeft ook wel mogelijkheden zat. 3 x 8-bit poorten, 8Kbytes programmeergeheugen, SPI interface, 2Kbyte aan eeprom.... http://www.atmel.com/dyn/resources/prod ... oc0401.pdf
verder zal eindversterker wel wat op die van elektuur gaan gelijken (the audio link?) maar dan ook weer niet
Hoop dat ik volgende week al wat componenten binnen krijg, kan ik al wat beginnen experimenteren. Zal dan ook wel een topic beginnen hier met de progress..
Doen!GeertJ schreef:Zal dan ook wel een topic beginnen hier met de progress..
Het onderdelen verkrijgen vind ik ook altijd lastig...
Vaak bestel ik alles samen bij http://www.reichelt.de erg goedkoop! http://www.futurlec.com moest ook een goede leverancier zijn.
Ik zit ook in het laatste jaar van mijn studie, leuk eindproject! http://www.premos.tk Satelliet volgsysteem
/Menu2.JPG
Zo ga ik het denk ik maken.
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:41, 1 keer totaal gewijzigd.
ben ook al op die site gekomen, wat bedoel je met "moest" bestaat die niet meer, of slechte ervaringen mee??JuuL schreef:www.futurlec.com moest ook een goede leverancier zijn.
Oja, Geert je moet wel een creditcard hebben om daar te kunnen bestellen.
Door het faseverschil weet je of er links- of rechtsom wordt gedraait, maar hoe heb je dat gedetecteerd met je microcontroller?
Daniel hoe heb jij dat gedaan met die encoder?daniel schreef:Uit eigen ervaring: met een encoder met slechts en beperkt aantal stappen per omwenteling draai je je een ongeluk met slechts 0.5dB per stap.
Door het faseverschil weet je of er links- of rechtsom wordt gedraait, maar hoe heb je dat gedetecteerd met je microcontroller?
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
Encoderen van het signaal is relatief simpel. Wat wel belangrijk is dat je het signaal wel goed ontdenderd, want anders werkt het allemaal niet erg lekker.JuuL schreef:Daniel hoe heb jij dat gedaan met die encoder?
Door het faseverschil weet je of er links- of rechtsom wordt gedraait, maar hoe heb je dat gedetecteerd met je microcontroller?
Zal ik vanavond even opzoeken. Ik heb i.i.g. geen interrupts gebruikt omdat het allemaal niet zo tijds-kritisch is.JuuL schreef:Oja, Geert je moet wel een creditcard hebben om daar te kunnen bestellen.
Daniel hoe heb jij dat gedaan met die encoder?daniel schreef:Uit eigen ervaring: met een encoder met slechts en beperkt aantal stappen per omwenteling draai je je een ongeluk met slechts 0.5dB per stap.
Door het faseverschil weet je of er links- of rechtsom wordt gedraait, maar hoe heb je dat gedetecteerd met je microcontroller?
Ik pol dus gewoon. Zo uit mijn blote hoofd kijk ik naar beide ingangen van de encoder. Zo gauw als er iets gebeurt, ga ik een wachtloopje in. Hierin blijf ik, totdat beide ingangen weer inactief zijn. De laatst bewaarde toestand is dan mijn puls (up of down). Volgens mij had ik ook nog een voorwaarde ingevoerd dat ergens tijdens het wachten beide ingangen aktief geweest moeten zijn.
Ontdendering heb ik gewoon softwarematig gedaan, met een delay.
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
Mijn ervaring is toch anders, maar het ligt er natuurljik ook aan hoeveel de rest van de software te doen heeftdaniel schreef:Zal ik vanavond even opzoeken. Ik heb i.i.g. geen interrupts gebruikt omdat het allemaal niet zo tijds-kritisch is.
ik heb daar nog wel een lapje code voor liggen, zal vanavond wel ff kijken...
daniel schreef:Zal ik vanavond even opzoeken. Ik heb i.i.g. geen interrupts gebruikt omdat het allemaal niet zo tijds-kritisch is.
Aan jullie hoeft het niet te liggen, dat het project een succes gaat worden!deepspace schreef:ik heb daar nog wel een lapje code voor liggen, zal vanavond wel ff kijken...
Ik dacht zelf ook aan het afscannen van de pinnetjes, naar mijn mening moet dat voldoende zijn.
@Daniel, 3 Rotary (2 voorraad) encoders besteld bij Voti, bedankt voor de tip.
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
Dit stukkie code is wel voor de atmel, maar mischien toch wel bruikbaar met enige aanpassing:
beide rotary signalen hebben een eigen input. cbi wist een bit, sbi set een bit.
CODE: Selecteer alles
#define INT2_RE {sbi(EICRA, ISC21); sbi(EICRA, ISC20);}
#define INT2_FE {sbi(EICRA, ISC21); cbi(EICRA, ISC20);}
#define INT3_RE {sbi(EICRA, ISC31); sbi(EICRA, ISC30);}
#define INT3_FE {sbi(EICRA, ISC31); cbi(EICRA, ISC30);}
SIGNAL(SIG_INTERRUPT2)
{ cbi(EIMSK,2); sys_delay(20);
if (bit_is_set(PIND, 2)) INT2_FE else INT2_RE;
if (bit_is_set(EIMSK,3)) // This IRQ was first
{ sys_rotary_direction = 2;
} else { sbi(EIMSK, 2); sbi(EIMSK, 3); }
sbi(EIFR, 2);
}
SIGNAL(SIG_INTERRUPT3)
{ cbi(EIMSK,3); sys_delay(20);
if (bit_is_set(PIND, 3)) INT3_FE else INT3_RE;
if (bit_is_set(EIMSK,2)) // This IRQ was first
{ sys_rotary_direction = 3;
} else { sbi(EIMSK, 2); sbi(EIMSK, 3); }
sbi(EIFR, 3);
}in het geval van een preamp niet zoveel natuurlijk. Overzenden van data naar periferie is minder-dan-milisecondenwerk. Dat kan dus makkelijk tussen twee kliks van zo;n encoder in. Evenals bijvoorbeeld de tussenpauze tussen twee rc5-pulstreinen. Ook tijd zat om andere dingen te doen. En het doordraaien van 1 klik van die encoder duurt lang genoeg om er de eerste ms van te mogen missen.deepspace schreef:Mijn ervaring is toch anders, maar het ligt er natuurljik ook aan hoeveel de rest van de software te doen heeftdaniel schreef:Zal ik vanavond even opzoeken. Ik heb i.i.g. geen interrupts gebruikt omdat het allemaal niet zo tijds-kritisch is.![]()
echte real-time dingen zitten er gewoon niet in.
bij deze mijn code:
CODE: Selecteer alles
procedure check_encoder is
var bit cc1
var bit cc2
var bit cc3
var bit cc4
cc1 = false
cc2 = false
cc3 = false
cc4 = false
-- Het encoder signaal bestaat uit twee ingingen die ten opzichte an elkaar
-- verschoven zijn. 1 stap verzetten zorgt ervoor dat beide bits even hoog worden
-- alleen niet tegelijkertijd. Stapje linsom is dan 01 11 10, de andere kant op 10 11 01
-- Als er een van de 4 encoder-ingangen hoog is, betekent dat dat er i.i.g.
-- iets aan de hand is. Zo lang minstens een van de ingangen hoog is, wodt er in een lus
-- gewacht, en steeds de laatste toestand wordt bewaard
while ( encb1 | encb2 ) | ( enca1 | enca2 ) loop
cc1 = encb1
cc2 = encb2
cc3 = enca1
cc4 = enca2
delay_1ms ( 5 )
end loop
-- delay is voor contact-dender. Als alle ingangen weer nul zijn, volgt uit de laatste
-- toestand wat de draairichting is geweest. Een correct laatste code is dan 01 of 10
-- 11 is een ongeldige combinatie want de stap zou dan neit afgemaakt zijn. Een exclusive or
-- kijkt hiernaar
if ( cc1 ^ cc2 ) then
volume_up = cc2
volume_down = cc1
chk = true
else if ( cc3 ^ cc4 ) then
channel_up = cc4
channel_down = cc3
chk = true
end if
end if
-- channel_up, channel_down, volume_up en volume_down zijn status bits,
-- welke in de update routine gebruikt worden om volume of kanaal
-- te veranderen. Vanwege de ex-or kan slechts een van de up/downbits geset zijn
-- chk is een check-bit om aan te geven dat er een update uitgevoed moet worden
end procedure
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
Nee precies. In mijn geval was het een complete mp3 speler, waar (als je pech had) de arme atmel data van disk of cdrom naar mp3 chip moest sturen, terwijl je via de USB poort een bestand aan het lezen was op de PCdaniel schreef:in het geval van een preamp niet zoveel natuurlijk. Overzenden van data naar periferie is minder-dan-milisecondenwerk. Dat kan dus makkelijk tussen twee kliks van zo;n encoder in. Evenals bijvoorbeeld de tussenpauze tussen twee rc5-pulstreinen. Ook tijd zat om andere dingen te doen. En het doordraaien van 1 klik van die encoder duurt lang genoeg om er de eerste ms van te mogen missen.
Hallo Juul,
Mijn ervaring is dat in zulke gevallen een encoder sampelen op ca. 1 KHz voor een 100 lijnen encoder meer dan snel genoeg is. Je moet iig binnen 90 graden van 1 puls sampelen voor een betrouwbaar resultaat. Voor de decodering kun je het beste eerst een statediagrammetje maken voor je het in software implementeert. Je kunt dan ook kiezen welke resolutie je wilt: 1x, 2x of 4x het aantal lijnen van de encoder.
Meestal doe ik het in zulke gevallen zo: Een mainloop voor achtergrond taken zoals user interface en display update en een snelle timed interrupt (op bv 1 kHz of sneller) voor tijdkritische taken. Meestal laat ik de mainloop wachten op een timingpuls van 100 Hz vanuit de zo'n interrupt (via vlaggetjes). In zo'n stuctuur kun je de encoder sampelen in de interrupt routine.
Ziet er al erg mooi uit Juul. Overigens zijn er nu hele mooie LCD's te krijgen voor jouw toepassing: Blauw negatief met een witte led backlight.
Mijn ervaring is dat in zulke gevallen een encoder sampelen op ca. 1 KHz voor een 100 lijnen encoder meer dan snel genoeg is. Je moet iig binnen 90 graden van 1 puls sampelen voor een betrouwbaar resultaat. Voor de decodering kun je het beste eerst een statediagrammetje maken voor je het in software implementeert. Je kunt dan ook kiezen welke resolutie je wilt: 1x, 2x of 4x het aantal lijnen van de encoder.
Meestal doe ik het in zulke gevallen zo: Een mainloop voor achtergrond taken zoals user interface en display update en een snelle timed interrupt (op bv 1 kHz of sneller) voor tijdkritische taken. Meestal laat ik de mainloop wachten op een timingpuls van 100 Hz vanuit de zo'n interrupt (via vlaggetjes). In zo'n stuctuur kun je de encoder sampelen in de interrupt routine.
Ziet er al erg mooi uit Juul. Overigens zijn er nu hele mooie LCD's te krijgen voor jouw toepassing: Blauw negatief met een witte led backlight.
Laatst gewijzigd door Pjotr op wo 21 dec 2005, 21:24, 1 keer totaal gewijzigd.
Ik ga denk ik met een main loop werken en elke keer de encoder inlezen, als het blijkt dat dit niet snel genoeg is (lijkt me sterk) dan probeer ik wel wat anders.
Thx voor compliment:)
Ik heb hier ook zo'n blauw/wit LCD, ik vind deze stukken minder mooi dan een groene: het contrast is een stuk beter van het groene LCD.
De code van Daniel is vrij logisch, ik zal hier wel wat steun aan hebben.
Code van deepspace zou ik ff wat beter moeten bekijken.
Maar de bedoeling is ook niet om wat over te nemen he
Thx voor compliment:)
Ik heb hier ook zo'n blauw/wit LCD, ik vind deze stukken minder mooi dan een groene: het contrast is een stuk beter van het groene LCD.
De code van Daniel is vrij logisch, ik zal hier wel wat steun aan hebben.
Code van deepspace zou ik ff wat beter moeten bekijken.
Maar de bedoeling is ook niet om wat over te nemen he
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
Ja, er zijn tegenwoordig schitterende LCD's.. Alleen: die tering dingen zijn echt belachelijk duurPjotr schreef:Ziet er al erg mooi uit Juul. Overigens zijn er nu hele mooie LCD's te krijgen voor jouw toepassing: Blauw negatief met een witte led backlight.
Dat met de timer interrupt is een slim idee
