#101 2015-05-15 14:02:30

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

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

Неактивний

#102 2015-05-15 22:17:13

martinways
Учасник
Зареєстрований: 2015-03-11
Повідомлень: 90

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

У меня уже нет времени переделывать и энтузиазма тоже, так как цель достигнута, в моей понимании - схема предельно проста и доработок не требует, работает идеально, что от нее еще можно хотеть? Я честно говоря даже не понимаю, почему она Вам не нравится - выход из ардуинки мощный, светодиоду оптопары хватает, сигналы отрабатываются на ура. Пару часов погонял проектор  - все гуд. Смысл туда лепить дополнительные транзисторы-ключи и т.д., зачем? Пусть людишки собирают как у меня и всё заработает при условии правильного снятия алгоритма. Так что ЛА ждет Вас))

Неактивний

#103 2015-10-10 22:24:34

Zunt714
Учасник
Зареєстрований: 2015-10-10
Повідомлень: 2

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

Здравствуйте! Я с электроникой достаточно знаком, но вот в программировании мало чего понимаю. Проблема такая: есть проектор benq mp615p, лампа там мертвая, замыкание оптрона не помогает, значит UART. Есть возможность попробовать снять с другого проектора лампу (тоже benq, но другая модель, по характеристикам примерно одинаковые) для снятия осциллограмм с оптронов. Есть возможность заказать ардуинку с программатором для неё, но вот можно ли написать код с осциллограмм? Или может кто знает где взять скетч готовый? Или без лог анализатора не получится? Хелп!))

Неактивний

#104 2015-10-12 17:23:03

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

привет,
если прочитать 6 страниц ))) то видно что без  ЛА не обойтись, и желательно работать с рабочим объектом )
задача изначально была поставлена такая -  убрать штатный блок управления лампой, а какая задача у Вас?

Неактивний

#105 2015-10-12 18:59:16

Zunt714
Учасник
Зареєстрований: 2015-10-10
Повідомлень: 2

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

