Lämpötilaohjattu askelmoottori

itse itselleni vastaten…

Piti siis kirjottaa, lukea ja tajuta…

Korjasin tilanteen näin

if (ulkolampoKA > 40){ shuntti.write(175); // shuntti säädetty niin että servon asennossa 5 patteriveden lämpö on 65c delay(500);} else if (ulkolampoKA > 36){ shuntti.write(141); // shuntti säädetty niin että lämpö 60 delay(500);} else if (ulkolampoKA > 32){ shuntti.write(107); // shuntti säädetty niin että lämpö 55 delay(500);} else if (ulkolampoKA > 28){ shuntti.write(73); // shuntti säädetty niin että lämpö 50 delay(500);} else if (ulkolampoKA > 24){ shuntti.write(39); // shuntti säädetty niin että lämpö 45 delay(500);} else if (ulkolampoKA > 20){ shuntti.write(15); // shuntti säädetty niin että lämpö 40 delay(500);} else digitalWrite(13, HIGH); // vikavalo

Pikaisella testillä tuntui auttavan, servo ei hyppinyt lainkaan niin kuin ensimmäisellä vedoksella.

Siltikin… Kommentteja?

Tällä karvalakkimallilla, vivuston mittoja ja servon asentoja muuttaen onnistuu automaattinen lämpötilasäätö ulkokelin mukaan… Käsittääkseni… Pitää rakentaa vivusto yms. ja testailla.

EDIT:
Lisäilin vähä vikavaloa ja “toimintamallin” jos lämpötila näyttää liian suurta (virhelaskenta TAI anturia ei tunnisteta)

HUOM! Koodin lämpötilat on testilämpötiloja jotta saa hiustenkuivaajalla demottua servon toimintaa.

Koodi nyt tällainen:

[code]#include <Servo.h>

Servo shuntti;

int ulkoMittaus = 0;
int asento;
double ulkolampoYHT = 0;
int ulkolampoKA = 0;

int ulkoanturi = 0;
int vikaled = 13;

void setup()
{
pinMode(vikaled, OUTPUT);
pinMode(ulkoanturi, INPUT);
shuntti.attach(9);
Serial.begin(9600);
}

void loop()
{
for (int toisto=0; toisto < 40; toisto++)
{
ulkoMittaus = analogRead(ulkoanturi);
double ulkolampo = ulkoMittaus * (4720.00 / 1024); // 4720 on mitattu jännite anturin nastoista, eli 4.72V
ulkolampoYHT = ulkolampoYHT + ulkolampo;

// mittaa sisälämpö -> tallenna muuttujaan sisalampo
// sisalampoYHT = sisalampoYHT + sisalampo
delay(250);
}

ulkolampoKA =ulkolampoYHT / 10 / 40;    // ensimmäinen jako muuttaa asteiksi, toinen jako laskee keskiarvon
if (ulkolampoKA > 45){
  digitalWrite(13, HIGH);	// vikavalo syttyy jos lämpötilamittaus totaalisen pielessä / anturia ei tunnisteta
  ulkolampoKA = 0;
}
  else
  digitalWrite(13, LOW);	// vikavalo ei pala kun kaikki OK
if (ulkolampoKA > 40){
  shuntti.write(175); 		// shuntti säädetty niin että servon asennossa 5 patteriveden lämpö on 65c
  delay(500);}
  else
    if (ulkolampoKA > 36){
    shuntti.write(141);		// shuntti säädetty niin että lämpö 60
    delay(500);}
    else
      if (ulkolampoKA > 32){
      shuntti.write(107);		// shuntti säädetty niin että lämpö 55
      delay(500);}
      else
        if (ulkolampoKA > 28){
        shuntti.write(73);		// shuntti säädetty niin että lämpö 50
        delay(500);}
        else
          if (ulkolampoKA > 24){
          shuntti.write(39);		// shuntti säädetty niin että lämpö 45
          delay(500);}
          else
          if (ulkolampoKA > 20){
          shuntti.write(15);		// shuntti säädetty niin että lämpö 40
          delay(500);}
          else
            digitalWrite(13, HIGH);	// vikavalo
            
Serial.println(ulkolampoYHT);
Serial.println(ulkolampoKA);
ulkolampoYHT = 0;
ulkolampoKA = 0;

}

[/code]

Tuomo