Celý článek o tachometru se vším všudy by byl asi zbytečně dlouhý a nudný, proto budu jednotlivé časti kouskouvat a odkazovat na ně z hlavního článku. Také někoho může zajímat pouze některé řešení, tak ať se neuhledají k smrti 🙂 Co se týče teploměru, koupil jsem digitální termočidlo Dallas 18B20, které technologií 1Wire posílá rovnou naměřené hodnoty v digitálním formátu, které bude (snad) relativně lehké číst pomocí Dallas_Temperature_Control_Library a poté zobrazovat na displeji. Docela dlouho tuto součástku trápím a bezvýsledně. Nakonec se mi to povedlo. Některé z nalezených řešení připojuje napájení přímo na PIN3 (Vdd), ale součástka se okamžitě extrémně zahřívá a to ani nemluvím o tom, že nefunguje. Správným řešením v tomto případě je tzv. parazitní napájení, kde je Vdd připojeno k zemi a součástka se napájí přes rezistor přímo na datový PIN. V tomto případě se ani nemusí použít výše uvedená knihovna.

09

Jediné funkční zapojení teploměrového čidla

Co se týče progamu, zjednodušil jsem nějaké řešení co jsem našel na netu, prozatím odesílá teplotu ve °C na seriový port, později ji bude zobrazovat přímo na displeji.

[c]#include <OneWire.h>
// DS18B20 Temperature chip i/o
OneWire ds(10); // on pin 10

void setup(void) {
Serial.begin(9600);
}

void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
int Temp;

if ( !ds.search(addr)) {
ds.reset_search();
return;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print(„CRC is not valid!n“);
return;
}

if ( addr[0] != 0x28) {
Serial.print(„Device is not a DS18S20 family device.n“);
return;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
delay(1000);
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}

Temp=(data[1]<<8)+data[0]; //take the two bytes from the response relating to temperature
Temp=Temp>>4; //divide by 16 to get pure celcius readout

// Serial.print(„Namerena teplota = „);
Serial.print(Temp);
Serial.println(„oC“);
}[/c]

Bude to vlastně jediná věc, která asi bude „čouhat“ z tachometru pryč. Čidlo původního přidaného digitálního teploměru jsem umístil zespoda předního krytu nad blatník, někam tam umístím i toto čidlo – pokud nakonec nezůstane uvnitř tachometru, ten teplotní rozdíl by tam nemusel být tak velký. No uvidíme.  

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *