Ви не увійшли.
Народ кто нить данные снимал с Acer x152h.
Балласт то включится а материнская плата выдаст ошибку если не будет обмена данных с балластом.
Раз дельнейшие опыты привели к таким данным то ваш проектор примитивен и в нём нет UART.
Как решили проблему с полосами юстировку сделали или нет.
Доброе время суток старожилам форума !!!
- тоже долго мудохался с проектором, перечитал кучу литературы и перелистал кучу форумов, так-же наступил на кучу граблей (долго рассказывать) поэтому решил вам помочь как обойти балласт самым простым способом, долго рассказывать не буду, по схеме вы все сами поймете;http://forum.arduino.ua/img/members/1251/Sanyo-XU300-3.jpg
UPD: В таком режиме лампа выключается через кнопку Power спустя 1:30-минуты вместе с вентиляторами.
UPD2: проблема заключалось в том что "вылетел" резистор в цепи BLAST_AC подающий питание +3V на 2-ю ножку NAND (UART - оказался исправным)
Во первых здравствуй во вторых ты не обманул материнскую плату так как твой балласт живой у тебя когда я тебе помог разобраться в чём проблема оказалось неправильные уровни сигнала uart.
После того как ты установил резисторы чтоб уровни подтянуть балласт запустился только был лишний резистор который стоял на оптроне включения /выключения лампы из за этого у тебя балласт включался сразу а не по сигналу с материнской платы. Далее выявили что у тебя сигнал на включение /выключение лампы не проходит из за обрыва резистора после того как вы остановили цепь у вас проектор заработал в штатном режиме.
Исходя из всех данных ваша ситуация не подходит для этого форума так как нет никакого обхода материнской платы и не создавался ни какой эмулятор а просто отремонтировали мы с вами ваш проектор.
Хотя в начале вы не хотели его ремонтировать а хотели его сразу как нибудь обмануть но после моих убеждений мы с вами его оживили.
Если бы я сам его ковырял давно бы получил нужные данные а так чел живёт в банкоке и он не очень силён в электронике то приходится получать данные почти в слепую.
Но мы не боимся трудностей и всё получится.
Не стоит удалять переделка тема ещё та тут помогаю челу переделать асер dlp но пока данные кривые какие то у него.
Не могу понять почему такие данные но думаю добьем мы его проектор и получим нужный результат.
Ух давно я тут не был а народ то с проекторами попёр.
Привет NoName.
Вижу ты тут один отдуваешься за всех.
Hello Участник
Respect. Your tag is great.
I want to rebuild my ACER H6510BD on LED.
could you help me?
The circuit almost looks like yours, but it
does not work for the ACER.
In a ACER is installed Osram PT VIP 05 Compact.darek.nassa(@)yandex.com
Hi need usb logic analyzer since each projector communication codes are different.
Well, and connect this pattern to remove data exchange fully working projector with a lamp
JBS, Вы молодцы, поздравляю
Спасибо.
Я же вам говорил что я электронщик вот нормальный результат изготовления платы всё цивильно.
Вот тут в ворде всё написал и плата там для лута есть.
https://cloud.mail.ru/public/KmTF/662Nt2THh
Плата получилась маленькая 4x5 сантиметра ардуино сделал чтоб можно было отсоединять на панельке вставляется в плату.
Очень удобно было при отладке снял записал вставил.
Тут видео.
Видео работы эмулятора
JBS, Вы правы, больше никакой демагогии в этой теме.
Чтоб тебе стыдно было выкладываю код рабочий.
Да потратил много времени и нервов плюс знакомые помогли но всё же обошелся без тебя.
int data;
int StatusLamp;
int flag=0;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
#define BUTTON 2
void(* resetFunc) (void) = 0; // Reset MC function
void setup() {
StatusLamp = INIT1;
Serial.begin(4800);
pinMode(BUTTON,INPUT);
}
void loop() {
if(flag==1)
{
Serial.end();
delay(5000);
StatusLamp = INIT1;
Serial.begin(4800);
flag=0;
}
}
void func_unique_request( int data )
{
switch ( data )
{
case 0xF2: Serial.write(0x01); break;
default: Serial.write(0x00); break;
}
}
void func_INIT1( int data )
{
switch ( data )
{
case 0x00: Serial.write(0x00); break;
case 0xF2: Serial.write(0x01); break;
case 0xF4: Serial.write(0x1F); break;
case 0x22: Serial.write(0x22); break;
case 0x81: Serial.write(0xDC); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = INIT2;
}
void func_INIT2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x8C); break;
case 0x10: Serial.write(0x10); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK1;
}
void func_WORK1( int data )
{
if(digitalRead(BUTTON)==0)
{
switch ( data )
{
case 0x81: Serial.write(0x9A); break;
default : func_unique_request(data); break;
}
}
else
{
Serial.write(0x18);
delay(100);
Serial.write(0x00);
flag=1;
//resetFunc(); //вызов
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK2;
else StatusLamp = INIT1;
}
void func_WORK2( int data )
{
if(digitalRead(BUTTON)==0)
{
switch ( data )
{
case 0x81: Serial.write(0x99); break;
default : func_unique_request(data);
}
if ( data == 0x81 ) StatusLamp = WORK1;
else StatusLamp = INIT1;
}
else
{
Serial.write(0x18);
delay(100);
Serial.write(0x00);
flag=1;
//resetFunc(); //вызов
}
}
void serialEvent()
{
data = Serial.read();
switch ( StatusLamp )
{
case INIT1: func_INIT1(data); break;
case INIT2: func_INIT2(data); break;
case WORK1: func_WORK1 (data); break;
case WORK2: func_WORK2 (data); break;
}
}
Ура заработала.
Осталось сброс сделать а то когда выключаешь проектор ардуино не сбрасывает значения. Как это сделать помогите я так полагаю завести на какой то вход сигнал о включении лампы который сейчас свободен и по его сигналу делать сброс. а может в коде где ошибка.
Да и интересный факт ардуино должна быть всегда питаться ато не запускается. А питание 3.3 вольта появляются только после инициализации вот ине запускалась она пока я отдельно не запитал её.
int data;
int StatusLamp;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
void setup() {
StatusLamp = INIT1;
Serial.begin(4800);
}
void loop() {
}
void func_unique_request( int data )
{
switch ( data )
{
case 0xF2: Serial.write(0x01); break;
default: Serial.write(0x00); break;
}
}
void func_INIT1( int data )
{
switch ( data )
{
case 0x00: Serial.write(0x00); break;
case 0xF2: Serial.write(0x01); break;
case 0xF4: Serial.write(0x1F); break;
case 0x22: Serial.write(0x22); break;
case 0x81: Serial.write(0xDC); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = INIT2;
}
void func_INIT2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x8C); break;
case 0x10: Serial.write(0x10); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK1;
}
void func_WORK1( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x9A); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK2;
}
void func_WORK2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0x99); break;
default : func_unique_request(data);
}
if ( data == 0x81 ) StatusLamp = WORK1;
}
void serialEvent()
{
data = Serial.read();
switch ( StatusLamp )
{
case INIT1: func_INIT1(data); break;
case INIT2: func_INIT2(data); break;
case WORK1: func_WORK1 (data); break;
case WORK2: func_WORK2 (data); break;
}
}
Сделал инверсию канала как martinways получились немного другие данные.
https://cloud.mail.ru/public/BJRt/EJZ756F3F
Чёт у меня даже инициализация не проходит на ардуино молчит проектор как без балласта.
Замучился уже надо думаю оптроны сменить подозрение на хилые оптроны.
Только плин в радио лавке нет оптронов придётся со старых блоков питаний выдрать и заново экспериментировать.
Балласт Материна
ИНИЦЫАЛИЗАЦИЯ
0x7F
0xF2
0x01 0xF4
0x1F 0x22
0x22
ПОДЖИГ ЛАМПЫ
0x81
0x0D
РАБОТА
0x81
0x8E 0x10
0x10 0x81
0x8E 0x81
0x8F 0x81
0x90 0x81
0x91 0x81
0x92 0x81
0x93 0x81
0x94 0x81
0x95 0x81
0x96 0x81
0x97 0x81
0x98 0x81
0x99 0x81
0x9A
Ух блин чуть не очумел отказал чужой балласт аж поплохело малость.
Вскрытие выявило что помер оптрон ответа балласта заменил его и балласт заново заработал.
Уф пронесло не хватало чужой балласт угробить.
Снова снял данные ни чем не отличаются точно такие же.
Пробовал прописать вот так но не работает.
int data;
int StatusLamp;
#define INIT1 1
#define INIT2 2
#define WORK1 3
#define WORK2 4
void setup() {
StatusLamp = INIT1;
Serial.begin(4800, SERIAL_8E1);
}
void loop() {
}
void func_unique_request( int data )
{
switch ( data )
{
case 0x7F: Serial.write(0x00); break;
default: Serial.write(0x00); break;
}
}
void func_INIT1( int data )
{
switch ( data )
{
case 0x7F: Serial.write(0x00); break;
case 0xF2: Serial.write(0xF0); break;
case 0xF4: Serial.write(0xFF); break;
case 0x22: Serial.write(0xFF); break;
case 0x81: Serial.write(0xFF); break;
case 0x10: Serial.write(0xDC); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = INIT2;
}
void func_INIT2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0xFE); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK1;
}
void func_WORK1( int data )
{
switch ( data )
{
case 0x81: Serial.write(0xFF); break;
default : func_unique_request(data); break;
}
// code change status lamp to step2 ( example 0x81 )
if ( data == 0x81 ) StatusLamp = WORK2;
}
void func_WORK2( int data )
{
switch ( data )
{
case 0x81: Serial.write(0xFF); break;
default : func_unique_request(data);
}
if ( data == 0x81 ) StatusLamp = WORK1;
}
void serialEvent()
{
data = Serial.read();
switch ( StatusLamp )
{
case INIT1: func_INIT1(data); break;
case INIT2: func_INIT2(data); break;
case WORK1: func_WORK1 (data); break;
case WORK2: func_WORK2 (data); break;
}
}
И ещё балласт включается от другого оптрона по логическому состоянию 1 а выключение тоже происходит по тому же оптрону логическим состоянием 0. Нет никакого кода от материнки только логическое состояние как в ардуино реализовывать тоже самое. Что касается электроники я могу сделать плату цивильную чтоб можно было присоединять к ардуино заготовка уже есть а вот код написать самостоятельно не смогу.
Не могу понять как первоначальные данные применить ведь вначале балласт даёт код 0x00 на что потом материка отвечает 0x7F и следом материнка запрашивает 0xF2 и пошло поехало дальше .
Почему именно балласт задаёт вначале весь ход или это своеобразная аутентификация типа баласт исправен готов к работе а метерика говорит хорошо. Или наоборот происходит так балласт говорит что сброшены настройки по дефолту а мать говорит что сброс принят. Вот что самое интересное как правильно прописать этот момент. Ну и конечно же момент с вторичными запросами когда работает уже.
что то не так в вашем королевстве
если есть возможность, попросите знакомого с осцилографрм посмотреть без каких либо искажений сигнал
martinways тоже делал инверсию так что должно работать правильно.
Только он огород городил с резисторами чтоб инверсию делать а я проще пошел программно про инвертировал. Инверсия стоит только на ответ от балласта. Запросы материнки не инвертированы пишутся так как есть. Могу подключить два переходника UART и сними данные снять. Но суда по тем данным которые я снимал ранее данные будут такими же.
Ошибка вот такая.
Arduino: 1.6.8 (Windows 7), Плата:"Arduino Nano, ATmega328"
\Documents\Arduino\test2\test2.ino: In function 'void serialEvent()':
test2:2: error: 'data' was not declared in this scope
data = Serial.read(); //set 'data' to input received from ballast
^
test2:7: error: 'send' was not declared in this scope
send++;
^
exit status 1
'data' was not declared in this scope
привет, посмотрел на ваш лог, что то похожее на то что вы в таблице указали, единсвенно что мне не нравится в логе сигнал инвертирован мне помнится в ЮАРт данные нулем передаются, так что тут может быть ошибка
void serialEvent() {
data = Serial.read(); //set 'data' to input received from ballast
if (data == 0x00) Serial.write(0x7F);
if (data == 0x22) Serial.write(0xFF);
if (data == 0x81)
{
send++;
Serial.write(0xFE + ( send & 0x01) ); // 0xFE or 0xFF
}}
для начала..
А если инверсию не делать то ответ будет только таким 0x00 .
Вот самые первые запросы. Один код балласта 0xF7 меняется на 0xFF когда уже происходит пуск на не остывшей лампе но я думаю нечего страшного.
Помоги пожалуйста так как в программировании я ноль.
балласт материнка
0x00 Самый первые запросы при включении.
0x7F
0xF2 Начинается под жиг лампы.
0xF0 0xF4
0xFF 0x22
0xFF 0x81
0xF7 0x81
0xFF 0x10
0xDC
0x81 Лампа полностью разожглась.
0xFE
0x81 Дальнейшие периодические запросы и ответы.
0xFF
Чёт я в тупик ушел не могу понять с чего теперь начать код.
Вот по дольше подержал. https://cloud.mail.ru/public/81me/yBwybr7iY
Ну вот теперь нормальные данные https://cloud.mail.ru/public/68Xn/sqMcrbgWP.
Один канал подтянул на плюс и включил инверсию.
а смысл развязывать? в ЛА достаточно высокоомный вход что б нагружать
2. почитайте в документации как развязали ваш ЛА.
там вполне реально могут стоять ADUM ( но тут конечно все от цены зависит , если < 20 баксов то простеньний буфер стоит ),
в общем развлекайтесь, успеха )
Китаец стоит 500р вот http://www.ebay.com/itm/New-USB-Logic-A … 1541710029 весь анализатор нет там того что есть у оригинала. уже начитался.
Забыл упомянуть сильно экспериментировать не могу ведь балласт не мой и скоро отдавать надо.
Чувак тоже ждёт результаты а тут праздники не могу резисторы купить для подтяжки старьё копать не охота вот и жду когда вторник а там снова сниму данные надо уже закончить эту эпопею как всё закончу выложу готовый продукт на форумах чтоб люди пользовались и могли повторить и переделать проекторы такие же.
фиксируйте события по шкале времени, когда будете готовить файл для анализа
1. включение
2. поджиг )
3. работа
4 выключение
будет проще разбираться в логенасчет подтяжки , не уверен - Вы включили работающую систему, и подключились в разрыв , все уровни должны быть выставлены и подтянуты
проверяйте подключение, что то тут не так.
Дело в том что я не в разрыв. Я припаял провода к оптронам и вывил отдельные оптроны и через эти оптроны я читаю данные поэтому и нужна подтяжка.
Я уже через них прошлый раз данные через юарт переходники читал.
привет,
да, что то не так, для начала роскажите что происходило за 60 сек, проектор запустился? что измеряли
настройки параметров порта Async Settring > Edit Setting > Bit RATES, там точно не должен быть 4200 (как у вас в файле )
но по вышей картинке непонятная скорость
я бы предположил что 4800/9600/115200 нужно ставить , но они (bps) не просматриваются там
напомните что за проектор, и как собрали, фотку дайте что ли, как подключились,
Уже понял что с данными надо подтяжку входов сделать на плюс . Проектор epson eb 92.
А вот проектор включается сразу разжигает лампу и нечего больше не происходит просто переходит в другой режим перестаёт мигать светодиод начинает гореть появляется изображение. Как бы всё ничего сверх естественного.