Drukknoppen Start stop enz

Alle andere vragen over zelfbouw machine`s kunnen hier terecht.

Moderator: Moderators

Plaats reactie
hrscharft
Berichten: 1114
Lid geworden op: 23 apr 2013 14:08
Contacteer:

Drukknoppen Start stop enz

Bericht door hrscharft »

Ben voor mijn nieuwe machine een beetje aan het nadenken over welke knoppen ik fysiek zou willen hebben om dingen te starten en te stoppen.
Zaken als Stofzuiger, koeling/lucht, spindle etc.

nou kun je dit natuurlijk allemaal regelen vanuit de software en de controller maar stel dat ik ze buiten de controller om ook nog zou willen kunnen bedienen.
Ik had het volgende in gedachten, een serie relais die de bovenstaande zaken schakelen en die relais aansturen dmv een Arduino.

Heb in het verleden al wel eens zo'n soort druk aan druk uit bediening gemaakt dat is niet zo'n moeilijke klus.
Maar nou zou ik het zo willen doen dat die arduino ook signalen krijgt vanuit de Controller en dat als die 1 zijn dat er dan ook aan en bij 0 afgeschakeld word daarbij moeten de fysieke knoppen als override blijven dienen.
Dus als de controller zegt aan en ik zeg dmv de knop uit dat dat dan ook gebeurd.

Wellicht denk ik nu wel veel de complex met een microcontroller en zou het ook anders kunnen maar dat zou ik dan graag van jullie horen.

Iig alvast bedankt.
Ik heb alleen Koffie nodig op dagen die eindigen op een G.
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: Drukknoppen Start stop enz

Bericht door hfjbuis »

Laat de arduino alles schakelen. Geef de knoppen en de signalen vanuit de cnc controller een eigen arduino ingang. Met de arduino kan je dan het schakelen uitvoeren zodat de koeling aan gaat als of de knop of de CNC controller die aan wil hebben. Moet de handschakeling alles kunnen overrulen, zowel aan als uit, kies dan voor een 3 standen schakelaar aan/CNC controlled/uit.
Als het maar om een beperkt aantal knoppen gaat, er is ook nog zoiets als een Attiny of als je makkelijk wil bedraden een arduino nano met screwterminator board.
There are only 2 limits, the sky and your imagination
hrscharft
Berichten: 1114
Lid geworden op: 23 apr 2013 14:08
Contacteer:

Re: Drukknoppen Start stop enz

Bericht door hrscharft »

Dank je voor je reactie en mijn denk richting was dus zo gek nog niet :)
Dat was idd ongeveer ook wat ik in gedachten had.

Drukknoppen eigen ingang en de signaaluitgang ook een eigen pin op de arduino.

Zijn er wellicht mensen die mij in de richting van een paar goede programmeer voorbeelden hiervoor kunnen sturen?
Er is voor arduino zo veel te vinden op het WWW dat je over het algemeen moeilijk vind wat je moet hebben als je niet hele gerichte zoektermen gebruikt.
Ik heb alleen Koffie nodig op dagen die eindigen op een G.
hfjbuis
Donateur
Berichten: 3058
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: Drukknoppen Start stop enz

Bericht door hfjbuis »

Dat is allemaal niet zo spannend, je moet alleen het bouncen van de schakelaars opvangen opdat ze netjes schakelen en niet bij een stoorpuls onterecht gaat schakelen. Bij de arduino zit een DEBOUNCE libray (die moet je wel eerst activeren/installeren) die je daar voor kunt gebruiken.

Hieronder een stukje aangepaste code uit een van mijn bibliotheken.
initialisatie van de buttons: SetupButtonsAndSwitches()
controleren of de button gewijziged is sinds de laatste aanroep: ServiceButton()

Kijk maar hoever je er mee komt en over deze bounce library is op internet wel meer te vinden. Er zit bij de bounce libray ook een voorbeeld dat je opweg kan helpen!


#ifndef Buttons_h
#define Buttons_h

#define DebounceTime 50
#define Button1Pin 8
#include <Bounce2.h> //Install Bounce2 using the library manager, search for Bounce2

Bounce Button1 = Bounce();

void SetupBounce(Bounce* IO, unsigned int Pin)
{
IO->attach(Pin, INPUT_PULLUP);
IO->interval(DebounceTime); // interval in ms
}

void SetupButtonsAndSwitches()
{
// Attach the Debounce button to the pin and set input as pullup
SetupBounce(&Button1, Button1Pin);
}

bool ServiceButton( Bounce* Button)
{
Button->update();
if (Button->fell() == false) return false;
return true;
}

#endif
Plaats reactie