Здравствуйте, эту тему я всю прочитал))) задача переделывать проекторы на светодиоды (есть клиенты), но все проекторы с мертвыми лампами. Для некоторых можно взять лампу для снятия характеристик. Купить железки тоже не проблема, но во первых я не знаю язык "С" (впрочем как и любой другой), а во вторых под каждый проектор придется писать свой код)))). Может уже появились более простые способы обмануть uart????? Или изучать язык программирования все таки  придется чтобы самому делать эмуляторы баласта? ((

Неактивний

#106 2015-10-12 19:14:16

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

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

лампа без мозгов, но для корректного  запуска нужен в полной мере функционирующий балласт, он без работающей лампы не даст полную картину для эмулирования.
и закажите плату,  хотя martinways`а я так и не убедил )

Неактивний

#107 2015-10-28 17:19:44

martinways
Учасник
Зареєстрований: 2015-03-11
Повідомлень: 90

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

Приветствую, NoName! Последние полгода были у меня не очень приятные (болел), так что проектором не занимался, недавно вытащил, потестил ,пришел к выводу, что проектор дрянь в смысле изображения, мне нужно четко видеть текст. Так что я ему верну его балласт и лампу и продам. Купил другой проектор, классом повыше Epson EH-TW6600, там уже четкость гораздо лучше, все-таки кинотеатральный (хоть и средний) уровень. Так вот обошелся он мне каким-то чудом в 34000 в одном интернет-магазине (при цене в других магазинах 68000) и конечно же я тут же взялся его разбирать))))) Так как я так и не уговорил Вас взять в подарок ЛА, то он мне сейчас пригодился)) Подключил ЛА и увидел, что алгоритм там совсем иной, частота 9600 EVEN и команды такого плана:

Мать:4D 0D
Балласт: 4D 47 59 0D

Мать:53 0D
Балласт: 53 30 45 0D

Мать: 51 0D
Балласт: 51 32 0D

Мать: 4C 33 46 0D
Балласт: 41 0D

Мать: 54 0D
Балласт: 54 31 46 0D

Ну и так далее. Как видите общение идет группами сигналов и каждая группа заканчивается на 0D, так вот я не мог изменить старый скетч, так как не знаю синтаксиса, получается если 1 сигнал - 1 ответ, это у нас например case 0x53:  Serial.write(0x53); break; , а вот как быть с группой? как сделать условие, если 54 0D , то балласт отвечает 54 31 46 0D ?

Неактивний

#108 2015-10-29 20:15:59

martinways
Учасник
Зареєстрований: 2015-03-11
Повідомлень: 90

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

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

Мать:4D 0D
Балласт: 4D 47 59 0D

Мать:53 0D
Балласт: 53 30 45 0D

Мать: 51 0D
Балласт: 51 32 0D

Мать: 4C 33 46 0D
Балласт: 41 0D

Мать: 51 0D
Балласт: 51 32 0D

Мать: 54 0D
Балласт: 54 31 46 0D

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

Ну и потом идет такое 

Мать: 4C 32 46 0D
Балласт: 41 0D

Мать: 44 0D
Балласт: 44 32 45 0D

Ну и снова каждую секунду чередуются

Мать: 51 0D
Балласт: 51 32 0D

Мать: 54 0D
Балласт: 54 32 33 0D

А вот код, который мы использовали в про

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;
}

}

шлый раз, но  там реализованы разные режимы, думаю все надо будет удалять

Неактивний

#109 2015-10-29 21:16:51

martinways
Учасник
Зареєстрований: 2015-03-11
Повідомлень: 90

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

Форум чето жутко глючит, сообщения не редактируются, какие-то php ошибки возникают...

Неактивний

#110 2015-11-01 22:43:25

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

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

Неактивний

#111 2015-11-02 15:26:27

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

привет, выздоравливайте и НЕ болейте.
поздравляю с новой "цяцькой" )

Неактивний

#112 2016-01-09 22:25:12

Ионуц
Учасник
Зареєстрований: 2016-01-09
Повідомлень: 4

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

Good day,

I have an Optoma EP752 with OSRAM PT-VIP-03MID.
The protocol for this module it is little different then the your module.
I read the RX/TX lines and in make a little arduino code but no success.


This the code:
int data;                           //Initialise integer 'data'
int powerPin = 2;                   //Enable pin 2

void setup() {
  Serial.begin(9600, SERIAL_8E1);   //Set up serial communication
  pinMode(powerPin, OUTPUT);        //Set pin 2 to output
}

void loop() {
}



void serialEvent() {

  data = Serial.read();             //set 'data' to input received from ballast
  delay(5);

  if (data == 0x00)
    Serial.write(0x00); //echo
  if (data == 0x70)
    Serial.write(0x70); // Enable comnication
  if (data == 0xF0)
    Serial.write(0xF0); Serial.write(0x01); // Company ID.
  if (data == 0xF1)
    Serial.write(0xF1); Serial.write(0x16); Serial.write(0x11); //Lamp driver ID
  if (data == 0xF3)
    Serial.write(0xF3); Serial.write(0x00); //Selected Waveform
  if (data == 0xF2)
    Serial.write(0xF2); Serial.write(0x64); //Waveform ID
  if (data == 0xF4)
    Serial.write(0xF4); Serial.write(0x80); //Act Gain
  if (data == 0xF6)
    Serial.write(0xF6); Serial.write(0x02); //Waveform Count
  if (data == 0xFA)
    Serial.write(0xFA); Serial.write(0x60);//Min Gain
  if (data == 0xFB)
    Serial.write(0xFB); Serial.write(0x80); //Max Gain
  if (data == 0x72 && data == 60)
    Serial.write(0x72); Serial.write(0x60); //Lamp power
  if (data == 0xF5)
    Serial.write(0xF5); Serial.write(0x01);
  //default  :  func_unique_request(data); break;



}


https://www.dropbox.com/s/b0c5paibctzqn … 1.ino?dl=0
https://www.dropbox.com/s/jl9be4j7fpbpj … cdata?dl=0

Остання редакція Ионуц (2016-01-09 23:24:00)

Неактивний

#113 2016-01-09 23:26:18

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

"I read the RX/TX lines and in make a little arduino code but no success."
hi, please show the raw data RX/TX

Неактивний

#114 2016-01-09 23:30:09

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

error in code
pls use
if ( )
{

}

  if (data == 0xF0)
    { Serial.write(0xF0); Serial.write(0x01); } // Company ID.
  if (data == 0xF1)
    { Serial.write(0xF1); Serial.write(0x16); Serial.write(0x11); } //Lamp driver ID

Неактивний

#115 2016-01-09 23:30:36

Ионуц
Учасник
Зареєстрований: 2016-01-09
Повідомлень: 4

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

In the bottom of my message I attach also the Saleae file.
I am novice in programming and I will correct the code.
What concern me is this:
  if (data == 0x72 && data == 60)
    Serial.write(0x72); Serial.write(0x60); //Lamp power

If you will se in raw RX/TX the mainboard send consecutive this command 72h 60h togheter. I don't know if my condition is correct.

72h is ~" Set Gain" command and 60h is min gain.

Остання редакція Ионуц (2016-01-09 23:44:04)

Неактивний

#116 2016-01-09 23:55:47

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

it will not work
  if (data == 0x72 && data == 60)
    Serial.write(0x72); Serial.write(0x60); //Lamp power

Logic version  1.1.15 does not open the file
what version you have ?

Неактивний

#117 2016-01-10 00:08:40

Ионуц
Учасник
Зареєстрований: 2016-01-09
Повідомлень: 4

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

I have the last version:  1.2.5 beta

Неактивний

#118 2016-01-10 00:40:43

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

22.757439999999999,Async Serial IN ,0x72
22.758600000000001,Async Serial IN,0x60
22.759760000000000,Async Serial OUT,0x72
22.760919999999999,Async Serial OUT,0x60

void serialEvent()
{
  static int cmd_2b = 0;
  data = Serial.read();             //set 'data' to input received from ballast
  delay(5);
 if ( data == 0x00 )      Serial.write(0x00); //echo
.
.
.  

 if ( cmd_2b > 0) 
 { 
  Serial.write(cmd_2b); Serial.write(data);
  cmd_2b = 0; 
  data = 0; 
// Serial.write(0x72); Serial.write(0x60); //Lamp power
} 
 
  if (data == 0x72)
 {
  cmd_2b =  data; 
 }   
 
}

Неактивний

#119 2016-01-10 00:53:16

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

example code in message  http://forum.arduino.ua/viewtopic.php?pid=613#p613
incorrect, sorry )
its for example protocol

Неактивний

#120 2016-01-12 23:21:39

Ионуц
Учасник
Зареєстрований: 2016-01-09
Повідомлень: 4

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

NoName пише:

example code in message  http://forum.arduino.ua/viewtopic.php?pid=613#p613
incorrect, sorry )
its for example protocol

Finally I use case variant and I ignore that consecutive commands and it works.

#include <SoftwareSerial.h>

int data;
int rest;
int StatusLamp;
int ledPin = 13;
#define  INIT1  1
#define  INIT2  2
#define  WORK1  3
#define  WORK2  4
#define  TAG_LEN 2
#define  ARR_LEN 1


byte code[TAG_LEN];
int bytes_read = 0;

char ss[] = {0x72, 0x60};

void setup() {
  StatusLamp = INIT1;
  Serial.begin(9600, SERIAL_8E1);
  pinMode(13, OUTPUT);
}

void loop() {
}
void serialEvent() {
  while (Serial.available() > 0)
    data = Serial.read();
  //Serial.flush();
  //delay(200);
  switch ( data )
  {
    case 0x00:  Serial.write(0x00); break; //echo
    case 0x70:  Serial.write(0x70); break;  // Enable comnication
    case 0xF0:  Serial.write(0xF0); Serial.write(0x01); break;// Company ID.
    case 0xF1:  Serial.write(0xF1); Serial.write(0x16); Serial.write(0x11);; break; //Lamp driver ID
    case 0xF3:  Serial.write(0xF3); Serial.write(0x00); break;
    case 0xF2:  Serial.write(0xF3); Serial.write(0x64); break;
    case 0xF4:  Serial.write(0xF4); Serial.write(0x80); break;
    case 0xF6:  Serial.write(0xF6); Serial.write(0x02); break;
    case 0xFA:  Serial.write(0xFA); Serial.write(0x60); break;
    case 0xFB:  Serial.write(0xFB); Serial.write(0x80); break;
    //case (0x72 && 0x60):  Serial.write(0x72); Serial.write(0x60); break;
    case 0xF5:  Serial.write(0xF5); Serial.write(0x01); break;

    default  :  func_2hex_read(data); break;

  }
}

void func_2hex_read(int data) {

 

  digitalWrite(ledPin, HIGH);
}

void software_Reset()
// Restarts program from beginning but
// does not reset the peripherals and registers
{
  asm volatile ("  jmp 0");
}



Now I study how to read 2 ore more consecutive commands and compare with something.

I hope that somebody will use my information because also me I search and I found only on this forum.

Остання редакція Ионуц (2016-01-12 23:22:39)

Неактивний

#121 2016-01-13 00:46:16

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

Added check 2b CMD
success in your work )

#include <SoftwareSerial.h>
int data;
int rest;
int StatusLamp;
int ledPin = 13;
int cmd_2b = 0;

#define  INIT1  1
#define  INIT2  2
#define  WORK1  3
#define  WORK2  4
#define  TAG_LEN 2
#define  ARR_LEN 1

byte code[TAG_LEN];
int bytes_read = 0;
char ss[] = {0x72, 0x60};
void setup() {
  StatusLamp = INIT1;
  Serial.begin(9600, SERIAL_8E1);
  pinMode(13, OUTPUT);
}
void loop() {
}
void serialEvent() {
  while (Serial.available() > 0)
    data = Serial.read();
  //Serial.flush();
  //delay(200);

// added by me :)  
if ( cmd_2b > 0) 
{ 
  Serial.write(cmd_2b); Serial.write(data);
  cmd_2b = 0; 
// Serial.write(0x72); Serial.write(0x60); //Lamp power
} 
else
switch ( data )
  {
    case 0x00:  Serial.write(0x00); break; //echo
    case 0x70:  Serial.write(0x70); break;  // Enable comnication
    case 0xF0:  Serial.write(0xF0); Serial.write(0x01); break;// Company ID.
    case 0xF1:  Serial.write(0xF1); Serial.write(0x16); Serial.write(0x11);; break; //Lamp driver ID
    case 0xF3:  Serial.write(0xF3); Serial.write(0x00); break;
    case 0xF2:  Serial.write(0xF3); Serial.write(0x64); break;
    case 0xF4:  Serial.write(0xF4); Serial.write(0x80); break;
    case 0xF6:  Serial.write(0xF6); Serial.write(0x02); break;
    case 0xFA:  Serial.write(0xFA); Serial.write(0x60); break;
    case 0xFB:  Serial.write(0xFB); Serial.write(0x80); break;
   // added by me :)  
   case 0x72: cmd_2b =  data;  							break;
   //case (0x72 && 0x60):  Serial.write(0x72); Serial.write(0x60); break;
    case 0xF5:  Serial.write(0xF5); Serial.write(0x01); break;
    default  :  func_2hex_read(data); break;
  }
}
void func_2hex_read(int data) {
 
  digitalWrite(ledPin, HIGH);
}
void software_Reset()
// Restarts program from beginning but
// does not reset the peripherals and registers
{
  asm volatile ("  jmp 0");
}

Остання редакція NoName (2016-01-13 01:20:24)

Неактивний

#122 2016-01-19 09:42:54

JBS
Гість

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

martinways пише:

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

http://forum.arduino.ua/img/members/161/schem.jpg

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

Интересная у вас схема получилась. Вопрос  только в  том что повторив  вашу схему  с arduino UNO R3.
RX сигнал не приходит  TX всё ок . Менял оптроны нет результата в чём секрет.

#123 2016-01-19 11:03:45

JBS
Гість

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

То есть вы предлагаете 4 контакт  оптрона подтянуть на плюс.
И что значит что оптроны не нужны. То есть я выкидываю оптроны и все концы с материнки  подключаю напрямую  к arduino.

#124 2016-01-19 12:02:58

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

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

uart.gif
когда UART проинициализирован и нет передачи  RX, TX = VDD
на плате  martinways  TX был проинвертирован, и он таким образом  сделал инвертор, что у Вас я не знаю.
для начала народ дает осциллограмму с "живого" железа
берите пример с Ионуц. )

Неактивний

#125 2016-01-19 17:05:46

JBS
Гість

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

NoName пише:

http://mainloop.ru/wp-content/uploads/2012/05/uart.gif
когда UART проинициализирован и нет передачи  RX, TX = VDD
на плате  martinways  TX был проинвертирован, и он таким образом  сделал инвертор, что у Вас я не знаю.
для начала народ дает осциллограмму с "живого" железа
берите пример с Ионуц. )

Проектор тот же только различия в arduino.Материка отвечает на сигналы ТХ но так как на RX arduino не чего не приходит arduino поморгает ТХ светодиодом и всё мать в ошибку.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму