5 ds18b20 ΠΊΡΠΏΠΈΡΡ ΠΎΡ 43,00 ΡΡΠ±.







DS18B20 - ΡΡΠΎ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΎΡ -55 Β°C Π΄ΠΎ +125 Β°C. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ 10-Π±ΠΈΡΠ½ΡΠΉ ΠΠ¦Π, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ 0.5 Β°C (Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Β°C Π΄ΠΎ +85 Β°C). ΠΠ°ΡΡΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° Π²ΡΠ²ΠΎΠ΄Π° - SDA ΠΈ SCL, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ.
AVR Studio 5 - ΡΡΠΎ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² AVR, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C. AVR Studio 5 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Atmel, Π²ΠΊΠ»ΡΡΠ°Ρ ATmega328P, ATmega168P ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°ΡΡΠΈΠΊ DS18B20 ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ATmega328 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
1. ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ATmega328 (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΎΡ AVR).
2. ΠΠ°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ DS18B20.
3. ΠΠ°Π±Π΅Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠ° ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ.
4. AVR Studio 5 (ΠΈΠ»ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ AVR ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ²).
5. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ C (ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ).
Π¨Π°Π³ 1: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°ΡΡΠΈΠΊΠ° DS18B20
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ DS18B20 ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°Π±Π΅Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌ. ΠΠ΄ΠΈΠ½ ΠΊΠΎΠ½Π΅Ρ ΠΊΠ°Π±Π΅Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ Π΄Π°ΡΡΠΈΠΊΠ° SDA ΠΈ SCL, Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ Π½Π° ΠΏΠ»Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
Π¨Π°Π³ 2: ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π΄Π°ΡΡΠΈΠΊ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄Π°ΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΅Π΅ Π½Π° ΡΠΊΡΠ°Π½. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AVR Studio 5 ΠΈ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C.
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² AVR Studio 5. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ DS18B20. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄Π°ΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΅Π΅ Π½Π° ΡΠΊΡΠ°Π½ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
```
include
include // ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ DS18B20
int main() {
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ° SDA
DDRD |= (1 << PD5);
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° 9600 Π±ΠΎΠ΄
TCCR0A |= (1 << WGM01);
TCCR0B |= (1 << WGM02);
TCNT0 = 0;
OCR0A = 96;
// ΠΠ°ΡΠ°Π»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
PORTD |= (1 << PD5); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° Π²ΡΠ²ΠΎΠ΄Π΅ SDA
while ( !(SDA & 1) ); // ΠΠ΄Π΅ΠΌ, ΠΏΠΎΠΊΠ° SDA Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π²ΡΡΠΎΠΊΠΈΠΌ
ADMUX = (1 << REFS0) | (1 << MUX1) | (1 << ΠUX0); // Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΠ¦Π
delayMicroseconds(10); // ΠΠ°ΡΠ·Π° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΠ¦Π
SDA ^= 1; // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° Π²ΡΠ²ΠΎΠ΄Π΅ SDA Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ADC_START();
while(bit_is_clear(SDA, 1)); // ΠΠ΄Π΅ΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° SDA (Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π½Ρ)
uint16_t reading = ADCH;
reading <<= 8;
reading |= ADCL;
byte temperature;
if (reading < 128) {
temperature = (reading << 1);
if (SDA & (1 << 4))
temperature |= 0x10; // ΠΡΠ»ΠΈ Π±ΡΠ» ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° Π»ΠΈΠ½ΠΈΠΈ SDA Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ RESET)
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈΠ· 9-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² 10-Π±ΠΈΡ
int temp_high = reading >> 8;
temp_high *= 16;
temp_high += reading & 0xFF;
temperature += temp_high / 16;
} else {
return 1;
}
temp_low = reading;
temp_low &= 0xFF
AVR Studio 5 - ΡΡΠΎ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² AVR, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C. AVR Studio 5 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Atmel, Π²ΠΊΠ»ΡΡΠ°Ρ ATmega328P, ATmega168P ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°ΡΡΠΈΠΊ DS18B20 ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ATmega328 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ:
1. ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ATmega328 (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΎΡ AVR).
2. ΠΠ°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ DS18B20.
3. ΠΠ°Π±Π΅Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠ° ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ.
4. AVR Studio 5 (ΠΈΠ»ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ AVR ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ²).
5. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ C (ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ).
Π¨Π°Π³ 1: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°ΡΡΠΈΠΊΠ° DS18B20
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ DS18B20 ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°Π±Π΅Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌ. ΠΠ΄ΠΈΠ½ ΠΊΠΎΠ½Π΅Ρ ΠΊΠ°Π±Π΅Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ Π΄Π°ΡΡΠΈΠΊΠ° SDA ΠΈ SCL, Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ Π½Π° ΠΏΠ»Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
Π¨Π°Π³ 2: ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π΄Π°ΡΡΠΈΠΊ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄Π°ΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΅Π΅ Π½Π° ΡΠΊΡΠ°Π½. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AVR Studio 5 ΠΈ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C.
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² AVR Studio 5. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ DS18B20. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄Π°ΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΅Π΅ Π½Π° ΡΠΊΡΠ°Π½ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
```
include
include
int main() {
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ° SDA
DDRD |= (1 << PD5);
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° 9600 Π±ΠΎΠ΄
TCCR0A |= (1 << WGM01);
TCCR0B |= (1 << WGM02);
TCNT0 = 0;
OCR0A = 96;
// ΠΠ°ΡΠ°Π»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
PORTD |= (1 << PD5); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° Π²ΡΠ²ΠΎΠ΄Π΅ SDA
while ( !(SDA & 1) ); // ΠΠ΄Π΅ΠΌ, ΠΏΠΎΠΊΠ° SDA Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π²ΡΡΠΎΠΊΠΈΠΌ
ADMUX = (1 << REFS0) | (1 << MUX1) | (1 << ΠUX0); // Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΠ¦Π
delayMicroseconds(10); // ΠΠ°ΡΠ·Π° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΠ¦Π
SDA ^= 1; // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° Π²ΡΠ²ΠΎΠ΄Π΅ SDA Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ADC_START();
while(bit_is_clear(SDA, 1)); // ΠΠ΄Π΅ΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° SDA (Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π½Ρ)
uint16_t reading = ADCH;
reading <<= 8;
reading |= ADCL;
byte temperature;
if (reading < 128) {
temperature = (reading << 1);
if (SDA & (1 << 4))
temperature |= 0x10; // ΠΡΠ»ΠΈ Π±ΡΠ» ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° Π»ΠΈΠ½ΠΈΠΈ SDA Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ RESET)
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈΠ· 9-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² 10-Π±ΠΈΡ
int temp_high = reading >> 8;
temp_high *= 16;
temp_high += reading & 0xFF;
temperature += temp_high / 16;
} else {
return 1;
}
temp_low = reading;
temp_low &= 0xFF
ΠΠ°ΡΠ°Π»ΠΎΠ³ 5 ds18b20 (ΠΈ avr studio)
Π¦Π΅Π½Π°: 790 Π ΡΠ±. 8.77οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 2037 Π ΡΠ±. 22.62οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 149 Π ΡΠ±. 1.81οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 96 Π ΡΠ±. 0.93οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 87 Π ΡΠ±. 0.82οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 223 Π ΡΠ±. 2.28οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 920 Π ΡΠ±. 9.41οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 58 Π ΡΠ±. 0.64οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 748 Π ΡΠ±. 9.04οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 54 Π ΡΠ±. 0.52οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 756 Π ΡΠ±. 7.44οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 53 Π ΡΠ±. 0.64οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25
Π¦Π΅Π½Π°: 173 Π ΡΠ±. 1.74οΌ
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
Π¦Π΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ Π½Π° 2025-03-20 13:30:25