arduino_PREamp perikelen
Moderator: Beheerdersteam
arduino_PREamp perikelen
Uit nieuwsgierigheid heb ik mij zo'n chinees Arduino-Nano bordje besteld om mij wat te gaan bekwamen in het programmeren.
Nu heb ik nog wat gesampelde PGA2311(dil) chipjes heb liggen waar ik ooit nog eens iets mee zou willen doen, was dit natuurlijk de uitdaging.
Er zijn op het forum ook al vaker leden hier ver gevorderd mee bezig geweest, maar op een gegeven moment hoor je er niets meer van en heb ook nergens een sketch hiervan kunnen vinden.
Dus moest ik zelf het wiel maar opnieuw gaan uitvinden, wat best leuk is trouwens, dus heb ik van diverse sites delen weggehaald en zelf wat programma regels verzonnen met een nu redelijk werkend resultaat.
Wat nu werkt:
Display aansturing via i2c met DB waarde en volume Bar.
Infrarood afstandsbediening voor zowel volume als ingangen.
Rotary encoder die via SPI de PGA aanstuurt, deze heeft tevens een drukschakel functie dat, serieel via een schuifregister, de ingangs relais aanstuurt.
Wat nog niet lukt is de balans regeling, ik heb het al wel zover dat bij langer indrukken er naar een andere functie gegaan wordt, dat zou dan eventueel de balans kunnen zijn, maar dat krijg ik nog niet werkend.
Ik heb inmiddels ook de schema's en printen getekend om zelf te etsen (enkelzijdig), van voeding, display, arduino met PGA en opamp, en relaisbord.
Omdat wij hier allemaal met de zelfde hobby bezig zijn en misschien iemand kan inspireren, plaats ik dit hier gewoon even met alle info.
Nu heb ik nog wat gesampelde PGA2311(dil) chipjes heb liggen waar ik ooit nog eens iets mee zou willen doen, was dit natuurlijk de uitdaging.
Er zijn op het forum ook al vaker leden hier ver gevorderd mee bezig geweest, maar op een gegeven moment hoor je er niets meer van en heb ook nergens een sketch hiervan kunnen vinden.
Dus moest ik zelf het wiel maar opnieuw gaan uitvinden, wat best leuk is trouwens, dus heb ik van diverse sites delen weggehaald en zelf wat programma regels verzonnen met een nu redelijk werkend resultaat.
Wat nu werkt:
Display aansturing via i2c met DB waarde en volume Bar.
Infrarood afstandsbediening voor zowel volume als ingangen.
Rotary encoder die via SPI de PGA aanstuurt, deze heeft tevens een drukschakel functie dat, serieel via een schuifregister, de ingangs relais aanstuurt.
Wat nog niet lukt is de balans regeling, ik heb het al wel zover dat bij langer indrukken er naar een andere functie gegaan wordt, dat zou dan eventueel de balans kunnen zijn, maar dat krijg ik nog niet werkend.
Ik heb inmiddels ook de schema's en printen getekend om zelf te etsen (enkelzijdig), van voeding, display, arduino met PGA en opamp, en relaisbord.
Omdat wij hier allemaal met de zelfde hobby bezig zijn en misschien iemand kan inspireren, plaats ik dit hier gewoon even met alle info.
- Bijlagen
-
- Arduino_PREamp.rar
- (1.81 MiB) 57 keer gedownload
Re: arduino_PREamp perikelen
Ik het er destijds voor gekozen om een 'volume' waarde te maken en een balans/offset waarde.dus heb ik van diverse sites delen weggehaald en zelf wat programma regels verzonnen met een nu redelijk werkend resultaat.
In plaats van op 10 plekken in je code setGain_L en setGain_R te zetten vervang je die statements door een setGain of setVolume
void setGain(int nGain) {
digitalWrite(slaveSelectPin,LOW);
spi.write(volume-offset) ;
spi.write(volume+offset);
digitalWrite(slaveSelectPin,HIGH);
}
Iets vergelijkbaars geldt voor bijvoorbeeld je setVolumeBar.
Iedere keer dat je tegen je PGA IC zegt dat de gain anders moet, wil je dat op je display zien. Waarom roep je dat dan telkens los aan?
Re: arduino_PREamp perikelen
Dit was hier oorspronkelijk ook zo, maar om er ook de balans in te kunnen stellen ben ik het voor links en rechts apart gaan benoemen, maar misschien denk ik helemaal verkeert, ik heb nog weinig programmeer ervaring en probeer zo één en ander te begrijpen.
Zoals je ziet heb ik dat voor de IR afstands bediening ook moeten doen, omdat de de bediening die ik gebruik twee wisselende codes uitgeeft bij indrukken van een toets.
Hardy
Zoals je ziet heb ik dat voor de IR afstands bediening ook moeten doen, omdat de de bediening die ik gebruik twee wisselende codes uitgeeft bij indrukken van een toets.
Hardy
Re: arduino_PREamp perikelen
Dit begrijp ik dus nog even niet helemaal, "volume-offset" en "volume +offset", hier had ik in oorsprong gewoon 2 x "nGain" voor beide bytes(L+R)SuperR schreef:Ik het er destijds voor gekozen om een 'volume' waarde te maken en een balans/offset waarde.dus heb ik van diverse sites delen weggehaald en zelf wat programma regels verzonnen met een nu redelijk werkend resultaat.
In plaats van op 10 plekken in je code setGain_L en setGain_R te zetten vervang je die statements door een setGain of setVolume
void setGain(int nGain) {
digitalWrite(slaveSelectPin,LOW);
spi.write(volume-offset) ;
spi.write(volume+offset);
digitalWrite(slaveSelectPin,HIGH);
}
Iets vergelijkbaars geldt voor bijvoorbeeld je setVolumeBar.
Iedere keer dat je tegen je PGA IC zegt dat de gain anders moet, wil je dat op je display zien. Waarom roep je dat dan telkens los aan?
Re: arduino_PREamp perikelen
Ja dat bedoelde ik ook. Ik typte het alleen anders 
En de offset is natuurlijk je balans.
En de offset is natuurlijk je balans.
Re: arduino_PREamp perikelen
Ik ga er mee bezig en heb inmiddels alles weer terug gezet en nu met de offset erbij, maar zie alleen nog even niet hoe ik die nu moet gaan gebruiken in mijn sketch, dus maar net zolang proberen/zoeken tot ik het snap.SuperR schreef:Ja dat bedoelde ik ook. Ik typte het alleen anders
En de offset is natuurlijk je balans.
In iedergeval bedankt.
Hardy
Re: arduino_PREamp perikelen
Even dit weekend goed benut en dus inmiddels de printen klaar en alles werkt, aan de software moet ik nog wel weer gaan werken, de balans instelling wil nog niet lukken ondanks wat nuttige hulp van Super-R.
Ik heb wel nog wat wijzigingen in de layouts gemaakt.
Hier voor de geinteresserden.
Ik heb wel nog wat wijzigingen in de layouts gemaakt.
Hier voor de geinteresserden.
- Bijlagen
-
- PREamp.rar
- (939.79 KiB) 72 keer gedownload
Re: arduino_PREamp perikelen
Het begint een beetje vorm te krijgen, nog een aantal wijzigingen gemaakt en op een plankje gezet, klinkt voortreffelijk en helemaal zonder brom en schakelklikken
.
Nu heb ik even een vraag over de tulp connectoren, ik heb er een hele aantal van die vergulde liggen zoals die te zien zijn op de foto, deze zijn niet voorzien van isolatie ringen, is het verstandig om deze toch geïsoleerd te monteren, of mogen ze zo aan het chassis bevestigd worden, dit i.v.m. aardlussen.
Hardy
Nu heb ik even een vraag over de tulp connectoren, ik heb er een hele aantal van die vergulde liggen zoals die te zien zijn op de foto, deze zijn niet voorzien van isolatie ringen, is het verstandig om deze toch geïsoleerd te monteren, of mogen ze zo aan het chassis bevestigd worden, dit i.v.m. aardlussen.
Hardy
Laatst gewijzigd door hardy op vr 09 sep 2016, 16:22, 2 keer totaal gewijzigd.
Re: arduino_PREamp perikelen
Ik zou de tulp chassis delen wel isoleren van het chassis anders is de kans op brom wel erg groot.
Leuk project overigens! Ik ben zelf ook net de eerste stappen aan het zetten met de Arduino, ik sta er van te kijken wat er allemaal beschikbaar is aan informatie, hardware uitbreidingen en voorbeelden van hoe dit allemaal te gebruiken.
Gerrit
Leuk project overigens! Ik ben zelf ook net de eerste stappen aan het zetten met de Arduino, ik sta er van te kijken wat er allemaal beschikbaar is aan informatie, hardware uitbreidingen en voorbeelden van hoe dit allemaal te gebruiken.
Gerrit
Re: arduino_PREamp perikelen
Bedankt gerrit, dan monteer ik ze wel op een stukje pertinax of kunstof.
Arduino is wel verslavend, maar gestructureerd programmeren is voor mij nog wel een probleem, kreeg net de wind van voren op het arduino forum, hihihi.
Ik heb veel stukjes van internet gehaald en aangepast.(knip en plakwerk).
Het werkt nu in ieder geval wel zoveel mogelijk.
Maar ik krijg nog niet alles zoals ik zou willen (balans regelen en een hoofdtelefoon schakelaar die via het schuifregister de uitgang afkoppelt), maar dan wil ik wel de ingangen kunnen blijven schakelen.
Arduino is wel verslavend, maar gestructureerd programmeren is voor mij nog wel een probleem, kreeg net de wind van voren op het arduino forum, hihihi.
Ik heb veel stukjes van internet gehaald en aangepast.(knip en plakwerk).
Het werkt nu in ieder geval wel zoveel mogelijk.
Maar ik krijg nog niet alles zoals ik zou willen (balans regelen en een hoofdtelefoon schakelaar die via het schuifregister de uitgang afkoppelt), maar dan wil ik wel de ingangen kunnen blijven schakelen.
Laatst gewijzigd door hardy op vr 09 sep 2016, 12:17, 1 keer totaal gewijzigd.
Re: arduino_PREamp perikelen
Ik moet er nog echt induiken maar ik heb al wel in de gaten dat een hoop voorbeelden je de verkeerde manier aanleren om dingen aan te pakken. Ik heb dan wel geen formele IT achtergrond maar wel 25 jaar ervaring met ontwikkeling en data modellering, een goede structurering van de software is essentieel als je het beheer(s)baar wilt houden.hardy schreef:Bedankt gerrit, dan monteer ik ze wel op een stukje pertinax of kunstof.
Arduino is wel verslavend, maar gestructureerd programmeren is voor mij nog wel een probleem, kreeg net de wind van voren op het arduino forum, hihihi.
Ik heb veel stukjes van internet gehaald en aangepast.(knip en plakwerk).
Het werkt nu in ieder geval wel zoveel mogelijk.
Maar ik krijg nog niet alles zoals ik zou willen (balans regelen en een hoofdtelefoon schakelaar die via het schuifregister de uitgang afkoppelt, maar dan wil ik wel de ingangen kunnen blijven schakelen.
Gerrit
Re: arduino_PREamp perikelen
Helaas heb ik helemaal geen software achtergrond, alleen al wel mijn hele leven interesse in electronica gehad en ben daar dan ook hobbymatig veel mee bezig, vroeger wel een beetje met verschillende basic dialecten geprutst.
Omdat veel electronica inmiddels vanuit microcontrollers bestuurt wordt, is het natuurlijk ook wel belangrijk om mij daar in te gaan verdiepen en is ook wel weer leuk, maar kost veel tijd.
Ik heb al wel veel gebouwd waar een controle opzit en die dan zelf geprogrammeerd met bestaande Hex files (Pic's, Atmel's), en als er een source aanwezig is, ook kleine aanpassingen hierin toegepast.
Het leuke van de arduino is, dat je geen controller steeds hoeft om te prikken in je project om te testen en daarna weer terug naar je programmer moet gaan, ISP kan natuurlijk, maar is toch niet zo makkelijk als direct via USB.
Hardy
Omdat veel electronica inmiddels vanuit microcontrollers bestuurt wordt, is het natuurlijk ook wel belangrijk om mij daar in te gaan verdiepen en is ook wel weer leuk, maar kost veel tijd.
Ik heb al wel veel gebouwd waar een controle opzit en die dan zelf geprogrammeerd met bestaande Hex files (Pic's, Atmel's), en als er een source aanwezig is, ook kleine aanpassingen hierin toegepast.
Het leuke van de arduino is, dat je geen controller steeds hoeft om te prikken in je project om te testen en daarna weer terug naar je programmer moet gaan, ISP kan natuurlijk, maar is toch niet zo makkelijk als direct via USB.
Hardy
Re: arduino_PREamp perikelen
Hoe ziet de code er nu uit? Wellicht dat ik nog wat tips kan geven of er wat van kan leren.
Het leuke aan de Arduino is ook dat het een open source hardware platvorm is, naast een standaard Arduino Uno heb ik ook een Teensy laten komen, die heeft als voordeel dat die zich ook als MIDI USB device kan voordoen. Ik ben namelijk van plan een MIDI/DAW controller te bouwen met o.a. motor faders, nogal een ambitieus project maar het heeft allemaal geen haast.
Een ander project waar ik aan zit te denken is een draaitafel voor directivity metingen. De Clio software die ik gebruik kan dergelijke tafels aansturen, het zou natuurlijk geweldig zijn als je met één muisklik de hele reeks metingen van 0 tot 360 graden kunt laten uitvoeren.
Gerrit
Het leuke aan de Arduino is ook dat het een open source hardware platvorm is, naast een standaard Arduino Uno heb ik ook een Teensy laten komen, die heeft als voordeel dat die zich ook als MIDI USB device kan voordoen. Ik ben namelijk van plan een MIDI/DAW controller te bouwen met o.a. motor faders, nogal een ambitieus project maar het heeft allemaal geen haast.
Een ander project waar ik aan zit te denken is een draaitafel voor directivity metingen. De Clio software die ik gebruik kan dergelijke tafels aansturen, het zou natuurlijk geweldig zijn als je met één muisklik de hele reeks metingen van 0 tot 360 graden kunt laten uitvoeren.
Gerrit
Re: arduino_PREamp perikelen
Hallo Gerrit.
Hierbij de code.
Zoals gezegd, vond men het op het arduino forum nogal chaotisch, waar ik het overigens wel een beetje mee eens ben natuurlijk.
Hij is nog niet af, want er moet nog een hoofdtelefoon aansluiting geschakeld worden en eigenlijk ook een balans regeling.
Wat wel werkt is:
Volumeregeling met bar, ingangen kiesbaar met druktoets, monitorschakelaar waarbij de ingangen doorgelust worden, inschakel vertraging voor de analoge kant v/d voeding die tevens via een mosfet ook de digitale spanning op de PGA zet (digital en analoog wordt geadviseerd om tegelijk in te schakelen bij dat ding), dus eerst komt de processor onder spanning en daarna pas de rest, hier heb ik 5 seconden tussen gezet.
bij het omschakelen van een ingang wordt het volume naar 0 gedraaid en komt daarna weer langzaam op naar ingesteld niveau.
Dit alles werkt ook met een IR afstandsbediening. Ik heb 3 verschillende sketches, 1x met uitlezing in procenten en bar, 1x met DB waarden en bar, en 1 x in procenten en grote cijfers maar zonder bar.
Kijk er maar eens doorheen, staan ook ongebruikte regels in die ik misschien nog wil gaan gebruiken.
Gr Hardy
Ik krijg het ino bestand niet geupload, heb er maar even een txt van gemaakt
Hierbij de code.
Zoals gezegd, vond men het op het arduino forum nogal chaotisch, waar ik het overigens wel een beetje mee eens ben natuurlijk.
Hij is nog niet af, want er moet nog een hoofdtelefoon aansluiting geschakeld worden en eigenlijk ook een balans regeling.
Wat wel werkt is:
Volumeregeling met bar, ingangen kiesbaar met druktoets, monitorschakelaar waarbij de ingangen doorgelust worden, inschakel vertraging voor de analoge kant v/d voeding die tevens via een mosfet ook de digitale spanning op de PGA zet (digital en analoog wordt geadviseerd om tegelijk in te schakelen bij dat ding), dus eerst komt de processor onder spanning en daarna pas de rest, hier heb ik 5 seconden tussen gezet.
bij het omschakelen van een ingang wordt het volume naar 0 gedraaid en komt daarna weer langzaam op naar ingesteld niveau.
Dit alles werkt ook met een IR afstandsbediening. Ik heb 3 verschillende sketches, 1x met uitlezing in procenten en bar, 1x met DB waarden en bar, en 1 x in procenten en grote cijfers maar zonder bar.
Kijk er maar eens doorheen, staan ook ongebruikte regels in die ik misschien nog wil gaan gebruiken.
Gr Hardy
Ik krijg het ino bestand niet geupload, heb er maar even een txt van gemaakt
- Bijlagen
-
- pga2311-IR-595.txt
- (16.59 KiB) 95 keer gedownload
Re: arduino_PREamp perikelen
Dank je, ik zal er zeker naar kijken want de code om een rotary encoder uit te lezen heb ik ook nog nodig
Gerrit
Gerrit
Re: arduino_PREamp perikelen
Ik kwam nog een encoder library tegen:
Encoder library
Deze kun je gewoon via de library manager installeren. Ik moet het nog proberen maar het ziet er goed uit en het houdt je sketch wat overzichtelijker.
Zie ik het trouwens goed dat er geen hardware debouncing op je encoder zit? Op de datasheet van de Bourns encoder die ik gebruik wordt geadviseerd om dit wel te doen.
Gerrit
Encoder library
Deze kun je gewoon via de library manager installeren. Ik moet het nog proberen maar het ziet er goed uit en het houdt je sketch wat overzichtelijker.
Zie ik het trouwens goed dat er geen hardware debouncing op je encoder zit? Op de datasheet van de Bourns encoder die ik gebruik wordt geadviseerd om dit wel te doen.
Gerrit
Re: arduino_PREamp perikelen
hallo gerrit.
Ik heb hier even het schema bijgevoegd zoals het er nu uitziet, uiteraard heb ik er wel een hardware debounce inzitten r5,r6,r7,r8, c1,c2,.
die library ken ik, maar ik vond deze toch wel zo eenvoudig en goed te begrijpen, is overigens niet van mij zelf, kijk maar even bij bart die legt het best duidelijk uit, ik heb hardware matig nog wel iets moeten uitbreiden, om geen mis pulsjes meer te krijgen bij snel draaien, maar werkt nu echt perfect, heb verschillende encoders geprobeerd, maar er zit nu tijdelijk zo'n goedkoop china ding van €0.99 op.
http://www.bartvenneker.nl/Arduino/index.php?art=0016
Hardy
Ik heb hier even het schema bijgevoegd zoals het er nu uitziet, uiteraard heb ik er wel een hardware debounce inzitten r5,r6,r7,r8, c1,c2,.
die library ken ik, maar ik vond deze toch wel zo eenvoudig en goed te begrijpen, is overigens niet van mij zelf, kijk maar even bij bart die legt het best duidelijk uit, ik heb hardware matig nog wel iets moeten uitbreiden, om geen mis pulsjes meer te krijgen bij snel draaien, maar werkt nu echt perfect, heb verschillende encoders geprobeerd, maar er zit nu tijdelijk zo'n goedkoop china ding van €0.99 op.
http://www.bartvenneker.nl/Arduino/index.php?art=0016
Hardy
Re: arduino_PREamp perikelen
Ik heb net de encoder library uit de link getest, werkt als een speer. Het is een echte quadrature decoder die vier pulsen per klik geeft. Dat is bij een encoder met klik's misschien niet nodig/handig maar bij een encoder zonder klik's is dit erg fijn. Ik heb beide types op een boardje om te testen wat handig is in verschillende situaties. De Bourns encoders kosten €2,30 dus dat zijn de kosten ook niet.
Ze hebben bij Bourns ook optische encoders maar daar hangt een heel ander prijskaartje aan, desondanks heb ik daar ook één van besteld. Ik moet die nog aansluiten maar het nu a duidelijk dat je hier leuke dingen mee kan doen. Het ding loopt als een zonnetje (kogellagers max 3000rpm!), er zit nu een 20mm aluminium knop op en daar kun je echt een slinger aan geven
net als vroeger bij een tuner. 256 pulsen per omwenteling quadrature, dus 1024 na decoden. Met zo'n ding kun je heel erg precies regelen en/of een groot bereik beslaan. Volgens mij kun je hier o.a. een prachtig transport scrollwheel voor een DAW voor maken om door een song te scrollen.
Gerrit
Ze hebben bij Bourns ook optische encoders maar daar hangt een heel ander prijskaartje aan, desondanks heb ik daar ook één van besteld. Ik moet die nog aansluiten maar het nu a duidelijk dat je hier leuke dingen mee kan doen. Het ding loopt als een zonnetje (kogellagers max 3000rpm!), er zit nu een 20mm aluminium knop op en daar kun je echt een slinger aan geven
Gerrit

