Устройство на Ardiuno для контроля пересечения барьера.

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Друг Кота
Сообщения: 9339
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Massaraksh7 писал(а): Сб июл 04, 2026 15:43:56
roman.com писал(а): Сб июл 04, 2026 15:31:57 осле демодуляции получаем на выходе TSOP импульсы 1 кГц.
Так это важно. При 1 кГц устройство может неправильно сработать. Как я уже говорил, при пересечении лучей в 1 см от светодиода разница в расстоянии всего 0.4мм. При скорости пересечения, например, 1 м/с это расстояние будет пройдено за 400 мкс. А у сигнала период 1000 мкс. Не успеет понять, в какую сторону пересечение.
Реклама
Друг Кота
Сообщения: 9339
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Суть высокочастотной модуляции для ИК такая же какая в радио передатчикe радио управления.
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

BOB51 писал(а): Вс июл 05, 2026 17:34:24 Да и какое расстояние пройдет объект за те 8 миллисекунд? Это ж не автомобиль и/или спринтер.
При скорости 1 м/с, это 3.6 км/ч - то есть, очень не быстрый шаг, за 8 миллисекунд объект пройдет 8 мм. И, если расстояние между фотодиодами 25мм, то уже на трети расстояния от светодиода (как минимум, но скорее всего, больше) устройство будет работать неверно. Это я ещё не говорю про взмахи рукой - там скорость больше. Я же не просто так эту частоту выбрал, я сначала всё по скоростям посчитал.
Можно сделать, конечно, расстояние между фотодиодами значительно больше, но это уже будет громоздкое устройство. :)
Последний раз редактировалось Massaraksh7 Вс июл 05, 2026 20:18:11, всего редактировалось 1 раз.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Так, что-то у меня сегодня день не задался. Сделал новую плату, все детали перед установкой проверил, запаял, прочистил, проверил с лупой дорожки и контакты - всё, вроде, нормально. Даже ещё МК не монтировал.
И ни один усилитель не работает. Светил на фотодиоды ранее сделанным генератором на NE555 (и проверенным оперативно на реальном устройстве) - никакой реакции, на коллекторе выходного транзистора +5
https://cloud.mail.ru/public/AZVM/8sn79hMmV
Сделаю паузу. Тем более, второе устройство ещё нужно установить.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15671
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Стандартно выделение сигнала на фоне многократно превосходящих помех.
На фотодиоде постоянная засветка может дать предельное насыщение, но она относительно постоянна ("фиксированный уровень смещения") и некоторая переменная ("несущая частота").
Кроме того могут быть ещё источники "переменной помехи" в виде светильников с ВЧ/импульсным питанием. Посему ставится усилитель и частотный фильтр (как минимум)...
На выход которого проходит лишь усиленый сигнал "несущей частоты" из которого далее получаем логический уровень для обработки МК.
Простое усиление может действовать при усложнении оптики излучателя и приёмника (различные тубусы, светофильтры, ИК прозрачные линзы).
:?
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Massaraksh7 писал(а): Вс июл 05, 2026 19:36:31 Так, что-то у меня сегодня день не задался.
...а концовка дня зато отличная.
Проблемы было две:
1. Микротрещина в дорожке. То есть, её не видно, но дорожка не прозванивается. Первый раз сталкиваюсь (или раньше просто зрение было лучше).
2. Те же проблемы с помехами, которые были, так же остались. Но я ещё в том раз предположил, что это переусиление, поэтому в новой разводке сделал места для резисторов в эмиттере. И так и оказалось - при установке туда резисторов номиналом 1к все помехи исчезли (правда, это я пока МК не ставил, но уверен, дело было не в нём, точнее, не в главной мере в нём.)
Уровень сигнала же приличный. Ну это я ещё потом поэспериментирую.
Так, что схема теперь выглядит так:
https://cloud.mail.ru/public/wHGb/kCnfLLkP8
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Ну что ж, могу сказать, что с помощью уважаемого сообщества удалось довести до ума полезное устройство.
Сделано на Atmega328P, без кристалла, на частоте МК 8 МГц.
Окончательная схема:
https://cloud.mail.ru/public/84gD/TT7qE86AQ
Видео тестирования:
https://cloud.mail.ru/public/yC2Y/DyWeQ1doY
Кот здесь:

