Close

jamesonman

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 721. až 750. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: Max6675 #10446
    rehot79
    Účastník

    Tak prikladám znova s úpravami kode.

    
    
    //M.jakab29@gmail.com
    
    //Vsetky kniznice nacitane v arduinoIDE spravca kniznic ///// 
    #include "max6675.h"
    //Servo
    #include <Servo.h>
    Servo myservo;
    //Oled ///////////////////
    #include <SPI.h>
    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);
    #if (SSD1306_LCDHEIGHT != 32)
    #error("Height incorrect, please fix Adafruit_SSD1306.h!");
    #endif
    /////////////
    
    //Definicia pin
    
    int thermoSO = 6;   
    int thermoCS = 5;   
    int thermoSCK = 4;  
    MAX6675 thermocouple(thermoSCK, thermoCS, thermoSO);
    int vccPin = 3; //Napajanie + pre max6675 modul z digitalneho pinu
    int gndPin = 2; //Napajanie - pre max6675 modul z digitalneho pinu
    int val;
    int poloha;  
    void setup() {
      
      
      // definicia napajacich pinou 
      pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
      pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);   
      ////definicia servo pinu
      myservo.attach(9);
     
      //////////////////////Oled////////////
      // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
      // init done
      // Vycisti logo
      display.clearDisplay();
      //uvod email
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(10,0);
      display.println("M.Jakab29@Gmail.com");   
      display.display();
      delay(5000);
      display.clearDisplay();
    }
    
    void loop() {
         // Nacitanie teploty
         val = thermocouple.readCelsius()-2;
           
        // text display text
      display.drawLine(0, 13, 0, display.height()-1, WHITE);
      display.drawLine(300, 32, 0, display.height()-1, WHITE);
      display.drawLine(300, 13, 0, display.height()-20, WHITE);
      display.drawLine(127, 13, 127, display.height() -1, WHITE);
      display.drawLine(62, 13, 62, display.height() -1, WHITE);
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(3,2);
      display.println("Teplota    Poloha%");   
      display.setTextSize(2);
      display.setCursor(10,16);
      display.println(val);   
      
       val = map(val, 0, 600, 0, 180);     
       myservo.write(val);                      
       poloha = myservo.read();
       poloha= map(poloha, 0, 180, 0, 100); 
      
               display.setTextSize(2);
               display.setCursor(70,16);
               display.println(poloha);   
               display.display();
               delay(5000);
               display.clearDisplay();
    
    }
    

    Tu už vypisuje aj polohu serva na Display .

    odpověď na: Komunikace 2 MCU #10444
    rades
    Účastník

    Vyřešil jsem to pomocí SW seriovky na analog. portech díky 🙂

    odpověď na: Max6675 #10442
    rehot79
    Účastník

    Som tu znova s novými úpravami kódu kde pribudol oled Display. Este raz podotykam ze toto je môj prvý projekt. Ak vydite nejake chyby tak kľudne do mňa . Zatiaľ to funguje.

    
    //M.jakab29@gmail.com
    
    //Vsetky kniznice nacitane v arduinoIDE spravca kniznic ///// 
    #include "max6675.h"
    //Servo
    #include <Servo.h>
    Servo myservo;
    //Oled ///////////////////
    #include <SPI.h>
    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);
    #if (SSD1306_LCDHEIGHT != 32)
    #error("Height incorrect, please fix Adafruit_SSD1306.h!");
    #endif
    /////////////
    
    //Definicia pin
    
    int thermoSO = 6;   
    int thermoCS = 5;   
    int thermoSCK = 4;  
    MAX6675 thermocouple(thermoSCK, thermoCS, thermoSO);
    int vccPin = 3; //Napajanie + pre max6675 modul z digitalneho pinu
    int gndPin = 2; //Napajanie - pre max6675 modul z digitalneho pinu
    int val;
    int poloha;  
    void setup() {
      
      
      // definicia napajacich pinou 
      pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
      pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);   
      ////definicia servo pinu
      myservo.attach(9);
     
      //////////////////////Oled////////////
      // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
      // init done
      
      
      // Vycisti logo
      display.clearDisplay();
    }
    void loop() {
    // basic readout test, just print the current temp
      
       val = thermocouple.readCelsius()-2;
       val = map(val, 0, 300, 0, 180);     
       myservo.write(val);                      
       poloha = map(val, 0, 180, 0, 100);
        // text display text
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      display.println("Teplota       Poloha%_____________________");   
      display.display();
      display.setTextSize(2);
      display.setCursor(0,17);
      display.println(thermocouple.readCelsius()-2);   
      display.display();
      display.setTextSize(2);
      display.setCursor(85,17);
      display.println(poloha);   
      display.display();
      delay(3000);
      display.clearDisplay();
    
    }
    
    odpověď na: Max6675 #10441
    rehot79
    Účastník

    Ďakujem za rady. S arduinom pracujem cca asi mesiac s prestávkami A toto je môj prvý vlastný projekt ktorý sám programujem. Určite poupravujem podľa tvojich rád, ešte raz ďakujem. Ps už mám tam aj oled i2c 128×32 ..istotne ešte budem sem zdieľať code Z projektu.

    odpověď na: Max6675 #10440
    posjirka
    Účastník

    díky za kod určitě se bude někomu hodit.
    jen pár poznámek ke kodu:
    – u knihoven si do kodu napiš kde jsi tu knihovnu vzal
    – zkus pracovat trochu syststematicky, tady změříš teplotu, pošleš na seriiovou linku, pak změříš znovu, je to zbytečné zdržování a vtěžování procesoru. Změřit, poslat, přepočítat
    – dvojitý delay na konci je absolutně zbytečný.
    – Servo bych aktualizoval jen při změně. takto jej každou sekundu přepisuješ, takže nuluješ čítač, nasavýš tu samou hodnotu znovu spuštíš …

    neber to prosím jako pohrdavý pohled, jen v čas určitě většinu těch připomínek oceníš.
    Za snahu dávám palec nahoru … jen tak dál

    odpověď na: Max6675 #10439
    rehot79
    Účastník

    Tak som tu zas. Po tvojej rade som skúšal a vyzerá že to funguje.Ešte raz ďakujem a prikladám aj code ak by sa niekomu hodil ,ja s tým chcem ovládať polohu komínovej klapky na kotli na koľko max6675 je až do 1024 stupňov Celzia .Časom pribudne aj oled a wifi na sledovanie kotla na dialku napr. v mobile.

    
    
    //M.jakab29@gmail.com
    
    //Nacitanie knihovni
    #include "max6675.h"
    #include <Servo.h>
    
    Servo myservo;
    
    //Definicia pin
    
    int thermoSO = 6;   
    int thermoCS = 5;   
    int thermoSCK = 4;  
    MAX6675 thermocouple(thermoSCK, thermoCS, thermoSO);
    int vccPin = 3; //Napajanie + pre max6675 modul z digitalneho pinu
    int gndPin = 2; //Napajanie - pre max6675 modul z digitalneho pinu
    int val;
      
    void setup() {
      
      Serial.begin(9600);
      // definicia napajacich pinou 
      pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
      pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);   
      Serial.println("MAX6675 test");
      // cakanie na stabylizaciu max6675 cipu
      delay(500);
    
      myservo.attach(9);
    
    }
    
    void loop() {
      // basic readout test, just print the current temp
      
       Serial.print("C = "); 
       Serial.println(thermocouple.readCelsius());
       
       val = thermocouple.readCelsius();
       val = map(val, 10, 800, 0, 180);     
       myservo.write(val);                  
       delay(15);            
       delay(1000);
    }
    
    odpověď na: Max6675 #10438
    rehot79
    Účastník

    Ďakujem za reakciu na moju tému, túto možnosť som už pozeral aj ju chapem že si číta Z analógového vstupu hodnotu ktorú prepošle na servo, len môj problém je že mám max6675 ktorý nieje napojený na analog ale používa neaky thermocoupule.read() čo neviem ako poslať na servo. Ďakujem za odpoveď A ďalší nápad, idem skúšať

    odpověď na: Max6675 #10437
    BlindP
    Účastník

    Ahoj, funkce map dělá to co hledáš.. uhel_pro_servo = map(namerena_teplota, 10, 60, 0, 180);
    https://www.arduino.cc/en/Tutorial/Knob BP.

    Mirda0124
    Účastník

    Pokud ještě sháníte napište na Mirda2@email.cz

    Vojtěch Vosáhlo
    Účastník

    Pokud chcete něco co bude po vybalení fungovat tak vyplatí, pokud si chcete pohrát a trochu ušetřit, asi nevyplatí. Postavit se to dá určitě a řekl bych že bez větších problémů. Bezdrátová komunikace by asi byla přes ESP předpokládám. Co vše to má umět? Záleží taky na tom jak se na to cítíte vy. 😉

    Miroslava
    Účastník

    Ďakujem za odpoveď 🙂 áno s napájaním sa budem musieť potrápiť ešte pretože budem ovládať aj krokové motory a viem že takéto napájanie mi určite stačiť nebude.

    odpověď na: Linux – chyba při kompilaci #10427
    Zbyšek Voda
    Účastník

    Dobrý den, program nemůže nalézt knihovnu GLIBC_2.11 (viz error).

    Zde řeší podobný problém pro Ubuntu: http://askubuntu.com/questions/421642/libc-so-6-version-glibc-2-14-not-found

    Mělo by stačit updatovat požadovanou knihovnu.

    Zbyšek Voda
    Účastník

    Dobrý den,
    s tím shieldem se vám to bude jenom jednodušeji zapojovat. Jinak je to jedno 🙂

    Jen si dejte pozor na to, abyste měla dostatečné napájení. Na stránce píší, že pracovní proud je 400mA, což by Arduino z jeho 5V pinu nemuselo zvládnout.

    odpověď na: Due #10423
    posjirka
    Účastník

    to vypadá, že FET odešel do věčných lovišť a je uvnitř zkratovaný. Určitě použít 100kOhm.

    to ArduXPP: díval jsem se do špatného katalogu (ges tam má 2 a já otevřel zrovan ten špatný). Max. porud je 100nA viz příloha

    Attachments:
    odpověď na: Due #10420
    hcdady
    Účastník

    A po připojení 3,3V u optočlenu na pozici 1 se objeví na pozici 4 10V za par vteřin spadne na 5V, ale mezi r2 ,r3 a Q pořád nic není

    odpověď na: Due #10419
    hcdady
    Účastník

    tak jsem to přeměřil na pinu S1-3 jsou 3V na optočlenu 1) 1,1V, 2) gnd 4) 0,8 V, 5) 24V a mezi R2, R3, Q je 0V, já si myslím že ten optočlen vůbec nespíná. A ještě teda k tomu R2 tak myslíte že má být 100K

    odpověď na: Due #10418
    ArduXPP
    Účastník

    Dotaz, na gme.cz jsem koukal do pdf o IRF540, a nemohu najít informaci, že má u GATE 1mA . Pod čem se tato hodnota hledá ?

    odpověď na: Due #10417
    posjirka
    Účastník

    to hcdady:
    ledka je opravdu součásti optočlenu. to schéma jsem si nevymyslel a je pouze zkopírované z webu. Když na ně koukám, tak tam není nic co by nemělo fungovat. Otázka spíš zní, jeslti si neodpálil FET. Je citlivý na statiku. Napětí 1,1V i přijde hraničně málo. Změř si jaký napětí máš na GATE FETu (uzel mezi R2, R3 a Q1) když přivedeš 3,3V na ledku otočlenu a kolik tam je když to npětí na optočlen nepřivedeš.

    to vojtech:
    na tom zapojení není na pohled nic nefunkčního. Tranzistor je součástka, která se dá zapojit různými způsoby. To co poisuješ je zapojení jako zesilovač třídy A nebo spínač. Tady je to velmi podobné, jen FET má trochu jiné podmínky. Odpor R3 přizemňuje GATE aby se FET sám neotevřel a po ztrátě napětí na GATE rychle zavřel. Přes tranzistor optočlenu se přivede ovl.napětí na GATE, které tranzistor sepne.
    Výhoda tohoto zapojení je. že se neneguje signál, takže když přivedeš napětí na LEDku optočlenu, tak se přivede napětí i GATE FETu.
    Právě v zapojení optočlenu proti zemi by se tahle funkce obrátila. Dokud bys nepřivedl napětí na ledu optočlenu, tak by byl FET otevřen.

    teď mě zarazil ten odpor R2. 100R je pro 24V strašně málo. Ve výsledku má IRF540 max. mezní proud pro GATE 1mA. Takže na tom odporu je ztráta 0,1V. Takže z 24V moc neubere a pere plný napětí do GATE. To by FET odpálilo. Měl by tam být odpor tak 47k – 100k.

    odpověď na: Due #10414
    Vojtěch Vosáhlo
    Účastník

    Otázka spíš na jirku a Zbyška. Když kouknu do schématu, tranzistor v optočlenu je NPN že? Ono se dá NPN tranzistorem spínat tímto způsobem? Celou dobu žiju v tom že musí být na emitoru hlavní zdroj, tzn. VCC nebo GND a na kolektoru je zátěž, to co spínám. Také jsem si myslel že NPN mi povede jen „zemi“ pokud se sepne (je na bázi VCC), a ne VCC. Asi bych tu vůbec neměl být když tohle nevím ale rád se dozvím jak to je.

    odpověď na: Due #10413
    hcdady
    Účastník

    Tak jsem to sletoval a kupodivu nefunguje, jen takový technický dotaz u toho optočlenu jak je v něm kreslená ta světelná dioda to je asi součást toho optočlenu, že ? To jsem asi naletoval zbytečně. No nic vyměnil jsem ho za jiný, ale stejně nic. Jen se chci zeptat když je v cestě ten 470 rezistor tak mi to ovládací napětí srazí u optočlenu z 3,3V na 1,1V to stačí na sepnutí? A ještě jeden dotaz X1-1 a X2-1 jsou vlastně přes to VPP propojeni jestli to dobře chápu.
    Za odpověď děkuji.

    odpověď na: Komunikace 2 MCU #10403
    ArduXPP
    Účastník

    Tak opravím přechozí příspěvek, jde to buď přes TX a RX a kdyby byly tyto porty KO, tak jde využít ještě ISP6.Myslím tím pro nahrání kodu do arduina, jinak pak jde využít pro komunikaci mezi arduina SoftwareSerial nebo funkční TX a RX .

    Zbyšek Voda
    Účastník

    Najděte si složku, kde máte staženou knihovnu Exosite a v ní si otevřete soubor Exosite.h v nějakém textovém editoru. Hned na začátku programu najděte řádek #include <WiFi.h> a zakomentujte ho.

    Nejsem si jistý, jestli takto bude program fungovat, ale kód se zkompiluje bez chybových hlášek. Zkuste to a uvidíme 🙂

    odpověď na: Komunikace 2 MCU #10400
    Zbyšek Voda
    Účastník

    Dobrý den, jak se projevuje to „zabití sériové linky“?

    Jde také o to, jestli odešel pouze převodník USB-Serial na desce, nebo přímo obvod starající se o sériovou linku v čipu.

    odpověď na: Komunikace 2 MCU #10399
    ArduXPP
    Účastník

    Ale zapomněl jsem říci, že nevím jak se bude nahrávat kod do toho čipu .

    odpověď na: Komunikace 2 MCU #10398
    ArduXPP
    Účastník

    Jde to přes digitální porty za pomoci SoftwareSerial.

    odpověď na: MODBUS slave, proměnná float #10396
    Vojtěch Vosáhlo
    Účastník

    1) proč není do knihovny zakomponován přenos jiného formátu než word?

    Přiznám se že nevím, skoro určitě vám tu ale někdo odpoví.

    2) lze to nějak obejít aby to začalo float přenášet?

    Proč teplotu prostě nepředělat na word? Odstranit desetinou tečku tzn. třeba 23,56 => 2356.
    Kdyby jste potřeboval posílat floaty univerzálně, a né vždy 2 desetiná místa, dala by se asi bez problému napsat funkce, která by poslala třeba nejdříve dané číslo bez čárky a hned po něm počet des míst. Třeba jako 23,56 => 2356; 2 a nebo rovnou číslo kterým se musí word vydělit aby vznikl původní float: 23,56 => 2356; 100. Tzn 2356/100= 23,56.

    Tohle je samozřejmě jedno pokud se to dá nějak obejít.

    odpověď na: Due #10395
    posjirka
    Účastník

    vstup PWM :
    – S1-1 – zem
    – S1-3 – signál

    zátěž (ventil):
    – X1-1 – „+“ zátěže
    – X1-2 – „-“ záteže

    napájení:
    – X2-1 – +24V
    – X2-2 – -24V

    kovové tělo nemusí být uzěmněno a pozor je to většinou spojené s prostředním pine.
    4N35M opravdu piny 3 a 6 nezapojuje a klidně použij i něco dostupnějšícho PC817:
    https://www.gme.cz/pc817d-k10101d
    jen má trochu jinak packy.
    Do nepájivého pole bych to nesázel, nebo vyhoří. Je dělané na proudy do 0,5A a kontakty drží jak pes ježka.
    Použij univerzální PCB a zapájej to přimo.
    Existuje i pár programu pro návrh PCB zdarma:
    http://www.fritzng.org
    http://www.circuit.io
    ….

    odpověď na: Due #10393
    hcdady
    Účastník

    Ještě takové ujasnění jsem fakt amatér v tomhle. Reaguji na doporučený odkaz od posjirky. V příloze přikládám schéma na které se ptám. Na konektor S1-3 přivedu PWM 3,3V z arrduina DUE, to VCC není potřeba ani zapojovat jestli to dobře chápu. U toho optočlenu 4N35M pin 3 a 6 nezapojuji. VPP je +24V a X1-2 je kostra připojená k ovládanému přístroji?

    A ještě jeden technický k tomu tranzistoru ta šrafovaná čára značí ty kovový záda s dírkou na šroubek a ty musí být také ukostřená?

    Teď když to po sobě čtu tak si uvědomuji, že v tomhle oboru jsem hrozná lama. Jestli někoho urážím, že neznám základy tak se dopředu omlouvám, ale kdyby měl někdo ochotu mě zkontrolovat budu rád.

    johnyhol
    Účastník

    Ale co nechápu, že to s tou stejnou knihovnou maká v tomto kódu(posílání na Thingspeak):

    
    #include <OneWire.h>
    #include <ESP8266WiFi.h>
    #include <ESP8266WebServer.h>
    #include <DallasTemperature.h>
    
    #define ONE_WIRE_BUS D7
    
    const char* host = "api.thingspeak.com"; // Your domain  
    String ApiKey = "----";
    String path = "/update?key=" + ApiKey + "&field1=";  
    
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature DS18B20(&oneWire);
    
    const char* ssid = "----";
    const char* pass = "----";
    
    char temperatureString[6];
    
    void setup(void){
      Serial.begin(9600);
      Serial.println("");
      
      WiFi.begin(ssid, pass);
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED) {
        delay(100);
        Serial.print(".");
      }
      
      Serial.println("");
      Serial.print("Connected to ");
      Serial.println(ssid);
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
    
      DS18B20.begin();
       
    
    }
    
    float getTemperature() {
      float temp;
      do {
        DS18B20.requestTemperatures(); 
        temp = DS18B20.getTempCByIndex(0);
        delay(100);
      } while (temp == 85.0 || temp == (-127.0));
      return temp;
    }
    
    void loop() {
    
      float temperature = getTemperature();
    
      dtostrf(temperature, 2, 2, temperatureString);
      // send temperature to the serial console
      Serial.println(temperatureString);
    
      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
    
      client.print(String("GET ") + path + temperatureString + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" + 
                   "Connection: keep-alive\r\n\r\n");
      delay(500);
    
    }
    
    odpověď na: Due #10390
    hcdady
    Účastník

    Děkuji za radu, přiznám se že ten 4x mosfet jsem si objednal, ale jelikož přijde až za měsíc tak jsem se stavil do prodejny součástek, jste mě trochu vyprovokoval :-), z pájení strach nemám ale spíš z toho sestavení na nic zkusit to jde i přes nepájivé pole tak uvidíme.

Aktuálně je na stránce zobrazeno 30 příspěvků - 721. až 750. (celkem z 2,760)