rehot79
Vytvořené odpovědi
-
AutorPříspěvky
-
rehot79Účastník
Ešte taká blbá otázka. Akú záťaž na to dávaš, nejakú žiarovku alebo ventilátor akého výkonu? Aj to môže mať vplyv na funkčnosť. Skúsil by som asi ako on na videu neaku takú záťaž. uvidíme čo ti odpíše
rehot79ÚčastníkA kupoval si ten čo som dal link ja? Alebo ty.
rehot79ÚčastníkTiež sa tam píše DIMMING LEVEL CONTROL VIA PWM SIGNAL OR VOLTAGE LEVEL .skúsil by som ešte ho ovládať nie pwm ale analog výstupom reguláciou napätia, len tak ma to napadlo
rehot79ÚčastníkPozerám práve na to A píše tam že je plne kompatibilný s arduino, je tam aj schéma zapojenia na arduino. …hmmm ale píše aj ak máte neake otázky kontaktujte ma. .skúsil by som mu napísať
rehot79Účastníkrehot79ÚčastníkPozerám na neho ale V info O výrobku je napísané NOT for controlling via PWM signal! Len kukal som nižšie A tam je jaj pwm ac light dimmer A ten by už mal fungovať. Ešte raz ďakujem
rehot79ÚčastníkĎakujem za ďalší nápad,
rehot79ÚčastníkPekné riešenie ale možno som našiel niečo jednoduchšie , bez potrebnej vedomosti o elektrotechnike aj keď ja som elektrotechnik, ale na čo si komplikovať život no nie? a cenovo dostupne na Ebay cca 3Eur. Volá sa to ssr-40da relé,je galvanicky oddelene,ovládane už od 3 volt DC .Pridávam link na YouTube
Klik sem Pevne verím že toto pomôže veľa ľudom s touto problematikou .rehot79ÚčastníkKnihovne som sťahoval V správe knižníc som napísal vo vyhladavaci max6675 našlo knihovnu A len som klik instal. ArduinoIDE používam 1.8.1 A hlavne veľa čítal vseliake example A kde tu čo sa my hodilo som vybral A skúsil zakomponovať do svojho kódu s neakov drobnou úpravou aby vyhovovalo mne. Prakticky to všetko je len zlepenec napr. Oled som orezal Z demo orginal knižnice urobil neake rámčeky okolo čísel atď. Pid zase vybral z example na arduino.cc len som pridal analogread potenciometer na nastavenie set point. A tak sa to Neako zlepilo dokopy. Ak tam vydis niečo na zlepšenie tak kľudne do mňa. …Ďakujem hlavne bez prvej reakcie na môj príspevok by tento code nevznikol. Všetko si skúšam na stole s pt100, malí oled A malé servo. Ešte raz ďakujem tomuto fóru za príjemne zabitý deň hihihi A zas som O čosi múdrejší.
rehot79ÚčastníkNetuším v čom to je ale asi že mám po dlhej dobe volný víkend , prikladám code už aj s PID reguláciou a nastavením Set-point pomocou potenciometru .
////Vsetky kniznice nacitane cez ArduinoIDE spravca kniznic. #include <PID_v1.h> #include "max6675.h" #include <Servo.h> Servo myservo; #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; const int pot = A0; //Define Variables we'll be connecting to //Define Variables we'll be connecting to double Setpoint, Input, Output; //Define the aggressive and conservative Tuning Parameters double aggKp=5, aggKi=0.7, aggKd=1; double consKp=1, consKi=0.1, consKd=0.5; //Specify the links and initial tuning parameters PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, DIRECT); void setup() { // definicia napajacich pinou pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH); pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW); ////definicia servo pinu myservo.attach(9); //initialize the variables we're linked to Input = thermocouple.readCelsius(); Setpoint = map(analogRead(pot), 0, 1024, 0, 500); //turn the PID on myPID.SetMode(AUTOMATIC); //////////////////////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() { Setpoint = map(analogRead(pot), 0, 1024, 0, 500); ; Input = thermocouple.readCelsius(); double gap = abs(Setpoint-Input); //distance away from setpoint if(gap<20) { //we're close to setpoint, use conservative tuning parameters myPID.SetTunings(consKp, consKi, consKd); } else { //we're far from setpoint, use aggressive tuning parameters myPID.SetTunings(aggKp, aggKi, aggKd); } myPID.Compute(); Output = map(Output, 0, 255, 0, 170); myservo.write(Output); poloha = myservo.read(); poloha= map(poloha, 0, 180, 0, 100); val = Input; // 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(42, 13, 42, display.height() -1, WHITE); display.drawLine(84, 13, 84, display.height() -1, WHITE); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(6,2); display.println("Tep. Poz.% Set."); display.setTextSize(2); display.setCursor(4,16); display.println(val); display.setTextSize(2); display.setCursor(47,16); display.println(poloha); display.setTextSize(2); display.setCursor(89,16); display.println(Setpoint); display.display(); display.clearDisplay(); delay(5000); }
rehot79ÚčastníkEšte foto dyspleja prikladám
rehot79ÚčastníkTak 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 .
rehot79ÚčastníkSom 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(); }
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.
rehot79ÚčastníkTak 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); }
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ť
-
AutorPříspěvky