Код: Выделить всё

/*==============
 cvavr 3.12 
 Beams.c                   
 8 МГц              
 Фьюзы: High 0xDF
        Low  0xD2
 Created: 02.07.2026
 Author: Massaraksh7
================*/
                     
#include <mega328p.h>
#include <interrupt.h>

#define FIRE  DDD6
#define FB1   DDD0
#define FB2   DDD1
#define GEN   DDB1

#define R_WAIT 0
#define R_DIR  1
#define R_BACK 2
#define R_DO_DIR  3
#define R_DO_BACK 4
#define MAX_VIS  3 
#define DEL 2000

volatile int sign1,sign2; //---Сигнал 0 или 1
volatile int imp1,imp2;   //---Число импульсов
volatile int tim0;        //---счётчик основного цикла  

int count,rate;

//---Начальные установки
void prepare()
{
//---Установка переменных
imp1 = 0;imp2 = 0;tim0 = 1;
count=0;rate=R_WAIT;
sign1=1;sign2=1;
//---Установка портов
DDRB = 0;
DDRB |= (1<<GEN);
DDRD = 0;
DDRD |= (1<<FB1) | (1<<FB2) | (1<<FIRE);
PORTD.FIRE = 0;
#asm("cli")
//---Устанровка таймера0 ~ 1мс
TCCR0A = (1 << WGM01);   // CTC
TCCR0B = (1 << CS00) | (1 << CS01); // 8000000/64 = 125000
OCR0A = 124;                        // 125000/(124+1) = 1000 -> 1мс   
TIMSK0 |= (1 << OCIE0A);
//---Установка таймера1 - 25мкс, ШИМ, OC1A
TCCR1A = (1 << WGM11) | (1 << COM1A1);   // WGM11+WGM13 -> Fast PWM, COM1A1 - Вывод на OC1A (PB1)
TCCR1B = (1 << WGM13) | (1 << CS10);     // CS10 - без предделителя          
ICR1H = 1;ICR1L = 0x8F;         // =400-1, 8000000/400 = 20кГц
OCR1AH = 0; OCR1AL = 0xC7;      // =200-1, меандр    
//---Внешние прерывания
EICRA = (1 << ISC01) | (1 << ISC00) | (1 << ISC11) | (1 << ISC10);                 
EIMSK |= (1 << INT0) | (1 << INT1);
#asm("sei")
}

//---Подключить нагрузку
void fireON() {
PORTD.FIRE=1;
}

//---Отключить нагрузку
void fireOFF() {
PORTD.FIRE=0;
}

interrupt [EXT_INT0] void int0_isr(void) {
    imp1++;
}

interrupt [EXT_INT1] void int1_isr(void) {
    imp2++;
}

//---Прочитать состояние входов
void ReadSignals() {
if (imp1<3) sign1=1; else sign1=0; imp1=0;
if (imp2<3) sign2=1; else sign2=0; imp2=0;
//if (sign1==0) PORTD &= ~(1 << FB1); else PORTD |= (1 << FB1);
//if (sign2==0) PORTD &= ~(1 << FB2); else PORTD |= (1 << FB2);
if (sign1==0) PORTD.FB1 = 0; else PORTD.FB1 = 1;
if (sign2==0) PORTD.FB2 = 0; else PORTD.FB2 = 1;
}

