Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Custom Arduino HID CNC Pendant: DIY Goedkope Besturing

Componenten en Benodigdheden

Arduino Leonardo (belangrijk: moet 32u4 chip hebben voor HID) × 1
Momentane Drukknoppen (met ingebouwde LED en labels mogelijk) × 23

Over dit Project

Laatste update: 2018-07-31 (CAD bestanden toegevoegd), 2018-07-24 (schema en programmeren toegevoegd).

Waarom Dit Project?

Je kunt een pendant kopen voor je CNC machine, maar ik bouwde mijn eigen houten CNC machine, dus waarom niet mijn eigen pendant maken? Een standaard pendant voor mijn controllerboard kost €100 en heeft maar 2 knoppen en een handwiel. Mijn pendant heeft 23 knoppen met tot 6 functies per knop én een handwiel.

Een opmerking zou kunnen zijn: "het is groot en zwaar!" Maar in de praktijk blijkt het juist handig dat het pendant stil blijft liggen wanneer je het handwiel draait.

Hoe Werkt Het?

De schoonheid van de Arduino met 32u4 chip (Leonardo, Micro) is de mogelijkheid om een toetsenbord en/of muis te emuleren. Wanneer je de Leonardo aan een PC koppelt, ziet deze een toetsenbord. Geweldig!

Door de Arduino te programmeren, schakelaars toe te voegen en te verbinden met een PC/Mac, kun je (meerdere) toetsaanslagen/muismovements sturen door op een knop te drukken. 23 knoppen × 6 functies = veel opties.

Alles hangt af van de juiste bibliotheek: ClickButton. Deze bibliotheek geeft per (momentane!) knop:

  • Enkelklik
  • Dubbelklik
  • Drievoudige klik
  • Enkelklik en vasthouden
  • Dubbelklik en vasthouden
  • Drievoudige klik en vasthouden

Ook zit debounce functionaliteit in de bibliotheek. Standaard timing: ≥250ms voor klikherkenning, ≥1000ms voor 'vasthouden'.

Voorbeeld: X-as Knop (Key 13)

if (button[13].clicks != 0) {
  switch (button[13].clicks) {
    case 1:   // Enkelklik → Handwiel op X-as
      shortcut_HANDWHEEL_X(); break;
    case 2:   // Dubbelklik → Nul X-as
      shortcut_ZERO_X(); break;
    case 3:   // Drievoudige klik
      break;
    case -1:  // Enkelklik + vasthouden → Macro 18: X naar werk-nul
      press_ESC(); goto_MAIN_MENU(); user_MACRO_18(); break;
    case -2:  // Dubbelklik + vasthouden
      break;
    case -3:  // Drievoudige klik + vasthouden
      break;
  }
}

De Behuizing

Ik koos voor mahonie hout. Ik werk graag met hout en het uiterlijk/gevoel is geweldig. Ook kon ik een echte custom behuizing maken, wat niet mogelijk is met een standaard ABS doosje (€20-50).

Tekening gemaakt met Vectric Cut2D software. Na schuren veel lagen helder lak.

De Schakelaars

Momentane drukknoppen (behalve de LED aan/uit schakelaar). Je kunt een label achter het transparante kapje zetten en ze verlichten met de ingebouwde LED. Ik gebruikte 1kΩ weerstand per schakelaar (2mA bij 5V).

Nadeel: ze vereisen een dikke behuizing (hout 21mm dik voor boven en onder, totaal 36,5mm na bewerking).

Aansluiten is simpel: gebruik Arduino interne pull-up weerstanden. Één kant van alle schakelaars naar GND, andere kant naar Arduino inputs.

De Labels

Hoogwaardige Poly-Vinyl stickers voor kleurenlaserprinter (ook voor inkjet). Gewoon papier werkt niet goed (structuur zichtbaar bij verlichting). Labels onder de transparante knopkapjes geplakt.

Iconen zijn afkomstig uit de Eding CNC software (bij hardware geleverd). Ik kopieerde de JPEG iconen en passte enkele aan.

Het Handwiel

Standaard 60mm 100PPR 6-terminals elektronisch CNC handwiel. 100 pulsen per rotatie, in de meeste CNC software instelbaar.

