痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 3176|回復: 4

LOGO 投影燈維修

[複製鏈接]
發表於 2022-4-2 01:10:19 | 顯示全部樓層 |閱讀模式
本帖最後由 antlu 於 2022-4-2 01:13 AM 編輯

DSC09553.JPG

DSC09554.JPG

DSC09555.JPG


鄰居送來一個 logo投影燈說不亮,我打開來一看就 兩片板子 電源板子包刮 LED 驅動OC5265  5V降壓XL2001E1 電源IC 絲印PL22, 控制板子 馬達驅動ULN2003 微控ES7P1731 藍芽模組 SYN531R .

因為比較性急不小心把 微處理器ES7P1731 給燒了!!

這次學了不少東西
電源故障 把相關的線路圖畫了出來 PL22 絲印 感謝 DUNCAN 大提供相近的資料,得以把線路畫了出來,最後因為找不到IC 還好發現電壓30V 可以使用 HP的電源來代替,把次級線圈處切開,直上 30V 給下一級 OC5265 LED 電路 和 XL2001E1 作5V給 微處理和步進馬達.
電源板
DSC09556.JPG

部分線路
DSC09565.JPG

5V
DSC09564.JPG

使用HP電源代替
DSC09558.JPG



LED 驅動IC 靠 DIM 接腳來啟動 LED點亮, 步進馬達使用 ULN2003 反向驅動,由微控驅動!!
LED 驅動部分
DSC09563.JPG

步進馬達驅動
DSC09562.JPG

DSC09579.JPG

DSC09580.JPG

DSC09569.JPG

正確驅動波形
DSC09572.JPG

藍芽模組SYN531R 接收遙控器的信號,他的格式和紅外線遙控器相同,使用 ARDUINO 的 庫程式 IRrecv.h 可以讀出他的資料.
藍芽板子
DSC09578.JPG

DSC09561.JPG

接收解碼
DSC09566.JPG

DSC09567.JPG

DSC09568.JPG


步進馬達 剛開始 卡住了,手動轉動後就順了!! 使用驅動信號時發現怪怪的,後來才發現 5線式 和6線式 驅動模式不同,還有 ULN2003 式反向經過程式修改終於IDLE 電流變小了!!

原來的微控ES7P1731被我燒壞了!! 只好使用 Arduino ProMini 板子來改,使用RS232/TTL 傳送程式這樣空間可以塞進去. 使用 Saleae 邏輯分析儀確認驅動波形 正反轉 以及程式動作.提供有興趣者參考 這次 Ticker.h 應該是TIMER  他解決了步進馬達執行時不會頓噸的.  
微控器
DSC09571.JPG

DSC09581.JPG

代替品 ARDUINO PROMINI
DSC09576.JPG

DSC09570.JPG

下載器
DSC09574.JPG

邏輯分析儀
DSC09573.JPG

DSC09575.JPG

結果
DSC09577.JPG

DSC09559.JPG

DSC09560.JPG

