Jump to content

Андрей Гараж

Members
  • Posts

    36
  • Joined

  • Last visited

Информация

  • Город
    Зеленоград

Электроника

  • Стаж в электронике
    1-2 года
  • Сфера радиоэлектроники
    МК

Recent Profile Visitors

371 profile views

Андрей Гараж's Achievements

Rookie

Rookie (2/14)

  • Collaborator
  • One Month Later
  • Dedicated Rare
  • Week One Done

Recent Badges

0

Reputation

  1. По теме: кривая осциллограмма датчика походу была из-за плохого контакта в проводе щупа осциллографа. пересобрал тестовую схемку заново, все перевоткнул и сигнал стал норм - красный и зеленый именно такой как я писал в самом начале. 3их левых пакетов не обнаружено. А вот с цифрой фигня, если снимать со светодиодного пина то, что считала ардуина, происходит вот что: Считывается не то, и к тому же часть данных теряется. А ложные срабатывания ушли, когда на вторую ногу компаратора кинул 3.3 В, что видимо стоило сделать сразу. Но я следовал схеме платы и собрал как на ней. Набрел на ардуиновскую либу https://alexgyver.ru/directadc/ На ней можно завести программное прерывание, без него видимо никак. Не знаю как ардуиновский freeRTOS будет работать с программными прерываниями (и будет ли), я хотел обойтись без них. Завтра буду пробовать что-нибудь.
  2. На такие вопросы тут отвечают те, кто их и задает. Разве это еще не понятно? Или вы не уловили? Меня терзают сомнения...
  3. Если синий соленоид поднят, то его шрифт как бы продолжает магнитное поле оранжево-зеленого контура и перехватывает поводок. Если опущен, то зелёный контур его подхватит снова, пару сантиметров машинка может проехать прямо. Иногда правда это не срабатывает) На фотке под трассой, где контура, его даже видно. Он прямо под светофором- серый цилиндр в круглом отверстии. Тоже ещё не влезал туда, да и смысл? Там все намертво врезано и залито термоклеем.
  4. не) они как бы на "бампере" вроде того. может быть он не столько магнитится, сколько держит свое магнитное поле по полю контура. тк другие металлические предметы к дороге не притягиваются
  5. Это как-то завязано на адрес, который в исходнике в самом начале закомментирован. Такой-то адрес - такой-то маршрут. Но у зрителя создается впечатление что машинки ездят рандомно. На передней оси машинки латунный поводок - направляющая, на нем магнитик, и он примагничивается к контуру под дорогой. Так поворачиваются колеса. На перекрестке что-то типо железнодорожной стрелки, только переводит магнитный поток по которому следует машинка. Я еще не дошел до этого момента) Так что это дорога перестраивается, а машинка тут просто как ведомый элемент. // номер - минСкор - махСкор - маршрут + Kstart = // // // СПб - 214 - 174 - 101 // 0047 - СПб - едит через мост - 174 адр // 0089 - СПб - НЕ едит через мост - 214 адр // // 0093 - автоб зеленый - 90-180-197(был) - стал 60-137-174 СПб // 1078 - Груз - 60-160-113 - Псков // 1022 - ПАЗ - 80-180-182 // 0002 - автоб-МСК - 95-180-101 - // 157 адрес // 0097 - автоб МСК - 75-180-197 - короткий - малый круг
  6. Я ж скинул исходник, и уже говорили что там частота задефайнена на 1МГц. исходников светофоров нет. Я хотел исходя из пакетов передаваемых светофором отследить логику программы машинок по их исходнику. Сигнал такой какой на последних фотках, и по нему не понятно с какой частотой но задается.
  7. частотой чего? как по этому сигналу понять хоть что-либо, кроме того что он существует?) Весьма польщен)
  8. Собрал такую схемку на ардуине нано. С таким кодом: digitalWrite(13, ACSR&0b00100000); if(ACSR&0b00100000) Serial.println("1"); else Serial.println("0"); Осциллограмма на 13пине вышла такая: Откуда-то берутся ложные срабатывания. Ок, подключился к самому датчику: Все вроде четко, никаких лишних сигналов. Увеличил:
  9. эта штука подает питание на мотор, на нее идет шим. по маркировке не бьется, подключение перепроверил, да все именно так и работает
  10. Ну в данном случае, почти ничего) Ее я тоже в самом начале попробовал сделать, отладка по светодиодам - наше всё)
  11. Не, моргалка не дает ничего. Пакеты шлются каждые 500 мс, сегодня осциллографом мерил. А сами сигналы не различишь, весь пакет 40-50 мсек это 21 бит (пока у меня так получается). Видно просто как один мырг)
  12. Это первое с чего я начал, перерисовал обвязку avr-ки 328р. Помогает эта схема только в определенной степени, естественно. Надо ж всё в совокупности смотреть. Тоже уже склоняюсь к такому варианту, сделать отдельно из датчика и ардуины что-то, что писало бы в лог ком-порта пойманные байты. Сейчас вот пробовал прошить машинку, чтоб зацепиться за зеленый/красный сигнал светофора. Исходя из осциллограммы написал код, чтоб понимать 101 или 010. А машинка чтоб отмыргивала стопарями и поворотниками то, что получает. Тк вот оказалось там еще 3й вид пакетов периодически приходит. Это регистр внутреннего компаратора, он определяется этим битов в регистре. Потому он всегда и один и тот же. Вот эта точка: Тоже верно. На кварце платы машинки написано 4 ORG8 7J (может ORC8, все в говнище, не понятно). Не бьется в инете.
  13. Кажется начинаю вникать в этот сизIFов код... Открыл нотпадом++, получается то, что подсвечено красным слева (продублировал красными стрелками), это есть входной if. А на выходе мы должны получить только то, что я выделил желтым? А именно 10101010, adress, 10010110 или 255 (т.е. 1111 1111). Больше всего похоже на сигнал красного светофора. Еще посетители снимают на телефон постоянно)
  14. Как говорили коллеги, да и по коду так похоже, что задний ИК просто светит или не светит. (строки 698 - 707) И еще в паре мест он включается, но там тоже тупо на on/off. // STOP RED SIGNALS ***************************************************************************** if ((clcstopsignals==0)&&(stopsignalson==0)) { PORTD&=0b11111101; // Stop RED led OFF } if ((clcstopsignals>=stopsignals)||(stopsignalson==1)) { PORTD|=0b00000010; // Stop RED led ON clcstopsignals=stopsignals; } Отличная мысль! Прочитал сейчас статью на вики, и да, очень похоже на то, что вы написали в разделе "Кодирование". Только этих кодировок сейчас на одной вики, вон, штук 15 написано. Но все равно спасибо, надо глянуть. И да. Светофор посылает пакеты с частотой примерно 3 Гц. Конечно логично иметь какой-то байт синхронизации, т.к. если машинка выезжает из за поворота, то может поймать только кусок пакета. Но я в упор не нахожу по коду место, где он определяется как "стартовый" или как-либо еще. Тут очень здорово, что код написан чисто на регистрах, безо всяких кастомных библиотек, исходники которых ушли вместе с челом который это придумывал) По коду я вижу вот что (строки 226 - 259): while (1) { // НАЧИНАЕМ БЕСКОНЕЧНЫЙ ЦИКЛ y=ACSR&0b00100000; // IR start Read FrontIR ******************************************************** // ПОДСКАЗКА ЧТО НАЧИНАЕМ ЧИТАТЬ ПЕРЕДНИЙ ПРИЕМНИК НА ТАЧКЕ if (y==0) { // НАЧИНАЕМ ЗДОРОВЕННЫЙ if (НА 300 СТРОК, НО ЭТО НЕ ВАЖНО) adr=0; // ОБНУЛЯЕМ ПЕРЕМЕННУЮ adr В КОТОРУЮ БУДЕМ СОХРАНЯТЬ ПОЛУЧЕННЫЕ БИТЫ x1=0; // х1 и х2 ПОТОМ СКЛЕЯТСЯ В ОДИН (х1 - СТАРШИЙ БИТ HIGH, х2 - МЛАДШИЙ LOW) x2=0; _delay_us(19775); // ЗАДЕРЖКА 20 мс КРАТНА 2мс, Т.Е. МЫ ПРОПУСКАЕМ "СТАРТОВЫЕ" 10 БИТ? ТАК ЧТО ЛИ? y=ACSR&0b00100000; // bit 0 // ВООБЩЕ НА СКОЛЬКО Я ПОНЯЛ ASCR ЭТО РЕГИСТР ВНУТРЕННЕГО КОМПАРАТОРА, МЫ ЕГО ЧИТАЕМ... if (y==0) adr|=0b00000001; // И ЕСЛИ ОН РАВЕН НУЛЮ, ТО ЗАПИСЫВАЕМ 1 В НУЛЕВОЙ БИТ БАЙТА adr? А ЕСЛИ НЕ РАВЕН, ТО ЧТО? НЕ ПОЙМУ _delay_us(7910); // ТУПО ЖДЕМ 8 мс (ПРИ ДЛИТЕЛЬНОСТИ 1 БИТА В 2 мс ЭТО КАК-ТО МНОГОВАТО). ТОЖЕ НЕ ПОНЯТНО. y=ACSR&0b00100000; // bit 1 // НУ И ТАК ЕЩЕ 7 РАЗ if (y==0) adr|=0b00000010; _delay_us(7910); y=ACSR&0b00100000; // bit 2 if (y==0) adr|=0b00000100; _delay_us(7910); y=ACSR&0b00100000; // bit 3 if (y==0) adr|=0b00001000; _delay_us(7910); y=ACSR&0b00100000; // bit 4 if (y==0) adr|=0b00010000; _delay_us(7910); y=ACSR&0b00100000; // bit 5 if (y==0) adr|=0b00100000; _delay_us(7910); y=ACSR&0b00100000; // bit 6 if (y==0) adr|=0b01000000; _delay_us(7910); y=ACSR&0b00100000; // bit 7 if (y==0) adr|=0b10000000; Я курсорами осциллографа прополз всю осциллограмму, четко шаг по 2 мс получается по дельта-Т
×
×
  • Create New...