De Elektronica

Arduino Leonardo als HID (Human Interface Device). De Leonardo is gediscontinueerd maar nog verkrijgbaar. Alternatief: Arduino Micro (ook 32u4 chip).

De Leonardo heeft 23 input pinnen → voldoende. 6 functies per knop toewijsbaar. Totale stroomverbruik: 150mA met knop-LEDs aan.

Programmeren

Laat de pendant aangesloten op de CNC voeding en upload de sketch via Arduino IDE (dezelfde USB poort die voor HID gebruikt wordt). Wil je op een andere PC/laptop programmeren? Steek de USB in die PC, laat de pendant aangesloten op de CNC voeding, en programmeer.

Code

CNC Pendant Code (Arduino)

De code gebruikt de ClickButton bibliotheek en Keyboard.h voor HID functionaliteit. Hier een afkorting van de kernstructuur:

#include "ClickButton.h"
#include "Keyboard.h"

const int buttons = 20; // 20 daadwerkelijke knoppen (pin 0 is dummy)
// Pin definities: buttonPin1 t/m buttonPin20 (digitale + analoge pinnen)
ClickButton button[21] = { ... }; // Array met ClickButton instanties

void setup() {
  for (int i = 1; i <= buttons; i++) {
    button[i].debounceTime = 20;
    button[i].multiclickTime = 250;
    button[i].longClickTime = 1000;
  }
}

void loop() {
  for (int i = 1; i <= buttons; i++) button[i].Update();
  
  // Voor elke knop: check button[i].clicks en voer acties uit via switch-case
  // Voorbeelden:
  // button[1]: Reset (F1), ESC, Drivers uit (Alt+F7, F2)
  // button[2]: Hoofdmenu (ESC, Alt+F1)
  // button[3]: Home alle assen (Ctrl+H)
  // button[4]: Toggle MDI (Ctrl+F6)
  // button[5]: Z-hoogte instellen (Alt+F4, Alt+1)
  // button[13]: X-as handwiel/nul/macro (Ctrl+Shift+X, Ctrl+1, Alt+F1, Alt+18)
  // button[14]: Y-as handwiel/nul/macro
  // button[15]: Z-as handwiel/nul/macro
  // button[17-19]: Handwiel snelheid 1x, 10x, 100x (Ctrl+N, Ctrl+O, Ctrl+P)
  // button[20]: Toggle machine/werk coördinaten (Ctrl+W)
  // ... plus helper functies voor Keyboard.press/release combinaties
}

// Helper functies: press_RESET(), press_ESC(), press_F1()...press_F12(),
// goto_MAIN_MENU() (Alt+F1), goto_AUTO_MENU() (Alt+F4), etc.,
// shortcut_ZERO_X() (Ctrl+1), shortcut_HANDWHEEL_X() (Ctrl+Shift+X), etc.,
// user_MACRO_1() t/m user_MACRO_20() (Alt+1 t/m Alt+20)

Let op: De volledige code is te lang om hier volledig weer te geven. Download het volledige bestand via de projectpagina.

CAD Bestanden

  • ClickButton bibliotheek (essentieel voor multi-functie knoppen)
  • CNC Pendant ontwerpbestanden (Vectric Cut2D)

Schema

Eenvoudig schema: alle schakelaars tussen GND en Arduino pinnen (interne pull-up actief). Handwiel aansluiting volgens datasheet.

Productieproces

  1. De Knop: Van Oude Sluiting tot Moderne Innovatie
  2. LED helderheid regelen met PWM via drukknop op Arduino Mega
  3. Bluetooth-gecontroleerde Arduino Spybot bouwen
  4. FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
  5. DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
  6. Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
  7. Find Me: Slimme Item Locator met Arduino en Bluetooth
  8. Maak een Aangepaste 'Punchable' Toetsenbordknop met Arduino: Stap-voor-Stap Handleiding
  9. Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
  10. De Reset-knop op een CNC-operatorpaneel begrijpen: Functie en Gebruik
  11. Osai USA's OPENwiTP: Draadloze Teach Pendant voor Efficiënte CNC-Besturing