** 感謝 LAZY104 大提供 電源 IC 資料.希望可以買得到.
  1. #include "Ticker.h"

  2. /*
  3.   步進馬達練習 正反轉 持續脈衝 A B C D independent
  4.   20220401
  5. */

  6. // Pin 2 3 4 5 for phase A B C D .
  7. // pin 7 led driver enable and PWM
  8. // BT receive pin 11
  9. #include <IRremote.h>
  10. #define SET_HI(pin) digitalWrite(pin, HIGH)
  11. #define SET_LO(pin) digitalWrite(pin, LOW)
  12. void CW_ticker();
  13. void printCounter();
  14. Ticker timer1(CW_ticker, 10); //1ms
  15. Ticker timer2(printCounter, 1000, 0, MILLIS);
  16. boolean motor_enable = false;
  17. boolean lamp_enable = false;
  18. boolean CW = true;
  19. long recvData;
  20. int phA = 2;
  21. int phB = 3;
  22. int phC = 4;
  23. int phD = 5;
  24. int led = 6;
  25. int RECV_PIN = 11;//not need setup it included in IRremote.h
  26. // the setup routine runs once when you press reset:
  27. int tickerCount = 0;
  28. int control_value = 0;
  29. IRrecv irrecv(RECV_PIN);
  30. decode_results results;

  31. void execu(void)
  32. {
  33.   switch (control_value)
  34.   {
  35.     case 1:
  36.       Serial.print("results.is on/off"  );
  37.       Serial.println(control_value);
  38.       lamp_enable = !lamp_enable;
  39.       motor_enable = !motor_enable;
  40.       if (lamp_enable)
  41.       {
  42.         SET_HI(led);
  43.       }
  44.       else
  45.       {
  46.         SET_LO(led);
  47.       }
  48.       break;
  49.     case 2:
  50.       Serial.print("results.is CW  ");
  51.       Serial.println(control_value);
  52.       CW = true;
  53.       motor_enable = true;
  54.       break;
  55.     case 3:
  56.       Serial.print("results.is CCW");
  57.       Serial.println(control_value);
  58.       CW = false;
  59.       motor_enable = true;
  60.       break;
  61.     case 4:
  62.       Serial.print("results.is STOP");
  63.       Serial.println(control_value);
  64.       motor_enable = false;
  65.       break;
  66.   }

  67. }
  68. void CW_ticker(void)
  69. {
  70.   if (motor_enable == true)
  71.   {
  72.     if (CW == true) //for 41step motor
  73.     {
  74.       tickerCount++;
  75.       if (tickerCount == 1)
  76.       {
  77.         SET_HI(phA);
  78.         SET_LO(phB);
  79.         SET_LO(phC);
  80.         SET_LO(phD);
  81.       }
  82.       if (tickerCount == 2)
  83.       {
  84.         SET_LO(phA);
  85.         SET_HI(phB);
  86.         SET_LO(phC);
  87.         SET_LO(phD);
  88.       }
  89.       if (tickerCount == 3)
  90.       {
  91.         SET_LO(phA);
  92.         SET_LO(phB);
  93.         SET_HI(phC);
  94.         SET_LO(phD);
  95.       }
  96.       if (tickerCount == 4)
  97.       {
  98.         SET_LO(phA);
  99.         SET_LO(phB);
  100.         SET_LO(phC);
  101.         SET_HI(phD);
  102.         tickerCount = 0;
  103.       }
  104.     }
  105.     if (CW == false)
  106.     {
  107.       tickerCount++;
  108.       if (tickerCount == 1)
  109.       {
  110.         SET_LO(phA);
  111.         SET_LO(phB);
  112.         SET_LO(phC);
  113.         SET_HI(phD);
  114.       }
  115.       if (tickerCount == 2)
  116.       {
  117.         SET_LO(phA);
  118.         SET_LO(phB);
  119.         SET_HI(phC);
  120.         SET_LO(phD);
  121.       }
  122.       if (tickerCount == 3)
  123.       {
  124.         SET_LO(phA);
  125.         SET_HI(phB);
  126.         SET_LO(phC);
  127.         SET_LO(phD);
  128.       }
  129.       if (tickerCount == 4)
  130.       {
  131.         SET_HI(phA);
  132.         SET_LO(phB);
  133.         SET_LO(phC);
  134.         SET_LO(phD);
  135.         tickerCount = 0;
  136.       }
  137.     }
  138.   }
  139.   if (motor_enable == false)
  140.   {
  141.     SET_LO(phA);
  142.     SET_LO(phB);
  143.     SET_LO(phC);
  144.     SET_LO(phD);

  145.   }
  146. }
  147. void printCounter() {
  148.   //  Serial.print("Counter ");
  149.   //  Serial.println(timer2.counter());
  150. }
  151. void setup() {
  152.   // initialize the digital pin as an output.
  153.   Serial.begin(9600);
  154.   Serial.print("filename logomotor41"  );
  155.   pinMode(phA, OUTPUT);
  156.   pinMode(phB, OUTPUT);
  157.   pinMode(phC, OUTPUT);
  158.   pinMode(phD, OUTPUT);
  159.   pinMode(led, OUTPUT);
  160.   SET_LO(phA);
  161.   SET_LO(phB);
  162.   SET_LO(phC);
  163.   SET_LO(phD);
  164.   irrecv.enableIRIn();
  165.   timer1.start();
  166.   timer2.start();
  167. }
  168. // the loop routine runs over and over again forever:
  169. void loop() {
  170.   timer1.update();
  171.   timer2.update();
  172.   if (irrecv.decode(& results))
  173.   {
  174.     if (recvData == results.value) //-----0331
  175.     {
  176.       Serial.print("recvdata line 158  ");
  177.       if (results.value == 0xCA563D74)
  178.       {
  179.         control_value = 1;//on
  180.       }
  181.       if (results.value == 0x97248A46)
  182.       {
  183.         control_value = 2;//cw
  184.       }
  185.       if (results.value == 0xB26FB4D)
  186.       {
  187.         control_value = 3;//ccw
  188.       }
  189.       if (results.value == 0x984C8A9B)
  190.       {
  191.         control_value = 4;//speed
  192.       }
  193.       execu();
  194.     }
  195.     recvData = results.value;//---------331---
  196.     delay (10);//---------331---
  197.     irrecv.resume();
  198.   }
  199.   /*
  200.       if (irrecv.decode(&results)) {
  201.       Serial.println(results.value, HEX);
  202.       irrecv.resume();
  203.   */
  204. }
複製代碼



DSC09557.JPG

評分

9

查看全部評分

發表於 2022-4-2 05:47:34 | 顯示全部樓層
若是接受 更動腳位代用  可以考慮 OB3398MP  我找這顆(On-Bright) 市場能見度比較廣泛一些

OB3398MP 基本資料
https://www.on-bright.com/index/ ... cid/59/id/217.shtml

taobao 有不少 , 例如
https://world.taobao.com/item/622943528406.htm

露天的  照片上都是比較 errrrrr  ... 跟我不合
https://www.ruten.com.tw/find/?q=OB3398

OB3398MP.jpg

評分

5

查看全部評分

 樓主| 發表於 2022-4-2 13:26:08 | 顯示全部樓層
SIMON1016 發表於 2022-4-2 05:47 AM
若是接受 更動腳位代用  可以考慮 OB3398MP  我找這顆(On-Bright) 市場能見度比較廣泛一些

OB3398MP 基本 ...

SIMON大:
   感謝您!!
發表於 2022-4-2 13:27:19 | 顯示全部樓層
這太搞剛了, 搞不清楚是維修還是開發新機器 :)
 樓主| 發表於 2022-4-2 13:35:13 | 顯示全部樓層
oldhan 發表於 2022-4-2 01:27 PM
這太搞剛了, 搞不清楚是維修還是開發新機器 :)

OLDHAN 大:
  維修啦!!
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-23 04:03 PM , Processed in 0.214735 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.