Drukknoppen ontdenderen?

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

Moderators: Barry2001, Beheerdersteam

Plaats reactie
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Drukknoppen ontdenderen?

Bericht door Gerrit »

Om voor mijn Arduino Due DAW (digital audio workstation) controller project de drukknoppen te ontdenderen (button debouncing in nieuw Nederlands) gebruik ik nu CD4044 SR latches, die moeten minimaal 3V hebben. Met de 3,3V waar de Arduino op draait lijkt dit allemaal prima te werken. Ik gebruik C&K digitast toetsen, dat zijn omschakelaars, vandaar dat ik SR latches wil gebruiken en geen RC schakeling. In software ontdenderen wil ik niet om geen tijd te verspillen.
Mijn vraag: Is dit een goede keus of moet ik een ander ICtje hebben? Ik ben nog aan het experimenteren op gaatjesprint dus het moet geen SMD zijn.

Gerrit
Gebruikersavatar
Pjotr
Berichten: 36744
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Drukknoppen ontdenderen?

Bericht door Pjotr »

SR latches is al een oude en beproefde techniek. Dateert nog van voor de microcontroller toen alles nog in hardware ging. Maar heden ten dagen haalt niemand dat meer in zijn hoofd om een microcontroller aan te sturen. Kan net zo goed in software, kost echt nauwelijks tijd. Maar goed, kan zijn dat dat met die Arduino libs niet zo is, staan nou niet bekend om hun efficiëntie.

Overigens maken die C&K Digitast wel een hoop herrie vind ik. Is dat nou handig voor een DAW? Terug naar de goeie ouwe tijd van de "KLoink - Klunk" taperecorders? :lol:
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Pjotr schreef:
Nee hoor, SR latches is al een oude en beproefde techniek. Dateert nog van voor de microcontroller toen alles nog in hardware ging. Maar heden ten dagen haalt niemand dat meer in zijn hoofd om een microcontroller aan te sturen. Kan net zo goed in software, kost echt nauwelijks tijd. Maar goed, kan zijn dat dat met die Arduino libs niet zo is, staan nou niet bekend om hun efficiëntie.
Dank je.
Als je in software debounced dan wordt de vertraging toch bepaald door de bounce tijd van de schakelaar (~10ms)?. Met een paar schakelaars maakt dat niet uit maar als het er meer worden en je moet met shift registers werken dan moet je toch iedere keer 10ms wachten? 10ms is wat mij betreft al teveel, laat staan dat het meer wordt.
Een SR latch zie ik als een echte oplossing voor het bounce probleem, de andere methoden wachten gewoon tot de schakelaar klaar is met stuiteren en dat vindt ik niet elegant ook al is het goedkoper en is er minder hardware nodig.
De kwaliteit van de code in Arduino land is inderdaad nogal variabel zullen we maar zeggen :lol: Als je meer wilt dan een kamerthermostaat maken met vier knopjes dan moet je goed kijken wat je gebruikt. Bijkomend probleem is dat slechte code ook nog wordt gerefereerd i.p.v. afgebrand.
Het programmeren van een microcontroller is weliswaar nieuw voor mij maar ik kan wel slechte code herkennen als ik die zie.

Gerrit
Gebruikersavatar
Pjotr
Berichten: 36744
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Drukknoppen ontdenderen?

Bericht door Pjotr »

Hmm ja. Die C&K schakelaartjes denderen een paar ms, hooguit 5ms. Gemeten is dat de reactietijd om een schakelaar te bedienen ca. 100ms is met uitschieters naar 50ms. Alleen bij ritmische processen zoals "in de maat spelen" bij muziek is een nauwkeurigheid van 10ms haalbaar. Dus een debouncetijd van 5ms - 10ms of zelfs 20ms, lijkt mij geen enkel probleem voor een bedieningspaneel. Ik hou zelf meestal 5ms aan voor kwaliteitsschakelaars en 10ms voor goedkope en rubber contacten.

Overigens druk je nooit meer dan een paar knopjes (1 - 3) tegelijk in. Je kunt dus rustig debouncen voor alle knopjes tegelijk. Dat hoef je niet voor ieder knopje apart te doen.
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Drukknoppen ontdenderen?

Bericht door Ah!buis »

