roboforum.ru

Технический форум по робототехнике.


arduino DC motor. управление мотором 220 ардуиной.

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: непонятка с трансформаторным БП. фаза на выпрямленный ми

Сообщение avr123.nm.ru » 01 апр 2014, 23:21

А зачем вам плата в proteus?

достаточно микроконтроллер в proteus, сигнал синус с генератора, осциллограф или граф и смотрите как работает ваша программа и почему не работает.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: непонятка с трансформаторным БП. фаза на выпрямленный ми

Сообщение Dmitry__ » 01 апр 2014, 23:38

Myp писал(а):горящий шлейф - питание
мигающий шлейф - мигает при переходе.

Ужос у тебя осцилл :D
Гуглю за тебя:
Читаем "Замечания по использования функции delay"
http://arduino.ru/Reference/Delay
напрягаемся, гуглим дальше, находим что-то очень замечательное (кажись я говори про таймер):
Приведенный ниже код использует таймер1 и внешнее прерывание 0
Число одновременно работающих Dimmer каналов проверенных мной 10шт. использовал для них выходы D4 по D13, можно увеличивать и дальше, но мне лень это было делать потому как больше 10 думаю ни кому не понадобится

http://cyber-place.ru/showthread.php?t=525
И тут что-то может полезное
http://www.arduino.ru/forum/programmiro ... er-na-220v

Добавлено спустя 8 минут 45 секунд:
Re: непонятка с трансформаторным БП. фаза на выпрямленный минус
Как любитель асма для авр, по второй ссылке мне ндравица настройка, очень по асмски, долой дуинство:
Код: Выделить всёРазвернуть
void setup ()
14   {
15     Serial.begin(9600);
16     TIMSK2  &= ~( (1<<OCIE2A) | (1<<OCIE2B) | (1<<TOIE2) );
17     TCCR2A &= ~((1<<WGM21) | (1<<WGM20));// Режим работы таймера/счетчика
18     TCCR2B &= ~(1<<WGM22);// Режим работы таймера/счетчика
19     ASSR &= ~(1<<AS2);  //Выбор источника синхронизации таймера если AS2=0 от системного генератора
20   
21     TCCR2B = (TCCR2B & ~( (1 << CS22) | (1 << CS21) ) ) | (1 << CS20) ;
22     TIMSK2  |= (1<<TOIE2);
23     for (int i=1; i<=13; i++)
24       pinMode(i, OUTPUT);
25     PORTD=PORTD & ~(mpin1 | mpin2 | mpin3 | mpin4);
26   }
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: непонятка с трансформаторным БП. фаза на выпрямленный ми

Сообщение Myp » 02 апр 2014, 00:04


попробовал, работает вот такое:
Код: Выделить всёРазвернуть
#include <CyberLib.h> //Библиотека от Cyber-Place.ru 
volatile uint8_t tic, Dimmer1;
uint8_t data;

void setup() 

  D3_Out;//Настраиваем порты на выход
  D3_Low;//установить на выходах низкий уровень сигнала
  D2_In; //настраиваем порт на вход для отслеживания прохождения сигнала через ноль   
   
//CHANGE – прерывание вызывается при любом изменении значения на входе; 
//RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH) 
//FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low) 
    attachInterrupt(0, detect_up, LOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
    StartTimer1(halfcycle, 40); //время для одного разряда ШИМ
    StopTimer1(); //остановить таймер
   
}
//********************обработчики прерываний*******************************
void halfcycle()  //прерывания таймера

  tic++;  //счетчик   
  if(Dimmer1 < tic ) D3_High; //управляем выходом
  }

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
{   
tic=0;             //обнулить счетчик
ResumeTimer1();   //запустить таймер
attachInterrupt(0, detect_down, HIGH);  //перепрограммировать прерывание на другой обработчик
}   

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{   
StopTimer1(); //остановить таймер
D3_Low;  //логический ноль на выходы
tic=0;       //обнулить счетчик
attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик

//*************************************************************************
void loop() 
{
  Dimmer1=100; //200=мин. 0=макс
}

спать хочу
завтра подумаю в чём собака рылась.

Добавлено спустя 7 минут 50 секунд:
вот к чему приводит увлечение ардуино...
человек деградирует совершенно
таймер с прерыванием уже неподъёмный труд.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: непонятка с трансформаторным БП. фаза на выпрямленный ми

Сообщение Dmitry__ » 02 апр 2014, 00:32

Myp писал(а):попробовал, работает вот такое:

Myp писал(а):спать хочу
завтра подумаю в чём собака рылась.

Ыыыыы, круто, просыпайся, грызем ногти, у меня тоже есть плата пылесоса lg и дуина нано. Может попробую на старости лет :)
Myp писал(а):вот к чему приводит увлечение ардуино...
человек деградирует совершенно
таймер с прерыванием уже неподъёмный труд.

Да, это засада всех языков высокого уровня и всякой инкапсуляции.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: непонятка с трансформаторным БП. фаза на выпрямленный ми

