7.1 Kanaals Microcontroller Gestuurde Volumeregelaar

De rest......
(streaming-/computeraudio graag in de daarvoor aangewezen forumgroep)

Moderators: Barry2001, Beheerdersteam

JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

7.1 Kanaals Microcontroller Gestuurde Volumeregelaar

Bericht door JuuL »

Na steeds maar weer aan allerlei verschillende volumeknoppen te moeten draaien om alleen maar het master volume omhoog te krijgen ben ik aan de slag gegaan met een volumeregelaar.

Hiervoor ga ik gebruik maken van:
- PGA2310 Volumeregelaar ICs
- PIC16F877a Microcontroller (beter teveel I/O pinnen dan te weinig)
- 16x2 Groen LCD
- OPA2134 Buffers aan de inputs
(Ja Daniel, hij heeft wel wat van die van jou weg :) )

En het shema:
/Volumeregelaar7.pdf

Het schiet al erg op, de software is grotendeels klaar. Dit heb ik met MPLAB gemaakt, mbv de CC5x compiler.
Ook schiet de hardware al op, grotendeels werkt het al.

Nu heb ik nog 1 vraagje, dat is over het bufferen.
Er is een lage uitgangsimpedantie nodig lijkt mij en een ingangsimpedantie van ongeveer 50kOhm? (om geen reflecties te krijgen)
Ik heb nu een niet inverterende versterker aan de inputs zitten, alleen dan als buffer geschakelt.
Maar deze ingangsweerstand is volgensmij veels te hoog he? Hoe kan ik dat het beste veranderen? 2 Weerstanden van 50kOhm pakken en de versterking 1x maken?

Als alles werkt en klaar is post ik wel de code en fotos 8)
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:45, 1 keer totaal gewijzigd.
Gebruikersavatar
daniel
Berichten: 1458
Lid geworden op: vr 17 sep 2004, 8:48
Locatie: Eindhoven

Bericht door daniel »

Interessant project :)

correct me if i'm wrong, maar volgens mij spelen reflecties zoals bij HF verbindingen hier geen rol. Het impedantieverhaal gaat er meer om hoe de bron en doel elkaar beinvloeden.

Dus een lage uitgangsimpedantie betekent dat dat systeem een beetje stroom kan leveren, zonder dat de uitgangsspanning daardoor beinvloedt wordt. En een hoge ingangsimpedantie betekent dat er niet veel stroom gaat lopen bij een bepaalde ingangsspanning.

Ingangsbuffers zijn vooral nodig omdat de ingangsimpedantie relatief laag is - ongeveer 10k. Dit zou sommige bronnen kunnen beinvloeden en extra harmonische vervorming kunnen introduceren. Dit hoeft echter niet. Is dus afhankelijk van de bron.
In jouw buffervoorbeeld kun je sowieso de ingangsimedantie definieren door een parallelweerstand van ingang naar ground te zetten. Dan ben je er ook. Die weerstand heb je ook nodig als je nog een ingangscondensator toe wilt passen als dc-blok.

Verder heb ik van Rudy destijds de tip gekregen om kleine weerstanden (100 ohm dacht ik) in serie te zetten met de uitgangen. Dit zou de stabiliteit ten goede komen bij sterk capacitieve belastingen. Heb ik nog niet geprobeerd verder overigens.

Mijn sourcecode is in JAL geschreven. Mocht je daarin geinteresseerd zijn, laat maar horen.
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

Ik heb dat reflectie verhaal idd bij HF geleerd, ik weet niet of en in welke mate het hier ook van toepassing is.

Dat van extra harmoische vervormingen heb ik ook gelezen, bij de aansturing van de PGA2310 ICs. Deze willen het liefst een impedantie van <600 Ohm zien. Met de buffertjes los ik dat mooi op.

Die parallelweerstand, dat is een goeie! Dan doe ik dat (en houd ik de versterking ook mooi gelijk)
En die ingangscondensator, whoops ook vergeten :roll:
Maar alleen bij je versterker, dat is toch voldoende?

Die tips van Rudy heb ik ook gezien jah, ik zal een plaatsje vrij proberen te maken.
En bedankt voor je aanbod van je sourcecode, maar ik heb het niet nodig. Bijna alles werkt al 8).

Ik heb ook een andere volumeknop nu, staat idd een stuk mooie ;) Zon aluminium van reichelt.
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

Zeer interessant project!

Als het klaar is en echt werk, heb ik wel interesse in het ontwerp. Zoek zelf namelijk precies zoiets voor mijn actieve setup! Voorlopig gebruik ik de 7.1 input en pre-outs van mijn receiver.. maar dat is zwaar brak: weinig kanaalscheiding, en teveel ruis. Moet dus beter.