//---Основной цикл 1мс
interrupt [TIM0_COMPA] void timer0_compa_isr(void) {
tim0--;if (tim0!=0) return;
tim0=1;
  if (rate==R_WAIT) //---Режим ожидания основной
     {
     ReadSignals();
     if (sign1==0 && sign2==1){rate=R_BACK;return;}
     if (sign1==1 && sign2==0){rate=R_DIR;return;}
     return;
     }
  if (rate==R_DIR) //---Режим возможного пересечения вперёд
     {
     ReadSignals();
     if (sign1==0 && sign2==0){rate=R_WAIT;return;}
     if (sign1==1 && sign2==1){rate=R_DO_DIR;return;}      
     return;
     }
  if (rate==R_BACK) //---Режим возможного пересечения назад
     {
     ReadSignals(); 
     if (sign1==0 && sign2==0){rate=R_WAIT;return;}
     if (sign1==1 && sign2==1){rate=R_DO_BACK;return;}
     return;
     }     
  if (rate==R_DO_DIR) //---Точно пересечение вперёд
     {
     if (count<MAX_VIS) count++;
     if (count==1) fireON();
     tim0=DEL;
     rate=R_WAIT;
     return;
     }
  if (rate==R_DO_BACK) //---Точно пересечение назад
     {
     if (count>0) count--;
     if (count==0) fireOFF();
     tim0=DEL;
     rate=R_WAIT;
     return;
     }    
}

void main(void)
{
prepare();
while (1) { };
}
И здесь:
https://cloud.mail.ru/public/nVJr/Bjgvob3B1
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Я тут подумал: в корпусе TQFP32, наверное, в любительских условиях очень трудно сделать, но вот в корпусе SOIC попроще, наверное. И микросхема подходящая есть - Attiny84. Ну, это, если кто захочет компактности. Я думаю, там в коде минимальные изменения.
P.S.: И тогда уж рассмотреть операционный усилитель типа LM358P: там 2 канала усиления, будет очень компактно вместо 4 транзисторов, 12 резисторов и 4 конденсаторов.
в коде минимальные изменения.
P.S2: Не минимальные, но можно.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Zapolyarny писал(а): Ср июл 01, 2026 19:03:27 Цифровой микроскоп со встроенным дисплеем очень выручает, притом, даже самый дешёвый.
Кстати, за идею спасибо.
https://cloud.mail.ru/public/MmuR/8gb7NLtua
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Во, теперь вся мелочь как брёвна :)

А ещё с ним очень хорошо удалять занозы - минимальное травмирование тканей и безболезненно.
Massaraksh7 писал(а): Пн июл 06, 2026 03:05:20 Я тут подумал: в корпусе TQFP32, наверное, в любительских условиях очень трудно сделать
Это от условий зависит. Для меня это очень легко там же шаг 0.8 и ширина/зазор 0.4, это в два раза больше, когда уже начинается сложно (стандартно делаю дорожка/зазор 0.25/0.25...0.3/0.3) А очень трудно - это менее 0.2 мм.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Единственно, непонятно, а паять-то под ним можно? Ведь весь канифольный дым будет уходить вверх, и, наверное, там оседать, это не повлияет ни на что?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Zapolyarny писал(а): Пн июл 06, 2026 16:57:11 Это от условий зависит. Для меня это очень легко там же шаг 0.8 и ширина/зазор 0.4, это в два раза больше, когда уже начинается сложно (стандартно делаю дорожка/зазор 0.25/0.25...0.3/0.3) А очень трудно - это менее 0.2 мм.
ЛУТ? А такие мелкие дорожки не исчезают при протравливании?
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Massaraksh7 писал(а): Пн июл 06, 2026 17:19:04 Единственно, непонятно, а паять-то под ним можно? Ведь весь канифольный дым будет уходить вверх, и, наверное, там оседать, это не повлияет ни на что?
Можно, повлияет - осядет на оптику. Для дыма нужна вытяжка, чтоб и в лёгких не оседал. Я пока не сделал, паяю несколько лет так, объектив протирал один раз спиртом.
Massaraksh7 писал(а): Пн июл 06, 2026 17:30:04 ЛУТ? А такие мелкие дорожки не исчезают при протравливании?
Фоторезист. Не исчезают и 0.1, если соблюдать условия. Если раствор плохой и передержать к тому же - сильные боковые подтравы неизбежны. Но сейчас перешёл на гравировку ЧПУ-станком, поэтому, подобных проблем вообще нет. Есть другие :)
u37
Это не хвост, это антенна
Сообщения: 1330
Зарегистрирован: Пн май 01, 2017 20:01:45

