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

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
misak
Příspěvky: 3
Registrován: 06 dub 2020, 05:37
Reputation: 0

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

Příspěvek od misak » 06 dub 2020, 06:20

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

Uživatelský avatar
gilhad
Příspěvky: 786
Registrován: 07 bře 2018, 11:22
Reputation: 0

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

Příspěvek od gilhad » 06 dub 2020, 08:52

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)

misak
Příspěvky: 3
Registrován: 06 dub 2020, 05:37
Reputation: 0

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

Příspěvek od misak » 06 dub 2020, 09:57

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 :)

Uživatelský avatar
jede_robot
Příspěvky: 53
Registrován: 15 led 2020, 21:18
Reputation: 0

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

Příspěvek od jede_robot » 06 dub 2020, 11:20

jrt
jederobot.cz, robodoupe.cz

misak
Příspěvky: 3
Registrován: 06 dub 2020, 05:37
Reputation: 0

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

Příspěvek od misak » 07 dub 2020, 18:27

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);
}

Uživatelský avatar
kiRRow
Příspěvky: 1164
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

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

Příspěvek od kiRRow » 07 dub 2020, 19:36

Neměly by se ty piny, kde máš koncáky v setupu nastavit jako input ?
Mě se to s oblibou stává :D

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů