экодер. макс число оборотов которые он сможет считать

fsdb
Offline
Зарегистрирован: 24.10.2015

вот допустим энкодер . у него 20 меток на оборот. сможет ли он отработать все 20 меток если двигатель будет вращаться 70 оборотов в минуту. спасибо.

спецификации нет, поэтому прошу ответить примерно - на ваш взгляд

http://ru.aliexpress.com/item/Rotary-encoders-Module-for-Arduino-UNO/324...

Клапауций 123
Offline
Зарегистрирован: 06.12.2015

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

fsdb
Offline
Зарегистрирован: 24.10.2015

достал из мыши. можно примерно схему подключения? на моем написано ATA2388 t1033c

Клапауций 123
Offline
Зарегистрирован: 06.12.2015

fsdb пишет:

достал из мыши. можно примерно схему подключения? на моем написано ATA2388 t1033c

то контроллер мыши, а не энкодера - пишешь в хугле[arduino энкодер из мыши] и вся недолга

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

У меня стоят энкодеры прямо на валу 130-го мотора с 32 делениями. Мотор выдает на гора 8000rpm . Частота прерываний от энкодера 8500гц. 4 мотора считает уверенно. Поглощает примерно 200мксек каждую миллисекунду или 20% CPU.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

даешь двухядерную ардуину!? )))

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Зачем? Если не юзать Wiring то 16Мгц на 8/16 битах .. это промежду прочим IBM PC AT 286. Вполне себе машинка. :)

Гриша
Offline
Зарегистрирован: 27.04.2014

вопрос: чисто теоретически, если воткнуть типа такого счетчика… ведь можно и более высокие скорости измерять и с каждым импульсом не париться. А на малых скоростях прямой сигнал с энкодера  обрабатывать. Да даже не счетчик, а просто 2 Д-триггера (по одному на канал) уже проще, просто программно  разделить на «высокую» и «низкую» скорость… ну или «скорост+ь направление», как в этой схеме (тока там рекламы много)…

ЗЫ

jeka_tm пишет:

даешь двухядерную ардуину!? )))

снова муха в котлеты попала, аще STM32 не добили, а уже 2 ядра народ требует.  

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ишь ты завелся))) то есть тебя фраза "20% CPU" не смутила?

Гриша
Offline
Зарегистрирован: 27.04.2014

ОФФ ТОП

jeka_tm пишет:

ишь ты завелся))) то есть тебя фраза "20% CPU" не смутила?

неа, не смутила, зависит от таймингов других процессов в процессоре. Можно так написать, что при 20%  загрузки проца, будешь импульсы терять. Я веду речь о том, что на этом форуме многие очень многого не понимают. А те, кто понимает, не особо то делятся своими знаниями – слишком муторно и объемно объяснять. И очень многие даже не хотят вникать, а просят «дайте».  Другим нужно «срочно», а учится некогда… 

Да и по соучаствовать хотел  - нужно же было чего-то написать для объему ))))))))

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Гриша, "Я веду речь о том, что на этом форуме многие очень многого не понимают...И очень многие даже не хотят вникать, а просят «дайте»" Вы даже не догадываетесь насколько Вы - правы! Только "что это изменит"?

У меня вполне нормально отрабатывают энкодеры, 50мксек конечные автоматы для регулировки скорости этих же 4-х двигателей, датчик расстояний со своей сервой непрерывно "крутит башкой" и делает замеры по тому же самому прерыванию PCINT2, да по 5 раз в направление с усреднением и устранением ошибок и ещё небольшая кучка "вычислителей", ищущих дорогу в лабиринте и запоминающих маршрут (картографирование), дабы "взад ездить шустрее". :)

Ничё, все справляется.. :)

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну .. дал я им свою либу, через которую все это вертится .. и? Активных пользователей на сегодня .. около 20 программистов судя по перепискам "тут да там". "Дайте" - мало-о .. надо ещё и сделать "за него". :)

Гриша
Offline
Зарегистрирован: 27.04.2014

ОФФ.ТОП

Arhat109-2 пишет:

Ну .. дал я им свою либу, через которую все это вертится .. и? Активных пользователей на сегодня .. около 20 программистов судя по перепискам "тут да там". "Дайте" - мало-о .. надо ещё и сделать "за него". :)

