#76 2015-04-08 22:42:04

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Почти УРА))) Вобщем, не выдержал купил я ардуино, удалось сегодня его правильно подключить, чтобы TX с ардуино инвертировался для мамки проектора, короче проектор уже запускается как с балластом, но выдает ошибку как будто лампы нет, сижу ищу значения, которые упустил, без которых не хочет "видеть лампу", осталось всего ничего)) Насчет частоты Вы оказались правы - 4800 even parity

#77 2015-04-09 07:46:00

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Есть проблема с кодом. Вобщем есть первая группа сигналов (слева сигнал от мамки, справа от балласта)

0xF2 - 0x04
0xF4 - 0xFF
0x40 - 0x40
0x32 - 0x32
0x84 - 0x02
0x83 - 0x64
0x81 - 0x17

На основе кода с буржуйского форума вставил свои значения, получилось

int data;

void setup() {
  Serial.begin(4800, SERIAL_8E1);
}

void loop() {
}

void serialEvent() {

  data = Serial.read();

  if (data == 0)
    Serial.write(data);
  if (data == 0xF2)
    Serial.write(0x04);
  if (data == 0xF4)
    Serial.write(0xFF);
  if (data == 0x40)
    Serial.write(0x40);
  if (data == 0x32)
    Serial.write(0x32);
  if (data == 0x84)
    Serial.write(0x02);
  if (data == 0x83)
    Serial.write(0x64);
    if (data == 0x81)
    Serial.write(0x17);
}

Код срабатывает отлично, но дальше идет вторая группа сигналов:

0x81 - 0x97
0x40 - 0x40
0x34 - 0x34
0x84 - 0x04
0x83 - 0x46

начинаются регулярные запросы рабочего режима (с промежутком 1 сек)
0x81 - 0x98
0x92 - 0x1A

0x81 - 0x97
0x92 - 0x1B

0x81 - 0x98
0x92 - 0x1B

Как видите, на уже прописанный запрос 0x81 мамка уже ждет другой ответ 0x97, а не 0x17, так же и далее с другими запросами 0x84 и  0x83.
То есть нужно как-то прописать, чтобы в первый раз ардуино ответил на запрос 0x81 - 0x17, а на второй раз уже 0x81 - 0x97, на третий раз 0x81 - 0x98,
также на запрос 0x84 в первый раз ответил 0x02, а во второй раз 0x04, ну и так далее. Как это прописать в коде??

#78 2015-04-09 09:11:50

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

поздравляю с прогрессом )
там где 2 байтные ответы
if (data == 0xХХ )  {  Serial.write(0xX1); Serial.write(0xX2); }
а то их не прописали, непорядок )

typedef enum {
INIT     = 0,
WORK     = 1,
SHUTDOWN = 2 // исправил, (тут запятая не ставится )

} TE_LampStatus;

TE_LampStatus  LampStatus = INIT;


void setup() 
{
  Serial.begin(4800, SERIAL_8E1);
}
void loop() {
}

void serialEvent() {
  data = Serial.read();
  
  
  
  switch ( LampStatus )
  {
  case INIT:
       if (data == 0x00 )    Serial.write(data);
  else if (data == 0xF2 )    Serial.write(0x04);
  else if (data == 0xF4 )    Serial.write(0xFF);
  else if (data == 0x40 )    Serial.write(0x40);
  else if (data == 0x32 )    Serial.write(0x32);
  else if (data == 0x84 )    Serial.write(0x02);
  else if (data == 0x83 )    {  Serial.write(0x64); LampStatus =  WORK; }

	break ;

  case WORK:
  if (data == 0x81)    Serial.write(0x17);
   .
   .
   .

	break ;

	
  case SHUTDOWN:
	break ;
	
  
  }

оформляйте документ, что происходит после какого запроса ) ныне живущие будут вам благодарны

Редактировался NoName (2015-04-09 09:16:55)

#79 2015-04-09 11:00:52

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Ваш код с какой-то ошбкой видимо, прога пишет "Ошибка компиляции" , добавлял дополнительные скобки - не помогло

#80 2015-04-09 11:45:55

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

typedef enum  вроде не принимает , да и остальное тоже )))  скачайте прогу для прошивки ардуинки, в ней формируются скетчи и все это компилируется, там есть слева кнопочка ПРОВЕРИТЬ
http://arduino.cc/download_handler.php

Редактировался martinways (2015-04-09 11:47:08)

#81 2015-04-09 12:52:36

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

тогда так
#define INIT             0
#define WORK           1
#define SHUTDOWN   2


int  LampStatus = INIT;

#82 2015-04-09 14:56:25

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

не, чето нифига не получается, я же в этом синтаксисе нуль, опять вся надежда на Вас)))

#83 2015-04-09 15:10:09

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

ок, вечером

#84 2015-04-09 22:21:08

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

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 0xF2:  Serial.write(0x04); break;
  default:   Serial.write(0xdata); break;
 }
 }

void func_INIT1( int data )
{
 switch ( data )
 {
  case 0x00:  Serial.write(0x00); break;
  case 0xF2:  Serial.write(0x04); break;
  case 0xF4:  Serial.write(0xFF); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x32:  Serial.write(0x32); break;
  case 0x84:  Serial.write(0x02); break;
  case 0x83:  Serial.write(0x64); break;
  case 0x81:  Serial.write(0x17); 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(0x97); break;
  case 0x84:  Serial.write(0x04); break;
  case 0x83:  Serial.write(0x64); break;
  default  :  func_unique_request(data); break;   
 }
 // code change status lamp to stepX ( example 0x81 ) 
 if ( data ==  0x83 )   StatusLamp = WORK1;
}

 
void func_WORK1( int data )
{
 switch ( data )
 {
  case 0x81:  Serial.write(0x98); break;
  case 0x92:  Serial.write(0x1B); break;
  default  : func_unique_request(data); break; 
 }
 // code change status lamp to stepX ( example 0x81 ) 
 if ( data ==  0x81 )   StatusLamp = WORK2;
}


void func_WORK2( int data )
{
 switch ( data )
 {
  case 0x81:  Serial.write(0x97); break;
  case 0x92:  Serial.write(0x1B); 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;
}

}

Sketch uses 2 180 bytes (6%) of program storage space. Maximum is 32 256 bytes.

но пока не пропишете по правильному алгоритмы запросов материнки, будут вопросы к эмулятора
код без комментариев, заберетесь.  будут вопросы пишите.

#85 2015-04-09 23:12:00

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

копирую  -вставляю в прогу - все-равно ошибка компиляции


sketch_apr09a.ino:23:27: error: invalid suffix "ta" on integer constant

Редактировался martinways (2015-04-09 23:12:36)

#86 2015-04-09 23:21:38

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Вот вставляю код из буржуфорума - принимает, Ваш - нет.

#87 2015-04-09 23:23:58

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Вот теперь приняло Ваш файл - глюки какие-то, сейчас буду шить ардуинку))

#88 2015-04-09 23:28:03

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

проверьте связи, выгнали с компа, не проверял код, не форум, а чат какой-то )
и проработайте алгоритм.  3-5 значениями состояний, вероятно, не обойтись.

#89 2015-04-09 23:44:22

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Добавил 2 строчки нужных ответов - и УРА!!!!! Пашет как миленький, сигнальчики идут , арудинка отвечает. Ну, дорогой мой друг, теперь я могу отдать лог анализатор в Ваши хорошие руки - пишите на мыло куда высылать нов почтой))

Только есть 1 небольшая проблемка - если выключить проектор с пульта, а потом включить - то уже будет ошибка, так как ардуинка во втором режиме, а не первом, надо еще режим Shutdown сделать, также хотелось бы прописать включение драйвера светодиода путем назначения сигнала на какую-нибудь ногу ардуинки.

Редактировался martinways (2015-04-09 23:50:25)

#90 2015-04-10 00:01:07

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

алгоритм прорабатывайте, от ЛА не откажусь ), но пусть пока у вас будет, проект то не закончен.

"прописать включение драйвера светодиода"
укажите место где как думаете лампа включается и выключается
поздравляю )
, и схему свою покажите, подозреваю что ее нужно доработать, системщикам покажу, пусть подумают.

Редактировался NoName (2015-04-10 00:03:03)

#91 2015-04-10 08:27:18

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Обнаружилась проблемка - 3-4 минуты работает и перходит в ошибку, на лог анализаторе показывает, что мамка посылает в это время дополнительный пакет данных, о существовании которого я не знал (вот жеж намудрили эти хитрые япошки, я так смотрю у меня самый сложный протокол из всех существующих проекторов), просто я уже разобрал схемку для снятия данных с лампы, сегодня по новой спаяю и запишу.
Относительно того, когда включать светодиод  - можно в начале второго режима INIT2
Вот мой теперешний код, добавьте в него эту функцию

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 0xF2:  Serial.write(0x04); break;
  default:   Serial.write(0x00); break;
 }
 }

