DC motor 12V - cyklování
DC motor 12V - cyklování
Ahoj
Jsem tu nový, tak prosím o shovívavost. Zatím jsem tu jen četl. Řeším teď jeden problém ale nenašel jsem, že by se to tady řešilo někdy dříve. Na úvod: Mám zkušenosti pouze s řízením průmyslových 3f motorů, např. pomocí frekvenčního měniče. Tuhle problematiku mám celkem najetou.
Ale nyní chci řešit ovládání malého DC motorku na 12V a zatím tápu. Požadavek na funkci je cyklování. Tedy start - rotace vlevo - stop - rotace vpravo atd… až do vypnutí. Možnosti jsou: přepnout směr otáčení po 3 otáčkách. Nebo přepnout po určitém čase, který odpovídá zhruba třem otáčkám. Cílem je co nejjednodušejší řešení. Zamýšlený motor je s převodovkou, otáčky na výstupu 60rpm. Zbytek si zatím nedovedu představit. Vím, že pro změnu směru se používá H-můstek. A že časové relé můžu použít na řízení spínání - ale spínání si dokážu představit jen v jednom směru.
Jak tedy udělat to cyklování? Pomůže mi prosím někdo najít cestu? Díky moc
Jsem tu nový, tak prosím o shovívavost. Zatím jsem tu jen četl. Řeším teď jeden problém ale nenašel jsem, že by se to tady řešilo někdy dříve. Na úvod: Mám zkušenosti pouze s řízením průmyslových 3f motorů, např. pomocí frekvenčního měniče. Tuhle problematiku mám celkem najetou.
Ale nyní chci řešit ovládání malého DC motorku na 12V a zatím tápu. Požadavek na funkci je cyklování. Tedy start - rotace vlevo - stop - rotace vpravo atd… až do vypnutí. Možnosti jsou: přepnout směr otáčení po 3 otáčkách. Nebo přepnout po určitém čase, který odpovídá zhruba třem otáčkám. Cílem je co nejjednodušejší řešení. Zamýšlený motor je s převodovkou, otáčky na výstupu 60rpm. Zbytek si zatím nedovedu představit. Vím, že pro změnu směru se používá H-můstek. A že časové relé můžu použít na řízení spínání - ale spínání si dokážu představit jen v jednom směru.
Jak tedy udělat to cyklování? Pomůže mi prosím někdo najít cestu? Díky moc
Re: DC motor 12V - cyklování
Předně čím budete motorek ovládat a jaký má proudový odběr pro případ použití H-můstku, pro změnu směru otáčení po třech otáčkách budete potřebovat snímač otáček (je možné použít HALL senzor v tomto případě spínací, než použití lineárního HALL senzoru, optický snímač) který po dosažení počtu otáček vypne napájení pro jeden směr a po určité době zapne motor pro opačné otáčení. Změnu otáček je možné provést pomocí H-můstku nebo pomocí relátek které jdou ovládat jak elektronikou nebo ručně. V případě časového ovládání jak píšete je možné použít časové relé o kterém píšete a to bude pak ovládat například relátka na přepínání směru otáčení motorku dokud se nevypne napájení, v tom případě není potřeba žádný mikrokontrolér stejné zapojení na změnu otáček DC motorku mám na webu kde takto ovládám DC motorek použitý ve stavebnici MERKUR.
Re: DC motor 12V - cyklování
Děkuji vám za odpověď.
Motor bude použit tento :
https://www.conrad.cz/cs/p/motor-s-prev ... 27560.html
Je to obyčejný DC motor bez enkodéru, musel bych tedy použít zmíněnou Hallovku. Kvůli rozměrům bych se tomu rád vyhnul.
Takže bych šel cestou časového relé. Takže použiji časové relé, které bude ovládat další relé, která budou měnit smysl otáčení DC motoru, je to tak? Můžu použít například tohle relé?
https://pest.cz/produkt/casove-rele-pan ... -999s-m-h/
Motor bude použit tento :
https://www.conrad.cz/cs/p/motor-s-prev ... 27560.html
Je to obyčejný DC motor bez enkodéru, musel bych tedy použít zmíněnou Hallovku. Kvůli rozměrům bych se tomu rád vyhnul.
Takže bych šel cestou časového relé. Takže použiji časové relé, které bude ovládat další relé, která budou měnit smysl otáčení DC motoru, je to tak? Můžu použít například tohle relé?
https://pest.cz/produkt/casove-rele-pan ... -999s-m-h/
Re: DC motor 12V - cyklování
Použité časové relé na které jste dal odkaz je možné použít, tak jak jste napsal a jim pak ovládat relátka pro změnu směru otáčení, je to to nejjednodušší zapojení.
Re: DC motor 12V - cyklování
Teď už je mi to jasné. Musím si jen rozvhrhnout rozmístění komponent, aby se do omezeného prostoru vše vešlo.
Pokud ne, našel jsem jako alternativu tohle dvoukanálové časové relé. Z návodu jsem pochopil, že funkce F-11 se dá naprogramovat do nekonečné smyčky, kde čas T1 ovládá motor dopředu, čas T2 může být pauza a čas T3 je obrácený chod. Objednám to a pak poreferuji, jak dobře to funguje.
https://eletechsup.com/products/dc-5-24 ... arage-door
Velké díky za nasměrování na dobrou cestu a pomoc!
Pokud ne, našel jsem jako alternativu tohle dvoukanálové časové relé. Z návodu jsem pochopil, že funkce F-11 se dá naprogramovat do nekonečné smyčky, kde čas T1 ovládá motor dopředu, čas T2 může být pauza a čas T3 je obrácený chod. Objednám to a pak poreferuji, jak dobře to funguje.
https://eletechsup.com/products/dc-5-24 ... arage-door
Velké díky za nasměrování na dobrou cestu a pomoc!
Re: DC motor 12V - cyklování
Nejjednodušší řešení: Arduino + L298N H-můstek
Budete potřebovat:
Arduino Uno (nebo nano)
Arduino bude řídit H-můstek a spínat směry podle času. Kód je velmi jednoduchý:
Výpočet času pro 3 otáčky:
Součástky:
1. Arduino Uno/Nano
2. L298N H-můstek
3. Rotační enkodér - Hall sensor enkodér (magnetický) na výstupní hřídeli převodovky
Nejjednodušší a nejlevnější encodér:
1. Hall sensor modul A3144 (~20 Kč na LaskaKit)
2. Malý neodymový magnet (~10 Kč)
3. Magnet nalepíte na výstupní část převodovky
4. Hall sensor detekuje při každém průchodu = 1 impuls/otáčku
Pro 3 otáčky = 3 impulsy - super jednoduché!
Enkodér generuje impulzy při otáčení. Například:

Kód s enkodérem:
Budete potřebovat:
Arduino Uno (nebo nano)
- L298N H-můstek modul (~50 Kč)
- Zdroj 12V
- Pár vodičů
Arduino bude řídit H-můstek a spínat směry podle času. Kód je velmi jednoduchý:
Kód: Vybrat vše
// Definice pinů
int IN1 = 8;
int IN2 = 9;
int ENA = 10;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
}
void loop() {
// Rotace vlevo
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 255); // plná rychlost
delay(3000); // 3 sekundy = cca 3 otáčky při 60rpm
// Stop
digitalWrite(ENA, LOW);
delay(500); // pauza
// Rotace vpravo
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 255);
delay(3000);
// Stop
digitalWrite(ENA, LOW);
delay(500);
}- 60 RPM = 1 otáčka za sekundu
- 3 otáčky = 3 sekundy
Součástky:
1. Arduino Uno/Nano
2. L298N H-můstek
3. Rotační enkodér - Hall sensor enkodér (magnetický) na výstupní hřídeli převodovky
Nejjednodušší a nejlevnější encodér:
1. Hall sensor modul A3144 (~20 Kč na LaskaKit)
2. Malý neodymový magnet (~10 Kč)
3. Magnet nalepíte na výstupní část převodovky
4. Hall sensor detekuje při každém průchodu = 1 impuls/otáčku
Pro 3 otáčky = 3 impulsy - super jednoduché!
Enkodér generuje impulzy při otáčení. Například:
- Enkodér s 20 impulzy/otáčka
- Pro 3 otáčky = 60 impulsů

Kód s enkodérem:
Kód: Vybrat vše
// Definice pinů pro H-můstek
int IN1 = 8;
int IN2 = 9;
int ENA = 10;
// Definice pinů pro enkodér
int encoderPinA = 2; // interrupt pin
int encoderPinB = 3; // interrupt pin (pro směr)
// Proměnné
volatile long pulseCount = 0;
int pulsesPerRevolution = 20; // závisí na vašem enkodéru
int targetRevolutions = 3;
int targetPulses = targetRevolutions * pulsesPerRevolution;
bool motorDirection = true; // true = vlevo, false = vpravo
void setup() {
// Nastavení pinů H-můstku
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
// Nastavení enkodéru
pinMode(encoderPinA, INPUT_PULLUP);
pinMode(encoderPinB, INPUT_PULLUP);
// Přerušení pro čtení enkodéru
attachInterrupt(digitalPinToInterrupt(encoderPinA), countPulse, RISING);
Serial.begin(9600); // pro ladění
}
void loop() {
// Reset počítadla
pulseCount = 0;
if (motorDirection) {
// Rotace vlevo
Serial.println("Rotace vlevo - start");
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 200); // můžete upravit rychlost (0-255)
// Čekání na dokončení 3 otáček
while (abs(pulseCount) < targetPulses) {
// Motor běží, Arduino čeká na impulzy
delay(10);
}
} else {
// Rotace vpravo
Serial.println("Rotace vpravo - start");
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 200);
// Čekání na dokončení 3 otáček
while (abs(pulseCount) < targetPulses) {
delay(10);
}
}
// Stop motoru
digitalWrite(ENA, LOW);
Serial.print("Dokonceno. Impulzy: ");
Serial.println(pulseCount);
// Pauza mezi cykly
delay(500);
// Změna směru pro další cyklus
motorDirection = !motorDirection;
}
// Funkce pro přerušení - počítání impulsů
void countPulse() {
// Jednoduchá verze - jen počítání
pulseCount++;
// Pro detekci směru (s B kanálem):
// if (digitalRead(encoderPinB) == HIGH) {
// pulseCount++;
// } else {
// pulseCount--;
// }
}Re: DC motor 12V - cyklování
Návrhnout ovládání Arduino jde také, v dotazu jsem se ptal co použije na ovládání tazatel na volbu ovládání zvolil co by chtěl použít a co mu vyhovuje, tak že jsem mu ani tuto možnost ovládání pomocí H-můstku nenavrhoval. Jinak také využívám na ovládání el.motorků H-můstky hlavně u autíček a dalších viz web.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host