De vraag is, om hoeveel toetsen gaat 't ?
Als het er niet veel zijn is dit misschien ook een (twee) oplossing(en).
Anne
Bijlagen
PCF8574_74C922_Voorbeeld.jpg
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Je hebt waarschijnlijk gelijk dat het voor alle praktische toepassingen niets uitmaakt, maar dit is het punt dat de psychologie om de hoek komt kijken. Bij zelfbouw doen we wel vaker dingen die niet nodig zijn maar puur theoretisch wel beter zijn. In dit geval is de wetenschap dat een SR latch het snelste reageert voor mij voldoende om voor deze oplossing te kiezen, als dit niet zou doen dan zou dit bij mij altijd blijven knagen.
Ah!buis schreef:
De vraag is, om hoeveel toetsen gaat 't ?
Als het er niet veel zijn is dit misschien ook een (twee) oplossing(en).
Anne
Voor mijn controller zit ik nu op 25 stuks, dus met één zo'n ding gaat dat niet werken maar het is wel iets wat ik in mijn achterhoofd ga houden.

Gerrit
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Drukknoppen ontdenderen?

Bericht door Ah!buis »

Oei, dat zijn al 7 stuks 4044 en dan nog een 3 naar 8 decoder, is 8 IC's om uit te komen met 7 controller poorten.Dan lijken me twee I2C gevallen handiger.
Anne
Gebruikersavatar
Pjotr
Berichten: 36744
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Drukknoppen ontdenderen?

Bericht door Pjotr »

Kun je niet beter een PS2 of serieel toetsenbord recyclen?
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Ah!buis schreef:
Oei, dat zijn al 7 stuks 4044 en dan nog een 3 naar 8 decoder, is 8 IC's om uit te komen met 7 controller poorten.Dan lijken me twee I2C gevallen handiger.
Anne
Ik heb zo'n Behringer XTouch van binnen bekeken, die zit vol met 74165 shift registers. Het was niet allemaal te zien want ik had geen zin het ding helemaal uit elkaar te halen. Met die shift registers heb je aan 4 lijnen genoeg als ik het goed begrepen heb.
Pjotr schreef:
Kun je niet beter een PS2 of serieel toetsenbord recyclen?
Is ook nog een idee, zeker om te testen.

De C&K digitast schakelaars heb ik gekozen om hun fraaie 'klik' en duidelijk drukpunt. Ik ben helemaal klaar met softtouch buttons zonder duidelijk drukpunt waar je naar het lampje moet kijken om te zien of je wel goed gedrukt hebt. Het is dus ook zeker niet mijn bedoeling om een Behringer controller of zelfs een Avid na te maken (op de Avid zitten trouwens ook van die wischi-waschi dingen) maar een controller waar je 'Studer' op kan zetten en dat iedereen het direct geloofd O:)
Ik ben in ieder geval al zover dat mijn bouwsel door Logic als zijnde een Logic control unit wordt herkend en van de data die Logic dan stuurt heb ik al de tekst van de kanalen op de juiste plek op het display. Het is de bedoeling een controller te maken speciaal voor plugins, zonder motorfaders maar wel met hele mooie optische rotary encoders om aan te draaien.

Gerrit
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Drukknoppen ontdenderen?

Bericht door Ah!buis »

Met die 74165 kan 't zelfs met 3 lijnen.Laden registers met toetsdata, klok voor buitenschuiven en een lijn voor inlezen data. Met 24 toetsen kom je dan op 6x 4044 en 3x 74165, zijn er al 9 ! Voor die 25ste nog van elk een erbij, of iets anders verzinnen.Blijft nogal uitbundig voor 25 toetsen.
Anne
Gebruikersavatar
Pjotr
Berichten: 36744
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Drukknoppen ontdenderen?

Bericht door Pjotr »

Voor Studer kwaliteit moet je eerder bij Rafi en Elma schakelaars zijn :lol:

Wat die "klik" betreft ben ik het helemaal met je eens. Daarom heb ik ook nog een ouderwets "mechanisch" toetsenbord met losse Cherry schakelaars van Filco ( https://www.diatec.co.jp/en/ ).
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Ah!buis schreef:
Met die 74165 kan 't zelfs met 3 lijnen.Laden registers met toetsdata, klok voor buitenschuiven en een lijn voor inlezen data. Met 24 toetsen kom je dan op 6x 4044 en 3x 74165, zijn er al 9 ! Voor die 25ste nog van elk een erbij, of iets anders verzinnen.Blijft nogal uitbundig voor 25 toetsen.
Anne
Het is even prutsen dat klopt, maar het kost allemaal geen drol dus wat dat betreft valt het allemaal weer mee.
Pjotr schreef:
Voor Studer kwaliteit moet je eerder bij Rafi en Elma schakelaars zijn :lol:
Heb ik nog aan gedacht voor de transport functies, maar die schakelaars zijn allemaal zo diep. :lol: Dat is net erg bij een regietafel of zo'n mega meersporen recorder, maar ik wilde het mooi compact houden.
Bij Elma heb ik wel hele fraaie knoppen gezien voor op rotary encoders, moet nog eens kijken wat die moeten kosten en waar je die per stuk kunt krijgen.

Het is in ieder geval weer leuk spelen zo :D Wat mij betreft is dit ook de leukste zelfbouw, iets maken wat er niet is. In dit geval een combinatie van functies, compacte afmetingen en hoog afwerkingsniveau.

Gerrit
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Drukknoppen ontdenderen?

Bericht door Ah!buis »

Is nog wel een klein probleem met die S-R ff en een schuifregister.Als je op een toets duwt en die terug loslaat voordat de toestand in het register is geladen mis je de aanslag.Kun je wel snel achtereen blijven toetslezen maar dat neemt weer veel tijd in beslag.
Zou eigenlijk een tussengeheugen moeten zijn die teruggezet wordt bij/na inlezen in de schuif.
Anne
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Ah!buis schreef:
Is nog wel een klein probleem met die S-R ff en een schuifregister.Als je op een toets duwt en die terug loslaat voordat de toestand in het register is geladen mis je de aanslag.Kun je wel snel achtereen blijven toetslezen maar dat neemt weer veel tijd in beslag.
Zou eigenlijk een tussengeheugen moeten zijn die teruggezet wordt bij/na inlezen in de schuif.
Anne
Zo werkt het volgens mij wel, de main loop doet niets anders dan als een razende roeltje alle ingangen afscannen of er nog wat gedrukt of gedraaid en of er nog midi binnen gekomen is.

Gerrit
Gebruikersavatar
Pjotr
Berichten: 36744
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Drukknoppen ontdenderen?

Bericht door Pjotr »

Goed opgemerkt Anne. Daarom gebruik je een "afwerklus" om het zo te zeggen, waarin je alle belangrijke tijd kritische zaken afhandelt. En daarbij dus ook oorzaak (knopje indrukken) en gevolg (sample starten b.v.). Zo'n lus heeft dan een bepaalde vaste herhaal frequentie. Voor studiowerk is een lus van 10ms meer dan kort genoeg in de praktijk (maar korter mag ook). Dus als je om de 10ms alle schakelaars uitleest en 2 opvolgende leespogingen zijn gelijk aan elkaar dan mag je aannemen dat de schakelaarstand stabiel is. Dat in de tussenliggende tijd van 10ms de schakelaar stuitert zal je een worst zijn. Als ie na 10 ms maar uitgestuiterd is. En goede schakelaars zijn dat beslist.
Gebruikersavatar
John P
Berichten: 4374
Lid geworden op: do 06 nov 2008, 15:04
Locatie: Maastricht

Re: Drukknoppen ontdenderen?

Bericht door John P »

Heb je ook al nagedacht hoe je de waarde van de knoppen gaat weergeven. Iets met een led rondje of zo?
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Pjotr schreef:
Goed opgemerkt Anne. Daarom gebruik je een "afwerklus" om het zo te zeggen, waarin je alle belangrijke tijd kritische zaken afhandelt. En daarbij dus ook oorzaak (knopje indrukken) en gevolg (sample starten b.v.). Zo'n lus heeft dan een bepaalde vaste herhaal frequentie. Voor studiowerk is een lus van 10ms meer dan kort genoeg in de praktijk (maar korter mag ook). Dus als je om de 10ms alle schakelaars uitleest en 2 opvolgende leespogingen zijn gelijk aan elkaar dan mag je aannemen dat de schakelaarstand stabiel is. Dat in de tussenliggende tijd van 10ms de schakelaar stuitert zal je een worst zijn. Als ie na 10 ms maar uitgestuiterd is. En goede schakelaars zijn dat beslist.
Hmm, in dat licht gezien ga ik me inderdaad afvragen waarom ik moeilijk zou doen. Een paar shift registers zijn ook zomaar aangesloten.
Dit is overigens een goed voorbeeld van wat ik mis bij de Arduino voorbeelden, de argumentatie waarom je iets op een bepaalde manier doet. Meestal staat er alleen hoe je het doet.
John P schreef:
Heb je ook al nagedacht hoe je de waarde van de knoppen gaat weergeven. Iets met een led rondje of zo?
Ja, dat gaat het display regelen. Hier is een foto van de testopstelling in aanbouw:
Zeus-test-setup.jpg
Inmiddels zitten er al wat meer draadjes op :lol: De schakelaars op de foto zijn overigens geen C&K, dat voel je dus ook. Op het display zijn twee rijen van vier draaiknoppen zichtbaar, onder het display komen twee keer vier encoders. Op die manier is volstrekt duidelijk welke waarbij hoort en heb je een heel goed overzicht hoe de knoppen staan als je een andere track of plugin(pagina) kiest. Het grote display is 7" 800x480, het kleine is 2,4" 320x240 beide 64k kleuren en resistive touch. De displays zijn van 4D systems, dat zijn prijzige dingen maar daar krijg je ook wat voor. Het zijn intelligente displays waar je m.b.v. hun programmeeromgeving (gratis) op een WYSIWYG manier knoppen, meters en dat soort UI elementen op het scherm zet.
Hier een screenshot van de IDE met de UI die ik nu heb:
Zeus-UI.png
Aan de Arduino kant heb je een display object met de UI objecten waar je naartoe schrijft, echt een eitje. De IDE genegeerd alle benodigde files (voor iedere stand van iedere knop) en zet ze op een micro SD kaart, die stop je in het display en klaar is de UI. Mooi is ook dat het display alle zware DMA werk afhandelt, de Arduino kan in de tussentijd gewoon verder gaan. Het draaien aan de virtuele knoppen met de rotary encoders werkt echt heel erg goed en omdat de optische encoders en hogere resolutie hebben (na decoden 256 pulsjes per omwenteling) kan ik ervoor zorgen dat de hoek die je maak ook exact overeen komt, zo heb je echt het idee dat je aan die knop op het scherm draait.

Gerrit
Rudy
Berichten: 1526
Lid geworden op: ma 29 nov 2004, 12:59
Locatie: Belgie

Re: Drukknoppen ontdenderen?

Bericht door Rudy »

Voor die knoppen kan je bij distrilec terecht.
Al enkele malen gebruikt, telkens met net resultaat.

Kwa dender, een RRC zoals beschreven in de meeste datasheets van encorders werkt prima, dat in combinatie met port change interrupts maakt al de rest wat simpeler.

mvg Rudy
Gebruikersavatar
Gerrit
Berichten: 1005
Lid geworden op: ma 25 feb 2008, 9:40
Locatie: Schin op Geul
Contacteer:

Re: Drukknoppen ontdenderen?

Bericht door Gerrit »

Rudy schreef:
Voor die knoppen kan je bij distrilec terecht.
Al enkele malen gebruikt, telkens met net resultaat.

Kwa dender, een RRC zoals beschreven in de meeste datasheets van encorders werkt prima, dat in combinatie met port change interrupts maakt al de rest wat simpeler.

mvg Rudy
Dank je voor de link!
Niet goedkoop die knoppen, maar ik denk wel de moeite waard.

Voor het uitlezen van de encoders gebruik ik de library van Paul Stoffregen. De Arduino Due is voor dit project handig omdat alle 51 digitale I/Os interrupts hebben, dit wordt aanbevolen voor de beste performance. Voor de mechanische encoders op de foto heb ik de schakeling uit de datasheet van Bourns gebruikt, optische encoders hebben natuurlijk geen last van bouncing.
Ik ga eerst maar eens wat virtuele buttons op het kleine display zetten zodat ik op m'n gemak kan uitzoeken welke functies ik echt nodig heb. Voorlopig ben ik nog wel even bezig het Mackie control protocol uit te pluizen. De hele MIDI implementatie staat wel in de handleiding van de Logic Control unit, maar met een woordenboek alleen kun je nog geen conversatie maken. Het is mij in ieder geval al wel duidelijk waarom Mackie niet met een nieuw model komt met een beter display (is nu een simpel 2 x 56 character monochroom lcd), het protocol maakt dat eigenlijk zo goed als onmogelijk. Ze hebben zich wat dat betreft helemaal in de hoek geprotocolleerd ](*,) Aangezien ik niet alles hoef te ondersteunen maar alleen de plugins die ik gebruik kan ik er volgens mij nog wel een mouw aan passen.

Gerrit
Gebruikersavatar
Pjotr
Berichten: 36744
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Drukknoppen ontdenderen?

Bericht door Pjotr »

Gerrit schreef:
Voor het uitlezen van de encoders gebruik ik de library van Paul Stoffregen. De Arduino Due is voor dit project handig omdat alle 51 digitale I/Os interrupts hebben, dit wordt aanbevolen voor de beste performance. Voor de mechanische encoders op de foto heb ik de schakeling uit de datasheet van Bourns gebruikt, optische encoders hebben natuurlijk geen last van bouncing.
Interrupts gebruiken om schakelaars/mechanische encoders uit te lezen is interrupts oneigenlijk misbruiken. Iedere storing of ruis (bounce) genereert dan onzinnige interrupts die je ook weer uit moet filteren. Geeft blijk van hobbyisme en geen kennis hoe je zoiets goed doet. De juiste manier is om die dingen te sampelen of te scannen op b.v. 100Hz. En als dat niet snel genoeg is, voor hi-res encoders b.v., op 1kHz of hoger.
Plaats reactie

Terug naar “Overige Audio-elektronica”