Stránka 1 z 1

Přepínání DC motoru. Prosím o radu kodu

Napsal: 06 dub 2020, 06:20
od misak
Zdravím, budu vyrábět lineární pohon. (Řádkování drátu na cívce)
Chci ovládat směr otáčení doleva, doprava jedním tlačítkem.

Když se spínač sepne, vypnout motor na 500 ms> (změnit směr). Dále bude spínač stále sepnutý po dobu cca 3 sekund (kuly koncovému spínači, pohon už se bude pohybovat opačným směrem)


Dc motorek budou ovládat 2 relé timto zpusobem

př:

void extendActuator() {
digitalWrite(pinRelay1, HIGH);
digitalWrite(pinRelay2, LOW);
}

void retractActuator() {
digitalWrite(pinRelay1, LOW);
digitalWrite(pinRelay2, HIGH);
}

void stopActuator() {
digitalWrite(pinRelay1, LOW);
digitalWrite(pinRelay2, LOW);
}

Použito bude arduino uno. můžete identifikovat kolíky sami.
Relé bude použito : https://arduino-shop.cz/arduino/834-ard ... analy.html

Jsem začátečník, budu moc rád když mi poradíte jak bude vypadat celý kod.



Děkujeme za vaše komentáře

Re: Přepínání DC motoru. Prosím o radu kodu

Napsal: 06 dub 2020, 08:52
od gilhad
Podivej se, jak je tu reseny debouncing pro tlacitko (to je tu oblibeny hit), hned pri stisknuti provedes zmenu smeru a debouncing das ty 3 sec.

(Stejne by bylo lepsi mit tam ty koncaky dva, pro kazdy smer jeden. Kdyz se ti to zastavi v krajni poloze tesne za uvrati, tak to po re/startu nenaboura do zdi, stejne potrebujes nejaky dalsi vypinac pro ukonceni a pak si pri spusteni/po zastaveni a vymyne civky budes moct vybrat, kterym smerem zacit motat tim, ze tomu cvrnkne do spravneho koncaku)

Re: Přepínání DC motoru. Prosím o radu kodu

Napsal: 06 dub 2020, 09:57
od misak
Aha, taky sem si říkal, ale stale tomu nějak nerozumím...

Tak klidně i ty 2 tlačítka a start, stop.

kdyby jste poslal nejaky ten kod bylo by to super :)

Re: Přepínání DC motoru. Prosím o radu kodu

Napsal: 06 dub 2020, 11:20
od jede_robot

Re: Přepínání DC motoru. Prosím o radu kodu

Napsal: 07 dub 2020, 18:27
od misak
Moc díky, tak sem se pohnul. Použil kod, nahrál knihovnu ,,Bounce2,, ale stále mi nefungují ty koncáky asi bude nějaká chyba v kodu. Nekdo tam přidával v komentářích opravu, ale asi to nedokážu správně dosadit do kodu, aby to fungovalo :(
Je tu někdo kdo by to nějak skloubil poopravil a poslal kod ? :)

Ps: omlouvam se že sem takový neználek ještě

tady je ten neuplný kod

Kód: Vybrat vše

// Detect the falling edge

// Include the Bounce2 library found here :
// https://github.com/thomasfredericks/Bounce2

#include <Bounce2.h>

const int motorbutton = 7;
const int switchp = 5;
const int switchc = 3;


// Instantiate a Bounce object :
Bounce debouncer = Bounce();

void setup() {
 
  Serial.begin(9600);
 
  // Setup the button with an internal pull-up :
  pinMode(motorbutton,INPUT_PULLUP);
 
  // After setting up the button, setup the Bounce instance :
  debouncer.attach(motorbutton);
  debouncer.interval(500);
 
  pinMode(10, OUTPUT);     
  pinMode(11, OUTPUT);
}

void loop() {

  // Update the Bounce instance :
   debouncer.update();
   
   // Call code if Bounce fell (transition from HIGH to LOW) :
   if ( debouncer.fell() ) {
     Serial.println("Motor Button just pressed");
     
      if (digitalRead(switchp)) //if this is not the intended direction for 'swichp' change to 'switchc'
        motorclockwise();
      else
        motoranticlockwise();
      delay(100);
   }
   
   //stop motor is reached limit
   if(digitalRead(switchp)|digitalRead(switchc)){
       digitalWrite(10, LOW);
       digitalWrite(11, LOW);
  }
}

void motorclockwise() {
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
}

void motoranticlockwise() {
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
}

Re: Přepínání DC motoru. Prosím o radu kodu

Napsal: 07 dub 2020, 19:36
od kiRRow
Neměly by se ty piny, kde máš koncáky v setupu nastavit jako input ?
Mě se to s oblibou stává :D