void func_INIT1( int data )
{
 switch ( data )
 {
  case 0x00:  Serial.write(0x00); break;
  case 0xF2:  Serial.write(0x04); break;
  case 0xF4:  Serial.write(0xFF); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x32:  Serial.write(0x32); break;
  case 0x84:  Serial.write(0x02); break;
  case 0x83:  Serial.write(0x64); break;
  case 0x81:  Serial.write(0x17); 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(0x97); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x34:  Serial.write(0x34); break;
  case 0x84:  Serial.write(0x04); break;
  case 0x83:  Serial.write(0x46); break;
  
  default  :  func_unique_request(data); break;   
 }
 // code change status lamp to step2 ( example 0x81 ) 
 if ( data ==  0x83 )   StatusLamp = WORK1;
}

 
void func_WORK1( int data )
{
 switch ( data )
 {
  case 0x81:  Serial.write(0x98); break;
  case 0x92:  Serial.write(0x1B); 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(0x97); break;
  case 0x92:  Serial.write(0x1B); 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 (2015-04-10 08:32:10)

#92 2015-04-10 09:11:17

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

http://arduino.cc/en/Tutorial/Blink?fro … linkingLED
когда будете копировать текст -
сначала скопируйте в блокнот, а потом в среду

и настоятельно рекомендую взять последний сниф и обработать его,
выделить цветом повторяющиеся  запросы
добавить комментарии, пусть они будут субъективны, но хоть что то.

данных лог анализатора будет достаточно для добавления доп пакетов )
ручками обработайте.

а в ошибку он переходит потому что не все запросы прописали, там были еще  запросы температуры, 2 байтные ответы
делайте документ )
 

в setup добавить 
pinMode(12, OUTPUT);
digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW
// не забудьте о резисторе в цепи LED
void func_INIT1( int data )
{
 switch ( data )
 {
  case 0x00:  Serial.write(0x00); break;
  case 0xF2:  Serial.write(0x04); break;
  case 0xF4:  Serial.write(0xFF); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x32:  Serial.write(0x32); break;
  case 0x84:  Serial.write(0x02); break;
  case 0x83:  Serial.write(0x64); break;
  case 0x81:  Serial.write(0x17); break;
  default  :  func_unique_request(data); break;  
 }

 // code change status lamp to step2 ( example 0x81 ) 
 if ( data ==  0x81 ) 
{
    StatusLamp = INIT2;
   digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)
}

}

Редактировался NoName (2015-04-10 09:15:08)

#93 2015-04-10 15:58:48

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Итак, 3 часа мучил проектор, но таки выбил из него признание)) дописал код, теперь все работает как часики, логический анализатор - это конечно сила, огромное спасибо, что посоветовали его купить, без него ничего не получилось бы 100%.
Правда не заморачивался с включением светодиода, в принципе острой необходимости в этом нет, так как у меня с мамки при включении проектора подается питание 3.3в на оптроны балласта, этим выходом я могу, во-первых, запитать саму ардуинку (надеюсь хватит силы тока), а во вторых запустить драйвер светодиода. Но вообще можно было бы конечно и сделать эту функцию в самой ардуинке. Думаю мне придется купить ардуинку на 3.3в, а то у меня 5 вольтовая, чето на шлейфе питания материнки не нашел 5 вольт, так что хочу запитать её прямо со шлейфа идущего на оптроны балласта (который я благополучно катапультирую и вставлю на его место драйвер светодиода.

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 0xF2:  Serial.write(0x04); break;
  default:   Serial.write(0x00); break;
 }
 }

void func_INIT1( int data )
{
 switch ( data )
 {
  case 0x00:  Serial.write(0x00); break;
  case 0xF2:  Serial.write(0x04); break;
  case 0xF4:  Serial.write(0xFF); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x32:  Serial.write(0x32); break;
  case 0x84:  Serial.write(0x02); break;
  case 0x83:  Serial.write(0x64); break;
  case 0x81:  Serial.write(0x17); 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(0x97); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x34:  Serial.write(0x34); break;
  case 0x84:  Serial.write(0x04); break;
  case 0x83:  Serial.write(0x46); break;
  
  default  :  func_unique_request(data); break;   
 }
 // code change status lamp to step2 ( example 0x81 ) 
 if ( data ==  0x83 )   StatusLamp = WORK1;
}

 
void func_WORK1( int data )
{
 switch ( data )
 {
  case 0x81:  Serial.write(0x98); break;
  case 0x92:  Serial.write(0x1B); break;
  case 0x30:  Serial.write(0x30); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x34:  Serial.write(0x34); break;
  case 0x84:  Serial.write(0x04); break;
  case 0x83:  Serial.write(0x46); 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(0xB6); break;
  case 0x92:  Serial.write(0x2A); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x30:  Serial.write(0x30); break;
  case 0x34:  Serial.write(0x34); break;
  case 0x83:  Serial.write(0x42); break;
  case 0x84:  Serial.write(0x00); 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;
}

}

