Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Ik heb onlangs deze MIDI-controller ontworpen om de Phrase Looper te bedienen die is ingebouwd in het Boss DD500-vertragingspedaal. Ik bedien mijn hele gitaarinstallatie met behulp van een Behringer FCB MIDI-bord, en dit stelt me in staat om patches op het vertragingspedaal in de effectenlus te veranderen, terwijl ik tegelijkertijd van versterkerkanaal wissel.
De DD500 heeft een zeer eenvoudige looper-functie ingebouwd, maar een van de nadelen ervan is dat wanneer de looper actief is, deze wordt bestuurd door de voetschakelaars op het pedaal. Dit betekent dat je geen patches op het pedaal kunt veranderen terwijl de loop actief is, omdat het in wezen de functies van de voetschakelaars vastlegt. Omdat ik MIDI gebruik, bestaat deze beperking niet, omdat het gewoon een fysiek probleem is. Dit betekende wel dat ik 5 voetschakelaars op mijn MIDI-hoofdcontroller moest reserveren voor de looper, en dus besloot ik om daar een aparte controller voor te bouwen.
Mijn oorspronkelijke plan hiervoor was om een kleine Hammond-behuizing te nemen en 5 voetschakelaars erin te plaatsen en mezelf wat basis Arduino-codering te leren. Toen ik meer begon te leren en mijn code werkte, motiveerde het me uiteindelijk om meer dingen te proberen en toen sneeuwde het in feite in iets groters.
Stap 1: Concepten
Een van de eerste ideeën was om slechts 5 knoppen op een rij te hebben met status-LED's. Dit was vrij eenvoudig te modelleren op een breadboard met de Arduino. De toevoeging van nieuwe functies en hardware werd uiteindelijk een proces waarin ik constant de fysieke lay-out op papier moest ontwerpen en herontwerpen en voortbouwde op het breadboard-project. Zelfs met veel planning, werd veel van het werk hieraan in het begin enigszins on-the-fly gedaan.
De 2 foto's hierboven tonen de allereerste tekening die ik op papier heb gezet, waarmee het idee in de eerste plaats van start ging, gevolgd door een maand van aantekeningen die werden gemaakt naar aanleiding van datgene dat de fysieke en PCB-lay-outs vormde.
Stap 2: prototypen van breadboards
Het hele project is gebouwd op een breadboard en volledig getest om er zeker van te zijn dat het volledig functioneerde met de DD500 voordat er begonnen werd met het permanent huisvesten ervan. Er zijn wat extra features in de code toegevoegd, waardoor de controller wat extra functies kreeg die de DD500 miste. Deze worden uitgebreider besproken in de codesectie.
Het pedaal heeft 5 voetschakelaars, 4 status-LED's, 5 I2C LCD-schermen en wordt bestuurd door een Arduino Nano Every. Het krijgt stroom van een 9V gitaarpedaal PSU door middel van een aparte breakout-box die die stroom over de MIDI-kabel voert met behulp van de 2 pinnen die normaal niet worden gebruikt op een MIDI-connector.
Stap 3: Fabricage
Ik heb veel mogelijke gevallen bekeken om het project te huisvesten, en heb zelfs het idee overwogen om te proberen mijn eigen koffer uit aluminiumplaten te buigen. Uiteindelijk koos ik voor een Hammond-behuizing die net breed genoeg was om de 5 16X2 LCD-schermen te huisvesten die ik had gekozen.
De voetschakelaars waren generieke kortstondige soft-touch schakelaars.
In dit stadium besloot ik om op maat gemaakte schermranden te laten maken om de voorkant er schoon uit te laten zien, omdat ik de gaten in het scherm met de hand zou snijden met een Dremel en wist dat er waarschijnlijk een paar gebieden zouden zijn die niet perfect waren. Ik heb deze laten knippen door een lokale ontwerpstudio die lasersnijden doet, eerst als kartonnen sjablonen om er zeker van te zijn dat mijn maten allemaal correct waren, en vervolgens in 3 mm wit acryl voor het laatste stuk.
Stap 4: CAD-model en lay-out
Van mijn papieren schetsen heb ik Inkscape gebruikt om alle fysieke componenten neer te leggen en de maten en posities af te ronden. Ik kwam op dit punt ook met de methode voor schermmontage. Om het aantal zichtbare bouten aan de voorkant te minimaliseren, heb ik besloten om alle schermen vanaf de achterkant op een aantal aluminium platen te monteren met behulp van afstandhouders, en dan zou ik maar 4 bouten per plaat nodig hebben om ze aan de behuizing te bevestigen, wat zou ook de schermranden op hun plaats houden.
Stap 5: PCB-ontwerp
Voor het maken van de PCB heb ik gebruik gemaakt van een website genaamd EasyEDA. Het beschikt over een editoromgeving waarin u een schema van uw componenten kunt tekenen, er een PCB-layout van kunt maken en het vervolgens rechtstreeks naar JLCPCB kunt exporteren om er borden van te maken. Ik had nog nooit zoiets gedaan, maar ze hebben een uitstekende gids op de site die uitlegt hoe de editor werkt, en binnen een uur had ik het bord ontworpen en besteld.
Sommige gebieden op het bord waren destijds door onervarenheid slecht ontworpen, zoals het gebruik van een enkele 5V-rail voor de schermvoeding, in plaats van ze elk een aparte voeding te geven. Gelukkig waren eventuele spanningsdalingen niet voldoende om problemen met de schermen te veroorzaken.
De planken kwamen ongeveer 2 weken later aan en werkten gelukkig zonder problemen.
Stap 6: Schermbevestigingen
De eerste onderdelen die werden gemaakt waren de schermbevestigingen. Ik heb hiervoor 3 mm aluminium gebruikt en gaten geboord voor afstandhouders. De afmetingen werden bepaald door alles op het bureau te leggen zoals ik het laatste pedaal wilde hebben en te meten vanaf de montagegaten op de schermprintplaten. Ik heb ook de voetschakelaars bij hen geplaatst om de afstanden daarvoor te krijgen.
Nadat alle gaten waren geboord, werden de schermen gemonteerd en gecontroleerd op haaksheid door een liniaal tegen de vlakke bodemranden te houden. Alles tot nu toe op een rij.
Stap 7: Behuizing
De volgende stap was het aanpassen van de zaak. De voetschakelaars en LED's waren eenvoudig omdat ze elk respectievelijk een gat van 12 mm en 5 mm nodig hadden.
Het grootste deel van het fysieke werk kwam bij het uitsnijden van de gaten in het scherm. Ik heb een Dremel gebruikt met wat zware doorslijpschijven en verschillende vijlen om de gaten daarna op te ruimen. Dit onderdeel duurde ongeveer 2 uur all-in.
De behuizing die ik heb gebruikt, is ontworpen voor industriële doeleinden en is gemaakt door een enkel stuk metaal te buigen en de hoeken te puntlassen. Dit betekende dat er wat werk nodig zou zijn om deze hoeken schoon te maken door carrosserievuller te gebruiken om de lage plekken te egaliseren en de gaten aan de rand op te vullen.
Op dit punt was de zaak volledig geprimed en ik bespotte alles om te zien hoe het eruit zou zien.
Stap 8: Uh-Oh
En toen kwam het besef dat ik ondanks al mijn plannen en meten één ENORME fout had gemaakt. Ik ontwierp het bord en de behuizing onafhankelijk van elkaar. In mijn hoofd zou het bord bijna vlak tegen de bovenmuur zitten, met een korte afstand erachter. Maar er was absoluut geen manier waarop dit zou kunnen passen. En er was ook geen ruimte om het aan de kant te zetten. Een enorm onoplettendheid, maar gelukkig een die ik kon rechtzetten omdat er nog behoorlijk wat ruimte was tussen de schermbevestigingen op de achterkant van de behuizing. Nog een paar gaten geboord in de schermbevestigingen en een paar afstandhouders, en we zijn weer in bedrijf, met net genoeg ruimte om de hoes erop te krijgen.
Stap 9: Verf
Alles werd weer gedemonteerd en de kast werd gespoten in Metallic Candy Red, gevolgd door een paar laklagen. De behuizing liet ik een week uitharden, hoewel ik ontdekte dat de lak op dat moment nog een beetje zacht was toen ik alles aan het opbouwen was. Hierdoor zijn een paar kleine plekjes van de lak beschadigd. Iets wat ik bij mijn volgende project wil vermijden.
In die tijd had ik een 3D-printer gekocht en besloot ik die te gebruiken om wat ringen voor de voetschakelaars te maken, omdat de nylon die ik had gekocht een vreselijke geelachtige tint hadden en niet zo groot waren.
Stap 10: Bedrading
Het laatste deel van de fysieke montage was om alles te bedraden. Nogmaals, de problemen met het ontwerp van de behuizing / PCB-ontwerp kwamen weer naar voren en sommige kopposities op de PCB betekende dat er veel draden over elkaar moesten worden gekruist, waardoor de zaken een beetje rommeliger werden dan ik had gehoopt.
De draden voor de schermen werden gebundeld in sets van 4 en met behulp van krimpkous en gevlochten wikkel tot één stuk gemaakt.
Stap 11: Arduino-code
Als een totale beginner op het gebied van Arduino-codering, leerde ik mezelf terwijl ik verder ging. De code is waarschijnlijk het programmeer-equivalent van een 'verreweg', maar ik was blij dat het werkte zoals bedoeld.
De looper op de DD500 heeft 5 basisfuncties:
- Looper aan/uit
- Opnemen/Overdubben/Afspelen
- Opgenomen loop afspelen
- Afspelen stoppen
- Opgenomen lus wissen
Elk van die functies heeft een bijbehorende voetschakelaar en, met uitzondering van de stopknop, een status-led. De LCD-schermen worden ook bijgewerkt met relevante informatie om te laten zien of het pedaal in de opname-, overdub- of afspeelmodus staat en welke functie elke voetschakelaar zal doen, afhankelijk van wat er op dat moment gebeurt.
Een andere functie die ik heb toegevoegd, was om bij te houden hoe vaak de record/overdub-functie is geactiveerd. Dit wordt bijgehouden in de code door een geheel getal te verhogen, dat wordt weergegeven op het 'buffer'-scherm en aangeeft hoeveel tracks er zijn opgenomen. Hoewel de DD500 geen afzonderlijke tracks kan wissen, heb ik dit alleen toegevoegd als een codeeroefening om te zien of ik het zou kunnen laten werken.
Er lijkt een probleem te zijn met het uploaden van bestanden naar Instructables, en daarom heb ik in plaats daarvan een kopie van de code op Pastebin gezet op:https://pastebin.com/XBSXHut2
In de code zijn 2 bibliotheken gebruikt:
LiquidCrystal_I2C
FortySevenEffects MIDI-bibliotheek
Stap 12: Conclusie
Een van de grootste dingen die ik van dit project meeneem, is dat door zo veel mogelijk van tevoren te plannen, potentiële problemen kunnen worden voorkomen. De problemen met mijn PCB-montage benadrukken het belang hiervan. Het bijhouden van goede aantekeningen is ook iets wat ik ten zeerste aanbeveel. Zonder hen was ik misschien meer problemen tegengekomen dan ik had. Ik ben momenteel mijn tweede MIDI-controller aan het bouwen en deze keer heb ik meer moeite gedaan om mijn code te stroomlijnen en mijn hardware te ontwerpen rond hoe de PCB moet worden gemonteerd.