Сообщение Myp » 02 апр 2014, 10:02

с утра всё понятней
у cyber-place сделано более грамотно выключение.
прерывание после каждого срабатывания перенастраивается, и выключение симистора происходит в прерывании
тобишь он гарантированно выключится по заднему фронту.
это уже половина успеха, в других примерах привязывались к частоте сети и время выключения симистора высчитывалось на калькуляторе и использовались делеи.

степень диммирования задаётся в виде цифры до которой должен досчитать таймер после начала фронта прежде чем включить симистор
тоже без делея.

ну и ещё у него используется своя библиотечка супер скоростная
ато ардуина штатно ноги переключает капец как медленно.

наверно остановлюсь на таком варианте
теперь надо прикрутить резистор, чтобы регулировать диммирование крутилкой
и вход энкодера чтобы ограничивать сверху обороты.
а там уже можно будет запустить конструкцию и пощупать наскока сильно греется.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение avr123.nm.ru » 03 апр 2014, 10:26

брезенхем позволит регулировать целыми полуволнами и снизить коммутационные помехи. можно смешаный метод применть.

либо использовать полевики встречновкюченые и перейти на высокочастотный шим.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 03 апр 2014, 11:31

а помехи это плохо? мне они вроде не мешают =)

avr123.nm.ru писал(а):либо использовать полевики встречновкюченые и перейти на высокочастотный шим.
чтобы использовать плату от пылесоса её нужно выбросить и сделать плату самостоятельно ? :D

да и брезенхзема на fрдуине я что-то не нашёл/
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение avr123.nm.ru » 03 апр 2014, 12:01

А сам? Ссылку я давал.

выкинуть плату и сделать свою ИМХО самый правильный варинт :D обычно лучше получается.

и еще дам - https://www.google.ru/search?q=arduino+ ... BC&spell=1
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 03 апр 2014, 16:42

чтоб не потерять скопировал в тырнет
https://codebender.cc/sketch:32958
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Dmitry__ » 03 апр 2014, 17:23

Ваш Брезенхем может работать только на очень инерционную нагрузку, читай - обогреватели. Фазовый регулятор имеет 100 герц управляемости, что не так и много для сервоприводов, а Брезенхем уйдет под 0.5 герц или еще хуже.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 06 апр 2014, 23:56

прикрутил резистор
заодно прикрутил функцию усреднения для АЦП
для красоты в общем-то
код на кодебендере.

на лампочке все хорошо рулится. полюбовался пару минут на жёлтую тлеющую спиральку)

на китайском поганом асинхроннике субъективно поддаётся регулировке минимум до 80%
дальше уже момент падает вообще в ноль, на половине регулировке не хватает сил чтобы тронуться.
тоесть к сверлилке например применять без энкодера смысла ноль.

щас гуглю как прикрутить туда энкодер.
как-то опять не гуглиццо ничего хорошего.
самому думать конечно лень =)

Добавлено спустя 11 минут 6 секунд:
так как реверс я делать не собираюсь, то по идее энкодер может быть вобще примитивный.
банально налепить кусок скотча блестючего на вал замазанный маркером

в ардуине 2 прерывания
на D2 и D3
а я D3 опрометчиво занял выходом на симистор, и главное провод даже припаял
придётся перепаять на соседнюю ногу
не люблю паять :( у меня паяльник сломанный :(
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение avr123.nm.ru » 07 апр 2014, 00:31

ЛУЧШЕ ВАЛ ЕЛЫМ ИЧЕРНЫЕ ЧЕРТОЧКИ, если в якоре есть просветы то можно фотодтод ик диод поставить для регисрации прерыв луча.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Dmitry__ » 07 апр 2014, 00:59

avr123.nm.ru писал(а):ЛУЧШЕ ВАЛ ЕЛЫМ ИЧЕРНЫЕ ЧЕРТОЧКИ

Мне тавоже и столькажэ, щаз ногти грызу за Донецк и Харьков :D

Добавлено спустя 3 минуты 32 секунды:
Myp, асинхронник на фазовый регулятор (я так понимаю с фазосдвиг. кондером?) - это ненормально, если нужны подробности, потом...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 07 апр 2014, 10:58

да я знаю что не нормально
просто хотел лично убедиться))))

Добавлено спустя 27 минут 22 секунды:
вобщем берём прерывание на смену состояния ноги
в прерывании считаем время с прошлой смены.

Код: Выделить всёРазвернуть
void Encoder()
{
  LPulse=micros()-time;                               
  time=micros();
}

и в основном цикле будем сравнивать lpulse с нужной и плюсовать или минусовать напряжение.
хотя это конечно беспонтово...
гораздо прикольней было бы в каждом прерывании от датчика нуля выставлять нужную длительность для следующей полуволны.
но это как-то сложно на первый взгляд.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 07 апр 2014, 21:38

отковырял от старого проекта QRD1114
будет выступать в роли энкодера :)
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Пред.След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6