Das GerÀt erfunden und hergestellt

Heute Morgen habe ich keine BeitrĂ€ge geschrieben und GlĂŒhbirnen getestet, sondern bin in die KreativitĂ€t gegangen. Vor ein paar Tagen habe ich ein GerĂ€t „erfunden“, das ich beim Testen von Lampen wirklich vermisst habe, und heute konnte ich es herstellen.


Das GerĂ€t zeigt die HelligkeitsĂ€nderung als Prozentsatz ĂŒber die Zeit an. ZunĂ€chst muss es im Projekt lamptest.ru die minimale Spannung messen, bei der die Lampen brennen, ohne die Helligkeit um mehr als 10% zu verringern. ZusĂ€tzlich zu Informationen ĂŒber die Mindestspannung, die fĂŒr Personen nĂŒtzlich ist, die an Orten mit schlechter Stromversorgung leben, an denen die Spannung im Netzwerk erheblich abnehmen kann (z. B. in lĂ€ndlichen Gebieten), können Schlussfolgerungen ĂŒber den Fahrertyp und die QualitĂ€t der Lampen gezogen werden.

Ein anderes GerĂ€t ist nĂŒtzlich, um die Abnahme der Lampenhelligkeit beim AufwĂ€rmen zu analysieren.

In der oberen linken Ecke des Bildschirms wird der aktuelle Beleuchtungswert in Lux angezeigt, in der unteren linken Ecke der anfÀngliche Beleuchtungswert. Oben rechts - wie viel Prozent ist die erste Zahl von der zweiten. Die SchaltflÀche AuswÀhlen setzt den Anfangswert der Beleuchtung gleich dem Strom.

ZusĂ€tzlich ein Hinweis auf Welligkeit gemacht, aber es ist sehr ungefĂ€hr. Ich verwende den digitalen Lichtsensor TSL2561, er hat eine minimale Integrationszeit von 13 ms und die Dauer einer halben Periode der Netzspannung betrĂ€gt 10 ms. Ich nehme 12 Messungen hintereinander vor, in der Hoffnung, dass einige von ihnen wĂ€hrend des Pulsierens versehentlich auf ein Minimum an Helligkeit und andere auf ein Maximum fallen. Mit der linken Taste können Sie die externe Beleuchtung zur Berechnung der Welligkeit korrigieren, indem Sie sie drĂŒcken, wenn die zu untersuchende Lampe ausgeschaltet ist.

Das gesamte Design besteht aus drei vorgefertigten Modulen - Arduino UNO R3 , LCD Keypad Shield , MH-2561 und vier DrÀhten.

Skizze fĂŒr Arduino
Skizze fĂŒr 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(" "); } 


Ehrlich gesagt hatte ich nicht gehofft, dass ich in einem halben Tag ein fertiges ArbeitsgerĂ€t bekommen wĂŒrde. Und das trotz der Tatsache, dass ich aus den Programmiersprachen einmal nur den BK0010-Assembler kannte und viele Dinge nur durch Tippen erledige.

Im Programm fĂŒr Arduino habe ich Fragmente von Beispielprogrammen mit TSL2561, LCD Keypad Shield, verwendet und zur Berechnung der Welligkeit ein StĂŒck aus der Skizze des Belichtungsmessers mit samopal.pro. Einige Dinge funktionieren, aber ich verstehe nicht, was sie bedeuten :)

Trotzdem funktioniert das GerĂ€t und spart viel Zeit. Mit seiner Hilfe habe ich bereits fĂŒnfzig GlĂŒhbirnen auf minimale Spannung und Fahrertyp getestet.

PS Ich wÀre sehr dankbar, wenn jemand, der mit Arduino vertraut ist, bereit wÀre, meine Fragen manchmal auf Telegramm, Facebook oder Vkontakte zu beantworten.

© 2017, Alexey Nadezhin

Source: https://habr.com/ru/post/de401837/


All Articles