发明并制造了设备

今天早上,我没有写文章和测试灯泡,而是发挥了创造力。 几天前,我“发明”了一种在测试灯泡时真正错过的设备,而今天,我已经能够制造它了。


设备显示亮度随时间变化的百分比。 首先,我在lamptest.ru项目中需要它来测量灯点亮的最小电压,而亮度不会降低10%以上。 除了有关最低电压的信息(对于居住在电源质量较差的地方的人有用)之外,这些信息会降低网络中的电压(例如在农村地区),这将有助于得出有关驱动器类型和灯质量的结论。

另一种设备可用于分析灯泡预热时亮度的降低。

在屏幕的左上角显示当前照度值(以勒克斯为单位),在左下角显示初始照度值。 在右上方-第一个数字与第二个数字的百分比是多少。 选择按钮将照明的初始值设置为等于当前值。

另外做了波纹的指示,但是非常近似。 我使用TSL2561数字光传感器,它的最小积分时间为13 ms,电源电压的一半周期为10 ms。 我连续进行12次测量,希望其中一些在脉动过程中意外降到最低亮度,而另一些则最大。 使用左按钮,可以在关闭研究灯的情况下通过按外部校正照明来计算纹波。

整个设计包括三个现成的模块-Arduino UNO R3LCD键盘防护罩MH-2561和四根电线。

Arduino的草图
Arduino的草图:
<textarea rows="130" cols="110"> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_TSL2561_U.h> #include <LiquidCrystal.h> //initialize LCD with the numbers of the interface pins LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int start; int lm; int procent; //    samopal.pro #define MAX_UNITS 12 uint16_t l_min=0,l_max=0,l=0,env=0; int pulse = 0; Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); void configureSensor(void) { tsl.setGain(TSL2561_GAIN_1X); /* No gain ... use in bright light to avoid sensor saturation */ // tsl.setGain(TSL2561_GAIN_16X); /* 16x gain ... use in low light to boost sensitivity */ // tsl.enableAutoRange(true); /* Auto-gain ... switches automatically between 1x and 16x */ /* Changing the integration time gives you better sensor resolution (402ms = 16-bit data) */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); /* fast but low resolution */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS); /* medium resolution and speed */ tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* 16-bit data but slowest conversions */ } void setup(void) { // set up the LCD's number of columns and rows: lcd.begin(16, 2); Serial.begin(9600); /* Initialise the sensor */ if(!tsl.begin()) { /* There was a problem detecting the TSL2561 ... check your connections */ Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!"); while(1); } /* Setup the sensor gain and integration time */ configureSensor(); //    sensors_event_t event; tsl.getEvent(&event); start = event.light; lcd.setCursor(0,1); lcd.print(start); } void loop(void) { tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* Get a new sensor event */ sensors_event_t event; tsl.getEvent(&event); lm = event.light; lcd.setCursor(0,0); lcd.print(lm); lcd.print(" "); procent = (event.light/start*100); lcd.setCursor(10,0); lcd.print(procent); lcd.print("% "); { int x; x = analogRead (0); if (x < 60) { // lcd.print ("Right "); } else if (x < 200) { // lcd.print ("Up "); } else if (x < 400){ // lcd.print ("Down "); } else if (x < 600){ // lcd.print ("Left "); env = event.light; } else if (x < 800){ start = lm; lcd.setCursor(0,1); lcd.print(start); lcd.print(" "); } } //   tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); l=event.light-env; l_min = l; l_max = l; for (int i = 0; i < MAX_UNITS; i = i + 1) { tsl.getEvent(&event); l=event.light-env; if( l < l_min )l_min = l; if( l > l_max )l_max = l; } if( l_max != 0 )pulse = (double)((l_max - l_min))*100/(double)((l_max + l_min)); else pulse = 0; lcd.setCursor(10,1); lcd.print(pulse); lcd.print(" "); } 


老实说,我不希望半天后就能得到现成的工作设备。 而且尽管有这样一种事实,从编程语言开始,我曾经只了解BK0010汇编程序,而且我只是通过键入来做很多事情。

在用于Arduino的程序中,我使用了使用TSL2561,LCD键盘护罩的示例程序的片段,并使用samopal.pro从测光表的草图中计算出了波纹。 有些事情可行,但我不明白它们的含义:)

尽管如此,该设备仍能正常工作并节省大量时间。 在它的帮助下,我已经测试了五十个灯泡的最低电压和驱动器类型。

附言:如果熟悉Arduino的人有时愿意在Telegram,Facebook或Vkontakte上回答我的问题,我将不胜感激。

分级为4 +©2017,Alexey Nadezhin

Source: https://habr.com/ru/post/zh-CN401837/


All Articles