Ну так о чем речь! Когда понимаешь, что делаешь, оно и работает, а большинство (я в том числе) копи-пастом занимается, некоторые с умом, а другие: « щас копи-пастом и на форум, а там ребята обругают, да может кто соберет за меня»… Энкодер штука не тривиальная как, к примеру, кнопка. И то, 2 очень серьезных топика про нее: этот и этот. Лично я, за год еще с часами не разобрался до конца, они конечно работают, но нюансов там горка с прицепом.

fsdb
Offline
Зарегистрирован: 24.10.2015

Написал как умел. чисто эксперементально. из 20 меток может одну пропустить или наоборот увидеть. скорость вращения 1 об в 2 сек. как мог крутил)) пока еще думаю как правильно сделать

unsigned long cnt=0;
int r,last_r=1;
void setup() {

Serial.begin(115200);
pinMode(2, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:


r=digitalRead(2);
while (r==1) {
r=digitalRead(2);  
}
delay(1);

if (r==0) { 

  
cnt++;
Serial.println(cnt);


while (r==0) {
r=digitalRead(2);  
}
delay(4);

}



}

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

fsdb пишет:

Написал как умел. чисто эксперементально. из 20 меток может одну пропустить или наоборот увидеть. скорость вращения 1 об в 2 сек. как мог крутил)) пока еще думаю как правильно сделать

unsigned long cnt=0;
int r,last_r=1;
void setup() {

Serial.begin(115200);
pinMode(2, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:


r=digitalRead(2);
while (r==1) {
r=digitalRead(2);  
}
delay(1);

if (r==0) { 

  
cnt++;
Serial.println(cnt);


while (r==0) {
r=digitalRead(2);  
}
delay(4);

}



}

 

выкладывайте ВЕСЬ код , но свёрнутый и нумерованный , пожста....
зачем мине помнить про что это - r=digitalRead(2); ?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

вот здесь я выкладывал код энкодера без использования прерывания, может пригодится

http://arduino.ru/forum/apparatnye-voprosy/opticheskie-enkodery#comment-144045

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вот как только в глазки попадает delay() дальше код даже не смотрю. Ибо даже delay(1) это 1 миллисекунда простоя, за которую проц вполне в состоянии прогнать 16 000 циклов исполнения, а каждый - практически "команда".

Ваще-то в линуксах, милисекунда - нормальная квота процессорного времени для отдельной нитки исполнения.. :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Arhat109-2 пишет:

Вот как только в глазки попадает delay() дальше код даже не смотрю. Ибо даже delay(1) это 1 миллисекунда простоя, за которую проц вполне в состоянии прогнать 16 000 циклов исполнения, а каждый - практически "команда".

Ваще-то в линуксах, милисекунда - нормальная квота процессорного времени для отдельной нитки исполнения.. :)

++

Logik
Offline
Зарегистрирован: 05.08.2014

++. И еще - как можна обсуждать быстродействие скетча с digitalRead?! Быстро - это прямо с порта.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Не .. ну это не показатель. В моих скетчах полно ditialRead / Write но они у меня разворачиваются ровно в 1 команду .. прямо в порт. :)

Logik
Offline
Зарегистрирован: 05.08.2014

Так у Вас свой "ардуино++", и ditialRead макрос, а не вызов функции-монстра.

Гриша
Offline
Зарегистрирован: 27.04.2014

Вот и подобрались к сути… 

 

Arhat109-2 Пост 10: пишет:
  …делает замеры по тому же самому прерыванию PCINT2…

И посты: 16,18 -20 теперь сама соль будет )))))))))))))

Лично я, на UNO, записал

void loop()

{

  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

}

Получил 100кГц и успокоился, дальше я пока не знаю как быстрее код написать … asm и прочее я пока не учил…

Клапауций 123
Offline
Зарегистрирован: 06.12.2015

jeka_tm пишет:

даешь двухядерную ардуину!? )))

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Гриша, нет соль в том, что есть "блин без делай".

Ну и моя "Ардуина++" уже выложена в открытый доступ и даже тут есть отдельная тема, где выкладываю описание "что теперь изменилось/дополнилось", а на гитхабе есть текущий trunk.