Mijn eerste topic hier, komt ie:
Microcontroller gestuurde 7.1 Kanaals Volumeregelaar

Inleiding
Aangezien ik een stel eigengemaakte versterkers heb voor bij mijn 7.1 kanaals geluidskaart, heb ik 7 verschillende volumeknoppen. Om het volume niveau omhoog te draaien zou je aan 7 verschillende potmeters moeten draaien. Hier is de lol snel vanaf, vandaar dat ik ben begonnen om zelf een volumeregelaar te maken.
De Hardware
Het brein van het systeem is een microcontroller: de PIC16F877A
- Deze stuurt de volumeregelaar ICs aan.
Door serieel data te versturen wordt de versterking ingesteld. Er wordt gebruik gemaakt van 4 PGA2310 ICs. Deze vormen samen een groot schuifregister, zodat er minder I/O poorten van de microcontroller nodig zijn.
- Regelt het volume bij als er aan de rotary encoder (NL=pulsgever) wordt gedraait.
- Schrijft informatie naar het LCD scherm. Er wordt gebruik gemaakt van een groen 2x16 character LCD scherm. Deze geeft een veel mooier beeld dan een blauw LCD scherm, het contrast is een stuk beter.
- Scanned de selectie drukknoppen af.
- En er is nog een "mute" drukknop op aangesloten.
Verder worden de ingangen gebuffered door 4 dual-channel opamps: OPA2134.
De Software
De software heb ik in C++ geschreven. De software is verdeelt in verschillende stukken, omdat de gebruikte compiler (cc5x) is gelimiteerd tot 1024bytes aan code. Door de aparte stukken te compileren en de gemaakte asm files met MPLINK aan elkaar te linken wordt er een hex file verkregen.
Deze hex file wordt met een programmer naar de PIC16F877A geschreven.
Enkele dingen die hierbij komen kijken:
- Schrijven/Lezen naar de EEPROM
- Serieel data schrijven naar de PGA2310 ICs
- Schrijven naar het CGRAM van het LCD voor de custom characters
- Het gebruiken van de A/D Converter om te kijken of de volumeregelaar wordt uitgezet waarna er nog snel naar het EEPROM wordt geschreven.

De structuur van het menu.
Foto's

De programmer met de microcontroller.

Eerst heb ik elk deel apart getest met een breadbordje.
Ik was eerst van plan om per kanaal een potmeter te gebruiken, maar 1 rrotary encoder met drukknopjes is toch wel mooier.

Daarna, toen alles werkte is er een layout van gemaakt in ultiboard.
De print is geetst, de gaatjes zijn geboord en de componenten worden gemonteerd.

De printplaat met (bijna, op voedingsgedeelte na) alle componenten erop.
Bij de onderste foto zie je links de buffers, daarna de volumeregelaar ICs en dat grote IC is de microcontroller.



De voeding

Het balans
Afwerking




What to do
Er is al heeeeel wat werk gedaan. Het einde is in zicht, er moeten nog een paar dingetjes worden gedaan. De software is nog niet helemaal af:
- de afhandeling van de drukknopjes moet nog gebeuren
- het menu
- Na een delay weer terug komen in het start menu
- code voor MUTE functie
- er moet nog een functie worden geschreven voor het berekenen van de volumes.
- het schrijven van de volumewaardes naar de EEPROM bij het uitzetten van de volumeregelaar. Dmv de A/D Converter wordt er naar de voedingsspanning gekeken, als deze zakt worden de waardes geschreven
- het inlezen van de Rotary Encoder moet nog worden verbeterd.
- Begrenzing voor het balans
- Afwerking
- Debuggen: Timing LCD is nog niet goed
- Debuggen: Knopafhandeling
Als er vragen of opmerkingen zijn, dan hoor ik het graag!
[updated 17-1]
Microcontroller gestuurde 7.1 Kanaals Volumeregelaar
Inleiding
Aangezien ik een stel eigengemaakte versterkers heb voor bij mijn 7.1 kanaals geluidskaart, heb ik 7 verschillende volumeknoppen. Om het volume niveau omhoog te draaien zou je aan 7 verschillende potmeters moeten draaien. Hier is de lol snel vanaf, vandaar dat ik ben begonnen om zelf een volumeregelaar te maken.
De Hardware
Het brein van het systeem is een microcontroller: de PIC16F877A
- Deze stuurt de volumeregelaar ICs aan.
Door serieel data te versturen wordt de versterking ingesteld. Er wordt gebruik gemaakt van 4 PGA2310 ICs. Deze vormen samen een groot schuifregister, zodat er minder I/O poorten van de microcontroller nodig zijn.
- Regelt het volume bij als er aan de rotary encoder (NL=pulsgever) wordt gedraait.
- Schrijft informatie naar het LCD scherm. Er wordt gebruik gemaakt van een groen 2x16 character LCD scherm. Deze geeft een veel mooier beeld dan een blauw LCD scherm, het contrast is een stuk beter.
- Scanned de selectie drukknoppen af.
- En er is nog een "mute" drukknop op aangesloten.
Verder worden de ingangen gebuffered door 4 dual-channel opamps: OPA2134.
De Software
De software heb ik in C++ geschreven. De software is verdeelt in verschillende stukken, omdat de gebruikte compiler (cc5x) is gelimiteerd tot 1024bytes aan code. Door de aparte stukken te compileren en de gemaakte asm files met MPLINK aan elkaar te linken wordt er een hex file verkregen.
Deze hex file wordt met een programmer naar de PIC16F877A geschreven.
Enkele dingen die hierbij komen kijken:
- Schrijven/Lezen naar de EEPROM
- Serieel data schrijven naar de PGA2310 ICs
- Schrijven naar het CGRAM van het LCD voor de custom characters
- Het gebruiken van de A/D Converter om te kijken of de volumeregelaar wordt uitgezet waarna er nog snel naar het EEPROM wordt geschreven.
De structuur van het menu.
Foto's
De programmer met de microcontroller.
Eerst heb ik elk deel apart getest met een breadbordje.
Ik was eerst van plan om per kanaal een potmeter te gebruiken, maar 1 rrotary encoder met drukknopjes is toch wel mooier.
Daarna, toen alles werkte is er een layout van gemaakt in ultiboard.
De print is geetst, de gaatjes zijn geboord en de componenten worden gemonteerd.
De printplaat met (bijna, op voedingsgedeelte na) alle componenten erop.
Bij de onderste foto zie je links de buffers, daarna de volumeregelaar ICs en dat grote IC is de microcontroller.
De voeding
Het balans
Afwerking
What to do
Er is al heeeeel wat werk gedaan. Het einde is in zicht, er moeten nog een paar dingetjes worden gedaan. De software is nog niet helemaal af:
- de afhandeling van de drukknopjes moet nog gebeuren
- het menu
- Na een delay weer terug komen in het start menu
- code voor MUTE functie
- er moet nog een functie worden geschreven voor het berekenen van de volumes.
- het schrijven van de volumewaardes naar de EEPROM bij het uitzetten van de volumeregelaar. Dmv de A/D Converter wordt er naar de voedingsspanning gekeken, als deze zakt worden de waardes geschreven
- het inlezen van de Rotary Encoder moet nog worden verbeterd.
- Begrenzing voor het balans
- Afwerking
- Debuggen: Timing LCD is nog niet goed
- Debuggen: Knopafhandeling
Als er vragen of opmerkingen zijn, dan hoor ik het graag!
[updated 17-1]
[ Voor 70% gewijzigd door JuuL20 op 21-01-2006 00:11 ]

