Termočlánek s MAX6675

Odpovědět
Alegal
Příspěvky: 2
Registrován: 16 pro 2020, 07:50
Reputation: 0

Termočlánek s MAX6675

Příspěvek od Alegal » 16 pro 2020, 08:01

Zdravím,
potřeboval bych poradit s níže uvedeným měřením teploty.
Pomocí klonu Arduino nano, termočlánku s MAX6675 a 4 segmentovým led displejem měřím teplotu. Vše mám zabudované v krabičce a přes spínač napájeno 9V baterií. Když Arduino připojím USB kabelem k počítači, tak to funguje a normálně měří (baterie je odpojená). Pokud to ale napájím z baterie (USB odpojeno), Rozsvítí se na displeji jen symbol stupně a neměří. Můžete mi prosím poradit, čím by to mohlo být?

Kód: Vybrat vše

// Termočlánek + driver MAX6675
// připojení knihovny
#include<max6675.h>
//
//// nastavení propojovacích pinů termočlánku
int pinSO  = 6;
int pinCS  = 7;
int pinSCK = 8;

//nastavení LED displeje
#define SCLK 5
#define RCLK 4
#define DIO 3

// vytvoření instance termoclanek z knihovny MAX6675
MAX6675 termoclanek(pinSCK,pinCS,pinSO);

byte digitBuffer[4];
byte  znak = 0;
int zpozdeni = 0;
int cislovka1 = 0;
int cislovka2 = 0;
int cislovka3 = 0;

void setup(){
  pinMode(RCLK, OUTPUT);
  pinMode(SCLK, OUTPUT);
  pinMode(DIO, OUTPUT);

  //Serial.begin(9600);
  //Serial.println("Zahájení ovládání");

  digitBuffer[0] = 12;
  digitBuffer[1] = 12;
  digitBuffer[2] = 12;
  digitBuffer[3] = 11;

  showDisplay();
  delay(3000);
}

void loop(){
  while (zpozdeni < 1000){
    showDisplay();
    zpozdeni++;
  }
  znak = termoclanek.readCelsius();
 
  //Serial.print("Teplota: ");
  //Serial.print(znak);
  //Serial.println("°C");
  delay(10);
  
  if (znak < 100){
    cislovka1 = 10;
    cislovka2 = znak/10;
    cislovka3 = znak%10;
  }
  else{
    cislovka1 = znak/100;
    cislovka2 = (znak%100)/10;
    cislovka3 = znak%10;     
  }
  
  digitBuffer[0] = cislovka1;
  digitBuffer[1] = cislovka2;
  digitBuffer[2] = cislovka3;
  digitBuffer[3] = 11;

  showDisplay();

  zpozdeni = 0;
}

void showDisplay(){
  const byte digit[13] = {
    //   a
    // f   b
    //   g
    // e   c
    //   d   t
    //
    //tgfedcba
    0b11000000, //0
    0b11111001, //1
    0b10100100, //2
    0b10110000, //3
    0b10011001, //4
    0b10010010, //5
    0b10000010, //6
    0b11111000, //7
    0b10000000, //8
    0b10010000, //9
    0b11111111, //10 - zhasnuto
    0b10011100,  //11 - stupeň
    0b10111111  //12 - pomlcka
  };

  const byte chr[4] = {
    0b00001000,
    0b00000100,
    0b00000010,
    0b00000001
  };

  for(byte i = 0; i <= 3; i++){
    digitalWrite(RCLK, LOW);
    shiftOut(DIO, SCLK, MSBFIRST, digit[digitBuffer[i]]);
    shiftOut(DIO, SCLK, MSBFIRST, chr[i]);
    digitalWrite(RCLK, HIGH);
    delay(1);
  }
}

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Termočlánek s MAX6675

Příspěvek od Hanz » 16 pro 2020, 08:37

9V baterie nedokáže nakrmit zapojení, připoj si nabíječku k mobilu aspoň 1A a pojede to. USB 2.0 mívá proudovou zatižitelnost 500 mA novější USB 3.0 myslím až 900 mA proto ti to chodí z pc. Baterie je prostě měkký zdroj.

http://robodoupe.cz/2015/9-v-baterie-trochu-jinak/

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Termočlánek s MAX6675

Příspěvek od pavel1tu » 16 pro 2020, 18:22

A připojuješ baterii na UIN, doufám že ne na 5V nožičku ?
Pokud je 9V baterka OK (Alkalická má 800-900mAh), viděl bych to spíše na problém interního 5V regulátoru, který dá max. 500mA.
Ale ta baterka to dlouho neutáhne, jestli správně čtu LED segmentový displej ... tak 2-3 hodiny ?

PS: a baterie je hodně tvrddý zdroj,dej si do zkratu autobaterii ;)
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Alegal
Příspěvky: 2
Registrován: 16 pro 2020, 07:50
Reputation: 0

Re: Termočlánek s MAX6675

Příspěvek od Alegal » 17 pro 2020, 09:02

JJ baterie je na Uin, ale pujde pryč. Nechám to napájet z USB. To chodí dobře.
Jinak, děkuji za připomínky.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů