Search the Community
Showing results for tags 'ds18b20'.
-
Датчик температуры DS18B20
AndreiF posted a topic in Работаем с ПЛИС, области применения, выбор
Здравствуйте. Я только учусь работать с ПЛИС и для своих задач использую проекты, найденные в интернете. Сейчас я интересуюсь работой с датчиком температуры DS18B20 по видео с Youtube и хотел бы чтобы при превышении 30 градусов на выходе ПЛИС была постоянная 1. В Quartus'е мой проект состоит из 4 блоков (3 из которых найдены в интернете и работают, как показывает симуляция, исправно: Делитель частоты, Reset и блок DS18B20 "OneWire_Master"). В 4-м блоке "Сomp", я бы хотел сравнить данные с датчика и при превышении 30град выставить 1 на выходе Q. Из документации на датчик ds18b20 (cтр 5) температурные данные запоминаются как 16-битовое число, из которых первые 5 бит - знак температуры, последние 4 бита - дробное значение температуры. Проблема в том что я не могу проверить свой датчик. Я задаю, чтобы на выходе Q была 1 для всех температур от 0 до 30 град, а для остальных значений 0 (код представлен ниже). В результате, при подаче питания на выходе Q появляется 1. Я меняю условие: для температур от 0 до 30 ставлю Q = 0, а для default : Q = 1. В результате, при подаче питания на выходе Q снова появляется 1. Не могли бы Вы сказать где я ошибаюсь? module comp2(output reg [15:0] Q, input [15:0] Temp ,input Clk,RST, output J, output reg OUT); always @ (posedge Clk) begin casex(Temp) 16'bxxxxx0000000xxxx : Q = 1; //0 16'bxxxxx0000001xxxx : Q = 1; //1 16'bxxxxx0000010xxxx : Q = 1; //2 16'bxxxxx0000011xxxx : Q = 1; //3 16'bxxxxx0000100xxxx : Q = 1; //4 16'bxxxxx0000101xxxx : Q = 1; //5 16'bxxxxx0000110xxxx : Q = 1; //6 16'bxxxxx0000111xxxx : Q = 1; //7 16'bxxxxx0001000xxxx : Q = 1; //8 16'bxxxxx0001001xxxx : Q = 1; //9 16'bxxxxx0001010xxxx : Q = 1; //10 16'bxxxxx0001011xxxx : Q = 1; //11 16'bxxxxx0001100xxxx : Q = 1; //12 16'bxxxxx0001101xxxx : Q = 1; //13 16'bxxxxx0001110xxxx : Q = 1; //14 16'bxxxxx0001111xxxx : Q = 1; //15 16'bxxxxx0010000xxxx : Q = 1; //16 16'bxxxxx0010001xxxx : Q = 1; //17 16'bxxxxx0010010xxxx : Q = 1; //18 16'bxxxxx0010011xxxx : Q = 1; //19 16'bxxxxx0010100xxxx : Q = 1; //20 16'bxxxxx0010101xxxx : Q = 1; //21 16'bxxxxx0010110xxxx : Q = 1; //22 16'bxxxxx0010111xxxx : Q = 1; //23 16'bxxxxx0011000xxxx : Q = 1; //24 16'bxxxxx0011001xxxx : Q = 1; //25 16'bxxxxx0011010xxxx : Q = 1; //26 16'bxxxxx0011011xxxx : Q = 1; //27 16'bxxxxx0011100xxxx : Q = 1; //28 16'bxxxxx0011101xxxx : Q = 1; //29 16'bxxxxx0011110xxxx : Q = 1; //30 default : Q = 0; endcase end assign J = Q[0]; always @ (posedge Clk) //JK-trigger begin case({J, RST}) 2'b00 : OUT <= OUT; 2'b01 : OUT <= 0; 2'b10 : OUT <= 1'd1; 2'b11 : OUT <= !OUT; endcase end endmodule На работе снял осциллограммы с выходов D и Reset. Quartus проект -
Most DS18B20 Temperature Sensors Sold Online are Fakes or Counterfeit Parts Большинство датчиков температуры DS18B20, продаваемых онлайн, являются поддельными или имеют поддельные детали