Alleen heb ik het niet zo op PIC'jes. Doe mij maar liever een Atmel ;) Eigenlijk zou ik het zelfs nog liever direct met de PC willen aansturen :P

Ik denk ook dat ik geen buffers nodig zou hebben. Uitgangsimpedantie van mijn DAC's is lekker laag met 75 Ohm.
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

deepspace schreef:
Alleen heb ik het niet zo op PIC'jes. Doe mij maar liever een Atmel ;)
Jij ook al? :twisted:

Hehe, maar ff zonder gein. Dit is mijn eerste project met een microcontroller.
Op school heb ik met PICjes gewerkt, dus hier heb ik enige ervaring mee.
Dus vandaar :)

Met RS232 is miss ook wel leuk, ik heb het alleen niet nodig.
Ook zat ik aan een afstandsbediening te denken. Ook dit heb ik hier niet nodig.
Gebruikersavatar
daniel
Berichten: 1458
Lid geworden op: vr 17 sep 2004, 8:48
Locatie: Eindhoven

Bericht door daniel »

Je kunt om het even hoeveel van die PGA ic's aansturen met slechts drie pinnen (clock, data en CS) Dat kan natuurlijk ook prima vanuit een pc met rs232 o.i.d. Waarschijnlijk kun je hier zelfs de +5V vandaan halen. Eventueel een extra lijntje voor de mute-pin, maar dat kan je ook prima doen door de gain-setting op 0 te zetten.

Mocht je in een later stadium dan toch wat meer intelligentie nodig hebben (knoppen, displaytje o.id.) kun je er altijd nog een micro naar keuze aan toevoegen.

Overigens heb ik voor de PIC gekozen omdat daar al een bootloader in zit. (Wloader van VOTI) Deze kan ik dus prima in-circuit opnieuw programmeren, met alleen maar een rs232 kabel (wel een max232 moeten toevoegen bij de micro). En meteen voldoende pinnen ter beschikking.
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

Aarghh! ik heb deze error weer:

CODE: Selecteer alles

Deleting intermediary files... done.
Executing: "C:\ProjectsMPLAB\CC5X.EXE" Volumeregelaar.c -CC -fINHX8M -p16F877A -a -L -Q -V
CC5X Version 3.1C, Copyright (c) B Knudsen Data, Norway 1992-2001
 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
Volumeregelaar.c:
 Chip = 16F877A
Warning Volumeregelaar.c 127: Local variables and parameters in uncalled functions are not allocated (25)
 (The application contains non-library functions that are not called. Local
 variables in these functions (option -wU) are not allocated to save space)
 RAM : -------- -------- -------- -------- ===..... ........ ........ ....****
  40h: ******** ******** ******** ******** ******** ******** ******** ********
  80h: -------- -------- -------- -------- ******** ******** ******** ********
  C0h: ******** ******** ******** ******** ******** ******** -------- --------
 100h: -------- -------- ******** ******** ******** ******** ******** ********
 140h: ******** ******** ******** ******** ******** ******** -------- --------
 180h: -------- -------- ******** ******** ******** ******** ******** ********
 1C0h: ******** ******** ******** ******** ******** ******** -------- --------
RAM usage: 28 bytes (3 local), 340 bytes free
 File 'Volumeregelaar.fcs'
 Optimizing - removed 15 instructions (-1 %)
 File 'Volumeregelaar.var'
 File 'Volumeregelaar.asm'
 File 'Volumeregelaar.lst'
 File 'Volumeregelaar.cod'
 File 'Volumeregelaar.occ'

	{
		LCD_Vol_Side();					//Write Volume to LCD
                                          ^------
Error Volumeregelaar.c 99: Too much code (max address exceeded)
 (The application code does not fit into the available space offered
 by the device. Code rewriting or selecting another device is required)
 Codepage 0 has 1065 word(s) :  52 %
 Codepage 1 has    0 word(s) :   0 %
 Codepage 2 has    0 word(s) :   0 %
 Codepage 3 has    0 word(s) :   0 %
Total of 1065 code words (13 %)
 * Estimated CODE SIZE of licensed edition: 862 code words (-203)
 *** error(s), no hex file produced.

Error options: -ew: no warning details  -ed: no error details  -eL: list details
BUILD FAILED: Thu Oct 27 20:25:33 2005

Weten jullie hoe ik dit kan oplossen?
Zo heel erg groot is mijn programma ook weer niet, lijkt me sterk dat dat geheugen nu al vol zit. Dat PICje zit voor 20% ofzo vol.
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

eh.. atmel kopen ;)