Только что обнаружил, что атмега ардуинки как раз и питается от 3.3в через стабилизатор, так что подключил её прямо к шлейфу и все работает гууд)) В скором времени выложу подробную инструкцию по переделке со своей схемой, единственное, что я до конца не понял за время моих скитаний - это как определить частоту, ( кроме метода тыка конечно) но я думаю, что у большинства проекторов частота или 4800 или 9600, судя по сообщениям с других форумов.

Редактировался martinways (2015-04-10 16:11:23)

#94 2015-04-10 16:18:45

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

поздравляю )
но не доделали режим выключения, это раз.

во вторых по хорошему нужно решать один вопрос,
договоритесь, пусть нарисуют схему принципиальную . 
вот если бы еще народ подтянулся, что б сделать полную замену платы балласта, с источником тока, что б можно было просто заменить платы. но это уже так - развитие, в единичном варианте не всегда оправдано. 

и покажите свою релизную схему, покажу спецам когда увижу. могу посодействовать что б нарисовали ( задача в чистом виде не моя, иначе помог бы  )

параметры юарта -  осциллограф или ЛА )

Редактировался NoName (2015-04-10 16:20:32)

#95 2015-04-11 10:33:04

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Схема подключения проста до безобразия, там требуется обязательно инвертировать сигнал TX от ардуино, хотел сначала сделать инвертор на полевике, но потом придумал подключить светодиодные контакты оптрона не на плюс и TX ардуино, а на TX и массу, и сигнал на выходе получается наборот

schem.jpg

А вот и само творение - оптроны с резюками напаял на саму ардуинку и подпаял к ней проводки сигнального шлейфа с мамки, питание и масса там присутствуют (в оригинале предназначались для запитки оптронов на балласте). Свободный желтый провод - это сигнал включения лампы, подключу его к драйверу светодиода.
IMG_0210.jpg

Редактировался martinways (2015-04-11 10:37:02)

#96 2015-04-13 14:41:19

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

а что со схемой не так? Там все в порядке, дело в том, что у ардуино очень мощная подтяжка на TX-RX ножках, я пробовал замыкать на массу амперметром - показало 60ма  - этого с головой хватит для поджига светодиода второй оптопары или открытия фототранзистора первой оптопары. Работает просто и-де-аль-но! Правда еще подолбался над кодом, проектор иногда вываливался в ошибку при нажатии на пульте кнопки после простоя в рабочем режиме 7 минут. Разобрался в принципе переключениия режимов (work1 - work2), повторно  проанализировал запись работы лампы (опять спасает лог анализатор), добавил-убрал нужные комманды, получился такой код

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 0xF2:  Serial.write(0x04); break;
  default:   Serial.write(0x00); break;
 }
 }

void func_INIT1( int data )
{
 switch ( data )
 {
  case 0x00:  Serial.write(0x00); break;
  case 0xF2:  Serial.write(0x04); break;
  case 0xF4:  Serial.write(0xFF); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x32:  Serial.write(0x32); break;
  case 0x84:  Serial.write(0x02); break;
  case 0x83:  Serial.write(0x64); break;
  case 0x81:  Serial.write(0x17); 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(0x97); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x34:  Serial.write(0x34); break;
  case 0x84:  Serial.write(0x04); break;
  case 0x83:  Serial.write(0x46); break;
  
  default  :  func_unique_request(data); break;   
 }
 // code change status lamp to step2 ( example 0x81 ) 
 if ( data ==  0x83 )   StatusLamp = WORK1;
}

 
void func_WORK1( int data )
{
 switch ( data )
 {
  case 0x81:  Serial.write(0x98); break;
  case 0x92:  Serial.write(0x1B); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x30:  Serial.write(0x30); break;
  case 0x84:  Serial.write(0x00); break;
  case 0x83:  Serial.write(0x42); break;
  default  : func_unique_request(data); break; 
 }
 // code change status lamp to step2 ( example 0x81 ) 
 if ( data ==  0x83 ) StatusLamp = WORK2;
}


