Работа с энкодером от принтера
Vložit
- čas přidán 26. 08. 2024
- Два провода от питания к энкодер(+ и - )
От энкодера два провода к Ардуино на 2 и 3 пин(датчик А и датчик В)
Провод от плюса к 6 контакту ардуино в разрыв которого стоит кнопка с нормально открытым контактом
6 контакт ардуино притянут через резистор 10кОм к нулю
Спасибо. Интересно, доходчиво, наглядно. С удовольствием смотрю такие видео в формате мини-урока.
Скетч из видео автора.
Энкодер отлично работает с этим скетчем без всяких подтягивающих резисторов и согласующей логики.
Изменив делитель и поменяв мм на угол получается скетч делительной головки для токарного, в моем случае
M=(P/16.0); энкодер на 5760 импульсов на оборот(5760/360=16), 1 импульс делим на 16 = 0.0625 градуса шаг делительной
головки (на экране мы увидим 0.06), делительная головка с шагом 6 сотых градуса чего вполне с головой хватит.
Автору ОГРОМНЕЙШИЙ ПЛЮС!
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2);
boolean A, B;
int P;
float M;
void setup() {
//Serial.begin(115200);
pinMode(6, INPUT);
attachInterrupt(0,blink1, CHANGE);
attachInterrupt(1,blink, CHANGE);
lcd.init();
lcd.backlight();
}
void loop() {
//lcd.clear();
if (digitalRead(6)) P=0;
lcd.setCursor(0,0);
lcd.print(P);
lcd.print(" ");
M=(P/23.7);
lcd.setCursor(0,1);
lcd.print("M=");
lcd.print(M);
lcd.print("mm ");
}
void blink1(){
A=digitalRead(2);
B=digitalRead(3);
if (B==A) P=P+1;
else P=P-1;
}
void blink(){
A=digitalRead(2);
B=digitalRead(3);
if (B!=A) P=P+1;
else P=P-1;
}
А если переписать код более оптимально, не задействовав ардуино функции, то он будет работать быстрее. Но в любом случае, автор молодец, быстро, доходчиво, без воды +++
Улыбнула фраза что "...с ардуино это сможет повторить каждый дурак" а так видео супер, спасибо.
Недавно раскурочил МФУ дохлую, аккуратно снял эту ленту и первая мысль - это использовать её как оптическую линейку для своего маленького токарного ! Спасибо вам за видео !
все работает.
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2);
boolean A,B;
int P;
float M;
void setup() {
//serial.begin(115200);
pinMode(6, INPUT);
attachInterrupt(0, blinkl, CHANGE);
attachInterrupt(1, blik, CHANGE);
lcd.init();
lcd.backlight();
}
void loop() {
//cld.clear();
if (digitalRead(6)) P=0;
lcd.setCursor(0,0);
lcd.print("P=");
lcd.print(P);
lcd.print(" ");
M=(P/23.7);
lcd.setCursor(0,1);
lcd.print("M=");
lcd.print(M);
lcd.print("mm ");
}
void blinkl()
{
A=digitalRead(2);
B=digitalRead(3);
if (B==A) P=P+1;
else P=P-1;
}
void blik()
{
A=digitalRead(2);
B=digitalRead(3);
if (B!=A) P=P+1;
else P=P-1;
}
Может у меня какие то извращенные мысли, но мне сразу на ум пришло использовать всё это в конструкции весов.
Видео полезное. Смотрел и думал: где-то подобный принцип уже использовался. Вспомнил - в старых мышках с резиновым шариком, которое крутит валики, на них колёсики с перфорацией как в энкодере. Колёсики находятся в оптопаре, причём их два - по оси X и Y. Всё контролируется микросхемой, под неё есть стандартные драйвера мыши. И самое приятное, что эти мышки никто давно уже не использует, они просто валяются без дела. Оптопару от принтера можно подключить вместо оптопары мышки, а Ардуино использовать для других целей. Подключить, кстати можно целых два энкодера, если нужно.
Для станка можно использовать и современные оптические или лазерные мышки. Укрепить их неподвижно, а под ними разместить коврик, который двигаясь, повторяет движения резца. Смещения мышка передаёт в компьютер, а дальше с данными делай что хочешь. По-моему здесь есть о чём подумать.
Спасибо. Пока!
Евгений Улахлы Кстати да, действительно есть над чем задуматься, И данные даже можно считывать с мышки. Без компьютера. Спасибо за совет подумаю об этом.
+Цирюльня хромого Йосыпа надо старые мышки отискать
Та можно и не старые колесо прокрутки также устроенное.
Цирюльня хромого Йосыпа
ролик - действительно, спасибо, меня что то на робототехнику потянуло и принтер разобрал и ардуино начал покупать, а то с моим Лего все очень дорого обходится.
:)
Я по поводу кода ) Да! Есть такое ) Иногда чушь такая в советах есть, что диву даешься, как вообще эти люди еще в связи служат (это я про армию). Когда нужно 2 цикла, то у них работает рекурсия )) Это у меня был препод в политехе, он хер красный клал на все эти оптимизации. Где должна быть рекурсия - там должна быть рекурсия, но то, что это отнимает такты лишние он не думал. Короче, меня отчислили с последнего курса ИВТ из за того, что я оптимизировал алгоритм и не использовал рекурсию, так как она занимает много тактов, ассемблилась в непонятный, грубо говоря изъянный код и прочее. Я начал спорить с преподом, за что он посодействовал о моем отчислении ) Да, с другими предметами были косяки (комбинаторика, высшая математика), но отладчиком я пользоваться умею (батя программист олдскулл) ) Но я не унываю )) Отслужил ) Работаю программистом С++\С# ) Такие дела ) К форумам с тех пор, а особенно к политехам я отношусь скептически )
Ян Драгович Да бывает всякое
Невероятно полезное видео. Спасибо :)
Видео бомба . Собрал от кнопок работает .Разобрал два принтера и не могу разобраться с датчиком .Прошу Вас как специалиста разъяснить устройство и подключение датчиков .СПАСИБО.
Не знал про такую штуку! Для станков самое то!
libral1973 Но не совсем.. для точных механизмов есть немного другие. На основе стеклянного стержня и раз в 10 точнее :)
Да! Не успеваю за всем успевать!
@@HromyjJosyp и что же это за стержень стеклянный и сверх точный?)
Спасибо автору. Хорошая идея и исполнение. Путем замены линейного датчика на угловой, ленты на диск (из того же принтера) и поправив код, получил еще и оптический валкодер... или угломер.
Мне понравилось, давно хотел увидеть информацию об энкодерах, спасибо!!!
идея прекрасная . Молодец. а вот ленту спрятать - проблем нет ... главное чтобы стёкла при сжатии не согнуло..( типа в алюминиевый контейнер - весь сбор , лента два стекла , ) чтобы не было переломление луча ( но и такое тоже можно додумать... стёкла можно применить того -же сканера , есть тоньше стёкла . .главное чтобы сам корпус для энкодера и стёкл был легкообрабатываемый - остальное дело фантазии . в самодельный корпус впихнуть всю приблуду в целое и потом куда хошь прикрепляй .. и будет пофигу стружка масло и прочее кроме сварки естественно .
Спасибо тебе за это видео....уже год, ровно год рассылаю твое видео как пример ...
и десяток раз пересмотрел сам....
....уж очень хотелось бы с тобой немного на эту тему пообщаться....
Пообщаться можно. только это было так давно. Я уже честно говоря мало что помню . Проект так и не был запущен так как пришло осознание что пластиковая пленка и горячая стружка из под резца ну уживаться вместе.
Torri118@mail.ru
@@HromyjJosyp спасибо за уважительное отношение на комент....респект!
Отпишусь в письме...
Рад ...
Отличное видео, многое для себя узнал.
круто, надо придумать куда примаздрячить, могу десяток принтеров разобрать.!
Антоныч и Алексей Подоляк Там и шаговые двигателя есть, тоже штука полезная, и направляющие. Короче масса классных вещей.
Наконец-то нашел нормальное видео с нормальным объяснением принципа работы этого энкодера! Хочу применить на две оси для чпу выжигателя , кажется будет очень точно работать, ведь в принтерах работают нормально. Спасибо за разъяснения, с меня подписка)))
+Антон Захаров для выжигателя просто ставте шаговые двигателя, энкодеры там не нужны
Так вот их нет. А заказывать пока по финансы не позволяют, зато есть двигатели с энкодерами от двух принтеров. Пока сделаю так, поменять потом не долго.
мог бы снять видео или выложить скетч для выжигателя, тоже хотел по пробывать, а ума до конца не получается создать
Pavel C скетч есть, могу скинуть.. а вот видео, к сожалению, потерялось... напиши мыло, скину
А можно мне ссылку на скетч. попался такой энкодер хочу использовать.
ты просто гений!!Спасибо большое!!!
А чего скетч то не выложили??
Лайк. Начал смотреть, а тут ты тоже самое говоришь что я знаю
Побольше бы таких видео.
Спасибо за отличный материал. Делай больше видео по электронике.
Всё красиво! Приятно смотреть такие видео!
Очень информативное видео! Давно посещала идея изготовить УЦИ на базе именно принтерных энкодеров по скольку есть несколько таковых, но как то руки не дошли... Огорчает градация всего в 4 сотки. А по поводу грязи и практичности, то и заводские линейки известных фирм есть оптические там всего то корпус защищенный присутствует ну и точность другая. По больше высших материй то многим тоже интересно! Спасибо.
Андрей Заярнюк если взять енкодер с другого принтера градация может быть другая. Думаю нужно смотреть на принтеры с большым количеством цветов для фото печати там где по 6-7 цветов. Этот выдран из старого принтера ещё 2000 годов
Цирюльня хромого Йосыпа
Ну пересмотрю что у меня там есть и буду делать выводы про градацию, по скольку потока принтеров на разборку у меня нету так что придётся выбирать из того что есть.
@@user-uq3bq8yw3w получилось найти ленты с высоким разрешением?
определение пинов энкодера внизу этой страницы - reprap.org/wiki/Optical_encoders_01
Друже, дякую за роботу. Є дисковий енкодер від принтера, хочу зробити лічильник лінійного переміщення на основі колеса, для деревообробного станка. Все буде Україна!
Дружище, тебе лойс, хоть и запоздалый, но лови!
Видео немного затянутое, но главное результат. Много циклов и всяких проверок - из-за обработки не одной оси энкодеров, а сразу несколько, отсюда и нехватка прерываний, с всевозможными проверками и циклами. Теперь осталось привязать коллекторный мотор, и сделать подобие серводвигателя. Для начала мотор можно взять с принтера (а лучше весь узел каретки с мотором и энкодером), и цены проекту не будет!
Для серводвигателя нужно намного больше усилий при написаниии програмы и скорость роботы самого мк чуть выше. Но да именно так и работают сервоприводы
Почему же не понравиться... Очень полезная тема.
молодец. видео очень полезное. снимай еще !
Дело нужное! Не забрасывай высокую материю!
Видео очень полезное. есть такой энкодер, только выходе пять проводов.
нужно звонить так ничего сказать не могу
Очнь полезное видео у меня такой аопрос, можно установить энкодернкю ленту epsona на
hp
Видео хорошее, но можно еще и схемку отснять(кто, куда, как собрано)
Александр Грузин
Тупо было лень рисовать
Там всего шесть проводов и резистор
Два провода от питания к энкодер(+ и - )
От энкодера два провода к Ардуино на 2 и 3 пин(датчик А и датчик В)
Провод от плюса к 6 контакту ардуино в разрыв которого стоит кнопка с нормально открытым контактом
6 контакт ардуино притянут через резистор 10кОм к нулю
Вот-бы чаще на всем подобное так не нравилось..Только попробуй забить на нас😁
Спасибо за интересное видео!
Там не надо использовать оба прерывания , достаточно одного. Проверку второго датчика осуществлять в обработчике.Ещё один момент переменные А и В которые изменяються в обработчике прерываний необходимо об`являть как "volatile".Скетч можно сделать проще и быстродейственней примерно в 10 раз используя прямое обращение к портам.
Не будет он в 10 раз быстрее работать поскольку он работает между прерываниями и успевает
Я в восторге! Умница! Скинь ссылку на твой скеч, что бы можно было применить на практике.
скетча уже нету, я его просто потерял среди всего хлама на компе
Спасибо. Супер.
При большое спасибо за инфу!!!
//LCD RS pin to digital pin 12
//LCD Enable pin to digital pin 11
//LCD D4 pin to digital pin 10
//LCD D5 pin to digital pin 9
//LCD D6 pin to digital pin 8
//LCD D7 pin to digital pin 7
//LCD R/W pin to ground
#include
#include
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
boolean CW, CWW;
boolean enc_A, enc_B; // переменные. //переменные оппроса входа.
unsigned int update_lcd = 0; //переменная обновления экрана. своеобразное прерывание.
volatile int place_enc; // переменная.
long metric_mm; //переменная.
void setup(){
pinMode(6, INPUT_PULLUP); // настройка пина кнопки на вход, включае поддяжку.
attachInterrupt(0, CW_interrupts, CHANGE); //прерывание INT0.
attachInterrupt(1, CWW_interrupts, CHANGE); //прерывание INT1.
lcd.begin(16, 2); // старт lcd
}
void loop(){
//lcd.setclear() //сброс.
if (digitalRead(6)==0){
place_enc = 0;
metric_mm = 0;
}
if (update_lcd==0){
lcd.setCursor(0,0); //курсор.
lcd.print("Place="); //выводит текст.
lcd.print(place_enc); //выводит значение переменной P.
lcd.print(" "); //выводит выводит пробел.
metric_mm =(place_enc/0.1); //вычесляем значение переменной M.
lcd.setCursor(0,1); //курсор.
lcd.print("Metric="); //выводит текст.
lcd.print(metric_mm); //выводит значение переменной M.
lcd.print("mm "); //выводит текст.
update_lcd = 1024;
}
update_lcd = update_lcd-1;
}
void CW_interrupts(){ //обработчик прерывания прерывание INT0.
enc_A = digitalRead(2);
enc_B = digitalRead(3);
if(enc_A==enc_B){
place_enc=place_enc+1;
update_lcd = update_lcd+8;
}else place_enc=place_enc-1;
}
void CWW_interrupts(){ //обработчик прерывания прерывание INT1.
enc_A = digitalRead(2);
enc_B = digitalRead(3);
if(enc_A!=enc_B){
place_enc=place_enc+1;
update_lcd = update_lcd+8;
}else place_enc=place_enc-1;
}
goodspeedmen , а теж саме, тільки на max7219 7сегментмому допоможете переписати?
Красавчик!!Дельное видео
отличное видео. +
Правленый, (проверено), скетч для "круглого" энкодера принтера (определяем градусы поворота) при подключении Arduino Pro mini, напрямую к LCD1602
#include
//#include
#include
//LiquidCrystal_I2C lcd(0x27,16,2);
LiquidCrystal lcd( 9,10,4, 5, 6, 7);
boolean A, B;
int P;
float M;
void setup() {
//Serial.begin(115200);
pinMode(8, INPUT);
attachInterrupt(0, blink1, CHANGE);
attachInterrupt(1, blik, CHANGE);
//lcd.init();
lcd.begin(16, 2);
//lcd.backlight();
}
void loop() {
//lcd.clear();
if (digitalRead(8)) P=0;
lcd.setCursor(0,0);
lcd.print("P="); // выводим надпись Р=
lcd.print(P);
lcd.print(" ");
M=(P/16.0);
lcd.setCursor(0,1);
lcd.print("G=");
lcd.print(M);
lcd.print(" * ");
}
void blink1()
{
A=digitalRead(2);
B=digitalRead(3);
if (B==A) P=P+1;
else P=P-1;
}
void blik()
{
A=digitalRead(2);
B=digitalRead(3);
if (B!=A) P=P+1;
else P=P-1;
}
Думаю для поперечної подачі токарного станка буде саме то,
можна навіть забути про один лімб,
удачі в застосуванні.
Женя Джус У меня нету лимба продольной подачи (На ТВ-3 из не ставили) Вот туда и хочу присобачить
Для токарника 4 сотки - это слишком много. Электронные линейки обычно в 1 сотку. Реально такая точность и нужна при позиционировании.
Здравствуйте, у меня в принтере испортился энкодер, что делать, к сожалению не могу нигде найти у кого купить. Принтер струйный Canon pixma 2540s
пожалуй подпишусь)
Если насечки на ленте одинаковые, как реализовано распознавание движения назад?
Тонкие материи, к сожалению не для всех(
Токарный станочек это хорошо, а как можно скрестить такую линейку с шаговым двигателем? Для исключения пропуска шагов ( в 3д принтер например, или любой другой чпу станочек). Сможешь такой материал отснять, было бы интересно, кстати информации по этой теме не особо то и много.
Есть готовые решения шаговый двигатель с уже установленым на нем енкодером и спец драйвер для него
Я знаю что есть такие, даже с тормозами есть. Интересно как женят одно с другим. Там сразу драйвер двигателя с колодкой энкодера (если только сам драйвер это предусматривает) , а вот через какой костыль скрестить бульдога с носорогом это уже интересно) например в чпу промышленных (возьмём к примеру фрезерный) в них линейки стоят ещё дополнительно по осям. Но, вернёмся допустим к какому нибудь принтеру (3д) ставить туда такие драйвера, такое себе наверное, в плане того что они не с ноготь большого пальца размером, а уже с кулак минимум.
P.S. Думаю обладатели дрыгостолов взяли бы это на вооружение.
Я думаю что обладатели каких-нибудь дрыгостолов могли бы взять такое на вооружение
не пробовал АЦПшкой сигналы смотреть? Там пила получается или или или интенсивность немного плавно набирается и можно чуть больше отсчётов получать?
Есть разные энкодеры. У одних есть внутренний преобразователь а у других нет. Соответственно и разная форма выходного сигнала. Но, я Вам скажу большую точность нету смысла пытаться получить. Такая лента слишком сильно тянется от перепада температур. Если стоит задача получить большую точность, нужно смотреть на энкодеры у которых разметка нанесена на стеклянном стержне а не на пленке
Кстати ....твое видео о линейном энкодере единственное в своём роде ....пример безупречный...
Привет из Молдовы...
Если возможно предоставьте какой либо контакт для связи
Протёр ленту влажной салфеткой, на салфетке много чёрного. Мог ли я испортить ленту? Это я стёр темные полосы получается? Каретка теперь с ума сходит
даже незнаю. всякое может бить. в принципе полосы видны не вооруженным взглядом присмотритесь внимательно . Может просто нужно протереть еще раз. возможно просто ростянули пыль. я не думаю что насечка легко стираеться
Излучатель датчика в невидимом спектре светит?
Да.
Робота стабильнее будет ,если добавить в разрыв между ( датчиками А и В ) и ( Ардуино на 2 и 3 пин ) по одному триггеру к155тл2 .Сразу сбои прекратились ,проверил .Автор МОЛОТОК ..
скорее всего не 0,0422 мм шаг или 23.7 штриха на мм,
а 600dpi=25.4/600=0.04233(3) или 23.622 штриха на мм.
попробуй штрихи на 1/600 дюйма считать тогда можно целочисленную арифметику использовать
уже на 3 шаге будет 1/200 дюйма или ровно 0.127мм, 6 шагов =0.254, примерно четверть мм.
5мм. будет 118 шагов.
Не помню проект заброшен в виду не пригодности при роботе с брызгами масла и горячей стружкой
а что мешало все эти приводы разместить в верху а вниз только рабочий орган?
т.е. "табуреточно-портальная схема."
Как раз эту ленту и негде было пристроить везде она в опасности. Да и я сам понял что для моих задач мне УЦИ пока не нужно
О Великий Йосып , подскажи пожалуйста . Энкодер с вращательным диском от принтера НР . На платке 4 контакта , видимо +5 , земля и 2 выхода . На этой платке уже распаян резистор для питания светодиода , НО ! Почему-то на вход (+) датчиков , резистора НЕТ . Разве не нужно ограничивать ток в коллекторе-эмиттере датчика ???
Я не на столько силен в этих делах чтобы что- то утверждать. Я больше практик подключил -работает :) и кстати энкодер может быть и на 3 вольта. Рекомендую начать с такого напряжения
@@HromyjJosyp спосыбо, я не тороплюсь сжечь энкодер - буду пробовать с 3 вольт !
@@neatcut5194
3,3 Вольта, конечно
Спасибо
Очень заинтересовало!Разобрал свой принтер НР5700, но не могу определить маркировку оптодатчиков.На датчиках два выхода с одной стороны и четыре выхода с другой стороны.Маркировка на оптодатчике ленточного энкодера (80045 4х4), на дисковом (9985 с509).Помогите определить, что за датчики или где у них какие выводы!
+5552 2225 Нужно пробовать, скорей всего у него есть
+
-
Фаза А
Фаза В
Дальше или минус А, минус В
Или как вариант может быть третья фаза.
+5552 2225 скажите получилось разобраться с датчиком энкодера от принтера НР?
спасибо
Прикольно, но на практике что делать с грязью, пылью и маслом, которые будут неизбежно попадать в устройство?
Дмитрий Сергеев Не знаю, поэтому и сказал что не уверен поставлю ли я эту штуку на станок. С другой стороны что мешает попробовать из затрат только мое время ?
Чтобы грязь и пыль не попадали придётся сделать защитный кожух.
Получается что так работает штангенциркуль электронный
Pampidu Pampidu Да, только датчик там не оптический а индукционный
@@HromyjJosyp емкостной.
не совсем так. там ёмкостный электронный нониус.
как я Тебе благодарен. я перерыл весь инет и у буржуев был пол дня. нашел даташит к ним. но прозванивал цешкой и никаких результатов. а подключил к уне так сразу заработали. видимо на выходе напряжение слабо меняется прибор ненеможет уловить а контроллер видит. плохо нет осццилографа. кому нужна инфа по таким ссылка. reprap.org/wiki/Optical_encoders_01
При таком коде будет считать каждый перепад у меня энкодер 1250 не линейный получается 5000 с копейками
А если подключить оптопару от ардуино, будит ли те же показания с штатной лентой.
А почему они должны поменяться?
Подскажите пожалуйста есть ли у энкодера лицевая сторона и лево право?
Мой работал в любом положению. За остальные не знаю.
а откуда взяли расчёт М=Р/23.7 , откуда взялось именно число 23.7?
Исходя из растояния между метками на енкодере.
@@HromyjJosyp
понятно, кстати взял твой код как исходный немного допилив под себя и теперь могу обрабатывать два промышленых оптических энкодера без учёта направления вращения но за то с выводом расстояния на одной ардуинке или с учётом направления вращения но тогда только один энкодер, все из за того что не хватает на ардуино уно апаратных прерываний , но для моей задачи этого достаточно. Мог бы я вас как то отблагодарить за это отличное видео которое мне так помогло в работе ?
Для чего угодно, но не для фрезера, мелкая пыль засорит оптику.
А как вы определяете, где какая нога у энкодера?
методом научного тыка
8550циклов! Если быть правильным!)
Здравствуйте, а не трудно вам сделать что то подобное с круговым энкодером что бы отсчет в градусах был на пример,и разжевать таким как я? Спасибо.
Не трудно. но у меня нету кругового энкодера . но смысл там точно такой самый.
Все один в один.
Делим 360 градусов на количество импульсов и считаем то ли в сторону увелечения то ли в сторону уменьшения.
Просто нужно учитывать что при переходе через ноль идет новый круг. То есть после 360 и 0 градусов это одно и тоже число.
Для начала можно просто взять эту програму и прикрепить ее к круговому энкодеру. все должно работать.
@@HromyjJosyp с круговым энкодером можно сделать серву. Клёвую серву.
Привет всем,помогите пожалуйста вывести данные на экране,а не на лсд
Вопрос в принтерах и плоттерах датчик просто считывает количество полос?
Да. Только там 2 датчика. для определение в какую сторону движется каретка
@@HromyjJosyp Спасибо! Плоттер пытаюсь починить) Думал - может там как-то еще позиционирование читается, а китайская лента с оригинальной не похожи
@@jonykaige1470 Тут не подскажу, совмещать разные технологии это лотерея :)
Нужно видео!
Два дня тупил ;)))) почему в прерываниях "чендж" и почему две процедуры...... И не уверен что до конца понял логику, зачем же ДВА прерывания!? Для срабатывания и по переднему и по заднему фронту по обоим линиям?? Я обычно вешаю прерывание только не "строб" а импульс "направление" проверяю. Ну да в прерывании ставлю "райз" (передний фронт).... Или всётаки протупил в понимании??
Да, два прерывания для двух датчиков по двум фронтам . Ведь суть такого энкодера в том что фазы сдвинутые.
и нужно обрабатывать оба датчика тогда точность будет в два раза выше
ну наверное не точность а ..... может скорость
хотя наверно и точность тоже.... попробую! спасибо за идею! обычно я делаю как....? спрерывание одно тот импульс который я для себя назвал "строб" а другой "направление" прерывание по стробу и смотрим ноль или единица направление.... блин а вот оба сигнала юзать как интеррапт - нидопёр :(( вобщем! палец вверх! и спасибо!
:)
Пожалуйста, оставьте свой,готовый, рабочий скетч в описании иди комментариях! Уж очень нужно
+Федя Молчанов скетч не могу найти. Не подключайте І2С Все что вам нужно это два прерывания . Обработайте их и выведите на свой экран как вам угодно.
Цирюльня хромого Йосыпа я совсем новичок,я не знаю каким образом сделать прерывание. Все что получается это выводить на экран непонятно что(когда переписал ваш скетч),первая строка мигает и судя по всему пытается вывести и м и р в одну строку сразу. Данные увидеть невозможно
Цирюльня хромого Йосыпа у меня все символы,какие бы я не выводил,отображаются "дождем "не монолитом,а с прерыванием по горизонтали
Вам нужно по другому ВЫВОДИТЬ данные.
Для начала просто сделайте пример по этой ссылке
robotclass.ru/tutorials/arduino-lcd1602/
Вы должны получить надпись на дисплею
"Hello, world"
И кстати дисплей может не понимать русские символы
Цирюльня хромого Йосыпа работает идеально.можете дать ссылку на библиотеку I2c? Или на ту о которой вы говорите
Помогите подправить код без использования I2C дисплей напрямую, я в этом деле новичок и выложите пож. код, спасибо
+Вася Пупкин У меня нету дисплея без I2C. Поэтому показать не могу. Почитайте тут. wiki.amperka.ru/схемы-подключения:подключение-текстового-экрана
Вот мой код обработчика прерывания с STM32F030F4, код автора работал не адекватно
void EXTI0_1_IRQHandler()
{
myClearInterrupt(0);
state = (GPIOA->IDR & 0b011); // читаем пины порта к которым подключен энкодер PA0 PA1
poz = (state < 2) ? ((state == 1) ? 0: 1): ((state == 2) ? 2:3); // выясняем позицию положения в таблице
if (poz != last_poz) // если произошло движение
{
if (poz < last_poz)
{
if (last_poz == 3 && poz == 0) score++;
else score--;
}
else
{
if (last_poz == 0 && poz == 3) score--;
else score++;
}
last_poz = poz; // сохраняем предидущее состояние
}
}
Идея хорошая но для токарного станка такой энкодер не подойдет.
Почему?
Делай кратко и по сути
что за хрень, blinkl и blik, в чем суть, судя по коду, они друг друга перекрывают, один увеличивает - другой уменьшает, в итоге 0, как это работает?
blinkl и blik. У энкодера два датчика каждое прерывание обрабатывает срабатывание своего датчика.
8532/4 = 2133 риски
2133 * 0,04 = 85,32 мм.
Но лента = =360 мм
Что я не понял????
Странные вычисления) Вычислил, наверное, количество черных насечек и умножил на дискретность), там кстати еще и прозрачные есть, они тоже участвуют
Автор говорит, что стоит 2 датчика и эти два датчика в сумме дают 4 цикла.
_для уточнения_ второй датчик читает риски со смещением в 1/2 фазы. То есть пока первый датчик на половинe риски читает 0, второй уже читает 1. В итоге при считывании одной черной и одной прозрачной полоски при помощи двух датчиков получается такая картина 10-11-01-00. От сюда и выходит, что на расстоянии 360мм 8532 цикла, то есть точность 0,04мм.
@@DenisDenis-iv9bo
Да, я так и считал.
Скетч в студию
там 8 строк кода не смешите меня
А тем кому надо, а код написать не могут не совсем смешно.
До 5 хв все розумів. Після відсотків на 40, хоч сам програмую на дельфі.
ДЕ токарний станок а де енкодер. Цікаво буде поглянути на їх симбіоз. Патентуй ідею
papirownik Идея стара как мир :) Цифровые штенгеля работают именно так, только в основе стоит не оптический энкодер а индукционный а принцип тот же.
На станках такие штуки давно применяют. Только более точные, защищенные и дорогие:) 3 промышленных энкодера будут стоять дороже всего моего станка:)
:)