de:examples:sensor:photoresistor
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| de:examples:sensor:photoresistor [2010/11/26 10:48] – angelegt Wember | de:examples:sensor:photoresistor [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Fotowiderstand ====== | ====== Fotowiderstand ====== | ||
| - | //Necessary knowledge: [HW] [[en: | + | //Notwendiges Wissen: [HW] [[en: |
| ===== Theorie ===== | ===== Theorie ===== | ||
| - | [{{ : | + | [{{ : |
| - | [{{ : | + | [{{ : |
| - | Ein Fotowiderstand ist ein Sensor, dessen elektrischer Widerstand sich je nach Lichtintensität verändert. | + | Ein Fotowiderstand ist ein Sensor, dessen elektrischer Widerstand sich je nach einfallender |
| - | : | + | |
| ^ Farbe ^ Wellenlängen (nm) ^ | ^ Farbe ^ Wellenlängen (nm) ^ | ||
| Line 19: | Line 18: | ||
| | Rot | 610 – 700 | | | Rot | 610 – 700 | | ||
| - | Es gibt einen bestimmten Temperaturbereich für einen Fotowiderstand. | + | Der Fotowiderstand |
| - | Um Lichtintensität | + | Zur Kennzeichnung der Lichtintensität wird die Beleuchtungsstärke (E) genutzt. Diese zeigt die Menge Licht an, die auf eine bestimmte Oberfläche |
| - | + | Vergleichswerte | |
| - | Werte von Beleuchtungsstärken | + | |
| ^ Umgebung | ^ Umgebung | ||
| Line 31: | Line 29: | ||
| | Auditorium | | Auditorium | ||
| | Klassenraum | | Klassenraum | ||
| - | | Sonnenaufgang | + | | Sonnenaufgang |
| - | | OP (Krankenhaus) | + | | OP-Saal (Krankenhaus) |
| | direktes Sonnenlicht | | direktes Sonnenlicht | ||
| ===== Übung ===== | ===== Übung ===== | ||
| - | Das Sensor-Modul von HomeLab hat einen VT935G Fotowiderstand. Ein Pin des Widerstands ist am +5 V angeschlossen der zweite an Kanal 1 (Pin PF1) des ADC. Zwischen diesem Pin und der Erde ist ein 10 kΩ angeschlossen, | ||
| - | Da der elektrische Widerstand des Fotowiderstands sich mit der Lichtintensität verkleinert, | ||
| - | Der Sensor | + | Das Sensormodul aus dem HomeLab verfügt über einen VT935G |
| - | In diesem | + | |
| - | Die Aufgabe hier, ist ein wenig komplexer, da die Beleuchtungsstärke in Lux gemessen wird. Dafür gibt es eine Annäherungsformel und Gleitkomma-Variablen. In C-Sprache sind Gleitkomma-Variablen // | + | Der Sensor VT935G |
| + | Die nun folgende Aufgabe ist ein wenig komplexer, da die Beleuchtungsstärke auch in Lux gemessen wird. Hierzu werden eine Annäherungsformel sowie Gleitkomma-Variablen angewendet. In C sind Gleitkomma-Variablen //float-// und // | ||
| - | [{{ : | ||
| - | Es gibt eine Annäherungsformel für den Zusammenhang zwischen Beleuchtungsstärke und elektrischen | + | [{{ : |
| + | |||
| + | Das Datenblatt des Sensors beinhaltet | ||
| log(a/b) = log(a) - log(b) | log(a/b) = log(a) - log(b) | ||
| - | Die Relation wird durch das Steigen | + | Die Relation wird durch den Anstieg |
| - | Finden von E< | + | |
| log(E< | log(E< | ||
| E< | E< | ||
| - | Dies gibt uns die Formel | + | So erhält man die Formel |
| - | Die Formel ist Folgende: | + | |
| U< | U< | ||
| - | Aus der Formel für Spannungsteiler (siehe Kapitel über Spannungsteiler) kann der Widerstand des Fotowiderstands (R< | + | Mit Hilfe der Formel für Spannungsteiler (siehe Kapitel über Spannungsteiler) kann der Widerstand des Fotowiderstands (R< |
| R< | R< | ||
| - | In der folgenden Berechnung von Spannung und Widerstand, werden die gegebenen Werte eingetragen | + | In der folgenden Berechnung von Spannung und Widerstand, werden die gegebenen Werte eingesetzt |
| U = 5 * (ADC / 1024) \\ \\ | U = 5 * (ADC / 1024) \\ \\ | ||
| R = (10 * 5) / U - 10 \\ \\ | R = (10 * 5) / U - 10 \\ \\ | ||
| - | Um die Beleuchtungsstärke | + | Die Beleuchtungsstärke kann dann mittels der folgenden vereinfachten |
| E = 10< | E = 10< | ||
| Line 78: | Line 73: | ||
| = (18.5< | = (18.5< | ||
| - | Durch Berechnen | + | Durch die Berechnung |
| E = 255,84 * R< | E = 255,84 * R< | ||
| - | Diese Formeln | + | Die dargestellten |
| - | Es folgt ein Quellcode eines Beispielprogramms, | + | Nachfolgend ist der Quellcode eines Beispielprogramms |
| - | + | ||
| - | Im Beispielprogramm werden Variablen für die Spannung, Widerstand und Beleuchtungsstärke als //double// Gleitkomma-Variablen definiert. Die Variablen, welche nun als Gleitkomma-Variablen genutzt werden, müssen nun immer ein Dezimalpunkt enthalten (es geht auch einfach 0, da der Kompiler es korrekt versteht). Wenn man //sprintf// nutzt um die Gleitkomma-Variable zu Text konvertiert, | + | |
| - | In the example program variables of voltage, resistance and intensity are defined using type | + | |
| + | In diesem Beispielprogramm werden die Variablen für Spannung, Widerstand und Beleuchtungsstärke als //double// Gleitkomma-Variablen definiert. Die Variablen, welche nun als Gleitkomma-Variablen genutzt werden, müssen immer eine Dezimalstelle beinhalten (diese kann auch einfach 0 sein, so verarbeitet der Compiler es korrekt). Wird die Funktion //sprintf// genutzt, um die Gleitkomma-Variable in Text zu konvertieren, | ||
| <code c> | <code c> | ||
| // | // | ||
| - | // The example program of the photoresistor of the module of sensors of the HomeLab | + | // Beispielprogramm des Fotowiderstands aus dem Sensormodul des HomeLab |
| - | // Approximate value of the intensity of light is displayed on the LCD. | + | // Der angenäherte Wert der Beleuchtungsstärke wird auf dem LCD dargestellt. |
| // | // | ||
| #include < | #include < | ||
| Line 101: | Line 94: | ||
| // | // | ||
| - | // Main program. | + | // Hauptprogramm. |
| // | // | ||
| int main(void) | int main(void) | ||
| Line 109: | Line 102: | ||
| double voltage, resistance, illuminance; | double voltage, resistance, illuminance; | ||
| - | // Initializing the LCD | + | // Initialisiere |
| lcd_alpha_init(LCD_ALPHA_DISP_ON); | lcd_alpha_init(LCD_ALPHA_DISP_ON); | ||
| - | // Clearing the LCD. | + | // Lösche |
| lcd_alpha_clear(); | lcd_alpha_clear(); | ||
| - | // Name of the program | + | // Name des Programms |
| lcd_alpha_write_string(" | lcd_alpha_write_string(" | ||
| - | // Setting the ADC | + | // Einrichten des ADC |
| adc_init(ADC_REF_AVCC, | adc_init(ADC_REF_AVCC, | ||
| - | // Endless loop. | + | // Endlosschleife. |
| while (true) | while (true) | ||
| { | { | ||
| - | // Reading the average value of the photoresistor | + | // Durchschnittlichen Wert des Fotoresistors auslesen |
| adc_value = adc_get_average_value(1, | adc_value = adc_get_average_value(1, | ||
| - | // Calculating the voltage in the input of the ADC | + | // Input-Spannung am ADC berechnen |
| voltage = 5.0 * ((double)adc_value / 1024.0); | voltage = 5.0 * ((double)adc_value / 1024.0); | ||
| - | // Calculating the resistance of the photoresistor in the voltage divider | + | // Widerstand des Fotoresistors im Spannungsteiler berechnen |
| resistance = (10.0 * 5.0) / voltage - 10.0; | resistance = (10.0 * 5.0) / voltage - 10.0; | ||
| - | // Calculating the intensity of light in lux | + | // Beleuchtungsstärke |
| illuminance = 255.84 * pow(resistance, | illuminance = 255.84 * pow(resistance, | ||
| - | // Converting the intensity of light to text | + | // Beleuchtungsstärke in Text konvertieren |
| sprintf(text, | sprintf(text, | ||
| - | // Displaying it on the LCD | + | // Darstellung auf dem LCD |
| lcd_alpha_goto_xy(0, | lcd_alpha_goto_xy(0, | ||
| lcd_alpha_write_string(text); | lcd_alpha_write_string(text); | ||
| - | // Delay 500 ms | + | // Verzögerung |
| sw_delay_ms(500); | sw_delay_ms(500); | ||
| } | } | ||
de/examples/sensor/photoresistor.1290761292.txt.gz · Last modified: (external edit)
