Witam , proszę o pomoc w opracowaniu sterownika silnika krokowego do następującej czynności:
Powinien reagować na prosty sygnał typu podanie napięcia lub zwarcie wejścia sterującego.
- mam do dyspozycji wyjścia typu otwarty kolektor.
po otrzymaniu sygnału" start "
silnik krokowy ma zrobić np. 30 kroków i się zatrzymać
po ustaniu sygnału sterującego silnik ma wrócić 30 kroków do pozycji wyjściowej.
wymagania niewielkie ale gotowych rozwiązań nie widziałem
kąt obrotu silnika około 30 stopni nie wymagana precyzja większa niż 5 stopni
prędkość obrotu 30 stopni ok 0,05 sek
W pozycji wyjściowej silnik musi być zasilany - wymagany moment trzymający
w pozycji po obrocie 30 stopni - moment trzymający nie jest wymagany
obciążenie silnika - minimalne
będę bardzo wdzięczny za sugestie w tym temacie - możliwe zlecenie wykonania takich modułów
pozdrawiam
Andrzej - 790 770 020
Proste Sterowanie silnikiem krokowym bez komputera
-
- Moderator
-
Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 4450
- Rejestracja: 13 wrz 2008, 22:40
- Lokalizacja: PL,OP
Re: Proste Sterowanie silnikiem krokowym bez komputera
Arduino podpięte do normalnego sterownika silnika krokowego - 4 przewody.
Zasilacz do silnika i zasilacz Arduino.
Mniej więcej coś takiego:
ale bez tak dużej ilości kabli.
Zaprogramowanie tego jest bardzo proste.
Mogę jutro osobiście zaprezentować wraz z ekipą młodych osób.
[ Dodano: 2012-04-13, 21:29 ]
Serdecznie dziękuję, za dwukierunkową możliwość podzielenia się wiedzą.
To było dla młodych ludzi bardzo wartościowe spotkanie, podczas którego mogli się przekonać, że warto robić coś wyjątkowego, łącząc tak wiele różnych umiejętności z wielu dziedzin.
Zasilacz do silnika i zasilacz Arduino.
Mniej więcej coś takiego:
ale bez tak dużej ilości kabli.
Zaprogramowanie tego jest bardzo proste.
Mogę jutro osobiście zaprezentować wraz z ekipą młodych osób.
[ Dodano: 2012-04-13, 21:29 ]
Serdecznie dziękuję, za dwukierunkową możliwość podzielenia się wiedzą.
To było dla młodych ludzi bardzo wartościowe spotkanie, podczas którego mogli się przekonać, że warto robić coś wyjątkowego, łącząc tak wiele różnych umiejętności z wielu dziedzin.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
-
- Moderator
-
Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 4450
- Rejestracja: 13 wrz 2008, 22:40
- Lokalizacja: PL,OP
Re: Proste Sterowanie silnikiem krokowym bez komputera
Do sposobów sterowania silnikiem bez komputera mogę dodać esp8266 i arduino - właśnie kręcę dwoma silnikami z jednego ESP-12.
Przy arduino i accelstepper uzyskuje się impulsy do około 4kHz.
Na ESP-12 mam max 17kHz gdy drugim silnikiem kręcę wolno.
Przy szybkiej pracy dwoma silnikami max użytkowa częstotliwość impulsów to 10kHz.
Reklama: 13,90zł za moduł esp-12e plus do tego konwerter poziomów logicznych za 3,90zł.
Przy arduino i accelstepper uzyskuje się impulsy do około 4kHz.
Na ESP-12 mam max 17kHz gdy drugim silnikiem kręcę wolno.
Przy szybkiej pracy dwoma silnikami max użytkowa częstotliwość impulsów to 10kHz.
Reklama: 13,90zł za moduł esp-12e plus do tego konwerter poziomów logicznych za 3,90zł.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
-
- Lider FORUM (min. 2000)
- Posty w temacie: 1
- Posty: 3962
- Rejestracja: 18 wrz 2004, 12:51
- Lokalizacja: k/w-wy
- Kontakt:
Re: Proste Sterowanie silnikiem krokowym bez komputera
moduł ESP wygląda super - dzięki Pitsa
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm
-
- Moderator
-
Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 4450
- Rejestracja: 13 wrz 2008, 22:40
- Lokalizacja: PL,OP
Re: Proste Sterowanie silnikiem krokowym bez komputera
Prosty kod do sterowania jedną osią i jazdy do dwóch punktów.
Sterowanie: dwa oddzielne przyciski nakazujące ruch.
Sterowanie: dwa oddzielne przyciski nakazujące ruch.
Kod: Zaznacz cały
#include <AccelStepper.h>
// pobierz i wgraj do libraries stąd:
// http://www.open.com.au/mikem/arduino/AccelStepper/
// pin 7 zwarty do zera ruch w jedną stronę
// pin 8 zwarty do zera ruch w drugą stronę
// po 10 sekundach wyłączany silnik krokowy
AccelStepper osX(1, 13, 11); // pin 13 - STEP, pin 11 - DIR
long goX = 200; // zdefiniowana liczba kroków do wykonania.
boolean lewo = false;
boolean bylo = false;
unsigned long czasn; // w zmiennej czas będziemy przekazywać aktualną wartość millis()
// do ustalania czas od ostatniego zadanego ruchu
void setup() {
pinMode(7, INPUT);
pinMode(8, INPUT);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
pinMode(13, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(5,LOW);
osX.setMaxSpeed(4300.0); //
osX.setSpeed(4300.0);
osX.setAcceleration(4000.0); //
// na starcie sterownika jedzie silnik w jedną stronę do pozycji na zderzak mechaniczny.
// później ruch będzie odmierzany od tego zderzaka
for ( int i=0 ; i < 360 ; i++ ) {
osX.runToNewPosition(osX.currentPosition()-1);
osX.run();
delay(2);
}
// zamiast zderzaka można pozycjonować krańcówką
// przykład tutaj: https://www.cnc.info.pl/maszyna-do-punktowania-rur-t94055-40.html#p655149
czasn = millis();
}
void loop(){
// to jest glowne polecenie ruchu - ma być w loop uruchamiane cały czas
// pozostałe rzeczy są na warunkach
osX.run();
// opcja wyłączania silnika na postoju - 10000 = 10 sek i wyłączenie silnika ENA
if ( ( millis() - czasn ) > 10000 ) {
digitalWrite(13, HIGH); // dioda na arduino
digitalWrite(5, HIGH); // sygnał ENA
}
//jeśli sygnał ruchu i pozycja po przeciwnej stronie to można jechać i zmienić pozycję o goX
if ( (digitalRead(7) == LOW ) && ( bylo == false ) ) {
delay(50);
digitalWrite(5, LOW); // obudzenie
delay(50);
if (digitalRead(7) == LOW ) {
osX.runToNewPosition(osX.currentPosition()+goX);
bylo = true ;
czasn = millis();
}
}
// i tu ruch w drugą strone
if ( (digitalRead(8) == LOW ) && ( bylo == true ) ) {
delay(50);
digitalWrite(5, LOW); // obudzenie
delay(50);
if (digitalRead(8) == LOW ) {
osX.runToNewPosition(osX.currentPosition()-goX);
bylo = false ;
czasn = millis();
}
}
}
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