ff serieus: het past blijkbaar niet meer :( Oplossing: optimaliseer! Er is vaak veel meer uit te halen dan je denk, dus nog ff goed kijken ;) 368 bytes RAM is toch niet echt heel veel.
Laatst gewijzigd door voodooless op do 27 okt 2005, 20:49, 1 keer totaal gewijzigd.
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

Maar hoezo zie ik bij ICprog dat het geheugen maar voor zo'n 20% in gebruik is...? :roll:

Wie weet een andere C compiler?

Mijn volgende project is met een Atmel
Laatst gewijzigd door JuuL op do 27 okt 2005, 20:51, 1 keer totaal gewijzigd.
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

JuuL schreef:
Maar hoezo zie ik bij ICprog dat het geheugen maar voor zo'n 20% in gebruik is...? :roll:

Mijn volgende project is met een Atmel
Flash geheugen misschien?

Andere compiler... Gcc misschien? Is ook gratis, maar of je daar echt zinvol mee kan werken voor de PIC weet ik niet eigenlijk.
Gebruikersavatar
daniel
Berichten: 1458
Lid geworden op: vr 17 sep 2004, 8:48
Locatie: Eindhoven

Bericht door daniel »

Of toch overstappen naar JAL? Mijn volledige sourcecode, inclusief teksten voor menu's en dergelijke, past in minder dan 4k instructies. De 16F877A kan er 8K aan, dus da's best efficient.
In de message die je post, zie je dat die compiler slechts 1k code aankan. Da's dus veel minder dan er in de PIC past. Toch maar zoeken naar een andere dus.

@deepspace: Die 386bytes RAM zijn puur voor data. Code zit in apart geheugen.
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

daniel schreef:
@deepspace: Die 386bytes RAM zijn puur voor data. Code zit in apart geheugen.
I know :oops: Maar zolang je geen MMU hebt, kun je ook prima het RAM geheugengebruik door de compiler laten berekenen.

Damn, dat JAL is wel echt een super easy kleuterschool taal :D Kun je nog best snel nuttige dingen mee maken ;)
Laatst gewijzigd door voodooless op vr 28 okt 2005, 0:02, 2 keer totaal gewijzigd.
Rudy
Berichten: 1526
Lid geworden op: ma 29 nov 2004, 12:59
Locatie: Belgie

Bericht door Rudy »

Licentie is idd het probleem, die 1k niet zozeer, maar het komt toch op hetzelfde neer.

Groetjes
Rudy / die altijd atmels gebruik, mega!!!! :D ( kun je mee emuleren onboard )
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

daniel schreef:
Of toch overstappen naar JAL? Mijn volledige sourcecode, inclusief teksten voor menu's en dergelijke, past in minder dan 4k instructies. De 16F877A kan er 8K aan, dus da's best efficient.
Nou, ik zit hier nu wel aan te denken, want het is echt een ramp met al die compilers.
Moet ik alleen alles weer van voor af aan goedmaken :evil:
Gebruikersavatar
Pjotr
Berichten: 36764
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Bericht door Pjotr »

deepspace schreef:
Alleen heb ik het niet zo op PIC'jes. Doe mij maar liever een Atmel ;)
Na wat geklooi met PICjes kan ik dat alleen maar onderschrijven. Het hangt er ook van af wat en hoe je programmeert. Voor simpele besturinkjes in C maakt het weinig uit wat je kiest. Maar programmeer je in assembler dan heeft de AVR van Atmel toch wel een veel volwassener set memory handling instructies.

Overigens zijn de AVR's allemaal via een een simpel interface'je (wat je zelf in elkaar kan knutselen) in-circuit te programmeren. Zelf heb ik voor 40 euri maar een serieel Atmel IC programmertje gekocht om van alle gezanik verder af te zijn.
blu_line
Berichten: 149
Lid geworden op: di 18 jan 2005, 7:48
Contacteer:

Bericht door blu_line »

@Juul

Niet meteen overstappen op een andere C-compiler of andere PIC.

Kijk even op www.cc5x.de
daar staat een manier om meerdere object files aan elkaar te knopen wanneer je boven de 1k komt.
Ook geeft de manual van cc5x een uitleg hoe dat te doen.

Je moet het wel erg bont maken wil je voor een volume controller en LCD aansturing op 1k uit komen. Ik heb het ooit eens in een 16F84 gemaakt.

Als boven staande adviezen niet lukken, laat het me dan even weten. Misschien dat ik je ff kan helpen.

mvg

ST
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

Hey dankje blu_line!
Ik ben ook al die site tegengekomen, ik zal het eens proberen dan!

