реклама на сайте
подробности

 
 
> Энкодер и дребезг, нужна помощь
BigCoster
сообщение Apr 11 2007, 18:24
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 9-03-07
Из: г. Днепропетровск
Пользователь №: 26 009



Подскажите, что делать с дребезгом, если датчик положения
(у меня крыльчатка + оптический датчик "на просвет") подключен
к счётчику контроллера. Проблема втом что имеется ошибка которая пстоянно имеет
разное значение. Я так понимаю что програмно тут ни чем не поможешь.
Частота сигнала с датчика около 200 Гц.
пытался делать RC-фильтр но при ёмкости С=1мкФ не помогает, а при 2.2
не работает при номинальных оборотах двигателя.
Я начинающий, сильно не ругайте...

Сообщение отредактировал BigCoster - Apr 11 2007, 18:39
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
A. Fig Lee
сообщение Oct 4 2013, 19:27
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Добил.

В принципе, избавлятся от дребезга в енкодере проще, чем в кнопке.
Так как начало и конец импульса всегда отделены началом и концом другого импульса.
Типа:
Нажал1-Нажал2-Отжал1-Отжал2.
Между нажал1 и отжал1 всегда есть нажал2.

Вывод: надо играть на edges.
Не важен дребезг, сколько не дребезжи, после первого edge сигнал игнорируем
до активности на другом сигнале.
Еще мысль:
после первого edge имеем направление движения:
или 10, или 01, после второго edge фиксируем предыдущее состояние (направление).

Наваял код в Microchip X Lab xc8
для PIC18F14K50 - то, что под рукой было.

Преобразовывает в gray code - в зависимости от направления вращения состояния
меняются:

00
01
11
10
00

или
00
10
11
01
00

CODE
/*
* File: main.c
* Author: dmitriy
*
* Created on September 17, 2013, 10:55 PM
*/

#include <htc.h>
#include <stdlib.h>
#include <stdint.h> /* For uint8_t definition */

#include "config.h"

uint8_t values;

void Init()
{
// Input PB4, PB5 for encoder
// Output PC1, PC2
TRISC = 0xF1;
ANSEL = 0;
ANSELH = 0;

// Enable pullups on PORTB
INTCON2bits.NOT_RABPU = 0;

//Enable interrupt on change for PB4, PB5, PB6
IOCBbits.IOCB4 = 1;
IOCBbits.IOCB5 = 1;

//Enable interrupt on change
INTCON2bits.RABIP = 1;
INTCONbits.RBIE = 1;
INTCONbits.PEIE = 1;
INTCONbits.GIE = 1;


}

void interrupt isr(void) {
if (INTCONbits.RBIF) {
values = (PORTB & 0x30) >> 4;
INTCONbits.RBIF = 0;
}
}


