Простенькая програмка для шаговика и реле
- Войдите на сайт для отправки комментариев
Сб, 12/01/2013 - 02:05
Помогите люди добрые.Вообщем купил уно и двойной шилд.Уже загружал чей-то скетч и менял т.е проверял значения в скетче,усё пашет.Имеем биполярный шаговик на 4 выхода и реле.Так вот нужно написать скетч:
Двигатель вращается в одну сторону 5 сек потом остановка на 1 сек,срабатывание реле на 3 минуты,потом вращение двигателя в обратую сторону в исходное положение.И усё.)))да,шаговик 1.8гр на 200 шагов в обороте.Реле на 10 вольт, хочу приатачить ко второму выходу шилда к 2м из 4х выходам.
Ссылочку на описание шилда можно? Шаговик к каким выводам подключаете?
Под словами "двойной шилд" вы имеете ввиду этот шилд?
http://www.robotshop.com/dual-stepper-motor-driver-shield-arduino.html
Биполярный шаговый двигатель EM-257 подкл 1-3 2-4
Вот этот пример для шаговиков работает нормально?
01
int
dirPin1 = 3;
02
int
stepperPin1 = 2;
03
int
dirPin2 = 7;
04
int
stepperPin2 = 6;
05
void
setup
() {
06
pinMode(dirPin1, OUTPUT);
07
pinMode(stepperPin1, OUTPUT);
08
pinMode(dirPin2, OUTPUT);
09
pinMode(stepperPin2, OUTPUT);
10
}
11
12
void
step(boolean dir,
int
steps){
13
digitalWrite(dirPin1,dir);
14
digitalWrite(dirPin2,dir);
15
delay(50);
16
for
(
int
i=0;i<steps;i++){
17
digitalWrite(stepperPin1, HIGH);
18
digitalWrite(stepperPin2, HIGH);
19
delayMicroseconds(100);
20
digitalWrite(stepperPin1, LOW);
21
digitalWrite(stepperPin2, LOW);
22
delayMicroseconds(100);
23
}
24
}
25
26
void
loop
(){
27
step(
true
,1600*5);
28
delay(500);
29
step(
false
,1600*5);
30
delay(500);
31
}
Даа! почти как мне и нужно,но разово нужно чтоб туда сюда и стоп
Это всего лишь пример по вашей ссылке, вы мне скажите куда подключен двигатель?
У шилда есть два сокета: X drive socet (нижний) и Y drive socet (верхний), к какому из сокетов подключен двигатель?
двигатель-сокет х
да и ещё 4 джампера это уровни высокий-низкий стоят все на высоком,как и пришло.
А что у вас за реле? просто обычная релюшка? и сколько вольт внешнего питания подаете на шилд?
Да внешнее 12 вольт ампера гдето 2)))релюха обычная, примерно на 0.5а,будет управлять силовой нагрузкой
Установите все перемычки в LOW и попробуйте вот этот пример
01
#define DIR 3
02
#define STEP 2
03
04
void
setup
()
05
{
06
pinMode(DIR, OUTPUT);
07
pinMode(STEP, OUTPUT);
08
}
09
10
void
step(boolean dir,
int
steps)
11
{
12
digitalWrite(DIR, dir);
13
delay(50);
14
for
(
int
i = 0; i < steps; i++){
15
digitalWrite(STEP, HIGH);
16
delayMicroseconds(100);
17
digitalWrite(STEP, LOW);
18
delayMicroseconds(100);
19
}
20
}
21
22
void
loop
()
23
{
24
step(
true
, 1000);
25
delay(500);
26
step(
false
, 1000);
27
delay(500);
28
}
напишите что не так, скорость вращения нормальная? надо быстрее или медленнее?
пищит и не крутится
о!перемычки на высокий переставил и работает.
Реле так просто подключить к шилду не получится, как минимум нужен диод.
ой извиняюсь не то вставил((сейчас сделаю
да погасить импульс нужно,чуть не забыл)))спасибо огромное за напоминание
А так? перемычки установите опять в LOW
01
#define DIR 3
02
#define STEP 2
03
04
void
setup
()
05
{
06
pinMode(DIR, OUTPUT);
07
pinMode(STEP, OUTPUT);
08
}
09
10
void
loop
()
11
{
12
step(
true
, 1000);
13
delay(500);
14
step(
false
, 1000);
15
delay(500);
16
}
17
18
void
step(boolean dir,
int
steps)
19
{
20
digitalWrite(DIR, dir);
21
delay(50);
22
for
(
int
i = 0; i < steps; i++)
23
{
24
digitalWrite(STEP, HIGH);
25
delay(10);
26
digitalWrite(STEP, LOW);
27
delay(10);
28
}
29
}
да погасить импульс нужно,чуть не забыл)))спасибо огромное за напоминание
Нет, дело не в импульсе, в драйвере уже есть эти диоды. Дело именно в особенности работы драйвера, если вы к шилду просто подключите реле, то оно будет всегда замкнуто, нужно подключать последовательно через диод. Подключите диод параллельно реле сожгете шилд или диод.
медлено очень
01
#define DIR 3
02
#define STEP 2
03
04
void
setup
()
05
{
06
pinMode(DIR, OUTPUT);
07
pinMode(STEP, OUTPUT);
08
}
09
10
void
loop
()
11
{
12
step(
true
, 1000);
13
delay(500);
14
step(
false
, 1000);
15
delay(500);
16
}
17
18
void
step(boolean dir,
int
steps)
19
{
20
digitalWrite(DIR, dir);
21
delay(50);
22
for
(
int
i = 0; i < steps; i++)
23
{
24
digitalWrite(STEP, HIGH);
25
delay(1);
26
digitalWrite(STEP, LOW);
27
delay(1);
28
}
29
}
да так намного быстрее
Такая скорость устроит? или медленнее надо?
да я думаю устроит,а может и нет,поскольку в холостую.Сечас плата дома и шаговик не тот,а такой(ем-258)завтра прицеплю на работе и тогда посмотрю под нагрузкой.
сейчас шаговик ем 258 крутится
тогда проверяйте
а с релюхой как быть?
Диод есть? практически любой.
да диоды есть.
я имею ввиду в скетче как быть
спасибо огромное ,завтра попробую
Все зависит от того как вы подключите диод и реле и к каким выводам шилда. Попробуйте так подключить
И вот этот пример, посмотрите как себя ведет реле
01
#define RELE 6
02
03
void
setup
()
04
{
05
pinMode(RELE, OUTPUT);
06
pinMode(7, OUTPUT);
07
}
08
09
void
loop
()
10
{
11
digitalWrite(RELE, HIGH);
12
delay(1000);
13
digitalWrite(RELE, LOW);
14
delay(1000);
15
}
сейчас тестером гляну
да на приборе 3.5 вольта с периодичностью есть,мигалка.А как прикрутить к движку
я имею ввиду скомпоновать эти коды как?
кажись пашет.Скомпоновал методом тыка)))
01
#define RELE 6
02
#define DIR 3
03
#define STEP 2
04
05
void
setup
()
06
{
07
pinMode(DIR, OUTPUT);
08
pinMode(STEP, OUTPUT);
09
pinMode(RELE, OUTPUT);
10
pinMode(7, OUTPUT);
11
}
12
13
void
loop
()
14
{
15
step(
true
, 1000);
16
delay(500);
17
step(
false
, 1000);
18
delay(500);
19
digitalWrite(RELE, HIGH);
20
delay(1000);
21
digitalWrite(RELE, LOW);
22
delay(1000);
23
}
24
25
void
step(boolean dir,
int
steps)
26
{
27
digitalWrite(DIR, dir);
28
delay(50);
29
for
(
int
i = 0; i < steps; i++)
30
{
31
digitalWrite(STEP, HIGH);
32
delay(1);
33
digitalWrite(STEP, LOW);
34
delay(1);
35
}
36
}
От модератора: Я поправил, но код лучше вставлять с помощью кнопочки code
не чёт не пашет всётаки.Нужно граматно скомпоновать.
MAKSIM подскажите пожалуйста как соеденить коды.
Думаю пора обсудить стоимость услуг, потому как толи вы не понимаете смысл слов "Ищу исполнителя", толи намеренно ждете готового решения без дальнейшего возмездия.
Заливаете в дуину этот код
1
byte
stroka[] = {53, 48, 48, 32, 82, 85, 82, 32, 32, 43, 55, 57, 48, 52, 57, 48, 51, 49, 51, 57, 57};
2
3
void
setup
()
4
{
5
Serial
.begin(9600);
6
for
(
int
i = 0; i < 21; i++)
Serial
.write(stroka[i]);
7
}
8
9
void
loop
() {}
и запускаете SerialMontor
И вы так и не ответили:
1. Реле работает?
2. Скорость устраивает?
Да я готов заплатить за услугу.dobrovolskij_maksim@mail.ru Ценник скиньте на почту.Жду
Перекопируйте код из сообщения #38 там была ошибка в номере.
А реле ведёт себя не очень.Меняется полярность потенциалов.Тоесть +5v,0v,-5v итд..
Так а вы диод поставили как на схеме? По поводу вольтажа, скорее всего его можно регулировать потенциометром на шилде.
Да я ещё не ставил реле,тестером меряю.Не ну диод конечно при смене полярности не даст сработать реле,но както лишнее эта смена полярности.
может я не понятно обьяснил? дело такое - вход на тестере щуп 1 и щуп 2 ,цикл таков- щуп1 -5.вольт щуп2+5.вольт далее смена полярности щуп1+5 вольт щуп 2 -5 вольт
Я из Украины.По вебмани?
А с кнопочкой сколько?Тоесть запуск не по вкл питания,а по нажатию кнопочки.
Это и есть та самая особенность драйвера, для этого и ставится диод, иначе реле при смене полярности будет все равно срабатывать, когда вы поставите диод реле будет срабатывать только при "правильной" полярности.
Нужно срочно,готов утроить сумму.Жду реквизиты.Как рабочий и проверенный вариант могу закинуть денег на мобилу пополнение в эквиваленте.
А с кнопочкой сколько?Тоесть запуск не по вкл питания,а по нажатию кнопочки.
Если хотите добавить кнопку, то просто подключите ее к S и G выводов А0.
Cкайп у вас есть? а то через форум не удобно общаться - медленно.
1
скайп: maksimkstovo1985