PWM
Mit der Pulsweitenmodulation ist es möglich LEDs oder Motore stufenlos von ganz langsam bis hanz hell zu regeln. Dazu wird ein Rechtecksignalerzeugt dessen Flanke verschieden breit ist.
Bei den meisten Arduino-Boards (diejenigen mit einem ATmega168 oder ATmega328) ist das mit den Pins 3, 5, 6, 9, 10, und 11 möglich; bei einem Arduino-Mega sind das die Pins 2 bis 13. Bei älteren Arduino-Boardsmit einem ATmega8 wird analogWrite() an den Pins 9, 10, and 11 unterstützt.
Für den nachfolgen Nightridersketch reicht das nicht. Man kann PWM auch mit der Software erzeugen und an jeden Pin ausgeben. Wer Atmega schon mit anderen Sprachen programmiert hat weis das. Für Arduino gibt es eine fertige Libary die die Programmierung einfach macht und alles auf das wesentliche beschränkt.
Hier der Downloadlink für den Sketch
Hier der Downloadlink für die Libary
Ich habe den Sketch auf 10 LED's erweitert
Da ich beim bau meines Hauses einfach nicht genug Kabel verlegt habe, kam dieses Transmitter - Receiver Paar bei meiner Wettererfassung zum Einsatz.
Mein erster Test, einfach mit einem Arduino von TxD ein paar Buchstaben senden und mit Putty empfangen, ließ mich erschaueren. Außer Störungen nur ein paar brauchbare Daten. Ich habe mir nicht lange Gedanken über ein Übertragungsprotokollgemacht, da wurde ich mit Google schon fündig.
Hier die passende Libary. Hier wird alles geregelt. Ich übertrage damit die Messdaten meiner Wettersensoren.
MQ 5 ist für Propan Butan bzw LPG für Flüssiggas. Der Sensor reagiert auch auf Alkohol Kohlenmonoxyd Erdgas und Rauchgase, aber für diese
Gase gibt es andere Sensoren.gibt es andere.
Ganz einfach wie im Bild anschliessen. GND, +5V und A0. Wozu D0 ist hab ich noch nicht rausgefunden.
Die rote LED sollte leuchten , die grüne kann. Das Poti dient der Kalibrierung. Einfach soweit dehen bis die grüne LED erlischt, dann hat man den Schwellpunkt.
Mit einem Gasfeuerzeug ohne Flamme testen. Die Grüne LED sollte jetzt leuchten
In der seriellen Ausgabe des Arduino sieht man einen deutlichen Anstieg des Analogen Wertes.
Zur exakten Anzeige in PPM muss eine Referenzmessung mit einer bekannten Grösse gemacht werden.
Wie man das macht hab ich noch nicht raus. Man kann aber feststellen das etwas da ist und wenn was da ist dann ist was undicht. Das sollte reichen um diversere Leitungen und Schläuche auf Dichtigkeit zu prüfen.
Man könnte den Sketch etwas ändern und beim Anstieg des AD Wertes einen Buzzer piepen lassen. Prima Warnung für Wohnwagenbesitzer.
Hier ein einfacher Sketch zum testen.
///Arduino Sample Code
void
setup()
{
Serial.begin(9600);
//Set serial baud rate to 9600 bps
}
void
loop()
{
int
val;
val=analogRead(0);Read Gas value from analog 0
Serial.println(val,DEC);
//Print the value to serial port
delay(100);
}
Das Breakout ist geauso aufgebaut wie das für den MQ5 lediglich der Sensor ist speziel für das gefährliche Kohlelnmonoxyd ausgelegt.
Der Sketch ähnelt dem des MQ5 wertet aber den Digitalwert mit aus, der bei Schwellwert auf High wechselt.
/* MQ-7 Carbon Monoxide Sensor Circuit with Arduino */
const int AOUTpin=0;//the AOUT pin of the CO sensor goes into analog pin A0 of the arduino
const int DOUTpin=8;//the DOUT pin of the CO sensor goes into digital pin D8 of the arduino
const int ledPin=13;//the anode of the LED connects to digital pin D13 of the arduino
int limit;
int value;
void setup() {
Serial.begin(9600);//sets the baud rate
pinMode(DOUTpin, INPUT);//sets the pin as an input to the arduino
pinMode(ledPin, OUTPUT);//sets the pin as an output of the arduino
}
void loop()
{
value= analogRead(AOUTpin);//reads the analaog value from the CO sensor's AOUT pin
limit= digitalRead(DOUTpin);//reads the digital value from the CO sensor's DOUT pin
Serial.print("CO value: ");
Serial.println(value);//prints the CO value
Serial.print("Limit: ");
Serial.print(limit);//prints the limit reached as either LOW or HIGH (above or underneath)
delay(100);
if (limit == HIGH){
digitalWrite(ledPin, HIGH);//if limit has been reached, LED turns on as status indicator
}
else{
digitalWrite(ledPin, LOW);//if threshold not reached, LED remains off
}
}