Сообщение u37 »

Zapolyarny, наверно вы плохо/сегментарно читали тему. У ТС постоянные протравы/трещины на платах. О каких 0.1/0.2 может идти речь?
К слову, 5/5 mil могу показать, делал ЛУТом. Меньше просто не могу напечатать. Рабочая норма 0.2/0.2 (2 трассы под 0805). Так что, фоторезист не обязателен.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Zapolyarny писал(а): Пн июл 06, 2026 20:01:36 Для дыма нужна вытяжка, чтоб и в лёгких не оседал. Я пока не сделал, паяю несколько лет так.
Так сейчас какие проблемы? На любой вкус и кошелёк.
https://www.wildberries.ru/catalog/0/se ... 0%BA%D0%B8
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

Проверил, как работает LM358P по схеме:
https://cloud.mail.ru/public/XaFv/QS2dH13vg
Видео:
https://cloud.mail.ru/public/oRBm/kzN1h3VkG
В принципе, работает, но что-то смущает.
Друг Кота
Сообщения: 9339
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

ну вот. уже лучше.
а мне не нравится сидеть с микроскопом.
раньше брал обычный медицинский микроскоп и сидел паял паяльной станцией.
но это был ремонт. за деньги. тут понятно.
а вот чтоб делать свои устройства лучше брать детали побольше. чтоб не напрягать зрение. не забывайте что зрение у нас одно на всю жизнь ! так что берегите себя ))
:tea:
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

u37 писал(а): Пн июл 06, 2026 20:16:19 Так что, фоторезист не обязателен.
Верно. Я как-то криво построил фразу, будто только с фоторезистом можно.
Ваш навык с ЛУТ достоин восхищения - у меня такое с ним не выйдет.
Итого - в первую очередь, всё-таки важны руки. И голова. :beer:
roman.com писал(а): Вт июл 07, 2026 12:24:20 зрение у нас одно на всю жизнь ! так что берегите себя ))
Так и жизнь одна и не бесконечна. Какой смысл помирать самосбережённым?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 178
Зарегистрирован: Ср июн 03, 2026 18:51:39
Откуда: Воронеж

Сообщение Massaraksh7 »

u37 писал(а): Пн июл 06, 2026 20:16:19 К слову, 5/5 mil могу показать, делал ЛУТом. Меньше просто не могу напечатать. Рабочая норма 0.2/0.2 (2 трассы под 0805).
Как это удаётся? У меня переносится всё чётко, даже линии 0.1мм, проблемы начинаются именно после травления.
Чем травите, при какой температуре, сколько, когда останавливаетесь?
Я, например, персульфатом аммония, в горячей воде, травление занимает, наверное, минуту или чуть больше, но протравы постоянные.
u37
Это не хвост, это антенна
Сообщения: 1330
Зарегистрирован: Пн май 01, 2017 20:01:45

Сообщение u37 »

Вот чем не заморачивался, так это тем, "чем" травить. Стандартный состав аптечные 3% с лимонной кислотой. Травить 3-5 минут. Если больше - раствор выливается и быстро собирается свежий. Держать в растворе долго нельзя - всё перетравится. Сульфаминовую кислоту купил, но так и лежит не распакованной.
Если есть подтравы, то кроме химии дело может быть в не держании картинки на меди. Плату нельзя шкурить и вообще тереть абразивом (если хотите менее 0.2/0.2) и поверхность гарантированно должна бить чистой. Мне хватает пемолюкса.
Ответить

Вернуться в «Arduino»