void func_WORK2( int data )
{
 switch ( data )
 {
  case 0x81:  Serial.write(0xB6); break;
  case 0x92:  Serial.write(0x2A); break;
  case 0x40:  Serial.write(0x40); break;
  case 0x34:  Serial.write(0x34); break;
  case 0x84:  Serial.write(0x04); break;
  case 0x83:  Serial.write(0x46); break;
  default  : func_unique_request(data);  
 }
 if ( data ==  0x83 )   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;
}

}

Вот еще раз как выглядит моя ардуинка, буду вставлять потом её внутрь на место балласта под БП
IMG_0214.jpg

Вы просили фото балласта - вот они, как видите шлейф от материнки варварски отрезан smile

IMG_0211.jpeg
IMG_0212.jpeg

Заказал в Китае светодиод 50ватт с линзой, коллиматором и драйвером на ибее за 17 баксов, не знаю может надо было в Украине найти, а то теперь ждать месяц.

Редактировался martinways (2015-04-13 14:51:39)

#97 2015-04-16 09:22:43

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

утро доброе, ну что ж ждемс  лампу, но плату  нужно переделать, на попробовать хороша, но долговременное использование - не фонтан.
найдется кто-то, что лутом простенькую плату вытравит?

ваша схема благополучно "убивает" опто развязку, так делать нельзя )

#98 2015-04-17 09:58:57

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

у меня всю жизнь рулит навесной монтаж)) переделывать вряд ли буду, так как работает хорошо. А вот с переделкой на светодиод получается лажа, оптическая система настроена на использование лампы, купил 10-ваттный светодиод - яркости никакой, думаю с 50-ваттным будет так же, пошерстил на форумах - требуется точечный источник света, судя по опыту других умельцев получше результаты будут на сверхярком светике Cree 10вт, там светящиеся элементы сконценрированы на меньшей полощади, чем у обычных многоваттных диодов, попробую еще его, но если не хватит мощности, придется подбирать что-то из галлогеновых или ксеноновых ламп , может даже автомобильных.

#99 2015-04-20 15:00:11

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

день добрый, с оптикой воюйте без меня ) уверен у вас все получится )
а плату переделаем, я не отстану  big_smile
нечего развязку рубить на корню.

#100 2015-05-14 23:24:55

martinways
Участник
Зарегистрирован: 2015-03-11
Сообщений: 66

Re: Прошу помощи! Создание эмулятора балласта лампы проектора Epson.

Я тут все экспериментирую с светиками, перебираю один за другим, денег потратил уже прилично, но это же спортивный интерес, изобретать велосипед это ж круто)) Итак, ценой нескольков десятков долларов я пришел к выводу, что нужен только мощный точечный источник света, всем, кто вот тоже переделывает на диод сразу говорю - не тратьте деньги на матричные диоды, пусть они хоть 200ватт - бестолку, получил наконец-то сегодня матрицу 50ватт - в качестве мощного осветителя комнаты - в самый раз, так же чудесно сгодится в качестве кипятильника, то есть в хозяйстве нужная штука, но для проектора ну никак. Перед этим получил точечный 30-ваттник SST-90 - уже неплохо, но все-равно мало, вечером на диагонали 80см смотреть можно очень даже комфортно, а вот днем совсем неважно. Также это при условии наличия коллиматорной линзы - без нее тоже нормальной яркости не получите, линзу выбирать чем поменьше градусов, вот жду на днях 10 градусную, а то сейчас большая 60-градусная, есть надежда, что засветит мой праектар прыятнее. Но появился в природе точечный светик CREE XHP70 , мощность 30ватт, но на выходе 4000 люменов, это в 2 рааз больше, чем у моего устарелого SST90, так что думаю, что круче уже ничего не найти и скорее всего вот это чудо уже удовлетворит мои потребности, так что собираюсь покупать на ибее, продолжение следует...

P/S/ Дорогой друг, потерял ваш имейл, напишите мне свое имя и фамилию, номер склада Новой Почты в Киеве (если Вы из Киева), я ж хочу выслать Вам анализатор , че он у меня будет валяться, проектор вроде норм работает.

Редактировался martinways (2015-05-14 23:25:44)

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела