5 ds18b20 ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΎΡ‚ 53,00 Ρ€ΡƒΠ±.

Π’Π΅Π³ΠΈ:
ds18b20 ΠΈ avr studio 5
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

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ 5 ds18b20 (ΠΈ avr studio)

Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57
Π¦Π΅Π½Ρ‹ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π½Π° 2025-01-21 18:54:57