This is an old revision of the document!
Table of Contents
Sensoren
Bezug nehmend auf: [HW] Sensors Module
Diese Bibliothek enthält Funktionen für die verschiedenen Sensoren im HomeLab kit.
Datentypen
- ir_distance_sensor
Infrarotentfernungssensor, Distanzberechnungs-Parameterstruktur. Formel für die Entfernungsberechnung ist a / (ADC + b) - k. Struktur:
- a - Dividend.
- b - Nicht-lineare Konstante.
- k - Lineare Konstante.
Konstante
- ir_distance_sensor GP2Y0A21YK
Sharp GP2Y0A21YK Formelparameter zur Entfernungsberechnung.
Funktionen
- signed short thermistor_calculate_celsius(unsigned short adc_value)
Berechnet die Thermistor Temperatur in Grad Celcius aus ADC Umrechnungsergebnissen. Die Funktionen benutzen eine vorgefertigte Umrechnungstabelle. Parameter:
- adc_value - ADC Umrechnungsergebnis (10-Bit mit +5 V Referenzspannung).
- Gibt die Temperatur mit Grenzwerten von -20 bis 100 °C an.
- signed short ir_distance_calculate_cm(ir_distance_sensor sensor, unsigned short adc_value)
Berechnet die Entfernung von ADC Ergebnissen die vom IR-Entfernungssensor empfangene Spannung an. Parameter:
- sensor - Kalkulationsparameter des Distanzsensors.
- adc_value - ADC Umrechnungsergebnis (10-bit mit +5 V Referenzspannung).
- Gibt die Entfernung in cm an, oder -1 wenn eine Messung nicht möglich ist.
- unsigned short ultrasonic_measure(pin trigger, pin echo)
Misst die Entfernung mit dem Ultraschallentfernungsmesser. Die Funktionen generieren einen Auslöseimpuls an einem Pin und messen die Zeit bis zum Echopulses am anderen Pin. Die Entfernung wird über die Zeit berechnet. Die Funktionen benötigen eine 14.7456Mhz Taktfrequenz. Die Messung kann bis zu 36ms dauern. Parameter:
- trigger - Variable des auslösenden Pins.
- echo - Variable des Echo-Pin variable.
- Gibt Entfernung in cm an, oder 0 wenn Messung nicht möglich.
Beispiel
Nutzung des IR- und Ultraschallentfernungssensors.
#include <homelab/module/sensors.h> // Kontroll-Pins des Ultraschallentfernungssensors. pin pin_trigger = PIN(G, 1); pin pin_echo = PIN(G, 0); int main(void) { unsigned short adc_value = 400; // zufälliges ADC Ergebnis. signed short distance; // Entfernungsberechnung des ADC Ergebnisses des IR-Entfernungssensors. distance = ir_distance_calculate_cm(GP2Y0A21YK, adc_value); // Messung mit Ultraschallentfernungssensor. distance = ultrasonic_measure(pin_trigger, pin_echo); }