/*
*
*/
int main(int argc, char** argv) {
uint8_t edges = 0;
uint8_t edge;
uint8_t old_values;
uint8_t grey = 0;
uint8_t myvalue;

Init();
old_values = (PORTB & 0x30) >> 4;

while (1) {
myvalue = values;
edge = myvalue ^ old_values;
old_values = myvalue;
if (edge) {
//activity detected
if (edge != edges) {
//activity on new edge
edges = edge;
if (!myvalue) {
//fix direction
// which depends on edge
if (edge & 0x01) {
switch (grey) {
case 00:
grey = 0x01;
break;
case 0x01:
grey = 0x03;
break;
case 0x03:
grey = 0x02;
break;
case 0x02:
grey = 0x00;
break;
} //switch
} else {
switch (grey) {
case 00:
grey = 0x02;
break;
case 0x02:
grey = 0x03;
break;
case 0x03:
grey = 0x01;
break;
case 0x01:
grey = 0x00;
break;
} //switch
} //if (edge & 0x01)
PORTC = grey << 1;
} //if (!myvalue)
} //if (edge != edges)
}
}

return (EXIT_SUCCESS);
}


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BigCoster   Энкодер и дребезг   Apr 11 2007, 18:24
- - Visor   Цитата(BigCoster @ Apr 11 2007, 23:24) По...   Apr 11 2007, 18:44
|- - BigCoster   Цитата(Visor @ Apr 11 2007, 18:44) Ошибка...   Apr 11 2007, 18:49
|- - Visor   200Гц довольно много. Крыльчатка правильно рассчит...   Apr 11 2007, 18:58
- - scifi   Надо посмотреть осциллографом. Тогда будет понятне...   Apr 11 2007, 19:21
- - CD_Eater   Цитатадатчик положения (у меня крыльчатка + оптиче...   Apr 11 2007, 19:22
- - Dog Pawlowa   Цитата(BigCoster @ Apr 11 2007, 18:24) По...   Apr 11 2007, 22:00
|- - Линь   Цитата(Dog Pawlowa @ Apr 12 2007, 02:00) ...   Apr 2 2014, 02:23
- - Stas633   Цитата(BigCoster @ Apr 11 2007, 19:24) По...   Apr 11 2007, 22:18
|- - BigCoster   Цитата(Stas633 @ Apr 11 2007, 22:18) Счит...   Apr 12 2007, 10:25
|- - Stas633   Цитата(BigCoster @ Apr 12 2007, 11:25) У ...   Apr 12 2007, 13:44
|- - BigCoster   Цитата(Stas633 @ Apr 12 2007, 13:44) Наст...   Apr 12 2007, 14:29
|- - Stas633   Цитата(BigCoster @ Apr 12 2007, 15:29) Ко...   Apr 12 2007, 15:13
|- - BigCoster   Цитата(Stas633 @ Apr 12 2007, 15:13) Обще...   Apr 12 2007, 15:30
||- - Dog Pawlowa   Ну, если счетчик считает при остановленном двигате...   Apr 12 2007, 15:44
|||- - BigCoster   Цитата(Dog Pawlowa @ Apr 12 2007, 15:44) ...   Apr 12 2007, 16:13
|||- - Dog Pawlowa   Цитата(BigCoster @ Apr 12 2007, 16:13) Чт...   Apr 12 2007, 16:51
|||- - Stas633   Цитата(BigCoster @ Apr 12 2007, 17:13) Ал...   Apr 12 2007, 17:03
|||- - Visor   Цитата(BigCoster @ Apr 12 2007, 21:13) РА...   Apr 12 2007, 17:13
|||- - Stas633   Цитата(Visor @ Apr 12 2007, 18:13) Чтоб э...   Apr 12 2007, 18:14
|||- - Visor   Цитата(Stas633 @ Apr 12 2007, 23:14) Вним...   Apr 12 2007, 19:08
||||- - Stas633   Цитата(Visor @ Apr 12 2007, 20:08) ....на...   Apr 13 2007, 10:36
||||- - Visor   Цитата(Stas633 @ Apr 13 2007, 15:36) Если...   Apr 13 2007, 19:38
|||- - Dog Pawlowa   Цитата(Stas633 @ Apr 12 2007, 18:14) [b]....   Apr 12 2007, 19:20
||- - Stas633   Цитата(BigCoster @ Apr 12 2007, 16:30) Пр...   Apr 12 2007, 15:55
|- - Visor   Цитата(Stas633 @ Apr 12 2007, 20:13) прог...   Apr 12 2007, 15:51
- - bgc   много раз делал подобные схемы - заводил на вход т...   Apr 12 2007, 09:49
- - ZAO   Цитата(BigCoster @ Apr 11 2007, 19:24) Я ...   Apr 12 2007, 10:27
|- - BigCoster   Цитата(ZAO @ Apr 12 2007, 10:27) Как раз ...   Apr 12 2007, 10:40
|- - ZAO   Цитата(BigCoster @ Apr 12 2007, 11:40) Вс...   Apr 12 2007, 10:46
|- - BigCoster   Цитата(ZAO @ Apr 12 2007, 10:46) А что за...   Apr 12 2007, 11:00
- - ZAO   Вы вполне можете завести одно таймерное прерывание...   Apr 12 2007, 11:41
|- - BigCoster   Цитата(ZAO @ Apr 12 2007, 11:41) Вы вполн...   Apr 12 2007, 11:55
|- - ZAO   Цитата(BigCoster @ Apr 12 2007, 12:55) То...   Apr 12 2007, 13:05
|- - rx3apf   Цитата(BigCoster @ Apr 12 2007, 12:55) То...   Apr 12 2007, 13:28
- - BigCoster   Вот осцилограмма работы датчика, записанная в Soun...   Apr 12 2007, 14:04
|- - Stas633   Цитата(BigCoster @ Apr 12 2007, 15:04) .....   Apr 12 2007, 14:43
|- - BigCoster   Цитата(Stas633 @ Apr 12 2007, 14:43) Поло...   Apr 12 2007, 15:10
- - _artem_   если есть механичекое дрожение крыльчатки при оста...   Apr 12 2007, 14:13
- - _Sam_   ЦитатаВот осцилограмма работы датчика ........ Из ...   Apr 12 2007, 23:03
|- - BigCoster   Цитата(_Sam_ @ Apr 12 2007, 23:03) Конечн...   Apr 13 2007, 10:23
- - _Sam_   ЦитатаДело в том что импульсы от датчика считает с...   Apr 13 2007, 11:32
|- - BigCoster   Цитата(_Sam_ @ Apr 13 2007, 11:32) Полнос...   Apr 13 2007, 15:44
- - BigCoster   ещё допишу... отображать совсем точно значения не ...   Apr 13 2007, 17:30
- - _Sam_   Наверное я не так понял программу. А что вы делает...   Apr 13 2007, 18:27
|- - BigCoster   Цитата(_Sam_ @ Apr 13 2007, 18:27) Наверн...   Apr 13 2007, 19:14
- - _Sam_   Вроде дошло. Попробуйте скачать какую-нибудь тер...   Apr 13 2007, 19:48
|- - BigCoster   Цитата(_Sam_ @ Apr 13 2007, 19:48) Вроде ...   Apr 13 2007, 20:09
|- - Dog Pawlowa   Цитата(BigCoster @ Apr 13 2007, 20:09) ...   Apr 14 2007, 10:03
|- - Stas633   Цитата(Dog Pawlowa @ Apr 14 2007, 11:03) ...   Apr 14 2007, 19:44
- - Visor   'BigCoster' Я сторонник отладки частями, и...   Apr 13 2007, 19:51
- - BigCoster   Спасибо всем за ответы, многие из них очень информ...   Apr 18 2007, 14:28
|- - mandr   Имею по работе проекты, в которых используются дат...   May 17 2007, 14:46
- - BigCoster   Я для себя решил, что без осциллографа схему менят...   May 17 2007, 15:36
|- - OlegIvanov   1. Двухканальный энкодер (о чем упоминалось выше),...   May 23 2007, 22:51
- - MaslovVG   Просмотрел ветку. Мое мнение. Подавить дребезг при...   May 24 2007, 06:06
- - vladimir_orl   Тема конечно устарела, но сейчас столкнулся с тем ...   Sep 3 2013, 05:44
|- - Tarbal   Цитата(vladimir_orl @ Sep 3 2013, 09:44) ...   Sep 4 2013, 20:02
|- - A. Fig Lee   Цитата(Tarbal @ Sep 4 2013, 16:02) ... Да...   Sep 10 2013, 01:07
|- - Tarbal   Цитата(A. Fig Lee @ Sep 10 2013, 05:07) К...   Sep 11 2013, 00:05
|- - A. Fig Lee   Цитата(Tarbal @ Sep 10 2013, 20:05) Я на ...   Sep 11 2013, 02:14
|- - Tarbal   Цитата(A. Fig Lee @ Sep 11 2013, 06:14) М...   Sep 13 2013, 13:30
- - Genadi Zawidowski   Какая скорость прихода импульсов с валкодера? Разр...   Sep 9 2013, 18:13
|- - Tarbal   Цитата(Genadi Zawidowski @ Sep 9 2013, 22...   Sep 9 2013, 19:35
|- - A. Fig Lee   Цитата(Genadi Zawidowski @ Sep 9 2013, 14...   Oct 3 2013, 20:53
- - A. Fig Lee   Состряпал hardware схемку. Не тестировал, правда. ...   Oct 4 2013, 20:28
- - Tarbal   Подавитель дребезга на стейт машине не давит дребе...   Oct 8 2013, 13:36


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01465 секунд с 7
ELECTRONIX ©2004-2016