En wat betreft die 1k, niet zo heel erg compact geprogrammeerd :roll:
Gebruikersavatar
voodooless
Berichten: 4775
Lid geworden op: di 02 nov 2004, 23:23
Locatie: Arnhem
Contacteer:

Bericht door voodooless »

JuuL schreef:
En wat betreft die 1k, niet zo heel erg compact geprogrammeerd :roll:
Ach, ik zou jezelf daar niet al te veel de schuld van geven. Die compiler die je had kon je amper C compiler noemen. Heel ver leek het idd op C ;)
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

ZO, daar ben ik weer.

Ben flink aan de slag gegaan met de hardware, heb dit bijna klaar.
Ik zit alleen nog met de ingangsimpedantie en de condensatoren tegen de gelijkspanning.

Aan de inputs heb ik buffers: OPA2134.
Deze heb zoals in het schema verbonden. Hoe kan ik de ingangsimpedantie het beste instellen? 50Kohm weerstandje van de niet-inverterende ingang naar ground? (Ik weet het, het is gezegt, maar kan het echt niet terug vinden).

En wat betreft de condensatoren. Alleen condensatoren aan de output, is dat voldoende?

Schema:
/V ... elaar7.pdf
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:42, 1 keer totaal gewijzigd.
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

[img]/Volumeregelaar2.jpg[/img]
De hardware werkt! :D:D

Nu de software nog...
En de componenten wat betreft bovenstaande vragen moet ik nog veranderen aan de hardware
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:42, 1 keer totaal gewijzigd.
Digidoo
LET OP: deze gebruiker heeft geen werkend emailadres, dus ontvangt ook geen notificaties.
Berichten: 927
Lid geworden op: za 30 jul 2005, 17:57
Locatie: Den Haag
Contacteer:

Bericht door Digidoo »

Het ziet er verassend simpel uit. Ik ben alleen helemaal een noob wat software programmeren betreft, dus ik ga me er niet aan wagen. Ook al zou ik graag willen...
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

Printen etsen scheelt ontzettend ;)

De software kom ik nog niet echt uit. Compilen met SDCC lukt me nog niet met header.
De header wordt ook niet echt herkent: de manual nog maar eens goed doorlezen dan.

Digidoo, als dit eenmaal werkt wil ik jou best wel een keer mijn software geven. Maar ik ben nog wel ff bezig met die compiler vrees ik.
De header die deepspace mij stuurde krijg ik ook niet werkend: alle hulp is welkom!!

Ik kan wel compilen, alleen krijg ik geen .hex file eruit. Hiervoor moet ik het commando -mpic14 erbij zetten. Maar dan krijg ik deze error:
"gpasm" is not recognized as an internal or external command, operable program or batch file.

Of ik moet dit nog eens proberen, want van die SDCC compiler snap ik bar weinig:
http://www.cc5x.de/Crack.html

/edit
De laatste link is me gelukt! :D
Heb er een flinke tijd over gedaan, maar ik denk dat het nu gaat werken.
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

JuuL schreef:
Hoe kan ik de ingangsimpedantie het beste instellen? 50Kohm weerstandje van de niet-inverterende ingang naar ground? (Ik weet het, het is gezegt, maar kan het echt niet terug vinden).

En wat betreft de condensatoren. Alleen condensatoren aan de output, is dat voldoende?
Niemand? :(
blu_line
Berichten: 149
Lid geworden op: di 18 jan 2005, 7:48
Contacteer:

Bericht door blu_line »

Hoe is de ondersteuning van SDCC voor de 16F877 ?
Ik had begrepen dat ze er niet veel deden aan de ontwikkeling voor de hele microchip series.

Waarom ben je afgestapt van cc5x ?


mvg

ST
JuuL
Berichten: 2616
Lid geworden op: za 12 mar 2005, 16:38

Bericht door JuuL »

Ik ben niet afgestapt van cc5x, ik ben afgestapt van SDCC.

Ik snap weinig van SDCC, volgensmij zijn er ook geen header files voor de 16F877. Als ik verder zou gaan in SDCC zou ik erg veel moeten veranderen.

Waarom ik problemen had met cc5x? De code kan niet groter worden dan 1kbyte, omdat het een gelimiteerde versie is.
Als je de link hierboven bekijkt zie je dat er een truuk is om dit te omzijlen, daar maak ik gebruik van.

/update
't gaat goed met de software!
1 Kanaal heb ik helemaal werkend.
Nu nog ff kijken wat voor bereik (gain) ik ga nemen.
Laatst gewijzigd door JuuL op zo 11 dec 2005, 21:52, 2 keer totaal gewijzigd.
Plaats reactie

Terug naar “Overige Audio-elektronica”